From 21e340dd9dac7ab03d8edc443d61585beb9869de Mon Sep 17 00:00:00 2001 From: Rseifert Date: Thu, 4 Apr 2013 01:25:44 -0400 Subject: [PATCH] Finished up pump and drain tile code Need to finish the blocks which i'll do later. As well i still need to set the forgeDirection for input output for both tiles. --- src/minecraft/fluidmech/common/FluidMech.java | 2 +- .../fluidmech/common/pump/BlockDrain.java | 14 ++++++ .../{block => pump}/BlockPumpMachine.java | 3 +- .../pump/TileEntityConstructionPump.java | 26 ++++++++++ .../common/pump/TileEntityDrain.java | 48 ++++++++++++++++++- 5 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 src/minecraft/fluidmech/common/pump/BlockDrain.java rename src/minecraft/fluidmech/common/{block => pump}/BlockPumpMachine.java (97%) diff --git a/src/minecraft/fluidmech/common/FluidMech.java b/src/minecraft/fluidmech/common/FluidMech.java index 3f6ff3965..748eeba35 100644 --- a/src/minecraft/fluidmech/common/FluidMech.java +++ b/src/minecraft/fluidmech/common/FluidMech.java @@ -1,6 +1,5 @@ package fluidmech.common; -import fluidmech.common.block.BlockPumpMachine; import fluidmech.common.block.BlockReleaseValve; import fluidmech.common.block.BlockSink; import fluidmech.common.block.BlockTank; @@ -22,6 +21,7 @@ import fluidmech.common.machines.mech.TileEntityRod; import fluidmech.common.machines.pipes.BlockPipe; import fluidmech.common.machines.pipes.TileEntityPipe; import fluidmech.common.machines.pipes.TileEntityPipeWindow; +import fluidmech.common.pump.BlockPumpMachine; import fluidmech.common.pump.TileEntityStarterPump; import hydraulic.api.ColorCode; import hydraulic.helpers.FluidHelper; diff --git a/src/minecraft/fluidmech/common/pump/BlockDrain.java b/src/minecraft/fluidmech/common/pump/BlockDrain.java new file mode 100644 index 000000000..6d639ad70 --- /dev/null +++ b/src/minecraft/fluidmech/common/pump/BlockDrain.java @@ -0,0 +1,14 @@ +package fluidmech.common.pump; + +import net.minecraft.block.material.Material; +import universalelectricity.prefab.block.BlockAdvanced; + +public class BlockDrain extends BlockAdvanced +{ + + public BlockDrain(int id) + { + super(id, Material.iron); + } + +} diff --git a/src/minecraft/fluidmech/common/block/BlockPumpMachine.java b/src/minecraft/fluidmech/common/pump/BlockPumpMachine.java similarity index 97% rename from src/minecraft/fluidmech/common/block/BlockPumpMachine.java rename to src/minecraft/fluidmech/common/pump/BlockPumpMachine.java index fc019c8e5..a7b320914 100644 --- a/src/minecraft/fluidmech/common/block/BlockPumpMachine.java +++ b/src/minecraft/fluidmech/common/pump/BlockPumpMachine.java @@ -1,4 +1,4 @@ -package fluidmech.common.block; +package fluidmech.common.pump; import hydraulic.helpers.MetaGroup; @@ -17,7 +17,6 @@ import universalelectricity.prefab.block.BlockAdvanced; import fluidmech.client.render.BlockRenderHelper; import fluidmech.common.FluidMech; import fluidmech.common.TabFluidMech; -import fluidmech.common.pump.TileEntityStarterPump; public class BlockPumpMachine extends BlockAdvanced { diff --git a/src/minecraft/fluidmech/common/pump/TileEntityConstructionPump.java b/src/minecraft/fluidmech/common/pump/TileEntityConstructionPump.java index c114d3561..52a34b99d 100644 --- a/src/minecraft/fluidmech/common/pump/TileEntityConstructionPump.java +++ b/src/minecraft/fluidmech/common/pump/TileEntityConstructionPump.java @@ -1,9 +1,11 @@ package fluidmech.common.pump; +import hydraulic.fluidnetwork.IFluidNetworkPart; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.liquids.ILiquidTank; import net.minecraftforge.liquids.ITankContainer; +import net.minecraftforge.liquids.LiquidContainerData; import net.minecraftforge.liquids.LiquidContainerRegistry; import net.minecraftforge.liquids.LiquidStack; import net.minecraftforge.liquids.LiquidTank; @@ -25,7 +27,31 @@ public class TileEntityConstructionPump extends TileEntityElectricityRunnable im @Override public void updateEntity() { + if (!worldObj.isRemote && this.wattsReceived >= this.WATTS_PER_TICK) + { + if (this.ticks % 10 == 0) + { + boolean called = false; + TileEntity inputTile = VectorHelper.getTileEntityFromSide(worldObj, new Vector3(this), inputSide); + TileEntity outputTile = VectorHelper.getTileEntityFromSide(worldObj, new Vector3(this), outputSide); + if (inputTile instanceof IFluidNetworkPart) + { + if (outputTile instanceof ITankContainer) + { + for (ITankContainer tank : ((IFluidNetworkPart) inputTile).getNetwork().fluidTanks) + { + if (tank instanceof TileEntityDrain) + { + ((TileEntityDrain) tank).requestLiquid(this, new LiquidStack(-1, LiquidContainerRegistry.BUCKET_VOLUME)); + called = true; + } + } + } + } + + } + } } @Override diff --git a/src/minecraft/fluidmech/common/pump/TileEntityDrain.java b/src/minecraft/fluidmech/common/pump/TileEntityDrain.java index 000ed318f..ba7a9133a 100644 --- a/src/minecraft/fluidmech/common/pump/TileEntityDrain.java +++ b/src/minecraft/fluidmech/common/pump/TileEntityDrain.java @@ -12,12 +12,13 @@ import net.minecraft.block.Block; 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.ITankContainer; import net.minecraftforge.liquids.LiquidStack; import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.VectorHelper; -public class TileEntityDrain extends TileEntityFluidDevice +public class TileEntityDrain extends TileEntityFluidDevice implements ITankContainer { private ForgeDirection face = ForgeDirection.UNKNOWN; private boolean drainSources = true; @@ -58,7 +59,8 @@ public class TileEntityDrain extends TileEntityFluidDevice { for (Entry pump : requestMap.entrySet()) { - if (pump.getValue().isLiquidEqual(stack)) + LiquidStack requestStack = pump.getValue(); + if (requestStack != null && (requestStack.isLiquidEqual(stack) || requestStack.itemID == -1)) { if (((ITankContainer) entity).fill(0, stack, false) >= stack.amount) { @@ -151,4 +153,46 @@ public class TileEntityDrain extends TileEntityFluidDevice } } } + + @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; + } }