Files
ServerAdmin/src/main/java/com/rsscripting/serveradmin/RSServerAdmin.java
T
2026-06-15 10:21:28 -05:00

221 lines
5.8 KiB
Java

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;
}
}