package joshie.progression.asm; import joshie.progression.asm.AbstractASM.ASMType; import joshie.progression.asm.helpers.ASMHelper; import net.minecraft.launchwrapper.IClassTransformer; import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin.MCVersion; import java.util.ArrayList; import java.util.List; import java.util.Map; @MCVersion("1.9.4") public class ProgressionTransformer implements IFMLLoadingPlugin, IClassTransformer { public static boolean isObfuscated = false; public static List<AbstractASM> asm = new ArrayList(); static { ASMConfig c = ASMHelper.getASMConfig(); if (c.furnace) asm.add(new ASMFurnace()); if (c.transfer) asm.add(new ASMTransferCrafting()); if (c.player) asm.add(new ASMContainerPlayer()); if (c.workbench) asm.add(new ASMContainerWorkbench()); if (c.tinkers) asm.add(new ASMTinkers()); } @Override public byte[] transform(String name, String transformedName, byte[] data) { byte[] modified = data; for (AbstractASM a : asm) { if (a.isClass(name)) { if (a.isValidASMType(ASMType.VISITOR)) modified = ASMHelper.visit(name, a, data); if (a.isValidASMType(ASMType.OVERRIDE)) modified = ASMHelper.override(a, data); if (a.isValidASMType(ASMType.TRANSFORM)) modified = a.transform(data); } } return modified; } @Override public String[] getASMTransformerClass() { return new String[] { ProgressionTransformer.class.getName() }; } @Override public String getModContainerClass() { return null; } @Override public String getSetupClass() { return null; } @Override public void injectData(Map<String, Object> data) { isObfuscated = ((Boolean) data.get("runtimeDeobfuscationEnabled")); } @Override public String getAccessTransformerClass() { return null; } }