From 7dbc5373ddb80a7cfaf24b1b02f1d01908610d6a Mon Sep 17 00:00:00 2001 From: Ponzu-IKA <138089174+Ponzu-IKA@users.noreply.github.com> Date: Wed, 8 Oct 2025 00:11:56 +0900 Subject: [PATCH 1/2] feat: GroovyScript recipe can calculate EMC for ProjectE --- .../compat/mods/projecte/EMCMapper.java | 24 ++++++++++++++++ .../projecte/CraftingMapperAccessor.java | 28 +++++++++++++++++++ .../mixin.groovyscript.projecte.json | 3 +- 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/EMCMapper.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperAccessor.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/EMCMapper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/EMCMapper.java new file mode 100644 index 000000000..255312a2b --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/EMCMapper.java @@ -0,0 +1,24 @@ +package com.cleanroommc.groovyscript.compat.mods.projecte; + +import com.cleanroommc.groovyscript.compat.vanilla.ShapedCraftingRecipe; +import com.cleanroommc.groovyscript.compat.vanilla.ShapelessCraftingRecipe; +import moze_intel.projecte.emc.mappers.CraftingMapper; +import net.minecraft.item.crafting.IRecipe; + +public class EMCMapper implements CraftingMapper.IRecipeMapper { + + @Override + public String getName() { + return "GroovyScriptEMCMapper"; + } + + @Override + public String getDescription() { + return "Supporting GroovyScript class 'ShapedCraftingRecipe' and 'ShapelessCraftingRecipe'"; + } + + @Override + public boolean canHandle(IRecipe iRecipe) { + return iRecipe instanceof ShapedCraftingRecipe || iRecipe instanceof ShapelessCraftingRecipe; + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperAccessor.java new file mode 100644 index 000000000..a6ecb8314 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperAccessor.java @@ -0,0 +1,28 @@ +package com.cleanroommc.groovyscript.core.mixin.projecte; + +import com.cleanroommc.groovyscript.compat.mods.projecte.EMCMapper; +import moze_intel.projecte.emc.mappers.CraftingMapper; +import moze_intel.projecte.emc.mappers.CraftingMapper.IRecipeMapper; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.ArrayList; +import java.util.List; + +@Mixin(value = CraftingMapper.class, remap = false) +public class CraftingMapperAccessor { + + @Shadow @Final @Mutable + private List recipeMappers; + + @Inject(method = "", at = @At("RETURN")) + private void onInit(CallbackInfo ci) { + this.recipeMappers = new ArrayList<>(this.recipeMappers); + this.recipeMappers.add(new EMCMapper()); + } +} diff --git a/src/main/resources/mixin.groovyscript.projecte.json b/src/main/resources/mixin.groovyscript.projecte.json index 719e2ec2f..9818ec723 100644 --- a/src/main/resources/mixin.groovyscript.projecte.json +++ b/src/main/resources/mixin.groovyscript.projecte.json @@ -5,6 +5,7 @@ "minVersion": "0.8", "compatibilityLevel": "JAVA_8", "mixins": [ - "WorldHelperAccessor" + "WorldHelperAccessor", + "CraftingMapperAccessor" ] } \ No newline at end of file From 52b4b69910a864b084a141f5b3a7e260bc4e863e Mon Sep 17 00:00:00 2001 From: Ponzu-IKA <138089174+Ponzu-IKA@users.noreply.github.com> Date: Wed, 8 Oct 2025 00:31:41 +0900 Subject: [PATCH 2/2] refactor: that's not accessor --- .../{CraftingMapperAccessor.java => CraftingMapperMixin.java} | 2 +- src/main/resources/mixin.groovyscript.projecte.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/{CraftingMapperAccessor.java => CraftingMapperMixin.java} (96%) diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperMixin.java similarity index 96% rename from src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperAccessor.java rename to src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperMixin.java index a6ecb8314..02720f7fd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperMixin.java @@ -15,7 +15,7 @@ import java.util.List; @Mixin(value = CraftingMapper.class, remap = false) -public class CraftingMapperAccessor { +public class CraftingMapperMixin { @Shadow @Final @Mutable private List recipeMappers; diff --git a/src/main/resources/mixin.groovyscript.projecte.json b/src/main/resources/mixin.groovyscript.projecte.json index 9818ec723..b8509f8ad 100644 --- a/src/main/resources/mixin.groovyscript.projecte.json +++ b/src/main/resources/mixin.groovyscript.projecte.json @@ -6,6 +6,6 @@ "compatibilityLevel": "JAVA_8", "mixins": [ "WorldHelperAccessor", - "CraftingMapperAccessor" + "CraftingMapperMixin" ] } \ No newline at end of file