aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-02-14 00:34:50 +0900
committerGitHub <noreply@github.com>2023-02-13 16:34:50 +0100
commit47a58d03cdbfbb9b072d5f0703b4a702baede591 (patch)
treee5505f3568020fe3751d03e6c5ca5b6905dfe160 /src
parentaed35ccb1b62836737d09ce476376b14e2c8d33a (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java4
-rw-r--r--src/main/java/gregtech/nei/NEI_GT_Config.java13
-rw-r--r--src/main/java/gregtech/nei/dumper/GregTechIDDumper.java60
-rw-r--r--src/main/java/gregtech/nei/dumper/MetaItemDumper.java60
-rw-r--r--src/main/java/gregtech/nei/dumper/MetaTileEntityDumper.java35
-rw-r--r--src/main/resources/assets/gregtech/lang/en_US.lang8
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