rewrote entire plugin with new backend
This commit is contained in:
26
src/main/java/de/steev/Tridentwar/Tridentwar.java
Normal file
26
src/main/java/de/steev/Tridentwar/Tridentwar.java
Normal file
@ -0,0 +1,26 @@
|
||||
package de.steev.Tridentwar;
|
||||
|
||||
import de.steev.Tridentwar.commands.TridentwarCommand;
|
||||
import de.steev.Tridentwar.listeners.ProjectileHitListener;
|
||||
import de.steev.Tridentwar.listeners.ProjectileLaunchListener;
|
||||
import de.steev.Tridentwar.manager.GameManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class Tridentwar extends JavaPlugin {
|
||||
private GameManager gameManager;
|
||||
|
||||
@Override
|
||||
public void onEnable(){
|
||||
super.onEnable();
|
||||
this.gameManager = new GameManager(this);
|
||||
getServer().getPluginManager().registerEvents(new ProjectileLaunchListener(this.gameManager, this), this);
|
||||
getServer().getPluginManager().registerEvents(new ProjectileHitListener(this.gameManager), this);
|
||||
getCommand("tw").setExecutor(new TridentwarCommand(gameManager));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable(){
|
||||
super.onDisable();
|
||||
gameManager.cleanup();
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package de.steev.Tridentwar.commands;
|
||||
|
||||
import de.steev.Tridentwar.manager.GameManager;
|
||||
import de.steev.Tridentwar.manager.GameState;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class TridentwarCommand implements CommandExecutor {
|
||||
|
||||
private GameManager gameManager;
|
||||
|
||||
public TridentwarCommand(GameManager gameManager){
|
||||
this.gameManager = gameManager;
|
||||
}
|
||||
|
||||
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
|
||||
if (args[0] == null) return false;
|
||||
|
||||
switch (args[0].toLowerCase()){
|
||||
case "start":
|
||||
gameManager.setGameState(GameState.STARTING);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package de.steev.Tridentwar.listeners;
|
||||
|
||||
import de.steev.Tridentwar.manager.GameManager;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class ProjectileHitListener implements Listener {
|
||||
private GameManager gameManager;
|
||||
|
||||
public ProjectileHitListener(GameManager gameManager){
|
||||
this.gameManager = gameManager;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onTridentHit(ProjectileHitEvent event){
|
||||
if(this.gameManager.getTridentManager().getTask((Player)event.getEntity().getShooter()) != null) {
|
||||
this.gameManager.getTridentManager().getTask((Player) event.getEntity().getShooter()).cancel();
|
||||
this.gameManager.getTridentManager().removeTridentTast((Player) event.getEntity().getShooter());
|
||||
}
|
||||
|
||||
if(event.getHitEntity() instanceof Player) ((Player) event.getEntity().getShooter()).playSound(((Player) event.getEntity().getShooter()).getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1f, 0.5f);
|
||||
|
||||
event.getEntity().remove();
|
||||
((Player) event.getEntity().getShooter()).getInventory().addItem(new ItemStack(Material.TRIDENT));
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package de.steev.Tridentwar.listeners;
|
||||
|
||||
import de.steev.Tridentwar.Tridentwar;
|
||||
import de.steev.Tridentwar.manager.GameManager;
|
||||
import de.steev.Tridentwar.tasks.TridentResetTask;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.ProjectileLaunchEvent;
|
||||
|
||||
public class ProjectileLaunchListener implements Listener {
|
||||
|
||||
private GameManager gameManager;
|
||||
private TridentResetTask tridentResetTask;
|
||||
private Tridentwar plugin;
|
||||
|
||||
public ProjectileLaunchListener(GameManager gameManager, Tridentwar plugin){
|
||||
this.gameManager = gameManager;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void OnProjectileLaunch(ProjectileLaunchEvent event){
|
||||
this.tridentResetTask = new TridentResetTask(this.gameManager, (Player)event.getEntity().getShooter());
|
||||
this.tridentResetTask.runTaskLater(plugin, 300);
|
||||
gameManager.getTridentManager().setTasks((Player)event.getEntity().getShooter(), this.tridentResetTask);
|
||||
}
|
||||
}
|
45
src/main/java/de/steev/Tridentwar/manager/GameManager.java
Normal file
45
src/main/java/de/steev/Tridentwar/manager/GameManager.java
Normal file
@ -0,0 +1,45 @@
|
||||
package de.steev.Tridentwar.manager;
|
||||
|
||||
import de.steev.Tridentwar.Tridentwar;
|
||||
import de.steev.Tridentwar.tasks.GameStartCountdownTask;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public class GameManager {
|
||||
private final Tridentwar plugin;
|
||||
private TridentManager tridentManager;
|
||||
private GameStartCountdownTask gameStartCountdownTask;
|
||||
public GameState gameState = GameState.LOBBY;
|
||||
private PlayerManager playerManager;
|
||||
|
||||
|
||||
public GameManager(Tridentwar plugin) {
|
||||
this.plugin = plugin;
|
||||
this.tridentManager = new TridentManager(this);
|
||||
this.playerManager = new PlayerManager(this);
|
||||
}
|
||||
|
||||
public void setGameState(GameState gameState){
|
||||
if(this.gameState == GameState.ACTIVE && gameState == GameState.STARTING) return;
|
||||
this.gameState = gameState;
|
||||
|
||||
switch (gameState){
|
||||
case ACTIVE:
|
||||
Bukkit.broadcastMessage("Active!");
|
||||
this.playerManager.giveKits();
|
||||
break;
|
||||
case STARTING:
|
||||
Bukkit.broadcastMessage("Starting!");
|
||||
this.gameStartCountdownTask = new GameStartCountdownTask(this);
|
||||
this.gameStartCountdownTask.runTaskTimer(plugin, 0 , 20);
|
||||
// teleport players
|
||||
// clear inventories
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void cleanup(){}
|
||||
|
||||
public TridentManager getTridentManager() { return tridentManager; }
|
||||
public PlayerManager getPlayerManager() { return playerManager; }
|
||||
public GameState getGameState() { return gameState; }
|
||||
}
|
5
src/main/java/de/steev/Tridentwar/manager/GameState.java
Normal file
5
src/main/java/de/steev/Tridentwar/manager/GameState.java
Normal file
@ -0,0 +1,5 @@
|
||||
package de.steev.Tridentwar.manager;
|
||||
|
||||
public enum GameState {
|
||||
LOBBY, STARTING, ACTIVE, WON, RESTARTING, STOPPING;
|
||||
}
|
23
src/main/java/de/steev/Tridentwar/manager/PlayerManager.java
Normal file
23
src/main/java/de/steev/Tridentwar/manager/PlayerManager.java
Normal file
@ -0,0 +1,23 @@
|
||||
package de.steev.Tridentwar.manager;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class PlayerManager {
|
||||
private GameManager gameManager;
|
||||
|
||||
public PlayerManager(GameManager gameManager) {
|
||||
this.gameManager = gameManager;
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package de.steev.Tridentwar.manager;
|
||||
|
||||
import de.steev.Tridentwar.tasks.TridentResetTask;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class TridentManager {
|
||||
private HashMap<Player, TridentResetTask> tasks;
|
||||
private GameManager gameManager;
|
||||
|
||||
public TridentManager(GameManager gameManager) { this.gameManager = gameManager; }
|
||||
public void setTasks(Player thrower, TridentResetTask task) { this.tasks.put(thrower, task); }
|
||||
public TridentResetTask getTask (Player thrower) { return tasks.get(thrower); }
|
||||
public void removeTridentTast(Player thrower) { tasks.remove(thrower); }
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package de.steev.Tridentwar.tasks;
|
||||
|
||||
import de.steev.Tridentwar.manager.GameManager;
|
||||
import de.steev.Tridentwar.manager.GameState;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class GameStartCountdownTask extends BukkitRunnable {
|
||||
private GameManager gameManager;
|
||||
public GameStartCountdownTask (GameManager gameManager) {
|
||||
this.gameManager = gameManager;
|
||||
}
|
||||
|
||||
private int timeLeft = 10;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
timeLeft--;
|
||||
if(timeLeft <= 0) {
|
||||
cancel();
|
||||
gameManager.setGameState(GameState.ACTIVE);
|
||||
return;
|
||||
}
|
||||
Bukkit.broadcastMessage(timeLeft + " seconds Until game starts!");
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package de.steev.Tridentwar.tasks;
|
||||
|
||||
import de.steev.Tridentwar.manager.GameManager;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class TridentResetTask extends BukkitRunnable {
|
||||
|
||||
private GameManager gameManager;
|
||||
private Player thrower;
|
||||
|
||||
public TridentResetTask (GameManager gameManager, Player thrower) {
|
||||
this.gameManager = gameManager;
|
||||
this.thrower = thrower;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
thrower.getInventory().addItem(new ItemStack(Material.TRIDENT));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user