java类cpw.mods.fml.relauncher.IFMLLoadingPlugin的实例源码

CodeChickenCorePlugin.java 文件源码 项目:4Space-5 阅读 31 收藏 0 点赞 0 评论 0
private void injectDeobfPlugin() {
    try {
        Class<?> wrapperClass = Class.forName("cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper");
        Constructor wrapperConstructor = wrapperClass.getConstructor(String.class, IFMLLoadingPlugin.class, File.class, Integer.TYPE, String[].class);
        Field f_loadPlugins = CoreModManager.class.getDeclaredField("loadPlugins");
        wrapperConstructor.setAccessible(true);
        f_loadPlugins.setAccessible(true);
        ((List)f_loadPlugins.get(null)).add(2, wrapperConstructor.newInstance("CCCDeobfPlugin", new MCPDeobfuscationTransformer.LoadPlugin(), null, 0, new String[0]));
    } catch (Exception e) {
        logger.error("Failed to inject MCPDeobfuscation Transformer", e);
    }
}
CollectiveFrameworkEarlyTransformerPlugin.java 文件源码 项目:CollectiveFramework 阅读 24 收藏 0 点赞 0 评论 0
private void injectNewTransformer() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException, IllegalAccessException, InvocationTargetException, InstantiationException {
    Class e = Class.forName("cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper");
    Constructor wrapperConstructor = e.getConstructor(new Class[]{String.class, IFMLLoadingPlugin.class, File.class, Integer.TYPE, String[].class});
    Field loadPlugins = CoreModManager.class.getDeclaredField("loadPlugins");
    wrapperConstructor.setAccessible(true);
    loadPlugins.setAccessible(true);
    ((List)loadPlugins.get((Object)null)).add(wrapperConstructor.newInstance(new Object[]{"CollectiveFrameworkPlugin", new CollectiveFrameworkTransformerPlugin(), null, Integer.valueOf(Integer.MAX_VALUE), new String[0]}));
    didInject = true;
}


问题


面经


文章

微信
公众号

扫码关注公众号