Changes for new network code (untested)(Broken)

Most likely i will have to do tons of bug fixes after this. As well the
code for the tank is unfinished so this will not even compile.
This commit is contained in:
Robert Seifert 2013-06-03 02:24:42 -04:00
parent ab1d6a3a81
commit 5a08ed4b1c
13 changed files with 383 additions and 442 deletions

View file

@ -357,17 +357,17 @@ public class ModelLiquidTank extends ModelBase
public void renderMeter(TileEntity tee, float f5) public void renderMeter(TileEntity tee, float f5)
{ {
TileEntity[] conenctedTiles = new TileEntity[6]; int[] conenctedTiles = new int[6];
if (tee instanceof TileEntityTank) if (tee instanceof TileEntityTank)
{ {
conenctedTiles = ((TileEntityTank) tee).connectedBlocks; conenctedTiles = ((TileEntityTank) tee).renderConnection;
} }
// Front // Front
if (conenctedTiles[3] instanceof TileEntityPipe) if (conenctedTiles[3] == 1)
{ {
CCFront.render(f5); CCFront.render(f5);
} }
else else if (conenctedTiles[3] == 0)
{ {
GuageT.render(f5); GuageT.render(f5);
GuageB.render(f5); GuageB.render(f5);
@ -377,11 +377,11 @@ public class ModelLiquidTank extends ModelBase
GuageL.render(f5); GuageL.render(f5);
} }
// back // back
if (conenctedTiles[2] instanceof TileEntityPipe) if (conenctedTiles[2] == 1)
{ {
CCBack.render(f5); CCBack.render(f5);
} }
else else if (conenctedTiles[2] == 0)
{ {
GuageT3.render(f5); GuageT3.render(f5);
Guage3.render(f5); Guage3.render(f5);
@ -391,11 +391,11 @@ public class ModelLiquidTank extends ModelBase
GuageL3.render(f5); GuageL3.render(f5);
} }
// right // right
if (conenctedTiles[4] instanceof TileEntityPipe) if (conenctedTiles[4] == 1)
{ {
CCRight.render(f5); CCRight.render(f5);
} }
else else if (conenctedTiles[4] == 0)
{ {
GuageT4.render(f5); GuageT4.render(f5);
Guage4.render(f5); Guage4.render(f5);
@ -405,11 +405,11 @@ public class ModelLiquidTank extends ModelBase
GuageL4.render(f5); GuageL4.render(f5);
} }
// left // left
if (conenctedTiles[5] instanceof TileEntityPipe) if (conenctedTiles[5] == 1)
{ {
CCLeft.render(f5); CCLeft.render(f5);
} }
else else if (conenctedTiles[3] == 1)
{ {
GuageT2.render(f5); GuageT2.render(f5);
Guage2.render(f5); Guage2.render(f5);

View file

@ -2,9 +2,10 @@ package dark.fluid.common.machines;
import hydraulic.api.ColorCode; import hydraulic.api.ColorCode;
import hydraulic.api.IColorCoded; import hydraulic.api.IColorCoded;
import hydraulic.api.IPipeConnection; import hydraulic.api.INetworkPipe;
import hydraulic.api.ITileConnector;
import hydraulic.api.IReadOut; import hydraulic.api.IReadOut;
import hydraulic.fluidnetwork.IFluidNetworkPart; import hydraulic.network.PipeNetwork;
import hydraulic.prefab.tile.TileEntityFluidDevice; import hydraulic.prefab.tile.TileEntityFluidDevice;
import java.util.ArrayList; import java.util.ArrayList;
@ -19,12 +20,12 @@ import net.minecraftforge.liquids.LiquidContainerRegistry;
import net.minecraftforge.liquids.LiquidStack; import net.minecraftforge.liquids.LiquidStack;
import dark.library.helpers.ConnectionHelper; import dark.library.helpers.ConnectionHelper;
public class TileEntityReleaseValve extends TileEntityFluidDevice implements IPipeConnection, IReadOut public class TileEntityReleaseValve extends TileEntityFluidDevice implements ITileConnector, IReadOut
{ {
public boolean[] allowed = new boolean[ColorCode.values().length - 1]; public boolean[] allowed = new boolean[ColorCode.values().length - 1];
public TileEntity[] connected = new TileEntity[6]; public TileEntity[] connected = new TileEntity[6];
private List<IFluidNetworkPart> output = new ArrayList<IFluidNetworkPart>(); private List<INetworkPipe> output = new ArrayList<INetworkPipe>();
private ITankContainer[] input = new ITankContainer[6]; private ITankContainer[] input = new ITankContainer[6];
public boolean isPowered = false; public boolean isPowered = false;
@ -65,10 +66,10 @@ public class TileEntityReleaseValve extends TileEntityFluidDevice implements IPi
LiquidStack stack = drainedTank.drain(dir.getOpposite(), LiquidContainerRegistry.BUCKET_VOLUME, false); LiquidStack stack = drainedTank.drain(dir.getOpposite(), LiquidContainerRegistry.BUCKET_VOLUME, false);
if (stack != null && stack.amount > 0) if (stack != null && stack.amount > 0)
{ {
IFluidNetworkPart inputPipe = this.findValidPipe(stack); INetworkPipe inputPipe = this.findValidPipe(stack);
if (inputPipe != null) if (inputPipe != null)
{ {
int ammountFilled = inputPipe.getNetwork().addFluidToNetwork((TileEntity) drainedTank, stack, true); int ammountFilled = ((PipeNetwork)inputPipe.getTileNetwork()).addFluidToNetwork((TileEntity) drainedTank, stack, true);
drainedTank.drain(ForgeDirection.UNKNOWN, ammountFilled, true); drainedTank.drain(ForgeDirection.UNKNOWN, ammountFilled, true);
} }
} }
@ -79,10 +80,10 @@ public class TileEntityReleaseValve extends TileEntityFluidDevice implements IPi
} }
/** used to find a valid pipe for filling of the liquid type */ /** used to find a valid pipe for filling of the liquid type */
public IFluidNetworkPart findValidPipe(LiquidStack stack) public INetworkPipe findValidPipe(LiquidStack stack)
{ {
// find normal color selective pipe first // find normal color selective pipe first
for (IFluidNetworkPart pipe : output) for (INetworkPipe pipe : output)
{ {
if (pipe.fill(ForgeDirection.UNKNOWN, stack, false) > 0) if (pipe.fill(ForgeDirection.UNKNOWN, stack, false) > 0)
{ {
@ -140,9 +141,9 @@ public class TileEntityReleaseValve extends TileEntityFluidDevice implements IPi
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
{ {
TileEntity tileEntity = connected[dir.ordinal()]; TileEntity tileEntity = connected[dir.ordinal()];
if (tileEntity instanceof IFluidNetworkPart) if (tileEntity instanceof INetworkPipe)
{ {
IFluidNetworkPart pipe = (IFluidNetworkPart) tileEntity; INetworkPipe pipe = (INetworkPipe) tileEntity;
if (this.canConnect(pipe.getColor())) if (this.canConnect(pipe.getColor()))
{ {
this.output.add(pipe); this.output.add(pipe);
@ -168,9 +169,9 @@ public class TileEntityReleaseValve extends TileEntityFluidDevice implements IPi
} }
@Override @Override
public boolean canPipeConnect(TileEntity entity, ForgeDirection dir) public boolean canTileConnect(TileEntity entity, ForgeDirection dir)
{ {
return entity != null && entity instanceof IColorCoded && this.canConnect(((IColorCoded) entity).getColor()); return entity != null && entity instanceof ITankContainer && entity instanceof IColorCoded && this.canConnect(((IColorCoded) entity).getColor());
} }
@Override @Override

View file

@ -2,263 +2,394 @@ package dark.fluid.common.machines;
import hydraulic.api.ColorCode; import hydraulic.api.ColorCode;
import hydraulic.api.IColorCoded; import hydraulic.api.IColorCoded;
import hydraulic.api.INetworkPipe;
import hydraulic.api.ITileConnector;
import hydraulic.api.IReadOut;
import hydraulic.helpers.FluidHelper; import hydraulic.helpers.FluidHelper;
import hydraulic.network.PipeNetwork;
import hydraulic.prefab.tile.TileEntityFluidStorage; import hydraulic.prefab.tile.TileEntityFluidStorage;
import java.util.Random;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.INetworkManager; import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.liquids.ILiquidTank;
import net.minecraftforge.liquids.ITankContainer; import net.minecraftforge.liquids.ITankContainer;
import net.minecraftforge.liquids.LiquidContainerRegistry; import net.minecraftforge.liquids.LiquidContainerRegistry;
import net.minecraftforge.liquids.LiquidStack; import net.minecraftforge.liquids.LiquidStack;
import universalelectricity.core.block.IConductor; import net.minecraftforge.liquids.LiquidTank;
import universalelectricity.core.block.IConnectionProvider;
import org.bouncycastle.util.Arrays;
import universalelectricity.core.vector.Vector3;
import universalelectricity.core.vector.VectorHelper;
import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.IPacketReceiver;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import dark.fluid.common.FluidMech; import dark.fluid.common.FluidMech;
import dark.fluid.common.pipes.TileEntityPipe;
public class TileEntityTank extends TileEntityFluidStorage implements IPacketReceiver, ITankContainer, IColorCoded, IConnectionProvider public class TileEntityTank extends TileEntityFluidStorage implements ITankContainer, IReadOut, IColorCoded, INetworkPipe, IPacketReceiver
{ {
public TileEntity[] connectedBlocks = { null, null, null, null, null, null }; /* TANK TO FAKE OTHER TILES INTO BELIVING THIS HAS AN INTERNAL STORAGE */
protected LiquidTank fakeTank = new LiquidTank(LiquidContainerRegistry.BUCKET_VOLUME);
/* CURRENTLY CONNECTED TILE ENTITIES TO THIS */
private TileEntity[] connectedBlocks = new TileEntity[6];
public int[] renderConnection = new int[6];
/* RANDOM INSTANCE USED BY THE UPDATE TICK */
private Random random = new Random();
/* NETWORK INSTANCE THAT THIS PIPE USES */
private PipeNetwork pipeNetwork;
private boolean shouldAutoDrain = false;
public enum PacketID
{
PIPE_CONNECTIONS, EXTENTION_CREATE, EXTENTION_UPDATE;
}
@Override @Override
public void initiate() public void initiate()
{ {
this.updateAdjacentConnections(); this.updateNetworkConnections();
} }
@Override
public void updateEntity() public void updateEntity()
{ {
if (this.ticks % (random.nextInt(10) * 4 + 20) == 0) super.updateEntity();
{
updateAdjacentConnections();
}
if (!worldObj.isRemote) if (!worldObj.isRemote)
{ {
int originalVolume = 0; if (ticks % ((int) random.nextInt(5) * 40 + 20) == 0)
if (this.tank.getLiquid() != null)
{ {
originalVolume = this.tank.getLiquid().amount; this.updateNetworkConnections();
if (ticks % (random.nextInt(4) * 5 + 10) >= 0)
{
this.fillTanksAround();
this.tank.drain(this.fillSide(this.getStoredLiquid(), ForgeDirection.DOWN, true), true);
} }
if ((this.tank.getLiquid() == null && originalVolume != 0) || (this.tank.getLiquid() != null && this.tank.getLiquid().amount != originalVolume))
{
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
} }
} }
if (ticks % (random.nextInt(5) * 10 + 20) == 0) @Override
public void invalidate()
{ {
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); if (!this.worldObj.isRemote)
{
this.getTileNetwork().splitNetwork(this.worldObj, this);
} }
super.invalidate();
}
@Override
public void handlePacketData(INetworkManager network, int type, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
PacketID id = PacketID.values()[dataStream.readInt()];
if (this.worldObj.isRemote)
{
if (id == PacketID.PIPE_CONNECTIONS)
{
this.renderConnection[0] = dataStream.readInt();
this.renderConnection[1] = dataStream.readInt();
this.renderConnection[2] = dataStream.readInt();
this.renderConnection[3] = dataStream.readInt();
this.renderConnection[4] = dataStream.readInt();
this.renderConnection[5] = dataStream.readInt();
}
} }
} }
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
if (this.getStoredLiquid() != null) return PacketManager.getPacket(FluidMech.CHANNEL, this, PacketID.PIPE_CONNECTIONS.ordinal(), this.renderConnection[0], this.renderConnection[1], this.renderConnection[2], this.renderConnection[3], this.renderConnection[4], this.renderConnection[5]);
{
return PacketManager.getPacket(FluidMech.CHANNEL, this, this.getStoredLiquid().itemID, this.getStoredLiquid().amount, this.getStoredLiquid().itemMeta);
} }
else
/**
* Reads a tile entity from NBT.
*/
@Override
public void readFromNBT(NBTTagCompound nbt)
{ {
return PacketManager.getPacket(FluidMech.CHANNEL, this, 0, 0, 0); super.readFromNBT(nbt);
LiquidStack liquid = LiquidStack.loadLiquidStackFromNBT(nbt.getCompoundTag("tank"));
if (liquid != null)
{
this.fakeTank.setLiquid(liquid);
} }
} }
public LiquidStack getStoredLiquid() /**
* Writes a tile entity to NBT.
*/
@Override
public void writeToNBT(NBTTagCompound nbt)
{ {
return tank.getLiquid(); super.writeToNBT(nbt);
if (this.fakeTank.containsValidLiquid())
{
nbt.setTag("stored", this.fakeTank.getLiquid().writeToNBT(new NBTTagCompound()));
}
}
/**
* gets the current color mark of the pipe
*/
@Override
public ColorCode getColor()
{
if (this.worldObj == null)
{
return ColorCode.NONE;
}
return ColorCode.get(worldObj.getBlockMetadata(xCoord, yCoord, zCoord));
}
/**
* sets the current color mark of the pipe
*/
@Override
public void setColor(Object cc)
{
ColorCode code = ColorCode.get(cc);
if (!worldObj.isRemote && code != this.getColor())
{
this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, code.ordinal(), 3);
}
} }
@Override @Override
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput data) public String getMeterReading(EntityPlayer user, ForgeDirection side)
{ {
try /* DEBUG CODE ACTIVATERS */
boolean testConnections = false;
boolean testNetwork = false;
boolean testSubs = false;
/* NORMAL OUTPUT */
String string = this.getTileNetwork().pressureProduced + "p " + this.getTileNetwork().getNetworkFluid() + " Extra";
/* DEBUG CODE */
if (testConnections)
{ {
this.tank.setLiquid(new LiquidStack(data.readInt(), data.readInt(), data.readInt())); for (int i = 0; i < 6; i++)
{
string += ":" + this.renderConnection[i] + (this.getNetworkConnections()[i] != null ? "T" : "F");
} }
catch (Exception e) }
if (testNetwork)
{ {
e.printStackTrace(); string += " " + this.getTileNetwork().toString();
System.out.print("Fail reading data for Storage tank \n");
} }
return string;
}
@Override
public int fill(ForgeDirection from, LiquidStack resource, boolean doFill)
{
if (resource == null || !this.getColor().isValidLiquid(resource))
{
return 0;
}
TileEntity tile = VectorHelper.getTileEntityFromSide(this.worldObj, new Vector3(this), from);
return this.getTileNetwork().addFluidToNetwork(tile, resource, doFill);
} }
@Override @Override
public int fill(int tankIndex, LiquidStack resource, boolean doFill) public int fill(int tankIndex, LiquidStack resource, boolean doFill)
{ {
if (!this.getColor().isValidLiquid(resource)) if (tankIndex != 0 || resource == null || !this.getColor().isValidLiquid(resource))
{ {
return 0; return 0;
} }
if (this.isFull()) return this.getTileNetwork().addFluidToNetwork(this, resource, doFill);
{
TileEntity tank = worldObj.getBlockTileEntity(xCoord, yCoord + 1, zCoord);
if (tank instanceof TileEntityTank)
{
return ((TileEntityTank) tank).fill(tankIndex, resource, doFill);
}
}
return super.fill(tankIndex, resource, doFill);
} }
@Override @Override
public LiquidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) public LiquidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
{ {
if (from != ForgeDirection.DOWN) return null;
}
@Override
public LiquidStack drain(int tankIndex, int maxDrain, boolean doDrain)
{ {
return super.drain(from, maxDrain, doDrain); return null;
}
@Override
public ILiquidTank[] getTanks(ForgeDirection direction)
{
return new ILiquidTank[] { this.fakeTank };
}
@Override
public ILiquidTank getTank(ForgeDirection direction, LiquidStack type)
{
if (this.getColor().isValidLiquid(type))
{
return this.fakeTank;
} }
return null; return null;
} }
/** Cause this TE to trade liquid with the Tanks around it to level off */ /**
public void fillTanksAround() * Checks to make sure the connection is valid to the tileEntity
*
* @param tileEntity - the tileEntity being checked
* @param side - side the connection is too
*/
public void validateConnectionSide(TileEntity tileEntity, ForgeDirection side)
{ {
if (this.tank.getLiquid() == null || this.tank.getLiquid().amount <= 0) if (!this.worldObj.isRemote && tileEntity != null)
{ {
return; if (tileEntity instanceof ITileConnector)
{
if (((ITileConnector) tileEntity).canPipeConnect(this, side))
{
if (tileEntity instanceof INetworkPipe)
{
if (((INetworkPipe) tileEntity).getColor() == this.getColor())
{
this.getTileNetwork().merge(((INetworkPipe) tileEntity).getTileNetwork());
connectedBlocks[side.ordinal()] = tileEntity;
} }
TileEntity[] ents = this.getAdjacentConnections();
/* SUM VOLUME UP FOR ALL CONNECTED TANKS */
int commonVol = this.tank.getLiquid().amount;
int equalVol = commonVol;
int tanks = 1;
for (int i = 2; i < 6; i++)
{
if (ents[i] instanceof TileEntityTank && ((TileEntityTank) ents[i]).getColor() == this.getColor())
{
tanks++;
if (((TileEntityTank) ents[i]).tank.getLiquid() != null)
{
commonVol += ((TileEntityTank) ents[i]).tank.getLiquid().amount;
}
}
}
equalVol = commonVol / tanks;
for (int i = 2; i < 6; i++)
{
if (this.tank.getLiquid() == null || this.tank.getLiquid().amount <= equalVol)
{
break;
}
if (ents[i] instanceof TileEntityTank && ((TileEntityTank) ents[i]).getColor() == this.getColor() && !((TileEntityTank) ents[i]).isFull())
{
LiquidStack target = ((TileEntityTank) ents[i]).tank.getLiquid();
LiquidStack filling = this.tank.getLiquid();
if (target == null)
{
filling = FluidHelper.getStack(this.tank.getLiquid(), equalVol);
}
else if (target.amount < equalVol)
{
filling = FluidHelper.getStack(this.tank.getLiquid(), equalVol - target.amount);
} }
else else
{ {
filling = null; connectedBlocks[side.ordinal()] = tileEntity;
} }
int f = ((TileEntityTank) ents[i]).tank.fill(filling, true);
this.tank.drain(f, true);
} }
}
else if (tileEntity instanceof IColorCoded)
{
if (this.getColor() == ColorCode.NONE || this.getColor() == ((IColorCoded) tileEntity).getColor())
{
connectedBlocks[side.ordinal()] = tileEntity;
}
}
else if (tileEntity instanceof ITankContainer)
{
connectedBlocks[side.ordinal()] = tileEntity;
}
} }
} }
@Override @Override
public void setColor(Object obj) public void updateNetworkConnections()
{ {
ColorCode code = ColorCode.get(obj);
if (!worldObj.isRemote && code != this.getColor() && (this.tank != null || code.isValidLiquid(this.tank.getLiquid()))) if (this.worldObj != null && !this.worldObj.isRemote)
{ {
this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, code.ordinal() & 15, 3);
this.updateAdjacentConnections(); int[] previousConnections = this.renderConnection.clone();
this.connectedBlocks = new TileEntity[6];
for (int i = 0; i < 6; i++)
{
ForgeDirection dir = ForgeDirection.getOrientation(i);
this.validateConnectionSide(this.worldObj.getBlockTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ), dir);
this.renderConnection[i] = this.connectedBlocks[i] instanceof TileEntityTank ? 2 : (this.connectedBlocks[i] instanceof INetworkPipe ? 1 : this.connectedBlocks[i] != null ? 3 : 0);
if (this.connectedBlocks[i] instanceof TileEntityTank)
{
ITankContainer tankContainer = (ITankContainer) this.connectedBlocks[i];
this.getTileNetwork().addEntity(tankContainer);
} }
} }
@Override /**
public ColorCode getColor() * Only send packet updates if visuallyConnected changed.
*/
if (!Arrays.areEqual(previousConnections, this.renderConnection))
{ {
return ColorCode.get(worldObj.getBlockMetadata(xCoord, yCoord, zCoord)); this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
}
} }
@Override
public boolean canConnect(ForgeDirection direction)
{
TileEntity entity = worldObj.getBlockTileEntity(xCoord, yCoord, zCoord);
return entity != null && entity.getClass() == this.getClass() && ((IColorCoded) entity).getColor() == this.getColor();
} }
@Override @Override
public boolean canPipeConnect(TileEntity entity, ForgeDirection dir) public boolean canPipeConnect(TileEntity entity, ForgeDirection dir)
{ {
return entity != null && entity instanceof IColorCoded && (((IColorCoded) entity).getColor() == ColorCode.NONE || ((IColorCoded) entity).getColor() == this.getColor()); return entity != null;
} }
@Override @Override
public TileEntity[] getAdjacentConnections() public double getMaxPressure(ForgeDirection side)
{
return 350;
}
@Override
public PipeNetwork getTileNetwork()
{
if (this.pipeNetwork == null)
{
this.setNetwork(new PipeNetwork(this.getColor(), this));
}
return this.pipeNetwork;
}
@Override
public void setNetwork(PipeNetwork network)
{
this.pipeNetwork = network;
}
@Override
public int getMaxFlowRate(LiquidStack stack, ForgeDirection side)
{
return FluidHelper.getDefaultFlowRate(stack) * 3;
}
@Override
public boolean onOverPressure(Boolean damageAllowed)
{
if (damageAllowed)
{
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, yCoord, 0, 0);
return true;
}
return false;
}
@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);
}
@Override
public TileEntity[] getNetworkConnections()
{ {
return this.connectedBlocks; return this.connectedBlocks;
} }
@Override @Override
public void updateAdjacentConnections() public int getTankSize()
{ {
TileEntity[] originalConnection = this.connectedBlocks; return LiquidContainerRegistry.BUCKET_VOLUME * 3;
this.connectedBlocks = new TileEntity[6];
for (int side = 0; side < 6; side++)
{
ForgeDirection direction = ForgeDirection.getOrientation(side);
TileEntity entity = worldObj.getBlockTileEntity(xCoord + direction.offsetX, yCoord + direction.offsetY, zCoord + direction.offsetZ);
if (entity != null && !(entity instanceof IConductor))
{
if (!(entity instanceof IColorCoded) || (entity instanceof IColorCoded && (((IColorCoded) entity).getColor() == ColorCode.NONE || ((IColorCoded) entity).getColor() == this.getColor())))
{
if (entity instanceof IConnectionProvider && ((IConnectionProvider) entity).canConnect(direction))
{
connectedBlocks[side] = entity;
}
else if (entity instanceof ITankContainer)
{
connectedBlocks[side] = entity;
}
}
}
}
if (!originalConnection.equals(this.connectedBlocks))
{
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
}
} }
@Override @Override
public int getTankSize() public ILiquidTank getTank()
{ {
return (LiquidContainerRegistry.BUCKET_VOLUME * 4); return this.fakeTank;
}
@Override
public void setTankContent(LiquidStack stack)
{
this.fakeTank.setLiquid(stack);
} }
} }

View file

@ -1,7 +1,7 @@
package dark.fluid.common.pipes; package dark.fluid.common.pipes;
import hydraulic.api.FluidRestrictionHandler; import hydraulic.api.FluidRestrictionHandler;
import hydraulic.fluidnetwork.IFluidNetworkPart; import hydraulic.api.INetworkPipe;
import java.util.List; import java.util.List;
@ -61,9 +61,9 @@ public class BlockPipe extends BlockAdvanced
TileEntity tileEntity = world.getBlockTileEntity(x, y, z); TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof IFluidNetworkPart) if (tileEntity instanceof INetworkPipe)
{ {
((IFluidNetworkPart) tileEntity).updateAdjacentConnections(); ((INetworkPipe) tileEntity).updateNetworkConnections();
} }
} }
@ -72,9 +72,9 @@ public class BlockPipe extends BlockAdvanced
{ {
TileEntity tileEntity = world.getBlockTileEntity(x, y, z); TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity instanceof IFluidNetworkPart) if (tileEntity instanceof INetworkPipe)
{ {
((IFluidNetworkPart) tileEntity).updateAdjacentConnections(); ((INetworkPipe) tileEntity).updateNetworkConnections();
} }
} }

View file

@ -2,6 +2,7 @@ package dark.fluid.common.pipes;
import hydraulic.api.ColorCode; import hydraulic.api.ColorCode;
import hydraulic.helpers.FluidHelper; import hydraulic.helpers.FluidHelper;
import hydraulic.network.PipeNetwork;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.liquids.ILiquidTank; import net.minecraftforge.liquids.ILiquidTank;
@ -20,7 +21,7 @@ public class TileEntityGenericPipe extends TileEntityPipe
return 0; return 0;
} }
TileEntity tile = VectorHelper.getTileEntityFromSide(this.worldObj, new Vector3(this), from); TileEntity tile = VectorHelper.getTileEntityFromSide(this.worldObj, new Vector3(this), from);
return this.getNetwork().addFluidToNetwork(tile, resource, doFill); return ((PipeNetwork) this.getTileNetwork()).addFluidToNetwork(tile, resource, doFill);
} }
@Override @Override
@ -30,7 +31,7 @@ public class TileEntityGenericPipe extends TileEntityPipe
{ {
return 0; return 0;
} }
return this.getNetwork().addFluidToNetwork(this, resource, doFill); return ((PipeNetwork) this.getTileNetwork()).addFluidToNetwork(this, resource, doFill);
} }
@Override @Override
@ -40,7 +41,7 @@ public class TileEntityGenericPipe extends TileEntityPipe
} }
@Override @Override
public boolean canPipeConnect(TileEntity entity, ForgeDirection dir) public boolean canTileConnect(TileEntity entity, ForgeDirection dir)
{ {
Vector3 vec = new Vector3(entity); Vector3 vec = new Vector3(entity);
int meta = vec.getBlockMetadata(this.worldObj); int meta = vec.getBlockMetadata(this.worldObj);
@ -51,13 +52,7 @@ public class TileEntityGenericPipe extends TileEntityPipe
return meta == this.getBlockMetadata(); return meta == this.getBlockMetadata();
} }
return super.canPipeConnect(entity, dir); return super.canTileConnect(entity, dir);
}
@Override
public int getTankSize()
{
return LiquidContainerRegistry.BUCKET_VOLUME;
} }
@Override @Override

View file

@ -2,11 +2,12 @@ package dark.fluid.common.pipes;
import hydraulic.api.ColorCode; import hydraulic.api.ColorCode;
import hydraulic.api.IColorCoded; import hydraulic.api.IColorCoded;
import hydraulic.api.IPipeConnection; import hydraulic.api.INetworkPipe;
import hydraulic.api.ITileConnector;
import hydraulic.api.IReadOut; import hydraulic.api.IReadOut;
import hydraulic.fluidnetwork.HydraulicNetwork;
import hydraulic.fluidnetwork.IFluidNetworkPart;
import hydraulic.helpers.FluidHelper; import hydraulic.helpers.FluidHelper;
import hydraulic.network.PipeNetwork;
import hydraulic.network.TileNetwork;
import java.io.IOException; import java.io.IOException;
import java.util.Random; import java.util.Random;
@ -40,7 +41,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import dark.fluid.common.FluidMech; import dark.fluid.common.FluidMech;
import dark.fluid.common.pipes.addon.IPipeExtention; import dark.fluid.common.pipes.addon.IPipeExtention;
public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer, IReadOut, IColorCoded, IFluidNetworkPart, IPacketReceiver public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer, IReadOut, IColorCoded, INetworkPipe, IPacketReceiver
{ {
/* TANK TO FAKE OTHER TILES INTO BELIVING THIS HAS AN INTERNAL STORAGE */ /* TANK TO FAKE OTHER TILES INTO BELIVING THIS HAS AN INTERNAL STORAGE */
@ -52,7 +53,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
/* RANDOM INSTANCE USED BY THE UPDATE TICK */ /* RANDOM INSTANCE USED BY THE UPDATE TICK */
private Random random = new Random(); private Random random = new Random();
/* NETWORK INSTANCE THAT THIS PIPE USES */ /* NETWORK INSTANCE THAT THIS PIPE USES */
private HydraulicNetwork pipeNetwork; private PipeNetwork pipeNetwork;
private boolean shouldAutoDrain = false; private boolean shouldAutoDrain = false;
@ -64,7 +65,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
@Override @Override
public void initiate() public void initiate()
{ {
this.updateAdjacentConnections(); this.updateNetworkConnections();
if (this.subEntities[0] == null) if (this.subEntities[0] == null)
{ {
// this.addNewExtention(0, TileEntityPipeWindow.class); // this.addNewExtention(0, TileEntityPipeWindow.class);
@ -95,7 +96,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
{ {
if (ticks % ((int) random.nextInt(5) * 40 + 20) == 0) if (ticks % ((int) random.nextInt(5) * 40 + 20) == 0)
{ {
this.updateAdjacentConnections(); this.updateNetworkConnections();
} }
if (ticks % ((int) random.nextInt(5) * 60 + 20) == 0) if (ticks % ((int) random.nextInt(5) * 60 + 20) == 0)
{ {
@ -139,7 +140,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
{ {
if (!this.worldObj.isRemote) if (!this.worldObj.isRemote)
{ {
this.getNetwork().splitNetwork(this.worldObj, this); this.getTileNetwork().splitNetwork(this.worldObj, this);
} }
super.invalidate(); super.invalidate();
@ -355,19 +356,19 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
boolean testSubs = false; boolean testSubs = false;
/* NORMAL OUTPUT */ /* NORMAL OUTPUT */
String string = this.getNetwork().pressureProduced + "p " + this.getNetwork().getStorageFluid() + " Extra"; String string = ((PipeNetwork)this.getTileNetwork()).pressureProduced + "p " + ((PipeNetwork)this.getTileNetwork()).getNetworkFluid() + " Extra";
/* DEBUG CODE */ /* DEBUG CODE */
if (testConnections) if (testConnections)
{ {
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ {
string += ":" + (this.renderConnection[i] ? "T" : "F") + (this.getAdjacentConnections()[i] != null ? "T" : "F"); string += ":" + (this.renderConnection[i] ? "T" : "F") + (this.getNetworkConnections()[i] != null ? "T" : "F");
} }
} }
if (testNetwork) if (testNetwork)
{ {
string += " " + this.getNetwork().toString(); string += " " + this.getTileNetwork().toString();
} }
if (testSubs) if (testSubs)
{ {
@ -397,7 +398,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
return 0; return 0;
} }
TileEntity tile = VectorHelper.getTileEntityFromSide(this.worldObj, new Vector3(this), from); TileEntity tile = VectorHelper.getTileEntityFromSide(this.worldObj, new Vector3(this), from);
return this.getNetwork().addFluidToNetwork(tile, resource, doFill); return ((PipeNetwork)this.getTileNetwork()).addFluidToNetwork(tile, resource, doFill);
} }
@Override @Override
@ -407,7 +408,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
{ {
return 0; return 0;
} }
return this.getNetwork().addFluidToNetwork(this, resource, doFill); return ((PipeNetwork)this.getTileNetwork()).addFluidToNetwork(this, resource, doFill);
} }
@Override @Override
@ -453,15 +454,15 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
connectedBlocks[side.ordinal()] = null; connectedBlocks[side.ordinal()] = null;
return; return;
} }
if (tileEntity instanceof IPipeConnection) if (tileEntity instanceof ITileConnector)
{ {
if (((IPipeConnection) tileEntity).canPipeConnect(this, side)) if (((ITileConnector) tileEntity).canTileConnect(this, side))
{ {
if (tileEntity instanceof IFluidNetworkPart) if (tileEntity instanceof INetworkPipe)
{ {
if (((IFluidNetworkPart) tileEntity).getColor() == this.getColor()) if (((INetworkPipe) tileEntity).getColor() == this.getColor())
{ {
this.getNetwork().mergeNetworks(((IFluidNetworkPart) tileEntity).getNetwork()); this.getTileNetwork().merge(((INetworkPipe) tileEntity).getTileNetwork());
connectedBlocks[side.ordinal()] = tileEntity; connectedBlocks[side.ordinal()] = tileEntity;
} }
} }
@ -486,7 +487,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
} }
@Override @Override
public void updateAdjacentConnections() public void updateNetworkConnections()
{ {
if (this.worldObj != null && !this.worldObj.isRemote) if (this.worldObj != null && !this.worldObj.isRemote)
@ -502,17 +503,17 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
this.renderConnection[i] = this.connectedBlocks[i] != null; this.renderConnection[i] = this.connectedBlocks[i] != null;
if (this.renderConnection[i] && this.connectedBlocks[i] instanceof ITankContainer && !(this.connectedBlocks[i] instanceof IFluidNetworkPart)) if (this.renderConnection[i] && this.connectedBlocks[i] instanceof ITankContainer && !(this.connectedBlocks[i] instanceof INetworkPipe))
{ {
ITankContainer tankContainer = (ITankContainer) this.connectedBlocks[i]; ITankContainer tankContainer = (ITankContainer) this.connectedBlocks[i];
this.getNetwork().addEntity(tankContainer); this.getTileNetwork().addEntity(this.connectedBlocks[i], false);
/* LITTLE TRICK TO AUTO DRAIN TANKS ON EACH CONNECTION UPDATE */ /* LITTLE TRICK TO AUTO DRAIN TANKS ON EACH CONNECTION UPDATE */
LiquidStack stack = tankContainer.drain(dir, LiquidContainerRegistry.BUCKET_VOLUME, false); LiquidStack stack = tankContainer.drain(dir, LiquidContainerRegistry.BUCKET_VOLUME, false);
if (stack != null && stack.amount > 0) if (stack != null && stack.amount > 0)
{ {
int fill = this.getNetwork().addFluidToNetwork((TileEntity) tankContainer, stack, true); int fill = ((PipeNetwork)this.getTileNetwork()).addFluidToNetwork((TileEntity) tankContainer, stack, true);
tankContainer.drain(dir, fill, true); tankContainer.drain(dir, fill, true);
} }
} }
@ -529,7 +530,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
} }
@Override @Override
public boolean canPipeConnect(TileEntity entity, ForgeDirection dir) public boolean canTileConnect(TileEntity entity, ForgeDirection dir)
{ {
return entity != null && this.subEntities[dir.ordinal()] == null; return entity != null && this.subEntities[dir.ordinal()] == null;
} }
@ -541,19 +542,22 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
} }
@Override @Override
public HydraulicNetwork getNetwork() public TileNetwork getTileNetwork()
{ {
if (this.pipeNetwork == null) if (this.pipeNetwork == null)
{ {
this.setNetwork(new HydraulicNetwork(this.getColor(), this)); this.setTileNetwork(new PipeNetwork(this.getColor(), this));
} }
return this.pipeNetwork; return this.pipeNetwork;
} }
@Override @Override
public void setNetwork(HydraulicNetwork network) public void setTileNetwork(TileNetwork network)
{ {
this.pipeNetwork = network; if (network instanceof PipeNetwork)
{
this.pipeNetwork = (PipeNetwork) network;
}
} }
@Override @Override
@ -580,19 +584,13 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
} }
@Override @Override
public TileEntity[] getAdjacentConnections() public TileEntity[] getNetworkConnections()
{ {
return this.connectedBlocks; return this.connectedBlocks;
} }
@Override @Override
public int getTankSize() public LiquidTank getTank()
{
return LiquidContainerRegistry.BUCKET_VOLUME * 3;
}
@Override
public ILiquidTank getTank()
{ {
return this.fakeTank; return this.fakeTank;
} }
@ -600,8 +598,11 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer
@Override @Override
public void setTankContent(LiquidStack stack) public void setTankContent(LiquidStack stack)
{ {
if(this.fakeTank == null)
{
this.fakeTank = new LiquidTank(LiquidContainerRegistry.BUCKET_VOLUME);
}
this.fakeTank.setLiquid(stack); this.fakeTank.setLiquid(stack);
} }
} }

View file

@ -1,5 +1,6 @@
package dark.fluid.common.pipes.addon; package dark.fluid.common.pipes.addon;
import hydraulic.network.PipeNetwork;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.INetworkManager; import net.minecraft.network.INetworkManager;
@ -11,7 +12,6 @@ import com.google.common.io.ByteArrayDataInput;
import dark.fluid.client.render.pipe.RenderPipeWindow; import dark.fluid.client.render.pipe.RenderPipeWindow;
import dark.fluid.common.pipes.TileEntityPipe; import dark.fluid.common.pipes.TileEntityPipe;
public class TileEntityPipeWindow extends TileEntityPipeExtention public class TileEntityPipeWindow extends TileEntityPipeExtention
{ {
@ -23,13 +23,14 @@ public class TileEntityPipeWindow extends TileEntityPipeExtention
@Override @Override
public void updateEntity() public void updateEntity()
{ {
// TODO replace the updateEntity method with updateAddon(TileEntityPipe pipe)
super.updateEntity(); super.updateEntity();
if (!worldObj.isRemote) if (!worldObj.isRemote)
{ {
if (pipe != null) if (pipe != null)
{ {
stack = pipe.getNetwork().getTank().getLiquid(); stack = ((PipeNetwork) pipe.getTileNetwork()).getNetworkTank().getLiquid();
worldObj.setBlockMetadataWithNotify(xCoord, yCoord + 1, yCoord, 0, 0); worldObj.setBlockMetadataWithNotify(xCoord, yCoord + 1, yCoord, 0, 0);
} }
} }

View file

@ -1,6 +1,6 @@
package dark.fluid.common.pipes.tele; package dark.fluid.common.pipes.tele;
import hydraulic.fluidnetwork.IFluidNetworkPart; import hydraulic.api.INetworkPipe;
import java.util.List; import java.util.List;
@ -9,7 +9,7 @@ import java.util.List;
* cause that network to seak out all other connected network and try to merge them * cause that network to seak out all other connected network and try to merge them
* *
*/ */
public interface INetworkConnector extends IFluidNetworkPart public interface INetworkConnector extends INetworkPipe
{ {
/** /**
* gets the pipes frequency * gets the pipes frequency

View file

@ -1,192 +0,0 @@
package dark.fluid.common.pipes.tele;
import hydraulic.api.ColorCode;
import hydraulic.fluidnetwork.HydraulicNetwork;
import hydraulic.prefab.tile.TileEntityFluidDevice;
import java.util.HashMap;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.liquids.ILiquidTank;
import net.minecraftforge.liquids.LiquidContainerRegistry;
import net.minecraftforge.liquids.LiquidStack;
public class TileEntityEndPipe extends TileEntityFluidDevice implements INetworkConnector
{
public static HashMap<TileEntityEndPipe, Integer> linkMap = new HashMap<TileEntityEndPipe, Integer>();
private HydraulicNetwork network;
@Override
public String getMeterReading(EntityPlayer user, ForgeDirection side)
{
return null;
}
@Override
public boolean canPipeConnect(TileEntity entity, ForgeDirection dir)
{
return false;
}
@Override
public double getMaxPressure(ForgeDirection side)
{
return 0;
}
@Override
public int getMaxFlowRate(LiquidStack stack, ForgeDirection side)
{
return LiquidContainerRegistry.BUCKET_VOLUME * 10;
}
@Override
public HydraulicNetwork getNetwork()
{
if(network == null)
{
network = new HydraulicNetwork(this.getColor(), this);
}
return network;
}
@Override
public void setNetwork(HydraulicNetwork network)
{
this.network = network;
}
@Override
public boolean onOverPressure(Boolean damageAllowed)
{
return false;
}
@Override
public int getTankSize()
{
return 0;
}
@Override
public ILiquidTank getTank()
{
return null;
}
@Override
public void setTankContent(LiquidStack stack)
{
// TODO Auto-generated method stub
}
@Override
public ColorCode getColor()
{
return ColorCode.NONE;
}
@Override
public void setColor(Object obj)
{
// TODO Auto-generated method stub
}
@Override
public TileEntity[] getAdjacentConnections()
{
// TODO Auto-generated method stub
return null;
}
@Override
public void updateAdjacentConnections()
{
// TODO Auto-generated method stub
}
@Override
public int fill(ForgeDirection from, LiquidStack resource, boolean doFill)
{
// TODO Auto-generated method stub
return 0;
}
@Override
public int fill(int tankIndex, LiquidStack resource, boolean doFill)
{
// TODO Auto-generated method stub
return 0;
}
@Override
public LiquidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
{
// TODO Auto-generated method stub
return null;
}
@Override
public LiquidStack drain(int tankIndex, int maxDrain, boolean doDrain)
{
// TODO Auto-generated method stub
return null;
}
@Override
public ILiquidTank[] getTanks(ForgeDirection direction)
{
// TODO Auto-generated method stub
return null;
}
@Override
public ILiquidTank getTank(ForgeDirection direction, LiquidStack type)
{
// TODO Auto-generated method stub
return null;
}
@Override
public int getFrequency()
{
// TODO Auto-generated method stub
return 0;
}
@Override
public void setFrequency(int id)
{
// TODO Auto-generated method stub
}
@Override
public String getOwner()
{
// TODO Auto-generated method stub
return null;
}
@Override
public void setOwner(String username)
{
// TODO Auto-generated method stub
}
@Override
public List<INetworkConnector> getConnectedParts()
{
// TODO Auto-generated method stub
return null;
}
}

View file

@ -1,6 +1,6 @@
package dark.fluid.common.pump; package dark.fluid.common.pump;
import hydraulic.fluidnetwork.HydraulicNetworkHelper; import hydraulic.network.HydraulicNetworkHelper;
import java.util.List; import java.util.List;

View file

@ -1,8 +1,9 @@
package dark.fluid.common.pump; package dark.fluid.common.pump;
import hydraulic.api.IPipeConnection; import hydraulic.api.INetworkPipe;
import hydraulic.fluidnetwork.HydraulicNetworkHelper; import hydraulic.api.ITileConnector;
import hydraulic.fluidnetwork.IFluidNetworkPart; import hydraulic.network.FluidNetwork;
import hydraulic.network.HydraulicNetworkHelper;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.liquids.ILiquidTank; import net.minecraftforge.liquids.ILiquidTank;
@ -16,7 +17,7 @@ import universalelectricity.core.vector.VectorHelper;
import dark.library.helpers.MetaGroup; import dark.library.helpers.MetaGroup;
import dark.library.machine.TileEntityRunnableMachine; import dark.library.machine.TileEntityRunnableMachine;
public class TileEntityConstructionPump extends TileEntityRunnableMachine implements ITankContainer, IPipeConnection public class TileEntityConstructionPump extends TileEntityRunnableMachine implements ITankContainer, ITileConnector
{ {
/* ENERGY PER TICK TO TRY TO PUMP */ /* ENERGY PER TICK TO TRY TO PUMP */
public static final double WATTS_PER_TICK = 100; public static final double WATTS_PER_TICK = 100;
@ -57,7 +58,9 @@ public class TileEntityConstructionPump extends TileEntityRunnableMachine implem
super.updateEntity(); super.updateEntity();
if (!worldObj.isRemote) if (!worldObj.isRemote)
{ {
if (this.ticks % 10 == 0 && this.wattsReceived >= this.WATTS_PER_TICK) // TODO add electric Drain if (this.ticks % 10 == 0 && this.wattsReceived >= this.WATTS_PER_TICK) // TODO add
// electric
// Drain
{ {
this.wattsReceived -= this.WATTS_PER_TICK; this.wattsReceived -= this.WATTS_PER_TICK;
this.rotation += 1; this.rotation += 1;
@ -69,11 +72,11 @@ public class TileEntityConstructionPump extends TileEntityRunnableMachine implem
TileEntity inputTile = VectorHelper.getTileEntityFromSide(worldObj, new Vector3(this), getFacing(true)); TileEntity inputTile = VectorHelper.getTileEntityFromSide(worldObj, new Vector3(this), getFacing(true));
TileEntity outputTile = VectorHelper.getTileEntityFromSide(worldObj, new Vector3(this), getFacing(false)); TileEntity outputTile = VectorHelper.getTileEntityFromSide(worldObj, new Vector3(this), getFacing(false));
if (inputTile instanceof IFluidNetworkPart) if (inputTile instanceof INetworkPipe && ((INetworkPipe) inputTile).getTileNetwork() instanceof FluidNetwork)
{ {
if (outputTile instanceof ITankContainer) if (outputTile instanceof ITankContainer)
{ {
for (ITankContainer tank : ((IFluidNetworkPart) inputTile).getNetwork().fluidTanks) for (ITankContainer tank : ((FluidNetwork) ((INetworkPipe) inputTile).getTileNetwork()).fluidTanks)
{ {
if (tank instanceof TileEntityDrain) if (tank instanceof TileEntityDrain)
{ {
@ -160,9 +163,9 @@ public class TileEntityConstructionPump extends TileEntityRunnableMachine implem
} }
@Override @Override
public boolean canPipeConnect(TileEntity entity, ForgeDirection dir) public boolean canTileConnect(TileEntity entity, ForgeDirection dir)
{ {
return dir == this.getFacing(false) || dir == this.getFacing(true); return entity instanceof ITankContainer && (dir == this.getFacing(false) || dir == this.getFacing(true));
} }
@Override @Override

View file

@ -1,7 +1,7 @@
package dark.fluid.common.pump; package dark.fluid.common.pump;
import hydraulic.api.IDrain; import hydraulic.api.IDrain;
import hydraulic.fluidnetwork.IFluidNetworkPart; import hydraulic.api.INetworkPipe;
import hydraulic.helpers.FluidHelper; import hydraulic.helpers.FluidHelper;
import hydraulic.prefab.tile.TileEntityFluidDevice; import hydraulic.prefab.tile.TileEntityFluidDevice;
@ -13,6 +13,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -213,7 +214,7 @@ public class TileEntityDrain extends TileEntityFluidDevice implements ITankConta
{ {
requests.remove(); requests.remove();
} }
else if (pipe instanceof IFluidNetworkPart && !((IFluidNetworkPart) pipe).getNetwork().isConnected(entry.getKey())) else if (pipe instanceof INetworkPipe && !((INetworkPipe) pipe).getTileNetwork().isPartOfNetwork(entry.getKey()))
{ {
requests.remove(); requests.remove();
} }
@ -439,7 +440,7 @@ public class TileEntityDrain extends TileEntityFluidDevice implements ITankConta
} }
@Override @Override
public boolean canPipeConnect(TileEntity entity, ForgeDirection dir) public boolean canTileConnect(TileEntity entity, ForgeDirection dir)
{ {
return dir == this.getFacing(); return dir == this.getFacing();
} }

View file

@ -2,7 +2,7 @@ package dark.fluid.common.pump;
import hydraulic.api.ColorCode; import hydraulic.api.ColorCode;
import hydraulic.api.IColorCoded; import hydraulic.api.IColorCoded;
import hydraulic.api.IPipeConnection; import hydraulic.api.ITileConnector;
import hydraulic.api.IReadOut; import hydraulic.api.IReadOut;
import hydraulic.helpers.FluidHelper; import hydraulic.helpers.FluidHelper;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -23,7 +23,7 @@ import com.google.common.io.ByteArrayDataInput;
import dark.library.helpers.MetaGroup; import dark.library.helpers.MetaGroup;
import dark.library.machine.TileEntityRunnableMachine; import dark.library.machine.TileEntityRunnableMachine;
public class TileEntityStarterPump extends TileEntityRunnableMachine implements IPacketReceiver, IReadOut, IPipeConnection public class TileEntityStarterPump extends TileEntityRunnableMachine implements IPacketReceiver, IReadOut, ITileConnector
{ {
public final double WATTS_PER_TICK = (400 / 20); public final double WATTS_PER_TICK = (400 / 20);
private double percentPumped = 0.0; private double percentPumped = 0.0;
@ -198,9 +198,9 @@ public class TileEntityStarterPump extends TileEntityRunnableMachine implements
} }
@Override @Override
public boolean canPipeConnect(TileEntity entity, ForgeDirection dir) public boolean canTileConnect(TileEntity entity, ForgeDirection dir)
{ {
if (dir == this.pipeConnection.getOpposite()) if (dir == this.pipeConnection.getOpposite() && entity instanceof ITankContainer)
{ {
return entity != null && entity instanceof IColorCoded && (((IColorCoded) entity).getColor() == ColorCode.NONE || ((IColorCoded) entity).getColor() == this.color); return entity != null && entity instanceof IColorCoded && (((IColorCoded) entity).getColor() == ColorCode.NONE || ((IColorCoded) entity).getColor() == this.color);
} }