From f93bfe33607537fb7b02767bcfee470ed6aff71c Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 10 Oct 2025 03:05:57 -0700 Subject: [PATCH 1/7] fix compostor lang key --- src/main/resources/assets/groovyscript/lang/en_us.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/groovyscript/lang/en_us.lang b/src/main/resources/assets/groovyscript/lang/en_us.lang index a528d1139..04dc80b7e 100644 --- a/src/main/resources/assets/groovyscript/lang/en_us.lang +++ b/src/main/resources/assets/groovyscript/lang/en_us.lang @@ -1569,7 +1569,7 @@ groovyscript.wiki.futuremc.composter.title=Composter groovyscript.wiki.futuremc.composter.description=Converts input items into a chance to get a layer of compost, with 8 layers providing a single bonemeal groovyscript.wiki.futuremc.composter.add=Adds entries in the format `ingredient`, `chance` groovyscript.wiki.futuremc.composter.remove=Removes an entry with the same Ingredient -groovyscript.wiki.futuremc.composter.rarity.value=Sets the chance the recipe has to provide a layer of compost +groovyscript.wiki.futuremc.composter.chance.value=Sets the chance the recipe has to provide a layer of compost groovyscript.wiki.futuremc.smithing.title=Smithing groovyscript.wiki.futuremc.smithing.description=Converts two input itemstacks into an output output itemstack in the Smithing Table. From 1521e14baf4a91efd8591428941b5ffcddde7e80 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 10 Oct 2025 03:06:19 -0700 Subject: [PATCH 2/7] sort skipped classes before logging --- .../com/cleanroommc/groovyscript/documentation/Exporter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/Exporter.java b/src/main/java/com/cleanroommc/groovyscript/documentation/Exporter.java index 571dd97b1..ab3ccfc61 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/Exporter.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/Exporter.java @@ -163,7 +163,9 @@ public static void generateExamples(String target, GroovyContainer log.add(key + ": " + value.getName())); + SKIPPED_CLASSES.entrySet().stream() + .sorted(Map.Entry.comparingByKey(String.CASE_INSENSITIVE_ORDER)) + .forEach(entry -> log.add(entry.getKey() + ": " + entry.getValue().getName())); log.debug().post(); SKIPPED_CLASSES.clear(); } From 30795d5239dac646a27e7afbc7b10a08d8c7c8de Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 10 Oct 2025 03:06:36 -0700 Subject: [PATCH 3/7] fix crafting methods missing lang key --- .../com/cleanroommc/groovyscript/compat/vanilla/Crafting.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java index 3ec077aa8..5843d251c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java @@ -21,8 +21,8 @@ @Admonition(type = Admonition.Type.NOTE, value = "groovyscript.wiki.minecraft.crafting.note1"), @Admonition(type = Admonition.Type.TIP, value = "groovyscript.wiki.minecraft.crafting.note2"), }, override = @MethodOverride(method = { - @MethodDescription(method = "remove(Lnet/minecraft/util/ResourceLocation;)V", example = @Example("resource('minecraft:stonebrick')")), - @MethodDescription(method = "remove(Ljava/lang/String;)V", example = @Example("'minecraft:mossy_stonebrick'")), + @MethodDescription(method = "remove(Lnet/minecraft/util/ResourceLocation;)V", example = @Example("resource('minecraft:stonebrick')"), description = "groovyscript.wiki.forgewrapper.removeResource"), + @MethodDescription(method = "remove(Ljava/lang/String;)V", example = @Example("'minecraft:mossy_stonebrick'"), description = "groovyscript.wiki.forgewrapper.removeString"), })) public class Crafting extends ForgeRegistryWrapper { From b80d7aa201c793c825146c0001f444025276fdfe Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 10 Oct 2025 03:06:53 -0700 Subject: [PATCH 4/7] add info parser for blockMaterial --- .../infoparser/InfoParserMaterial.java | 32 +++++++++++++++++++ .../StandardInfoParserRegistry.java | 1 + .../ingredient/GroovyScriptCodeConverter.java | 6 ++++ .../mapper/ObjectParserHelper.java | 10 +++--- 4 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserMaterial.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserMaterial.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserMaterial.java new file mode 100644 index 000000000..5ca2f0e96 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserMaterial.java @@ -0,0 +1,32 @@ +package com.cleanroommc.groovyscript.compat.vanilla.command.infoparser; + +import com.cleanroommc.groovyscript.api.infocommand.InfoParserPackage; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; +import net.minecraft.block.material.Material; +import org.jetbrains.annotations.NotNull; + +public class InfoParserMaterial extends GenericInfoParser { + + public static final InfoParserMaterial instance = new InfoParserMaterial(); + + @Override + public String id() { + return "material"; + } + + @Override + public String name() { + return "Material"; + } + + @Override + public String text(@NotNull Material entry, boolean colored, boolean prettyNbt) { + return GroovyScriptCodeConverter.asGroovyCode(entry, colored); + } + + @Override + public void parse(InfoParserPackage info) { + if (info.getBlockState() == null) return; + instance.add(info.getMessages(), info.getBlockState().getMaterial(), info.isPrettyNbt()); + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java index f10f34f64..c98d45d7a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java @@ -9,6 +9,7 @@ public static void init() { InfoParserRegistry.addInfoParser(InfoParserFluid.instance); InfoParserRegistry.addInfoParser(InfoParserBlock.instance); InfoParserRegistry.addInfoParser(InfoParserBlockState.instance); + InfoParserRegistry.addInfoParser(InfoParserMaterial.instance); InfoParserRegistry.addInfoParser(InfoParserOreDict.instance); InfoParserRegistry.addInfoParser(InfoParserNBT.instance); InfoParserRegistry.addInfoParser(InfoParserEntity.instance); diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java index a88b223f8..601b4615f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java @@ -2,8 +2,10 @@ import com.cleanroommc.groovyscript.core.mixin.CreativeTabsAccessor; import com.cleanroommc.groovyscript.helper.StyleConstant; +import com.cleanroommc.groovyscript.mapper.ObjectParserHelper; import com.google.common.collect.Lists; import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; @@ -209,6 +211,10 @@ public static String asGroovyCode(Block state, boolean colored) { return formatResourceLocation("block", state.getRegistryName(), colored); } + public static String asGroovyCode(Material material, boolean colored) { + return formatGenericHandler("blockMaterial", ObjectParserHelper.materials.inverse().get(material), colored); + } + @SuppressWarnings("all") public static String asGroovyCode(IBlockState state, boolean colored) { StringBuilder builder = new StringBuilder(); diff --git a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectParserHelper.java b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectParserHelper.java index 28c8dc58f..929391f7f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectParserHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectParserHelper.java @@ -1,22 +1,22 @@ package com.cleanroommc.groovyscript.mapper; -import com.google.common.collect.ImmutableMap; +import com.google.common.collect.BiMap; +import com.google.common.collect.ImmutableBiMap; import net.minecraft.block.material.Material; import java.lang.reflect.Modifier; import java.util.Locale; -import java.util.Map; public class ObjectParserHelper { - public static Map materials; + public static BiMap materials; public static void init() { materials = getMaterials(); } - private static ImmutableMap getMaterials() { - ImmutableMap.Builder materialBuilder = new ImmutableMap.Builder<>(); + private static BiMap getMaterials() { + ImmutableBiMap.Builder materialBuilder = new ImmutableBiMap.Builder<>(); for (var field : Material.class.getFields()) { if (Modifier.isStatic(field.getModifiers()) && field.getType() == Material.class) { try { From 029d302c9a9288936bc188c5faa2c83cc2a4df0d Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 10 Oct 2025 03:08:57 -0700 Subject: [PATCH 5/7] add toGroovyCode for blockMaterial --- .../com/cleanroommc/groovyscript/mapper/ObjectMapperManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMapperManager.java b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMapperManager.java index 79a8c692b..67ef9bf58 100644 --- a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMapperManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMapperManager.java @@ -132,6 +132,7 @@ public static void init() { .parser(IObjectParser.wrapStringGetter(ObjectParserHelper.materials::get)) .completerOfNames(ObjectParserHelper.materials::keySet) .docOfType("block material") + .toGroovyCode(x -> GroovyScriptCodeConverter.asGroovyCode(x, false)) .register(); /*ObjectMapper.builder("blockstate", IBlockState.class) .parser(ObjectMappers::parseBlockState) From 825190dd96864d640c12e6a899507231db66a7da Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:15:42 -0700 Subject: [PATCH 6/7] non-reflection blockMaterial map --- .../mapper/ObjectParserHelper.java | 54 +++++++++++++------ 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectParserHelper.java b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectParserHelper.java index 929391f7f..e53fe635f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectParserHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectParserHelper.java @@ -4,9 +4,6 @@ import com.google.common.collect.ImmutableBiMap; import net.minecraft.block.material.Material; -import java.lang.reflect.Modifier; -import java.util.Locale; - public class ObjectParserHelper { public static BiMap materials; @@ -16,18 +13,43 @@ public static void init() { } private static BiMap getMaterials() { - ImmutableBiMap.Builder materialBuilder = new ImmutableBiMap.Builder<>(); - for (var field : Material.class.getFields()) { - if (Modifier.isStatic(field.getModifiers()) && field.getType() == Material.class) { - try { - var material = (Material) field.get(null); - materialBuilder.put(field.getName(), material); - materialBuilder.put(field.getName().toLowerCase(Locale.ROOT), material); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - } - } - return materialBuilder.build(); + return new ImmutableBiMap.Builder() + .put("air", Material.AIR) + .put("grass", Material.GRASS) + .put("ground", Material.GROUND) + .put("wood", Material.WOOD) + .put("rock", Material.ROCK) + .put("iron", Material.IRON) + .put("anvil", Material.ANVIL) + .put("water", Material.WATER) + .put("lava", Material.LAVA) + .put("leaves", Material.LEAVES) + .put("plants", Material.PLANTS) + .put("vine", Material.VINE) + .put("sponge", Material.SPONGE) + .put("cloth", Material.CLOTH) + .put("fire", Material.FIRE) + .put("sand", Material.SAND) + .put("circuits", Material.CIRCUITS) + .put("carpet", Material.CARPET) + .put("glass", Material.GLASS) + .put("redstone_light", Material.REDSTONE_LIGHT) + .put("tnt", Material.TNT) + .put("coral", Material.CORAL) + .put("ice", Material.ICE) + .put("packed_ice", Material.PACKED_ICE) + .put("snow", Material.SNOW) + .put("crafted_snow", Material.CRAFTED_SNOW) + .put("cactus", Material.CACTUS) + .put("clay", Material.CLAY) + .put("gourd", Material.GOURD) + .put("dragon_egg", Material.DRAGON_EGG) + .put("portal", Material.PORTAL) + .put("cake", Material.CAKE) + .put("web", Material.WEB) + .put("piston", Material.PISTON) + .put("barrier", Material.BARRIER) + .put("structure_void", Material.STRUCTURE_VOID) + .build(); } } From 7c57b03222f096a83bc32fa4e34b004ba4ed6993 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:22:33 -0700 Subject: [PATCH 7/7] block the material --- ...foParserMaterial.java => InfoParserBlockMaterial.java} | 8 ++++---- .../command/infoparser/StandardInfoParserRegistry.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) rename src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/{InfoParserMaterial.java => InfoParserBlockMaterial.java} (77%) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserMaterial.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlockMaterial.java similarity index 77% rename from src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserMaterial.java rename to src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlockMaterial.java index 5ca2f0e96..27b587239 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserMaterial.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlockMaterial.java @@ -5,18 +5,18 @@ import net.minecraft.block.material.Material; import org.jetbrains.annotations.NotNull; -public class InfoParserMaterial extends GenericInfoParser { +public class InfoParserBlockMaterial extends GenericInfoParser { - public static final InfoParserMaterial instance = new InfoParserMaterial(); + public static final InfoParserBlockMaterial instance = new InfoParserBlockMaterial(); @Override public String id() { - return "material"; + return "blockmaterial"; } @Override public String name() { - return "Material"; + return "Block Material"; } @Override diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java index c98d45d7a..1aca4b276 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java @@ -9,7 +9,7 @@ public static void init() { InfoParserRegistry.addInfoParser(InfoParserFluid.instance); InfoParserRegistry.addInfoParser(InfoParserBlock.instance); InfoParserRegistry.addInfoParser(InfoParserBlockState.instance); - InfoParserRegistry.addInfoParser(InfoParserMaterial.instance); + InfoParserRegistry.addInfoParser(InfoParserBlockMaterial.instance); InfoParserRegistry.addInfoParser(InfoParserOreDict.instance); InfoParserRegistry.addInfoParser(InfoParserNBT.instance); InfoParserRegistry.addInfoParser(InfoParserEntity.instance);