aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/nei
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-05-28 18:21:42 +0900
committerGitHub <noreply@github.com>2023-05-28 11:21:42 +0200
commit9af741164c5b59c4d884aba48ebeab7db5442d63 (patch)
tree5bbbbb5feb67db85aefd5f21fd885a1a0ab71c78 /src/main/java/gregtech/nei
parent24ad01683a084bebd26152b803ee19bffe78213c (diff)
downloadGT5-Unofficial-9af741164c5b59c4d884aba48ebeab7db5442d63.tar.gz
GT5-Unofficial-9af741164c5b59c4d884aba48ebeab7db5442d63.tar.bz2
GT5-Unofficial-9af741164c5b59c4d884aba48ebeab7db5442d63.zip
Add new mode for void protection & implement it for more multis (#2024)
* Void protection improvements * Rename methods: isXXXButtonEnabled -> supportsXXX * Adjust texture for forbidden * Add MultiBlockFeatureSupportDumpers * Fix oversight in PCBFactory * Revert void protection support for PA * Rename class: ControllerWithButtons -> ControllerWithOptionalFeatures
Diffstat (limited to 'src/main/java/gregtech/nei')
-rw-r--r--src/main/java/gregtech/nei/NEI_GT_Config.java8
-rw-r--r--src/main/java/gregtech/nei/dumper/BatchModeSupportDumper.java10
-rw-r--r--src/main/java/gregtech/nei/dumper/InputSeparationSupportDumper.java10
-rw-r--r--src/main/java/gregtech/nei/dumper/MultiBlockFeatureSupportDumper.java46
-rw-r--r--src/main/java/gregtech/nei/dumper/RecipeLockingSupportDumper.java10
-rw-r--r--src/main/java/gregtech/nei/dumper/VoidProtectionSupportDumper.java10
6 files changed, 94 insertions, 0 deletions
diff --git a/src/main/java/gregtech/nei/NEI_GT_Config.java b/src/main/java/gregtech/nei/NEI_GT_Config.java
index 6be13c9695..324b4cf303 100644
--- a/src/main/java/gregtech/nei/NEI_GT_Config.java
+++ b/src/main/java/gregtech/nei/NEI_GT_Config.java
@@ -19,9 +19,13 @@ import gregtech.api.util.GT_Recipe;
import gregtech.common.items.GT_MetaGenerated_Item_01;
import gregtech.common.items.GT_MetaGenerated_Item_02;
import gregtech.common.items.GT_MetaGenerated_Item_03;
+import gregtech.nei.dumper.BatchModeSupportDumper;
+import gregtech.nei.dumper.InputSeparationSupportDumper;
import gregtech.nei.dumper.MaterialDumper;
import gregtech.nei.dumper.MetaItemDumper;
import gregtech.nei.dumper.MetaTileEntityDumper;
+import gregtech.nei.dumper.RecipeLockingSupportDumper;
+import gregtech.nei.dumper.VoidProtectionSupportDumper;
public class NEI_GT_Config implements IConfigureNEI {
@@ -76,6 +80,10 @@ public class NEI_GT_Config implements IConfigureNEI {
API.addOption(new MetaItemDumper(GT_MetaGenerated_Item_01.INSTANCE, "metaitem01"));
API.addOption(new MetaItemDumper(GT_MetaGenerated_Item_02.INSTANCE, "metaitem02"));
API.addOption(new MetaItemDumper(GT_MetaGenerated_Item_03.INSTANCE, "metaitem03"));
+ API.addOption(new VoidProtectionSupportDumper());
+ API.addOption(new InputSeparationSupportDumper());
+ API.addOption(new BatchModeSupportDumper());
+ API.addOption(new RecipeLockingSupportDumper());
}
sIsAdded = true;
}
diff --git a/src/main/java/gregtech/nei/dumper/BatchModeSupportDumper.java b/src/main/java/gregtech/nei/dumper/BatchModeSupportDumper.java
new file mode 100644
index 0000000000..ea0168073a
--- /dev/null
+++ b/src/main/java/gregtech/nei/dumper/BatchModeSupportDumper.java
@@ -0,0 +1,10 @@
+package gregtech.nei.dumper;
+
+import gregtech.api.interfaces.modularui.ControllerWithOptionalFeatures;
+
+public class BatchModeSupportDumper extends MultiBlockFeatureSupportDumper {
+
+ public BatchModeSupportDumper() {
+ super("batch_mode", ControllerWithOptionalFeatures::supportsBatchMode);
+ }
+}
diff --git a/src/main/java/gregtech/nei/dumper/InputSeparationSupportDumper.java b/src/main/java/gregtech/nei/dumper/InputSeparationSupportDumper.java
new file mode 100644
index 0000000000..5b0d293827
--- /dev/null
+++ b/src/main/java/gregtech/nei/dumper/InputSeparationSupportDumper.java
@@ -0,0 +1,10 @@
+package gregtech.nei.dumper;
+
+import gregtech.api.interfaces.modularui.ControllerWithOptionalFeatures;
+
+public class InputSeparationSupportDumper extends MultiBlockFeatureSupportDumper {
+
+ public InputSeparationSupportDumper() {
+ super("input_separation", ControllerWithOptionalFeatures::supportsInputSeparation);
+ }
+}
diff --git a/src/main/java/gregtech/nei/dumper/MultiBlockFeatureSupportDumper.java b/src/main/java/gregtech/nei/dumper/MultiBlockFeatureSupportDumper.java
new file mode 100644
index 0000000000..dc378ff9ad
--- /dev/null
+++ b/src/main/java/gregtech/nei/dumper/MultiBlockFeatureSupportDumper.java
@@ -0,0 +1,46 @@
+package gregtech.nei.dumper;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Function;
+
+import codechicken.nei.config.DataDumper;
+import gregtech.api.GregTech_API;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.modularui.ControllerWithOptionalFeatures;
+
+public abstract class MultiBlockFeatureSupportDumper extends DataDumper {
+
+ private final Function<ControllerWithOptionalFeatures, Boolean> isFeatureSupported;
+
+ public MultiBlockFeatureSupportDumper(String name,
+ Function<ControllerWithOptionalFeatures, Boolean> isFeatureSupported) {
+ super("tools.dump.gt5u." + name);
+ this.isFeatureSupported = isFeatureSupported;
+ }
+
+ @Override
+ public String[] header() {
+ return new String[] { "className" };
+ }
+
+ @Override
+ public Iterable<String[]> dump(int mode) {
+ List<String[]> list = new ArrayList<>();
+ for (int i = 1; i < GregTech_API.METATILEENTITIES.length; i++) {
+ IMetaTileEntity mte = GregTech_API.METATILEENTITIES[i];
+ if (!(mte instanceof ControllerWithOptionalFeatures controller)) continue;
+ if (!isFeatureSupported.apply(controller)) {
+ list.add(
+ new String[] { controller.getClass()
+ .getName() });
+ }
+ }
+ return list;
+ }
+
+ @Override
+ public int modeCount() {
+ return 1;
+ }
+}
diff --git a/src/main/java/gregtech/nei/dumper/RecipeLockingSupportDumper.java b/src/main/java/gregtech/nei/dumper/RecipeLockingSupportDumper.java
new file mode 100644
index 0000000000..05deba6c39
--- /dev/null
+++ b/src/main/java/gregtech/nei/dumper/RecipeLockingSupportDumper.java
@@ -0,0 +1,10 @@
+package gregtech.nei.dumper;
+
+import gregtech.api.interfaces.modularui.ControllerWithOptionalFeatures;
+
+public class RecipeLockingSupportDumper extends MultiBlockFeatureSupportDumper {
+
+ public RecipeLockingSupportDumper() {
+ super("recipe_locking", ControllerWithOptionalFeatures::supportsSingleRecipeLocking);
+ }
+}
diff --git a/src/main/java/gregtech/nei/dumper/VoidProtectionSupportDumper.java b/src/main/java/gregtech/nei/dumper/VoidProtectionSupportDumper.java
new file mode 100644
index 0000000000..b48efb2cdc
--- /dev/null
+++ b/src/main/java/gregtech/nei/dumper/VoidProtectionSupportDumper.java
@@ -0,0 +1,10 @@
+package gregtech.nei.dumper;
+
+import gregtech.api.interfaces.modularui.ControllerWithOptionalFeatures;
+
+public class VoidProtectionSupportDumper extends MultiBlockFeatureSupportDumper {
+
+ public VoidProtectionSupportDumper() {
+ super("void_protection", ControllerWithOptionalFeatures::supportsVoidProtection);
+ }
+}