package eu.thog.uhcrun.game; import com.connorlinfoot.titleapi.TitleAPI; import eu.thog.uhcrun.UHCRun; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Player; import java.util.Collections; import java.util.Iterator; import java.util.UUID; /** * This file is a part of the UHCRun Project CodeBase * Created by Thog * (C) Copyright Thomas Guillemard 2016 * All rights reserved. */ public class SoloGame extends AbstractGame { public SoloGame(UHCRun plugin) { super(plugin, plugin.getProperties()); } @Override public void checkStump(Player player) { UHCPlayer playerData = getPlayer(player.getUniqueId()); if (getOnlineInGamePlayers().size() == 2) { // HACK this.gamePlayers.remove(playerData.getUUID()); UUID winnerId = getOnlineInGamePlayers().keySet().iterator().next(); this.gamePlayers.put(playerData.getUUID(), playerData); Player winner = server.getPlayer(winnerId); if (winner == null) { this.handleGameEnd(); } else { this.win(winner); } } else if (getOnlineInGamePlayers().size() == 1) { this.handleGameEnd(); } else { server.broadcastMessage(ChatColor.YELLOW + "Il reste encore " + ChatColor.AQUA + (getOnlineInGamePlayers().size() - 1) + ChatColor.YELLOW + " joueur(s) en vie."); } } public void win(final Player player) { server.broadcastMessage(ChatColor.GOLD + "" + ChatColor.BOLD + "Victoire de " + player.getDisplayName() + ChatColor.GOLD + "" + ChatColor.BOLD + " !"); for (Player user : server.getOnlinePlayers()) { TitleAPI.sendTitle(user, 5, 70, 5, ChatColor.GOLD + "Victoire de " + player.getDisplayName(), ""); } this.effectsOnWinner(player); this.handleGameEnd(); } @Override protected void teleport() { Iterator<Location> locationIterator = this.spawnPoints.iterator(); for (UUID uuid : this.getOnlineInGamePlayers().keySet()) { Player player = server.getPlayer(uuid); if (player == null) { gamePlayers.remove(uuid); continue; } if (!locationIterator.hasNext()) { player.kickPlayer(ChatColor.RED + "Plus de place dans la partie."); gamePlayers.remove(uuid); continue; } Location location = locationIterator.next(); player.teleport(location); } } @Override public void teleportDeathMatch() { Collections.shuffle(this.spawnPoints); Iterator<Location> locationIterator = this.spawnPoints.iterator(); for (UUID uuid : this.getOnlineInGamePlayers().keySet()) { Player player = server.getPlayer(uuid); if (player == null) { gamePlayers.remove(uuid); continue; } if (!locationIterator.hasNext()) { player.kickPlayer(ChatColor.RED + "Plus de place dans la partie."); gamePlayers.remove(uuid); continue; } Location location = locationIterator.next(); player.teleport(new Location(location.getWorld(), location.getX() * 4 / 10, 150.0, location.getZ() * 4 / 10)); } } }