更改依赖加载为 onLoad 前加载
//TODO 在插件启动之前加载依赖
This commit is contained in:
@@ -45,22 +45,27 @@ public class TLib {
|
||||
return tLib;
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
new File(Main.getInst().getDataFolder(), "/libs").mkdirs();
|
||||
tLib = new TLib();
|
||||
DependencyInjector.inject(Main.getInst(), tLib);
|
||||
public static void injectPluginManager() {
|
||||
// 注入 PluginLoader 用于加载依赖
|
||||
try {
|
||||
Field field = Bukkit.getServer().getClass().getDeclaredField("pluginManager");
|
||||
field.setAccessible(true);
|
||||
field.set(Bukkit.getServer(), new TLibPluginManager());
|
||||
tLib.getLogger().info("注入成功");
|
||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
tLib.getLogger().fatal("注入失败");
|
||||
}
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
new File(Main.getInst().getDataFolder(), "/libs").mkdirs();
|
||||
tLib = new TLib();
|
||||
DependencyInjector.inject(Main.getInst(), tLib);
|
||||
if (Bukkit.getPluginManager() instanceof TLibPluginManager)
|
||||
tLib.getLogger().info("注入成功");
|
||||
else
|
||||
tLib.getLogger().fatal("注入失败");
|
||||
}
|
||||
|
||||
public static void unload() {
|
||||
tLib.getConfigWatcher().unregisterAll();
|
||||
DependencyInjector.eject(Main.getInst(), tLib);
|
||||
|
||||
@@ -43,7 +43,7 @@ public class DependencyInjector {
|
||||
public static void eject(Plugin plugin, Object o) {
|
||||
try {
|
||||
ejectConfig(plugin, o);
|
||||
} catch (NoClassDefFoundError ignored) {
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,9 @@ public class TLibPluginManager implements PluginManager {
|
||||
|
||||
@Override
|
||||
public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException {
|
||||
return instance.loadPlugin(file);
|
||||
Plugin plugin = instance.loadPlugin(file);
|
||||
DependencyInjector.injectOnEnable(plugin);
|
||||
return plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -92,7 +94,6 @@ public class TLibPluginManager implements PluginManager {
|
||||
|
||||
@Override
|
||||
public void enablePlugin(Plugin plugin) {
|
||||
DependencyInjector.injectOnEnable(plugin);
|
||||
instance.enablePlugin(plugin);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user