diff --git a/src/main/java/gregtech/api/gui/widgets/TankWidget.java b/src/main/java/gregtech/api/gui/widgets/TankWidget.java index 6b52414f44..1248a76528 100644 --- a/src/main/java/gregtech/api/gui/widgets/TankWidget.java +++ b/src/main/java/gregtech/api/gui/widgets/TankWidget.java @@ -139,9 +139,9 @@ public void drawInForeground(int mouseX, int mouseY) { tooltips.add(fluid.getLocalizedName(lastFluidInTank)); // Add chemical formula tooltip - String formula = FluidTooltipUtil.getFluidTooltip(lastFluidInTank); + List formula = FluidTooltipUtil.getFluidTooltips(lastFluidInTank); if (formula != null && !formula.isEmpty()) - tooltips.add(ChatFormatting.GRAY.toString() + formula); + tooltips.addAll(1, formula); tooltips.add(I18n.format("gregtech.fluid.amount", lastFluidInTank.amount, lastTankCapacity)); tooltips.add(I18n.format("gregtech.fluid.temperature", fluid.getTemperature(lastFluidInTank))); diff --git a/src/main/java/gregtech/api/util/FluidTooltipUtil.java b/src/main/java/gregtech/api/util/FluidTooltipUtil.java index ad3ec57556..bfdf434dfb 100644 --- a/src/main/java/gregtech/api/util/FluidTooltipUtil.java +++ b/src/main/java/gregtech/api/util/FluidTooltipUtil.java @@ -1,5 +1,7 @@ package gregtech.api.util; +import com.google.common.collect.Lists; +import com.mojang.realmsclient.gui.ChatFormatting; import gregtech.api.unification.material.Materials; import gregtech.api.unification.stack.MaterialStack; import net.minecraftforge.fluids.Fluid; @@ -7,6 +9,7 @@ import net.minecraftforge.fluids.FluidStack; import java.util.HashMap; +import java.util.List; import java.util.Map; public class FluidTooltipUtil { @@ -14,7 +17,7 @@ public class FluidTooltipUtil { /** * Registry Mapping of */ - private static final Map tooltips = new HashMap<>(); + private static final Map> tooltips = new HashMap<>(); /** * Used to register a tooltip to a Fluid. A Fluid can only have one tooltip, on one line. @@ -22,36 +25,67 @@ public class FluidTooltipUtil { * Ignores a tooltip applied for Water, so that it will be handled correctly for the chemical formula. * * @param fluid The fluid to register a tooltip for. - * @param tooltip The tooltip. + * @param tooltips The tooltip. * @return False if either parameter is null or if tooltip is empty, true otherwise. */ + public static boolean registerTooltip(Fluid fluid, List tooltips) { + if (fluid != null && tooltips != null && !tooltips.isEmpty()) { + for (String tooltip : tooltips) { + registerTooltip(fluid, tooltip); + } + } + return false; + } + public static boolean registerTooltip(Fluid fluid, String tooltip) { - if (fluid != null && tooltip != null && !tooltip.isEmpty()) { - tooltips.put(fluid, tooltip); + if (fluid != null && tooltip != null && !tooltip.trim().isEmpty()) { + if(tooltips.containsKey(fluid)) { + tooltips.get(fluid).add(tooltip); + } else { + tooltips.put(fluid, Lists.newArrayList(tooltip)); + } return true; } return false; } + + /** * Used to get a Fluid's tooltip. * * @param fluid The Fluid to get the tooltip of. * @return The tooltip. */ - public static String getFluidTooltip(Fluid fluid) { + public static List getFluidTooltips(Fluid fluid) { if (fluid == null) return null; return tooltips.get(fluid); } + @Deprecated + public static String getFluidTooltip(Fluid fluid) { + if (fluid == null) + return null; + + return tooltips.get(fluid).get(1); + } + /** * Used to get a Fluid's tooltip. * * @param stack A FluidStack, containing the Fluid to get the tooltip of. * @return The tooltip. */ + public static List getFluidTooltips(FluidStack stack) { + if (stack == null) + return null; + + return getFluidTooltips(stack.getFluid()); + } + + @Deprecated public static String getFluidTooltip(FluidStack stack) { if (stack == null) return null; @@ -65,6 +99,14 @@ public static String getFluidTooltip(FluidStack stack) { * @param fluidName A String representing a Fluid to get the tooltip of. * @return The tooltip. */ + public static List getFluidTooltips(String fluidName) { + if (fluidName == null || fluidName.isEmpty()) + return null; + + return getFluidTooltips(FluidRegistry.getFluid(fluidName)); + } + + @Deprecated public static String getFluidTooltip(String fluidName) { if (fluidName == null || fluidName.isEmpty()) return null; @@ -79,6 +121,6 @@ public static String getFluidTooltip(String fluidName) { */ public static String getWaterTooltip() { // Done like this to not return parenthesis around the tooltip - return (new MaterialStack(Materials.Hydrogen, 2)).toString() + "O"; + return (ChatFormatting.GRAY + (new MaterialStack(Materials.Hydrogen, 2)).toString() + "O"); } } diff --git a/src/main/java/gregtech/common/ClientProxy.java b/src/main/java/gregtech/common/ClientProxy.java index c402c47b64..9f522b1fb0 100644 --- a/src/main/java/gregtech/common/ClientProxy.java +++ b/src/main/java/gregtech/common/ClientProxy.java @@ -3,6 +3,7 @@ import codechicken.lib.texture.TextureUtils; import codechicken.lib.util.ItemNBTUtils; import codechicken.lib.util.ResourceUtils; +import com.google.common.collect.Lists; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; import com.mojang.realmsclient.gui.ChatFormatting; import gregtech.api.GTValues; @@ -56,10 +57,7 @@ import java.io.InputStreamReader; import java.net.*; import java.nio.charset.StandardCharsets; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; @SideOnly(Side.CLIENT) @Mod.EventBusSubscriber(Side.CLIENT) @@ -154,33 +152,33 @@ public static void addMaterialFormulaHandler(ItemTooltipEvent event) { // Handles Item tooltips if (!(itemStack.getItem() instanceof ItemBlock)) { - String chemicalFormula = null; + List chemicalFormula = null; // Test for Items UnificationEntry unificationEntry = OreDictUnifier.getUnificationEntry(itemStack); if (unificationEntry != null && unificationEntry.material != null) { - chemicalFormula = unificationEntry.material.chemicalFormula; + chemicalFormula = Lists.newArrayList(ChatFormatting.GRAY + unificationEntry.material.chemicalFormula); // Test for Fluids } else if (ItemNBTUtils.hasTag(itemStack)) { // Vanilla bucket - chemicalFormula = FluidTooltipUtil.getFluidTooltip(ItemNBTUtils.getString(itemStack, "FluidName")); + chemicalFormula = FluidTooltipUtil.getFluidTooltips(ItemNBTUtils.getString(itemStack, "FluidName")); // GTCE Cells, Forestry cans, some other containers if (chemicalFormula == null) { NBTTagCompound compound = itemStack.getTagCompound(); if (compound != null && compound.hasKey(FluidHandlerItemStack.FLUID_NBT_KEY, Constants.NBT.TAG_COMPOUND)) { - chemicalFormula = FluidTooltipUtil.getFluidTooltip(FluidStack.loadFluidStackFromNBT(compound.getCompoundTag(FluidHandlerItemStack.FLUID_NBT_KEY))); + chemicalFormula = FluidTooltipUtil.getFluidTooltips(FluidStack.loadFluidStackFromNBT(compound.getCompoundTag(FluidHandlerItemStack.FLUID_NBT_KEY))); } } // Water buckets have a separate registry name from other buckets } else if(itemStack.getItem().equals(Items.WATER_BUCKET)) { - chemicalFormula = FluidTooltipUtil.getWaterTooltip(); + chemicalFormula = Lists.newArrayList(FluidTooltipUtil.getWaterTooltip()); } if (chemicalFormula != null && !chemicalFormula.isEmpty()) - event.getToolTip().add(1, ChatFormatting.GRAY.toString() + chemicalFormula); + event.getToolTip().addAll(1, chemicalFormula); } } diff --git a/src/main/java/gregtech/common/MetaFluids.java b/src/main/java/gregtech/common/MetaFluids.java index 2993fd652c..5a80d48f7f 100644 --- a/src/main/java/gregtech/common/MetaFluids.java +++ b/src/main/java/gregtech/common/MetaFluids.java @@ -1,5 +1,6 @@ package gregtech.common; +import com.mojang.realmsclient.gui.ChatFormatting; import gregtech.api.GTValues; import gregtech.api.unification.material.Materials; import gregtech.api.unification.material.type.FluidMaterial; @@ -145,12 +146,12 @@ public static void init() { int temperature = fluidMaterial.getFluidTemperature(); Fluid fluid = registerFluid(fluidMaterial, FluidType.NORMAL, temperature); fluidMaterial.setMaterialFluid(fluid); - FluidTooltipUtil.registerTooltip(fluid, fluidMaterial.chemicalFormula); + FluidTooltipUtil.registerTooltip(fluid, ChatFormatting.GRAY + fluidMaterial.chemicalFormula); } if (fluidMaterial.shouldGeneratePlasma() && fluidMaterial.getMaterialPlasma() == null) { Fluid fluid = registerFluid(fluidMaterial, FluidType.PLASMA, 30000); fluidMaterial.setMaterialPlasma(fluid); - FluidTooltipUtil.registerTooltip(fluid, fluidMaterial.chemicalFormula); + FluidTooltipUtil.registerTooltip(fluid, ChatFormatting.GRAY + fluidMaterial.chemicalFormula); } } } diff --git a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityTank.java b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityTank.java index a907f3371a..26a4c5ec05 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityTank.java +++ b/src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityTank.java @@ -682,9 +682,9 @@ public void addInformation(ItemStack stack, @Nullable World player, List if (fluidStack != null) { tooltip.add(I18n.format("gregtech.machine.fluid_tank.fluid", fluidStack.amount, fluidStack.getLocalizedName())); } - String formula = FluidTooltipUtil.getFluidTooltip(fluidStack); - if (formula != null) - tooltip.add(TextFormatting.GRAY + formula); + List tooltips = FluidTooltipUtil.getFluidTooltips(fluidStack); + if (tooltips != null) + tooltip.addAll(1, tooltips); } } diff --git a/src/main/java/gregtech/integration/jei/utils/JEIHooks.java b/src/main/java/gregtech/integration/jei/utils/JEIHooks.java index cb53311982..f172f230fd 100644 --- a/src/main/java/gregtech/integration/jei/utils/JEIHooks.java +++ b/src/main/java/gregtech/integration/jei/utils/JEIHooks.java @@ -19,9 +19,9 @@ public class JEIHooks { */ public static void addFluidTooltip(List tooltip, Object ingredient) { if (ingredient instanceof FluidStack) { - String formula = FluidTooltipUtil.getFluidTooltip(((FluidStack) ingredient).getFluid()); + List formula = FluidTooltipUtil.getFluidTooltips(((FluidStack) ingredient).getFluid()); if (formula != null && !formula.isEmpty()) { - tooltip.add(1, ChatFormatting.GRAY + formula); + tooltip.addAll(1, formula); } } }