diff --git a/.idea/modules/WitchRush_main.iml b/.idea/modules/WitchRush_main.iml index fa63d4b..dcf093b 100644 --- a/.idea/modules/WitchRush_main.iml +++ b/.idea/modules/WitchRush_main.iml @@ -3,6 +3,13 @@ + + + + + + + SPIGOT diff --git a/build.gradle b/build.gradle index 98c0621..09e0bb1 100644 --- a/build.gradle +++ b/build.gradle @@ -7,11 +7,22 @@ version '1.0-SNAPSHOT' sourceCompatibility = 1.8 +compileJava.options.encoding = 'UTF-8' + repositories { mavenCentral() + maven { + name 'Sonatype' + url 'https://oss.sonatype.org/content/repositories/snapshots/' + } + maven { + name 'Spigot' + url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' + } } dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' + compileOnly 'org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT' } diff --git a/src/main/java/net/berrygames/witchrush/WitchPlayer.java b/src/main/java/net/berrygames/witchrush/WitchPlayer.java index 6cf4e87..0230eb3 100644 --- a/src/main/java/net/berrygames/witchrush/WitchPlayer.java +++ b/src/main/java/net/berrygames/witchrush/WitchPlayer.java @@ -88,6 +88,11 @@ public class WitchPlayer { return WitchPlayer.witchMap; } + public void removePlayer(){ + if (WitchPlayer.witchMap.get(player) == null) return; + witchMap.remove(player); + } + static { WitchPlayer.witchMap = new HashMap<>(); } diff --git a/src/main/java/net/berrygames/witchrush/WitchRush.java b/src/main/java/net/berrygames/witchrush/WitchRush.java index 62381ea..cf0ad8e 100644 --- a/src/main/java/net/berrygames/witchrush/WitchRush.java +++ b/src/main/java/net/berrygames/witchrush/WitchRush.java @@ -3,12 +3,11 @@ package net.berrygames.witchrush; import net.berrygames.witchrush.commands.CommandsManager; import net.berrygames.witchrush.game.GameState; import net.berrygames.witchrush.listeners.ListenersManager; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import java.util.ArrayList; -import java.util.List; - public class WitchRush extends JavaPlugin { private static WitchRush instance; @@ -17,7 +16,9 @@ public class WitchRush extends JavaPlugin { @Override public void onEnable() { - gameState = GameState.WAITING; + instance = this; + + this.gameState = GameState.WAITING; new CommandsManager().register(this); new ListenersManager().register(this); @@ -38,6 +39,10 @@ public class WitchRush extends JavaPlugin { System.out.println("Desactive"); System.out.println("*-*-*-*-*-*-*-*"); super.onDisable(); + + for(Player pls : Bukkit.getOnlinePlayers()){ + pls.kickPlayer(ChatColor.RED+"Le serveur redémarre"); + } } public void setState(GameState state){ @@ -48,10 +53,10 @@ public class WitchRush extends JavaPlugin { } public static WitchRush get() { - return WitchRush.instance; + return instance; } public static String prefix(){ - return "&5&lWitchRush &8&l| &d"; + return "§5§lWitchRush §8§l| §d"; } } diff --git a/src/main/java/net/berrygames/witchrush/commands/CommandsManager.java b/src/main/java/net/berrygames/witchrush/commands/CommandsManager.java index 820c104..f7076d8 100644 --- a/src/main/java/net/berrygames/witchrush/commands/CommandsManager.java +++ b/src/main/java/net/berrygames/witchrush/commands/CommandsManager.java @@ -1,11 +1,12 @@ package net.berrygames.witchrush.commands; import net.berrygames.witchrush.WitchRush; +import net.berrygames.witchrush.commands.admins.GameCMD; public class CommandsManager { public void register(WitchRush main){ - + main.getCommand("game").setExecutor(new GameCMD()); System.out.println("Commandes register"); } diff --git a/src/main/java/net/berrygames/witchrush/commands/admins/GameCMD.java b/src/main/java/net/berrygames/witchrush/commands/admins/GameCMD.java new file mode 100644 index 0000000..986c914 --- /dev/null +++ b/src/main/java/net/berrygames/witchrush/commands/admins/GameCMD.java @@ -0,0 +1,31 @@ +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 org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class GameCMD implements CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if(!(sender instanceof Player)) return false; + + Player player = (Player) sender; + WitchPlayer witchPlayer = WitchPlayer.get(player); + + if(args.length == 1 && args[0].equals("start")){ + if(!player.isOp())return false; + + new StartTask().runTaskTimer(WitchRush.get(), 0, 20); + WitchRush.get().setState(GameState.STARTING); + Bukkit.broadcastMessage(WitchRush.prefix()+"§c"+player.getName()+" a forcé le démarrage de la partie !"); + } + return false; + } +} diff --git a/src/main/java/net/berrygames/witchrush/game/NoPVPTask.java b/src/main/java/net/berrygames/witchrush/game/NoPVPTask.java new file mode 100644 index 0000000..c6a9b70 --- /dev/null +++ b/src/main/java/net/berrygames/witchrush/game/NoPVPTask.java @@ -0,0 +1,16 @@ +package net.berrygames.witchrush.game; + +import net.berrygames.witchrush.WitchRush; +import org.bukkit.scheduler.BukkitRunnable; + +public class NoPVPTask extends BukkitRunnable { + + private int timer = 60 * 3; + + @Override + public void run() { + WitchRush.get().setState(GameState.NOPVP); + + timer--; + } +} diff --git a/src/main/java/net/berrygames/witchrush/game/StartTask.java b/src/main/java/net/berrygames/witchrush/game/StartTask.java new file mode 100644 index 0000000..c1c84d5 --- /dev/null +++ b/src/main/java/net/berrygames/witchrush/game/StartTask.java @@ -0,0 +1,36 @@ +package net.berrygames.witchrush.game; + +import net.berrygames.witchrush.WitchPlayer; +import net.berrygames.witchrush.WitchRush; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class StartTask extends BukkitRunnable { + + private int timer = 120; + + @Override + public void run() { + + if(timer == 0){ + new NoPVPTask().runTaskTimer(WitchRush.get(), 0, 20); + Bukkit.broadcastMessage(WitchRush.prefix()+"§CLa partie commence ! Vous avez 3minutes pour vous preparer !"); + 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"); + } + if(timer == 1){ + Bukkit.broadcastMessage(WitchRush.prefix()+"Lancement de la partie dans §5"+timer+" §dseconde"); + } + + for(Player pls : Bukkit.getOnlinePlayers()){ + pls.setLevel(timer); + } + + timer--; + } +} diff --git a/src/main/java/net/berrygames/witchrush/listeners/ListenersManager.java b/src/main/java/net/berrygames/witchrush/listeners/ListenersManager.java index 6341d94..52fb331 100644 --- a/src/main/java/net/berrygames/witchrush/listeners/ListenersManager.java +++ b/src/main/java/net/berrygames/witchrush/listeners/ListenersManager.java @@ -2,6 +2,7 @@ package net.berrygames.witchrush.listeners; import net.berrygames.witchrush.WitchRush; import net.berrygames.witchrush.listeners.players.PlayerJoin; +import net.berrygames.witchrush.listeners.players.PlayerQuit; import org.bukkit.Bukkit; import org.bukkit.plugin.PluginManager; @@ -12,6 +13,7 @@ public class ListenersManager { // --- PLAYERS ---// pm.registerEvents(new PlayerJoin(), main); + pm.registerEvents(new PlayerQuit(), main); // --- WORLD ---// diff --git a/src/main/java/net/berrygames/witchrush/listeners/players/PlayerJoin.java b/src/main/java/net/berrygames/witchrush/listeners/players/PlayerJoin.java index 15918d3..5bdbd95 100644 --- a/src/main/java/net/berrygames/witchrush/listeners/players/PlayerJoin.java +++ b/src/main/java/net/berrygames/witchrush/listeners/players/PlayerJoin.java @@ -3,6 +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 org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -14,20 +16,25 @@ public class PlayerJoin implements Listener { @EventHandler public void join(PlayerJoinEvent e){ Player player = e.getPlayer(); - WitchPlayer witchPlayer = new WitchPlayer(player); + WitchPlayer witchPlayer = WitchPlayer.get(player); - if(WitchRush.get().getState().equals(GameState.WAITING) || - WitchRush.get().getState().equals(GameState.STARTING)){ + if(WitchRush.get().getState().equals(GameState.WAITING) || WitchRush.get().getState().equals(GameState.STARTING)){ e.setJoinMessage( - WitchRush.prefix()+player.getName() - +" a rejoint la partie §7(§d" - +WitchPlayer.getwitchMap().size() - +"§8/§d16§7)"); + WitchRush.prefix()+player.getName()+ + " a rejoint la partie §7(§d"+ + WitchPlayer.getwitchMap().size()+ + "§8/§d16§7)"); player.setGameMode(GameMode.ADVENTURE); + player.setLevel(0); player.setHealth(20); player.setFoodLevel(20); witchPlayer.teleportPlayer(); witchPlayer.sendGameScoreboard(); + + if(WitchPlayer.getwitchMap().size() >= 4){ + new StartTask().runTaskTimer(WitchRush.get(), 0, 20); + WitchRush.get().setState(GameState.STARTING); + } } } } diff --git a/src/main/java/net/berrygames/witchrush/listeners/players/PlayerQuit.java b/src/main/java/net/berrygames/witchrush/listeners/players/PlayerQuit.java new file mode 100644 index 0000000..8f7ba0a --- /dev/null +++ b/src/main/java/net/berrygames/witchrush/listeners/players/PlayerQuit.java @@ -0,0 +1,27 @@ +package net.berrygames.witchrush.listeners.players; + +import net.berrygames.witchrush.WitchPlayer; +import net.berrygames.witchrush.WitchRush; +import net.berrygames.witchrush.game.StartTask; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; + +public class PlayerQuit implements Listener { + + @EventHandler + public void quit(PlayerQuitEvent e){ + Player player = e.getPlayer(); + WitchPlayer witchPlayer = WitchPlayer.get(player); + + witchPlayer.removePlayer(); + + if(WitchPlayer.getwitchMap().size() < 4){ + Bukkit.broadcastMessage(WitchRush.prefix()+"§CLe lancement de la partie est annulé. Il n'y a pas assez de joueurs !"); + new StartTask().cancel(); + } + } + +} diff --git a/src/main/java/net/berrygames/witchrush/tools/Locations.java b/src/main/java/net/berrygames/witchrush/tools/Locations.java new file mode 100644 index 0000000..252a521 --- /dev/null +++ b/src/main/java/net/berrygames/witchrush/tools/Locations.java @@ -0,0 +1,43 @@ +package net.berrygames.witchrush.tools; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; + +public enum Locations { + + //PLAYERS + PLAYER_SPAWN_WAITING_ROOM(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + PLAYER_SPAWN_BLEU(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + PLAYER_SPAWN_ROUGE(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + PLAYER_SPAWN_JAUNE(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + PLAYER_SPAWN_VERT(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + + SPAWN_SPECTATORS(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + + //WITCH + WITCH_BLEU(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + WITCH_ROUGE(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + WITCH_JAUNE(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + WITCH_ERT(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + + //PNJ SHOP + SHOP_BLEU(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + SHOP_ROUGE(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + SHOP_JAUNE(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + SHOP_VERT(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + + //PNJ SOLO UPGRADE + UPGRADE_BLEU(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + UPGRADE_ROUGE(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + UPGRADE_JAUNE(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + UPGRADE_VERT(new Location(Bukkit.getWorld("world"), 0, 0, 0)), + + ; + + private Location location; + + Locations(Location location) { + this.location = location; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..6023a9a --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,8 @@ +name: WitchRush +version: 1.0 +author: BunSLaPatate +main: net.berrygames.witchrush.WitchRush +website: berrygames.net + +commands: + game: