mirror of
https://github.com/ArthurDanjou/WitchRush.git
synced 2026-01-23 08:20:35 +01:00
Added Team system & Guis
This commit is contained in:
@@ -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()){
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
package net.berrygames.witchrush.game;
|
||||
|
||||
public class DeathMatchTask {
|
||||
}
|
||||
@@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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++;
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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--;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
@@ -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("!"," "));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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 !");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@ public class PlayerQuit implements Listener {
|
||||
if(!new StartTask().isCancelled()){
|
||||
new StartTask().cancel();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user