diff options
author | GlodBlock <1356392126@qq.com> | 2021-09-30 13:55:08 +0800 |
---|---|---|
committer | GlodBlock <1356392126@qq.com> | 2021-09-30 13:55:08 +0800 |
commit | 841010aba361d3469c621b424e01db2117a4807a (patch) | |
tree | c574b4d7de30c23839d13b70f04938288bf8bee6 /src | |
parent | ffcb03dbe86df04cef1e19172e4b594b62d93d74 (diff) | |
download | GT5-Unofficial-841010aba361d3469c621b424e01db2117a4807a.tar.gz GT5-Unofficial-841010aba361d3469c621b424e01db2117a4807a.tar.bz2 GT5-Unofficial-841010aba361d3469c621b424e01db2117a4807a.zip |
move code away from GT_Utility
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/gregtech/common/items/GT_FluidDisplayItem.java | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/src/main/java/gregtech/common/items/GT_FluidDisplayItem.java b/src/main/java/gregtech/common/items/GT_FluidDisplayItem.java index a8487651b4..17f670042a 100644 --- a/src/main/java/gregtech/common/items/GT_FluidDisplayItem.java +++ b/src/main/java/gregtech/common/items/GT_FluidDisplayItem.java @@ -4,6 +4,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; import gregtech.api.items.GT_Generic_Item; import gregtech.api.util.GT_Utility; import net.minecraft.client.renderer.texture.IIconRegister; @@ -16,13 +17,20 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Stream; @SuppressWarnings({"rawtypes","unchecked"}) public class GT_FluidDisplayItem extends GT_Generic_Item { + + private static final Map<Fluid, String> sFluidTooltips = new HashMap<>(); + public GT_FluidDisplayItem() { super("GregTech_FluidDisplay", "Fluid Display", null); ItemList.Display_Fluid.set(this); @@ -30,6 +38,10 @@ public class GT_FluidDisplayItem extends GT_Generic_Item { @Override protected void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) { + if (FluidRegistry.getFluid(aStack.getItemDamage()) != null) { + String tChemicalFormula = getChemicalFormula(new FluidStack(FluidRegistry.getFluid(aStack.getItemDamage()), 1)); + if (!tChemicalFormula.equals("")) aList.add(EnumChatFormatting.GRAY + tChemicalFormula + EnumChatFormatting.GRAY); + } NBTTagCompound aNBT = aStack.getTagCompound(); if (GT_Values.D1) { Fluid tFluid = FluidRegistry.getFluid(aStack.getItemDamage()); @@ -40,7 +52,7 @@ public class GT_FluidDisplayItem extends GT_Generic_Item { if (aNBT != null) { long tToolTipAmount = aNBT.getLong("mFluidDisplayAmount"); if (tToolTipAmount > 0L) { - aList.add(EnumChatFormatting.BLUE + String.format(trans("016", "Amount: %s L"), "" + tToolTipAmount) + EnumChatFormatting.GRAY); + aList.add(EnumChatFormatting.BLUE + String.format(trans("016", "Amount: %s L"), "" + tToolTipAmount) + EnumChatFormatting.GRAY); } aList.add(EnumChatFormatting.RED + String.format(trans("017", "Temperature: %s K"), "" + aNBT.getLong("mFluidDisplayHeat")) + EnumChatFormatting.GRAY); aList.add(EnumChatFormatting.GREEN + String.format(trans("018", "State: %s"), aNBT.getBoolean("mFluidState") ? "Gas" : "Liquid") + EnumChatFormatting.GRAY); @@ -90,6 +102,38 @@ public class GT_FluidDisplayItem extends GT_Generic_Item { return ""; } + @SideOnly(Side.CLIENT) + public String getChemicalFormula(FluidStack aRealFluid) { + if (sFluidTooltips.get(aRealFluid.getFluid()) == null) { + for(ItemStack tContainer : GT_Utility.getContainersFromFluid(aRealFluid)) { + if (isCell(tContainer)) { + Materials tMaterial = getMaterialFromCell(tContainer); + if (!tMaterial.equals(Materials._NULL)) { + if (tMaterial.mChemicalFormula.equals("?")) { + sFluidTooltips.put(aRealFluid.getFluid(), ""); + } + else { + sFluidTooltips.put(aRealFluid.getFluid(), tMaterial.mChemicalFormula); + } + } + else { + // For GT++ Fluid Display + // GT++ didn't register a Material in GT, so I have too find the Chemical Formula in its cell's tooltip + List tTooltip = tContainer.getTooltip(null, true); + for (Object tInfo : tTooltip) { + if (!((String) tInfo).contains(" ") && !((String) tInfo).contains(":") && tTooltip.indexOf(tInfo) != 0) { + sFluidTooltips.put(aRealFluid.getFluid(), (String) tInfo); + break; + } + } + } + } + } + sFluidTooltips.putIfAbsent(aRealFluid.getFluid(), ""); + } + return sFluidTooltips.get(aRealFluid.getFluid()); + } + @Override @SideOnly(Side.CLIENT) public void getSubItems(Item aItem, CreativeTabs aTab, List aList) { @@ -103,4 +147,26 @@ public class GT_FluidDisplayItem extends GT_Generic_Item { } } } + + public static boolean isCell(ItemStack tItemStack) { + for (int tOreDict : OreDictionary.getOreIDs(tItemStack)) { + String tOreDictName = OreDictionary.getOreName(tOreDict); + if (tOreDictName.startsWith("cell")) return true; + } + return false; + } + + public static Materials getMaterialFromCell(ItemStack tItemStack) { + for (int tOreDict : OreDictionary.getOreIDs(tItemStack)) { + String tOreDictName = OreDictionary.getOreName(tOreDict); + if (tOreDictName.startsWith("cell")) { + return Materials.getRealMaterial( + tOreDictName.replace("cell", "") + .replace("Molten", "") + .replace("Plasma", "") + ); + } + } + return Materials._NULL; + } } |