This commit is contained in:
Steev 2021-12-22 23:55:02 +01:00
commit 3b624c51c0
10 changed files with 74 additions and 11 deletions

3
.gitignore vendored
View File

@ -1 +1,4 @@
.idea .idea
out
target
Tridentwar.iml

15
README.md Normal file
View File

@ -0,0 +1,15 @@
# tridentwar
Tridentwar is a minigame inspired by friends.
## History
The development of this plugin originated on a server, a friend of mine hosted, where we played around with all sorts of items.
I later took the idea and started designing a plugin all around it.
## Supported version
I am using the most recent stable Minecraft spigot versions and cannot guarantee downwards compatibility.
## License
You are free to use this plugin on your server but, you have to mention me as the author and have to keep credit notices I placed inside the plugin.
## Current Roadmap
Because this plugin currently is in its early development phase I will update this to more interesting features down the road
my main goal, for now, is to get a stable plugin to host on servers without issues.

View File

@ -1,5 +1,5 @@
name: TridentWar name: TridentWar
main: de.steev.tridentwar.main main: de.steev.Tridentwar.Tridentwar
version: 0.1 version: 0.1
api-version: 1.13 api-version: 1.13
commands: commands:

View File

@ -1,6 +1,7 @@
package de.steev.Tridentwar; package de.steev.Tridentwar;
import de.steev.Tridentwar.commands.TridentwarCommand; import de.steev.Tridentwar.commands.TridentwarCommand;
import de.steev.Tridentwar.listeners.PlayerDeathListener;
import de.steev.Tridentwar.listeners.ProjectileHitListener; import de.steev.Tridentwar.listeners.ProjectileHitListener;
import de.steev.Tridentwar.listeners.ProjectileLaunchListener; import de.steev.Tridentwar.listeners.ProjectileLaunchListener;
import de.steev.Tridentwar.manager.GameManager; import de.steev.Tridentwar.manager.GameManager;
@ -15,6 +16,7 @@ public class Tridentwar extends JavaPlugin {
this.gameManager = new GameManager(this); this.gameManager = new GameManager(this);
getServer().getPluginManager().registerEvents(new ProjectileLaunchListener(this.gameManager, this), this); getServer().getPluginManager().registerEvents(new ProjectileLaunchListener(this.gameManager, this), this);
getServer().getPluginManager().registerEvents(new ProjectileHitListener(this.gameManager), this); getServer().getPluginManager().registerEvents(new ProjectileHitListener(this.gameManager), this);
getServer().getPluginManager().registerEvents(new PlayerDeathListener(this.gameManager), this);
getCommand("tw").setExecutor(new TridentwarCommand(gameManager)); getCommand("tw").setExecutor(new TridentwarCommand(gameManager));
} }

View File

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

View File

@ -21,8 +21,8 @@ public class ProjectileLaunchListener implements Listener {
@EventHandler @EventHandler
public void OnProjectileLaunch(ProjectileLaunchEvent event){ public void OnProjectileLaunch(ProjectileLaunchEvent event){
this.tridentResetTask = new TridentResetTask(this.gameManager, (Player)event.getEntity().getShooter()); this.tridentResetTask = new TridentResetTask(this.gameManager, (Player)event.getEntity().getShooter(), event.getEntity());
this.tridentResetTask.runTaskLater(plugin, 300); this.tridentResetTask.runTaskLater(plugin, 1000);
gameManager.getTridentManager().setTasks((Player)event.getEntity().getShooter(), this.tridentResetTask); gameManager.getTridentManager().setTasks((Player)event.getEntity().getShooter(), this.tridentResetTask);
} }
} }

View File

@ -25,14 +25,24 @@ public class GameManager {
switch (gameState){ switch (gameState){
case ACTIVE: case ACTIVE:
Bukkit.broadcastMessage("Active!"); Bukkit.broadcastMessage("Active!");
this.playerManager.setAlive(Bukkit.getOnlinePlayers().size());
this.playerManager.giveKits(); this.playerManager.giveKits();
break; break;
case STARTING: case STARTING:
if(Bukkit.getOnlinePlayers().size() < 2) return; // TODO: Message about minimal player count not beeing reached
Bukkit.broadcastMessage("Starting!"); Bukkit.broadcastMessage("Starting!");
this.gameStartCountdownTask = new GameStartCountdownTask(this); this.gameStartCountdownTask = new GameStartCountdownTask(this);
this.gameStartCountdownTask.runTaskTimer(plugin, 0 , 20); this.gameStartCountdownTask.runTaskTimer(plugin, 0 , 20);
// teleport players // 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; break;
} }
} }

View File

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

View File

@ -8,16 +8,26 @@ import org.bukkit.inventory.ItemStack;
public class PlayerManager { public class PlayerManager {
private GameManager gameManager; private GameManager gameManager;
private int alive = 0;
public PlayerManager(GameManager gameManager) { public PlayerManager(GameManager gameManager) {
this.gameManager = gameManager; this.gameManager = gameManager;
} }
public void giveKits() { public void giveKits() { Bukkit.getOnlinePlayers().stream().filter(player -> player.getGameMode() == GameMode.SURVIVAL).forEach(this::giveKit); }
Bukkit.getOnlinePlayers().stream().filter(player -> player.getGameMode() == GameMode.SURVIVAL).forEach(this::giveKit);
}
public void giveKit(Player player){ public void giveKit(Player player){
player.getInventory().addItem(new ItemStack(Material.TRIDENT)); 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; }
} }

View File

@ -2,6 +2,7 @@ package de.steev.Tridentwar.tasks;
import de.steev.Tridentwar.manager.GameManager; import de.steev.Tridentwar.manager.GameManager;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
@ -10,14 +11,17 @@ public class TridentResetTask extends BukkitRunnable {
private GameManager gameManager; private GameManager gameManager;
private Player thrower; private Player thrower;
private Entity projektile;
public TridentResetTask (GameManager gameManager, Player thrower) { public TridentResetTask (GameManager gameManager, Player thrower, Entity projektile) {
this.gameManager = gameManager; this.gameManager = gameManager;
this.thrower = thrower; this.thrower = thrower;
this.projektile = projektile;
} }
@Override @Override
public void run() { public void run() {
projektile.remove();
thrower.getInventory().addItem(new ItemStack(Material.TRIDENT)); thrower.getInventory().addItem(new ItemStack(Material.TRIDENT));
} }
} }