diff options
author | MuXiu1997 <MuXiu1997@Gmail.com> | 2022-04-17 04:19:12 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-16 22:19:12 +0200 |
commit | bb4cec9a73ec6c50199de6c48119ddd85e23b013 (patch) | |
tree | 39e472e4d098fc345f6dfa1c90ab90e14620f14b /src/main/java | |
parent | 03d97ccca84a82da23a42657c1832b687fc33cd1 (diff) | |
download | GT5-Unofficial-bb4cec9a73ec6c50199de6c48119ddd85e23b013.tar.gz GT5-Unofficial-bb4cec9a73ec6c50199de6c48119ddd85e23b013.tar.bz2 GT5-Unofficial-bb4cec9a73ec6c50199de6c48119ddd85e23b013.zip |
Refuse to allow multiple controllers on a single block (#1023)
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java b/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java index 2cb3f607e2..7d9a109895 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java @@ -9,14 +9,17 @@ import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IMachineProgress; import gregtech.api.net.GT_Packet_TileEntityCover; import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_CoverBehaviorBase; import gregtech.api.util.GT_Utility; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; public class GT_Cover_ControlsWork extends GT_CoverBehavior { @Override public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) { + if (!makeSureOnlyOne(aSide, aTileEntity)) return 0; if (aTileEntity instanceof IMachineProgress) { IMachineProgress machine = (IMachineProgress) aTileEntity; if (aCoverVariable < 2) { @@ -41,6 +44,21 @@ public class GT_Cover_ControlsWork extends GT_CoverBehavior { return aCoverVariable; } + /** + * Make sure there is only one GT_Cover_ControlsWork on the aTileEntity + * @return true if the cover is the first (side) one + **/ + private boolean makeSureOnlyOne(byte aSide, ICoverable aTileEntity) { + for (byte i = 0; i < 6; i++) { + if (aTileEntity.getCoverBehaviorAtSideNew(i) instanceof GT_Cover_ControlsWork && i < aSide) { + aTileEntity.dropCover(aSide, aSide, true); + aTileEntity.markDirty(); + return false; + } + } + return true; + } + @Override public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { return true; @@ -108,6 +126,17 @@ public class GT_Cover_ControlsWork extends GT_CoverBehavior { return 1; } + @Override + public boolean isCoverPlaceable(byte aSide, ItemStack aStack, ICoverable aTileEntity) { + if (!super.isCoverPlaceable(aSide, aStack, aTileEntity)) return false; + for (byte i = 0; i < 6; i++) { + if (aTileEntity.getCoverBehaviorAtSideNew(i) instanceof GT_Cover_ControlsWork) { + return false; + } + } + return true; + } + /** * GUI Stuff */ |