From 4df20a684c2776d244ec8f600f933a6c58020f76 Mon Sep 17 00:00:00 2001 From: kermandev <46640204+kermandev@users.noreply.github.com> Date: Sun, 8 Mar 2026 12:49:50 -0500 Subject: [PATCH 01/10] feat!: Use modules for data Changes data path to net/minestom/data to be resolved inside the module. This would break anything that may be relying on another method of retrieving the data as it wouldnt be available anymore. TLDR: Required to move MinestomData.class.getResourceAsStream(String) to MinestomData.resource(String) --- DataGenerator/build.gradle.kts | 1 + build.gradle.kts | 3 ++- src/main/java/module-info.java | 3 +++ .../java/net/minestom/data/MinestomData.java | 18 ++++++++++++++++++ .../java/net/minestom/data/package-info.java | 6 ++++++ 5 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/main/java/module-info.java create mode 100644 src/main/java/net/minestom/data/package-info.java diff --git a/DataGenerator/build.gradle.kts b/DataGenerator/build.gradle.kts index a1e0774..4782c6a 100644 --- a/DataGenerator/build.gradle.kts +++ b/DataGenerator/build.gradle.kts @@ -21,6 +21,7 @@ application { java { sourceCompatibility = JavaVersion.VERSION_25 targetCompatibility = JavaVersion.VERSION_25 + // Don't use modules here, as it's prone to breakage every update } loom { diff --git a/build.gradle.kts b/build.gradle.kts index b5ff318..b37a093 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,6 +16,7 @@ java { sourceCompatibility = JavaVersion.VERSION_25 targetCompatibility = JavaVersion.VERSION_25 + modularity.inferModulePath = true } tasks.register("generateData") { @@ -42,7 +43,7 @@ tasks.register("generateData") { // Simplified by Sponge's VanillaGradle dependsOn(project(":DataGenerator").tasks.getByName("run") { - args = arrayListOf(rootDir.resolve("src/main/resources").absolutePath) + args = arrayListOf(rootDir.resolve("src/main/resources/net/minestom/data").absolutePath) }) } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java new file mode 100644 index 0000000..32f2e16 --- /dev/null +++ b/src/main/java/module-info.java @@ -0,0 +1,3 @@ +module net.minestom.data { + exports net.minestom.data; +} \ No newline at end of file diff --git a/src/main/java/net/minestom/data/MinestomData.java b/src/main/java/net/minestom/data/MinestomData.java index e793d52..6f118ae 100644 --- a/src/main/java/net/minestom/data/MinestomData.java +++ b/src/main/java/net/minestom/data/MinestomData.java @@ -1,5 +1,11 @@ package net.minestom.data; +import java.io.InputStream; + +/** + * Autogenerated data derived from MinestomDataGenerator + */ +@SuppressWarnings("unused") public final class MinestomData { private static final String COMMIT = "&COMMIT"; private static final String BRANCH = "&BRANCH"; @@ -7,5 +13,17 @@ public final class MinestomData { public static String commit() { return COMMIT; } public static String branch() { return BRANCH; } + /** + * Gets a resource from the data module. + * + * @param path the path (relative to /net/minestom/data) + * @return the resource from the data module, or null + */ + public static InputStream resource(String path) { + // Required to execute here as getModule() returns this module + // Otherwise would fail cause of encapsulation or would require opens. + return MinestomData.class.getResourceAsStream(path); + } + private MinestomData() {} } diff --git a/src/main/java/net/minestom/data/package-info.java b/src/main/java/net/minestom/data/package-info.java new file mode 100644 index 0000000..510a378 --- /dev/null +++ b/src/main/java/net/minestom/data/package-info.java @@ -0,0 +1,6 @@ +/** + * Package containing the autogenerated data description. + *
+ * See {@link net.minestom.data.MinestomData} for more information. + */ +package net.minestom.data; \ No newline at end of file From 7bc7e4ecb39c2e4e1d7c5962e10316112dc48a7c Mon Sep 17 00:00:00 2001 From: kermandev <46640204+kermandev@users.noreply.github.com> Date: Sun, 8 Mar 2026 20:50:20 -0500 Subject: [PATCH 02/10] chore: Update data generator to include 26.1 data TODO: Gamerules likely. --- .../net/minestom/datagen/DataGenType.java | 5 ++ .../generators/BannerPatternGenerator.java | 25 ------- .../generators/ComponentGenerator.java | 23 ------ .../generators/DimensionTypeGenerator.java | 70 ------------------- 4 files changed, 5 insertions(+), 118 deletions(-) delete mode 100644 DataGenerator/src/main/java/net/minestom/generators/BannerPatternGenerator.java delete mode 100644 DataGenerator/src/main/java/net/minestom/generators/ComponentGenerator.java delete mode 100644 DataGenerator/src/main/java/net/minestom/generators/DimensionTypeGenerator.java diff --git a/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java b/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java index ed92ea6..174f228 100644 --- a/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java +++ b/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java @@ -48,9 +48,12 @@ public enum DataGenType { BANNER_PATTERNS("banner_pattern", new GenericResourceGenerator("banner_pattern")), BIOMES("worldgen/biome", new GenericResourceGenerator("worldgen/biome")), CAT_VARIANTS("cat_variant", new GenericResourceGenerator("cat_variant")), + CAT_SOUND_VARIANTS("cat_sound_variant", new GenericResourceGenerator("cat_sound_variant")), CHAT_TYPES("chat_type", new GenericResourceGenerator("chat_type")), CHICKEN_VARIANTS("chicken_variant", new GenericResourceGenerator("chicken_variant")), + CHICKEN_SOUND_VARIANTS("chicken_sound_variant", new GenericResourceGenerator("chicken_sound_variant")), COW_VARIANTS("cow_variant", new GenericResourceGenerator("cow_variant")), + COW_SOUND_VARIANTS("cow_sound_variant", new GenericResourceGenerator("cow_sound_variant")), DAMAGE_TYPES("damage_type", new GenericResourceGenerator("damage_type")), DIALOGS("dialog", new GenericResourceGenerator("dialog")), DIMENSION_TYPES("dimension_type", new GenericResourceGenerator("dimension_type")), @@ -60,12 +63,14 @@ public enum DataGenType { INSTRUMENTS("instrument", new GenericResourceGenerator("instrument")), PAINTING_VARIANTS("painting_variant", new GenericResourceGenerator("painting_variant")), PIG_VARIANTS("pig_variant", new GenericResourceGenerator("pig_variant")), + PIG_SOUND_VARIANTS("pig_sound_variant", new GenericResourceGenerator("pig_sound_variant")), TIMELINE("timeline", new GenericResourceGenerator("timeline")), TRIM_MATERIALS("trim_material", new GenericResourceGenerator("trim_material")), TRIM_PATTERNS("trim_pattern", new GenericResourceGenerator("trim_pattern")), WOLF_VARIANTS("wolf_variant", new GenericResourceGenerator("wolf_variant")), WOLF_SOUND_VARIANTS("wolf_sound_variant", new GenericResourceGenerator("wolf_sound_variant")), ZOMBIE_NAUTILUS_VARIANTS("zombie_nautilus_variant", new GenericResourceGenerator("zombie_nautilus_variant")), + WORLD_CLOCKS("world_clock", new GenericResourceGenerator("world_clock")), // Loot tables (only included for legacy reasons, Minestom doesn't use them) diff --git a/DataGenerator/src/main/java/net/minestom/generators/BannerPatternGenerator.java b/DataGenerator/src/main/java/net/minestom/generators/BannerPatternGenerator.java deleted file mode 100644 index aff8277..0000000 --- a/DataGenerator/src/main/java/net/minestom/generators/BannerPatternGenerator.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.minestom.generators; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.level.block.entity.BannerPattern; -import net.minestom.datagen.DataGenerator; - -public class BannerPatternGenerator extends DataGenerator { - - @Override - public JsonElement generate() throws Exception { - JsonObject patternTypes = new JsonObject(); - //todo do we need to generate anything here now that they are sent from the server? -// var registry = BuiltInRegistries.BANNER_PATTERN; -// for (BannerPattern bannerPattern : registry) { -// JsonObject pattern = new JsonObject(); -// pattern.addProperty("id", registry.getId(bannerPattern)); -// pattern.addProperty("identifier", bannerPattern.getHashname()); -// patternTypes.add(registry.getKey(bannerPattern).toString(), pattern); -// } - return patternTypes; - } - -} diff --git a/DataGenerator/src/main/java/net/minestom/generators/ComponentGenerator.java b/DataGenerator/src/main/java/net/minestom/generators/ComponentGenerator.java deleted file mode 100644 index e12b765..0000000 --- a/DataGenerator/src/main/java/net/minestom/generators/ComponentGenerator.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.minestom.generators; - -import com.google.gson.JsonObject; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minestom.datagen.DataGenerator; - -public class ComponentGenerator extends DataGenerator { - @Override - public JsonObject generate() throws Exception { - JsonObject result = new JsonObject(); - var registry = BuiltInRegistries.DATA_COMPONENT_TYPE; - for (var componentType : registry) { - var name = registry.getKey(componentType); - var id = registry.getId(componentType); - var componentJson = new JsonObject(); - componentJson.addProperty("id", id); - componentJson.addProperty("transient", componentType.isTransient()); - componentJson.addProperty("persistent", componentType.codec() != null); - result.add(name.toString(), componentJson); - } - return result; - } -} diff --git a/DataGenerator/src/main/java/net/minestom/generators/DimensionTypeGenerator.java b/DataGenerator/src/main/java/net/minestom/generators/DimensionTypeGenerator.java deleted file mode 100644 index e20f93d..0000000 --- a/DataGenerator/src/main/java/net/minestom/generators/DimensionTypeGenerator.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.minestom.generators; - -import com.google.gson.Gson; -import com.google.gson.JsonObject; -import net.minestom.datagen.DataGenerator; -import net.minestom.utils.ResourceUtils; - -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.HashMap; -import java.util.Map; -import java.util.Scanner; - -public final class DimensionTypeGenerator extends DataGenerator { - - private static final String DIMENSION_TYPES_DIR = "data/minecraft/dimension_type/"; - private static final Gson gson = new Gson(); - - @Override - public JsonObject generate() throws Exception { - var dimensionTypesJson = new JsonObject(); - var dimensionTypes = readDimensionTypes(); - for (var entry : dimensionTypes.entrySet()) { - dimensionTypesJson.add(entry.getKey(), entry.getValue()); - } - return dimensionTypesJson; - } - - private Map readDimensionTypes() throws URISyntaxException, IOException { - // get all files from the dimension types directory - var files = ResourceUtils.getResourceListing( - net.minecraft.server.MinecraftServer.class, DIMENSION_TYPES_DIR); - - Map dimensionTypesJson = new HashMap<>(); - for (String fileName : files) { - var file = net.minecraft.server.MinecraftServer.class - .getClassLoader() - .getResourceAsStream(DIMENSION_TYPES_DIR + fileName); - var scanner = new Scanner(file); - var content = new StringBuilder(); - while (scanner.hasNextLine()) { - content.append(scanner.nextLine()); - } - scanner.close(); - - // only collect valid dimension type files - if (content.length() > 0 && fileName.endsWith(".json")) { - var biomeKey = "minecraft:" + fileName.substring(0, fileName.length() - 5); - var json = gson.fromJson(content.toString(), JsonObject.class); - var dimensionType = new JsonObject(); - dimensionType.addProperty("bedWorks", json.get("bed_works").getAsBoolean()); - dimensionType.addProperty("coordinateScale", json.get("coordinate_scale").getAsDouble()); - dimensionType.addProperty("ceiling", json.get("has_ceiling").getAsBoolean()); - dimensionType.addProperty("fixedTime", json.has("fixed_time")); - dimensionType.addProperty("raids", json.get("has_raids").getAsBoolean()); - dimensionType.addProperty("skyLight", json.get("has_skylight").getAsBoolean()); - dimensionType.addProperty("piglinSafe", json.get("piglin_safe").getAsBoolean()); - dimensionType.addProperty("logicalHeight", json.get("logical_height").getAsInt()); - dimensionType.addProperty("natural", json.get("natural").getAsBoolean()); - dimensionType.addProperty("ultraWarm", json.get("ultrawarm").getAsBoolean()); - dimensionType.addProperty("respawnAnchorWorks", json.get("respawn_anchor_works").getAsBoolean()); - dimensionType.addProperty("minY", json.get("min_y").getAsInt()); - dimensionType.addProperty("height", json.get("height").getAsInt()); - dimensionTypesJson.put(biomeKey, dimensionType); - } - } - - return dimensionTypesJson; - } -} From 51fc16c39e086954fcf7bffbb42b3984a069cebe Mon Sep 17 00:00:00 2001 From: kermandev <46640204+kermandev@users.noreply.github.com> Date: Mon, 9 Mar 2026 00:34:38 -0500 Subject: [PATCH 03/10] feat: ClockTimeMarkerGenerator added Currently, not a registry --- .../net/minestom/datagen/DataGenType.java | 2 ++ .../generators/ClockTimeMarkerGenerator.java | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 DataGenerator/src/main/java/net/minestom/generators/ClockTimeMarkerGenerator.java diff --git a/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java b/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java index 174f228..bd65ad2 100644 --- a/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java +++ b/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java @@ -1,6 +1,7 @@ package net.minestom.datagen; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.clock.ClockTimeMarkers; import net.minestom.generators.*; import net.minestom.generators.loot_tables.BlockLootTableGenerator; import net.minestom.generators.loot_tables.ChestLootTableGenerator; @@ -27,6 +28,7 @@ public enum DataGenType { SOUND_SOURCES("sound_sources", new SoundSourceGenerator()), VILLAGER_TYPES("villager_types", new GenericRegistryArrayGenerator<>(BuiltInRegistries.VILLAGER_TYPE)), BLOCK_ENTITY_TYPES("block_entity_types", new GenericRegistryObjectGenerator<>(BuiltInRegistries.BLOCK_ENTITY_TYPE)), + CLOCK_TIME_MARKERS("clock_time_marker", new ClockTimeMarkerGenerator()), // Static registries diff --git a/DataGenerator/src/main/java/net/minestom/generators/ClockTimeMarkerGenerator.java b/DataGenerator/src/main/java/net/minestom/generators/ClockTimeMarkerGenerator.java new file mode 100644 index 0000000..d3afc36 --- /dev/null +++ b/DataGenerator/src/main/java/net/minestom/generators/ClockTimeMarkerGenerator.java @@ -0,0 +1,26 @@ +package net.minestom.generators; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.clock.ClockTimeMarker; +import net.minecraft.world.clock.ClockTimeMarkers; +import net.minestom.datagen.DataGenerator; + +import java.lang.reflect.Field; + +public class ClockTimeMarkerGenerator extends DataGenerator { + + @Override + @SuppressWarnings("unchecked") + public JsonElement generate() throws Exception { + JsonObject markers = new JsonObject(); + for (Field declaredField : ClockTimeMarkers.class.getDeclaredFields()) { + if (declaredField.getType() != ResourceKey.class) continue; + ResourceKey marker = (ResourceKey) declaredField.get(null); + // I'm expecting this to become a dynamic registry at some point. + markers.add(marker.identifier().toString(), new JsonObject()); + } + return markers; + } +} From 50064eaca018118c45423d3789c8a784d5b16ecb Mon Sep 17 00:00:00 2001 From: kermandev <46640204+kermandev@users.noreply.github.com> Date: Thu, 12 Mar 2026 21:43:43 -0500 Subject: [PATCH 04/10] chore: Update to 26.1-pre-1 --- .../net/minestom/generators/BlockGenerator.java | 17 ++++++----------- gradle/libs.versions.toml | 4 ++-- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/DataGenerator/src/main/java/net/minestom/generators/BlockGenerator.java b/DataGenerator/src/main/java/net/minestom/generators/BlockGenerator.java index 3d46a63..8c70431 100644 --- a/DataGenerator/src/main/java/net/minestom/generators/BlockGenerator.java +++ b/DataGenerator/src/main/java/net/minestom/generators/BlockGenerator.java @@ -20,6 +20,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.*; +import java.util.stream.Collectors; public final class BlockGenerator extends DataGenerator { @Override @@ -82,18 +83,12 @@ public JsonObject generate() { state.addProperty("stateId", Block.BLOCK_STATE_REGISTRY.getId(bs)); writeState(location, block, blockSoundTypes, bs, blockJson, state); - StringBuilder stateName = new StringBuilder("["); - for (var propertyEntry : bs.getValues().entrySet()) { - if (stateName.length() > 1) { - stateName.append(","); - } - stateName.append(propertyEntry.getKey().getName().toLowerCase(Locale.ROOT)) - .append("=") - .append(propertyEntry.getValue().toString().toLowerCase(Locale.ROOT)); - } - stateName.append("]"); + //[property=value,property2=value2,...] + String stateName = bs.getValues() + .map(v -> v.toString().toLowerCase(Locale.ROOT)) + .collect(Collectors.joining(",", "[", "]")); - blockStates.add(stateName.toString(), state); + blockStates.add(stateName, state); } blockJson.add("states", blockStates); blocks.add(location.toString(), blockJson); diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c77b530..38c94e5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,12 +2,12 @@ metadata.format.version = "1.1" [versions] gson = "2.13.2" -minecraft = "26.1-snapshot-11" +minecraft = "26.1-pre-1" slf4j-api = "2.0.17" logback = "1.5.22" -loom = "1.14-SNAPSHOT" +loom = "1.15-SNAPSHOT" nmcp = "1.3.0" [libraries] From fd3b796d9fd026ae3ea5ec73f668ca5f64724639 Mon Sep 17 00:00:00 2001 From: kermandev <46640204+kermandev@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:34:35 -0500 Subject: [PATCH 05/10] chore: Update to 26.1-pre-2 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 38c94e5..33450a8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ metadata.format.version = "1.1" [versions] gson = "2.13.2" -minecraft = "26.1-pre-1" +minecraft = "26.1-pre-2" slf4j-api = "2.0.17" logback = "1.5.22" From d492fa33979973628846c5a4ca46b59998d2d2ac Mon Sep 17 00:00:00 2001 From: kermandev <46640204+kermandev@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:35:01 -0500 Subject: [PATCH 06/10] fix: Make args by default for :run too --- DataGenerator/build.gradle.kts | 4 ++++ build.gradle.kts | 5 +---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/DataGenerator/build.gradle.kts b/DataGenerator/build.gradle.kts index 4782c6a..03af87a 100644 --- a/DataGenerator/build.gradle.kts +++ b/DataGenerator/build.gradle.kts @@ -18,6 +18,10 @@ application { mainClass.set("net.minestom.datagen.DataGen") } +tasks.run { + args = arrayListOf(rootDir.resolve("src/main/resources/net/minestom/data").absolutePath) +} + java { sourceCompatibility = JavaVersion.VERSION_25 targetCompatibility = JavaVersion.VERSION_25 diff --git a/build.gradle.kts b/build.gradle.kts index b37a093..d39bd7e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -41,10 +41,7 @@ tasks.register("generateData") { logger.warn("The data may or may not be the intellectual property of Mojang Studios.") logger.warn("") - // Simplified by Sponge's VanillaGradle - dependsOn(project(":DataGenerator").tasks.getByName("run") { - args = arrayListOf(rootDir.resolve("src/main/resources/net/minestom/data").absolutePath) - }) + dependsOn(project(":DataGenerator").tasks.getByName("run")) } tasks.processResources.get().dependsOn("generateData") From 38bec65bba70a11c4d5b91fd53842ddb4fc7a46b Mon Sep 17 00:00:00 2001 From: mworzala Date: Sat, 21 Mar 2026 11:22:30 -0400 Subject: [PATCH 07/10] chore: bump to 26.1-rc-2 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 33450a8..9ae5ace 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ metadata.format.version = "1.1" [versions] gson = "2.13.2" -minecraft = "26.1-pre-2" +minecraft = "26.1-rc-2" slf4j-api = "2.0.17" logback = "1.5.22" From 76af2ea829b0a89978de40011be5919b395b5c13 Mon Sep 17 00:00:00 2001 From: mworzala Date: Sat, 21 Mar 2026 11:59:32 -0400 Subject: [PATCH 08/10] chore: generate game rules --- .../net/minestom/datagen/DataGenType.java | 1 + .../generators/GameRuleGenerator.java | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 DataGenerator/src/main/java/net/minestom/generators/GameRuleGenerator.java diff --git a/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java b/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java index bd65ad2..8b90be1 100644 --- a/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java +++ b/DataGenerator/src/main/java/net/minestom/datagen/DataGenType.java @@ -29,6 +29,7 @@ public enum DataGenType { VILLAGER_TYPES("villager_types", new GenericRegistryArrayGenerator<>(BuiltInRegistries.VILLAGER_TYPE)), BLOCK_ENTITY_TYPES("block_entity_types", new GenericRegistryObjectGenerator<>(BuiltInRegistries.BLOCK_ENTITY_TYPE)), CLOCK_TIME_MARKERS("clock_time_marker", new ClockTimeMarkerGenerator()), + GAME_RULES("game_rule", new GameRuleGenerator()), // Static registries diff --git a/DataGenerator/src/main/java/net/minestom/generators/GameRuleGenerator.java b/DataGenerator/src/main/java/net/minestom/generators/GameRuleGenerator.java new file mode 100644 index 0000000..45f312e --- /dev/null +++ b/DataGenerator/src/main/java/net/minestom/generators/GameRuleGenerator.java @@ -0,0 +1,28 @@ +package net.minestom.generators; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.clock.ClockTimeMarker; +import net.minecraft.world.clock.ClockTimeMarkers; +import net.minestom.datagen.DataGenerator; + +import java.lang.reflect.Field; + +public class GameRuleGenerator extends DataGenerator { + + @Override + public JsonElement generate() throws Exception { + JsonObject markers = new JsonObject(); + for (var gameRule : BuiltInRegistries.GAME_RULE) { + var ruleJson = new JsonObject(); + ruleJson.addProperty("id", BuiltInRegistries.GAME_RULE.getId(gameRule)); + ruleJson.addProperty("category", gameRule.category().id().toShortString()); + ruleJson.addProperty("default", String.valueOf(gameRule.defaultValue())); + markers.add(gameRule.getIdentifier().toShortString(), ruleJson); + } + return markers; + } +} From 34f57a8519946885bf867236b89c4a778d4cea3b Mon Sep 17 00:00:00 2001 From: Kerman <46640204+kermandev@users.noreply.github.com> Date: Tue, 24 Mar 2026 11:51:29 -0500 Subject: [PATCH 09/10] refactor: Update GameRuleGenerator Missed during last codegeneration. --- .../main/java/net/minestom/generators/GameRuleGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DataGenerator/src/main/java/net/minestom/generators/GameRuleGenerator.java b/DataGenerator/src/main/java/net/minestom/generators/GameRuleGenerator.java index 45f312e..9d95678 100644 --- a/DataGenerator/src/main/java/net/minestom/generators/GameRuleGenerator.java +++ b/DataGenerator/src/main/java/net/minestom/generators/GameRuleGenerator.java @@ -19,8 +19,8 @@ public JsonElement generate() throws Exception { for (var gameRule : BuiltInRegistries.GAME_RULE) { var ruleJson = new JsonObject(); ruleJson.addProperty("id", BuiltInRegistries.GAME_RULE.getId(gameRule)); - ruleJson.addProperty("category", gameRule.category().id().toShortString()); ruleJson.addProperty("default", String.valueOf(gameRule.defaultValue())); + ruleJson.addProperty("type", gameRule.gameRuleType().getSerializedName()); markers.add(gameRule.getIdentifier().toShortString(), ruleJson); } return markers; From 1500055f9b1ea5f4699e817f520f5c4427a491ca Mon Sep 17 00:00:00 2001 From: Kerman <46640204+kermandev@users.noreply.github.com> Date: Tue, 24 Mar 2026 11:52:36 -0500 Subject: [PATCH 10/10] feat: Update to 26.1 release --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9ae5ace..0dc7766 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ metadata.format.version = "1.1" [versions] gson = "2.13.2" -minecraft = "26.1-rc-2" +minecraft = "26.1" slf4j-api = "2.0.17" logback = "1.5.22"