aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuXiu1997 <MuXiu1997@Gmail.com>2022-04-17 04:19:12 +0800
committerGitHub <noreply@github.com>2022-04-16 22:19:12 +0200
commitbb4cec9a73ec6c50199de6c48119ddd85e23b013 (patch)
tree39e472e4d098fc345f6dfa1c90ab90e14620f14b
parent03d97ccca84a82da23a42657c1832b687fc33cd1 (diff)
downloadGT5-Unofficial-bb4cec9a73ec6c50199de6c48119ddd85e23b013.tar.gz
GT5-Unofficial-bb4cec9a73ec6c50199de6c48119ddd85e23b013.tar.bz2
GT5-Unofficial-bb4cec9a73ec6c50199de6c48119ddd85e23b013.zip
Refuse to allow multiple controllers on a single block (#1023)
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java29
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
*/