diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/WitchPlayer.java b/WitchRush/src/main/java/net/berrygames/witchrush/WitchPlayer.java index f006b42..3ef280e 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/WitchPlayer.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/WitchPlayer.java @@ -23,6 +23,7 @@ public class WitchPlayer { private Player player; private boolean spectator; private int kills, death; + private TeamManager manager; public WitchPlayer(Player player) { this.player = player; @@ -31,31 +32,34 @@ public class WitchPlayer { !WitchRush.get().getState().equals(GameState.WAITING); this.kills = 0; this.death = 0; + this.manager = WitchRush.get().getTeamManager(); } public void teleportToBase(){ TeamManager teamManager = WitchRush.get().getTeamManager(); - for(TeamInfos teamInfos : TeamInfos.values()){ - switch (teamManager.getPlayerTeam(player)){ - case ROUGE: - player.teleport(Locations.PLAYER_SPAWN_ROUGE.getLocation()); - break; - case VERT: - player.teleport(Locations.PLAYER_SPAWN_VERT.getLocation()); - break; - case JAUNE: - player.teleport(Locations.PLAYER_SPAWN_JAUNE.getLocation()); - break; - case BLEU: - player.teleport(Locations.PLAYER_SPAWN_BLEU.getLocation()); - break; - } + switch (teamManager.getPlayerTeam(player)){ + case ROUGE: + player.teleport(Locations.PLAYER_SPAWN_ROUGE.getLocation()); + break; + case VERT: + player.teleport(Locations.PLAYER_SPAWN_VERT.getLocation()); + break; + case JAUNE: + player.teleport(Locations.PLAYER_SPAWN_JAUNE.getLocation()); + break; + case BLEU: + player.teleport(Locations.PLAYER_SPAWN_BLEU.getLocation()); + break; } } public void giveStuff(){ player.getInventory().clear(); ItemStack sword = new ItemStack(Material.DIAMOND_SWORD); + player.getInventory().setHelmet(getHelmetColor(Material.LEATHER_HELMET, manager.getPlayerTeam(player).getColor())); + player.getInventory().setChestplate(getHelmetColor(Material.LEATHER_CHESTPLATE, manager.getPlayerTeam(player).getColor())); + player.getInventory().setLeggings(getHelmetColor(Material.LEATHER_LEGGINGS, manager.getPlayerTeam(player).getColor())); + player.getInventory().setBoots(getHelmetColor(Material.LEATHER_BOOTS, manager.getPlayerTeam(player).getColor())); player.getInventory().setItem(0, sword); } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/WitchRush.java b/WitchRush/src/main/java/net/berrygames/witchrush/WitchRush.java index 107cb37..3b8d89c 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/WitchRush.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/WitchRush.java @@ -15,6 +15,7 @@ public class WitchRush extends JavaPlugin { private GameState gameState; private TeamManager teamManager; + private boolean forcedStart; @Override public void onEnable() { @@ -22,6 +23,7 @@ public class WitchRush extends JavaPlugin { this.gameState = GameState.WAITING; this.teamManager = new TeamManager(); + this.forcedStart = false; new CommandsManager().register(this); new ListenersManager().register(this); @@ -57,6 +59,12 @@ public class WitchRush extends JavaPlugin { public TeamManager getTeamManager() { return teamManager; } + public boolean isForcedStart() { + return forcedStart; + } + public void setForcedStart(boolean forcedStart) { + this.forcedStart = forcedStart; + } public static WitchRush get() { return instance; diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/commands/admins/GameCMD.java b/WitchRush/src/main/java/net/berrygames/witchrush/commands/admins/GameCMD.java index 646f729..15a9472 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/commands/admins/GameCMD.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/commands/admins/GameCMD.java @@ -1,6 +1,5 @@ package net.berrygames.witchrush.commands.admins; -import net.berrygames.witchrush.WitchPlayer; import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.game.GameState; import net.berrygames.witchrush.game.task.StartTask; @@ -17,11 +16,11 @@ public class GameCMD implements CommandExecutor { if(!(sender instanceof Player)) return false; Player player = (Player) sender; - WitchPlayer witchPlayer = WitchPlayer.get(player); if(args.length == 1 && args[0].equals("start")){ if(!player.isOp())return false; + WitchRush.get().setForcedStart(true); new StartTask().runTaskTimer(WitchRush.get(), 0, 20); WitchRush.get().setState(GameState.STARTING); Bukkit.broadcastMessage(WitchRush.prefix()+"§c"+player.getName()+" a forcé le démarrage de la partie !"); diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/commands/admins/TestCMD.java b/WitchRush/src/main/java/net/berrygames/witchrush/commands/admins/TestCMD.java index 633a01b..6468abb 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/commands/admins/TestCMD.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/commands/admins/TestCMD.java @@ -1,5 +1,6 @@ package net.berrygames.witchrush.commands.admins; +import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.team.TeamInfos; import net.berrygames.witchrush.tools.PNJSpawner; import net.berrygames.witchrush.tools.Locations; @@ -29,6 +30,11 @@ public class TestCMD implements CommandExecutor { new PNJSpawner("§b§LUPGRADE", TeamInfos.JAUNE, Locations.UPGRADE_JAUNE.getLocation()); } + if(args[0].equals("state")){ + //Spawn UPGRADE + sender.sendMessage(WitchRush.get().getState().toString()); + } + if(args[0].equals("w")){ new WitchBoss(TeamInfos.ROUGE, Locations.WITCH_ROUGE.getLocation()); new WitchBoss(TeamInfos.BLEU, Locations.WITCH_BLEU.getLocation()); 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 dafe4cd..d58fe36 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/GameManager.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/GameManager.java @@ -3,7 +3,6 @@ package net.berrygames.witchrush.game; import net.berrygames.witchrush.WitchPlayer; import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.game.task.NoPVPTask; -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; @@ -24,25 +23,14 @@ public class GameManager { if (!(this.isStart = false)) { this.isStart = true; WitchRush.get().setState(GameState.NOWITCH); - 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 GameStartEvent(startMessage)); - this.loadPlayer(); - for(WitchPlayer witchPlayer : WitchPlayer.getwitchMap().values()){ - witchPlayer.giveStuff(); - } for(Player pls: Bukkit.getOnlinePlayers()){ pls.setGameMode(GameMode.SURVIVAL); - pls.playSound(pls.getLocation(), Sound.ENTITY_WITHER_SPAWN, 1, 1); - - //Join si il a pas de team - if(WitchRush.get().getTeamManager().getPlayerTeam(pls) == null){ - WitchRush.get().getTeamManager().addPlayerInRandomTeam(pls); - } } + Bukkit.broadcastMessage(WitchRush.prefix()+"§dLa partie commence !"); + Bukkit.broadcastMessage(WitchRush.prefix()+"§dVous avez §63minutes §dpour vous préparez."); + this.loadPlayer(); //Spawn SHOP new PNJSpawner("§6§lSHOP", TeamInfos.BLEU, Locations.SHOP_BLEU.getLocation()); 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 2afa4ae..14cfcc7 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/WinManager.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/WinManager.java @@ -1,11 +1,9 @@ package net.berrygames.witchrush.game; -import net.berrygames.witchrush.WitchPlayer; import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.team.TeamInfos; import net.berrygames.witchrush.team.TeamManager; import org.bukkit.Bukkit; -import org.bukkit.event.Event; public class WinManager { @@ -25,15 +23,6 @@ public class WinManager { if (!teamManager.getPlayerTeamList(teamInfos).isEmpty()) { WitchRush.get().setState(GameState.FINISHING); Bukkit.broadcastMessage(WitchRush.prefix()+"Victoire de l'équipe "+teamInfos.getChatColor()+teamInfos.getTeamName()); - final TeamInfos teamInfos2; - final Event event; - final TeamManager teamManager2; - final Object o; - Bukkit.getOnlinePlayers().forEach(playerOnline -> { - final WitchPlayer witchPlayer = WitchPlayer.get(playerOnline); - Bukkit.getServer().getPluginManager(); - return; - }); } } } 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 index a730a2c..2d43be7 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/DeathMatchTask.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/DeathMatchTask.java @@ -1,6 +1,7 @@ package net.berrygames.witchrush.game.task; import net.berrygames.witchrush.WitchRush; +import net.berrygames.witchrush.game.WinManager; import net.berrygames.witchrush.team.TeamInfos; import org.bukkit.scheduler.BukkitRunnable; @@ -15,12 +16,14 @@ public class DeathMatchTask extends BukkitRunnable { 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); + WitchRush.get().getTeamManager().getBossEntityMap().get(infos).getWitch().setHealth(life); } return; } } + new WinManager(); + 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 4e74684..77d97d7 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 @@ -34,7 +34,12 @@ public class HealthRunnable extends BukkitRunnable { this.arMap.put(teamInfos, armorStand); return; } - arMap.get(teamInfos).setCustomName("§5§lVie: §c"+teamManager.getTeamBoss(teamInfos).getLife()); + if(teamManager.isInLife(teamInfos)){ + arMap.get(teamInfos).setCustomName( + teamInfos.getChatColor()+teamInfos.getTeamName() + + "§7 - "+teamInfos.getChatColor()+teamManager.getTeamBoss(teamInfos).getLife() + ); + } } } } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/NoPVPTask.java b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/NoPVPTask.java index 5cc8d59..373439b 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/NoPVPTask.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/NoPVPTask.java @@ -10,7 +10,7 @@ import org.bukkit.scheduler.BukkitRunnable; public class NoPVPTask extends BukkitRunnable { - private int timer = 30; + private int timer = 3 * 20; @Override public void run() { diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/StartTask.java b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/StartTask.java index 65171eb..216568c 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/game/task/StartTask.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/game/task/StartTask.java @@ -2,6 +2,7 @@ package net.berrygames.witchrush.game.task; import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.game.GameManager; +import net.berrygames.witchrush.game.GameState; import org.bukkit.Bukkit; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -9,12 +10,20 @@ import org.bukkit.scheduler.BukkitRunnable; public class StartTask extends BukkitRunnable { - private int timer = 30; + private int timer = WitchRush.get().isForcedStart() ? 30 : 120; @Override public void run() { + if (Bukkit.getOnlinePlayers().size() < 4 && !WitchRush.get().isForcedStart()) { + Bukkit.broadcastMessage(WitchRush.prefix()+"Il n'y a pas assez de joueurs pour lancer la partie !"); + WitchRush.get().setState(GameState.WAITING); + this.cancel(); + return; + } + if(timer == 0){ + WitchRush.get().getTeamManager().checkNoTeamPlayers(); new GameManager(); cancel(); } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/ListenersManager.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/ListenersManager.java index 98143b6..ada072a 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/ListenersManager.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/ListenersManager.java @@ -2,6 +2,7 @@ package net.berrygames.witchrush.listeners; import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.listeners.players.*; +import net.berrygames.witchrush.listeners.servers.PingServer; import net.berrygames.witchrush.listeners.world.WorldEvents; import org.bukkit.Bukkit; import org.bukkit.plugin.PluginManager; @@ -19,10 +20,11 @@ public class ListenersManager { pm.registerEvents(new DeathEvent(), main); pm.registerEvents(new FoodLevel(), main); pm.registerEvents(new InventoryClick(), main); - pm.registerEvents(new WitchEvent(), main); + pm.registerEvents(new DamageEvent(), main); // --- WORLD ---// pm.registerEvents(new WorldEvents(), main); + pm.registerEvents(new PingServer(), main); System.out.println("Events register"); } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GameStartEvent.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GameStartEvent.java deleted file mode 100644 index af5eaa4..0000000 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/custom/GameStartEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.berrygames.witchrush.listeners.custom; - -import org.bukkit.event.Event; -import org.bukkit.event.HandlerList; - -public class GameStartEvent extends Event { - - public static final HandlerList handlers; - private String message; - - public GameStartEvent(final String message) { - this.message = message; - } - - public HandlerList getHandlers() { - return GameStartEvent.handlers; - } - - public String getStartMessage() { - return this.message; - } - - static { - handlers = new HandlerList(); - } -} 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 09b5893..ad4a018 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 @@ -22,13 +22,12 @@ public class ChatEvent implements Listener { } else if(witchPlayer.isSpectator()){ e.setCancelled(true); for(WitchPlayer pls : WitchPlayer.getwitchMap().values()){ - if(pls.isSpectator()){ - for(Player players : Bukkit.getOnlinePlayers()){ + for(Player players : Bukkit.getOnlinePlayers()){ + if(pls.isSpectator()){ 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("!")){ @@ -40,7 +39,7 @@ public class ChatEvent implements Listener { if(WitchRush.get().getTeamManager().getPlayerTeam(playerOnline).equals(teamInfos)){ playerOnline.sendMessage("§7["+teamInfos.getChatColor()+teamInfos.getTeamName()+"§7] " +WitchRush.get().getTeamManager().getPlayerTeam(playerOnline).getChatColor() - +player.getDisplayName()+" §7» §f"+message.replace("!"," ")); + +player.getDisplayName()+" §7» §f"+message.replace("!","")); } }); } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/WitchEvent.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/DamageEvent.java similarity index 73% rename from WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/WitchEvent.java rename to WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/DamageEvent.java index 5513453..c0fea4b 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/WitchEvent.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/players/DamageEvent.java @@ -5,6 +5,7 @@ import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.game.GameState; import net.berrygames.witchrush.team.TeamInfos; import net.berrygames.witchrush.team.TeamManager; +import net.berrygames.witchrush.tools.WitchBoss; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.entity.Villager; @@ -13,17 +14,18 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; -public class WitchEvent implements Listener { +public class DamageEvent 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)){ 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)) { + if(teamManager.getTeamBoss(playerTeamInfos).getWitch().equals(witch)) { player.sendMessage("§cVous ne pouvez pas tuer votre boss !"); e.setCancelled(true); return; @@ -34,16 +36,11 @@ public class WitchEvent implements Listener { Bukkit.getOnlinePlayers().forEach(playerOnline -> { WitchPlayer witchPlayer = WitchPlayer.get(playerOnline); if (teamManager.isPlayerInTeam(playerOnline, teamInfos) && !witchPlayer.isSpectator()) { - playerOnline.sendTitle("§cWitch attaquée", null); + playerOnline.sendTitle("§cWitch attaquée !", " "); + //WitchRush.get().getTeamManager().getTeamBoss(teamInfos).getWitch().setHealth( + // WitchRush.get().getTeamManager().getTeamBoss(teamInfos).getWitch().getHealth() - e.getDamage() + //); } - 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; }); } 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 3c0ffc0..eaa977e 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 @@ -34,6 +34,9 @@ public class DeathEvent implements Listener { WitchPlayer witchPlayer = WitchPlayer.get(player); WitchPlayer witchKiller = WitchPlayer.get(killer); + TeamInfos teamvictim; + TeamInfos teamKiller; + if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ e.setDeathMessage(null); player.kickPlayer("ENFAIT TOI T'ES FORT PCQ NORMALEMENT YA PAS CA"); @@ -41,15 +44,7 @@ public class DeathEvent implements Listener { 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); - witchKiller.setKills(witchKiller.getKills()+1); - witchPlayer.setDeath(witchPlayer.getDeath()+1); - } else { + if(!teamManager.isInLife(teamManager.getPlayerTeam(player))){ TeamInfos team = WitchRush.get().getTeamManager().getPlayerTeam(player); e.setDeathMessage(WitchRush.prefix()+team.getChatColor()+player.getName()+"§c est éliminé"); witchPlayer.setDeath(witchPlayer.getDeath()+1); @@ -64,12 +59,18 @@ public class DeathEvent implements Listener { player.sendMessage(" "); TeamsTagsManager.setNameTag(player, player.getName(), "§8(Spec)§7 "); - } + 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: - TeamInfos teamvictim = WitchRush.get().getTeamManager().getPlayerTeam(player); - TeamInfos teamKiller = WitchRush.get().getTeamManager().getPlayerTeam(killer); + 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); @@ -77,8 +78,6 @@ public class DeathEvent implements Listener { witchPlayer.setDeath(witchPlayer.getDeath()+1); break; } - - } else { TeamInfos team = WitchRush.get().getTeamManager().getPlayerTeam(player); e.setDeathMessage(WitchRush.prefix()+team.getChatColor()+player.getName()+"§d est mort"); @@ -92,30 +91,28 @@ public class DeathEvent implements Listener { @EventHandler public void onEntityDeath(final EntityDeathEvent e) { if (e.getEntity() instanceof Witch) { - 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); + 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; } - 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 !"); - } + } + 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 !"); } } } 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 43bdbf8..42143dd 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 @@ -54,10 +54,8 @@ public class InventoryClick implements Listener { 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.sendMessage(WitchRush.prefix()+"Vous serez dans une équipe au debut de la partie !"); + TeamsTagsManager.setNameTag(player, player.getName(), "§7"); player.closeInventory(); break; } 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 071a3bd..9205c1a 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 @@ -25,7 +25,7 @@ public class PlayerQuit implements Listener { if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ e.setQuitMessage( WitchRush.prefix()+"§e"+player.getName()+ - " §da rejoint la partie §7(§d"+ + " §da quitté la partie §7(§d"+ WitchPlayer.getwitchMap().size()+ "§8/§d16§7)"); } else { @@ -33,10 +33,9 @@ public class PlayerQuit implements Listener { } if(WitchPlayer.getwitchMap().size() < 4 && WitchRush.get().getState().equals(GameState.STARTING)){ + if(WitchRush.get().isForcedStart())return; Bukkit.broadcastMessage(WitchRush.prefix()+"§CLe lancement de la partie est annulé. Il n'y a pas assez de joueurs !"); - if(!new StartTask().isCancelled()){ - new StartTask().cancel(); - } + new StartTask().cancel(); } } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/servers/PingServer.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/servers/PingServer.java new file mode 100644 index 0000000..584d4ff --- /dev/null +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/servers/PingServer.java @@ -0,0 +1,15 @@ +package net.berrygames.witchrush.listeners.servers; + +import net.berrygames.witchrush.WitchRush; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.server.ServerListPingEvent; + +public class PingServer implements Listener { + + @EventHandler + public void ping(ServerListPingEvent e){ + e.setMotd(WitchRush.prefix()+WitchRush.get().getState()); + } + +} diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/world/WorldEvents.java b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/world/WorldEvents.java index 705b52a..d591886 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/listeners/world/WorldEvents.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/listeners/world/WorldEvents.java @@ -13,25 +13,67 @@ public class WorldEvents implements Listener { @EventHandler public void place(BlockPlaceEvent e){ - if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ - e.setCancelled(true); + switch (WitchRush.get().getState()){ + case WAITING: + e.setCancelled(true); + break; + case STARTING: + e.setCancelled(true); + break; + case NOWITCH: + e.setCancelled(false); + break; + case PVP: + e.setCancelled(false); + break; + case FINISHING: + e.setCancelled(true); + break; } + } @EventHandler - public void breake(BlockBreakEvent e){ - if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ - e.setCancelled(true); + public void breakB(BlockBreakEvent e){ + switch (WitchRush.get().getState()){ + case WAITING: + e.setCancelled(true); + break; + case STARTING: + e.setCancelled(true); + break; + case NOWITCH: + e.setCancelled(false); + break; + case PVP: + e.setCancelled(false); + break; + case FINISHING: + e.setCancelled(true); + break; } } @EventHandler public void damage(BlockDamageEvent e){ - if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ - e.setCancelled(true); + switch (WitchRush.get().getState()){ + case WAITING: + e.setCancelled(true); + break; + case STARTING: + e.setCancelled(true); + break; + case NOWITCH: + e.setCancelled(false); + break; + case PVP: + e.setCancelled(false); + break; + case FINISHING: + e.setCancelled(true); + break; } } - @EventHandler - public void onWeatherChange(final WeatherChangeEvent e) { + public void onWeatherChange(final WeatherChangeEvent e){ e.setCancelled(true); } } diff --git a/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamInfos.java b/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamInfos.java index aaa294a..a74628d 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamInfos.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamInfos.java @@ -1,23 +1,27 @@ package net.berrygames.witchrush.team; +import org.bukkit.Color; + public enum TeamInfos { - VERT("Vert", "Vert", "§a", (short)13), - BLEU("Bleu", "Bleu", "§b", (short)11), - JAUNE("Jaune", "Jaune", "§e", (short)4), - ROUGE("Rouge", "Rouge", "§c", (short)14), + VERT("Vert", "Vert", "§a", (short)13, Color.GREEN), + BLEU("Bleu", "Bleu", "§b", (short)11, Color.BLUE), + JAUNE("Jaune", "Jaune", "§e", (short)4, Color.YELLOW), + ROUGE("Rouge", "Rouge", "§c", (short)14, Color.RED), ; private String IDName; private String teamName; private String chatColor; private short dataClay; + private Color color; - TeamInfos(String IDName, String teamName, String chatColor, short dataClay) { + TeamInfos(String IDName, String teamName, String chatColor, short dataClay, Color color) { this.IDName = IDName; this.teamName = teamName; this.chatColor = chatColor; this.dataClay = dataClay; + this.color = color; } public String getIDName() { @@ -36,6 +40,10 @@ public enum TeamInfos { return dataClay; } + public Color getColor() { + return color; + } + public static TeamInfos getTeamInfosByIDName(final String ID) { for (final TeamInfos teamInfos : values()) { if (teamInfos.getIDName().equalsIgnoreCase(ID)) { 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 4fc37c4..08bab5b 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamManager.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/team/TeamManager.java @@ -1,8 +1,8 @@ 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.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -43,9 +43,19 @@ 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)/) + TreeMap teams = new TreeMap<>(); + for(TeamInfos infos : TeamInfos.values()){ + for(Player pls: Bukkit.getOnlinePlayers()){ + if(!isPlayerInTeam(pls , infos)) teams.put(infos, pls); + } + } + if(!playerHaveTeam(player)) addPlayerTeam(player, teams.firstKey()); + } + + public void checkNoTeamPlayers() { + for(Player onlinePlayers : Bukkit.getOnlinePlayers()) { + if(!playerHaveTeam(onlinePlayers)) addPlayerInRandomTeam(onlinePlayers); + } } public boolean isInLife(final TeamInfos teamInfos) { 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 4b72ebc..e7f7408 100644 --- a/WitchRush/src/main/java/net/berrygames/witchrush/tools/WitchBoss.java +++ b/WitchRush/src/main/java/net/berrygames/witchrush/tools/WitchBoss.java @@ -22,7 +22,7 @@ public class WitchBoss { this.manager = WitchRush.get().getTeamManager(); manager.getBossEntityMap().put(teamInfos, this); this.witch = (Witch) Bukkit.getWorld("world").spawnEntity(location, EntityType.WITCH); - this.life = 500; + this.life = 50; this.witch.setMaxHealth(this.life); this.witch.setHealth(this.life); this.witch.setCustomNameVisible(false); @@ -45,12 +45,7 @@ public class WitchBoss { } public int getLife() { - return this.life; + return (int) this.witch.getHealth(); } - public void setLife(int life){ - this.life = life; - } - - }