From 42e537e4cb091111a0480adc69cd32d6c238824a Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 30 Nov 2021 20:33:38 +0100 Subject: [PATCH] added trident handling --- .gitignore | 5 ++++- plugin.yml | 2 +- .../java/de/steev/Tridentwar/Tridentwar.java | 2 ++ .../listeners/PlayerDeathListener.java | 19 +++++++++++++++++++ .../steev/Tridentwar/manager/GameManager.java | 12 +++++++++++- .../steev/Tridentwar/manager/GameState.java | 2 +- .../Tridentwar/manager/PlayerManager.java | 18 ++++++++++++++---- 7 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 src/main/java/de/steev/Tridentwar/listeners/PlayerDeathListener.java diff --git a/.gitignore b/.gitignore index 723ef36..0a23762 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -.idea \ No newline at end of file +.idea +out +target +Tridentwar.iml \ No newline at end of file diff --git a/plugin.yml b/plugin.yml index 867c11f..652e0bb 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: TridentWar -main: de.steev.tridentwar.main +main: de.steev.Tridentwar.Tridentwar version: 0.1 api-version: 1.13 commands: diff --git a/src/main/java/de/steev/Tridentwar/Tridentwar.java b/src/main/java/de/steev/Tridentwar/Tridentwar.java index a9184b8..7dd431e 100644 --- a/src/main/java/de/steev/Tridentwar/Tridentwar.java +++ b/src/main/java/de/steev/Tridentwar/Tridentwar.java @@ -1,6 +1,7 @@ package de.steev.Tridentwar; import de.steev.Tridentwar.commands.TridentwarCommand; +import de.steev.Tridentwar.listeners.PlayerDeathListener; import de.steev.Tridentwar.listeners.ProjectileHitListener; import de.steev.Tridentwar.listeners.ProjectileLaunchListener; import de.steev.Tridentwar.manager.GameManager; @@ -15,6 +16,7 @@ public class Tridentwar extends JavaPlugin { this.gameManager = new GameManager(this); getServer().getPluginManager().registerEvents(new ProjectileLaunchListener(this.gameManager, this), this); getServer().getPluginManager().registerEvents(new ProjectileHitListener(this.gameManager), this); + getServer().getPluginManager().registerEvents(new PlayerDeathListener(this.gameManager), this); getCommand("tw").setExecutor(new TridentwarCommand(gameManager)); } diff --git a/src/main/java/de/steev/Tridentwar/listeners/PlayerDeathListener.java b/src/main/java/de/steev/Tridentwar/listeners/PlayerDeathListener.java new file mode 100644 index 0000000..2c44117 --- /dev/null +++ b/src/main/java/de/steev/Tridentwar/listeners/PlayerDeathListener.java @@ -0,0 +1,19 @@ +package de.steev.Tridentwar.listeners; + +import de.steev.Tridentwar.manager.GameManager; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; + +public class PlayerDeathListener implements Listener { + private GameManager gameManager; + + public PlayerDeathListener(GameManager gameManager) { + this.gameManager = gameManager; + } + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent event) { + this.gameManager.getPlayerManager().playerDeath(); + } +} diff --git a/src/main/java/de/steev/Tridentwar/manager/GameManager.java b/src/main/java/de/steev/Tridentwar/manager/GameManager.java index 9fefac3..a33121f 100644 --- a/src/main/java/de/steev/Tridentwar/manager/GameManager.java +++ b/src/main/java/de/steev/Tridentwar/manager/GameManager.java @@ -25,14 +25,24 @@ public class GameManager { switch (gameState){ case ACTIVE: Bukkit.broadcastMessage("Active!"); + this.playerManager.setAlive(Bukkit.getOnlinePlayers().size()); this.playerManager.giveKits(); break; case STARTING: + if(Bukkit.getOnlinePlayers().size() < 2) return; // TODO: Message about minimal player count not beeing reached Bukkit.broadcastMessage("Starting!"); this.gameStartCountdownTask = new GameStartCountdownTask(this); this.gameStartCountdownTask.runTaskTimer(plugin, 0 , 20); // teleport players - // clear inventories + break; + case WON: + Bukkit.broadcastMessage("WON"); + break; + case STOPPING: + Bukkit.broadcastMessage("Stopping Game"); + break; + case ABORTING: + Bukkit.broadcastMessage("No Player Alive game aborts"); break; } } diff --git a/src/main/java/de/steev/Tridentwar/manager/GameState.java b/src/main/java/de/steev/Tridentwar/manager/GameState.java index 0f36861..d06e440 100644 --- a/src/main/java/de/steev/Tridentwar/manager/GameState.java +++ b/src/main/java/de/steev/Tridentwar/manager/GameState.java @@ -1,5 +1,5 @@ package de.steev.Tridentwar.manager; public enum GameState { - LOBBY, STARTING, ACTIVE, WON, RESTARTING, STOPPING; + LOBBY, STARTING, ACTIVE, WON, RESTARTING, STOPPING, ABORTING; } diff --git a/src/main/java/de/steev/Tridentwar/manager/PlayerManager.java b/src/main/java/de/steev/Tridentwar/manager/PlayerManager.java index 964aa59..b9ca56c 100644 --- a/src/main/java/de/steev/Tridentwar/manager/PlayerManager.java +++ b/src/main/java/de/steev/Tridentwar/manager/PlayerManager.java @@ -8,16 +8,26 @@ import org.bukkit.inventory.ItemStack; public class PlayerManager { private GameManager gameManager; + private int alive = 0; public PlayerManager(GameManager gameManager) { this.gameManager = gameManager; } - public void giveKits() { - Bukkit.getOnlinePlayers().stream().filter(player -> player.getGameMode() == GameMode.SURVIVAL).forEach(this::giveKit); - } - + public void giveKits() { Bukkit.getOnlinePlayers().stream().filter(player -> player.getGameMode() == GameMode.SURVIVAL).forEach(this::giveKit); } public void giveKit(Player player){ player.getInventory().addItem(new ItemStack(Material.TRIDENT)); } + + public void playerDeath(){ + this.alive--; + if(this.alive == 1) { + this.gameManager.setGameState(GameState.WON); + } else if(this.alive == 0) { + this.gameManager.setGameState(GameState.ABORTING); + } + } + + public int getAlive() { return alive; } + public void setAlive(int alive) { this.alive = alive; } }