diff options
author | miozune <miozune@gmail.com> | 2023-02-14 00:34:50 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-13 16:34:50 +0100 |
commit | 47a58d03cdbfbb9b072d5f0703b4a702baede591 (patch) | |
tree | e5505f3568020fe3751d03e6c5ca5b6905dfe160 /src | |
parent | aed35ccb1b62836737d09ce476376b14e2c8d33a (diff) | |
download | GT5-Unofficial-47a58d03cdbfbb9b072d5f0703b4a702baede591.tar.gz GT5-Unofficial-47a58d03cdbfbb9b072d5f0703b4a702baede591.tar.bz2 GT5-Unofficial-47a58d03cdbfbb9b072d5f0703b4a702baede591.zip |
Add ID dumpers for MetaTE and MetaItems (#1736)
Diffstat (limited to 'src')
6 files changed, 179 insertions, 1 deletions
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java index ba1f4abda9..3e81c102f4 100644 --- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java +++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java @@ -111,6 +111,10 @@ public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements if (aToolTip == null) aToolTip = ""; if (aID >= 0 && aID < mItemAmount) { ItemStack rStack = new ItemStack(this, 1, mOffset + aID); + if (mEnabledItems.get(aID)) { + throw new IllegalArgumentException( + String.format("ID %s is already reserved for %s!", aID, rStack.getDisplayName())); + } mEnabledItems.set(aID); mVisibleItems.set(aID); GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".name", aEnglish); diff --git a/src/main/java/gregtech/nei/NEI_GT_Config.java b/src/main/java/gregtech/nei/NEI_GT_Config.java index 67efff5d70..0a27157358 100644 --- a/src/main/java/gregtech/nei/NEI_GT_Config.java +++ b/src/main/java/gregtech/nei/NEI_GT_Config.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import codechicken.nei.recipe.GuiCraftingRecipe; import codechicken.nei.recipe.GuiUsageRecipe; @@ -16,6 +17,11 @@ import cpw.mods.fml.common.event.FMLInterModComms; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; 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.MetaItemDumper; +import gregtech.nei.dumper.MetaTileEntityDumper; public class NEI_GT_Config implements IConfigureNEI { @@ -60,7 +66,12 @@ public class NEI_GT_Config implements IConfigureNEI { handlers.sort(RECIPE_MAP_HANDLER_COMPARATOR); handlers.forEach(NEI_GT_Config::addHandler); - codechicken.nei.api.API.addItemListEntry(ItemList.VOLUMETRIC_FLASK.get(1)); + API.addItemListEntry(ItemList.VOLUMETRIC_FLASK.get(1)); + + API.addOption(new MetaTileEntityDumper()); + 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")); } sIsAdded = true; } 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..896ec8f83b --- /dev/null +++ b/src/main/java/gregtech/nei/dumper/GregTechIDDumper.java @@ -0,0 +1,60 @@ +package gregtech.nei.dumper; + +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; + +import codechicken.nei.NEIClientUtils; +import codechicken.nei.config.DataDumper; +import cpw.mods.fml.common.Loader; + +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 (!Loader.isModLoaded("dreamcraft")) { + 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/MetaItemDumper.java b/src/main/java/gregtech/nei/dumper/MetaItemDumper.java new file mode 100644 index 0000000000..9e22f621c5 --- /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..0e89183854 --- /dev/null +++ b/src/main/java/gregtech/nei/dumper/MetaTileEntityDumper.java @@ -0,0 +1,35 @@ +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/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang index 9509d57a45..f26224c028 100644 --- a/src/main/resources/assets/gregtech/lang/en_US.lang +++ b/src/main/resources/assets/gregtech/lang/en_US.lang @@ -303,6 +303,14 @@ GT5U.interface.coverTabs.south=South GT5U.interface.coverTabs.west=West GT5U.interface.coverTabs.east=East +# NEI +nei.options.tools.dump.gt5u=GT5u +nei.options.tools.dump.gt5u.metatileentity=MetaTileEntity +nei.options.tools.dump.gt5u.metatileentitys=MetaTileEntities +nei.options.tools.dump.gt5u.warn_env=You're outside of the pack. Some IDs present in the full pack might be missing in this dump. +nei.options.tools.dump.gt5u.mode.0=Free +nei.options.tools.dump.gt5u.mode.1=Used + # Waila GT5U.waila.cover=Cover (%s): %s GT5U.waila.cover.current_facing=Current Facing |