Added Team system & Guis

This commit is contained in:
BunSLaPatate
2018-09-19 20:26:47 +02:00
parent b6599c62a4
commit c8ceb42a59
19 changed files with 264 additions and 161 deletions

View File

@@ -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()){

View File

@@ -1,4 +0,0 @@
package net.berrygames.witchrush.game;
public class DeathMatchTask {
}

View File

@@ -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();
});
}

View File

@@ -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++;
}
}

View File

@@ -15,17 +15,17 @@ import java.util.Map;
public class HealthRunnable extends BukkitRunnable {
public Map<TeamInfos, ArmorStand> 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());
}
}
}

View File

@@ -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--;
}
}

View File

@@ -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();
}
}

View File

@@ -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() {

View File

@@ -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("!"," "));
}
});

View File

@@ -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 !");
}
}
}
}
}
}

View File

@@ -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();

View File

@@ -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;
}
}
}

View File

@@ -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();
}

View File

@@ -37,7 +37,6 @@ public class PlayerQuit implements Listener {
if(!new StartTask().isCancelled()){
new StartTask().cancel();
}
}
}

View File

@@ -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);
}
}
}
}

View File

@@ -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<Player>());
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;

View File

@@ -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());

View File

@@ -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();
}
}

View File

@@ -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;
}
}