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/CraftingMapperMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperMixin.java new file mode 100644 index 000000000..02720f7fd --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/CraftingMapperMixin.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 CraftingMapperMixin { + + @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..b8509f8ad 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", + "CraftingMapperMixin" ] } \ No newline at end of file