Fixed whitelist issue with tournament mode.

This commit is contained in:
Jonathan Williams 2014-07-26 10:40:49 -07:00
parent a455042c07
commit 4e1a05e9bd
1 changed files with 125 additions and 92 deletions

View File

@ -19,6 +19,7 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.craftbukkit.v1_7_R3.entity.CraftEntity; import org.bukkit.craftbukkit.v1_7_R3.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_7_R3.entity.CraftPlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -76,11 +77,11 @@ import mineplex.core.timing.TimingManager;
public class ArcadeManager extends MiniPlugin implements IRelation public class ArcadeManager extends MiniPlugin implements IRelation
{ {
//Modules // Modules
private AntiStack _antistack; private AntiStack _antistack;
private BlockRestore _blockRestore; private BlockRestore _blockRestore;
private Blood _blood; private Blood _blood;
private Chat _chat; private Chat _chat;
private CoreClientManager _clientManager; private CoreClientManager _clientManager;
private DisguiseManager _disguiseManager; private DisguiseManager _disguiseManager;
private DonationManager _donationManager; private DonationManager _donationManager;
@ -92,10 +93,10 @@ public class ArcadeManager extends MiniPlugin implements IRelation
private FireworkHandler _firework; private FireworkHandler _firework;
private ProjectileManager _projectileManager; private ProjectileManager _projectileManager;
private Portal _portal; private Portal _portal;
private ArcadeShop _arcadeShop; private ArcadeShop _arcadeShop;
//Managers // Managers
private GameFactory _gameFactory; private GameFactory _gameFactory;
private GameCreationManager _gameCreationManager; private GameCreationManager _gameCreationManager;
private GameGemManager _gameGemManager; private GameGemManager _gameGemManager;
@ -104,27 +105,30 @@ public class ArcadeManager extends MiniPlugin implements IRelation
private GameStatsManager _gameStatsManager; private GameStatsManager _gameStatsManager;
private GameWorldManager _gameWorldManager; private GameWorldManager _gameWorldManager;
private ServerStatusManager _serverStatusManager; private ServerStatusManager _serverStatusManager;
private StatsManager _statsManager; private StatsManager _statsManager;
private ClassManager _classManager; private ClassManager _classManager;
private SkillFactory _skillFactory; private SkillFactory _skillFactory;
private ClassShopManager _classShopManager; private ClassShopManager _classShopManager;
private ClassCombatShop _classShop; private ClassCombatShop _classShop;
private EloManager _eloManager; private EloManager _eloManager;
private MiscManager _miscManager; private MiscManager _miscManager;
//Observers // Observers
private HashSet<Player> _specList = new HashSet<Player>(); private HashSet<Player> _specList = new HashSet<Player>();
//Server Games // Server Games
private GameServerConfig _serverConfig; private GameServerConfig _serverConfig;
//Games // Games
private Game _game; private Game _game;
public ArcadeManager(Arcade plugin, ServerStatusManager serverStatusManager, GameServerConfig serverConfig, CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager, DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, AntiStack antistack, Portal portal, PacketHandler packetHandler, PreferencesManager preferences, String webAddress) public ArcadeManager(Arcade plugin, ServerStatusManager serverStatusManager, GameServerConfig serverConfig,
CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager,
DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, AntiStack antistack,
Portal portal, PacketHandler packetHandler, PreferencesManager preferences, String webAddress)
{ {
super("Game Manager", plugin); super("Game Manager", plugin);
@ -134,9 +138,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation
AntiHack.Instance.SetEnabled(false); AntiHack.Instance.SetEnabled(false);
Bukkit.getServer().setWhitelist(true); Bukkit.getServer().setWhitelist(true);
} }
//Modules // Modules
_antistack = antistack; _antistack = antistack;
_blockRestore = new BlockRestore(plugin); _blockRestore = new BlockRestore(plugin);
@ -145,7 +149,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation
_explosionManager = new Explosion(plugin, _blockRestore); _explosionManager = new Explosion(plugin, _blockRestore);
_explosionManager.SetDebris(false); _explosionManager.SetDebris(false);
if (serverConfig.GameList.contains(GameType.ChampionsDominate) || serverConfig.GameList.contains(GameType.ChampionsTDM) || serverConfig.GameList.contains(GameType.ChampionsMOBA)) if (serverConfig.GameList.contains(GameType.ChampionsDominate)
|| serverConfig.GameList.contains(GameType.ChampionsTDM)
|| serverConfig.GameList.contains(GameType.ChampionsMOBA))
{ {
_conditionManager = new SkillConditionManager(plugin); _conditionManager = new SkillConditionManager(plugin);
} }
@ -169,33 +175,39 @@ public class ArcadeManager extends MiniPlugin implements IRelation
_firework = new FireworkHandler(); _firework = new FireworkHandler();
_fire = new Fire(plugin, _conditionManager, damageManager); _fire = new Fire(plugin, _conditionManager, damageManager);
_projectileManager = new ProjectileManager(plugin); _projectileManager = new ProjectileManager(plugin);
if (serverConfig.GameList.contains(GameType.ChampionsDominate) || serverConfig.GameList.contains(GameType.ChampionsTDM) || serverConfig.GameList.contains(GameType.ChampionsMOBA)) if (serverConfig.GameList.contains(GameType.ChampionsDominate)
|| serverConfig.GameList.contains(GameType.ChampionsTDM)
|| serverConfig.GameList.contains(GameType.ChampionsMOBA))
{ {
Energy energy = new Energy(plugin); Energy energy = new Energy(plugin);
ItemFactory itemFactory = new ItemFactory(_plugin, _blockRestore, _conditionManager, damageManager, energy, _fire, _projectileManager, webAddress); ItemFactory itemFactory = new ItemFactory(_plugin, _blockRestore, _conditionManager, damageManager, energy,
_skillFactory = new SkillFactory(plugin, damageManager, this, _damageManager.GetCombatManager(), _conditionManager, _projectileManager, _blockRestore, _fire, new Movement(plugin), teleport, energy, webAddress); _fire, _projectileManager, webAddress);
_classManager = new ClassManager(plugin, clientManager, donationManager, _skillFactory, itemFactory, webAddress); _skillFactory = new SkillFactory(plugin, damageManager, this, _damageManager.GetCombatManager(),
_conditionManager, _projectileManager, _blockRestore, _fire, new Movement(plugin), teleport,
energy, webAddress);
_classManager = new ClassManager(plugin, clientManager, donationManager, _skillFactory, itemFactory,
webAddress);
_classShopManager = new ClassShopManager(_plugin, _classManager, _skillFactory, itemFactory); _classShopManager = new ClassShopManager(_plugin, _classManager, _skillFactory, itemFactory);
_classShop = new ClassCombatShop(_classShopManager, clientManager, donationManager, webAddress); _classShop = new ClassCombatShop(_classShopManager, clientManager, donationManager, webAddress);
_eloManager = new EloManager(_plugin); _eloManager = new EloManager(_plugin);
} }
//_statsManager = new StatsManager(plugin); // _statsManager = new StatsManager(plugin);
_portal = portal; _portal = portal;
//Shop // Shop
_arcadeShop = new ArcadeShop(this, clientManager, donationManager); _arcadeShop = new ArcadeShop(this, clientManager, donationManager);
//Game Factory // Game Factory
_gameFactory = new GameFactory(this); _gameFactory = new GameFactory(this);
//Managers // Managers
new GameChatManager(this); new GameChatManager(this);
_gameCreationManager = new GameCreationManager(this); _gameCreationManager = new GameCreationManager(this);
_gameGemManager = new GameGemManager(this); _gameGemManager = new GameGemManager(this);
@ -208,14 +220,14 @@ public class ArcadeManager extends MiniPlugin implements IRelation
_miscManager = new MiscManager(this); _miscManager = new MiscManager(this);
new IdleManager(this); new IdleManager(this);
//Game Addons // Game Addons
new CompassAddon(plugin, this); new CompassAddon(plugin, this);
new SoupAddon(plugin, this); new SoupAddon(plugin, this);
new TeamArmorAddon(plugin, this); new TeamArmorAddon(plugin, this);
} }
@Override @Override
public void AddCommands() public void AddCommands()
{ {
AddCommand(new GameCommand(this)); AddCommand(new GameCommand(this));
AddCommand(new WriteCommand(this)); AddCommand(new WriteCommand(this));
@ -285,7 +297,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
{ {
return _eloManager; return _eloManager;
} }
public Explosion GetExplosion() public Explosion GetExplosion()
{ {
return _explosionManager; return _explosionManager;
@ -320,7 +332,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
{ {
return _arcadeShop; return _arcadeShop;
} }
public GameStatsManager GetStats() public GameStatsManager GetStats()
{ {
return _gameStatsManager; return _gameStatsManager;
@ -328,7 +340,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
public GameCreationManager GetGameCreationManager() public GameCreationManager GetGameCreationManager()
{ {
return _gameCreationManager; return _gameCreationManager;
} }
public GameFactory GetGameFactory() public GameFactory GetGameFactory()
@ -355,7 +367,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
{ {
return _statsManager; return _statsManager;
} }
public ChatColor GetColor(Player player) public ChatColor GetColor(Player player)
{ {
if (_game == null) if (_game == null)
@ -369,7 +381,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
} }
@Override @Override
public boolean CanHurt(String a, String b) public boolean CanHurt(String a, String b)
{ {
return CanHurt(UtilPlayer.searchExact(a), UtilPlayer.searchExact(b)); return CanHurt(UtilPlayer.searchExact(a), UtilPlayer.searchExact(b));
} }
@ -385,7 +397,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
if (!_game.DamagePvP) if (!_game.DamagePvP)
return false; return false;
//Self Damage // Self Damage
if (pA.equals(pB)) if (pA.equals(pB))
return _game.DamageSelf; return _game.DamageSelf;
@ -420,8 +432,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation
@EventHandler @EventHandler
public void MessageMOTD(ServerListPingEvent event) public void MessageMOTD(ServerListPingEvent event)
{ {
String extrainformation = "|" + _serverConfig.ServerType + "|" + (_game == null ? "Unknown" : _game.GetName()) + "|" + ((_game == null || _game.WorldData == null) ? "Unknown" : _game.WorldData.MapName); String extrainformation = "|" + _serverConfig.ServerType + "|" + (_game == null ? "Unknown" : _game.GetName())
+ "|" + ((_game == null || _game.WorldData == null) ? "Unknown" : _game.WorldData.MapName);
if (_game == null || _game.GetState() == GameState.Recruit) if (_game == null || _game.GetState() == GameState.Recruit)
{ {
@ -459,7 +472,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
event.setQuitMessage(null); event.setQuitMessage(null);
} }
public Game GetGame() public Game GetGame()
{ {
return _game; return _game;
} }
@ -483,9 +496,12 @@ public class ArcadeManager extends MiniPlugin implements IRelation
{ {
if (_game != null && !_game.GiveClock) if (_game != null && !_game.GiveClock)
return; return;
player.getInventory().setItem(8, ItemStackFactory.Instance.CreateStack(Material.WATCH, (byte)0, 1, (short)0, C.cGreen + "Return to Hub", player.getInventory().setItem(
new String[] {"", ChatColor.RESET + "Click while holding this", ChatColor.RESET + "to return to the Hub."})); 8,
ItemStackFactory.Instance.CreateStack(Material.WATCH, (byte) 0, 1, (short) 0, C.cGreen
+ "Return to Hub", new String[] { "", ChatColor.RESET + "Click while holding this",
ChatColor.RESET + "to return to the Hub." }));
} }
@EventHandler @EventHandler
@ -493,41 +509,55 @@ public class ArcadeManager extends MiniPlugin implements IRelation
{ {
if (Bukkit.getServer().hasWhitelist()) if (Bukkit.getServer().hasWhitelist())
{ {
if (_clientManager.Get(event.getPlayer().getName()).GetRank().Has(event.getPlayer(), Rank.MODERATOR, false)) if (_clientManager.Get(event.getPlayer().getName()).GetRank().Has(event.getPlayer(), Rank.MODERATOR, false))
{ {
event.allow(); event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED); event.setResult(PlayerLoginEvent.Result.ALLOWED);
if (_serverConfig.Tournament) if (_serverConfig.Tournament)
{ {
event.getPlayer().setOp(true); event.getPlayer().setOp(true);
} }
} }
else else
{ {
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Server Whitelisted!"); for (OfflinePlayer player : Bukkit.getWhitelistedPlayers())
} {
if (player.getName().equalsIgnoreCase(event.getPlayer().getName()))
return; {
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
return;
}
}
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Server Whitelisted!");
}
return;
} }
// Reserved Slot Check // Reserved Slot Check
if (Bukkit.getOnlinePlayers().length >= Bukkit.getServer().getMaxPlayers()) if (Bukkit.getOnlinePlayers().length >= Bukkit.getServer().getMaxPlayers())
{ {
if (_serverStatusManager.getCurrentServerName().contains("BETA")) if (_serverStatusManager.getCurrentServerName().contains("BETA"))
{ {
if (_clientManager.Get(event.getPlayer().getName()).GetRank().Has(event.getPlayer(), Rank.HELPER, false)) if (_clientManager.Get(event.getPlayer().getName()).GetRank()
.Has(event.getPlayer(), Rank.HELPER, false))
{ {
event.allow(); event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED); event.setResult(PlayerLoginEvent.Result.ALLOWED);
return; return;
} }
} }
else if (_clientManager.Get(event.getPlayer().getName()).GetRank().Has(event.getPlayer(), Rank.ULTRA, false) || _donationManager.Get(event.getPlayer().getName()).OwnsUnknownPackage(_serverConfig.ServerType + " ULTRA")) else if (_clientManager.Get(event.getPlayer().getName()).GetRank()
.Has(event.getPlayer(), Rank.ULTRA, false)
|| _donationManager.Get(event.getPlayer().getName()).OwnsUnknownPackage(
_serverConfig.ServerType + " ULTRA"))
{ {
event.allow(); event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED); event.setResult(PlayerLoginEvent.Result.ALLOWED);
return; return;
} }
@ -535,9 +565,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation
} }
} }
public boolean IsAlive(Player player) public boolean IsAlive(Player player)
{ {
if (_game == null) if (_game == null)
return false; return false;
return _game.IsAlive(player); return _game.IsAlive(player);
@ -549,16 +579,16 @@ public class ArcadeManager extends MiniPlugin implements IRelation
player.setAllowFlight(false); player.setAllowFlight(false);
UtilInv.Clear(player); UtilInv.Clear(player);
((CraftEntity)player).getHandle().getDataWatcher().watch(0, Byte.valueOf((byte) 0)); ((CraftEntity) player).getHandle().getDataWatcher().watch(0, Byte.valueOf((byte) 0));
player.setSprinting(false); player.setSprinting(false);
player.setFoodLevel(20); player.setFoodLevel(20);
player.setSaturation(3f); player.setSaturation(3f);
player.setExhaustion(0f); player.setExhaustion(0f);
player.setMaxHealth(20); player.setMaxHealth(20);
player.setHealth(player.getMaxHealth()); player.setHealth(player.getMaxHealth());
player.setFireTicks(0); player.setFireTicks(0);
player.setFallDistance(0); player.setFallDistance(0);
@ -566,11 +596,11 @@ public class ArcadeManager extends MiniPlugin implements IRelation
player.setLevel(0); player.setLevel(0);
player.setExp(0f); player.setExp(0f);
((CraftPlayer)player).getHandle().spectating = false; ((CraftPlayer) player).getHandle().spectating = false;
((CraftPlayer)player).getHandle().k = true; ((CraftPlayer) player).getHandle().k = true;
// Arrows go bye bye. // Arrows go bye bye.
((CraftPlayer)player).getHandle().p(0); ((CraftPlayer) player).getHandle().p(0);
GetCondition().EndCondition(player, ConditionType.CLOAK, null); GetCondition().EndCondition(player, ConditionType.CLOAK, null);
@ -582,8 +612,10 @@ public class ArcadeManager extends MiniPlugin implements IRelation
public ArrayList<String> LoadFiles(String gameName) public ArrayList<String> LoadFiles(String gameName)
{ {
TimingManager.start("ArcadeManager LoadFiles"); TimingManager.start("ArcadeManager LoadFiles");
File folder = new File(".." + File.separatorChar + ".." + File.separatorChar + "update" + File.separatorChar + "maps" + File.separatorChar + gameName); File folder = new File(".." + File.separatorChar + ".." + File.separatorChar + "update" + File.separatorChar
if (!folder.exists()) folder.mkdirs(); + "maps" + File.separatorChar + gameName);
if (!folder.exists())
folder.mkdirs();
ArrayList<String> maps = new ArrayList<String>(); ArrayList<String> maps = new ArrayList<String>();
@ -599,19 +631,19 @@ public class ArcadeManager extends MiniPlugin implements IRelation
if (name.length() < 5) if (name.length() < 5)
continue; continue;
name = name.substring(name.length()-4, name.length()); name = name.substring(name.length() - 4, name.length());
if (file.getName().equals(".zip")) if (file.getName().equals(".zip"))
continue; continue;
maps.add(file.getName().substring(0, file.getName().length()-4)); maps.add(file.getName().substring(0, file.getName().length() - 4));
} }
for (String map : maps) for (String map : maps)
System.out.println("Found Map: " + map); System.out.println("Found Map: " + map);
TimingManager.stop("ArcadeManager LoadFiles"); TimingManager.stop("ArcadeManager LoadFiles");
return maps; return maps;
} }
@ -657,14 +689,14 @@ public class ArcadeManager extends MiniPlugin implements IRelation
if (_game == null) if (_game == null)
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler @EventHandler
public void MobSpawn(CreatureSpawnEvent event) public void MobSpawn(CreatureSpawnEvent event)
{ {
if (_game == null) if (_game == null)
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler @EventHandler
public void SkillTrigger(SkillTriggerEvent event) public void SkillTrigger(SkillTriggerEvent event)
{ {
@ -673,7 +705,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
event.SetCancelled(true); event.SetCancelled(true);
} }
} }
@EventHandler @EventHandler
public void ItemTrigger(ItemTriggerEvent event) public void ItemTrigger(ItemTriggerEvent event)
{ {
@ -689,35 +721,35 @@ public class ArcadeManager extends MiniPlugin implements IRelation
if (event.getMessage().equalsIgnoreCase("/spec")) if (event.getMessage().equalsIgnoreCase("/spec"))
{ {
event.setCancelled(true); event.setCancelled(true);
if (_game != null && _game.InProgress()) if (_game != null && _game.InProgress())
{ {
UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot toggle Spectator during games.")); UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot toggle Spectator during games."));
return; return;
} }
if (!_specList.remove(event.getPlayer())) if (!_specList.remove(event.getPlayer()))
{ {
_specList.add(event.getPlayer()); _specList.add(event.getPlayer());
UtilPlayer.message(event.getPlayer(), F.main("Game", "You are now a Spectator!")); UtilPlayer.message(event.getPlayer(), F.main("Game", "You are now a Spectator!"));
} }
else else
{ {
UtilPlayer.message(event.getPlayer(), F.main("Game", "You are no longer a Spectator!")); UtilPlayer.message(event.getPlayer(), F.main("Game", "You are no longer a Spectator!"));
} }
//Clean // Clean
if (_game != null) if (_game != null)
{ {
//Remove Data // Remove Data
_game.RemoveTeamPreference(event.getPlayer()); _game.RemoveTeamPreference(event.getPlayer());
_game.GetPlayerKits().remove(event.getPlayer()); _game.GetPlayerKits().remove(event.getPlayer());
_game.GetPlayerGems().remove(event.getPlayer()); _game.GetPlayerGems().remove(event.getPlayer());
//Leave Team // Leave Team
GameTeam team = _game.GetTeam(event.getPlayer()); GameTeam team = _game.GetTeam(event.getPlayer());
if (team != null) if (team != null)
{ {
team.RemovePlayer(event.getPlayer()); team.RemovePlayer(event.getPlayer());
@ -725,23 +757,23 @@ public class ArcadeManager extends MiniPlugin implements IRelation
} }
} }
} }
@EventHandler @EventHandler
public void ObserverQuit(PlayerQuitEvent event) public void ObserverQuit(PlayerQuitEvent event)
{ {
_specList.remove(event.getPlayer()); _specList.remove(event.getPlayer());
} }
public boolean IsObserver(Player player) public boolean IsObserver(Player player)
{ {
return _specList.contains(player); return _specList.contains(player);
} }
public boolean IsTournamentServer() public boolean IsTournamentServer()
{ {
return _serverConfig.Tournament; return _serverConfig.Tournament;
} }
@EventHandler @EventHandler
public void ObserverQuit(GameStateChangeEvent event) public void ObserverQuit(GameStateChangeEvent event)
{ {
@ -750,10 +782,11 @@ public class ArcadeManager extends MiniPlugin implements IRelation
_skillFactory.ResetAll(); _skillFactory.ResetAll();
} }
} }
@EventHandler @EventHandler
public void TeleportLog(PlayerTeleportEvent event) public void TeleportLog(PlayerTeleportEvent event)
{ {
System.out.println("Teleporting: " + event.getPlayer().getName() + " to " + event.getTo().getWorld().getWorldFolder().getName()); System.out.println("Teleporting: " + event.getPlayer().getName() + " to "
+ event.getTo().getWorld().getWorldFolder().getName());
} }
} }