Revived gutters
This commit is contained in:
parent
fee28407d8
commit
c6ac81c6a6
13 changed files with 226 additions and 336 deletions
|
@ -3,9 +3,6 @@ package resonantinduction.archaic.filter;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import net.minecraftforge.fluids.FluidContainerRegistry;
|
|
||||||
import net.minecraftforge.fluids.FluidRegistry;
|
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
|
||||||
import net.minecraftforge.fluids.IFluidHandler;
|
import net.minecraftforge.fluids.IFluidHandler;
|
||||||
import resonantinduction.api.IFilterable;
|
import resonantinduction.api.IFilterable;
|
||||||
import resonantinduction.api.recipe.MachineRecipes;
|
import resonantinduction.api.recipe.MachineRecipes;
|
||||||
|
@ -44,14 +41,6 @@ public class TileFilter extends TileFilterable implements IFilterable
|
||||||
{
|
{
|
||||||
worldObj.spawnParticle("dripWater", xCoord + 0.5, yCoord, zCoord + 0.5, 0, 0, 0);
|
worldObj.spawnParticle("dripWater", xCoord + 0.5, yCoord, zCoord + 0.5, 0, 0, 0);
|
||||||
|
|
||||||
if (checkBelow.getTileEntity(worldObj) instanceof IFluidHandler)
|
|
||||||
{
|
|
||||||
IFluidHandler handler = ((IFluidHandler) checkBelow.getTileEntity(worldObj));
|
|
||||||
|
|
||||||
if (handler.fill(ForgeDirection.UP, new FluidStack(FluidRegistry.WATER, FluidContainerRegistry.BUCKET_VOLUME), false) <= 0)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Leak the fluid down.
|
* Leak the fluid down.
|
||||||
*/
|
*/
|
||||||
|
@ -78,15 +67,7 @@ public class TileFilter extends TileFilterable implements IFilterable
|
||||||
/**
|
/**
|
||||||
* Add liquid to bottom.
|
* Add liquid to bottom.
|
||||||
*/
|
*/
|
||||||
if (checkBelow.getTileEntity(worldObj) instanceof IFluidHandler)
|
checkBelow.setBlock(worldObj, Block.waterMoving.blockID);
|
||||||
{
|
|
||||||
IFluidHandler handler = ((IFluidHandler) checkBelow.getTileEntity(worldObj));
|
|
||||||
handler.fill(ForgeDirection.UP, new FluidStack(FluidRegistry.WATER, FluidContainerRegistry.BUCKET_VOLUME), true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
checkBelow.setBlock(worldObj, Block.waterMoving.blockID);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraftforge.common.ForgeDirection;
|
||||||
import net.minecraftforge.fluids.FluidRegistry;
|
import net.minecraftforge.fluids.FluidRegistry;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import resonantinduction.core.Reference;
|
import resonantinduction.core.Reference;
|
||||||
import resonantinduction.core.fluid.BlockFluidNetwork;
|
import resonantinduction.core.fluid.BlockFluidNode;
|
||||||
import resonantinduction.core.render.RIBlockRenderingHandler;
|
import resonantinduction.core.render.RIBlockRenderingHandler;
|
||||||
import universalelectricity.api.UniversalElectricity;
|
import universalelectricity.api.UniversalElectricity;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
|
@ -26,7 +26,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||||
*
|
*
|
||||||
* @author Darkguardsman
|
* @author Darkguardsman
|
||||||
*/
|
*/
|
||||||
public class BlockGutter extends BlockFluidNetwork
|
public class BlockGutter extends BlockFluidNode
|
||||||
{
|
{
|
||||||
public BlockGutter(int id)
|
public BlockGutter(int id)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,9 +3,12 @@ package resonantinduction.archaic.fluid.gutter;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import net.minecraftforge.fluids.Fluid;
|
import net.minecraftforge.fluids.Fluid;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.fluids.IFluidHandler;
|
import net.minecraftforge.fluids.IFluidHandler;
|
||||||
import resonantinduction.core.fluid.IPressurizedNode;
|
import resonantinduction.core.fluid.IPressurizedNode;
|
||||||
import resonantinduction.core.fluid.TilePressurizedNode;
|
import resonantinduction.core.fluid.TilePressurizedNode;
|
||||||
|
import universalelectricity.api.vector.Vector3;
|
||||||
|
import calclavia.lib.utility.FluidUtility;
|
||||||
import calclavia.lib.utility.WorldUtility;
|
import calclavia.lib.utility.WorldUtility;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -26,30 +29,55 @@ public class TileGutter extends TilePressurizedNode implements IPressurizedNode
|
||||||
sendTankUpdate();
|
sendTankUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refresh()
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Drain block above if it is a fluid.
|
||||||
|
*/
|
||||||
|
FluidStack drain = FluidUtility.drainBlock(worldObj, new Vector3(this).translate(0, 1, 0), true);
|
||||||
|
|
||||||
|
if (drain != null)
|
||||||
|
fill(ForgeDirection.UP, drain, true);
|
||||||
|
|
||||||
|
super.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validateConnectionSide(TileEntity tileEntity, ForgeDirection side)
|
public void validateConnectionSide(TileEntity tileEntity, ForgeDirection side)
|
||||||
{
|
{
|
||||||
if (!this.worldObj.isRemote)
|
if (!this.worldObj.isRemote)
|
||||||
{
|
{
|
||||||
if (tileEntity instanceof TileGutter)
|
if (tileEntity instanceof IFluidHandler)
|
||||||
{
|
|
||||||
getNetwork().merge(((TileGutter) tileEntity).getNetwork());
|
|
||||||
renderSides = WorldUtility.setEnableSide(renderSides, side, true);
|
|
||||||
connectedBlocks[side.ordinal()] = tileEntity;
|
|
||||||
}
|
|
||||||
else if (tileEntity instanceof IFluidHandler)
|
|
||||||
{
|
{
|
||||||
|
if (tileEntity instanceof TileGutter)
|
||||||
|
{
|
||||||
|
getNetwork().merge(((TileGutter) tileEntity).getNetwork());
|
||||||
|
}
|
||||||
|
|
||||||
renderSides = WorldUtility.setEnableSide(renderSides, side, true);
|
renderSides = WorldUtility.setEnableSide(renderSides, side, true);
|
||||||
connectedBlocks[side.ordinal()] = tileEntity;
|
connectedBlocks[side.ordinal()] = tileEntity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
|
||||||
|
{
|
||||||
|
if (!resource.getFluid().isGaseous())
|
||||||
|
{
|
||||||
|
return super.fill(from, resource, doFill);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getPressure(ForgeDirection dir)
|
public int getPressure(ForgeDirection dir)
|
||||||
{
|
{
|
||||||
if (dir == ForgeDirection.UP)
|
if (dir == ForgeDirection.UP)
|
||||||
return -3;
|
return -3;
|
||||||
|
|
||||||
if (dir == ForgeDirection.DOWN)
|
if (dir == ForgeDirection.DOWN)
|
||||||
return +3;
|
return +3;
|
||||||
|
|
||||||
|
@ -59,7 +87,7 @@ public class TileGutter extends TilePressurizedNode implements IPressurizedNode
|
||||||
@Override
|
@Override
|
||||||
public int getMaxFlowRate()
|
public int getMaxFlowRate()
|
||||||
{
|
{
|
||||||
return 1;
|
return 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,7 +10,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.MovingObjectPosition;
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import resonantinduction.core.fluid.BlockFluidNetwork;
|
import resonantinduction.core.fluid.BlockFluidNode;
|
||||||
import resonantinduction.core.render.RIBlockRenderingHandler;
|
import resonantinduction.core.render.RIBlockRenderingHandler;
|
||||||
import resonantinduction.mechanical.fluid.pipe.ItemBlockFluidContainer;
|
import resonantinduction.mechanical.fluid.pipe.ItemBlockFluidContainer;
|
||||||
import universalelectricity.api.UniversalElectricity;
|
import universalelectricity.api.UniversalElectricity;
|
||||||
|
@ -20,7 +20,7 @@ import calclavia.lib.utility.inventory.InventoryUtility;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
public class BlockTank extends BlockFluidNetwork
|
public class BlockTank extends BlockFluidNode
|
||||||
{
|
{
|
||||||
public BlockTank(int id)
|
public BlockTank(int id)
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,19 +28,20 @@ public class TankNetwork extends FluidDistributionetwork
|
||||||
@Override
|
@Override
|
||||||
public void update()
|
public void update()
|
||||||
{
|
{
|
||||||
final FluidStack totalFluid = getTank().getFluid();
|
final FluidStack networkTankFluid = getTank().getFluid();
|
||||||
int lowestY = 255, highestY = 0;
|
int lowestY = 255, highestY = 0;
|
||||||
|
|
||||||
if (totalFluid != null && getConnectors().size() > 0)
|
if (getConnectors().size() > 0)
|
||||||
{
|
{
|
||||||
FluidStack distributeFluid = totalFluid.copy();
|
int totalFluid = networkTankFluid != null ? networkTankFluid.amount : 0;
|
||||||
|
|
||||||
HashMap<Integer, Integer> heightCount = new HashMap<Integer, Integer>();
|
HashMap<Integer, Integer> heightCount = new HashMap<Integer, Integer>();
|
||||||
PriorityQueue<IFluidDistribution> heightPriorityQueue = new PriorityQueue<IFluidDistribution>(1024, new Comparator()
|
PriorityQueue<IFluidDistribution> heightPriorityQueue = new PriorityQueue<IFluidDistribution>(1024, new Comparator()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public int compare(Object a, Object b)
|
public int compare(Object a, Object b)
|
||||||
{
|
{
|
||||||
if (totalFluid.getFluid().isGaseous())
|
if (networkTankFluid.getFluid().isGaseous())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
TileEntity wa = (TileEntity) a;
|
TileEntity wa = (TileEntity) a;
|
||||||
|
@ -78,23 +79,23 @@ public class TankNetwork extends FluidDistributionetwork
|
||||||
int yCoord = ((TileEntity) distributeNode).yCoord;
|
int yCoord = ((TileEntity) distributeNode).yCoord;
|
||||||
int connectorCount = heightCount.get(yCoord);
|
int connectorCount = heightCount.get(yCoord);
|
||||||
|
|
||||||
if (distributeFluid == null || distributeFluid.amount <= 0)
|
if (totalFluid <= 0)
|
||||||
{
|
{
|
||||||
distributeNode.getInternalTank().setFluid(null);
|
distributeNode.getInternalTank().setFluid(null);
|
||||||
distributeNode.onFluidChanged();
|
distributeNode.onFluidChanged();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fluidPer = distributeFluid.amount / connectorCount;
|
int fluidPer = totalFluid / connectorCount;
|
||||||
int deltaFluidAmount = fluidPer - distributeNode.getInternalTank().getFluidAmount();
|
int deltaFluidAmount = fluidPer - distributeNode.getInternalTank().getFluidAmount();
|
||||||
|
|
||||||
int current = distributeNode.getInternalTank().getFluidAmount();
|
int current = distributeNode.getInternalTank().getFluidAmount();
|
||||||
|
|
||||||
if (deltaFluidAmount > 0)
|
if (deltaFluidAmount > 0)
|
||||||
{
|
{
|
||||||
int filled = distributeNode.getInternalTank().fill(FluidUtility.getStack(distributeFluid, deltaFluidAmount), false);
|
int filled = distributeNode.getInternalTank().fill(FluidUtility.getStack(networkTankFluid, deltaFluidAmount), false);
|
||||||
distributeNode.getInternalTank().fill(FluidUtility.getStack(distributeFluid, deltaFluidAmount / 10), true);
|
distributeNode.getInternalTank().fill(FluidUtility.getStack(networkTankFluid, deltaFluidAmount / 10), true);
|
||||||
distributeFluid.amount -= current + filled;
|
totalFluid -= current + filled;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -102,7 +103,7 @@ public class TankNetwork extends FluidDistributionetwork
|
||||||
distributeNode.getInternalTank().drain(Math.abs(deltaFluidAmount / 10), true);
|
distributeNode.getInternalTank().drain(Math.abs(deltaFluidAmount / 10), true);
|
||||||
|
|
||||||
if (drain != null)
|
if (drain != null)
|
||||||
distributeFluid.amount -= current - drain.amount;
|
totalFluid -= current - drain.amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (deltaFluidAmount != 0)
|
if (deltaFluidAmount != 0)
|
||||||
|
|
|
@ -116,9 +116,6 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock
|
||||||
@Override
|
@Override
|
||||||
public boolean activate(EntityPlayer player, MovingObjectPosition hit, ItemStack itemStack)
|
public boolean activate(EntityPlayer player, MovingObjectPosition hit, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
if (!world().isRemote)
|
|
||||||
System.out.println(getNetwork());
|
|
||||||
|
|
||||||
if (itemStack != null && itemStack.getItem() instanceof ItemHandCrank)
|
if (itemStack != null && itemStack.getItem() instanceof ItemHandCrank)
|
||||||
{
|
{
|
||||||
if (player.isSneaking())
|
if (player.isSneaking())
|
||||||
|
@ -128,10 +125,10 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock
|
||||||
getMultiBlock().get().angularVelocity = -getMultiBlock().get().angularVelocity;
|
getMultiBlock().get().angularVelocity = -getMultiBlock().get().angularVelocity;
|
||||||
player.addChatMessage("Flipped gear to rotate " + (angularVelocity > 0 ? "clockwise" : "anticlockwise") + ".");
|
player.addChatMessage("Flipped gear to rotate " + (angularVelocity > 0 ? "clockwise" : "anticlockwise") + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
getMultiBlock().get().manualCrankTime = 10;
|
getMultiBlock().get().manualCrankTime = 10;
|
||||||
world().playSoundEffect(x() + 0.5, y() + 0.5, z() + 0.5, Reference.PREFIX + "gearCrank", 0.5f, 0.9f + world().rand.nextFloat() * 0.2f);
|
world().playSoundEffect(x() + 0.5, y() + 0.5, z() + 0.5, Reference.PREFIX + "gearCrank", 0.5f, 0.9f + world().rand.nextFloat() * 0.2f);
|
||||||
player.addExhaustion(0.01f);
|
player.addExhaustion(0.01f);
|
||||||
|
|
|
@ -135,16 +135,7 @@ public class PartPipe extends PartFramedConnection<EnumPipeMaterial, IPressurize
|
||||||
@Override
|
@Override
|
||||||
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
|
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
|
||||||
{
|
{
|
||||||
if (!world().isRemote)
|
return drain(from, resource.amount, doDrain);
|
||||||
{
|
|
||||||
if (doDrain)
|
|
||||||
{
|
|
||||||
markPacket = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return tank.drain(resource.amount, doDrain);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -5,10 +5,12 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import calclavia.lib.prefab.block.BlockTile;
|
import calclavia.lib.prefab.block.BlockTile;
|
||||||
|
|
||||||
/** @author Calclavia */
|
/**
|
||||||
public abstract class BlockFluidNetwork extends BlockTile
|
* @author Calclavia
|
||||||
|
*/
|
||||||
|
public abstract class BlockFluidNode extends BlockTile
|
||||||
{
|
{
|
||||||
public BlockFluidNetwork(int id, Material material)
|
public BlockFluidNode(int id, Material material)
|
||||||
{
|
{
|
||||||
super(id, material);
|
super(id, material);
|
||||||
}
|
}
|
|
@ -99,8 +99,7 @@ public abstract class FluidDistributionetwork extends NodeNetwork<FluidDistribut
|
||||||
{
|
{
|
||||||
if (resource != null && resource.isFluidEqual(getTank().getFluid()))
|
if (resource != null && resource.isFluidEqual(getTank().getFluid()))
|
||||||
{
|
{
|
||||||
FluidStack before = this.getTank().getFluid();
|
FluidStack drain = getTank().drain(resource.amount, doDrain);
|
||||||
FluidStack drain = this.getTank().drain(resource.amount, doDrain);
|
|
||||||
needsUpdate = true;
|
needsUpdate = true;
|
||||||
NetworkTickHandler.addNetwork(this);
|
NetworkTickHandler.addNetwork(this);
|
||||||
return drain;
|
return drain;
|
||||||
|
@ -111,10 +110,10 @@ public abstract class FluidDistributionetwork extends NodeNetwork<FluidDistribut
|
||||||
|
|
||||||
public FluidStack drain(IFluidDistribution source, ForgeDirection from, int resource, boolean doDrain)
|
public FluidStack drain(IFluidDistribution source, ForgeDirection from, int resource, boolean doDrain)
|
||||||
{
|
{
|
||||||
if (getTank().getFluid() != null)
|
FluidStack drain = getTank().drain(resource, doDrain);
|
||||||
return this.drain(source, from, FluidUtility.getStack(getTank().getFluid(), resource), doDrain);
|
needsUpdate = true;
|
||||||
|
NetworkTickHandler.addNetwork(this);
|
||||||
return null;
|
return drain;
|
||||||
}
|
}
|
||||||
|
|
||||||
public FluidTank getTank()
|
public FluidTank getTank()
|
||||||
|
|
|
@ -12,7 +12,7 @@ import universalelectricity.core.net.NodeNetwork;
|
||||||
/**
|
/**
|
||||||
* The network for pipe fluid transfer. getNodes() is NOT used.
|
* The network for pipe fluid transfer. getNodes() is NOT used.
|
||||||
*
|
*
|
||||||
* @author DarkGuardsman
|
* @author Calclavia
|
||||||
*/
|
*/
|
||||||
public class PressureNetwork extends NodeNetwork<PressureNetwork, IPressurizedNode, IFluidHandler> implements IUpdate
|
public class PressureNetwork extends NodeNetwork<PressureNetwork, IPressurizedNode, IFluidHandler> implements IUpdate
|
||||||
{
|
{
|
||||||
|
@ -26,10 +26,8 @@ public class PressureNetwork extends NodeNetwork<PressureNetwork, IPressurizedNo
|
||||||
{
|
{
|
||||||
for (IPressurizedNode connector : getConnectors())
|
for (IPressurizedNode connector : getConnectors())
|
||||||
{
|
{
|
||||||
|
|
||||||
calculatePressure((IPressurizedNode) connector);
|
calculatePressure((IPressurizedNode) connector);
|
||||||
distribute((IPressurizedNode) connector);
|
distribute((IPressurizedNode) connector);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,18 +53,23 @@ public class PressureNetwork extends NodeNetwork<PressureNetwork, IPressurizedNo
|
||||||
int minPressure = 0;
|
int minPressure = 0;
|
||||||
int maxPressure = 0;
|
int maxPressure = 0;
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++)
|
Object[] connections = sourcePipe.getConnections();
|
||||||
|
|
||||||
|
if (connections != null)
|
||||||
{
|
{
|
||||||
Object obj = sourcePipe.getConnections()[i];
|
for (int i = 0; i < connections.length; i++)
|
||||||
|
|
||||||
if (obj instanceof IPressure)
|
|
||||||
{
|
{
|
||||||
int pressure = ((IPressure) obj).getPressure(ForgeDirection.getOrientation(i).getOpposite());
|
Object obj = connections[i];
|
||||||
|
|
||||||
minPressure = Math.min(pressure, minPressure);
|
if (obj instanceof IPressure)
|
||||||
maxPressure = Math.max(pressure, maxPressure);
|
{
|
||||||
totalPressure += pressure;
|
int pressure = ((IPressure) obj).getPressure(ForgeDirection.getOrientation(i).getOpposite());
|
||||||
findCount++;
|
|
||||||
|
minPressure = Math.min(pressure, minPressure);
|
||||||
|
maxPressure = Math.max(pressure, maxPressure);
|
||||||
|
totalPressure += pressure;
|
||||||
|
findCount++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,14 +130,14 @@ public class PressureNetwork extends NodeNetwork<PressureNetwork, IPressurizedNo
|
||||||
{
|
{
|
||||||
int amountB = tankB.getFluidAmount();
|
int amountB = tankB.getFluidAmount();
|
||||||
|
|
||||||
int quantity = Math.max(pressureA > pressureB ? (pressureA - pressureB) * sourcePipe.getMaxFlowRate() : 0, (amountA - amountB) / 2);
|
int quantity = Math.max(pressureA > pressureB ? (pressureA - pressureB) * sourcePipe.getMaxFlowRate() : 0, Math.min((amountA - amountB) / 2, sourcePipe.getMaxFlowRate()));
|
||||||
quantity = Math.min(Math.min(quantity, tankB.getCapacity() - amountB), amountA);
|
quantity = Math.min(Math.min(quantity, tankB.getCapacity() - amountB), amountA);
|
||||||
|
|
||||||
if (quantity > 0)
|
if (quantity > 0)
|
||||||
{
|
{
|
||||||
FluidStack drainStack = sourcePipe.drain(dir.getOpposite(), quantity, false);
|
FluidStack drainStack = sourcePipe.drain(dir.getOpposite(), quantity, false);
|
||||||
|
|
||||||
if (drainStack != null)
|
if (drainStack != null && drainStack.amount > 0)
|
||||||
sourcePipe.drain(dir.getOpposite(), otherPipe.fill(dir, drainStack, true), true);
|
sourcePipe.drain(dir.getOpposite(), otherPipe.fill(dir, drainStack, true), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -198,5 +201,6 @@ public class PressureNetwork extends NodeNetwork<PressureNetwork, IPressurizedNo
|
||||||
public void reconstruct()
|
public void reconstruct()
|
||||||
{
|
{
|
||||||
NetworkTickHandler.addNetwork(this);
|
NetworkTickHandler.addNetwork(this);
|
||||||
|
super.reconstruct();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,27 +32,13 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||||
*
|
*
|
||||||
* @author DarkGuardsman
|
* @author DarkGuardsman
|
||||||
*/
|
*/
|
||||||
public abstract class TileFluidDistribution extends TileAdvanced implements IFluidDistribution, IPacketReceiverWithID, IInformation
|
public abstract class TileFluidDistribution extends TileFluidNode implements IFluidDistribution
|
||||||
{
|
{
|
||||||
protected int pressure;
|
|
||||||
|
|
||||||
protected FluidTank tank;
|
|
||||||
protected Object[] connectedBlocks = new Object[6];
|
protected Object[] connectedBlocks = new Object[6];
|
||||||
protected int colorID = 0;
|
|
||||||
|
|
||||||
/** Copy of the tank's content last time it updated */
|
|
||||||
protected FluidStack prevStack = null;
|
|
||||||
|
|
||||||
/** Network used to link all parts together */
|
/** Network used to link all parts together */
|
||||||
protected FluidDistributionetwork network;
|
protected FluidDistributionetwork network;
|
||||||
|
|
||||||
public static final int PACKET_DESCRIPTION = 0;
|
|
||||||
public static final int PACKET_RENDER = 1;
|
|
||||||
public static final int PACKET_TANK = 2;
|
|
||||||
|
|
||||||
/** Bitmask that handles connections for the renderer **/
|
|
||||||
public byte renderSides = 0;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initiate()
|
public void initiate()
|
||||||
{
|
{
|
||||||
|
@ -152,97 +138,6 @@ public abstract class TileFluidDistribution extends TileAdvanced implements IFlu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readFromNBT(NBTTagCompound nbt)
|
|
||||||
{
|
|
||||||
super.readFromNBT(nbt);
|
|
||||||
this.colorID = nbt.getInteger("subID");
|
|
||||||
getInternalTank().readFromNBT(nbt.getCompoundTag("FluidTank"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeToNBT(NBTTagCompound nbt)
|
|
||||||
{
|
|
||||||
super.writeToNBT(nbt);
|
|
||||||
nbt.setInteger("subID", this.colorID);
|
|
||||||
nbt.setCompoundTag("FluidTank", this.getInternalTank().writeToNBT(new NBTTagCompound()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onReceivePacket(int id, ByteArrayDataInput data, EntityPlayer player, Object... extra)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (this.worldObj.isRemote)
|
|
||||||
{
|
|
||||||
if (id == PACKET_DESCRIPTION)
|
|
||||||
{
|
|
||||||
this.colorID = data.readInt();
|
|
||||||
this.renderSides = data.readByte();
|
|
||||||
this.tank = new FluidTank(data.readInt());
|
|
||||||
this.getInternalTank().readFromNBT(PacketHandler.readNBTTagCompound(data));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (id == PACKET_RENDER)
|
|
||||||
{
|
|
||||||
this.colorID = data.readInt();
|
|
||||||
this.renderSides = data.readByte();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (id == PACKET_TANK)
|
|
||||||
{
|
|
||||||
tank = new FluidTank(data.readInt()).readFromNBT(PacketHandler.readNBTTagCompound(data));
|
|
||||||
pressure = data.readInt();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Packet getDescriptionPacket()
|
|
||||||
{
|
|
||||||
return ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_DESCRIPTION, this, this.colorID, this.renderSides, this.getInternalTank().getCapacity(), this.getInternalTank().writeToNBT(new NBTTagCompound()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendRenderUpdate()
|
|
||||||
{
|
|
||||||
if (!this.worldObj.isRemote)
|
|
||||||
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_RENDER, this, this.colorID, this.renderSides));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendTankUpdate()
|
|
||||||
{
|
|
||||||
if (!this.worldObj.isRemote)
|
|
||||||
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_TANK, this, getInternalTank().getCapacity(), getInternalTank().writeToNBT(new NBTTagCompound()), pressure), this.worldObj, new Vector3(this), 60);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFluidChanged()
|
|
||||||
{
|
|
||||||
if (!worldObj.isRemote)
|
|
||||||
{
|
|
||||||
if (!FluidUtility.matchExact(prevStack, getInternalTank().getFluid()))
|
|
||||||
{
|
|
||||||
sendTankUpdate();
|
|
||||||
prevStack = tank.getFluid() != null ? tank.getFluid().copy() : null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public AxisAlignedBB getRenderBoundingBox()
|
|
||||||
{
|
|
||||||
return AxisAlignedBB.getAABBPool().getAABB(this.xCoord, this.yCoord, this.zCoord, this.xCoord + 1, this.yCoord + 1, this.zCoord + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSubID()
|
public int getSubID()
|
||||||
{
|
{
|
||||||
return this.colorID;
|
return this.colorID;
|
||||||
|
@ -259,22 +154,6 @@ public abstract class TileFluidDistribution extends TileAdvanced implements IFlu
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public FluidTank getInternalTank()
|
|
||||||
{
|
|
||||||
if (this.tank == null)
|
|
||||||
{
|
|
||||||
this.tank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME);
|
|
||||||
}
|
|
||||||
return this.tank;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getInformation(List<String> info)
|
|
||||||
{
|
|
||||||
info.add(this.getNetwork().toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IFluidDistribution getInstance(ForgeDirection from)
|
public IFluidDistribution getInstance(ForgeDirection from)
|
||||||
{
|
{
|
||||||
|
|
132
src/main/java/resonantinduction/core/fluid/TileFluidNode.java
Normal file
132
src/main/java/resonantinduction/core/fluid/TileFluidNode.java
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
package resonantinduction.core.fluid;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.network.packet.Packet;
|
||||||
|
import net.minecraftforge.fluids.FluidContainerRegistry;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.fluids.FluidTank;
|
||||||
|
import resonantinduction.core.ResonantInduction;
|
||||||
|
import universalelectricity.api.vector.Vector3;
|
||||||
|
import calclavia.lib.network.IPacketReceiverWithID;
|
||||||
|
import calclavia.lib.network.PacketHandler;
|
||||||
|
import calclavia.lib.prefab.tile.TileAdvanced;
|
||||||
|
import calclavia.lib.utility.FluidUtility;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A prefab class for tiles that use the fluid network.
|
||||||
|
*
|
||||||
|
* @author DarkGuardsman
|
||||||
|
*/
|
||||||
|
public abstract class TileFluidNode extends TileAdvanced implements IPacketReceiverWithID
|
||||||
|
{
|
||||||
|
protected int pressure;
|
||||||
|
|
||||||
|
protected FluidTank tank;
|
||||||
|
|
||||||
|
protected int colorID = 0;
|
||||||
|
|
||||||
|
/** Copy of the tank's content last time it updated */
|
||||||
|
protected FluidStack prevStack = null;
|
||||||
|
|
||||||
|
public static final int PACKET_DESCRIPTION = 0;
|
||||||
|
public static final int PACKET_RENDER = 1;
|
||||||
|
public static final int PACKET_TANK = 2;
|
||||||
|
|
||||||
|
/** Bitmask that handles connections for the renderer **/
|
||||||
|
public byte renderSides = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt)
|
||||||
|
{
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
this.colorID = nbt.getInteger("subID");
|
||||||
|
getInternalTank().readFromNBT(nbt.getCompoundTag("FluidTank"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt)
|
||||||
|
{
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
nbt.setInteger("subID", this.colorID);
|
||||||
|
nbt.setCompoundTag("FluidTank", getInternalTank().writeToNBT(new NBTTagCompound()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onReceivePacket(int id, ByteArrayDataInput data, EntityPlayer player, Object... extra)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (this.worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if (id == PACKET_DESCRIPTION)
|
||||||
|
{
|
||||||
|
this.colorID = data.readInt();
|
||||||
|
this.renderSides = data.readByte();
|
||||||
|
this.tank = new FluidTank(data.readInt());
|
||||||
|
this.getInternalTank().readFromNBT(PacketHandler.readNBTTagCompound(data));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (id == PACKET_RENDER)
|
||||||
|
{
|
||||||
|
this.colorID = data.readInt();
|
||||||
|
this.renderSides = data.readByte();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (id == PACKET_TANK)
|
||||||
|
{
|
||||||
|
tank = new FluidTank(data.readInt()).readFromNBT(PacketHandler.readNBTTagCompound(data));
|
||||||
|
pressure = data.readInt();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Packet getDescriptionPacket()
|
||||||
|
{
|
||||||
|
return ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_DESCRIPTION, this, this.colorID, this.renderSides, this.getInternalTank().getCapacity(), this.getInternalTank().writeToNBT(new NBTTagCompound()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendRenderUpdate()
|
||||||
|
{
|
||||||
|
if (!this.worldObj.isRemote)
|
||||||
|
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_RENDER, this, this.colorID, this.renderSides));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendTankUpdate()
|
||||||
|
{
|
||||||
|
if (!this.worldObj.isRemote)
|
||||||
|
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_TANK, this, getInternalTank().getCapacity(), getInternalTank().writeToNBT(new NBTTagCompound()), pressure), this.worldObj, new Vector3(this), 60);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onFluidChanged()
|
||||||
|
{
|
||||||
|
if (!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if (!FluidUtility.matchExact(prevStack, getInternalTank().getFluid()))
|
||||||
|
{
|
||||||
|
sendTankUpdate();
|
||||||
|
prevStack = tank.getFluid() != null ? tank.getFluid().copy() : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public FluidTank getInternalTank()
|
||||||
|
{
|
||||||
|
if (this.tank == null)
|
||||||
|
{
|
||||||
|
this.tank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME);
|
||||||
|
}
|
||||||
|
return this.tank;
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,27 +28,13 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||||
*
|
*
|
||||||
* @author DarkGuardsman
|
* @author DarkGuardsman
|
||||||
*/
|
*/
|
||||||
public abstract class TilePressurizedNode extends TileAdvanced implements IPressurizedNode, IPacketReceiverWithID
|
public abstract class TilePressurizedNode extends TileFluidNode implements IPressurizedNode, IPacketReceiverWithID
|
||||||
{
|
{
|
||||||
protected int pressure;
|
|
||||||
|
|
||||||
protected FluidTank tank;
|
|
||||||
protected Object[] connectedBlocks = new Object[6];
|
protected Object[] connectedBlocks = new Object[6];
|
||||||
protected int colorID = 0;
|
|
||||||
|
|
||||||
/** Copy of the tank's content last time it updated */
|
|
||||||
protected FluidStack prevStack = null;
|
|
||||||
|
|
||||||
/** Network used to link all parts together */
|
/** Network used to link all parts together */
|
||||||
protected PressureNetwork network;
|
protected PressureNetwork network;
|
||||||
|
|
||||||
public static final int PACKET_DESCRIPTION = 0;
|
|
||||||
public static final int PACKET_RENDER = 1;
|
|
||||||
public static final int PACKET_TANK = 2;
|
|
||||||
|
|
||||||
/** Bitmask that handles connections for the renderer **/
|
|
||||||
public byte renderSides = 0;
|
|
||||||
|
|
||||||
public TilePressurizedNode()
|
public TilePressurizedNode()
|
||||||
{
|
{
|
||||||
getInternalTank().setCapacity(FluidContainerRegistry.BUCKET_VOLUME);
|
getInternalTank().setCapacity(FluidContainerRegistry.BUCKET_VOLUME);
|
||||||
|
@ -78,22 +64,15 @@ public abstract class TilePressurizedNode extends TileAdvanced implements IPress
|
||||||
@Override
|
@Override
|
||||||
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
|
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
|
||||||
{
|
{
|
||||||
if (!resource.getFluid().isGaseous())
|
int fill = getInternalTank().fill(resource, doFill);
|
||||||
{
|
onFluidChanged();
|
||||||
int fill = getInternalTank().fill(resource, doFill);
|
return fill;
|
||||||
onFluidChanged();
|
|
||||||
return fill;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
|
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
|
||||||
{
|
{
|
||||||
FluidStack drain = getInternalTank().drain(resource.amount, doDrain);
|
return drain(from, resource.amount, doDrain);
|
||||||
onFluidChanged();
|
|
||||||
return drain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -118,7 +97,7 @@ public abstract class TilePressurizedNode extends TileAdvanced implements IPress
|
||||||
|
|
||||||
public void refresh()
|
public void refresh()
|
||||||
{
|
{
|
||||||
if (this.worldObj != null && !this.worldObj.isRemote)
|
if (!this.worldObj.isRemote)
|
||||||
{
|
{
|
||||||
byte previousConnections = renderSides;
|
byte previousConnections = renderSides;
|
||||||
connectedBlocks = new Object[6];
|
connectedBlocks = new Object[6];
|
||||||
|
@ -126,15 +105,16 @@ public abstract class TilePressurizedNode extends TileAdvanced implements IPress
|
||||||
|
|
||||||
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||||
{
|
{
|
||||||
this.validateConnectionSide(new Vector3(this).translate(dir).getTileEntity(worldObj), dir);
|
validateConnectionSide(new Vector3(this).translate(dir).getTileEntity(worldObj), dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Only send packet updates if visuallyConnected changed. */
|
/** Only send packet updates if visuallyConnected changed. */
|
||||||
if (previousConnections != renderSides)
|
if (previousConnections != renderSides)
|
||||||
{
|
{
|
||||||
sendRenderUpdate();
|
sendRenderUpdate();
|
||||||
getNetwork().reconstruct();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getNetwork().reconstruct();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -145,110 +125,7 @@ public abstract class TilePressurizedNode extends TileAdvanced implements IPress
|
||||||
* @param tileEntity - the tileEntity being checked
|
* @param tileEntity - the tileEntity being checked
|
||||||
* @param side - side the connection is too
|
* @param side - side the connection is too
|
||||||
*/
|
*/
|
||||||
public void validateConnectionSide(TileEntity tileEntity, ForgeDirection side)
|
public abstract void validateConnectionSide(TileEntity tileEntity, ForgeDirection side);
|
||||||
{
|
|
||||||
if (!this.worldObj.isRemote)
|
|
||||||
{
|
|
||||||
if (tileEntity instanceof IFluidDistribution)
|
|
||||||
{
|
|
||||||
this.getNetwork().merge(((IPressurizedNode) tileEntity).getNetwork());
|
|
||||||
renderSides = WorldUtility.setEnableSide(renderSides, side, true);
|
|
||||||
connectedBlocks[side.ordinal()] = tileEntity;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readFromNBT(NBTTagCompound nbt)
|
|
||||||
{
|
|
||||||
super.readFromNBT(nbt);
|
|
||||||
this.colorID = nbt.getInteger("subID");
|
|
||||||
getInternalTank().readFromNBT(nbt.getCompoundTag("FluidTank"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeToNBT(NBTTagCompound nbt)
|
|
||||||
{
|
|
||||||
super.writeToNBT(nbt);
|
|
||||||
nbt.setInteger("subID", this.colorID);
|
|
||||||
nbt.setCompoundTag("FluidTank", this.getInternalTank().writeToNBT(new NBTTagCompound()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onReceivePacket(int id, ByteArrayDataInput data, EntityPlayer player, Object... extra)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (this.worldObj.isRemote)
|
|
||||||
{
|
|
||||||
if (id == PACKET_DESCRIPTION)
|
|
||||||
{
|
|
||||||
this.colorID = data.readInt();
|
|
||||||
this.renderSides = data.readByte();
|
|
||||||
this.tank = new FluidTank(data.readInt());
|
|
||||||
this.getInternalTank().readFromNBT(PacketHandler.readNBTTagCompound(data));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (id == PACKET_RENDER)
|
|
||||||
{
|
|
||||||
this.colorID = data.readInt();
|
|
||||||
this.renderSides = data.readByte();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (id == PACKET_TANK)
|
|
||||||
{
|
|
||||||
tank = new FluidTank(data.readInt()).readFromNBT(PacketHandler.readNBTTagCompound(data));
|
|
||||||
pressure = data.readInt();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Packet getDescriptionPacket()
|
|
||||||
{
|
|
||||||
return ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_DESCRIPTION, this, this.colorID, this.renderSides, this.getInternalTank().getCapacity(), this.getInternalTank().writeToNBT(new NBTTagCompound()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendRenderUpdate()
|
|
||||||
{
|
|
||||||
if (!this.worldObj.isRemote)
|
|
||||||
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_RENDER, this, this.colorID, this.renderSides));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendTankUpdate()
|
|
||||||
{
|
|
||||||
if (!this.worldObj.isRemote)
|
|
||||||
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacketWithID(PACKET_TANK, this, getInternalTank().getCapacity(), getInternalTank().writeToNBT(new NBTTagCompound()), pressure), this.worldObj, new Vector3(this), 60);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFluidChanged()
|
|
||||||
{
|
|
||||||
if (!worldObj.isRemote)
|
|
||||||
{
|
|
||||||
if (!FluidUtility.matchExact(prevStack, this.getInternalTank().getFluid()))
|
|
||||||
{
|
|
||||||
sendTankUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
prevStack = tank.getFluid();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public AxisAlignedBB getRenderBoundingBox()
|
|
||||||
{
|
|
||||||
return AxisAlignedBB.getAABBPool().getAABB(this.xCoord, this.yCoord, this.zCoord, this.xCoord + 1, this.yCoord + 1, this.zCoord + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSubID()
|
public int getSubID()
|
||||||
{
|
{
|
||||||
|
@ -305,5 +182,4 @@ public abstract class TilePressurizedNode extends TileAdvanced implements IPress
|
||||||
{
|
{
|
||||||
this.network = network;
|
this.network = network;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue