Added Team system & Guis

This commit is contained in:
BunSLaPatate
2018-09-16 18:27:54 +02:00
parent 9974d115d3
commit b6599c62a4
23 changed files with 559 additions and 130 deletions

View File

@@ -2,6 +2,7 @@ package net.berrygames.witchrush;
import net.berrygames.witchrush.game.GameState;
import net.berrygames.witchrush.team.TeamInfos;
import net.berrygames.witchrush.team.TeamManager;
import net.berrygames.witchrush.tools.ItemFactory;
import net.berrygames.witchrush.tools.Locations;
import org.bukkit.Color;
@@ -40,20 +41,24 @@ public class WitchPlayer {
}
}
public Locations teleportToBase(){
public void teleportToBase(){
TeamManager teamManager = WitchRush.get().getTeamManager();
for(TeamInfos teamInfos : TeamInfos.values()){
switch (teamInfos){
switch (teamManager.getPlayerTeam(player)){
case ROUGE:
return Locations.PLAYER_SPAWN_ROUGE;
case BLEU:
return Locations.PLAYER_SPAWN_BLEU;
player.teleport(Locations.PLAYER_SPAWN_ROUGE.getLocation());
break;
case VERT:
return Locations.PLAYER_SPAWN_VERT;
player.teleport(Locations.PLAYER_SPAWN_VERT.getLocation());
break;
case JAUNE:
return Locations.PLAYER_SPAWN_JAUNE;
player.teleport(Locations.PLAYER_SPAWN_JAUNE.getLocation());
break;
case BLEU:
player.teleport(Locations.PLAYER_SPAWN_BLEU.getLocation());
break;
}
}
return null;
}
public void giveStuff(){

View File

@@ -3,7 +3,7 @@ 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.StartTask;
import net.berrygames.witchrush.game.task.StartTask;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;

View File

@@ -2,29 +2,34 @@ 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.team.TeamInfos;
import net.berrygames.witchrush.team.TeamManager;
import net.berrygames.witchrush.tools.Locations;
import net.berrygames.witchrush.tools.PNJSpawner;
import net.berrygames.witchrush.tools.TeamsTagsManager;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class StartTask extends BukkitRunnable {
public class GameManager {
private int timer = 30;
public TeamManager teamManager;
public boolean isStart;
@Override
public void run() {
if(timer == 0){
new NoPVPTask().runTaskTimer(WitchRush.get(), 0, 20);
public GameManager() {
this.teamManager = WitchRush.get().getTeamManager();
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(WitchRush.prefix()+"§dVous avez §63minutes §dpour vous préparez.");
cancel();
Bukkit.broadcastMessage(startMessage);
Bukkit.getServer().getPluginManager().callEvent(new GAGameStartEvent(startMessage));
this.loadPlayer();
for(WitchPlayer witchPlayer : WitchPlayer.getwitchMap().values()){
witchPlayer.giveStuff();
@@ -32,14 +37,12 @@ public class StartTask extends BukkitRunnable {
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);
}
//Tp aux bases
TeamInfos teamInfos = WitchRush.get().getTeamManager().getPlayerTeam(pls);
WitchPlayer.get(pls).teleportToBase();
}
//Spawn SHOP
@@ -55,19 +58,27 @@ public class StartTask extends BukkitRunnable {
new PNJSpawner("§b§LUPGRADE", TeamInfos.JAUNE, Locations.UPGRADE_JAUNE.getLocation());
}
if(timer == 120 || timer == 60 || timer == 30 || timer == 15
|| timer == 10 || timer == 5 || timer == 4 || timer == 3 || timer == 2){
Bukkit.broadcastMessage(WitchRush.prefix()+"Lancement de la partie dans §5"+timer+" §dsecondes");
}
if(timer == 1){
Bukkit.broadcastMessage(WitchRush.prefix()+"Lancement de la partie dans §5"+timer+" §dseconde");
}
for(Player pls : Bukkit.getOnlinePlayers()){
pls.setLevel(timer);
}
timer--;
new NoPVPTask().runTaskTimer(WitchRush.get(), 0, 20);
}
private void loadPlayer() {
Bukkit.getOnlinePlayers().forEach(playerOnline -> {
WitchPlayer witchPlayer = WitchPlayer.get(playerOnline);
this.teamManager.addPlayerInRandomTeam(playerOnline);
TeamInfos teamInfos = this.teamManager.getPlayerTeam(playerOnline);
witchPlayer.teleportToBase();
playerOnline.getInventory().clear();
playerOnline.setMaxHealth(20.0);
playerOnline.setHealth(20.0);
playerOnline.setFoodLevel(20);
playerOnline.setFlying(false);
playerOnline.setAllowFlight(false);
playerOnline.setLevel(0);
playerOnline.setGameMode(GameMode.SURVIVAL);
witchPlayer.giveStuff();
TeamsTagsManager.setNameTag(playerOnline, teamInfos.getIDName(), teamInfos.getChatColor()+teamInfos.getTeamName());
witchPlayer.sendGameScoreboard();
});
}
}

View File

@@ -1,19 +0,0 @@
package net.berrygames.witchrush.game;
import org.bukkit.scheduler.BukkitRunnable;
public class PVPTask extends BukkitRunnable {
int timer = 20 * 60;
@Override
public void run() {
if(timer == 0){
new DeathMatchTask();
cancel();
}
timer--;
}
}

View File

@@ -0,0 +1,43 @@
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 {
public WinManager() {
final TeamManager teamManager = WitchRush.get().getTeamManager();
if (WitchRush.get().getState().equals(GameState.NOWITCH)
|| WitchRush.get().getState().equals(GameState.PVP)
|| WitchRush.get().getState().equals(GameState.DEATH_MATCH)) {
int teamLeft = 0;
for (final TeamInfos teamInfos : TeamInfos.values()) {
if (teamManager.getTeamPlayerCount(teamInfos) >= 1) {
++teamLeft;
}
}
if (teamLeft == 1) {
for (final TeamInfos teamInfos : TeamInfos.values()) {
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;
});
}
}
}
}
}
}

View File

@@ -0,0 +1,40 @@
package net.berrygames.witchrush.game.task;
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.ArmorStand;
import org.bukkit.entity.EntityType;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.HashMap;
import java.util.Map;
public class HealthRunnable extends BukkitRunnable {
public Map<TeamInfos, ArmorStand> arMap;
public HealthRunnable() {
this.arMap = new HashMap<>();
}
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);
armorStand.setAI(false);
armorStand.setCustomNameVisible(true);
armorStand.setGravity(false);
armorStand.setVisible(false);
armorStand.setCustomName("Loading..");
this.arMap.put(teamInfos, armorStand);
return;
}
this.arMap.get(teamInfos).setCustomName("§5§lVie: §c"+teamManager.getTeamBoss(teamInfos).getLife());
}
}
}

View File

@@ -1,6 +1,7 @@
package net.berrygames.witchrush.game;
package net.berrygames.witchrush.game.task;
import net.berrygames.witchrush.WitchRush;
import net.berrygames.witchrush.game.GameState;
import net.berrygames.witchrush.team.TeamInfos;
import net.berrygames.witchrush.tools.Locations;
import net.berrygames.witchrush.tools.WitchBoss;
@@ -23,6 +24,7 @@ public class NoPVPTask extends BukkitRunnable {
new WitchBoss(TeamInfos.BLEU, Locations.WITCH_BLEU.getLocation());
new WitchBoss(TeamInfos.VERT, Locations.WITCH_VERT.getLocation());
new WitchBoss(TeamInfos.JAUNE, Locations.WITCH_JAUNE.getLocation());
new HealthRunnable().runTaskTimer(WitchRush.get(), 0L, 20L);
cancel();
}
timer--;

View File

@@ -0,0 +1,24 @@
package net.berrygames.witchrush.game.task;
import net.berrygames.witchrush.WitchRush;
import net.berrygames.witchrush.game.DeathMatchTask;
import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitRunnable;
public class PVPTask extends BukkitRunnable {
int timer = 20 * 60;
@Override
public void run() {
if(timer == 0){
new DeathMatchTask();
Bukkit.broadcastMessage(WitchRush.prefix()+"Le DeathMatch commence.");
Bukkit.broadcastMessage(WitchRush.prefix()+"Les §5§lWitchs §dcommencent à perdre de la vie !");
cancel();
}
timer--;
}
}

View File

@@ -0,0 +1,42 @@
package net.berrygames.witchrush.game.task;
import net.berrygames.witchrush.WitchRush;
import net.berrygames.witchrush.game.GameManager;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class StartTask extends BukkitRunnable {
private int timer = 30;
@Override
public void run() {
if(timer == 0){
new GameManager();
cancel();
}
if(timer == 120 || timer == 60 || timer == 30 || timer == 15
|| timer == 10 || timer == 5 || timer == 4 || timer == 3 || timer == 2){
Bukkit.broadcastMessage(WitchRush.prefix()+"Lancement de la partie dans §5"+timer+" §dsecondes");
for(Player pls : Bukkit.getOnlinePlayers()){
pls.playSound(pls.getLocation(), Sound.BLOCK_NOTE_PLING, 1, 1);
}
}
if(timer == 1){
Bukkit.broadcastMessage(WitchRush.prefix()+"Lancement de la partie dans §5"+timer+" §dseconde");
for(Player pls : Bukkit.getOnlinePlayers()){
pls.playSound(pls.getLocation(), Sound.BLOCK_NOTE_PLING, 1, 1);
}
}
for(Player pls : Bukkit.getOnlinePlayers()){
pls.setLevel(timer);
}
timer--;
}
}

View File

@@ -18,6 +18,8 @@ public class ListenersManager {
pm.registerEvents(new ChatEvent(), main);
pm.registerEvents(new DeathEvent(), main);
pm.registerEvents(new FoodLevel(), main);
pm.registerEvents(new InventoryClick(), main);
pm.registerEvents(new WitchEvent(), main);
// --- WORLD ---//
pm.registerEvents(new WorldEvents(), main);

View File

@@ -0,0 +1,26 @@
package net.berrygames.witchrush.listeners.custom;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class GAGameStartEvent extends Event {
public static final HandlerList handlers;
private String message;
public GAGameStartEvent(final String message) {
this.message = message;
}
public HandlerList getHandlers() {
return GAGameStartEvent.handlers;
}
public String getStartMessage() {
return this.message;
}
static {
handlers = new HandlerList();
}
}

View File

@@ -37,7 +37,7 @@ public class ChatEvent implements Listener {
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"
+player.getDisplayName()+"§7» §f"+message.replace("!",""));
+player.getDisplayName()+" §7» §f"+message.replace("!"," "));
}
});
}

View File

@@ -3,13 +3,22 @@ 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.listeners.custom.BossDeathEvent;
import net.berrygames.witchrush.team.TeamInfos;
import net.berrygames.witchrush.team.TeamManager;
import net.berrygames.witchrush.tools.DeadPlayer;
import org.bukkit.Bukkit;
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;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.inventory.ItemStack;
public class DeathEvent implements Listener {
@@ -24,9 +33,12 @@ 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 team = WitchRush.get().getTeamManager().getPlayerTeam(player);
e.setDeathMessage(WitchRush.prefix()+team.getChatColor()+player.getName()+"§d a été tué par "+team.getChatColor()+ killer.getName());
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);
@@ -46,4 +58,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;
}
}
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 !");
}
}
}
}
}

View File

@@ -0,0 +1,14 @@
package net.berrygames.witchrush.listeners.players;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.FoodLevelChangeEvent;
public class FoodLevel implements Listener {
@EventHandler
public void onFoodLevelChange(final FoodLevelChangeEvent e) {
e.setFoodLevel(20);
}
}

View File

@@ -3,11 +3,8 @@ 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.team.TeamInfos;
import net.berrygames.witchrush.team.TeamManager;
import net.berrygames.witchrush.team.TeamsMenu;
import org.bukkit.Sound;
import org.bukkit.entity.EntityType;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -15,11 +12,9 @@ import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class InteractEvent implements Listener {
@@ -60,17 +55,15 @@ public class InteractEvent implements Listener {
}
if(e.getRightClicked().getName().equals("S")){
e.setCancelled(true);
player.closeInventory();
player.sendMessage("s");
}
if(e.getRightClicked().getName().equals("U")){
e.setCancelled(true);
player.closeInventory();
player.sendMessage("u");
}
if(e.getRightClicked().getType().equals(EntityType.WITCH)){
//detect player's witch
//damage other witch
}
}
@EventHandler
@@ -81,6 +74,8 @@ public class InteractEvent implements Listener {
ItemStack item = e.getItem();
e.setCancelled(true);
if(item == null || item.getType() == Material.AIR) return;
if(action.equals(Action.RIGHT_CLICK_AIR) || action.equals(Action.RIGHT_CLICK_BLOCK)){
switch (item.getType()){
case ARMOR_STAND:
@@ -90,59 +85,7 @@ public class InteractEvent implements Listener {
player.sendMessage("retour au hub soon");
break;
default:break;
}
}
}
@EventHandler
public void inventoryClick(InventoryClickEvent e){
Player player = (Player) e.getWhoClicked();
WitchPlayer witchPlayer = WitchPlayer.get(player);
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);
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());
player.closeInventory();
break;
case BARRIER:
player.closeInventory();
break;
case DOUBLE_PLANT:
if (teamManager.playerHaveTeam(player)) {
player.sendMessage(WitchRush.prefix()+"Vous êtes déjà dans une équipe !");
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1.0f, 1.0f);
player.closeInventory();
return;
}
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_YES, 1.0f, 1.0f);
teamManager.addPlayerInRandomTeam(player);
TeamInfos infos2 = teamManager.getPlayerTeam(player);
player.sendMessage(WitchRush.prefix()+"Vous avez rejoint la team "+infos2.getChatColor()+infos2.getTeamName());
player.closeInventory();
break;
}
}
}

View File

@@ -0,0 +1,73 @@
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.team.TeamInfos;
import net.berrygames.witchrush.team.TeamManager;
import net.berrygames.witchrush.tools.TeamsTagsManager;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class InventoryClick implements Listener {
@EventHandler
public void inventoryClick(InventoryClickEvent e){
Player player = (Player) e.getWhoClicked();
WitchPlayer witchPlayer = WitchPlayer.get(player);
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);
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();
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;
}
}
@EventHandler
public void onInventoryClick(final InventoryClickEvent e) {
if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){
e.setCancelled(true);
}
}
}

View File

@@ -3,8 +3,8 @@ 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.StartTask;
import org.bukkit.ChatColor;
import net.berrygames.witchrush.game.task.StartTask;
import net.berrygames.witchrush.tools.TeamsTagsManager;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -29,12 +29,15 @@ public class PlayerJoin implements Listener {
player.getInventory().clear();
player.setGameMode(GameMode.ADVENTURE);
player.setLevel(0);
player.setExp(0f);
player.setHealth(20);
player.setFoodLevel(20);
witchPlayer.sendWaitingStuff();
witchPlayer.teleportPlayer();
witchPlayer.sendGameScoreboard();
TeamsTagsManager.setNameTag(player, player.getName(), "§7");
if(WitchPlayer.getwitchMap().size() >= 4){
new StartTask().runTaskTimer(WitchRush.get(), 0, 20);
WitchRush.get().setState(GameState.STARTING);
@@ -46,6 +49,8 @@ public class PlayerJoin implements Listener {
player.sendMessage("§7Seul les autres spectateurs voient vos messages !");
player.sendMessage(" ");
TeamsTagsManager.setNameTag(player, player.getName(), "§8(Spec)§7 ");
e.setJoinMessage(null);
player.setGameMode(GameMode.SPECTATOR);
player.setLevel(0);

View File

@@ -3,7 +3,7 @@ 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.StartTask;
import net.berrygames.witchrush.game.task.StartTask;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;

View File

@@ -0,0 +1,45 @@
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.team.TeamInfos;
import net.berrygames.witchrush.team.TeamManager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.entity.Witch;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
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;
});
}
}
}
}
}

View File

@@ -1,7 +1,7 @@
package net.berrygames.witchrush.team;
import net.berrygames.witchrush.tools.Locations;
import net.berrygames.witchrush.tools.WitchBoss;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.ArrayList;
@@ -47,6 +47,21 @@ public class TeamManager {
}
public Locations getBossLocation(final TeamInfos teamInfos) {
switch (teamInfos){
case ROUGE:
return Locations.WITCH_ROUGE;
case BLEU:
return Locations.WITCH_BLEU;
case VERT:
return Locations.WITCH_VERT;
case JAUNE:
return Locations.WITCH_JAUNE;
}
return null;
}
public boolean isPlayerInTeam(final Player player, final TeamInfos teamInfos) {
return this.playerTeamList.get(teamInfos) != null && this.playerTeamList.get(teamInfos).contains(player);
}

View File

@@ -25,7 +25,7 @@ public class PNJSpawner {
this.villager.setCustomName(this.name);
this.villager.setCustomNameVisible(true);
this.villager.setAI(false);
this.villager.setSilent(false);
this.villager.setSilent(true);
this.villager.setCanPickupItems(false);
this.villager.setCollidable(false);
}

View File

@@ -0,0 +1,118 @@
package net.berrygames.witchrush.tools;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
import java.util.Collection;
import java.util.UUID;
public class TeamsTagsManager {
private String prefix;
private String suffix;
private Team team;
public static Scoreboard scoreboard;
public TeamsTagsManager(final String name, final String prefix, final String suffix, final Scoreboard current) throws Exception {
this.prefix = prefix;
this.suffix = suffix;
this.team = current.getTeam(name);
if (this.team == null) {
this.team = current.registerNewTeam(name);
}
TeamsTagsManager.scoreboard = current;
this.team.setCanSeeFriendlyInvisibles(false);
this.team.setAllowFriendlyFire(false);
int prefixLength = 0;
int suffixLength = 0;
if (prefix != null) {
prefixLength = prefix.length();
}
if (suffix != null) {
suffixLength = suffix.length();
}
if (prefixLength + suffixLength >= 32) {
throw new Exception("prefix and suffix lenghts are greater than 16");
}
if (suffix != null) {
this.team.setSuffix(ChatColor.translateAlternateColorCodes('&', suffix));
}
if (prefix != null) {
this.team.setPrefix(ChatColor.translateAlternateColorCodes('&', prefix));
}
}
public TeamsTagsManager(final String name, final String prefix, final String suffix) throws Exception {
this(name, prefix, suffix, Bukkit.getScoreboardManager().getMainScoreboard());
}
public void set(final Player player) {
this.team.addPlayer((OfflinePlayer)player);
player.setScoreboard(TeamsTagsManager.scoreboard);
}
public void remove(final Player player) {
this.team.removePlayer((OfflinePlayer)player);
}
public void resetTagUtils(final UUID uuid) {
this.remove(Bukkit.getPlayer(uuid));
}
public void setAll(final Collection<Player> players) {
for (final Player player : players) {
this.set(player);
}
}
public void setAll(final Player[] players) {
for (final Player player : players) {
this.set(player);
}
}
public void setPrefix(final String prefix) {
this.prefix = ChatColor.translateAlternateColorCodes('&', prefix);
this.team.setPrefix(this.prefix);
}
public void setSuffix(final String suffix) {
this.suffix = ChatColor.translateAlternateColorCodes('&', suffix);
this.team.setSuffix(this.suffix);
}
public String getPrefix() {
return this.prefix;
}
public String getSuffix() {
return this.suffix;
}
public Team getTeam() {
return this.team;
}
public void removeTeam() {
this.team.unregister();
}
public Scoreboard getScoreboard() {
return TeamsTagsManager.scoreboard;
}
public static void setNameTag(final Player player, final String name, final String prefix) {
try {
final TeamsTagsManager golemaplayer = new TeamsTagsManager(name, prefix, null);
golemaplayer.set(player);
}
catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -17,12 +17,12 @@ public class WitchBoss {
this.teamInfos = teamInfos;
this.location = location;
this.witch = (Witch) Bukkit.getWorld("world").spawnEntity(location, EntityType.WITCH);
this.life = 100;
this.life = 500;
this.witch.setMaxHealth(this.life);
this.witch.setHealth(this.life);
this.witch.setCustomNameVisible(false);
this.witch.setAI(false);
this.witch.setSilent(false);
this.witch.setSilent(true);
this.witch.setCanPickupItems(false);
this.witch.setCollidable(false);
}