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 me.paradoxpixel.themepark.placeholder.ThemeParkPlaceholder; 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(); if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { new ThemeParkPlaceholder(this).hook(); } } 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; } }