TabooLib/src/main/scala/io/izzel/taboolib/module/db/local/LocalLoader.java

42 lines
1.3 KiB
Java

package io.izzel.taboolib.module.db.local;
import io.izzel.taboolib.TabooLibLoader;
import io.izzel.taboolib.module.locale.logger.TLogger;
import org.bukkit.plugin.Plugin;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
/**
* @Author 坏黑
* @Since 2019-07-06 17:35
*/
public class LocalLoader implements TabooLibLoader.Loader {
@Override
public void preLoad(Plugin plugin, Class<?> pluginClass) {
for (Field field : pluginClass.getDeclaredFields()) {
LocalFile annotation = field.getAnnotation(LocalFile.class);
if (annotation == null) {
continue;
}
Object instance = null;
// 如果是非静态类型
if (!Modifier.isStatic(field.getModifiers())) {
// 是否为主类
if (pluginClass.equals(plugin.getClass())) {
instance = plugin;
} else {
TLogger.getGlobalLogger().error(field.getName() + " is not a static field. (" + pluginClass.getName() + ")");
continue;
}
}
field.setAccessible(true);
try {
field.set(instance, Local.get(plugin.getName()).get(annotation.value()));
} catch (IllegalAccessException ignored) {
}
}
}
}