diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2022-01-25 01:22:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-24 18:22:25 +0100 |
commit | 9dede511829d0593b90e59cb8e498c78f3e2e3d8 (patch) | |
tree | ea807fa6f94377a91948176f2872d3134958fdd8 /src | |
parent | 0bb36cbb957053d4d91053d152ebddd6f0ed1009 (diff) | |
download | GT5-Unofficial-9dede511829d0593b90e59cb8e498c78f3e2e3d8.tar.gz GT5-Unofficial-9dede511829d0593b90e59cb8e498c78f3e2e3d8.tar.bz2 GT5-Unofficial-9dede511829d0593b90e59cb8e498c78f3e2e3d8.zip |
Add conditional mode to fluid regulator (#890)
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java | 318 |
1 files changed, 221 insertions, 97 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java b/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java index 0138530d69..857e1af016 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java @@ -1,22 +1,32 @@ package gregtech.common.covers; +import com.google.common.io.ByteArrayDataInput; import gregtech.api.enums.GT_Values; import gregtech.api.gui.GT_GUICover; import gregtech.api.gui.widgets.GT_GuiIcon; import gregtech.api.gui.widgets.GT_GuiIconButton; import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; import gregtech.api.interfaces.tileentity.ICoverable; -import gregtech.api.net.GT_Packet_TileEntityCover; -import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.net.GT_Packet_TileEntityCoverNew; +import gregtech.api.util.GT_CoverBehaviorBase; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidHandler; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + /** * Cover variable * <pre> @@ -31,7 +41,7 @@ import net.minecraftforge.fluids.IFluidHandler; * The stored bits will be flipped bitwise if speed is negative. * This way, `0` means 1tick interval, while `-1` means 1 tick interval as well, preserving the legacy behavior. */ -public class GT_Cover_FluidRegulator extends GT_CoverBehavior { +public class GT_Cover_FluidRegulator extends GT_CoverBehaviorBase<GT_Cover_FluidRegulator.FluidRegulatorData> { private static final int SPEED_LENGTH = 20; private static final int TICK_RATE_LENGTH = Integer.SIZE - SPEED_LENGTH - 1; private static final int TICK_RATE_MIN = 1; @@ -42,20 +52,20 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { private boolean allowFluid = false; public GT_Cover_FluidRegulator(int aTransferRate) { + super(FluidRegulatorData.class); if (aTransferRate > (-1 >>> (Integer.SIZE - SPEED_LENGTH))) throw new IllegalArgumentException("aTransferRate too big: " + aTransferRate); this.mTransferRate = aTransferRate; } - private static int getSpeed(int aCoverVariable) { - // positive or 0 -> interval bits need to be set to zero - // negative -> interval bits need to be set to one - return aCoverVariable >= 0 ? aCoverVariable & ~TICK_RATE_BITMASK : aCoverVariable | TICK_RATE_BITMASK; + @Override + public FluidRegulatorData createDataObject(int aLegacyData) { + return new FluidRegulatorData(aLegacyData); } - private static int getTickRate(int aCoverVariable) { - // range: TICK_RATE_MIN ~ TICK_RATE_MAX - return ((Math.abs(aCoverVariable) & TICK_RATE_BITMASK) >>> SPEED_LENGTH) + TICK_RATE_MIN; + @Override + public FluidRegulatorData createDataObject() { + return new FluidRegulatorData(); } private static int generateNewCoverVariable(int aFlowRate, int aTickRate) { @@ -65,15 +75,14 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { } @Override - public boolean isRedstoneSensitive(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) { - return false; + protected boolean isRedstoneSensitiveImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity, long aTimer) { + return aCoverVariable.condition.isRedstoneSensitive(); } @Override - public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, + protected FluidRegulatorData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity, long aTimer) { - int tSpeed = getSpeed(aCoverVariable); - if (tSpeed == 0) { + if (aCoverVariable.speed == 0 || !aCoverVariable.condition.isAllowedToWork(aSide, aCoverID, aTileEntity)) { return aCoverVariable; } if ((aTileEntity instanceof IFluidHandler)) { @@ -81,7 +90,7 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { IFluidHandler tTank2; ForgeDirection directionFrom; ForgeDirection directionTo; - if (tSpeed > 0) { + if (aCoverVariable.speed > 0) { tTank2 = aTileEntity.getITankContainerAtSide(aSide); tTank1 = (IFluidHandler) aTileEntity; directionFrom = ForgeDirection.getOrientation(aSide); @@ -94,7 +103,7 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { } if (tTank1 != null && tTank2 != null) { allowFluid = true; - FluidStack tLiquid = tTank1.drain(directionFrom, Math.abs(tSpeed), false); + FluidStack tLiquid = tTank1.drain(directionFrom, Math.abs(aCoverVariable.speed), false); if (tLiquid != null) { tLiquid = tLiquid.copy(); tLiquid.amount = tTank2.fill(directionTo, tLiquid, false); @@ -108,10 +117,10 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { return aCoverVariable; } - private int adjustSpeed(EntityPlayer aPlayer, int aCoverVariable, int scale) { - int tSpeed = getSpeed(aCoverVariable); + private void adjustSpeed(EntityPlayer aPlayer, FluidRegulatorData aCoverVariable, int scale) { + int tSpeed = aCoverVariable.speed; tSpeed += scale; - int tTickRate = getTickRate(aCoverVariable); + int tTickRate = aCoverVariable.tickRate; if (Math.abs(tSpeed) > mTransferRate * tTickRate) { tSpeed = mTransferRate * tTickRate * (tSpeed > 0 ? 1 : -1); GT_Utility.sendChatToPlayer(aPlayer, trans("316", "Pump speed limit reached!")); @@ -123,91 +132,78 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { GT_Utility.sendChatToPlayer(aPlayer, String.format(trans("207", "Pump speed: %dL every %d ticks, %.2f L/sec on average"), tSpeed, tTickRate, tSpeed * 20d / tTickRate)); } - return generateNewCoverVariable(tSpeed, tTickRate); } @Override - public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, + public FluidRegulatorData onCoverScrewdriverClickImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { if (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) { - return adjustSpeed(aPlayer, aCoverVariable, aPlayer.isSneaking() ? 256 : 16); - } else { - return adjustSpeed(aPlayer, aCoverVariable, aPlayer.isSneaking() ? -256 : -16); - } - } - - @Override - protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { - if (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) { - aCoverVariable.set(adjustSpeed(aPlayer, aCoverVariable.get(), 1)); + adjustSpeed(aPlayer, aCoverVariable, aPlayer.isSneaking() ? 256 : 16); } else { - aCoverVariable.set(adjustSpeed(aPlayer, aCoverVariable.get(), -1)); + adjustSpeed(aPlayer, aCoverVariable, aPlayer.isSneaking() ? -256 : -16); } - aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); - return true; + return aCoverVariable; } @Override - @SuppressWarnings("deprecation") - public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, + protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { if (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) { - aCoverVariable = adjustSpeed(aPlayer, aCoverVariable, 1); + adjustSpeed(aPlayer, aCoverVariable, 1); } else { - aCoverVariable = adjustSpeed(aPlayer, aCoverVariable, -1); + adjustSpeed(aPlayer, aCoverVariable, -1); } - aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); return true; } @Override - public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + public boolean letsRedstoneGoInImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + public boolean letsEnergyInImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + public boolean letsEnergyOutImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) { + public boolean letsItemsInImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, int aSlot, ICoverable aTileEntity) { return true; } @Override - public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) { + public boolean letsItemsOutImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, int aSlot, ICoverable aTileEntity) { return true; } @Override - public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + public boolean letsFluidInImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { return allowFluid; } @Override - public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + public boolean letsFluidOutImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { return allowFluid; } @Override - public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + protected boolean alwaysLookConnectedImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity) { return true; } @Override - public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return getTickRate(aCoverVariable); + protected int getTickRateImpl(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity) { + return aCoverVariable.tickRate; } /** @@ -220,46 +216,164 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { } @Override - public Object getClientGUI(byte aSide, int aCoverID, int coverData, ICoverable aTileEntity) { + public Object getClientGUIImpl(byte aSide, int aCoverID, FluidRegulatorData coverData, ICoverable aTileEntity, EntityPlayer aPlayer, World aWorld) { return new GT_Cover_FluidRegulator.GUI(aSide, aCoverID, coverData, aTileEntity); } + public enum Conditional { + Always(false) { + @Override + boolean isAllowedToWork(byte aSide, int aCoverID, ICoverable aTileEntity) { + return true; + } + }, + Conditional(true) { + @Override + boolean isAllowedToWork(byte aSide, int aCoverID, ICoverable aTileEntity) { + return !(aTileEntity instanceof IMachineProgress) || ((IMachineProgress) aTileEntity).isAllowedToWork(); + } + }, + Inverted(true) { + @Override + boolean isAllowedToWork(byte aSide, int aCoverID, ICoverable aTileEntity) { + return !(aTileEntity instanceof IMachineProgress) || !((IMachineProgress) aTileEntity).isAllowedToWork(); + } + }; + + static final Conditional[] VALUES = values(); + private final boolean redstoneSensitive; + + Conditional(boolean redstoneSensitive) { + this.redstoneSensitive = redstoneSensitive; + } + + abstract boolean isAllowedToWork(byte aSide, int aCoverID, ICoverable aTileEntity); + boolean isRedstoneSensitive() { + return redstoneSensitive; + } + } + + public static class FluidRegulatorData implements ISerializableObject { + private int tickRate; + private int speed; + private Conditional condition; + + private static int getSpeed(int aCoverVariable) { + // positive or 0 -> interval bits need to be set to zero + // negative -> interval bits need to be set to one + return aCoverVariable >= 0 ? aCoverVariable & ~TICK_RATE_BITMASK : aCoverVariable | TICK_RATE_BITMASK; + } + + private static int getTickRate(int aCoverVariable) { + // range: TICK_RATE_MIN ~ TICK_RATE_MAX + return ((Math.abs(aCoverVariable) & TICK_RATE_BITMASK) >>> SPEED_LENGTH) + TICK_RATE_MIN; + } + + public FluidRegulatorData() { + this(0); + } + public FluidRegulatorData(int legacy) { + this(getTickRate(legacy), Math.abs(getSpeed(legacy)), Conditional.Always); + } + + public FluidRegulatorData(int tickRate, int speed, Conditional condition) { + this.tickRate = tickRate; + this.speed = speed; + this.condition = condition; + } + + @Nonnull + @Override + public ISerializableObject copy() { + return new FluidRegulatorData(tickRate, speed, condition); + } + + @Nonnull + @Override + public NBTBase saveDataToNBT() { + NBTTagCompound tag = new NBTTagCompound(); + tag.setInteger("mSpeed", speed); + tag.setInteger("mTickRate", tickRate); + tag.setByte("mCondition", (byte) condition.ordinal()); + return tag; + } + + @Override + public void writeToByteBuf(ByteBuf aBuf) { + aBuf.writeInt(tickRate).writeInt(speed).writeByte(condition.ordinal()); + } + + @Override + public void loadDataFromNBT(NBTBase aNBT) { + if (!(aNBT instanceof NBTTagCompound)) return; // not very good... + NBTTagCompound tag = (NBTTagCompound) aNBT; + speed = tag.getInteger("mSpeed"); + tickRate = tag.getInteger("mTickRate"); + condition = Conditional.VALUES[tag.getByte("mCondition")]; + } + + @Nonnull + @Override + public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, @Nullable EntityPlayerMP aPlayer) { + return new FluidRegulatorData(aBuf.readInt(), aBuf.readInt(), Conditional.VALUES[aBuf.readUnsignedByte()]); + } + + public int getTickRate() { + return tickRate; + } + + public void setTickRate(int tickRate) { + this.tickRate = tickRate; + } + + public int getSpeed() { + return speed; + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public Conditional getCondition() { + return condition; + } + + public void setCondition(Conditional condition) { + this.condition = condition; + } + } + private class GUI extends GT_GUICover { private final byte side; private final int coverID; private GT_GuiIntegerTextBox tBox, lBox; - private int coverVariable; + private FluidRegulatorData coverVariable; private static final int startX = 10; private static final int startY = 25; private static final int spaceX = 18; private static final int spaceY = 18; - private int speed; - private boolean export; - private int tickRate; - private boolean warn = false; - public GUI(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + public GUI(byte aSide, int aCoverID, FluidRegulatorData aCoverVariable, ICoverable aTileEntity) { super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID)); this.side = aSide; this.coverID = aCoverID; this.coverVariable = aCoverVariable; - int speed = getSpeed(coverVariable); - this.speed = Math.abs(speed); - this.export = speed >= 0; - this.tickRate = getTickRate(coverVariable); new GT_GuiIconButton(this, 0, startX + spaceX * 0, startY + spaceY * 0, GT_GuiIcon.EXPORT).setTooltipText(trans("006", "Export")); new GT_GuiIconButton(this, 1, startX + spaceX * 1, startY + spaceY * 0, GT_GuiIcon.IMPORT).setTooltipText(trans("007", "Import")); + new GT_GuiIconButton(this, 2, startX + spaceX * 0, startY + spaceY * 1, GT_GuiIcon.CHECKMARK).setTooltipText(trans("224","Always On")); + new GT_GuiIconButton(this, 3, startX + spaceX * 1, startY + spaceY * 1, GT_GuiIcon.REDSTONE_ON).setTooltipText(trans("225","Active with Redstone Signal")); + new GT_GuiIconButton(this, 4, startX + spaceX * 2, startY + spaceY * 1, GT_GuiIcon.REDSTONE_OFF).setTooltipText(trans("226","Inactive with Redstone Signal")); - tBox = new GT_GuiIntegerTextBox(this, 2, startX + spaceX * 0, startY + spaceY * 1 + 2, spaceX * 4 - 3, 12); - tBox.setText(String.valueOf(this.speed)); + tBox = new GT_GuiIntegerTextBox(this, 2, startX + spaceX * 0, startY + spaceY * 2 + 2, spaceX * 4 - 3, 12); + tBox.setText(String.valueOf(this.coverVariable.speed)); tBox.setMaxStringLength(10); - lBox = new GT_GuiIntegerTextBox(this, 3, startX + spaceX * 0, startY + spaceY * 2 + 2, spaceX * 4 - 3, 12); - lBox.setText(String.valueOf(this.tickRate)); + lBox = new GT_GuiIntegerTextBox(this, 3, startX + spaceX * 5, startY + spaceY * 2 + 2, spaceX * 2 - 3, 12); + lBox.setText(String.valueOf(this.coverVariable.tickRate)); lBox.setMaxStringLength(4); } @@ -267,12 +381,10 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { public void drawExtras(int mouseX, int mouseY, float parTicks) { super.drawExtras(mouseX, mouseY, parTicks); this.getFontRenderer().drawString(trans("229", "Import/Export"), startX + spaceX * 4, 4 + startY + spaceY * 0, 0xFF555555); - this.getFontRenderer().drawString(trans("208", " L"), startX + spaceX * 4, 4 + startY + spaceY * 1, 0xFF555555); - this.getFontRenderer().drawString(trans("209", " ticks"), startX + spaceX * 4, 4 + startY + spaceY * 2, 0xFF555555); - if (warn) - this.getFontRenderer().drawString(String.format(trans("210", "Average: %.2f L/sec"), speed * 20d / tickRate), startX + spaceX * 0, 4 + startY + spaceY * 3, 0xffff0000); - else - this.getFontRenderer().drawString(String.format(trans("210", "Average: %.2f L/sec"), speed * 20d / tickRate), startX + spaceX * 0, 4 + startY + spaceY * 3, 0xFF555555); + this.getFontRenderer().drawString(trans("229", "Conditional"), startX + spaceX * 4, 4 + startY + spaceY * 1, 0xFF555555); + this.getFontRenderer().drawString(trans("208", " L"), startX + spaceX * 4, 4 + startY + spaceY * 2, 0xFF555555); + this.getFontRenderer().drawString(trans("209", " ticks"), startX + spaceX * 7, 4 + startY + spaceY * 2, 0xFF555555); + this.getFontRenderer().drawString(String.format(trans("210", "Average: %.2f L/sec"), coverVariable.tickRate == 0 ? 0 : coverVariable.speed * 20d / coverVariable.tickRate), startX + spaceX * 0, 4 + startY + spaceY * 3, warn ? 0xffff0000 : 0xff555555); } @Override @@ -283,10 +395,23 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { @Override public void buttonClicked(GuiButton btn){ - if (getClickable(btn.id)){ - coverVariable = getNewCoverVariable(btn.id); - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); + if (!btn.enabled) + return; + switch (btn.id) { + case 0: + case 1: + coverVariable.speed *= -1; + break; + case 2: + case 3: + case 4: + coverVariable.condition = Conditional.VALUES[btn.id - 2]; + break; + default: + // not right, but we carry on + return; } + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); updateButtons(); } @@ -327,36 +452,39 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { warn = false; if (box.id == 2) { - if (i > (long) mTransferRate * tickRate) { - i = (long) mTransferRate * tickRate; + long maxFlow = (long) mTransferRate * GT_Utility.clamp(coverVariable.tickRate, TICK_RATE_MIN, TICK_RATE_MAX); + if (i > maxFlow) { + i = maxFlow; warn = true; } else if (i < 0) { i = 0; } - speed = (int) i; + if (coverVariable.speed == i) return; + coverVariable.speed = (int) i; } else if (box.id == 3) { if (i > TICK_RATE_MAX) { - i = tickRate; - } else if (speed > mTransferRate * i) { - i = Math.min(TICK_RATE_MAX, (speed + mTransferRate - 1) / mTransferRate); + i = coverVariable.tickRate; + } else if (coverVariable.speed > mTransferRate * i) { + i = Math.min(TICK_RATE_MAX, (coverVariable.speed + mTransferRate - 1) / mTransferRate); warn = true; } else if (i < TICK_RATE_MIN) { i = 1; } - tickRate = (int) i; + if (coverVariable.tickRate == i) return; + coverVariable.tickRate = (int) i; } box.setText(String.valueOf(i)); + updateButtons(); - coverVariable = getNewCoverVariable(2); - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); } @Override public void resetTextBox(GT_GuiIntegerTextBox box) { if (box.id == 2) - box.setText(String.valueOf(speed)); + box.setText(String.valueOf(coverVariable.speed)); else if (box.id == 3) - box.setText(String.valueOf(tickRate)); + box.setText(String.valueOf(coverVariable.tickRate)); } private void updateButtons(){ @@ -367,22 +495,18 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { } } - private int getNewCoverVariable(int id) { + private boolean getClickable(int id) { switch (id) { case 0: - export = true; - return generateNewCoverVariable(speed, tickRate); + return coverVariable.speed < 0; case 1: - export = false; - return generateNewCoverVariable(-speed, tickRate); + return coverVariable.speed > 0; case 2: - return generateNewCoverVariable(export ? speed : -speed, tickRate); + case 3: + case 4: + return coverVariable.condition != Conditional.VALUES[id - 2]; } - return coverVariable; - } - - private boolean getClickable(int id) { - return (id == 0) ^ (export); + return false; } } } |