aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGlodBlock <1356392126@qq.com>2021-09-30 13:55:08 +0800
committerGlodBlock <1356392126@qq.com>2021-09-30 13:55:08 +0800
commit841010aba361d3469c621b424e01db2117a4807a (patch)
treec574b4d7de30c23839d13b70f04938288bf8bee6 /src
parentffcb03dbe86df04cef1e19172e4b594b62d93d74 (diff)
downloadGT5-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.java68
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;
+ }
}