From 6340bb3cdc38c2e91868a704eafc9c2d21213d06 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Fri, 10 Jun 2016 11:30:03 -0400 Subject: [PATCH] Fixed NBT reference losses --- src/main/java/mekanism/common/FluidNetwork.java | 3 ++- src/main/java/mekanism/common/block/BlockMachine.java | 3 ++- .../java/mekanism/common/item/ItemBlockMachine.java | 5 +++-- .../java/mekanism/common/item/ItemGaugeDropper.java | 5 +++-- .../mekanism/common/multipart/PartMechanicalPipe.java | 2 +- .../mekanism/common/tile/TileEntityFluidTank.java | 11 ++++++----- .../tile/TileEntityThermalEvaporationController.java | 1 + .../common/tile/component/TileComponentEjector.java | 2 +- src/main/java/mekanism/common/util/PipeUtils.java | 10 +++++++++- 9 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/main/java/mekanism/common/FluidNetwork.java b/src/main/java/mekanism/common/FluidNetwork.java index 82015a8a8..4631893d8 100644 --- a/src/main/java/mekanism/common/FluidNetwork.java +++ b/src/main/java/mekanism/common/FluidNetwork.java @@ -12,6 +12,7 @@ import mekanism.api.Coord4D; import mekanism.api.transmitters.DynamicNetwork; import mekanism.api.transmitters.IGridTransmitter; import mekanism.common.util.LangUtils; +import mekanism.common.util.PipeUtils; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; @@ -164,7 +165,7 @@ public class FluidNetwork extends DynamicNetwork if(acceptor != null && fluidToSend != null) { - fluidSent += acceptor.fill(side, new FluidStack(fluidToSend.getFluidID(), currentSending), doTransfer); + fluidSent += acceptor.fill(side, PipeUtils.copy(fluidToSend, currentSending), doTransfer); } if(fluidSent > prev) diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index a40e30e03..ffe36aa4f 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -84,6 +84,7 @@ import mekanism.common.tile.TileEntitySolarNeutronActivator; import mekanism.common.tile.TileEntityTeleporter; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.PipeUtils; import mekanism.common.util.SecurityUtils; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -899,7 +900,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo if(itemFluid.amount-toFill > 0) { - tileEntity.pushUp(new FluidStack(itemFluid.getFluid(), itemFluid.amount-toFill), true); + tileEntity.pushUp(PipeUtils.copy(itemFluid, itemFluid.amount-toFill), true); } return true; diff --git a/src/main/java/mekanism/common/item/ItemBlockMachine.java b/src/main/java/mekanism/common/item/ItemBlockMachine.java index 922a0cfe3..d56d3be51 100644 --- a/src/main/java/mekanism/common/item/ItemBlockMachine.java +++ b/src/main/java/mekanism/common/item/ItemBlockMachine.java @@ -36,6 +36,7 @@ import mekanism.common.tile.TileEntityFactory; import mekanism.common.tile.TileEntityFluidTank; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.PipeUtils; import mekanism.common.util.SecurityUtils; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -852,7 +853,7 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpec if(doFill) { int fillAmount = toFill + (stored == null ? 0 : stored.amount); - setFluidStack(new FluidStack(resource.getFluid(), (stored != null ? stored.amount : 0)+toFill), container); + setFluidStack(PipeUtils.copy(resource, (stored != null ? stored.amount : 0)+toFill), container); } return toFill; @@ -870,7 +871,7 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, ISpec if(stored != null) { - FluidStack toDrain = new FluidStack(stored.getFluid(), Math.min(stored.amount, maxDrain)); + FluidStack toDrain = PipeUtils.copy(stored, Math.min(stored.amount, maxDrain)); if(doDrain) { diff --git a/src/main/java/mekanism/common/item/ItemGaugeDropper.java b/src/main/java/mekanism/common/item/ItemGaugeDropper.java index 8d2d3dd6f..ac4e83efd 100644 --- a/src/main/java/mekanism/common/item/ItemGaugeDropper.java +++ b/src/main/java/mekanism/common/item/ItemGaugeDropper.java @@ -7,6 +7,7 @@ import mekanism.api.gas.GasStack; import mekanism.api.gas.IGasItem; import mekanism.common.Mekanism; import mekanism.common.util.LangUtils; +import mekanism.common.util.PipeUtils; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -164,7 +165,7 @@ public class ItemGaugeDropper extends ItemMekanism implements IGasItem, IFluidCo if(doFill) { int fillAmount = toFill + (stored == null ? 0 : stored.amount); - setFluid(container, new FluidStack(resource.getFluid(), (stored != null ? stored.amount : 0)+toFill)); + setFluid(container, PipeUtils.copy(resource, (stored != null ? stored.amount : 0)+toFill)); } return toFill; @@ -177,7 +178,7 @@ public class ItemGaugeDropper extends ItemMekanism implements IGasItem, IFluidCo if(stored != null) { - FluidStack toDrain = new FluidStack(stored.getFluid(), Math.min(stored.amount, maxDrain)); + FluidStack toDrain = PipeUtils.copy(stored, Math.min(stored.amount, maxDrain)); if(doDrain) { diff --git a/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java b/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java index 15354b4de..1d3a7d284 100644 --- a/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java +++ b/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java @@ -104,7 +104,7 @@ public class PartMechanicalPipe extends PartTransmitter 0) { - pushUp(new FluidStack(ret.getFluid(), rejects), true); + pushUp(PipeUtils.copy(ret, rejects), true); } } } @@ -204,13 +205,13 @@ public class TileEntityFluidTank extends TileEntityContainerBlock implements IAc if(ret != null) { - fluidTank.setFluid(new FluidStack(ret.getFluid(), Math.min(fluidTank.getCapacity(), ret.amount))); + fluidTank.setFluid(PipeUtils.copy(ret, Math.min(fluidTank.getCapacity(), ret.amount))); int rejects = Math.max(0, ret.amount - fluidTank.getCapacity()); if(rejects > 0) { - pushUp(new FluidStack(ret.getFluid(), rejects), true); + pushUp(PipeUtils.copy(ret, rejects), true); } } } @@ -464,7 +465,7 @@ public class TileEntityFluidTank extends TileEntityContainerBlock implements IAc if(filled < resource.amount && !isActive) { - filled += pushUp(new FluidStack(resource.getFluid(), resource.amount-filled), doFill); + filled += pushUp(PipeUtils.copy(resource, resource.amount-filled), doFill); } if(filled > 0 && from == ForgeDirection.UP) diff --git a/src/main/java/mekanism/common/tile/TileEntityThermalEvaporationController.java b/src/main/java/mekanism/common/tile/TileEntityThermalEvaporationController.java index 322da0d88..ebc313dff 100644 --- a/src/main/java/mekanism/common/tile/TileEntityThermalEvaporationController.java +++ b/src/main/java/mekanism/common/tile/TileEntityThermalEvaporationController.java @@ -703,6 +703,7 @@ public class TileEntityThermalEvaporationController extends TileEntityThermalEva return side != 0 && side != 1; } + @Override public TileEntityThermalEvaporationController getController() { return structured ? this : null; diff --git a/src/main/java/mekanism/common/tile/component/TileComponentEjector.java b/src/main/java/mekanism/common/tile/component/TileComponentEjector.java index 305534e6f..97a597b69 100644 --- a/src/main/java/mekanism/common/tile/component/TileComponentEjector.java +++ b/src/main/java/mekanism/common/tile/component/TileComponentEjector.java @@ -138,7 +138,7 @@ public class TileComponentEjector implements ITileComponent if(tank.getFluidAmount() > 0) { - FluidStack toEmit = new FluidStack(tank.getFluid().getFluid(), Math.min(FLUID_OUTPUT, tank.getFluidAmount())); + FluidStack toEmit = PipeUtils.copy(tank.getFluid(), Math.min(FLUID_OUTPUT, tank.getFluidAmount())); int emit = PipeUtils.emit(outputSides, toEmit, tileEntity); tank.drain(emit, true); } diff --git a/src/main/java/mekanism/common/util/PipeUtils.java b/src/main/java/mekanism/common/util/PipeUtils.java index 5f241fab8..b77c2de04 100644 --- a/src/main/java/mekanism/common/util/PipeUtils.java +++ b/src/main/java/mekanism/common/util/PipeUtils.java @@ -115,10 +115,18 @@ public final class PipeUtils } ForgeDirection dir = ForgeDirection.getOrientation(Arrays.asList(possibleAcceptors).indexOf(acceptor)).getOpposite(); - toSend -= acceptor.fill(dir, new FluidStack(stack.getFluid(), currentSending), true); + toSend -= acceptor.fill(dir, copy(stack, currentSending), true); } } return prevSending-toSend; } + + public static FluidStack copy(FluidStack fluid, int amount) + { + FluidStack ret = fluid.copy(); + ret.amount = amount; + + return ret; + } }