use of pl.plajer.villagedefense3.villagedefenseapi.VillageGameStartEvent in project Village_Defense by Plajer.
the class Arena method run.
public void run() {
User.handleCooldowns();
ArenaUtils.updateScoreboard(this);
switch(getArenaState()) {
case WAITING_FOR_PLAYERS:
if (plugin.isBungeeActivated())
plugin.getServer().setWhitelist(false);
if (getPlayers().size() < getMinimumPlayers()) {
if (getTimer() <= 0) {
setTimer(15);
String message = ChatManager.formatMessage(this, ChatManager.colorMessage("In-Game.Messages.Lobby-Messages.Waiting-For-Players"), getMinimumPlayers());
for (Player player1 : getPlayers()) {
player1.sendMessage(ChatManager.PLUGIN_PREFIX + message);
}
return;
}
} else {
if (plugin.isBossbarEnabled()) {
gameBar.setTitle(ChatManager.colorMessage("Bossbar.Waiting-For-Players"));
}
for (Player p : getPlayers()) {
p.sendMessage(ChatManager.PLUGIN_PREFIX + ChatManager.colorMessage("In-Game.Messages.Lobby-Messages.Enough-Players-To-Start"));
}
setArenaState(ArenaState.STARTING);
setTimer(Main.STARTING_TIMER_TIME);
this.showPlayers();
}
setTimer(getTimer() - 1);
break;
case STARTING:
if (plugin.isBossbarEnabled()) {
gameBar.setTitle(ChatManager.colorMessage("Bossbar.Starting-In").replaceAll("%time%", String.valueOf(getTimer())));
gameBar.setProgress(getTimer() / plugin.getConfig().getDouble("Starting-Waiting-Time"));
}
if (getTimer() == 0) {
VillageGameStartEvent villageGameStartEvent = new VillageGameStartEvent(this);
Bukkit.getPluginManager().callEvent(villageGameStartEvent);
setArenaState(ArenaState.IN_GAME);
if (plugin.isBossbarEnabled()) {
gameBar.setProgress(1.0);
}
setTimer(5);
teleportAllToStartLocation();
for (Player player : getPlayers()) {
player.getInventory().clear();
player.setGameMode(GameMode.SURVIVAL);
UserManager.getUser(player.getUniqueId()).setInt("orbs", plugin.getConfig().getInt("Orbs-Starting-Amount"));
ArenaUtils.hidePlayersOutsideTheGame(player, this);
if (UserManager.getUser(player.getUniqueId()).getKit() != null) {
UserManager.getUser(player.getUniqueId()).getKit().giveKitItems(player);
} else {
KitRegistry.getDefaultKit().giveKitItems(player);
}
player.updateInventory();
addStat(player, "gamesplayed");
addExperience(player, 10);
setTimer(25);
player.sendMessage(ChatManager.PLUGIN_PREFIX + ChatManager.colorMessage("In-Game.Messages.Lobby-Messages.Game-Started"));
}
isFighting = false;
}
setTimer(getTimer() - 1);
break;
case IN_GAME:
if (plugin.isBossbarEnabled()) {
if (barToggle > 5) {
gameBar.setTitle(ChatManager.colorMessage("Bossbar.In-Game-Wave").replaceAll("%wave%", String.valueOf(getWave())));
barToggle++;
if (barToggle > 10) {
barToggle = 0;
}
} else {
gameBar.setTitle(ChatManager.colorMessage("Bossbar.In-Game-Info").replaceAll("%wave%", String.valueOf(getWave())));
barToggle++;
}
}
if (plugin.isBungeeActivated()) {
if (getMaximumPlayers() <= getPlayers().size()) {
plugin.getServer().setWhitelist(true);
} else {
plugin.getServer().setWhitelist(false);
}
}
zombieChecker++;
if (zombieChecker >= 60) {
List<Villager> remove = new ArrayList<>();
for (Villager villager : getVillagers()) {
if (villager.isDead())
remove.add(villager);
}
for (Villager villager : remove) {
removeVillager(villager);
}
remove.clear();
zombieChecker = 0;
List<Zombie> removeAfterLoop = new ArrayList<>();
for (Zombie zombie : getZombies()) {
if (zombie.isDead()) {
removeAfterLoop.add(zombie);
continue;
}
if (glitchedZombies.contains(zombie) && zombie.getLocation().distance(zombieCheckerLocations.get(zombie)) <= 1) {
removeAfterLoop.add(zombie);
zombieCheckerLocations.remove(zombie);
zombie.remove();
}
if (zombieCheckerLocations.get(zombie) == null) {
zombieCheckerLocations.put(zombie, zombie.getLocation());
} else {
Location location = zombieCheckerLocations.get(zombie);
if (zombie.getLocation().distance(location) <= 1) {
zombie.teleport(zombieSpawns.get(random.nextInt(zombieSpawns.size() - 1)));
zombieCheckerLocations.put(zombie, zombie.getLocation());
glitchedZombies.add(zombie);
}
}
}
for (Zombie zombie : removeAfterLoop) {
removeZombie(zombie);
}
removeAfterLoop.clear();
}
if (getVillagers().size() <= 0 || getPlayersLeft().size() <= 0) {
clearZombies();
this.setArenaState(ArenaState.ENDING);
this.stopGame(false);
if (getVillagers().size() <= 0) {
showPlayers();
this.setTimer(10);
} else
this.setTimer(5);
return;
}
if (isFighting) {
if (getZombiesLeft() <= 0) {
isFighting = false;
endWave();
}
if (zombiesToSpawn > 0) {
spawnZombies();
setTimer(500);
} else {
if (getTimer() == 0) {
if (getZombiesLeft() <= 5) {
clearZombies();
zombiesToSpawn = 0;
for (Player p : getPlayers()) {
p.sendMessage(ChatManager.PLUGIN_PREFIX + ChatManager.colorMessage("In-Game.Messages.Zombie-Got-Stuck-In-The-Map"));
}
} else {
getZombies().clear();
for (int i = getZombiesLeft(); i > 0; i++) {
spawnFastZombie(random);
}
}
}
}
if (zombiesToSpawn < 0)
zombiesToSpawn = 0;
setTimer(getTimer() - 1);
} else {
if (getTimer() <= 0) {
isFighting = true;
startWave();
}
}
setTimer(getTimer() - 1);
break;
case ENDING:
if (plugin.isBungeeActivated())
plugin.getServer().setWhitelist(false);
if (getTimer() <= 0) {
if (plugin.isBossbarEnabled()) {
gameBar.setTitle(ChatManager.colorMessage("Bossbar.Game-Ended"));
}
clearVillagers();
clearZombies();
clearGolems();
clearWolfs();
for (Player player : getPlayers()) {
UserManager.getUser(player.getUniqueId()).removeScoreboard();
player.setGameMode(GameMode.SURVIVAL);
for (Player players : Bukkit.getOnlinePlayers()) {
player.showPlayer(players);
players.hidePlayer(player);
}
for (PotionEffect effect : player.getActivePotionEffects()) {
player.removePotionEffect(effect.getType());
}
player.setFlying(false);
player.setAllowFlight(false);
player.getInventory().clear();
ArmorHelper.clearArmor(player);
if (plugin.isBossbarEnabled()) {
gameBar.removePlayer(player);
}
player.setMaxHealth(20.0);
player.setHealth(player.getMaxHealth());
player.setFireTicks(0);
player.setFoodLevel(20);
for (Player players : plugin.getServer().getOnlinePlayers()) {
if (ArenaRegistry.getArena(players) != null)
players.showPlayer(player);
player.showPlayer(players);
}
}
teleportAllToEndLocation();
if (plugin.isInventoryManagerEnabled()) {
for (Player player : getPlayers()) {
plugin.getInventoryManager().loadInventory(player);
}
}
for (Player p : getPlayers()) {
p.sendMessage(ChatManager.PLUGIN_PREFIX + ChatManager.colorMessage("Commands.Teleported-To-The-Lobby"));
}
setArenaState(ArenaState.RESTARTING);
for (User user : UserManager.getUsers(this)) {
user.setSpectator(false);
user.setInt("orbs", 0);
user.setFakeDead(false);
}
plugin.getRewardsHandler().performEndGameRewards(this);
clearPlayers();
if (plugin.isBungeeActivated()) {
if (ConfigurationManager.getConfig("bungee").getBoolean("Shutdown-When-Game-Ends"))
plugin.getServer().shutdown();
}
}
setTimer(getTimer() - 1);
break;
case RESTARTING:
clearVillagers();
this.restoreMap();
getPlayers().clear();
setArenaState(ArenaState.WAITING_FOR_PLAYERS);
wave = 1;
if (plugin.isBungeeActivated()) {
for (Player player : plugin.getServer().getOnlinePlayers()) {
this.addPlayer(player);
}
}
break;
default:
// o.o?
break;
}
}
Aggregations