From 9af741164c5b59c4d884aba48ebeab7db5442d63 Mon Sep 17 00:00:00 2001 From: miozune Date: Sun, 28 May 2023 18:21:42 +0900 Subject: 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 --- src/main/java/gregtech/nei/NEI_GT_Config.java | 8 ++++ .../nei/dumper/BatchModeSupportDumper.java | 10 +++++ .../nei/dumper/InputSeparationSupportDumper.java | 10 +++++ .../nei/dumper/MultiBlockFeatureSupportDumper.java | 46 ++++++++++++++++++++++ .../nei/dumper/RecipeLockingSupportDumper.java | 10 +++++ .../nei/dumper/VoidProtectionSupportDumper.java | 10 +++++ 6 files changed, 94 insertions(+) create mode 100644 src/main/java/gregtech/nei/dumper/BatchModeSupportDumper.java create mode 100644 src/main/java/gregtech/nei/dumper/InputSeparationSupportDumper.java create mode 100644 src/main/java/gregtech/nei/dumper/MultiBlockFeatureSupportDumper.java create mode 100644 src/main/java/gregtech/nei/dumper/RecipeLockingSupportDumper.java create mode 100644 src/main/java/gregtech/nei/dumper/VoidProtectionSupportDumper.java (limited to 'src/main/java/gregtech/nei') 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 isFeatureSupported; + + public MultiBlockFeatureSupportDumper(String name, + Function isFeatureSupported) { + super("tools.dump.gt5u." + name); + this.isFeatureSupported = isFeatureSupported; + } + + @Override + public String[] header() { + return new String[] { "className" }; + } + + @Override + public Iterable dump(int mode) { + List 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); + } +} -- cgit