From 21aa84e4ff001a0174320df8925ba153f804481c Mon Sep 17 00:00:00 2001 From: Eldrinn-Elantey <46845681+Eldrinn-Elantey@users.noreply.github.com> Date: Thu, 5 Mar 2026 16:27:13 +0400 Subject: [PATCH] feat(fluid): add chat component support for fluid stack messages - Add `Util.getFluidChatComponent(IAEFluidStack)` to build localized chat components for fluid stacks, with fallback to display name. - Update `BlockFluidBuffer` to use the new fluid chat component when showing stored fluid in chat. - Keep amount formatting in chat output (`#,### mB`) and preserve existing behavior. --- .../github/common/block/BlockFluidBuffer.java | 10 +++++----- .../java/com/glodblock/github/util/Util.java | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/glodblock/github/common/block/BlockFluidBuffer.java b/src/main/java/com/glodblock/github/common/block/BlockFluidBuffer.java index ac07c3149..3356efa07 100644 --- a/src/main/java/com/glodblock/github/common/block/BlockFluidBuffer.java +++ b/src/main/java/com/glodblock/github/common/block/BlockFluidBuffer.java @@ -2,12 +2,13 @@ import static net.minecraft.client.gui.GuiScreen.isShiftKeyDown; +import java.text.NumberFormat; import java.util.List; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; +import net.minecraft.util.IChatComponent; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; @@ -15,7 +16,6 @@ import com.glodblock.github.common.item.FCBaseItemBlock; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.common.tile.TileFluidBuffer; -import com.glodblock.github.crossmod.waila.Tooltip; import com.glodblock.github.util.NameConst; import com.glodblock.github.util.Util; @@ -46,9 +46,9 @@ public boolean onActivated(World world, int x, int y, int z, EntityPlayer player if (player.isSneaking() && itemStack == null) return !tile.setFluid(null); IAEFluidStack ias = tile.getAEStoreFluidStack(); if (fs == null && ias != null) { - player.addChatMessage( - new ChatComponentText( - Tooltip.fluidFormat(ias.getFluidStack().getLocalizedName(), ias.getStackSize()))); + IChatComponent msg = Util.getFluidChatComponent(ias); + msg.appendText(": " + NumberFormat.getInstance().format(ias.getStackSize()) + " mB"); + player.addChatMessage(msg); return false; } else { tile.setFluid(fs); diff --git a/src/main/java/com/glodblock/github/util/Util.java b/src/main/java/com/glodblock/github/util/Util.java index 3360b895e..735e02107 100644 --- a/src/main/java/com/glodblock/github/util/Util.java +++ b/src/main/java/com/glodblock/github/util/Util.java @@ -17,6 +17,10 @@ import net.minecraft.item.ItemPotion; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.IChatComponent; +import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; @@ -350,6 +354,19 @@ public static IAEFluidStack loadFluidStackFromNBT(final NBTTagCompound i) { return fluid; } + public static IChatComponent getFluidChatComponent(final IAEFluidStack fluidStack) { + if (fluidStack == null) { + return new ChatComponentText(StatCollector.translateToLocalFormatted("error.unknown")); + } + + final String unlocalizedName = fluidStack.getUnlocalizedName(); + if (unlocalizedName != null && !unlocalizedName.isEmpty() && StatCollector.canTranslate(unlocalizedName)) { + return new ChatComponentTranslation(unlocalizedName); + } + + return new ChatComponentText(fluidStack.getDisplayName()); + } + public static void mirrorFluidToPacket(IInventory packet, IAEFluidTank fluidTank) { for (int i = 0; i < fluidTank.getSlots(); i++) { IAEFluidStack fluid = fluidTank.getFluidInSlot(i);