From 632d1b559e25fd7392ec931a0dd13b7f0368ed5d Mon Sep 17 00:00:00 2001 From: Eldrinn-Elantey <46845681+Eldrinn-Elantey@users.noreply.github.com> Date: Fri, 10 Jul 2026 06:48:35 +0400 Subject: [PATCH] Add Mana info tooltips for pools, spreaders and flowers Pools show their storage capacity, spreaders show burst payload and in-flight loss, and generating flowers show their generation rate. Rates are defined per type in the language files because the source values are private constants that cannot be read safely from the item. English and Russian strings are included. --- .../common/block/mana/BlockSpreader.java | 4 +-- .../common/item/block/ItemBlockPool.java | 8 ++++- .../item/block/ItemBlockSpecialFlower.java | 6 ++++ .../common/item/block/ItemBlockSpreader.java | 34 +++++++++++++++++++ .../resources/assets/botania/lang/en_US.lang | 19 +++++++++++ .../resources/assets/botania/lang/ru_RU.lang | 19 +++++++++++ 6 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 src/main/java/vazkii/botania/common/item/block/ItemBlockSpreader.java diff --git a/src/main/java/vazkii/botania/common/block/mana/BlockSpreader.java b/src/main/java/vazkii/botania/common/block/mana/BlockSpreader.java index 99618854e3..5e6e1b52b2 100644 --- a/src/main/java/vazkii/botania/common/block/mana/BlockSpreader.java +++ b/src/main/java/vazkii/botania/common/block/mana/BlockSpreader.java @@ -42,7 +42,7 @@ import vazkii.botania.common.block.ModBlocks; import vazkii.botania.common.block.tile.mana.TileSpreader; import vazkii.botania.common.item.ModItems; -import vazkii.botania.common.item.block.ItemBlockWithMetadataAndName; +import vazkii.botania.common.item.block.ItemBlockSpreader; import vazkii.botania.common.lexicon.LexiconData; import vazkii.botania.common.lib.LibBlockNames; import cpw.mods.fml.common.registry.GameRegistry; @@ -67,7 +67,7 @@ protected boolean shouldRegisterInNameSet() { @Override public Block setBlockName(String name) { - GameRegistry.registerBlock(this, ItemBlockWithMetadataAndName.class, name); + GameRegistry.registerBlock(this, ItemBlockSpreader.class, name); return super.setBlockName(name); } diff --git a/src/main/java/vazkii/botania/common/item/block/ItemBlockPool.java b/src/main/java/vazkii/botania/common/item/block/ItemBlockPool.java index 5ab2708506..2335cde339 100644 --- a/src/main/java/vazkii/botania/common/item/block/ItemBlockPool.java +++ b/src/main/java/vazkii/botania/common/item/block/ItemBlockPool.java @@ -25,9 +25,15 @@ public ItemBlockPool(Block block) { @Override public void addInformation(ItemStack stack, EntityPlayer player, List infoList, boolean advanced) { - if(stack.getItemDamage() == 1) + if(stack.getItemDamage() == 1) { for(int i = 0; i < 2; i++) infoList.add(StatCollector.translateToLocal("botaniamisc.creativePool" + i)); + return; + } + + // Mirrors TilePool.MAX_MANA / MAX_MANA_DILLUTED + int capacity = stack.getItemDamage() == 2 ? 10000 : 1000000; + infoList.add(StatCollector.translateToLocalFormatted("botaniamisc.poolStorage", String.format("%,d", capacity))); } } diff --git a/src/main/java/vazkii/botania/common/item/block/ItemBlockSpecialFlower.java b/src/main/java/vazkii/botania/common/item/block/ItemBlockSpecialFlower.java index 337b080f6b..7e354e81e8 100644 --- a/src/main/java/vazkii/botania/common/item/block/ItemBlockSpecialFlower.java +++ b/src/main/java/vazkii/botania/common/item/block/ItemBlockSpecialFlower.java @@ -85,6 +85,12 @@ public void addInformation(ItemStack stack, EntityPlayer player, List in sig.addTooltip(stack, player, infoList); + // Generation rate line, only present for generating flowers (see en_US.lang) + String genKey = "botania.generationRate." + type; + String genLoc = StatCollector.translateToLocal(genKey); + if(!genLoc.equals(genKey)) + infoList.add(EnumChatFormatting.GRAY + genLoc); + if(ConfigHandler.referencesEnabled) { String refUnlocalized = sig.getUnlocalizedLoreTextForStack(stack); String refLocalized = StatCollector.translateToLocal(refUnlocalized); diff --git a/src/main/java/vazkii/botania/common/item/block/ItemBlockSpreader.java b/src/main/java/vazkii/botania/common/item/block/ItemBlockSpreader.java new file mode 100644 index 0000000000..6017d43322 --- /dev/null +++ b/src/main/java/vazkii/botania/common/item/block/ItemBlockSpreader.java @@ -0,0 +1,34 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under the + * Botania License: http://botaniamod.net/license.php + */ +package vazkii.botania.common.item.block; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +public class ItemBlockSpreader extends ItemBlockWithMetadataAndName { + + public ItemBlockSpreader(Block block) { + super(block); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List infoList, boolean advanced) { + int meta = stack.getItemDamage(); + // Burst payload / mana loss per tick, mirrors TileSpreader.getBurst + int transfer = meta == 3 ? 640 : meta == 2 ? 240 : 160; + int loss = meta == 3 ? 20 : 4; + infoList.add(StatCollector.translateToLocalFormatted("botaniamisc.spreaderTransfer", transfer)); + infoList.add(StatCollector.translateToLocalFormatted("botaniamisc.spreaderLoss", loss)); + } + +} diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index fdd5245ba9..3cd7e2f9c7 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -31,6 +31,25 @@ botaniamisc.filter1=Pickup only items not in Frames botaniamisc.filter2=Pickup any items botaniamisc.creativePool0=Creative Mana Pool, has infinite Mana botaniamisc.creativePool1=Worthy of an Egoist +botaniamisc.poolStorage=Stores %s Mana +botaniamisc.spreaderTransfer=Transfers %s Mana per burst +botaniamisc.spreaderLoss=Loses %s Mana per tick in flight +botania.generationRate.daybloom=Generates 1 Mana every 12 ticks during the day +botania.generationRate.daybloomPrime=Generates 1 Mana every 10 ticks during the day +botania.generationRate.nightshade=Generates 1 Mana every 12 ticks at night +botania.generationRate.nightshadePrime=Generates 1 Mana every 10 ticks at night +botania.generationRate.hydroangeas=Generates 1 Mana every 2 ticks, consuming water +botania.generationRate.endoflame=Generates 3 Mana every 2 ticks while burning fuel +botania.generationRate.thermalily=Generates 20 Mana per tick from Lava, then cools down +botania.generationRate.arcanerose=Generates 50 Mana per Experience point +botania.generationRate.spectrolus=Generates 300 Mana per Wool block of the cycling color +botania.generationRate.munchdew=Generates 160 Mana per Leaf block eaten +botania.generationRate.kekimurus=Generates 1800 Mana per bite of Cake +botania.generationRate.rafflowsia=Generates 2100 Mana per passive flower eaten, less on repeats +botania.generationRate.narslimmus=Generates Mana from natural Slimes, scaling with size +botania.generationRate.gourmaryllis=Generates Mana from Food, scaling with saturation +botania.generationRate.entropinnyum=Generates 6500 Mana per TNT explosion +botania.generationRate.dandelifeon=Generates 150 Mana per cell generation consumed botaniamisc.savedByLaurel=Your Golden Laurel Crown shatters, as it saves you from death. botaniamisc.toolRank=%s&7 Rank botaniamisc.edition=%s Edition diff --git a/src/main/resources/assets/botania/lang/ru_RU.lang b/src/main/resources/assets/botania/lang/ru_RU.lang index 3a818db8ec..441e880b81 100644 --- a/src/main/resources/assets/botania/lang/ru_RU.lang +++ b/src/main/resources/assets/botania/lang/ru_RU.lang @@ -31,6 +31,25 @@ botaniamisc.filter1=Предмет в рамке: игнорировать botaniamisc.filter2=Собирать любые предметы botaniamisc.creativePool0=Творческий бассейн маны, бесконечная мана botaniamisc.creativePool1=Достоин эгоиста +botaniamisc.poolStorage=Хранит %s маны +botaniamisc.spreaderTransfer=Передаёт %s маны за всплеск +botaniamisc.spreaderLoss=Теряет %s маны за тик в полёте +botania.generationRate.daybloom=Генерирует 1 ману каждые 12 тиков днём +botania.generationRate.daybloomPrime=Генерирует 1 ману каждые 10 тиков днём +botania.generationRate.nightshade=Генерирует 1 ману каждые 12 тиков ночью +botania.generationRate.nightshadePrime=Генерирует 1 ману каждые 10 тиков ночью +botania.generationRate.hydroangeas=Генерирует 1 ману каждые 2 тика, расходуя воду +botania.generationRate.endoflame=Генерирует 3 маны каждые 2 тика, пока горит топливо +botania.generationRate.thermalily=Генерирует 20 маны за тик из лавы, затем остывает +botania.generationRate.arcanerose=Генерирует 50 маны за единицу опыта +botania.generationRate.spectrolus=Генерирует 300 маны за блок шерсти нужного цвета +botania.generationRate.munchdew=Генерирует 160 маны за съеденный блок листвы +botania.generationRate.kekimurus=Генерирует 1800 маны за откушенный кусок торта +botania.generationRate.rafflowsia=Генерирует 2100 маны за новый вид пассивного цветка, меньше при повторе +botania.generationRate.narslimmus=Генерирует ману из природных слизней, тем больше, чем крупнее слизень +botania.generationRate.gourmaryllis=Генерирует ману из еды, тем больше, чем сытнее +botania.generationRate.entropinnyum=Генерирует 6500 маны за взрыв ТНТ +botania.generationRate.dandelifeon=Генерирует 150 маны за поглощённое поколение клеток botaniamisc.savedByLaurel=Ваш Золотой Лавровый Венец исчезает, спасая Вас от смерти. botaniamisc.toolRank=Ранг: %s&7 botaniamisc.edition=Издание %s