Mineplex2018-withcommit/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java

346 lines
10 KiB
Java
Raw Normal View History

2013-08-27 17:14:08 +02:00
package nautilus.game.arcade;
2013-08-27 17:14:08 +02:00
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;
2014-09-19 04:03:46 +02:00
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import net.minecraft.server.v1_7_R4.MinecraftServer;
import mineplex.core.CustomTagFix;
2013-08-27 17:14:08 +02:00
import mineplex.core.account.CoreClientManager;
2013-10-16 03:23:23 +02:00
import mineplex.core.antihack.AntiHack;
2013-08-31 05:15:16 +02:00
import mineplex.core.antistack.AntiStack;
import mineplex.core.blockrestore.BlockRestore;
import mineplex.core.blood.Blood;
2013-08-27 17:14:08 +02:00
import mineplex.core.command.CommandCenter;
2014-09-19 04:03:46 +02:00
import mineplex.core.common.util.FileUtil;
import mineplex.core.common.util.UtilServer;
import mineplex.core.cosmetic.CosmeticManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.creature.Creature;
2013-08-31 05:15:16 +02:00
import mineplex.core.disguise.DisguiseManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.donation.DonationManager;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.inventory.InventoryManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.logger.Logger;
import mineplex.core.memory.MemoryFix;
2013-08-27 17:14:08 +02:00
import mineplex.core.message.MessageManager;
2013-09-04 08:31:29 +02:00
import mineplex.core.monitor.LagMeter;
import mineplex.core.mount.MountManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.npc.NpcManager;
import mineplex.core.packethandler.PacketHandler;
import mineplex.core.pet.PetManager;
import mineplex.core.playerTracker.PlayerTracker;
import mineplex.core.portal.Portal;
2014-06-10 04:51:47 +02:00
import mineplex.core.preferences.PreferencesManager;
2014-08-22 20:30:41 +02:00
import mineplex.core.projectile.ProjectileManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.punish.Punish;
import mineplex.core.recharge.Recharge;
import mineplex.core.spawn.Spawn;
import mineplex.core.status.ServerStatusManager;
2013-08-27 17:14:08 +02:00
import mineplex.core.teleport.Teleport;
import mineplex.core.updater.FileUpdater;
2013-08-27 17:14:08 +02:00
import mineplex.core.updater.Updater;
import mineplex.minecraft.game.core.combat.CombatManager;
import mineplex.minecraft.game.core.damage.DamageManager;
import nautilus.game.arcade.game.GameServerConfig;
public class Arcade extends JavaPlugin
2014-05-02 06:35:41 +02:00
{
2014-04-28 06:59:18 +02:00
private String WEB_CONFIG = "webServer";
2014-04-03 06:48:58 +02:00
//Modules
private CoreClientManager _clientManager;
2014-04-04 04:26:00 +02:00
private DonationManager _donationManager;
2013-08-27 17:14:08 +02:00
private DamageManager _damageManager;
2013-08-27 17:14:08 +02:00
private ArcadeManager _gameManager;
2014-04-02 12:22:21 +02:00
@Override
public void onEnable()
{
2014-08-16 06:17:15 +02:00
//Delete Old Games Folders
DeleteFolders();
2014-08-16 06:17:15 +02:00
//Configs
getConfig().addDefault(WEB_CONFIG, "http://accounts.mineplex.com/");
2013-08-27 17:14:08 +02:00
getConfig().set(WEB_CONFIG, getConfig().getString(WEB_CONFIG));
saveConfig();
String webServerAddress = getConfig().getString(WEB_CONFIG);
Logger.initialize(this);
2014-08-16 06:17:15 +02:00
//Static Modules
CommandCenter.Initialize(this);
_clientManager = new CoreClientManager(this, webServerAddress);
CommandCenter.Instance.setClientManager(_clientManager);
2014-04-04 04:26:00 +02:00
ItemStackFactory.Initialize(this, false);
2014-05-03 05:06:15 +02:00
Recharge.Initialize(this);
_donationManager = new DonationManager(this, webServerAddress);
PreferencesManager preferenceManager = new PreferencesManager(this, _clientManager, _donationManager);
new MessageManager(this, _clientManager, preferenceManager);
AntiStack antistack = new AntiStack(this);
Creature creature = new Creature(this);
Spawn spawn = new Spawn(this);
Teleport teleport = new Teleport(this, _clientManager, spawn);
ServerStatusManager serverStatusManager = new ServerStatusManager(this, new LagMeter(this, _clientManager));
Portal portal = new Portal(this, serverStatusManager.getCurrentServerName());
new FileUpdater(this, portal);
PacketHandler packetHandler = new PacketHandler(this);
DisguiseManager disguiseManager = new DisguiseManager(this, packetHandler);
_damageManager = new DamageManager(this, new CombatManager(this), new NpcManager(this, creature), disguiseManager);
Punish punish = new Punish(this, webServerAddress, _clientManager);
AntiHack.Initialize(this, punish, portal);
2014-05-03 05:06:15 +02:00
BlockRestore blockRestore = new BlockRestore(this);
2014-08-22 20:30:41 +02:00
ProjectileManager projectileManager = new ProjectileManager(this);
//Inventory
InventoryManager inventoryManager = new InventoryManager(this);
PetManager petManager = new PetManager(this, _clientManager, _donationManager, creature, webServerAddress);
2014-08-22 20:30:41 +02:00
MountManager mountManager = new MountManager(this, _clientManager, _donationManager, blockRestore, disguiseManager);
GadgetManager gadgetManager = new GadgetManager(this, _clientManager, _donationManager, inventoryManager, mountManager, petManager, preferenceManager, disguiseManager, blockRestore, projectileManager);
2014-08-26 09:33:48 +02:00
CosmeticManager cosmeticManager = new CosmeticManager(this, _clientManager, _donationManager, inventoryManager, gadgetManager, mountManager, petManager, true);
2014-08-10 02:50:31 +02:00
cosmeticManager.setInterfaceSlot(7);
new CustomTagFix(this, packetHandler);
//Arcade Manager
2014-09-19 04:03:46 +02:00
_gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, disguiseManager, creature, teleport, new Blood(this), antistack, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, webServerAddress);
new PlayerTracker(this, serverStatusManager.getCurrentServerName(), serverStatusManager.getUs());
2013-10-14 06:51:38 +02:00
new MemoryFix(this);
2013-08-27 17:14:08 +02:00
//Updates
getServer().getScheduler().scheduleSyncRepeatingTask(this, new Updater(this), 1, 1);
2014-08-23 08:49:48 +02:00
MinecraftServer.getServer().getPropertyManager().setProperty("debug", true);
2013-08-27 17:14:08 +02:00
}
@Override
2013-10-30 23:45:11 +01:00
public void onDisable()
2013-08-27 17:14:08 +02:00
{
for (Player player : UtilServer.getPlayers())
player.kickPlayer("Server Shutdown");
if (_gameManager.GetGame() != null)
if (_gameManager.GetGame().WorldData != null)
_gameManager.GetGame().WorldData.Uninitialize();
}
2014-05-03 05:06:15 +02:00
public GameServerConfig ReadServerConfig()
2013-08-27 17:14:08 +02:00
{
GameServerConfig config = new GameServerConfig();
2014-05-03 05:06:15 +02:00
//Load Track Data
2013-08-27 17:14:08 +02:00
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]);
}
2014-05-02 06:35:41 +02:00
else if (tokens[0].equals("TOURNAMENT"))
{
config.Tournament = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("TEAM_REJOIN"))
{
config.TeamRejoin = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("TEAM_AUTO_JOIN"))
{
config.TeamAutoJoin = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("TEAM_FORCE_BALANCE"))
{
config.TeamForceBalance = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("GAME_AUTO_START"))
{
config.GameAutoStart = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("GAME_TIMEOUT"))
{
config.GameTimeout = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("REWARD_GEMS"))
{
config.RewardGems = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("REWARD_ITEMS"))
{
config.RewardItems = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("REWARD_STATS"))
{
config.RewardStats = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("REWARD_ACHIEVEMENTS"))
{
config.RewardAchievements = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("HOTBAR_INVENTORY"))
{
config.HotbarInventory = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("HOTBAR_HUB_CLOCK"))
{
config.HotbarHubClock = Boolean.parseBoolean(tokens[1]);
}
else if (tokens[0].equals("PLAYER_KICK_IDLE"))
{
config.PlayerKickIdle = Boolean.parseBoolean(tokens[1]);
}
2013-08-27 17:14:08 +02:00
//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();
2013-08-27 17:14:08 +02:00
WriteServerConfig(config);
return config;
}
public GameServerConfig GetDefaultConfig()
{
GameServerConfig config = new GameServerConfig();
config.ServerType = "Minigames";
config.MinPlayers = 8;
config.MaxPlayers = 16;
2014-05-02 06:35:41 +02:00
config.Tournament = false;
2013-08-27 17:14:08 +02:00
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");
2014-05-02 06:35:41 +02:00
out.write("\nTOURNAMENT=" + config.Tournament + "\n");
out.write("\nTEAM_REJOIN=" + config.TeamRejoin + "\n");
out.write("TEAM_AUTO_JOIN=" + config.TeamAutoJoin + "\n");
out.write("TEAM_FORCE_BALANCE=" + config.TeamForceBalance + "\n");
out.write("\nGAME_AUTO_START=" + config.GameAutoStart + "\n");
out.write("GAME_TIMEOUT=" + config.GameTimeout + "\n");
out.write("\nREWARD_GEMS=" + config.RewardGems + "\n");
out.write("REWARD_ITEMS=" + config.RewardItems + "\n");
out.write("REWARD_STATS=" + config.RewardStats + "\n");
out.write("REWARD_ACHIEVEMENTS=" + config.RewardAchievements + "\n");
out.write("\nHOTBAR_INVENTORY=" + config.HotbarInventory + "\n");
out.write("HOTBAR_HUB_CLOCK=" + config.HotbarHubClock + "\n");
out.write("\nPLAYER_KICK_IDLE=" + config.PlayerKickIdle + "\n");
2013-08-27 17:14:08 +02:00
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());
}
}
}