rewrote entire plugin with new backend

This commit is contained in:
2021-11-29 17:05:10 +01:00
parent 1f1149b383
commit b5554d5b3e
27 changed files with 376 additions and 698 deletions

View 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();
}
}

View File

@ -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;
}
}

View File

@ -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));
}
}

View File

@ -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);
}
}

View 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; }
}

View File

@ -0,0 +1,5 @@
package de.steev.Tridentwar.manager;
public enum GameState {
LOBBY, STARTING, ACTIVE, WON, RESTARTING, STOPPING;
}

View 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));
}
}

View File

@ -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); }
}

View File

@ -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!");
}
}

View File

@ -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));
}
}