diff --git a/src/main/java/me/rigamortis/seppuku/impl/fml/core/SeppukuClassTransformer.java b/src/main/java/me/rigamortis/seppuku/impl/fml/core/SeppukuClassTransformer.java index 5eb7d8e..6da2733 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/fml/core/SeppukuClassTransformer.java +++ b/src/main/java/me/rigamortis/seppuku/impl/fml/core/SeppukuClassTransformer.java @@ -19,8 +19,7 @@ import java.lang.reflect.Method; * 4/4/2019 @ 11:49 PM. */ public final class SeppukuClassTransformer implements IClassTransformer { - - private static final PatchManager PATCH_MANAGER = new PatchManager(PatchManager.Environment.IDE); + public static PatchManager PATCH_MANAGER = null; /** * Every time a class is loaded we can intercept it and modify the bytecode @@ -32,6 +31,9 @@ public final class SeppukuClassTransformer implements IClassTransformer { */ @Override public byte[] transform(String name, String transformedName, byte[] basicClass) { + if (PATCH_MANAGER == null) + return basicClass; + try { //find a patch based on the class name final ClassPatch patch = PATCH_MANAGER.findClassPatch(name); diff --git a/src/main/java/me/rigamortis/seppuku/impl/fml/core/SeppukuLoadingPlugin.java b/src/main/java/me/rigamortis/seppuku/impl/fml/core/SeppukuLoadingPlugin.java index af83fc6..baf7c31 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/fml/core/SeppukuLoadingPlugin.java +++ b/src/main/java/me/rigamortis/seppuku/impl/fml/core/SeppukuLoadingPlugin.java @@ -1,5 +1,6 @@ package me.rigamortis.seppuku.impl.fml.core; +import me.rigamortis.seppuku.impl.management.PatchManager; import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; import javax.annotation.Nullable; @@ -33,11 +34,13 @@ public final class SeppukuLoadingPlugin implements IFMLLoadingPlugin { @Override public void injectData(Map data) { - + final boolean runtimeDeobfuscationEnabled = + (boolean) data.getOrDefault("runtimeDeobfuscationEnabled", false); + SeppukuClassTransformer.PATCH_MANAGER = new PatchManager(!runtimeDeobfuscationEnabled); } @Override public String getAccessTransformerClass() { return SeppukuAccessTransformer.class.getName(); } -} \ No newline at end of file +} diff --git a/src/main/java/me/rigamortis/seppuku/impl/management/PatchManager.java b/src/main/java/me/rigamortis/seppuku/impl/management/PatchManager.java index 8bb38fc..78fdeb0 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/management/PatchManager.java +++ b/src/main/java/me/rigamortis/seppuku/impl/management/PatchManager.java @@ -18,9 +18,9 @@ public final class PatchManager { private Environment env; - public PatchManager(Environment env) { + public PatchManager(final boolean devEnv) { //set our environment for mappings - this.setEnv(env); + this.setEnv(devEnv ? Environment.IDE : Environment.RELEASE); //add internal patches this.patchList.add(new MinecraftPatch());