3
0
Fork 0
This repository has been archived on 2024-11-14. You can view files and clone it, but cannot push or open issues or pull requests.
ThemePark/src/main/java/me/paradoxpixel/themepark/ThemeParkPlugin.java
2019-01-15 18:16:59 +01:00

118 lines
3.4 KiB
Java

package me.paradoxpixel.themepark;
import me.paradoxpixel.themepark.attraction.AttractionMenu;
import me.paradoxpixel.themepark.attraction.sign.SignManager;
import me.paradoxpixel.themepark.attraction.status.StatusManager;
import me.paradoxpixel.themepark.command.MenuCommand;
import me.paradoxpixel.themepark.command.ThemeParkCommand;
import me.paradoxpixel.themepark.config.YamlConfig;
import me.paradoxpixel.themepark.database.DatabaseHandler;
import me.paradoxpixel.themepark.gui.GUIListener;
import me.paradoxpixel.themepark.listener.ClickListener;
import me.paradoxpixel.themepark.listener.ChangeListener;
import me.paradoxpixel.themepark.listener.PlayerListener;
import me.paradoxpixel.themepark.listener.SignListener;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandMap;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import java.lang.reflect.Field;
public class ThemeParkPlugin extends JavaPlugin {
private static ThemeParkPlugin instance;
private YamlConfig settings, attraction, message, signs, data;
private DatabaseHandler database;
@Override
public void onEnable() {
instance = this;
loadConfig();
loadListener();
loadCommand();
loadData();
loadDatabase();
}
private void loadConfig() {
settings = new YamlConfig("settings", this);
attraction = new YamlConfig("attraction", this);
message = new YamlConfig("message", this);
signs = new YamlConfig("signs", this);
data = new YamlConfig("data", this);
}
private void loadData() {
StatusManager.load();
AttractionMenu.load();
}
private void loadDatabase() {
database = new DatabaseHandler(settings);
}
private void loadCommand() {
getCommand("status").setExecutor(new MenuCommand());
String command = settings.getConfig().getString("command");
if(command == null || command.isEmpty())
return;
try {
final Field bukkitCommandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
bukkitCommandMap.setAccessible(true);
CommandMap commandMap = (CommandMap) bukkitCommandMap.get(Bukkit.getServer());
commandMap.register(command, new ThemeParkCommand(command));
} catch(ReflectiveOperationException e) {
e.printStackTrace();
}
}
private void loadListener() {
PluginManager pm = Bukkit.getPluginManager();
pm.registerEvents(new GUIListener(), this);
pm.registerEvents(new ClickListener(), this);
pm.registerEvents(new ChangeListener(), this);
pm.registerEvents(new SignListener(), this);
pm.registerEvents(new PlayerListener(), this);
}
@Override
public void onDisable() {
AttractionMenu.save();
SignManager.saveSigns();
database.disconnect();
instance = null;
}
public static ThemeParkPlugin getInstance() {
return instance;
}
public YamlConfig getSettings() {
return settings;
}
public YamlConfig getAttraction() {
return attraction;
}
public YamlConfig getMessage() {
return message;
}
public YamlConfig getSigns() {
return signs;
}
public YamlConfig getData() {
return data;
}
public DatabaseHandler getDatabaseHandler() {
return database;
}
}