diff --git a/src/main/java/mekanism/client/gui/GuiElectricPump.java b/src/main/java/mekanism/client/gui/GuiElectricPump.java index 833b42e9a..91f28ea2d 100644 --- a/src/main/java/mekanism/client/gui/GuiElectricPump.java +++ b/src/main/java/mekanism/client/gui/GuiElectricPump.java @@ -39,6 +39,7 @@ public class GuiElectricPump extends GuiMekanism return tileEntity.fluidTank; } }, GuiGauge.Type.STANDARD, this, guiLocation, 6, 13)); + guiElements.add(new GuiRedstoneControl(this, tileEntity, guiLocation)); } diff --git a/src/main/java/mekanism/common/tile/TileEntityElectricPump.java b/src/main/java/mekanism/common/tile/TileEntityElectricPump.java index 58145494b..aa29e1555 100644 --- a/src/main/java/mekanism/common/tile/TileEntityElectricPump.java +++ b/src/main/java/mekanism/common/tile/TileEntityElectricPump.java @@ -12,6 +12,7 @@ import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.api.IConfigurable; import mekanism.common.ISustainedTank; +import mekanism.common.IRedstoneControl; import mekanism.common.Mekanism; import mekanism.common.util.ChargeUtils; import mekanism.common.util.FluidContainerUtils; @@ -36,7 +37,7 @@ import net.minecraftforge.fluids.IFluidHandler; import io.netty.buffer.ByteBuf; -public class TileEntityElectricPump extends TileEntityElectricBlock implements IFluidHandler, ISustainedTank, IConfigurable +public class TileEntityElectricPump extends TileEntityElectricBlock implements IFluidHandler, ISustainedTank, IConfigurable, IRedstoneControl { /** This pump's tank */ public FluidTank fluidTank = new FluidTank(10000); @@ -44,6 +45,9 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I /** The nodes that have full sources near them or in them */ public Set recurringNodes = new HashSet(); + /** This machine's current RedstoneControl type. */ + public RedstoneControl controlType = RedstoneControl.DISABLED; + public TileEntityElectricPump() { super("ElectricPump", 10000); @@ -118,11 +122,18 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I } } - if(!worldObj.isRemote && worldObj.getWorldTime() % 20 == 0) + if(!worldObj.isRemote && ticker % 20 == 0) { - if(getEnergy() >= Mekanism.electricPumpUsage && (fluidTank.getFluid() == null || fluidTank.getFluid().amount+FluidContainerRegistry.BUCKET_VOLUME <= fluidTank.getCapacity())) + if(MekanismUtils.canFunction(this)) { - suck(true); + if(getEnergy() >= Mekanism.electricPumpUsage && (fluidTank.getFluid() == null || fluidTank.getFluid().amount + FluidContainerRegistry.BUCKET_VOLUME <= fluidTank.getCapacity())) + { + suck(true); + } + } + else + { + ticker--; } } @@ -237,6 +248,7 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I else { fluidTank.setFluid(null); } + controlType = RedstoneControl.values()[dataStream.readInt()]; MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); } @@ -255,6 +267,7 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I else { data.add(0); } + data.add(controlType.ordinal()); return data; } @@ -274,6 +287,8 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I nbtTags.setTag("fluidTank", fluidTank.writeToNBT(new NBTTagCompound())); } + nbtTags.setInteger("controlType", controlType.ordinal()); + NBTTagList recurringList = new NBTTagList(); for(Coord4D wrapper : recurringNodes) @@ -299,6 +314,11 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I fluidTank.readFromNBT(nbtTags.getCompoundTag("fluidTank")); } + if(nbtTags.hasKey("controlType")) + { + controlType = RedstoneControl.values()[nbtTags.getInteger("controlType")]; + } + if(nbtTags.hasKey("recurringNodes")) { NBTTagList tagList = nbtTags.getTagList("recurringNodes", NBT.TAG_COMPOUND); @@ -456,4 +476,17 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I { return false; } + + @Override + public RedstoneControl getControlType() + { + return controlType; + } + + @Override + public void setControlType(RedstoneControl type) + { + controlType = type; + MekanismUtils.saveChunk(this); + } }