diff --git a/src/main/java/codechicken/nei/item/FluidDisplayRenderer.java b/src/main/java/codechicken/nei/item/FluidDisplayRenderer.java index 1518a975..b14a0f3b 100644 --- a/src/main/java/codechicken/nei/item/FluidDisplayRenderer.java +++ b/src/main/java/codechicken/nei/item/FluidDisplayRenderer.java @@ -2,12 +2,12 @@ package codechicken.nei.item; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; @@ -49,7 +49,8 @@ public class FluidDisplayRenderer implements IItemRenderer { Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); GL11.glColor4f(red, green, blue, 1F); GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + OpenGlHelper + .glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA); final Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); @@ -64,17 +65,17 @@ public class FluidDisplayRenderer implements IItemRenderer { } private void renderAmountOverlay(ItemStack item, ItemFluidDisplay fluidDisplay) { - final FluidStack fluidStack = fluidDisplay.getFluid(item); - if (fluidStack == null || fluidStack.amount <= 0) { + final long amount = fluidDisplay.getAmountLong(item); + if (amount <= 0) { return; } String amountString = ""; - if (fluidStack.amount < 10_000) { - amountString = String.valueOf(fluidStack.amount) + "L"; + if (amount < 10_000) { + amountString = String.valueOf(amount) + "L"; } else { - amountString = ReadableNumberConverter.INSTANCE.toWideReadableForm(fluidStack.amount) + "L"; + amountString = ReadableNumberConverter.INSTANCE.toWideReadableForm(amount) + "L"; } final FontRenderer fontRender = Minecraft.getMinecraft().fontRenderer; diff --git a/src/main/java/codechicken/nei/item/ItemFluidDisplay.java b/src/main/java/codechicken/nei/item/ItemFluidDisplay.java index fd5e8fc2..8cec7398 100644 --- a/src/main/java/codechicken/nei/item/ItemFluidDisplay.java +++ b/src/main/java/codechicken/nei/item/ItemFluidDisplay.java @@ -49,27 +49,26 @@ public class ItemFluidDisplay extends Item implements IFluidContainerItem { } public static ItemStack createStack(FluidStack fluidStack) { - if (fluidStack == null || fluidStack.getFluid() == null) { + return fluidStack == null ? null : createStack(fluidStack.getFluid(), fluidStack.amount); + } + + public static ItemStack createStack(Fluid fluid, long amount) { + if (fluid == null) { return null; } int fluidId; try { - fluidId = FluidRegistry.getFluidID(fluidStack.getFluid()); + fluidId = FluidRegistry.getFluidID(fluid); } catch (Exception e) { - NEIClientConfig.logger.error("Failed to get fluid id for: " + fluidStack.getFluid().getName(), e); + NEIClientConfig.logger.error("Failed to get fluid id for: " + fluid.getName(), e); return null; } final ItemStack stack = new ItemStack(INSTANCE, 1, fluidId); final NBTTagCompound nbtTag = new NBTTagCompound(); - - if (fluidStack.tag != null) { - nbtTag.setTag("FluidTag", fluidStack.tag.copy()); - } - - nbtTag.setInteger("neiFluidDisplayAmount", fluidStack.amount); + nbtTag.setLong("neiFluidDisplayAmount", amount); stack.setTagCompound(nbtTag); return stack; } @@ -88,23 +87,25 @@ public class ItemFluidDisplay extends Item implements IFluidContainerItem { } final NBTTagCompound nbTag = stack.getTagCompound(); - final FluidStack fluidStack = new FluidStack(fluid, nbTag.getInteger("neiFluidDisplayAmount")); - - if (nbTag.hasKey("FluidTag")) { - fluidStack.tag = nbTag.getCompoundTag("FluidTag"); - } + final FluidStack fluidStack = new FluidStack( + fluid, + (int) Math.min(nbTag.getLong("neiFluidDisplayAmount"), Integer.MAX_VALUE)); return fluidStack; } - @Override - public int getCapacity(ItemStack stack) { + public long getAmountLong(ItemStack stack) { if (stack == null || !(stack.getItem() instanceof ItemFluidDisplay) || !stack.hasTagCompound()) { return 0; } - return stack.getTagCompound().getInteger("neiFluidDisplayAmount"); + return stack.getTagCompound().getLong("neiFluidDisplayAmount"); + } + + @Override + public int getCapacity(ItemStack stack) { + return (int) Math.min(getAmountLong(stack), Integer.MAX_VALUE); } @Override diff --git a/src/main/java/codechicken/nei/recipe/StackInfo.java b/src/main/java/codechicken/nei/recipe/StackInfo.java index 32ac1e91..e0a4b81a 100644 --- a/src/main/java/codechicken/nei/recipe/StackInfo.java +++ b/src/main/java/codechicken/nei/recipe/StackInfo.java @@ -59,7 +59,7 @@ public class StackInfo { if (nbtTag != null) { nbtTag = (NBTTagCompound) nbtTag.copy(); - nbtTag.setInteger("Count", (int) Math.max(Math.min(customCount, Integer.MAX_VALUE), 0)); + nbtTag.setLong("Count", Math.max(customCount, 0)); return loadFromNBT(nbtTag); } diff --git a/src/main/java/codechicken/nei/recipe/stackinfo/DefaultStackStringifyHandler.java b/src/main/java/codechicken/nei/recipe/stackinfo/DefaultStackStringifyHandler.java index 250a6ced..0e9e0251 100644 --- a/src/main/java/codechicken/nei/recipe/stackinfo/DefaultStackStringifyHandler.java +++ b/src/main/java/codechicken/nei/recipe/stackinfo/DefaultStackStringifyHandler.java @@ -45,7 +45,7 @@ public class DefaultStackStringifyHandler implements IStackStringifyHandler { final ItemStack stack = ItemStack.loadItemStackFromNBT(nbtTag); if (stack != null) { - stack.stackSize = nbtTag.getInteger("Count"); + stack.stackSize = (int) Math.min(nbtTag.getLong("Count"), Integer.MAX_VALUE); } return stack; diff --git a/src/main/java/codechicken/nei/recipe/stackinfo/FluidDisplayStackStringifyHandler.java b/src/main/java/codechicken/nei/recipe/stackinfo/FluidDisplayStackStringifyHandler.java index cc2ec0a8..37eee02d 100644 --- a/src/main/java/codechicken/nei/recipe/stackinfo/FluidDisplayStackStringifyHandler.java +++ b/src/main/java/codechicken/nei/recipe/stackinfo/FluidDisplayStackStringifyHandler.java @@ -31,13 +31,10 @@ public class FluidDisplayStackStringifyHandler implements IStackStringifyHandler return null; } + final long amount = ((ItemFluidDisplay) stack.getItem()).getAmountLong(stack); final NBTTagCompound nbTag = new NBTTagCompound(); nbTag.setString(NBT_FLUID_NAME, fluidStack.getFluid().getName()); - nbTag.setInteger("Count", saveStackSize ? fluidStack.amount : 1); - - if (fluidStack.tag != null) { - nbTag.setTag("FluidTag", fluidStack.tag.copy()); - } + nbTag.setLong("Count", saveStackSize ? amount : 1); return nbTag; } @@ -55,13 +52,7 @@ public class FluidDisplayStackStringifyHandler implements IStackStringifyHandler return null; } - final FluidStack fluidStack = new FluidStack(fluid, nbtTag.getInteger("Count")); - - if (nbtTag.hasKey("FluidTag")) { - fluidStack.tag = nbtTag.getCompoundTag("FluidTag"); - } - - return ItemFluidDisplay.createStack(fluidStack); + return ItemFluidDisplay.createStack(fluid, nbtTag.getLong("Count")); } @Override diff --git a/src/main/java/codechicken/nei/recipe/stackinfo/GTFluidStackStringifyHandler.java b/src/main/java/codechicken/nei/recipe/stackinfo/GTFluidStackStringifyHandler.java index f0bb93cb..e4b24a39 100644 --- a/src/main/java/codechicken/nei/recipe/stackinfo/GTFluidStackStringifyHandler.java +++ b/src/main/java/codechicken/nei/recipe/stackinfo/GTFluidStackStringifyHandler.java @@ -67,10 +67,9 @@ public class GTFluidStackStringifyHandler implements IStackStringifyHandler { if (nbtTag.hasKey("gtFluidName")) { final String fluidName = nbtTag.getString("gtFluidName"); final Fluid fluid = FluidRegistry.getFluid(fluidName); - final int amount = nbtTag.getInteger("Count"); if (fluid != null) { - return ItemFluidDisplay.createStack(new FluidStack(fluid, amount)); + return ItemFluidDisplay.createStack(fluid, nbtTag.getLong("Count")); } } @@ -98,11 +97,7 @@ public class GTFluidStackStringifyHandler implements IStackStringifyHandler { Fluid fluid = FluidRegistry.getFluid(nbtTag.getString("Fluid").toLowerCase()); if (fluid != null) { - FluidStack fluidStack = new FluidStack(fluid, stack.stackSize); - if (nbtTag.hasKey("FluidTag")) { - fluidStack.tag = nbtTag.getCompoundTag("FluidTag"); - } - return fluidStack; + return new FluidStack(fluid, stack.stackSize); } } } catch (Exception e) {}