From 24f564b07a34a7dee4e25d3c837a1544a45dd9d9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:24:11 +0000 Subject: [PATCH 1/6] Initial plan From e92ccd4fb410eb1d991bff95aad339baa5aab2b2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:28:13 +0000 Subject: [PATCH 2/6] Add IMixinConfigPlugin to gate JEI mixin behind mod presence check Co-authored-by: solidDoWant <16456946+solidDoWant@users.noreply.github.com> --- .../GregTechEnergisticsMixinPlugin.java | 59 +++++++++++++++++++ .../resources/mixins.gregtechenergistics.json | 1 + 2 files changed, 60 insertions(+) create mode 100644 src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java diff --git a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java new file mode 100644 index 0000000..727646a --- /dev/null +++ b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java @@ -0,0 +1,59 @@ +package com.soliddowant.gregtechenergistics.mixins; + +import java.util.List; +import java.util.Set; + +import org.spongepowered.asm.lib.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import net.minecraftforge.fml.common.Loader; + +/** + * Mixin config plugin that conditionally loads mixins based on mod presence. + * This prevents crashes when optional dependencies like JEI are not installed. + */ +public class GregTechEnergisticsMixinPlugin implements IMixinConfigPlugin { + + @Override + public void onLoad(String mixinPackage) { + // No initialization needed + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + // Only gate JEI-related mixins behind JEI presence check + if (mixinClassName.contains(".jei.")) { + return Loader.isModLoaded("jei"); + } + + // Apply all other mixins unconditionally + return true; + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) { + // No special target handling needed + } + + @Override + public List getMixins() { + // Return null to let the config file handle mixin listing + return null; + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + // No pre-apply processing needed + } + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + // No post-apply processing needed + } +} diff --git a/src/main/resources/mixins.gregtechenergistics.json b/src/main/resources/mixins.gregtechenergistics.json index b5f1577..8fd452e 100644 --- a/src/main/resources/mixins.gregtechenergistics.json +++ b/src/main/resources/mixins.gregtechenergistics.json @@ -4,6 +4,7 @@ "target": "@env(DEFAULT)", "minVersion": "0.8", "compatibilityLevel": "JAVA_8", + "plugin": "com.soliddowant.gregtechenergistics.mixins.GregTechEnergisticsMixinPlugin", "mixins": [ "MetaTileEntityHolderMixin" ], From 5b4bd69df6bcc5af67c521a2b1394c9741606ff4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:29:05 +0000 Subject: [PATCH 3/6] Use startsWith for more precise JEI mixin package detection Co-authored-by: solidDoWant <16456946+solidDoWant@users.noreply.github.com> --- .../mixins/GregTechEnergisticsMixinPlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java index 727646a..b67b2d1 100644 --- a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java +++ b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java @@ -28,7 +28,8 @@ public String getRefMapperConfig() { @Override public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { // Only gate JEI-related mixins behind JEI presence check - if (mixinClassName.contains(".jei.")) { + // Check if the mixin is in the jei subpackage + if (mixinClassName.startsWith("com.soliddowant.gregtechenergistics.mixins.jei.")) { return Loader.isModLoaded("jei"); } From e8b52a785a72be293fe6e554589b33b7544a3eb6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:30:00 +0000 Subject: [PATCH 4/6] Make JEI package detection more robust using mixinPackage parameter Co-authored-by: solidDoWant <16456946+solidDoWant@users.noreply.github.com> --- .../mixins/GregTechEnergisticsMixinPlugin.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java index b67b2d1..9e8364f 100644 --- a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java +++ b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java @@ -15,9 +15,11 @@ */ public class GregTechEnergisticsMixinPlugin implements IMixinConfigPlugin { + private String mixinPackage; + @Override public void onLoad(String mixinPackage) { - // No initialization needed + this.mixinPackage = mixinPackage; } @Override @@ -29,7 +31,8 @@ public String getRefMapperConfig() { public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { // Only gate JEI-related mixins behind JEI presence check // Check if the mixin is in the jei subpackage - if (mixinClassName.startsWith("com.soliddowant.gregtechenergistics.mixins.jei.")) { + String jeiMixinPackage = mixinPackage + ".jei."; + if (mixinClassName.startsWith(jeiMixinPackage)) { return Loader.isModLoaded("jei"); } From f2cf62eed8d96cc4af8666352bd3f8e21b10665d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:30:56 +0000 Subject: [PATCH 5/6] Extract JEI constants and fix formatting Co-authored-by: solidDoWant <16456946+solidDoWant@users.noreply.github.com> --- .../mixins/GregTechEnergisticsMixinPlugin.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java index 9e8364f..06951f8 100644 --- a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java +++ b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java @@ -15,6 +15,9 @@ */ public class GregTechEnergisticsMixinPlugin implements IMixinConfigPlugin { + private static final String JEI_PACKAGE_SUFFIX = ".jei."; + private static final String JEI_MOD_ID = "jei"; + private String mixinPackage; @Override @@ -31,9 +34,9 @@ public String getRefMapperConfig() { public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { // Only gate JEI-related mixins behind JEI presence check // Check if the mixin is in the jei subpackage - String jeiMixinPackage = mixinPackage + ".jei."; + String jeiMixinPackage = mixinPackage + JEI_PACKAGE_SUFFIX; if (mixinClassName.startsWith(jeiMixinPackage)) { - return Loader.isModLoaded("jei"); + return Loader.isModLoaded(JEI_MOD_ID); } // Apply all other mixins unconditionally @@ -60,4 +63,4 @@ public void preApply(String targetClassName, ClassNode targetClass, String mixin public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { // No post-apply processing needed } -} +} \ No newline at end of file From 8768e7800ecd767d386ba0eb01aac44cf389333d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:31:44 +0000 Subject: [PATCH 6/6] Add documentation for JEI package convention Co-authored-by: solidDoWant <16456946+solidDoWant@users.noreply.github.com> --- .../mixins/GregTechEnergisticsMixinPlugin.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java index 06951f8..a3e5ddb 100644 --- a/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java +++ b/src/main/java/com/soliddowant/gregtechenergistics/mixins/GregTechEnergisticsMixinPlugin.java @@ -12,6 +12,11 @@ /** * Mixin config plugin that conditionally loads mixins based on mod presence. * This prevents crashes when optional dependencies like JEI are not installed. + * + *

This plugin assumes that JEI-specific mixins are placed in a ".jei" subpackage + * under the main mixin package. For example, if the mixin package is + * "com.soliddowant.gregtechenergistics.mixins", then JEI mixins should be in + * "com.soliddowant.gregtechenergistics.mixins.jei".

*/ public class GregTechEnergisticsMixinPlugin implements IMixinConfigPlugin {