Files
TabooLib/src/main/java/me/skymc/tlm/module/TabooLibraryModule.java
2018-04-22 22:12:42 +08:00

102 lines
2.4 KiB
Java

package me.skymc.tlm.module;
import java.io.File;
import java.util.HashMap;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.Listener;
import me.skymc.taboolib.Main;
import me.skymc.tlm.annotation.DisableConfig;
/**
* @author sky
* @since 2018年2月17日 下午11:22:48
*/
public class TabooLibraryModule {
private final HashMap<ITabooLibraryModule, FileConfiguration> TLM_MODULE = new HashMap<>();
private static TabooLibraryModule inst = null;
private TabooLibraryModule() {
}
public static TabooLibraryModule getInst() {
if (inst == null) {
synchronized (TabooLibraryModule.class) {
if (inst == null) {
inst = new TabooLibraryModule();
}
}
}
return inst;
}
public void register(ITabooLibraryModule module) {
if (!TLM_MODULE.containsKey(module)) {
TLM_MODULE.put(module, new YamlConfiguration());
reloadConfig(module, false);
}
}
public void loadModules() {
for (ITabooLibraryModule module : TLM_MODULE.keySet()) {
module.onEnable();
if (module instanceof Listener) {
Bukkit.getPluginManager().registerEvents((Listener) module, Main.getInst());
}
}
}
public void unloadModules() {
TLM_MODULE.keySet().forEach(ITabooLibraryModule::onDisable);
}
public void reloadConfig() {
TLM_MODULE.keySet().forEach(x -> reloadConfig(x, true));
}
public void reloadConfig(ITabooLibraryModule module, boolean isReload) {
if (module.getName() == null || module.getClass().getAnnotation(DisableConfig.class) != null) {
return;
}
File file = new File(Main.getInst().getDataFolder(), "TLM/" + module.getName() + ".yml");
if (!file.exists()) {
Main.getInst().saveResource("TLM/" + module.getName() + ".yml", true);
}
try {
TLM_MODULE.get(module).load(file);
} catch (Exception e) {
// TODO Auto-generated catch block
}
if (isReload) {
module.onReload();
}
}
public FileConfiguration getConfig(ITabooLibraryModule module) {
return TLM_MODULE.get(module);
}
public int getSize() {
return TLM_MODULE.size();
}
public Set<ITabooLibraryModule> keySet() {
return TLM_MODULE.keySet();
}
public ITabooLibraryModule valueOf(String name) {
for (ITabooLibraryModule module : TLM_MODULE.keySet()) {
if (module.getName().equals(name)) {
return module;
}
}
return null;
}
}