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"),