From b21c91c09a90e2628d484e633fb6013aa70cd54c Mon Sep 17 00:00:00 2001 From: BunSLaPatate Date: Sat, 22 Sep 2018 13:36:53 +0200 Subject: [PATCH] Plugin %10 remaining --- .../berrygames/witchrush/game/WinManager.java | 3 + .../listeners/players/DeathEvent.java | 84 ++++++++++++------- .../witchrush/team/TeamManager.java | 8 +- .../witchrush/tools/DeadPlayer.java | 3 +- 4 files changed, 64 insertions(+), 34 deletions(-) diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/game/WinManager.java b/WitchRush/src/main/java/net/berrygames/witchrush/game/WinManager.java index 14cfcc7..2ed88d1 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/WinManager.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/WinManager.java @@ -17,6 +17,9 @@ public class WinManager { if (teamManager.getTeamPlayerCount(teamInfos) >= 1) { ++teamLeft; } + if(teamManager.getPlayerTeamList(teamInfos).size() == 0){ + teamManager.getTeamBoss(teamInfos).getWitch().remove(); + } } if (teamLeft == 1) { for (final TeamInfos teamInfos : TeamInfos.values()) { diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/DeathEvent.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/DeathEvent.java index eaa977e..714b581 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/DeathEvent.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/DeathEvent.java @@ -45,6 +45,7 @@ public class DeathEvent implements Listener { switch (WitchRush.get().getState()){ case PVP: if(!teamManager.isInLife(teamManager.getPlayerTeam(player))){ + checkDrop(e); TeamInfos team = WitchRush.get().getTeamManager().getPlayerTeam(player); e.setDeathMessage(WitchRush.prefix()+team.getChatColor()+player.getName()+"§c est éliminé"); witchPlayer.setDeath(witchPlayer.getDeath()+1); @@ -59,14 +60,15 @@ public class DeathEvent implements Listener { player.sendMessage(" "); TeamsTagsManager.setNameTag(player, player.getName(), "§8(Spec)§7 "); + } else { + teamvictim = WitchRush.get().getTeamManager().getPlayerTeam(player); + teamKiller = WitchRush.get().getTeamManager().getPlayerTeam(killer); + e.setDeathMessage(WitchRush.prefix()+teamvictim.getChatColor()+player.getName()+"§d a été tué par "+teamKiller.getChatColor()+ killer.getName()); + checkDrop(e); + new DeadPlayer(player); + witchKiller.setKills(witchKiller.getKills()+1); + witchPlayer.setDeath(witchPlayer.getDeath()+1); } - teamvictim = WitchRush.get().getTeamManager().getPlayerTeam(player); - teamKiller = WitchRush.get().getTeamManager().getPlayerTeam(killer); - - e.setDeathMessage(WitchRush.prefix()+teamvictim.getChatColor()+player.getName()+"§d a été tué par "+teamKiller.getChatColor()+ killer.getName()); - new DeadPlayer(player); - witchKiller.setKills(witchKiller.getKills()+1); - witchPlayer.setDeath(witchPlayer.getDeath()+1); break; case NOWITCH: teamvictim = WitchRush.get().getTeamManager().getPlayerTeam(player); @@ -81,6 +83,7 @@ public class DeathEvent implements Listener { } else { TeamInfos team = WitchRush.get().getTeamManager().getPlayerTeam(player); e.setDeathMessage(WitchRush.prefix()+team.getChatColor()+player.getName()+"§d est mort"); + checkDrop(e); new DeadPlayer(player); player.setHealth(20); witchPlayer.setDeath(witchPlayer.getDeath()+1); @@ -91,30 +94,55 @@ public class DeathEvent implements Listener { @EventHandler public void onEntityDeath(final EntityDeathEvent e) { if (e.getEntity() instanceof Witch) { - final Witch witch = (Witch)e.getEntity(); - final TeamManager teamManager = WitchRush.get().getTeamManager(); - for (final ItemStack itemStack : e.getDrops()) { - itemStack.setType(Material.AIR); - } - TeamInfos teamInfos = null; - for (final TeamInfos teamInfosList : TeamInfos.values()) { - if (teamManager.getTeamBoss(teamInfosList).getWitch().equals(witch)) { - teamInfos = teamInfosList; + if(WitchRush.get().getState().equals(GameState.PVP)){ + final Witch witch = (Witch)e.getEntity(); + final TeamManager teamManager = WitchRush.get().getTeamManager(); + for (final ItemStack itemStack : e.getDrops()) { + itemStack.setType(Material.AIR); } - } - Bukkit.broadcastMessage(WitchRush.prefix()+"L'équipe "+teamInfos.getChatColor()+teamInfos.getTeamName()+" §dest morte !"); - if (e.getEntity().getKiller() instanceof Player) { - Bukkit.getPluginManager().callEvent(new BossDeathEvent(teamInfos, e.getEntity().getKiller())); - teamManager.getBossEntityMap().remove(teamInfos); - new HealthRunnable().arMap.remove(teamInfos); - } - for (final Player playerOnline : Bukkit.getOnlinePlayers()) { - playerOnline.playSound(playerOnline.getLocation(), Sound.ENTITY_WITHER_DEATH, 1.0f, 1.0f); - if (teamManager.isPlayerInTeam(playerOnline, teamInfos)) { - playerOnline.sendMessage(WitchRush.prefix()+"Votre Boss est mort! Ne mourrez pas !"); - playerOnline.sendTitle("§cAttention","Votre boss est mort !"); + TeamInfos teamInfos = null; + for (final TeamInfos teamInfosList : TeamInfos.values()) { + if (teamManager.getTeamBoss(teamInfosList).getWitch().equals(witch)) { + teamInfos = teamInfosList; + } + } + Bukkit.broadcastMessage(WitchRush.prefix()+"L'équipe "+teamInfos.getChatColor()+teamInfos.getTeamName()+" §dest morte !"); + if (e.getEntity().getKiller() instanceof Player) { + Bukkit.getPluginManager().callEvent(new BossDeathEvent(teamInfos, e.getEntity().getKiller())); + teamManager.getBossEntityMap().remove(teamInfos); + new HealthRunnable().arMap.remove(teamInfos); + } + for (final Player playerOnline : Bukkit.getOnlinePlayers()) { + playerOnline.playSound(playerOnline.getLocation(), Sound.ENTITY_WITHER_DEATH, 1.0f, 1.0f); + if (teamManager.isPlayerInTeam(playerOnline, teamInfos)) { + playerOnline.sendMessage(WitchRush.prefix()+"Votre Boss est mort! Ne mourrez pas !"); + playerOnline.sendTitle("§cAttention","Votre boss est mort !"); + } } } } } + + private void checkDrop(PlayerDeathEvent e){ + for(int i = 0; i teams = new TreeMap<>(); + TreeMap> teamMap = new TreeMap<>(); for(TeamInfos infos : TeamInfos.values()){ for(Player pls: Bukkit.getOnlinePlayers()){ - if(!isPlayerInTeam(pls , infos)) teams.put(infos, pls); + if(!isPlayerInTeam(pls , infos)) teamMap.put(infos, getPlayerTeamList(infos)); } } - if(!playerHaveTeam(player)) addPlayerTeam(player, teams.firstKey()); + if(!playerHaveTeam(player)) addPlayerTeam(player, teamMap.lastKey()); } public void checkNoTeamPlayers() { @@ -117,7 +117,7 @@ public class TeamManager { if (this.playerTeamList.get(teamInfos) != null) { return this.playerTeamList.get(teamInfos); } - return new ArrayList(); + return new ArrayList<>(); } public Integer getPlayerTeamLimit() { diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/tools/DeadPlayer.java b/WitchRush/src/main/java/net/berrygames/witchrush/tools/DeadPlayer.java index a77c2cc..79a1214 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/tools/DeadPlayer.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/tools/DeadPlayer.java @@ -21,8 +21,7 @@ public class DeadPlayer { this.witchPlayer.setSpectator(true); player.setHealth(20); player.setGameMode(GameMode.SPECTATOR); - player.teleport(Locations.SPAWN_SPECTATORS.getLocation()); - player.sendTitle("§cVous êtes mort", null); + player.sendTitle("§cVous êtes mort", " "); task = Bukkit.getScheduler().runTaskTimer(WitchRush.get(), new Runnable() { @Override public void run() {