Changed the PatchManager to update automatically

This was really needed, I think the code could be improved but it'd need a different approach from the PatchManager as well, so that's for another time.
This commit is contained in:
Daniel E 2019-12-18 12:48:34 -07:00
parent 9568251ef6
commit d9f9d27d22
3 changed files with 11 additions and 6 deletions

View File

@ -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);

View File

@ -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<String, Object> data) {
final boolean runtimeDeobfuscationEnabled =
(boolean) data.getOrDefault("runtimeDeobfuscationEnabled", false);
SeppukuClassTransformer.PATCH_MANAGER = new PatchManager(!runtimeDeobfuscationEnabled);
}
@Override
public String getAccessTransformerClass() {
return SeppukuAccessTransformer.class.getName();
}
}
}

View File

@ -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());