diff options
Diffstat (limited to 'src/main/java/gregtech/nei/dumper')
9 files changed, 283 insertions, 0 deletions
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/GregTechIDDumper.java b/src/main/java/gregtech/nei/dumper/GregTechIDDumper.java new file mode 100644 index 0000000000..0c2f20ac22 --- /dev/null +++ b/src/main/java/gregtech/nei/dumper/GregTechIDDumper.java @@ -0,0 +1,61 @@ +package gregtech.nei.dumper; + +import static gregtech.api.enums.Mods.NewHorizonsCoreMod; + +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; + +import codechicken.nei.NEIClientUtils; +import codechicken.nei.config.DataDumper; + +public abstract class GregTechIDDumper extends DataDumper { + + public GregTechIDDumper(String name) { + super("tools.dump.gt5u." + name); + } + + @Override + public Iterable<String[]> dump(int modeInt) { + return dump(getMode(modeInt)); + } + + protected abstract Iterable<String[]> dump(Mode mode); + + @Override + public String modeButtonText() { + return NEIClientUtils.lang.translate("options.tools.dump.gt5u.mode." + getMode()); + } + + @Override + public void dumpFile() { + super.dumpFile(); + logWarn(); + } + + protected void super$dumpFile() { + super.dumpFile(); + } + + protected void logWarn() { + if (!NewHorizonsCoreMod.isModLoaded()) { + NEIClientUtils.printChatMessage( + new ChatComponentTranslation("nei.options.tools.dump.gt5u.warn_env") + .setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_RED))); + } + } + + @Override + public int modeCount() { + return Mode.values().length; + } + + protected Mode getMode(int modeInt) { + return Mode.values()[modeInt]; + } + + protected enum Mode { + FREE, + USED + } +} 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/MaterialDumper.java b/src/main/java/gregtech/nei/dumper/MaterialDumper.java new file mode 100644 index 0000000000..3234779de8 --- /dev/null +++ b/src/main/java/gregtech/nei/dumper/MaterialDumper.java @@ -0,0 +1,39 @@ +package gregtech.nei.dumper; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +import gregtech.api.GregTech_API; +import gregtech.api.enums.Materials; + +public class MaterialDumper extends GregTechIDDumper { + + public MaterialDumper() { + super("material"); + } + + @Override + public String[] header() { + return new String[] { "id", "name", }; + } + + @Override + protected Iterable<String[]> dump(Mode mode) { + List<String[]> dump = new ArrayList<>(); + Map<Integer, Materials> idMap = Arrays.stream(GregTech_API.sGeneratedMaterials) + .filter(Objects::nonNull) + .collect(Collectors.toMap(m -> m.mMetaItemSubID, m -> m)); + for (int i = 0; i < 1000; i++) { + if (mode == Mode.FREE && !idMap.containsKey(i)) { + dump.add(new String[] { String.valueOf(i), "", }); + } else if (mode == Mode.USED && idMap.containsKey(i)) { + dump.add(new String[] { String.valueOf(i), idMap.get(i).mName, }); + } + } + return dump; + } +} diff --git a/src/main/java/gregtech/nei/dumper/MetaItemDumper.java b/src/main/java/gregtech/nei/dumper/MetaItemDumper.java new file mode 100644 index 0000000000..519af48e93 --- /dev/null +++ b/src/main/java/gregtech/nei/dumper/MetaItemDumper.java @@ -0,0 +1,60 @@ +package gregtech.nei.dumper; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; + +import codechicken.nei.NEIClientUtils; +import gregtech.api.items.GT_MetaGenerated_Item; + +public class MetaItemDumper extends GregTechIDDumper { + + private final GT_MetaGenerated_Item item; + private final String nameSuffix; + + public MetaItemDumper(GT_MetaGenerated_Item item, String name) { + super(name); + this.nameSuffix = name; + this.item = item; + } + + @Override + public String[] header() { + return new String[] { "id", "stackName", "metaID" }; + } + + @Override + protected Iterable<String[]> dump(Mode mode) { + List<String[]> list = new ArrayList<>(); + for (int i = 0; i < item.mItemAmount; i++) { + int metaID = item.mOffset + i; + boolean generated = item.mEnabledItems.get(i); + if (mode == Mode.FREE && !generated) { + list.add(new String[] { String.valueOf(i), "", String.valueOf(metaID), }); + } else if (mode == Mode.USED && generated) { + list.add( + new String[] { String.valueOf(i), new ItemStack(item, 1, metaID).getDisplayName(), + String.valueOf(metaID), }); + } + } + return list; + } + + @Override + public void dumpFile() { + super.super$dumpFile(); + NEIClientUtils.printChatMessage( + new ChatComponentText(String.format("mOffset: %s, mItemAmount: %s", item.mOffset, item.mItemAmount))); + logWarn(); + } + + @Override + public String translateN(String s, Object... args) { + if (name.equals(s) || (name + "s").equals(s)) { + return nameSuffix; + } + return super.translateN(s, args); + } +} diff --git a/src/main/java/gregtech/nei/dumper/MetaTileEntityDumper.java b/src/main/java/gregtech/nei/dumper/MetaTileEntityDumper.java new file mode 100644 index 0000000000..ee30cdfb8a --- /dev/null +++ b/src/main/java/gregtech/nei/dumper/MetaTileEntityDumper.java @@ -0,0 +1,37 @@ +package gregtech.nei.dumper; + +import java.util.ArrayList; +import java.util.List; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; + +public class MetaTileEntityDumper extends GregTechIDDumper { + + public MetaTileEntityDumper() { + super("metatileentity"); + } + + @Override + public String[] header() { + return new String[] { "id", "stackName", "className", }; + } + + @Override + protected Iterable<String[]> dump(Mode mode) { + List<String[]> list = new ArrayList<>(); + for (int i = 1; i < GregTech_API.METATILEENTITIES.length; i++) { + IMetaTileEntity mte = GregTech_API.METATILEENTITIES[i]; + if (mode == Mode.FREE && mte == null) { + list.add(new String[] { String.valueOf(i), "", "", }); + } else if (mode == Mode.USED && mte != null) { + list.add( + new String[] { String.valueOf(i), mte.getStackForm(1) + .getDisplayName(), + mte.getClass() + .getSimpleName() }); + } + } + return list; + } +} 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); + } +} |