From c8ceb42a59356134592e400af201c963e1e53f4d Mon Sep 17 00:00:00 2001 From: BunSLaPatate Date: Wed, 19 Sep 2018 20:26:47 +0200 Subject: [PATCH] Added Team system & Guis --- .../net/berrygames/witchrush/WitchPlayer.java | 8 -- .../witchrush/game/DeathMatchTask.java | 4 - .../witchrush/game/GameManager.java | 7 +- .../witchrush/game/task/DeathMatchTask.java | 26 +++++ .../witchrush/game/task/HealthRunnable.java | 12 +- .../witchrush/game/task/PVPTask.java | 6 +- .../listeners/custom/BossDeathEvent.java | 34 ++++++ ...ameStartEvent.java => GameStartEvent.java} | 6 +- .../listeners/players/ChatEvent.java | 15 ++- .../listeners/players/DeathEvent.java | 104 ++++++++++++------ .../listeners/players/InteractEvent.java | 1 + .../listeners/players/InventoryClick.java | 71 ++++++------ .../listeners/players/PlayerJoin.java | 7 +- .../listeners/players/PlayerQuit.java | 1 - .../listeners/players/WitchEvent.java | 53 +++++---- .../witchrush/team/TeamManager.java | 30 +++-- .../berrygames/witchrush/team/TeamsMenu.java | 2 +- .../witchrush/tools/DeadPlayer.java | 25 +---- .../berrygames/witchrush/tools/WitchBoss.java | 13 ++- 19 files changed, 264 insertions(+), 161 deletions(-) delete mode 100644 WitchRush/src/main/java/net/berrygames/witchrush/game/DeathMatchTask.java create mode 100644 WitchRush/src/main/java/net/berrygames/witchrush/game/task/DeathMatchTask.java create mode 100644 WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/BossDeathEvent.java rename WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/{GAGameStartEvent.java => GameStartEvent.java} (74%) diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/WitchPlayer.java b/WitchRush/src/main/java/net/berrygames/witchrush/WitchPlayer.java index 474f906..f006b42 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/WitchPlayer.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/WitchPlayer.java @@ -33,14 +33,6 @@ public class WitchPlayer { this.death = 0; } - public void teleportPlayer(){ - if(spectator){ - player.teleport(Locations.SPAWN_SPECTATORS.getLocation()); - } else { - player.teleport(Locations.PLAYER_SPAWN_WAITING_ROOM.getLocation()); - } - } - public void teleportToBase(){ TeamManager teamManager = WitchRush.get().getTeamManager(); for(TeamInfos teamInfos : TeamInfos.values()){ diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/game/DeathMatchTask.java b/WitchRush/src/main/java/net/berrygames/witchrush/game/DeathMatchTask.java deleted file mode 100644 index e31bf89..0000000 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/DeathMatchTask.java +++ /dev/null @@ -1,4 +0,0 @@ -package net.berrygames.witchrush.game; - -public class DeathMatchTask { -} diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/game/GameManager.java b/WitchRush/src/main/java/net/berrygames/witchrush/game/GameManager.java index 5834169..dafe4cd 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/GameManager.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/GameManager.java @@ -2,9 +2,8 @@ package net.berrygames.witchrush.game; import net.berrygames.witchrush.WitchPlayer; import net.berrygames.witchrush.WitchRush; -import net.berrygames.witchrush.game.task.HealthRunnable; import net.berrygames.witchrush.game.task.NoPVPTask; -import net.berrygames.witchrush.listeners.custom.GAGameStartEvent; +import net.berrygames.witchrush.listeners.custom.GameStartEvent; import net.berrygames.witchrush.team.TeamInfos; import net.berrygames.witchrush.team.TeamManager; import net.berrygames.witchrush.tools.Locations; @@ -28,7 +27,7 @@ public class GameManager { String startMessage = WitchRush.prefix()+"§dVous avez §63minutes §dpour vous préparez."; Bukkit.broadcastMessage(WitchRush.prefix()+"§dLa partie commence !"); Bukkit.broadcastMessage(startMessage); - Bukkit.getServer().getPluginManager().callEvent(new GAGameStartEvent(startMessage)); + Bukkit.getServer().getPluginManager().callEvent(new GameStartEvent(startMessage)); this.loadPlayer(); for(WitchPlayer witchPlayer : WitchPlayer.getwitchMap().values()){ @@ -76,7 +75,7 @@ public class GameManager { playerOnline.setLevel(0); playerOnline.setGameMode(GameMode.SURVIVAL); witchPlayer.giveStuff(); - TeamsTagsManager.setNameTag(playerOnline, teamInfos.getIDName(), teamInfos.getChatColor()+teamInfos.getTeamName()); + TeamsTagsManager.setNameTag(playerOnline, teamInfos.getIDName(), teamInfos.getChatColor()+teamInfos.getTeamName()+" "); witchPlayer.sendGameScoreboard(); }); } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/DeathMatchTask.java b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/DeathMatchTask.java new file mode 100644 index 0000000..a730a2c --- /dev/null +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/DeathMatchTask.java @@ -0,0 +1,26 @@ +package net.berrygames.witchrush.game.task; + +import net.berrygames.witchrush.WitchRush; +import net.berrygames.witchrush.team.TeamInfos; +import org.bukkit.scheduler.BukkitRunnable; + +public class DeathMatchTask extends BukkitRunnable { + + int lifeLosed = 0; + + @Override + public void run() { + + for(TeamInfos infos : TeamInfos.values()){ + if(WitchRush.get().getTeamManager().isInLife(infos)){ + if(WitchRush.get().getTeamManager().getBossEntityMap().get(infos).getLife() > 0){ + int life = (WitchRush.get().getTeamManager().getBossEntityMap().get(infos).getLife() - 10); + WitchRush.get().getTeamManager().getBossEntityMap().get(infos).setLife(life); + } + return; + } + } + + lifeLosed++; + } +} diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/HealthRunnable.java b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/HealthRunnable.java index dc4c48d..4e74684 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/HealthRunnable.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/HealthRunnable.java @@ -15,17 +15,17 @@ import java.util.Map; public class HealthRunnable extends BukkitRunnable { public Map arMap; + private TeamManager teamManager; public HealthRunnable() { this.arMap = new HashMap<>(); + teamManager = WitchRush.get().getTeamManager(); } public void run() { - final TeamManager teamManager = WitchRush.get().getTeamManager(); - for (final TeamInfos teamInfos : TeamInfos.values()) { - if (this.arMap.get(teamInfos) == null) { - final Location bossLocation = teamManager.getBossLocation(teamInfos).getLocation(); - final ArmorStand armorStand = (ArmorStand) Bukkit.getWorld("world").spawnEntity(bossLocation, EntityType.ARMOR_STAND); + for(TeamInfos teamInfos : TeamInfos.values()){ + if(arMap.get(teamInfos) == null){ + final ArmorStand armorStand = (ArmorStand) Bukkit.getWorld("world").spawnEntity(teamManager.getBossLocation(teamInfos), EntityType.ARMOR_STAND); armorStand.setAI(false); armorStand.setCustomNameVisible(true); armorStand.setGravity(false); @@ -34,7 +34,7 @@ public class HealthRunnable extends BukkitRunnable { this.arMap.put(teamInfos, armorStand); return; } - this.arMap.get(teamInfos).setCustomName("§5§lVie: §c"+teamManager.getTeamBoss(teamInfos).getLife()); + arMap.get(teamInfos).setCustomName("§5§lVie: §c"+teamManager.getTeamBoss(teamInfos).getLife()); } } } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/PVPTask.java b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/PVPTask.java index 476d0d4..7318ff1 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/PVPTask.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/PVPTask.java @@ -1,7 +1,7 @@ package net.berrygames.witchrush.game.task; import net.berrygames.witchrush.WitchRush; -import net.berrygames.witchrush.game.DeathMatchTask; +import net.berrygames.witchrush.game.WinManager; import org.bukkit.Bukkit; import org.bukkit.scheduler.BukkitRunnable; @@ -13,12 +13,14 @@ public class PVPTask extends BukkitRunnable { public void run() { if(timer == 0){ - new DeathMatchTask(); + new DeathMatchTask().runTaskTimer(WitchRush.get(), 0, 20 * 5); Bukkit.broadcastMessage(WitchRush.prefix()+"Le DeathMatch commence."); Bukkit.broadcastMessage(WitchRush.prefix()+"Les §5§lWitchs §dcommencent à perdre de la vie !"); cancel(); } + new WinManager(); + timer--; } } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/BossDeathEvent.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/BossDeathEvent.java new file mode 100644 index 0000000..b6bb139 --- /dev/null +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/BossDeathEvent.java @@ -0,0 +1,34 @@ +package net.berrygames.witchrush.listeners.custom; + +import net.berrygames.witchrush.team.TeamInfos; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class BossDeathEvent extends Event { + + public static final HandlerList handlers; + private TeamInfos teamInfos; + private Player player; + + public BossDeathEvent(final TeamInfos teamInfos, final Player player) { + this.teamInfos = teamInfos; + this.player = player; + } + + public HandlerList getHandlers() { + return BossDeathEvent.handlers; + } + + public TeamInfos getTeamKiller() { + return this.teamInfos; + } + + public Player getPlayerKiller() { + return this.player; + } + + static { + handlers = new HandlerList(); + } +} diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GAGameStartEvent.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GameStartEvent.java similarity index 74% rename from WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GAGameStartEvent.java rename to WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GameStartEvent.java index 98c28e7..af5eaa4 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GAGameStartEvent.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GameStartEvent.java @@ -3,17 +3,17 @@ package net.berrygames.witchrush.listeners.custom; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class GAGameStartEvent extends Event { +public class GameStartEvent extends Event { public static final HandlerList handlers; private String message; - public GAGameStartEvent(final String message) { + public GameStartEvent(final String message) { this.message = message; } public HandlerList getHandlers() { - return GAGameStartEvent.handlers; + return GameStartEvent.handlers; } public String getStartMessage() { diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/ChatEvent.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/ChatEvent.java index 8d98160..09b5893 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/ChatEvent.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/ChatEvent.java @@ -18,25 +18,28 @@ public class ChatEvent implements Listener { WitchPlayer witchPlayer = WitchPlayer.get(player); if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ - e.setFormat("§7[§6Global§7] §e%1$s §7» §f%2$s"); + e.setFormat("§7%1$s §7» §f%2$s"); } else if(witchPlayer.isSpectator()){ + e.setCancelled(true); for(WitchPlayer pls : WitchPlayer.getwitchMap().values()){ - for(Player players : Bukkit.getOnlinePlayers()){ - if(pls.isSpectator()){ - players.sendMessage("§7[Spectateur] §8%1$s §7» §e%2$s"); + if(pls.isSpectator()){ + for(Player players : Bukkit.getOnlinePlayers()){ + players.sendMessage("§7[Spectateur] §8"+player.getName()+" §7» "+e.getMessage()); } } } + //players.sendMessage("§7[Spectateur] §8"+player.getName()+" §7» "+e.getMessage()); } else { String message = e.getMessage(); if(message.toLowerCase().startsWith("!")){ - e.setFormat("§7[§6Global§7] §e%1$s §7» §f%2$s"); + e.setFormat("§7[§6Global§7] "+WitchRush.get().getTeamManager().getPlayerTeam(player).getChatColor()+"%1$s §7» §f%2$s"); } else { e.setCancelled(true); Bukkit.getOnlinePlayers().forEach(playerOnline -> { final TeamInfos teamInfos = WitchRush.get().getTeamManager().getPlayerTeam(player); if(WitchRush.get().getTeamManager().getPlayerTeam(playerOnline).equals(teamInfos)){ - playerOnline.sendMessage("§7["+teamInfos.getChatColor()+teamInfos.getTeamName()+"§7] §e" + playerOnline.sendMessage("§7["+teamInfos.getChatColor()+teamInfos.getTeamName()+"§7] " + +WitchRush.get().getTeamManager().getPlayerTeam(playerOnline).getChatColor() +player.getDisplayName()+" §7» §f"+message.replace("!"," ")); } }); 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 f084446..3c0ffc0 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 @@ -3,17 +3,19 @@ package net.berrygames.witchrush.listeners.players; import net.berrygames.witchrush.WitchPlayer; import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.game.GameState; +import net.berrygames.witchrush.game.task.HealthRunnable; import net.berrygames.witchrush.listeners.custom.BossDeathEvent; import net.berrygames.witchrush.team.TeamInfos; import net.berrygames.witchrush.team.TeamManager; import net.berrygames.witchrush.tools.DeadPlayer; +import net.berrygames.witchrush.tools.Locations; +import net.berrygames.witchrush.tools.TeamsTagsManager; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.Sound; -import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.entity.Witch; -import org.bukkit.event.Event; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDeathEvent; @@ -22,8 +24,11 @@ import org.bukkit.inventory.ItemStack; public class DeathEvent implements Listener { + TeamManager teamManager = WitchRush.get().getTeamManager(); + @EventHandler - public void death(PlayerDeathEvent e) throws InterruptedException { + public void death(PlayerDeathEvent e) { + Player player = e.getEntity().getPlayer(); Player killer = e.getEntity().getKiller(); WitchPlayer witchPlayer = WitchPlayer.get(player); @@ -33,26 +38,52 @@ public class DeathEvent implements Listener { e.setDeathMessage(null); player.kickPlayer("ENFAIT TOI T'ES FORT PCQ NORMALEMENT YA PAS CA"); } else { - if(!killer.getType().equals(EntityType.PLAYER))return; - if(killer.getType().equals(EntityType.PLAYER)){ - TeamInfos teamvictim = WitchRush.get().getTeamManager().getPlayerTeam(player); - TeamInfos teamKiller = WitchRush.get().getTeamManager().getPlayerTeam(killer); + if(killer instanceof Player){ + switch (WitchRush.get().getState()){ + case PVP: + if(teamManager.isInLife(teamManager.getPlayerTeam(player))){ + TeamInfos teamvictim = WitchRush.get().getTeamManager().getPlayerTeam(player); + TeamInfos 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); - player.setHealth(20); + 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); + } else { + TeamInfos team = WitchRush.get().getTeamManager().getPlayerTeam(player); + e.setDeathMessage(WitchRush.prefix()+team.getChatColor()+player.getName()+"§c est éliminé"); + witchPlayer.setDeath(witchPlayer.getDeath()+1); + witchPlayer.setSpectator(true); + player.teleport(Locations.SPAWN_SPECTATORS.getLocation()); + player.setGameMode(GameMode.SPECTATOR); + teamManager.removePlayerAllTeam(player); + + player.sendMessage(" "); + player.sendMessage("§8(Spectateur) §7Vous êtes éliminé."); + player.sendMessage("§7Seuls les autres spectateurs voient vos messages !"); + player.sendMessage(" "); + + TeamsTagsManager.setNameTag(player, player.getName(), "§8(Spec)§7 "); + + } + break; + case NOWITCH: + TeamInfos teamvictim = WitchRush.get().getTeamManager().getPlayerTeam(player); + TeamInfos 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; + } - killer.sendMessage("§dVous avez tué §e"+player.getName()); - witchKiller.setKills(witchKiller.getKills()+1); - player.sendMessage("§e"+killer.getName()+" §dvous avez tué"); - witchPlayer.setDeath(witchPlayer.getDeath()+1); } else { TeamInfos team = WitchRush.get().getTeamManager().getPlayerTeam(player); e.setDeathMessage(WitchRush.prefix()+team.getChatColor()+player.getName()+"§d est mort"); new DeadPlayer(player); player.setHealth(20); - player.sendMessage("§d Vous êtes mort !"); witchPlayer.setDeath(witchPlayer.getDeath()+1); } } @@ -61,29 +92,32 @@ 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(e.getEntity().getKiller() instanceof Player){ + 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((Event)new BossDeathEvent(teamInfos, e.getEntity().getKiller())); - } - 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())); + new HealthRunnable().arMap.get(teamInfos).setCustomNameVisible(false); + 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 !"); + } } } } } - } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/InteractEvent.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/InteractEvent.java index fe1e6b8..7f7c59c 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/InteractEvent.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/InteractEvent.java @@ -53,6 +53,7 @@ public class InteractEvent implements Listener { if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ e.setCancelled(true); } + e.setCancelled(true); if(e.getRightClicked().getName().equals("S")){ e.setCancelled(true); player.closeInventory(); diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/InventoryClick.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/InventoryClick.java index b623f56..43bdbf8 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/InventoryClick.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/InventoryClick.java @@ -23,43 +23,44 @@ public class InventoryClick implements Listener { ItemStack item = e.getCurrentItem(); Inventory inv = e.getClickedInventory(); TeamManager teamManager = WitchRush.get().getTeamManager(); - if(!inv.getTitle().equals(WitchRush.prefix()+" Teams")) return; - e.setCancelled(true); - switch (item.getType()){ - case WOOL: - final TeamInfos teamInfos = TeamInfos.getTeamInfosByShortData(e.getCurrentItem().getDurability()); - if (teamManager.isPlayerInTeam(player, teamInfos)) { - player.sendMessage(WitchRush.prefix()+"Vous êtes déjà dans cette team !"); - player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1.0f, 1.0f); + if(inv.getTitle().equals(WitchRush.prefix()+"Teams")){ + e.setCancelled(true); + switch (item.getType()){ + case WOOL: + final TeamInfos teamInfos = TeamInfos.getTeamInfosByShortData(e.getCurrentItem().getDurability()); + if (teamManager.isPlayerInTeam(player, teamInfos)) { + player.sendMessage(WitchRush.prefix()+"Vous êtes déjà dans cette team !"); + player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1.0f, 1.0f); + player.closeInventory(); + return; + } + if (teamManager.teamIsFull(teamInfos)) { + player.sendMessage(WitchRush.prefix()+"L'équipe est pleine !"); + player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1.0f, 1.0f); + player.closeInventory(); + return; + } + teamManager.removePlayerAllTeam(player); + player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_YES, 1.0f, 1.0f); + teamManager.addPlayerTeam(player, teamInfos); + TeamInfos infos1 = teamManager.getPlayerTeam(player); + player.sendMessage(WitchRush.prefix()+"Vous avez rejoint la team "+infos1.getChatColor()+infos1.getTeamName()); + TeamsTagsManager.setNameTag(player, player.getName(), infos1.getChatColor()+infos1.getTeamName()+" "); player.closeInventory(); - return; - } - if (teamManager.teamIsFull(teamInfos)) { - player.sendMessage(WitchRush.prefix()+"L'équipe est pleine !"); - player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1.0f, 1.0f); + break; + case BARRIER: player.closeInventory(); - return; - } - teamManager.removePlayerAllTeam(player); - player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_YES, 1.0f, 1.0f); - teamManager.addPlayerTeam(player, teamInfos); - TeamInfos infos1 = teamManager.getPlayerTeam(player); - player.sendMessage(WitchRush.prefix()+"Vous avez rejoint la team "+infos1.getChatColor()+infos1.getTeamName()); - TeamsTagsManager.setNameTag(player, player.getName(), infos1.getChatColor()+infos1.getTeamName()+" "); - player.closeInventory(); - break; - case BARRIER: - player.closeInventory(); - break; - case DOUBLE_PLANT: - player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_YES, 1.0f, 1.0f); - teamManager.removePlayerAllTeam(player); - teamManager.addPlayerInRandomTeam(player); - TeamInfos infos2 = teamManager.getPlayerTeam(player); - player.sendMessage(WitchRush.prefix()+"Vous avez rejoint la team "+infos2.getChatColor()+infos2.getTeamName()+" "); - TeamsTagsManager.setNameTag(player, player.getName(), infos2.getChatColor()); - player.closeInventory(); - break; + break; + case DOUBLE_PLANT: + player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_YES, 1.0f, 1.0f); + teamManager.removePlayerAllTeam(player); + teamManager.addPlayerInRandomTeam(player); + TeamInfos infos2 = teamManager.getPlayerTeam(player); + player.sendMessage(WitchRush.prefix()+"Vous avez rejoint la team "+infos2.getChatColor()+infos2.getTeamName()+" "); + TeamsTagsManager.setNameTag(player, player.getName(), infos2.getChatColor()); + player.closeInventory(); + break; + } } } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/PlayerJoin.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/PlayerJoin.java index 51a6bc4..d6ae6e1 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/PlayerJoin.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/PlayerJoin.java @@ -4,6 +4,7 @@ import net.berrygames.witchrush.WitchPlayer; import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.game.GameState; import net.berrygames.witchrush.game.task.StartTask; +import net.berrygames.witchrush.tools.Locations; import net.berrygames.witchrush.tools.TeamsTagsManager; import org.bukkit.GameMode; import org.bukkit.entity.Player; @@ -32,8 +33,8 @@ public class PlayerJoin implements Listener { player.setExp(0f); player.setHealth(20); player.setFoodLevel(20); + player.teleport(Locations.PLAYER_SPAWN_WAITING_ROOM.getLocation()); witchPlayer.sendWaitingStuff(); - witchPlayer.teleportPlayer(); witchPlayer.sendGameScoreboard(); TeamsTagsManager.setNameTag(player, player.getName(), "§7"); @@ -46,7 +47,7 @@ public class PlayerJoin implements Listener { player.sendMessage(" "); player.sendMessage("§8(Spectateur) §7Vous êtes spectateur pour cette partie."); - player.sendMessage("§7Seul les autres spectateurs voient vos messages !"); + player.sendMessage("§7Seuls les autres spectateurs voient vos messages !"); player.sendMessage(" "); TeamsTagsManager.setNameTag(player, player.getName(), "§8(Spec)§7 "); @@ -56,7 +57,7 @@ public class PlayerJoin implements Listener { player.setLevel(0); player.setHealth(20); player.setFoodLevel(20); - witchPlayer.teleportPlayer(); + player.teleport(Locations.SPAWN_SPECTATORS.getLocation()); witchPlayer.sendGameScoreboard(); } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/PlayerQuit.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/PlayerQuit.java index fbecf15..071a3bd 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/PlayerQuit.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/PlayerQuit.java @@ -37,7 +37,6 @@ public class PlayerQuit implements Listener { if(!new StartTask().isCancelled()){ new StartTask().cancel(); } - } } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/WitchEvent.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/WitchEvent.java index 146b181..5513453 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/WitchEvent.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/WitchEvent.java @@ -7,6 +7,7 @@ import net.berrygames.witchrush.team.TeamInfos; import net.berrygames.witchrush.team.TeamManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.bukkit.entity.Villager; import org.bukkit.entity.Witch; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -17,29 +18,39 @@ public class WitchEvent implements Listener { @EventHandler public void onEntityDamageByEntity(final EntityDamageByEntityEvent e) { final TeamManager teamManager = WitchRush.get().getTeamManager(); - if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ - if (!(e.getDamager() instanceof Player) || !(e.getEntity() instanceof Witch))return; - final Player player = (Player)e.getDamager(); - final Witch witch = (Witch) e.getEntity(); - final TeamInfos playerTeamInfos = teamManager.getPlayerTeam(player); - if (teamManager.getTeamBoss(playerTeamInfos).getWitch().equals(witch)) { - player.sendMessage("§cVous ne pouvez pas tuer votre boss !"); - e.setCancelled(true); - return; - } - for (final TeamInfos teamInfos : TeamInfos.values()) { - if (teamManager.getTeamBoss(teamInfos).getWitch().equals(witch)) { - teamManager.getTeamBoss(teamInfos).getWitch().teleport(teamManager.getBossLocation(teamInfos).getLocation()); - Bukkit.getOnlinePlayers().forEach(playerOnline -> { - WitchPlayer witchPlayer = WitchPlayer.get(playerOnline); - if (teamManager.isPlayerInTeam(playerOnline, teamInfos) && !witchPlayer.isSpectator()) { - playerOnline.sendTitle("§cWitch attaquée", null); - } - return; - }); + if(!WitchRush.get().getState().equals(GameState.WAITING) && !WitchRush.get().getState().equals(GameState.STARTING)){ + if ((e.getDamager() instanceof Player) && (e.getEntity() instanceof Witch)){ + final Player player = (Player)e.getDamager(); + final Witch witch = (Witch) e.getEntity(); + final TeamInfos playerTeamInfos = teamManager.getPlayerTeam(player); + if (teamManager.getTeamBoss(playerTeamInfos).getWitch().equals(witch)) { + player.sendMessage("§cVous ne pouvez pas tuer votre boss !"); + e.setCancelled(true); + return; } + for (final TeamInfos teamInfos : TeamInfos.values()) { + if (teamManager.getTeamBoss(teamInfos).getWitch().equals(witch)) { + teamManager.getTeamBoss(teamInfos).getWitch().teleport(teamManager.getBossLocation(teamInfos)); + Bukkit.getOnlinePlayers().forEach(playerOnline -> { + WitchPlayer witchPlayer = WitchPlayer.get(playerOnline); + if (teamManager.isPlayerInTeam(playerOnline, teamInfos) && !witchPlayer.isSpectator()) { + playerOnline.sendTitle("§cWitch attaquée", null); + } + if(WitchRush.get().getTeamManager().getBossEntityMap().get(teamInfos).getLife() > 0){ + int life = (int) (WitchRush.get().getTeamManager().getBossEntityMap().get(teamInfos).getLife() - e.getDamage()); + WitchRush.get().getTeamManager().getBossEntityMap().get(teamInfos).setLife(life); + } + if(WitchRush.get().getTeamManager().getBossEntityMap().get(teamInfos).getLife() > 0){ + witch.remove(); + } + return; + }); + } + + } + } else if (e.getDamager() instanceof Player && e.getEntity() instanceof Villager){ + e.setCancelled(true); } } } - } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamManager.java b/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamManager.java index a96c065..4fc37c4 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamManager.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamManager.java @@ -1,13 +1,12 @@ package net.berrygames.witchrush.team; +import net.berrygames.witchrush.WitchPlayer; import net.berrygames.witchrush.tools.Locations; import net.berrygames.witchrush.tools.WitchBoss; +import org.bukkit.Location; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class TeamManager { @@ -21,7 +20,7 @@ public class TeamManager { public void addPlayerTeam(final Player player, final TeamInfos teamInfos) { if (this.playerTeamList.get(teamInfos) == null) { - this.playerTeamList.put(teamInfos, new ArrayList()); + this.playerTeamList.put(teamInfos, new ArrayList<>()); } if (!this.teamIsFull(teamInfos)) { this.removePlayerAllTeam(player); @@ -44,19 +43,28 @@ public class TeamManager { } public void addPlayerInRandomTeam(final Player player) { - + Arrays.stream(TeamInfos.values()) + .filter(teams -> teamIsFull(teams)) + .filter(teams -> (WitchPlayer.getwitchMap().size() / 4) > getTeamPlayerCount(teams)/) } - public Locations getBossLocation(final TeamInfos teamInfos) { + public boolean isInLife(final TeamInfos teamInfos) { + if(getBossEntityMap().containsKey(teamInfos)){ + return true; + } + return false; + } + + public Location getBossLocation(final TeamInfos teamInfos) { switch (teamInfos){ case ROUGE: - return Locations.WITCH_ROUGE; + return Locations.WITCH_ROUGE.getLocation(); case BLEU: - return Locations.WITCH_BLEU; + return Locations.WITCH_BLEU.getLocation(); case VERT: - return Locations.WITCH_VERT; + return Locations.WITCH_VERT.getLocation(); case JAUNE: - return Locations.WITCH_JAUNE; + return Locations.WITCH_JAUNE.getLocation(); } return null; diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamsMenu.java b/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamsMenu.java index d576235..a437245 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamsMenu.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamsMenu.java @@ -15,7 +15,7 @@ public class TeamsMenu { public TeamsMenu(Player player) { this.player = player; - inventory = Bukkit.createInventory(null, 4 * 9, WitchRush.prefix()+" Teams"); + inventory = Bukkit.createInventory(null, 4 * 9, WitchRush.prefix()+"Teams"); for(int i = 0; i < 9; i++){ inventory.setItem(i, new ItemFactory(Material.STAINED_GLASS_PANE).withName("").withColor(DyeColor.PURPLE).done()); 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 18a7624..a77c2cc 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/tools/DeadPlayer.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/tools/DeadPlayer.java @@ -13,31 +13,25 @@ public class DeadPlayer { private WitchPlayer witchPlayer; private int timer = 5; private BukkitTask task; - //team public DeadPlayer(Player player) { this.player = player; this.witchPlayer = WitchPlayer.get(player); this.witchPlayer.setSpectator(true); - - becomeSpec(); - } - - private void becomeSpec(){ + player.setHealth(20); player.setGameMode(GameMode.SPECTATOR); - witchPlayer.teleportPlayer(); - sendTitle(); - } - - private void sendTitle(){ + player.teleport(Locations.SPAWN_SPECTATORS.getLocation()); player.sendTitle("§cVous êtes mort", null); task = Bukkit.getScheduler().runTaskTimer(WitchRush.get(), new Runnable() { @Override public void run() { if(timer == 0){ player.sendTitle("§cVous êtes mort", "§c§oRespawn..."); - respawn(); + witchPlayer.setSpectator(false); + player.setGameMode(GameMode.SURVIVAL); + witchPlayer.giveStuff(); + witchPlayer.teleportToBase(); Bukkit.getScheduler().cancelTask(task.getTaskId()); } player.sendTitle("§cVous êtes mort", "§c§oRespawn dans "+timer+"..."); @@ -45,11 +39,4 @@ public class DeadPlayer { } }, 20, 20); } - - private void respawn(){ - witchPlayer.setSpectator(false); - player.setGameMode(GameMode.SURVIVAL); - //TP BASE EQUIPE - witchPlayer.giveStuff(); - } } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/tools/WitchBoss.java b/WitchRush/src/main/java/net/berrygames/witchrush/tools/WitchBoss.java index e008ef3..4b72ebc 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/tools/WitchBoss.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/tools/WitchBoss.java @@ -1,6 +1,8 @@ package net.berrygames.witchrush.tools; +import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.team.TeamInfos; +import net.berrygames.witchrush.team.TeamManager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.EntityType; @@ -10,12 +12,15 @@ public class WitchBoss { private TeamInfos teamInfos; private Location location; + private TeamManager manager; private Witch witch; - private double life; + private int life; public WitchBoss(final TeamInfos teamInfos, final Location location) { this.teamInfos = teamInfos; this.location = location; + this.manager = WitchRush.get().getTeamManager(); + manager.getBossEntityMap().put(teamInfos, this); this.witch = (Witch) Bukkit.getWorld("world").spawnEntity(location, EntityType.WITCH); this.life = 500; this.witch.setMaxHealth(this.life); @@ -39,9 +44,13 @@ public class WitchBoss { return this.witch; } - public double getLife() { + public int getLife() { return this.life; } + public void setLife(int life){ + this.life = life; + } + }