Skip to content

Commit

Permalink
Add Tweaker which will ensure transformer is last, if possible.
Browse files Browse the repository at this point in the history
  • Loading branch information
LunNova committed Jun 22, 2016
1 parent 33f52a9 commit e13a95d
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,12 @@ public static void addTransformer(IClassTransformer transformer) {

int target = -1;
for (int i = 0; i < transformers.size(); i++) {
String className = transformers.get(i).getClass().getName();
IClassTransformer current = transformers.get(i);

if (current == transformer)
transformers.remove(i--);

String className = current.getClass().getName();
if (DEOBF_TRANSFORMER_NAMES.contains(className))
target = i;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ public static void initialiseClassLoader(LaunchClassLoader classLoader) {
classLoader.addTransformerExclusion("com.github.javaparser.");

LaunchClassLoaderUtil.instance = classLoader;
ModPatcherTweaker.add();
LaunchClassLoaderUtil.addTransformer(ModPatcherTransformer.getInstance());
LaunchClassLoaderUtil.dumpTransformersIfEnabled();
LaunchClassLoaderUtil.removeRedundantExclusions();
Expand Down
45 changes: 45 additions & 0 deletions src/main/java/me/nallar/modpatcher/ModPatcherTweaker.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package me.nallar.modpatcher;

import net.minecraft.launchwrapper.ITweaker;
import net.minecraft.launchwrapper.Launch;
import net.minecraft.launchwrapper.LaunchClassLoader;

import java.io.*;
import java.util.*;

/**
* Tries to ensure that our transformer is last
*/
public class ModPatcherTweaker implements ITweaker {
@SuppressWarnings("unchecked")
public static void add() {
List<String> newTweaks = (List<String>) Launch.blackboard.get("TweakClasses");
newTweaks.add(ModPatcherTweaker.class.getName());
}

private static void inject() {
LaunchClassLoaderUtil.addTransformer(ModPatcherTransformer.getInstance());
}

@Override
public void acceptOptions(List<String> list, File file, File file1, String s) {
inject();
}

@Override
public void injectIntoClassLoader(LaunchClassLoader launchClassLoader) {
inject();
}

@Override
public String getLaunchTarget() {
inject();
return null;
}

@Override
public String[] getLaunchArguments() {
inject();
return new String[0];
}
}

0 comments on commit e13a95d

Please sign in to comment.