package me.maker56.survivalgames; import java.io.IOException; import me.maker56.survivalgames.arena.ArenaManager; import me.maker56.survivalgames.arena.chest.ChestListener; import me.maker56.survivalgames.arena.chest.ChestManager; import me.maker56.survivalgames.commands.CommandSG; import me.maker56.survivalgames.commands.messages.MessageHandler; import me.maker56.survivalgames.commands.permission.PermissionHandler; import me.maker56.survivalgames.database.ConfigLoader; import me.maker56.survivalgames.database.sql.DatabaseManager; import me.maker56.survivalgames.game.Game; import me.maker56.survivalgames.game.GameManager; import me.maker56.survivalgames.listener.ChatListener; import me.maker56.survivalgames.listener.PlayerListener; import me.maker56.survivalgames.listener.ResetListener; import me.maker56.survivalgames.listener.SelectionListener; import me.maker56.survivalgames.listener.SignListener; import me.maker56.survivalgames.listener.SpectatorListener; import me.maker56.survivalgames.listener.UpdateListener; import me.maker56.survivalgames.metrics.Metrics; import me.maker56.survivalgames.scoreboard.ScoreBoardManager; import me.maker56.survivalgames.sign.SignManager; import me.maker56.survivalgames.user.UserManager; import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import com.sk89q.worldedit.bukkit.WorldEditPlugin; public class SurvivalGames extends JavaPlugin { public static SurvivalGames instance; public static FileConfiguration messages, database, signs, reset, chestloot, scoreboard, kits; public static ArenaManager arenaManager; public static GameManager gameManager; public static ChestManager chestManager; public static UserManager userManger; public static SignManager signManager; public static ScoreBoardManager scoreBoardManager; public static Economy econ; public static String version = "SurvivalGames - Version "; private static PluginManager pm = Bukkit.getPluginManager(); public void onDisable() { if(gameManager != null) { for(Game game : gameManager.getGames()) { game.kickall(); } } DatabaseManager.close(); } public void onEnable() { if(!Bukkit.getVersion().toLowerCase().contains("spigot")) { System.err.println("[SurvivalGames] ###################################################################"); System.err.println("[SurvivalGames] ######### THIS PLUGIN REQUIRES SPIGOT TO RUN ##########"); System.err.println("[SurvivalGames] ######### Please use it instead of craftbukkit! ##########"); System.err.println("[SurvivalGames] ######### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##########"); System.err.println("[SurvivalGames] ######### Download: http://www.spigotmc.org/ ##########"); System.err.println("[SurvivalGames] ###################################################################"); Bukkit.getPluginManager().disablePlugin(this); return; } if(!Bukkit.getPluginManager().isPluginEnabled("WorldEdit")) { System.err.println("[SurvivalGames] ##########################################################"); System.err.println("[SurvivalGames] ######### NO WORLDEDIT FOUND! DISABLE PLUGIN... ##########"); System.err.println("[SurvivalGames] ##########################################################"); Bukkit.getPluginManager().disablePlugin(this); return; } instance = this; version += getDescription().getVersion(); new ConfigLoader().load(); DatabaseManager.open(); DatabaseManager.load(); startUpdateChecker(); PermissionHandler.reinitializeDatabase(); Game.reinitializeDatabase(); MessageHandler.reload(); if(setupEconomy()) System.out.println("[SurvivalGames] Vault found!"); // TEMPORARY Util.checkForOutdatedArenaSaveFiles(); chestManager = new ChestManager(); scoreBoardManager = new ScoreBoardManager(); arenaManager = new ArenaManager(); gameManager = new GameManager(); userManger = new UserManager(); signManager = new SignManager(); getCommand("sg").setExecutor(new CommandSG()); pm.registerEvents(new SelectionListener(), this); pm.registerEvents(new PlayerListener(), this); pm.registerEvents(new ChestListener(), this); pm.registerEvents(new SignListener(), this); pm.registerEvents(new ResetListener(), this); pm.registerEvents(new UpdateListener(), this); pm.registerEvents(new SpectatorListener(), this); pm.registerEvents(new ChatListener(), this); try { new Metrics(this).start(); } catch (IOException e) { System.err.println("[SurvivalGames] Cannot load metrics: " + e.getMessage()); } if(getWorldEdit() != null) { System.out.println("[SurvivalGames] Plugin enabled. WorldEdit found!"); } else { System.out.println("[SurvivalGames] Plugin enabled."); } signManager.updateSigns(); } // UPDATE CHECKING public void startUpdateChecker() { Bukkit.getScheduler().runTaskTimer(this, new Runnable() { public void run() { new UpdateCheck(SurvivalGames.instance, 61788); } }, 0L, 216000); } // VAULT private boolean setupEconomy() { if(Bukkit.getPluginManager().isPluginEnabled("Vault")) { RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(Economy.class); if (economyProvider != null) { econ = economyProvider.getProvider(); } } return (econ != null); } // FILECONFIGURATION SAVE public static void saveMessages() { try { messages.save("plugins/SurvivalGames/messages.yml"); } catch (IOException e) { e.printStackTrace(); } } public static void saveDataBase() { try { database.save("plugins/SurvivalGames/database.yml"); } catch (IOException e) { e.printStackTrace(); } } public static void saveSigns() { try { signs.save("plugins/SurvivalGames/signs.yml"); } catch(IOException e) { e.printStackTrace(); } } public static void saveReset() { try { reset.save("plugins/SurvivalGames/reset.yml"); } catch (IOException e) { e.printStackTrace(); } } public static void saveChests() { try { chestloot.save("plugins/SurvivalGames/chestloot.yml"); } catch (IOException e) { e.printStackTrace(); } } public static void saveScoreboard() { try { scoreboard.save("plugins/SurvivalGames/scoreboard.yml"); } catch (IOException e) { e.printStackTrace(); } } public static void saveKits() { try { kits.save("plugins/SurvivalGames/kits.yml"); } catch(IOException e) { e.printStackTrace(); } } // WORLDEDIT public static WorldEditPlugin getWorldEdit() { if(!pm.isPluginEnabled("WorldEdit")) { return null; } else { return (WorldEditPlugin) pm.getPlugin("WorldEdit"); } } // API public static GameManager getGameManager() { return gameManager; } public static ArenaManager getArenaManager() { return arenaManager; } public static ChestManager getChestManager() { return chestManager; } public static UserManager getUserManager() { return userManger; } public static SignManager getSignManager() { return signManager; } public static ScoreBoardManager getScoreboardManager() { return scoreBoardManager; } public static SurvivalGames getInstance() { return instance; } }