aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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
*/