+ 修复:插件主动调用依赖注入方法后重复注入的问题
This commit is contained in:
坏黑
2018-07-09 20:02:21 +08:00
parent 655e3c2619
commit dd2e1f7d1c
4 changed files with 41 additions and 31 deletions

View File

@@ -13,10 +13,17 @@ import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* @author Izzel_Aliz
*/
public class TDependencyInjector {
private static List<String> injected = new ArrayList<>();
public static Dependency[] getDependencies(Object o) {
Dependency[] dependencies = new Dependency[0];
Dependencies d = o.getClass().getAnnotation(Dependencies.class);
@@ -30,26 +37,28 @@ public class TDependencyInjector {
return dependencies;
}
public static void inject(Plugin plugin, Object o) {
TLocaleLoader.load(plugin, true);
injectDependencies(plugin, o);
injectLogger(plugin, o);
injectConfig(plugin, o);
injectPluginInstance(plugin, o);
}
static void injectOnEnable(Plugin plugin) {
if (!plugin.equals(Main.getInst())) {
inject(plugin, plugin);
}
inject(plugin, plugin);
}
static void onDisable(Plugin plugin) {
static void ejectOnDisable(Plugin plugin) {
eject(plugin, plugin);
}
public static void inject(Plugin plugin, Object o) {
if (!plugin.equals(Main.getInst()) && !injected.contains(plugin.getName())) {
injected.add(plugin.getName());
TLocaleLoader.load(plugin, true);
injectDependencies(plugin, o);
injectLogger(plugin, o);
injectConfig(plugin, o);
injectPluginInstance(plugin, o);
}
}
public static void eject(Plugin plugin, Object o) {
try {
injected.remove(plugin.getName());
ejectConfig(plugin, o);
} catch (Throwable ignored) {
}