package nautilus.game.arcade; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.InputStreamReader; import mineplex.core.INautilusPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.antihack.AntiHack; import mineplex.core.antistack.AntiStack; import mineplex.core.blood.Blood; import mineplex.core.command.CommandCenter; import mineplex.core.common.util.FileUtil; import mineplex.core.common.util.UtilServer; import mineplex.core.creature.Creature; import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.memory.MemoryFix; import mineplex.core.message.MessageManager; import mineplex.core.monitor.LagMeter; import mineplex.core.npc.NpcManager; import mineplex.core.packethandler.PacketHandler; import mineplex.core.portal.Portal; import mineplex.core.punish.Punish; import mineplex.core.recharge.Recharge; import mineplex.core.spawn.Spawn; import mineplex.core.status.ServerStatusManager; import mineplex.core.teleport.Teleport; import mineplex.core.updater.FileUpdater; import mineplex.core.updater.Updater; import mineplex.minecraft.game.core.combat.CombatManager; import mineplex.minecraft.game.core.condition.ConditionManager; import mineplex.minecraft.game.core.damage.DamageManager; import nautilus.game.arcade.game.GameServerConfig; import org.bukkit.Server; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; public class Arcade extends JavaPlugin implements INautilusPlugin { private String WEB_CONFIG = "webServer"; //Modules private CoreClientManager _clientManager; private DonationManager _donationManager; private DamageManager _damageManager; private ArcadeManager _gameManager; @Override public void onEnable() { //Delete Old Games Folders DeleteFolders(); //Configs getConfig().addDefault(WEB_CONFIG, "http://accounts.mineplex.com/"); getConfig().set(WEB_CONFIG, getConfig().getString(WEB_CONFIG)); saveConfig(); _clientManager = CoreClientManager.Initialize(this, GetWebServerAddress()); CommandCenter.Initialize(this, _clientManager); ItemStackFactory.Initialize(this, false); Recharge.Initialize(this); _donationManager = new DonationManager(this, GetWebServerAddress()); ConditionManager conditionManager = new ConditionManager(this); new MessageManager(this, _clientManager); AntiStack antistack = new AntiStack(this); Creature creature = new Creature(this); Spawn spawn = new Spawn(this); Teleport teleport = new Teleport(this, _clientManager, spawn); new FileUpdater(this, new Portal(this)); ServerStatusManager serverStatusManager = new ServerStatusManager(this, new LagMeter(this, _clientManager)); PacketHandler packetHandler = new PacketHandler(this); DisguiseManager disguiseManager = new DisguiseManager(this, packetHandler); _damageManager = new DamageManager(this, new CombatManager(this), new NpcManager(this, creature), disguiseManager); Portal portal = new Portal(this); //Arcade Manager _gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, conditionManager, _damageManager, disguiseManager, creature, teleport, new Blood(this), antistack, portal, packetHandler, GetWebServerAddress()); Punish punish = new Punish(this, GetWebServerAddress(), _clientManager); AntiHack.Initialize(this, punish, portal); new MemoryFix(this); //Updates getServer().getScheduler().scheduleSyncRepeatingTask(this, new Updater(this), 1, 1); } @Override public void onDisable() { for (Player player : UtilServer.getPlayers()) player.kickPlayer("Server Shutdown"); if (_gameManager.GetGame() != null) if (_gameManager.GetGame().WorldData != null) _gameManager.GetGame().WorldData.Uninitialize(); } public GameServerConfig ReadServerConfig() { GameServerConfig config = new GameServerConfig(); //Load Track Data String line = null; try { File file = new File("ArcadeSettings.config"); if (!file.exists()) WriteServerConfig(GetDefaultConfig()); FileInputStream fstream = new FileInputStream("ArcadeSettings.config"); DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); while ((line = br.readLine()) != null) { String[] tokens = line.split("="); if (tokens.length < 2) continue; if (tokens[0].equals("SERVER_TYPE")) { config.ServerType = tokens[1]; } else if (tokens[0].equals("PLAYERS_MIN")) { config.MinPlayers = Integer.parseInt(tokens[1]); } else if (tokens[0].equals("PLAYERS_MAX")) { config.MaxPlayers = Integer.parseInt(tokens[1]); } //Games else { try { GameType type = GameType.valueOf(tokens[0]); boolean enabled = Boolean.valueOf(tokens[1]); if (enabled) config.GameList.add(type); } catch (Exception e) { } } } in.close(); } catch (Exception e) { } if (!config.IsValid()) config = GetDefaultConfig(); WriteServerConfig(config); return config; } public GameServerConfig GetDefaultConfig() { GameServerConfig config = new GameServerConfig(); config.ServerType = "Minigames"; config.MinPlayers = 8; config.MaxPlayers = 16; return config; } public void WriteServerConfig(GameServerConfig config) { try { FileWriter fstream = new FileWriter("ArcadeSettings.config"); BufferedWriter out = new BufferedWriter(fstream); out.write("SERVER_TYPE=" + config.ServerType + "\n"); out.write("PLAYERS_MIN=" + config.MinPlayers + "\n"); out.write("PLAYERS_MAX=" + config.MaxPlayers + "\n"); out.write("\n\nGames List;\n"); for (GameType type : GameType.values()) { out.write(type.toString() + "=" + config.GameList.contains(type) + "\n"); } out.close(); } catch (Exception e) { } } private void DeleteFolders() { File curDir = new File("."); File[] filesList = curDir.listFiles(); for(File file : filesList) { if (!file.isDirectory()) continue; if (file.getName().length() < 4) continue; if (!file.getName().substring(0, 4).equalsIgnoreCase("Game")) continue; FileUtil.DeleteFolder(file); System.out.println("Deleted Old Game: " + file.getName()); } } @Override public JavaPlugin GetPlugin() { return this; } @Override public String GetWebServerAddress() { String webServerAddress = getConfig().getString(WEB_CONFIG); return webServerAddress; } @Override public Server GetRealServer() { return getServer(); } @Override public PluginManager GetPluginManager() { return GetRealServer().getPluginManager(); } }