Fixed NBT reference losses
This commit is contained in:
parent
e1a5bf13c7
commit
6340bb3cdc
9 changed files with 28 additions and 14 deletions
|
@ -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<IFluidHandler, FluidNetwork>
|
|||
|
||||
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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -104,7 +104,7 @@ public class PartMechanicalPipe extends PartTransmitter<IFluidHandler, FluidNetw
|
|||
toSave += remain;
|
||||
}
|
||||
|
||||
return new FluidStack(getTransmitter().getTransmitterNetwork().buffer.getFluid(), toSave);
|
||||
return PipeUtils.copy(getTransmitter().getTransmitterNetwork().buffer, toSave);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -22,6 +22,7 @@ import mekanism.common.util.FluidContainerUtils.ContainerEditMode;
|
|||
import mekanism.common.util.InventoryUtils;
|
||||
import mekanism.common.util.LangUtils;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import mekanism.common.util.PipeUtils;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
@ -183,13 +184,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
|
|
@ -703,6 +703,7 @@ public class TileEntityThermalEvaporationController extends TileEntityThermalEva
|
|||
return side != 0 && side != 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntityThermalEvaporationController getController()
|
||||
{
|
||||
return structured ? this : null;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue