package com.rsscripting.serveradmin; import com.rsscripting.serveradmin.dao.*; import com.rsscripting.serveradmin.database.DatabaseManager; import com.rsscripting.serveradmin.commands.RSAdminCommand; import com.rsscripting.serveradmin.listeners.*; import com.rsscripting.serveradmin.security.SecurityManager; import com.rsscripting.serveradmin.update.GitHubUpdateChecker; import com.rsscripting.serveradmin.settings.SettingKey; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.Bukkit; import org.bukkit.World; import java.util.logging.Level; public class RSServerAdmin extends JavaPlugin { private static RSServerAdmin instance; private KeepInventoryDAO keepInventoryDAO; private DatabaseManager databaseManager; private SettingsDAO settingsDAO; private SecurityManager securityManager; private WorldsDAO worldsDAO; private CreeperSettingsDAO creeperSettingsDAO; private MobEquipmentDropSettingsDAO equipmentDropSettingsDAO; @Override public void onEnable() { instance = this; saveDefaultConfig(); databaseManager = new DatabaseManager(this); try { databaseManager.connect(); settingsDAO = new SettingsDAO( databaseManager ); settingsDAO.initializeDefaults(); keepInventoryDAO = new KeepInventoryDAO( databaseManager ); worldsDAO = new WorldsDAO( databaseManager ); creeperSettingsDAO = new CreeperSettingsDAO( databaseManager ); equipmentDropSettingsDAO = new MobEquipmentDropSettingsDAO( databaseManager ); securityManager = new SecurityManager(this); boolean keepInventoryDefault = settingsDAO.getDefault( SettingKey.KEEP_INVENTORY_NEW_WORLD ); for (World world : Bukkit.getWorlds()) { worldsDAO.ensureWorldExists( world.getName() ); keepInventoryDAO.ensureWorldExists( world.getName(), keepInventoryDefault ); boolean blockDamageDefault = settingsDAO.getDefault( SettingKey.CREEPER_BLOCK_DAMAGE ); boolean entityDamageDefault = settingsDAO.getDefault( SettingKey.CREEPER_ENTITY_DAMAGE ); creeperSettingsDAO.ensureWorldExists( world.getName(), blockDamageDefault, entityDamageDefault ); equipmentDropSettingsDAO.ensureWorldExists( world.getName() ); } if (getCommand("rsadmin") != null) { getCommand("rsadmin").setExecutor( new RSAdminCommand(this) ); } else { getLogger().severe( "Command 'rsadmin' not found in plugin.yml!" ); } getServer().getPluginManager().registerEvents( new MainMenuListener(), this ); getServer().getPluginManager().registerEvents( new CreeperBlockDamageListener(), this ); getServer().getPluginManager().registerEvents( new CreeperEntityDamageListener(), this ); getServer().getPluginManager().registerEvents( new WorldLoadListener(), this ); getServer().getPluginManager().registerEvents( new KeepInventoryListener(), this ); getServer().getPluginManager().registerEvents( new CreeperMenuListener(), this ); getServer().getPluginManager().registerEvents( new MobEquipmentMenuListener(), this ); getServer().getPluginManager().registerEvents( new MobEquipmentDropListener(), this ); } catch (Exception ex) { getLogger().log( Level.SEVERE, "Failed to initialize database.", ex ); getServer().getPluginManager().disablePlugin(this); return; } new GitHubUpdateChecker( this ).checkForUpdates(); getLogger().info("RS-ServerAdmin enabled."); } @Override public void onDisable() { if (databaseManager != null) { databaseManager.disconnect(); } getLogger().info("RS-ServerAdmin disabled."); } public KeepInventoryDAO getKeepInventoryDAO() { return keepInventoryDAO;} public static RSServerAdmin getInstance() { return instance; } public DatabaseManager getDatabaseManager() { return databaseManager; } public SettingsDAO getSettingsDAO() { return settingsDAO; } public WorldsDAO getWorldsDAO() { return worldsDAO; } public SecurityManager getSecurityManager() { return securityManager; } public CreeperSettingsDAO getCreeperSettingsDAO() { return creeperSettingsDAO; } public MobEquipmentDropSettingsDAO getEquipmentDropSettingsDAO() { return equipmentDropSettingsDAO; } }