diff --git a/dependencies.gradle b/dependencies.gradle index 70fa763ed88..e2ef40e1819 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -41,7 +41,7 @@ dependencies { // Published dependencies api("codechicken:codechickenlib:3.2.3.358") api("com.cleanroommc:modularui:2.4.3") { transitive = false } - api("com.cleanroommc:groovyscript:1.0.1") { transitive = false } + api("com.cleanroommc:groovyscript:1.1.0") { transitive = false } api("CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.20.698") api("appeng:ae2-uel:v0.56.4") { transitive = false } api rfg.deobf("curse.maven:ctm-267602:2915363") // CTM 1.0.2.31 diff --git a/src/main/java/gregtech/GregTechMod.java b/src/main/java/gregtech/GregTechMod.java index 97350a1a009..a23dabd03c4 100644 --- a/src/main/java/gregtech/GregTechMod.java +++ b/src/main/java/gregtech/GregTechMod.java @@ -35,7 +35,7 @@ dependencies = "required:forge@[14.23.5.2847,);" + "required-after:codechickenlib@[3.2.3,);" + "required-after:modularui@[2.3,);" + "required-after:mixinbooter@[8.0,);" + "after:appliedenergistics2;" + "after:forestry;" + "after:extrabees;" + "after:extratrees;" + "after:genetics;" + "after:magicbees;" + - "after:jei@[4.15.0,);" + "after:crafttweaker@[4.1.20,);" + "after:groovyscript@[1.0.1,);" + + "after:jei@[4.15.0,);" + "after:crafttweaker@[4.1.20,);" + "after:groovyscript@[1.1.0,);" + "after:theoneprobe;" + "after:hwyla;") public class GregTechMod { diff --git a/src/main/java/gregtech/core/unification/material/internal/MaterialRegistryManager.java b/src/main/java/gregtech/core/unification/material/internal/MaterialRegistryManager.java index 265e2a875d0..ff26e95cdd2 100644 --- a/src/main/java/gregtech/core/unification/material/internal/MaterialRegistryManager.java +++ b/src/main/java/gregtech/core/unification/material/internal/MaterialRegistryManager.java @@ -140,6 +140,11 @@ private MaterialRegistryImpl createInternalRegistry() { return registry; } + @NotNull + public MaterialRegistry getDefaultRegistry() { + return gregtechRegistry; + } + @NotNull public Material getDefaultFallback() { return gregtechRegistry.getFallbackMaterial(); diff --git a/src/main/java/gregtech/integration/groovy/GroovyMaterialBuilderExpansion.java b/src/main/java/gregtech/integration/groovy/GroovyMaterialBuilderExpansion.java index 2b67fa26844..f132c8ea481 100644 --- a/src/main/java/gregtech/integration/groovy/GroovyMaterialBuilderExpansion.java +++ b/src/main/java/gregtech/integration/groovy/GroovyMaterialBuilderExpansion.java @@ -108,10 +108,16 @@ public static Material.Builder components(Material.Builder builder, Object... ob materialStacks.add(materialStack); } else if (o instanceof Material material) { materialStacks.add(new MaterialStack(material, 1)); + } else if (o instanceof Integer) { + GroovyLog.msg("Error creating GregTech material") + .add("Tried to use old method for material components in the shape of (material1, amount1, material2, amount2)") + .add("Please change this into (material1 * amount1, material2 * amount2)") + .error().post(); } else { - GroovyLog.get() - .error("Material components must be of type Material or MaterialStack, but was of type {}", - o == null ? null : o.getClass()); + GroovyLog.msg("Error creating GregTech material") + .add("Material components must be of type Material or MaterialStack, but was of type {}", + o == null ? null : o.getClass()) + .error().post(); } } return builder.components(materialStacks.toArray(new MaterialStack[0])); diff --git a/src/main/java/gregtech/integration/groovy/GroovyScriptModule.java b/src/main/java/gregtech/integration/groovy/GroovyScriptModule.java index ab61bfb9e0a..cca6dc79bab 100644 --- a/src/main/java/gregtech/integration/groovy/GroovyScriptModule.java +++ b/src/main/java/gregtech/integration/groovy/GroovyScriptModule.java @@ -37,12 +37,11 @@ import com.cleanroommc.groovyscript.GroovyScript; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.GroovyPlugin; -import com.cleanroommc.groovyscript.api.IGameObjectParser; +import com.cleanroommc.groovyscript.api.IObjectParser; import com.cleanroommc.groovyscript.api.Result; import com.cleanroommc.groovyscript.compat.mods.GroovyContainer; -import com.cleanroommc.groovyscript.compat.mods.ModPropertyContainer; +import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; import com.cleanroommc.groovyscript.event.ScriptRunEvent; -import com.cleanroommc.groovyscript.gameobjects.GameObjectHandler; import com.cleanroommc.groovyscript.helper.EnumHelper; import com.cleanroommc.groovyscript.sandbox.expand.ExpansionHelper; import com.google.common.collect.ImmutableList; @@ -118,6 +117,7 @@ public static > T parseAndValidateEnumValue(Class clazz, St return t; } + @Optional.Method(modid = Mods.Names.GROOVY_SCRIPT) public static GroovyContainer getInstance() { return modSupportContainer; } @@ -238,34 +238,31 @@ public static void loadMetaItemBracketHandler() { @Optional.Method(modid = Mods.Names.GROOVY_SCRIPT) @Override - public @Nullable ModPropertyContainer createModPropertyContainer() { + public @Nullable GroovyPropertyContainer createGroovyPropertyContainer() { return new PropertyContainer(); } + @Optional.Method(modid = Mods.Names.GROOVY_SCRIPT) @Override - public void onCompatLoaded(GroovyContainer groovyContainer) { - GroovyScriptModule.modSupportContainer = groovyContainer; - GameObjectHandler.builder("recipemap", RecipeMap.class) - .mod(GTValues.MODID) - .parser(IGameObjectParser.wrapStringGetter(RecipeMap::getByName)) + public void onCompatLoaded(GroovyContainer container) { + GroovyScriptModule.modSupportContainer = container; + container.objectMapperBuilder("recipemap", RecipeMap.class) + .parser(IObjectParser.wrapStringGetter(RecipeMap::getByName)) .completerOfNamed(RecipeMap::getRecipeMaps, RecipeMap::getUnlocalizedName) .register(); - GameObjectHandler.builder("material", Material.class) - .mod(GTValues.MODID) - .parser(IGameObjectParser.wrapStringGetter(GregTechAPI.materialManager::getMaterial)) + container.objectMapperBuilder("material", Material.class) + .parser(IObjectParser.wrapStringGetter(GregTechAPI.materialManager::getMaterial)) .completerOfNamed(GregTechAPI.materialManager::getRegisteredMaterials, mat -> mat.getResourceLocation().toString()) .register(); - GameObjectHandler.builder("oreprefix", OrePrefix.class) - .mod(GTValues.MODID) - .parser(IGameObjectParser.wrapStringGetter(OrePrefix::getPrefix)) + container.objectMapperBuilder("oreprefix", OrePrefix.class) + .parser(IObjectParser.wrapStringGetter(OrePrefix::getPrefix)) .completerOfNamed(OrePrefix::values, v -> v.name) .register(); - GameObjectHandler.builder("metaitem", ItemStack.class) - .mod(GTValues.MODID) - .parser(IGameObjectParser.wrapStringGetter(GroovyScriptModule::getMetaItem)) + container.objectMapperBuilder("metaitem", ItemStack.class) + .parser(IObjectParser.wrapStringGetter(GroovyScriptModule::getMetaItem)) .completer((paramIndex, items) -> { if (paramIndex != 0) return; for (var iterator = metaItems.object2ObjectEntrySet().fastIterator(); iterator.hasNext();) { @@ -280,8 +277,7 @@ public void onCompatLoaded(GroovyContainer groovyContainer) { }) .register(); - GameObjectHandler.builder("element", Element.class) - .mod(GTValues.MODID) + container.objectMapperBuilder("element", Element.class) .parser((s, args) -> { Element element = Elements.get(s); if (element != null) return Result.some(element); diff --git a/src/main/java/gregtech/integration/groovy/PropertyContainer.java b/src/main/java/gregtech/integration/groovy/PropertyContainer.java index 35da8ce4905..30930c68f9c 100644 --- a/src/main/java/gregtech/integration/groovy/PropertyContainer.java +++ b/src/main/java/gregtech/integration/groovy/PropertyContainer.java @@ -7,7 +7,7 @@ import com.cleanroommc.groovyscript.GroovyScript; import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.compat.mods.ModPropertyContainer; +import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; import com.cleanroommc.groovyscript.event.EventBusType; import com.cleanroommc.groovyscript.event.GroovyEventManager; import com.cleanroommc.groovyscript.sandbox.ClosureHelper; @@ -15,7 +15,7 @@ import groovy.lang.Closure; import groovy.lang.DelegatesTo; -public class PropertyContainer extends ModPropertyContainer { +public class PropertyContainer extends GroovyPropertyContainer { public void materialEvent(EventPriority priority, @DelegatesTo(MaterialEvent.class) Closure eventListener) { if (GroovyScriptModule.isCurrentlyRunning() && diff --git a/src/main/java/gregtech/integration/groovy/VirtualizedRecipeMap.java b/src/main/java/gregtech/integration/groovy/VirtualizedRecipeMap.java index 6bd80f4db05..ff2e351d811 100644 --- a/src/main/java/gregtech/integration/groovy/VirtualizedRecipeMap.java +++ b/src/main/java/gregtech/integration/groovy/VirtualizedRecipeMap.java @@ -23,7 +23,7 @@ public class VirtualizedRecipeMap extends VirtualizedRegistry { public VirtualizedRecipeMap(RecipeMap recipeMap) { super(Alias.generateOf(recipeMap.unlocalizedName, CaseFormat.LOWER_UNDERSCORE)); this.recipeMap = recipeMap; - GroovyScriptModule.getInstance().getRegistrar().addRegistry(this); + GroovyScriptModule.getInstance().addProperty(this); } @Override