aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/interfaces/covers
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/interfaces/covers')
-rw-r--r--src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java b/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java
new file mode 100644
index 0000000000..d4cd1e9ec2
--- /dev/null
+++ b/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java
@@ -0,0 +1,30 @@
+package gregtech.api.interfaces.covers;
+
+import net.minecraftforge.common.util.ForgeDirection;
+
+import gregtech.api.interfaces.tileentity.ICoverable;
+import gregtech.api.interfaces.tileentity.IMachineProgress;
+
+/**
+ * Marker interface for covers that might control whether the work can start on a {@link IMachineProgress}.
+ */
+public interface IControlsWorkCover {
+
+ /**
+ * Make sure there is only one GT_Cover_ControlsWork on the aTileEntity TODO this is a migration thing. Remove this
+ * after 2.3.0 is released.
+ *
+ * @return true if the cover is the first (side) one
+ **/
+ static boolean makeSureOnlyOne(ForgeDirection aMySide, ICoverable aTileEntity) {
+ for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
+ if (aTileEntity.getCoverBehaviorAtSideNew(side) instanceof IControlsWorkCover
+ && side.ordinal() < aMySide.ordinal()) {
+ aTileEntity.dropCover(side, side, true);
+ aTileEntity.markDirty();
+ return false;
+ }
+ }
+ return true;
+ }
+}