mirror of
https://github.com/ArthurDanjou/WitchRush.git
synced 2026-01-14 20:19:32 +01:00
Added Team system & Guis
This commit is contained in:
@@ -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(){
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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--;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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--;
|
||||
@@ -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--;
|
||||
}
|
||||
}
|
||||
@@ -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--;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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("!"," "));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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 !");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user