"after:ThermalExpansion;" +
"after:BetterStorage")
public class LogisticsPipes {
public LogisticsPipes() {
LaunchClassLoader loader = Launch.classLoader;
boolean found = false;
for(IClassTransformer transformer:loader.getTransformers()) {
if(transformer.getClass().getName().equals("logisticspipes.asm.LogisticsClassTransformer")) {
found = true;
break;
}
}
if(!found) {
throw new RuntimeException("LogisticsPipes could not find its class transformer. If you are running MC from an IDE make sure to copy the 'LogisticsPipes_dummy.jar' to your mods folder. If you are running MC normal please report this as a bug at 'https://github.com/RS485/LogisticsPipes/issues'.");
}
try {
Field fTransformers = LaunchClassLoader.class.getDeclaredField("transformers");
fTransformers.setAccessible(true);
@SuppressWarnings("unchecked")
List<IClassTransformer> transformers = (List<IClassTransformer>) fTransformers.get(loader);
IClassTransformer lpClassInjector = new LogisticsPipesClassInjector();
transformers.add(lpClassInjector);
// Avoid NPE caused by wrong ClassTransformers
for(int i=transformers.size() - 1 ; i > 0;i--) { // Move everything one up
transformers.set(i, transformers.get(i - 1));
}
transformers.set(0, lpClassInjector); // So that our injector can be first
} catch(NoSuchFieldException e) {
loader.registerTransformer("logisticspipes.asm.LogisticsPipesClassInjector");
e.printStackTrace();
} catch(SecurityException e) {
loader.registerTransformer("logisticspipes.asm.LogisticsPipesClassInjector");
e.printStackTrace();
} catch(IllegalArgumentException e) {
loader.registerTransformer("logisticspipes.asm.LogisticsPipesClassInjector");
e.printStackTrace();
} catch(IllegalAccessException e) {
loader.registerTransformer("logisticspipes.asm.LogisticsPipesClassInjector");
e.printStackTrace();
}
PacketHandler.initialize();
NewGuiHandler.initialize();
}