From b4da07250f92f1894a2536f25e5fea0f2a522f4a Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Mon, 30 Jun 2025 08:38:04 -0700
Subject: [PATCH 01/15] Update to Minecraft 1.21.7
---
pom.xml | 2 +-
.../itemdbgenerator/providers/alias/MeatFishAliasProvider.java | 2 +-
.../providers/alias/MusicDiscAliasProvider.java | 3 ++-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index e4691aa..d041cd3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
io.papermc.paper
paper-api
- 1.21.6-R0.1-SNAPSHOT
+ 1.21.7-R0.1-SNAPSHOT
provided
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MeatFishAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MeatFishAliasProvider.java
index b679d6a..72a764e 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MeatFishAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MeatFishAliasProvider.java
@@ -72,7 +72,7 @@ private enum FoodType implements CompoundType {
COOKED("COOKED_[A-Z_]+", "%scooked", "%scook", "%sc", "%sgrilled", "%sgrill", "%sg", "%sroasted", "%sroast", "%sro", "%sbbq", "%stoasted", "cooked%s", "cook%s", "c%s", "grilled%s", "grill%s", "g%s", "roasted%s", "roast%s", "ro%s", "bbq%s", "toasted%s"),
HIDE("[A-Z_]+_HIDE", "%shide", "%sskin", "%scoat", "%sfur"),
STEW("[A-Z_]+_STEW", "%sstew", "%ssoup"),
- RAW("^(?!COOKED_)[A-Z_]+(?!_STEW)$", "raw%s", "ra%s", "uncooked%s", "plain%s", "%s"),
+ RAW("^(?!COOKED_|MUSIC_DISC_)[A-Z_]+(?!_STEW)$", "raw%s", "ra%s", "uncooked%s", "plain%s", "%s"),
;
private final Pattern regex;
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MusicDiscAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MusicDiscAliasProvider.java
index 71d6242..dc187ef 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MusicDiscAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MusicDiscAliasProvider.java
@@ -26,7 +26,7 @@ public Stream get(ItemProvider.Item item) {
private enum DiscType implements CompoundType {
// this is scuffed beyond belief
DISC_FRAGMENT("^DISC_FRAGMENT_5", "discfrag", "fragment"),
- MUSIC_DISC("^MUSIC_DISC_[A-Z0-9]+", generateFormatsFromNames(MUSIC_DISC_NAMES))
+ MUSIC_DISC("^MUSIC_DISC_[A-Z0-9_]+", generateFormatsFromNames(MUSIC_DISC_NAMES))
;
private final Pattern regex;
@@ -82,6 +82,7 @@ private enum Track implements CompoundModifier {
CREATOR_MUSIC_BOX("MUSIC_DISC_CREATOR_MUSIC_BOX", "creatormusicbox", "creatormusicb", "creatormbox", "creatormb"),
PRECIPICE("MUSIC_DISC_PRECIPICE", "precipice"),
TEARS("MUSIC_DISC_TEARS", "tears", "ghast"),
+ LAVA_CHICKEN("MUSIC_DISC_LAVA_CHICKEN", "lavachicken", "lava", "chicken", "lchicken", "lchick")
;
private final Pattern regex;
From f698118197c1e170c3ccab50475369ace7d11752 Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Sat, 20 Sep 2025 12:33:34 -0700
Subject: [PATCH 02/15] Update to Minecraft 1.21.9-pre2
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index d041cd3..8b1f625 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
io.papermc.paper
paper-api
- 1.21.7-R0.1-SNAPSHOT
+ 1.21.9-pre2-R0.1-SNAPSHOT
provided
From 57b2f2920f35ad32f0daba1525d981b7ddf4908c Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Sat, 20 Sep 2025 12:34:05 -0700
Subject: [PATCH 03/15] Add 1.21.9 Mineable Aliases
---
.../itemdbgenerator/providers/alias/FixedAliasProvider.java | 2 +-
.../itemdbgenerator/providers/alias/MineableAliasProvider.java | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
index c72edda..185bae4 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
@@ -90,7 +90,7 @@ private static void add(EntityType entity, String... aliases) {
// "CUT_SANDSTONE" used to be called "SMOOTH_SANDSTONE"
// "SMOOTH_SANDSTONE" is now a double slab
add(Material.COBWEB, "spiderweb", "sweb", "cweb", "web");
- add(Material.IRON_BARS, "ironbarsb", "ironbarsblock", "ironfence", "metalbars", "metalbarsb", "metalbarsblock", "metalfence", "jailbars", "jailbarsb", "jailbarsblock", "jailfence", "mbars", "mbarsb", "mbarsblock", "mfence", "jbars", "jbarsb", "jbarsblock", "ibars", "ibarsb", "ibarsblock", "ifence");
+ add(Material.IRON_BARS, "metalbars", "metalbarsb", "metalbarsblock", "metalfence", "jailbars", "jailbarsb", "jailbarsblock", "jailfence", "mbars", "mbarsb", "mbarsblock", "mfence", "jbars", "jbarsb", "jbarsblock");
add(Material.ICE, "frozenwater", "waterfrozen", "freezewater", "waterfreeze");
add(Material.HAY_BLOCK, "hay", "haybale", "baleofhay", "hayofbale");
add(Material.RESIN_BRICK, "resbrick", "rbrick");
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MineableAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MineableAliasProvider.java
index a7bb561..af1e3dc 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MineableAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MineableAliasProvider.java
@@ -91,6 +91,8 @@ public String[] getNames() {
*/
@SuppressWarnings("unused")
private enum MineableItemType implements CompoundType {
+ // The Copper Age
+ NUGGET(null, "%snugget", "%snug"),
// Caves and Cliffs
RAW_ORE_BLOCK("RAW_[A-Z]+_BLOCK", "raw%soreblock", "%sorechunkblock", "r%soreblock", "raw%sorebl", "%sorechunkbl", "r%sorebl"),
RAW_ORE("RAW_[A-Z]+_ORE", "raw%sore", "%sorechunk", "r%sore"),
From 4112c9fa5e62ccd102b9ea6c83c2f5cbeb04b0be Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Sat, 20 Sep 2025 12:36:13 -0700
Subject: [PATCH 04/15] Add 1.21.9 Fixed Aliases
---
.../itemdbgenerator/providers/alias/FixedAliasProvider.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
index 185bae4..9233bde 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
@@ -69,6 +69,7 @@ private static void add(EntityType entity, String... aliases) {
add(Material.BOOKSHELF, "bshelf", "bookcase", "casebook", "shelfbook", "bookblock", "blockbook");
add(Material.CHISELED_BOOKSHELF, "cbshelf", "cbookcase", "cshelfbook", "cbookblock", "cblockbook", "chiseledshelf", "chiseledb");
add(Material.TORCH, "burningstick", "burnstick");
+ add(Material.COPPER_TORCH, "copperburningstick", "copperburnstick");
add(Material.GLOWSTONE, "glowingstoneblock", "lightstoneblock", "glowstoneblock", "blockglowingstone", "blocklightstone", "blockglowstone", "glowingstone", "lightstone", "glowingblock", "lightblock", "glowblock", "lstone");
add(Material.LILY_PAD, "waterlily", "lily", "swamppad", "lpad", "wlily");
add(Material.ANCIENT_DEBRIS, "debris");
@@ -214,6 +215,8 @@ private static void add(EntityType entity, String... aliases) {
add(Material.TURTLE_SCUTE, "scute", "minecraft:scute");
add(EntityType.MOOSHROOM, "mushroom_cow_spawner");
add(EntityType.SNOW_GOLEM, "snowman_spawner");
+ // == 1.21.9 Enum Renaming Manual Fixes
+ add(Material.IRON_CHAIN, "chain", "minecraft:chain");
}
@Override
From 41027e565cac70b43391a8c961fdfe0c5ebf4631 Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Sat, 20 Sep 2025 12:37:38 -0700
Subject: [PATCH 05/15] Add 1.21.9 Wood Aliases
---
.../itemdbgenerator/providers/alias/WoodAliasProvider.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/WoodAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/WoodAliasProvider.java
index 28a5d6f..df14e6c 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/WoodAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/WoodAliasProvider.java
@@ -89,6 +89,7 @@ private enum WoodItemType implements CompoundType {
PROPAGULE(null, "propagule%s", "%sprop", "%ssapling", "%streesapling", "%slogsapling", "%strunksapling", "%swoodsapling"),
MUDDY_ROOTS("^MUDDY_[A-Z_]+_ROOTS", "mud%sroots", "mud%sroot"),
ROOTS("^(?!MUDDY_)[A-Z_]+_ROOTS", "%sroots", "%sroot"),
+ SHELF(null, "%sshelf", "%srack", "%sledge", "%smantel")
;
private final Pattern regex;
From 22f09e6929a4ec44d335b535511f917b5e85bff8 Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Sat, 20 Sep 2025 12:42:07 -0700
Subject: [PATCH 06/15] Add 1.21.9 Mob Aliases
---
.../itemdbgenerator/providers/alias/MobAliasProvider.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
index f09be90..5f93829 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
@@ -140,6 +140,7 @@ private enum MobType implements CompoundModifier {
BOGGED,
BREEZE,
CREAKING("creak"),
+ COPPER_GOLEM("coppergolem", "cgolem", "chestslave"),
PLAYER("steve"),
;
From 3bcba8d85d3aaecd40030de102e26705cff9f728 Mon Sep 17 00:00:00 2001
From: Josh Roy <10731363+JRoy@users.noreply.github.com>
Date: Sun, 21 Sep 2025 19:08:09 -0400
Subject: [PATCH 07/15] Add 1.21.9 Copper Aliases
---
.../providers/alias/CopperBuildingBlockAliasProvider.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/CopperBuildingBlockAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/CopperBuildingBlockAliasProvider.java
index e36eef9..ecb6864 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/CopperBuildingBlockAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/CopperBuildingBlockAliasProvider.java
@@ -106,7 +106,13 @@ private enum CopperBuildingBlock implements CompoundType {
TRAPDOOR(null, "%strapdoor", "%sdoortrap", "%shatch", "%stdoor", "%sdoort", "%strapd", "%sdtrap"),
BULB(null, "%sbulb"),
GRATE(null, "%sgrate"),
- BLOCK("^[A-Z]+_(SLAB|STAIRS)", true, "%scopperblock", "%scopblock", "%scoblock"),
+ GOLEM_STATUE(null, "%sgolemstatue", "%sstatue", "%sgolem"),
+ LANTERN(null, "%slantern", "%slantern", "%slight"),
+ LIGHTNING_ROD(null, "%srod", "%slrod", "%slightrod"),
+ BARS(null, "%sbars", "%sbar", "%sbarsb", "%sbarsblock", "%sfence"),
+ CHAIN(null, "%schain", "%slink", "%schains", "%slinks"),
+ CHEST(null, "%schest", "%scontainer", "%sdrawer"),
+ BLOCK("^[A-Z_]+_(SLAB|STAIRS)", true, "%scopperblock", "%scopblock", "%scoblock"),
;
private final Pattern regex;
From 8f1ecd0d822605091a1d29be2ae170d12df4f93f Mon Sep 17 00:00:00 2001
From: Josh Roy <10731363+JRoy@users.noreply.github.com>
Date: Mon, 29 Sep 2025 19:36:40 -0400
Subject: [PATCH 08/15] Update to 1.21.9-rc1
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 8b1f625..87758e7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
io.papermc.paper
paper-api
- 1.21.9-pre2-R0.1-SNAPSHOT
+ 1.21.9-rc1-R0.1-SNAPSHOT
provided
From 8a92cc481de0d3fdafc24c059bbfd93f8ab6e996 Mon Sep 17 00:00:00 2001
From: Josh Roy <10731363+JRoy@users.noreply.github.com>
Date: Mon, 29 Sep 2025 19:36:49 -0400
Subject: [PATCH 09/15] Add back iron bar aliases
---
.../itemdbgenerator/providers/alias/FixedAliasProvider.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
index 9233bde..0162f01 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/FixedAliasProvider.java
@@ -91,7 +91,7 @@ private static void add(EntityType entity, String... aliases) {
// "CUT_SANDSTONE" used to be called "SMOOTH_SANDSTONE"
// "SMOOTH_SANDSTONE" is now a double slab
add(Material.COBWEB, "spiderweb", "sweb", "cweb", "web");
- add(Material.IRON_BARS, "metalbars", "metalbarsb", "metalbarsblock", "metalfence", "jailbars", "jailbarsb", "jailbarsblock", "jailfence", "mbars", "mbarsb", "mbarsblock", "mfence", "jbars", "jbarsb", "jbarsblock");
+ add(Material.IRON_BARS, "ironbarsb", "ironbarsblock", "ironfence", "metalbars", "metalbarsb", "metalbarsblock", "metalfence", "jailbars", "jailbarsb", "jailbarsblock", "jailfence", "mbars", "mbarsb", "mbarsblock", "mfence", "jbars", "jbarsb", "jbarsblock", "ibars", "ibarsb", "ibarsblock", "ifence");
add(Material.ICE, "frozenwater", "waterfrozen", "freezewater", "waterfreeze");
add(Material.HAY_BLOCK, "hay", "haybale", "baleofhay", "hayofbale");
add(Material.RESIN_BRICK, "resbrick", "rbrick");
From c73269292964a0d001a80c9f4eeab410c50563a5 Mon Sep 17 00:00:00 2001
From: Josh Roy <10731363+JRoy@users.noreply.github.com>
Date: Mon, 29 Sep 2025 19:36:59 -0400
Subject: [PATCH 10/15] Add iron chain fallback material
---
.../itemdbgenerator/providers/item/MaterialFallbacks.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/item/MaterialFallbacks.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/item/MaterialFallbacks.java
index 4347754..dde1459 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/item/MaterialFallbacks.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/item/MaterialFallbacks.java
@@ -33,6 +33,8 @@ public class MaterialFallbacks {
add(Material.DIRT_PATH, "GRASS_PATH");
/* 1.20.3: Grass was renamed to short grass */
add(Material.SHORT_GRASS, "GRASS");
+ /* 1.21.9: Chain was renamed to iron chain */
+ add(Material.IRON_CHAIN, "CHAIN");
}
private MaterialFallbacks() {
From 9bb5992510bab396419e53cdd2b42a0ad1f0cc59 Mon Sep 17 00:00:00 2001
From: Josh Roy <10731363+JRoy@users.noreply.github.com>
Date: Mon, 29 Sep 2025 19:37:27 -0400
Subject: [PATCH 11/15] Add copper golem alias
---
.../itemdbgenerator/providers/alias/MobAliasProvider.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
index 5f93829..53450a7 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
@@ -140,7 +140,7 @@ private enum MobType implements CompoundModifier {
BOGGED,
BREEZE,
CREAKING("creak"),
- COPPER_GOLEM("coppergolem", "cgolem", "chestslave"),
+ COPPER_GOLEM("coppergolem", "cgolem", "sorter"),
PLAYER("steve"),
;
From 77440ac96a6b9ef7356e6378dfe2b5012a3ff079 Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Sat, 22 Nov 2025 23:41:06 -0500
Subject: [PATCH 12/15] attempt standalone impl
---
.gitignore | 4 +
pom.xml | 26 ++-
.../essentialsx/itemdbgenerator/Main.java | 1 +
.../itemdbgenerator/StandaloneMain.java | 211 ++++++++++++++++++
.../providers/item/MaterialEnumProvider.java | 8 +-
5 files changed, 245 insertions(+), 5 deletions(-)
create mode 100644 src/main/java/io/github/essentialsx/itemdbgenerator/StandaloneMain.java
diff --git a/.gitignore b/.gitignore
index aacdf3e..7013a14 100644
--- a/.gitignore
+++ b/.gitignore
@@ -144,3 +144,7 @@ buildNumber.properties
.mvn/wrapper/maven-wrapper.jar
# End of https://www.gitignore.io/api/git,java,maven,intellij+all
+
+cache
+local-repo
+generated
diff --git a/pom.xml b/pom.xml
index 87758e7..7a762bd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,8 +21,8 @@
io.papermc.paper
paper-api
- 1.21.9-rc1-R0.1-SNAPSHOT
- provided
+ 1.21.11-pre1-R0.1-SNAPSHOT
+ compile
org.junit.jupiter
@@ -30,11 +30,25 @@
5.6.2
test
+
+ com.google.code.gson
+ gson
+ 2.10.1
+
org.ow2.asm
asm
- 9.5
- provided
+ 9.6
+
+
+ org.ow2.asm
+ asm-commons
+ 9.6
+
+
+ org.ow2.asm
+ asm-tree
+ 9.6
@@ -177,5 +191,9 @@
paper-repo
https://repo.papermc.io/repository/maven-public/
+
+ paper-pr
+ https://maven-prs.papermc.io/Paper/pr13194/
+
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/Main.java b/src/main/java/io/github/essentialsx/itemdbgenerator/Main.java
index 2e77774..71219dc 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/Main.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/Main.java
@@ -75,6 +75,7 @@ public class Main extends JavaPlugin {
public static Set EXPERIMENTAL_MATERIALS = null;
public static Set EXPERIMENTAL_POTIONS = null;
+ public static Set VALID_ITEMS = null;
@Override
public void onEnable() {
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/StandaloneMain.java b/src/main/java/io/github/essentialsx/itemdbgenerator/StandaloneMain.java
new file mode 100644
index 0000000..fb6d628
--- /dev/null
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/StandaloneMain.java
@@ -0,0 +1,211 @@
+package io.github.essentialsx.itemdbgenerator;
+
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import org.bukkit.Material;
+import org.bukkit.potion.PotionType;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Stream;
+
+public class StandaloneMain {
+
+ private static final String MANIFEST_URL = "https://piston-meta.mojang.com/mc/game/version_manifest_v2.json";
+ private static final Gson GSON = new Gson();
+
+ public static void main(String[] args) {
+ String targetVersion = args.length > 0 ? args[0] : null;
+
+ try {
+ if (targetVersion == null) {
+ JsonObject manifest = fetchJson(MANIFEST_URL).getAsJsonObject();
+ targetVersion = manifest.getAsJsonObject("latest").get("snapshot").getAsString();
+ System.out.println("Targeting latest release: " + targetVersion);
+ }
+
+ File cacheDir = new File("cache");
+ if (!cacheDir.exists()) cacheDir.mkdirs();
+
+ // Clean up libraries to avoid version conflicts
+ File libDir = new File(cacheDir, "libraries");
+ if (libDir.exists()) {
+ System.out.println("Cleaning up old libraries...");
+ deleteDirectory(libDir);
+ }
+
+ System.out.println("Downloading server jar for version " + targetVersion + "...");
+ File serverJar = new File(cacheDir, "server-" + targetVersion + ".jar");
+ if (!serverJar.exists()) {
+ downloadServerJar(targetVersion, serverJar);
+ }
+ System.out.println("Using server jar: " + serverJar.getAbsolutePath());
+
+ System.out.println("Running server jar to unpack libraries...");
+ new ProcessBuilder("java", "-jar", serverJar.getName(), "--help")
+ .directory(cacheDir)
+ .start()
+ .waitFor();
+
+ File versionsDir = new File(cacheDir, "versions");
+ File extractedServerJar = findServerJar(versionsDir);
+ if (extractedServerJar == null) {
+ throw new RuntimeException("Could not find unpacked server jar in " + versionsDir);
+ }
+ System.out.println("Found unpacked server jar: " + extractedServerJar);
+
+ String classpath = buildClasspath(cacheDir, extractedServerJar);
+
+ System.out.println("Running data generator...");
+ new ProcessBuilder("java", "-cp", classpath, "net.minecraft.data.Main", "--reports")
+ .directory(cacheDir)
+ .inheritIO()
+ .start()
+ .waitFor();
+
+ File reportFile = new File(cacheDir, "generated/reports/items.json");
+ if (!reportFile.exists()) {
+ throw new RuntimeException("Data generator failed to produce " + reportFile);
+ }
+
+ System.out.println("Parsing generated report...");
+ Set items = parseItemsReport(reportFile);
+ System.out.println("Found " + items.size() + " valid items.");
+ Main.VALID_ITEMS = items;
+
+ System.out.println("Generating experimental JSONs...");
+ AnnotationGenerator.main(new String[0]);
+
+ System.out.println("Loading experimental data...");
+ Reader reader = new InputStreamReader(Objects.requireNonNull(Main.class.getResourceAsStream("/experimental_materials.json")));
+ Main.EXPERIMENTAL_MATERIALS = GSON.fromJson(reader, new TypeToken>(){}.getType());
+ reader.close();
+ reader = new InputStreamReader(Objects.requireNonNull(Main.class.getResourceAsStream("/experimental_potions.json")));
+ Main.EXPERIMENTAL_POTIONS = GSON.fromJson(reader, new TypeToken>(){}.getType());
+ reader.close();
+
+ System.out.println("Generating items.json...");
+ JsonObject itemMap = Main.generateItemMap();
+ Main.save(itemMap);
+
+ System.out.println("Generation complete!");
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void deleteDirectory(File file) {
+ File[] contents = file.listFiles();
+ if (contents != null) {
+ for (File f : contents) {
+ deleteDirectory(f);
+ }
+ }
+ file.delete();
+ }
+
+ private static void downloadServerJar(String version, File outputFile) throws IOException {
+ JsonObject manifest = fetchJson(MANIFEST_URL).getAsJsonObject();
+ com.google.gson.JsonArray versions = manifest.getAsJsonArray("versions");
+
+ String versionUrl = null;
+ for (com.google.gson.JsonElement v : versions) {
+ JsonObject vObj = v.getAsJsonObject();
+ if (vObj.get("id").getAsString().equals(version)) {
+ versionUrl = vObj.get("url").getAsString();
+ break;
+ }
+ }
+
+ if (versionUrl == null) {
+ throw new IllegalArgumentException("Version " + version + " not found in manifest.");
+ }
+
+ JsonObject versionMeta = fetchJson(versionUrl).getAsJsonObject();
+ JsonObject downloads = versionMeta.getAsJsonObject("downloads");
+ if (!downloads.has("server")) {
+ throw new IllegalArgumentException("No server download found for version " + version);
+ }
+
+ String serverUrl = downloads.getAsJsonObject("server").get("url").getAsString();
+ downloadFile(serverUrl, outputFile);
+ }
+
+ private static File findServerJar(File dir) throws IOException {
+ if (!dir.exists()) return null;
+ try (Stream stream = Files.walk(dir.toPath())) {
+ return stream
+ .map(Path::toFile)
+ .filter(f -> f.getName().endsWith(".jar") && !f.getName().contains("bundler"))
+ .findFirst()
+ .orElse(null);
+ }
+ }
+
+ private static String buildClasspath(File workingDir, File extractedServerJar) throws IOException {
+ StringBuilder cp = new StringBuilder();
+ cp.append(extractedServerJar.getAbsolutePath());
+
+ Path libPath = new File(workingDir, "libraries").toPath();
+ if (Files.exists(libPath)) {
+ Files.walk(libPath)
+ .filter(p -> p.toString().endsWith(".jar"))
+ .forEach(p -> {
+ cp.append(File.pathSeparator);
+ cp.append(p.toAbsolutePath().toString());
+ });
+ }
+ return cp.toString();
+ }
+
+ private static Set parseItemsReport(File reportFile) throws IOException {
+ try (Reader reader = new java.io.FileReader(reportFile)) {
+ JsonObject json = GSON.fromJson(reader, JsonObject.class);
+ Set items = new HashSet<>();
+ for (String key : json.keySet()) {
+ if (key.startsWith("minecraft:")) {
+ items.add(key.substring(10));
+ } else {
+ items.add(key);
+ }
+ }
+ return items;
+ }
+ }
+
+ private static com.google.gson.JsonElement fetchJson(String urlString) throws IOException {
+ URL url = new URL(urlString);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
+ return GSON.fromJson(reader, com.google.gson.JsonElement.class);
+ }
+ }
+
+ private static void downloadFile(String urlString, File outputFile) throws IOException {
+ URL url = new URL(urlString);
+ try (InputStream in = url.openStream();
+ FileOutputStream out = new FileOutputStream(outputFile)) {
+ byte[] buffer = new byte[8192];
+ int bytesRead;
+ while ((bytesRead = in.read(buffer)) != -1) {
+ out.write(buffer, 0, bytesRead);
+ }
+ }
+ }
+}
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/item/MaterialEnumProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/item/MaterialEnumProvider.java
index 300eb16..6decf37 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/item/MaterialEnumProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/item/MaterialEnumProvider.java
@@ -15,7 +15,13 @@ public Stream- get() {
return Arrays.stream(Material.values())
.filter(mat -> !mat.name().contains("LEGACY"))
.filter(mat -> !Main.EXPERIMENTAL_MATERIALS.contains(mat))
- .filter(Material::isItem)
+ .filter(mat -> {
+ if (Main.VALID_ITEMS != null) {
+ String id = mat.name().toLowerCase();
+ return Main.VALID_ITEMS.contains(id) || Main.VALID_ITEMS.contains("minecraft:" + id);
+ }
+ return mat.isItem();
+ })
.map(MaterialEnumItem::new);
}
From d6fbeb632638eaffdcf0a316d36bf537965565ab Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Sat, 22 Nov 2025 23:48:32 -0500
Subject: [PATCH 13/15] 1.21.11 Mineable Aliases
---
.../itemdbgenerator/providers/alias/MineableAliasProvider.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MineableAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MineableAliasProvider.java
index af1e3dc..c09d220 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MineableAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MineableAliasProvider.java
@@ -106,6 +106,7 @@ private enum MineableItemType implements CompoundType {
SCRAP(null, "%sscrap"),
// Tools
SWORD(null, "%ssword"),
+ SPEAR(null, "%sspear"),
SHOVEL(null, "%sshovel", "%sspade"),
PICKAXE(null, "%spickaxe", "%spick"),
AXE("[A-Z_]+_(?
Date: Sat, 22 Nov 2025 23:59:48 -0500
Subject: [PATCH 14/15] 1.21.11 Mob Aliases
---
.../itemdbgenerator/providers/alias/MobAliasProvider.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
index 53450a7..68b351e 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
@@ -141,6 +141,10 @@ private enum MobType implements CompoundModifier {
BREEZE,
CREAKING("creak"),
COPPER_GOLEM("coppergolem", "cgolem", "sorter"),
+ CAMEL_HUSK("deadcamel", "dcamel", "camelhusk", "chusk"),
+ NAUTILUS("nautilus", "naut"),
+ ZOMBIE_NAUTILUS("zombienautilus", "zombnautilus", "znautilus", "znaut", "zombnaut"),
+ PARCHED("parched", "parch"),
PLAYER("steve"),
;
From 89a52dcc7de2651ed1f78eac141a16c20f2f6b79 Mon Sep 17 00:00:00 2001
From: JRoy <10731363+JRoy@users.noreply.github.com>
Date: Tue, 9 Dec 2025 07:01:43 -0800
Subject: [PATCH 15/15] Fix husk overriding camel husk aliases
---
.../itemdbgenerator/providers/alias/MobAliasProvider.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
index 68b351e..7669b48 100644
--- a/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
+++ b/src/main/java/io/github/essentialsx/itemdbgenerator/providers/alias/MobAliasProvider.java
@@ -63,6 +63,7 @@ private enum MobType implements CompoundModifier {
PIGLIN_BRUTE("pigbrute", "pigbr", "meaniepiglin", "piglinbr"),
PIGLIN("pigman", "pigmen", "pman", "pigm", "piglin"),
STRAY,
+ CAMEL_HUSK("deadcamel", "dcamel", "camelhusk", "chusk"),
HUSK,
ZOMBIE_VILLAGER("zvillager", "deadvillager", "dvillager", "zvill", "dvill"),
SKELETON_HORSE("skhorse", "shorse", "bonehorse"),
@@ -141,7 +142,6 @@ private enum MobType implements CompoundModifier {
BREEZE,
CREAKING("creak"),
COPPER_GOLEM("coppergolem", "cgolem", "sorter"),
- CAMEL_HUSK("deadcamel", "dcamel", "camelhusk", "chusk"),
NAUTILUS("nautilus", "naut"),
ZOMBIE_NAUTILUS("zombienautilus", "zombnautilus", "znautilus", "znaut", "zombnaut"),
PARCHED("parched", "parch"),