diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..b64efbf
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..f44ba7b
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..3aa65dd
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..797acea
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tridentwar.iml b/Tridentwar.iml
new file mode 100644
index 0000000..fa63d4b
--- /dev/null
+++ b/Tridentwar.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ SPIGOT
+
+
+
+
+
\ No newline at end of file
diff --git a/config.yml b/config.yml
deleted file mode 100644
index 47386c4..0000000
--- a/config.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-spawn: unset
-spectator: unset
-endLoc: unset
-time: 600
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..d94d5ab
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+
+ de.steev
+ Tridentwar
+ 1.0
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 16
+ 16
+
+
+
+
+
+
+ 17
+ 17
+
+
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.17.1-R0.1-SNAPSHOT
+ provided
+
+
+
\ No newline at end of file
diff --git a/src/de/steev/tridentwar/command.java b/src/de/steev/tridentwar/command.java
deleted file mode 100644
index 157bdb3..0000000
--- a/src/de/steev/tridentwar/command.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package de.steev.tridentwar;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-public class command implements CommandExecutor {
- // TODO: add permissions to the commands
- private main plugin;
- public command(main plugin){ this.plugin = plugin; }
-
- @Override
- public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
- Player player = (Player) commandSender;
-
- if(args.length > 0){
- switch (args[0].toLowerCase()){
- default:
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " Dieser Befehl ist nicht bekannt bitte gib /tw help ein");
- break;
- case "help":
- player.sendMessage("======================= " + ChatColor.AQUA + "Steev's Trident War" + " =======================\n" +
- ChatColor.AQUA + ChatColor.BOLD + "help: " + ChatColor.RESET + "Listet dir eine Hilfe des plugins auf\n" +
- ChatColor.AQUA + ChatColor.BOLD + "start: " + ChatColor.RESET + "Zum starten eines Trident Wars\n" +
- ChatColor.AQUA + ChatColor.BOLD + "stop: " + ChatColor.RESET + "Zum stopen eines Trident Wars\n"+
- ChatColor.AQUA + ChatColor.BOLD + "leave: " + ChatColor.RESET + "Verlässt den Trident War\n"+
- ChatColor.AQUA + ChatColor.BOLD + "setSpawn: " + ChatColor.RESET + "Setzt den anfangspunkt für alle Spieler\n" +
- ChatColor.AQUA + ChatColor.BOLD + "setSpectate: " + ChatColor.RESET + "Setzt den spawn für gestorbene Spieler\n" +
- ChatColor.AQUA + ChatColor.BOLD + "setEndLocation: " + ChatColor.RESET + "Setzt den spawn für alle Spieler nach dem Trident War");
- break;
- case "start":
- if(commandSender.hasPermission("tw.admin")){
- // checks if more then 1 person is online
- if(Bukkit.getServer().getOnlinePlayers().size() >= 2){
- // ensures that no war already is active
- if(!plugin.eventActive){
- plugin.eventActive = true; // Tells the plugin there is a war ongoing
- for(Player p : Bukkit.getServer().getOnlinePlayers()){
- p.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " Ein Trident War beginnt!");
- p.sendTitle(ChatColor.GREEN + "Beginnt!", ChatColor.GOLD + "Der Trident War beginnt.", 1, 20, 1);
-
- // Teleports players to Spawn
- if(plugin.playerDataConfig.get("spectator") != null){
- p.teleport(((Location) plugin.playerDataConfig.get("spectator")));
- }
- }
- warcontroller.StartTridentWar(plugin);
- } else {
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " Ein Trident War ist bereits im Gange");
- }
- } else {
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + "Allein kanst du keinen Trident War starten");
- }
- } else {
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " dir fehlen die Rechte dazu");
- }
- break;
- case "stop":
- if(commandSender.hasPermission("tw.admin")){
- if(plugin.eventActive){
- plugin.eventActive = false;
- for(Player p : Bukkit.getOnlinePlayers()){
- p.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " Der Trident War endet!");
- p.sendTitle("Ende!", "Der Trident war Endet.", 1, 20, 1);
- }
- warcontroller.StopTridentWar(plugin);
- } else {
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " es ist kein Trident im Gange");
- }
- } else {
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " dir fehlen die Rechte dazu");
- }
- break;
- case "leave":
- plugin.playerDataConfig.set(((Player) commandSender).getPlayer().getUniqueId() + "", null);
- if(plugin.playerDataConfig.get("endLoc") != "unset"){
- ((Player) commandSender).getPlayer().teleport(((Location)plugin.playerDataConfig.get("endLoc")));
- }
-
- // Check if enough players are in for a trident war
- if(plugin.playerDataConfig.getKeys(false).size() < 2){
- warcontroller.StopTridentWar(plugin);
-
- // Message and teleport everyone if not
- for(Player p : Bukkit.getServer().getOnlinePlayers()){
- if(plugin.playerDataConfig.getString(p.getUniqueId() + ".name") != null){
- p.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " Ein Trident War beginnt!");
- p.sendTitle(ChatColor.RED + "Abgebrochen!", ChatColor.RED + "Zu wenig Spieler.", 1, 20, 1);
-
- // Teleports players to Spawn
- if(plugin.playerDataConfig.get("endLoc") != null){
- p.teleport(((Location) plugin.playerDataConfig.get("endLoc")));
- }
- }
- }
- }
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + "Du hast den Trident war verlassen");
- break;
- case "setspawn":
- if(commandSender.hasPermission("tw.admin")){
- if(args[1].toLowerCase() == "unset"){
- plugin.config.set("spawn", "unset");
- plugin.saveDefaultConfig();
- } else {
- plugin.config.set("spawn", player.getLocation());
- plugin.saveDefaultConfig();
- }
- } else {
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " dir fehlen die Rechte dazu");
- }
- break;
- case "setspectate":
- if(commandSender.hasPermission("tw.admin")){
- if(args[1].toLowerCase() == "unset"){
- plugin.config.set("spectator", "unset");
- plugin.saveDefaultConfig();
- } else {
- plugin.config.set("spectator", player.getLocation());
- plugin.saveDefaultConfig();
- }
- } else {
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " dir fehlen die Rechte dazu");
- }
- break;
- case "setendlocation":
- if(commandSender.hasPermission("tw.admin")){
- if(args[1].toLowerCase() == "unset"){
- plugin.config.set("endLoc", "unset");
- plugin.saveDefaultConfig();
- } else {
- plugin.config.set("endLoc", player.getLocation());
- plugin.saveDefaultConfig();
- }
- } else {
- commandSender.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " dir fehlen die Rechte dazu");
- }
- break;
- }
- }
- return false;
- }
-}
diff --git a/src/de/steev/tridentwar/data/Items.java b/src/de/steev/tridentwar/data/Items.java
deleted file mode 100644
index 53ce3c3..0000000
--- a/src/de/steev/tridentwar/data/Items.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package de.steev.tridentwar.data;
-
-import org.bukkit.Material;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.ItemMeta;
-
-public class Items {
- public static ItemStack trident(){
- ItemStack trident = new ItemStack(Material.TRIDENT);
- ItemMeta meta = trident.getItemMeta();
- meta.setDisplayName("Kriegs Dreizack");
- trident.setItemMeta(meta);
- return trident;
- }
-}
diff --git a/src/de/steev/tridentwar/events/PlayerConnectionEvents.java b/src/de/steev/tridentwar/events/PlayerConnectionEvents.java
deleted file mode 100644
index 574ffbc..0000000
--- a/src/de/steev/tridentwar/events/PlayerConnectionEvents.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package de.steev.tridentwar.events;
-
-import de.steev.tridentwar.data.Items;
-import de.steev.tridentwar.main;
-import de.steev.tridentwar.warcontroller;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.player.PlayerJoinEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-import org.bukkit.inventory.ItemStack;
-
-import java.util.UUID;
-
-public class PlayerConnectionEvents implements Listener {
- private main plugin;
-
- public PlayerConnectionEvents(main plugin){
- this.plugin = plugin;
- }
-
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent event){
-
- if(plugin.eventActive) {
-
- // Scans player inventory for tridents to prevent multiple tridents
- for(ItemStack is : event.getPlayer().getInventory()) {
- try {
- if(is.getItemMeta().getDisplayName().contains("Kriegs Dreizack")){
- return;
- }
- } catch (Exception e){
- // nothing happens
- }
- }
-
- // Gives player needed tools for war
- event.getPlayer().getInventory().addItem(Items.trident());
-
- // messages the player about ongoing round
- event.getPlayer().sendMessage(ChatColor.AQUA + "Steev's Trident War: " + "Achtung hier herscht grade krieg");
-
- // Add player to the game
- plugin.playerDataConfig.set( event.getPlayer().getUniqueId() + ".life", 4 );
- plugin.playerDataConfig.set( event.getPlayer().getUniqueId() + ".name", event.getPlayer().getDisplayName());
- plugin.saveplayerdata();
- } else {
- for(ItemStack is : event.getPlayer().getInventory().getContents()){
- try {
- if(is.getItemMeta() != null){
- if(is.getItemMeta().getDisplayName().contains("Kriegs Dreizack")){
- // System.out.println( is.getItemMeta().getDisplayName().contains("Kriegs Dreizack"));
- event.getPlayer().getInventory().remove(is);
- }
- }
- } catch (Exception e){
- // this wont be catched
- }
- }
- }
- }
-
- @EventHandler
- public void onPlayerLeave(PlayerQuitEvent event){
- if(plugin.eventActive) {
- // stops war when less then 2 players are online
- if(Bukkit.getServer().getOnlinePlayers().size() < 2){
- warcontroller.StopTridentWar(plugin);
-
- // Message and teleport everyone if not
- for(Player p : Bukkit.getServer().getOnlinePlayers()){
- if(plugin.playerDataConfig.getString(p.getUniqueId() + ".name") != null){
- p.sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " Ein Trident War beginnt!");
- p.sendTitle(ChatColor.RED + "Abgebrochen!", ChatColor.RED + "Zu wenig Spieler.", 1, 20, 1);
-
- // Teleports players to Spawn
- if(plugin.playerDataConfig.get("endLoc") != null){
- p.teleport(((Location) plugin.playerDataConfig.get("endLoc")));
- }
- }
- }
- }
- // Removes player from game
- UUID uuid = event.getPlayer().getUniqueId();
- plugin.playerDataConfig.set( "" + uuid, null);
- plugin.saveplayerdata();
- }else{
- return;
- }
- }
-}
diff --git a/src/de/steev/tridentwar/events/itemDrop.java b/src/de/steev/tridentwar/events/itemDrop.java
deleted file mode 100644
index c172eee..0000000
--- a/src/de/steev/tridentwar/events/itemDrop.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.steev.tridentwar.events;
-
-import de.steev.tridentwar.main;
-import org.bukkit.Material;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.entity.PlayerDeathEvent;
-import org.bukkit.event.player.PlayerDropItemEvent;
-import org.bukkit.inventory.ItemStack;
-
-public class itemDrop implements Listener {
- private main plugin;
-
- public itemDrop(main plugin){
- this.plugin = plugin;
- }
-
- // deletes trident from player drops
- @EventHandler
- public void onItemDrop(PlayerDeathEvent event){
- for(ItemStack item : event.getDrops()){
- try {
- if(item.getItemMeta().getDisplayName() == "Kriegs Dreizack"){
- item.setType(Material.AIR);
- }
- } catch (Exception e){
- // Nothing gets handled here
- }
- }
-
- }
-
- // Stops players from droping the war trident
- @EventHandler
- public void onItemDrop(PlayerDropItemEvent event){
- if(plugin.eventActive){
- if(plugin.playerDataConfig.get(event.getPlayer().getUniqueId() + ".name") != null){
- event.setCancelled(true);
- } else {
- return;
- }
- }
- }
-}
diff --git a/src/de/steev/tridentwar/events/onHit.java b/src/de/steev/tridentwar/events/onHit.java
deleted file mode 100644
index 4a967c2..0000000
--- a/src/de/steev/tridentwar/events/onHit.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package de.steev.tridentwar.events;
-
-import de.steev.tridentwar.data.Items;
-import de.steev.tridentwar.main;
-import de.steev.tridentwar.warcontroller;
-import net.md_5.bungee.api.ChatMessageType;
-import net.md_5.bungee.api.chat.TextComponent;
-import org.bukkit.*;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Player;
-import org.bukkit.entity.Trident;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.entity.ProjectileHitEvent;
-import org.bukkit.inventory.ItemStack;
-
-import java.util.UUID;
-
-public class onHit implements Listener {
- private main plugin;
- public onHit(main plugin){
- this.plugin = plugin;
- }
-
- @EventHandler
- public void onTridentHit(ProjectileHitEvent event){
- if(plugin.eventActive){
- try {
- if(event.getEntity().getShooter() instanceof Player){
- if(event.getEntityType() == EntityType.TRIDENT){
- if(event.getHitEntity() instanceof Player){
-
- if(plugin.playerDataConfig.getString(((Player)event.getHitEntity()).getUniqueId() + ".life") != null){
-
- UUID uuid = ((Player)event.getHitEntity()).getUniqueId();
- int life = plugin.playerDataConfig.getInt(uuid + ".life") - 1;
-
- // Detects when trident hits a not player block
- event.getEntity().remove();
-
- // Gives Player a Trident
- ((Player) event.getEntity().getShooter()).getInventory().addItem(Items.trident());
-
- // play a "Ding" sound on the attackers side at hit
- if(life == 4) {
- ((Player)event.getEntity().getShooter()).playSound(((Player)event.getEntity().getShooter()).getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1f, 0.5f);
- } else if(life == 3) {
- ((Player)event.getEntity().getShooter()).playSound(((Player)event.getEntity().getShooter()).getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1f, 1f);
- } else if(life == 2) {
- ((Player)event.getEntity().getShooter()).playSound(((Player)event.getEntity().getShooter()).getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1f, 1.5f);
- } else if(life == 1) {
- ((Player)event.getEntity().getShooter()).playSound(((Player)event.getEntity().getShooter()).getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1f, 2f);
- }
-
- // Runs sound when a player gets hit
- ((Player)event.getHitEntity()).playSound(((Player)event.getHitEntity()).getLocation(), Sound.ENTITY_PLAYER_DEATH, 1f, 1f);
-
- // Subtracts life and spams the chat with debug messages
- plugin.playerDataConfig.set( uuid + ".life", life);
- ((Player)event.getHitEntity()).sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " du wurdest getroffen und hast noch: " + ChatColor.BOLD + life + ChatColor.RESET + ChatColor.RED + " Leben");
- if(life == 4) {
- ((Player)event.getHitEntity()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.GREEN + "Leben: " + life));
- } else if(life < 1) {
- ((Player)event.getHitEntity()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.YELLOW + "Leben: " + life));
- } else if(life <= 1) {
- ((Player)event.getHitEntity()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.RED + "Leben: " + life));
- }
-
- plugin.saveplayerdata();
-
- // Handles Death
- if( life == 0){
- // Deletes player from Database
- plugin.playerDataConfig.set(uuid.toString(), null);
- plugin.saveplayerdata();
-
- // Messages Player about Death
- ((Player)event.getHitEntity()).playSound(((Player)event.getHitEntity()).getLocation(), Sound.ENTITY_ENDER_DRAGON_GROWL, 1f, 1f);
- ((Player)event.getHitEntity()).sendTitle(ChatColor.RED + "Ausgeschieden!", ChatColor.RED + "Du bist aus dem Trident War ausgeschieden", 1, 20, 1);
-
- // Deletes trident of people who died
- for(Trident t : ((Player)event.getHitEntity()).getWorld().getEntitiesByClass(Trident.class)){
- for(String pd : plugin.playerDataConfig.getKeys(false)) {
- if(((Player)t.getShooter()).getDisplayName() == plugin.playerDataConfig.getString(pd + ".name")){
- return;
- }
- }
- t.remove();
- }
-
- // Checks if only one is alive
- Bukkit.getLogger().info(ChatColor.GRAY + "[" + ChatColor.YELLOW + ChatColor.BOLD + "DEBUG" + ChatColor.RESET + ChatColor.GRAY + "]: is alive: " + plugin.playerDataConfig.getKeys(false).size());
- if(plugin.playerDataConfig.getKeys(false).size() <= 1){
-
- if(plugin.playerDataConfig.getKeys(false).size() > 0){
- for(String pd : plugin.playerDataConfig.getKeys(false)) {
- for (Player p : Bukkit.getOnlinePlayers()) {
-
- // Message players about the winner
- p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_YES, 1f, 1f);
- p.sendTitle(ChatColor.GREEN + "ENDE!",ChatColor.GOLD + plugin.playerDataConfig.getString(pd + ".name") +" Hat den Trident War gewonnen!");
- }
-
- // for security loop all players once more and remove all tridents with meeting criteria
- for(ItemStack is : Bukkit.getServer().getPlayer(plugin.playerDataConfig.getString(pd + ".name")).getInventory()) {
- try {
- if(is.getItemMeta().getDisplayName().contains("Kriegs Dreizack")){
- Bukkit.getServer().getPlayer(plugin.playerDataConfig.getString(pd + ".name")).getInventory().remove(is);
- }
- } catch (Exception e){
- // nothing happens
- }
- }
-
- // Remove trident entity
- for(Trident t : ((Player)event.getHitEntity()).getWorld().getEntitiesByClass(Trident.class)){
- t.remove();
- }
- }
-
- // TODO: make endlocation lobby porting
-
- warcontroller.StopTridentWar(plugin);
- } else {
- ((Player)event.getHitEntity()).sendMessage(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.RED + " es gibt keinen Sieger!");
- warcontroller.StopTridentWar(plugin);
- }
- }
-
- // Sends Player to Spawn
- if(plugin.config.get("spectator") != "unset"){ ((Player)event.getHitEntity()).teleport(((Location)plugin.config.get("spectator"))); }
-
- }
-
- } else {
- event.setCancelled(true);
- return;
- }
-
- } else {
- // Detects when trident hits a not player block
- event.getEntity().remove();
-
- // Gives Player a Trident
- ((Player) event.getEntity().getShooter()).getInventory().addItem(Items.trident());
- }
-
- }
- }
- } catch (Exception e){
- // Nothing to print here
- // this would only happen when no entity should be an entity
- }
-
- // disables damage
- event.setCancelled(true);
- } else {
- return;
- }
- }
-}
diff --git a/src/de/steev/tridentwar/events/onProjectileLaunch.java b/src/de/steev/tridentwar/events/onProjectileLaunch.java
deleted file mode 100644
index 4426287..0000000
--- a/src/de/steev/tridentwar/events/onProjectileLaunch.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package de.steev.tridentwar.events;
-
-import de.steev.tridentwar.data.Items;
-import de.steev.tridentwar.main;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.entity.ProjectileLaunchEvent;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.scheduler.BukkitTask;
-
-import java.util.HashMap;
-import java.util.UUID;
-
-public class onProjectileLaunch implements Listener {
- private main plugin;
- public HashMap tasks = new HashMap();
-
- public onProjectileLaunch(main plugin){
- this.plugin = plugin;
- }
-
- @EventHandler
- public void onProjectileLaunch(ProjectileLaunchEvent event){
- try {
- tasks.get(((Player)event.getEntity().getShooter()).getUniqueId()).cancel();
- } catch (Exception e){
- // eigentlich sollte hier jetzt error handling passieren, aber nö.
- }
- BukkitTask task = Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
- @Override
- public void run() {
- if(plugin.eventActive){
- for(ItemStack is : ((Player)event.getEntity().getShooter()).getInventory()) {
- try {
- if(is.getItemMeta().getDisplayName().contains("Kriegs Dreizack")){
- return;
- }
- } catch (Exception e){
- // nothing happens
- }
- }
-
- // When no trident was found give a new trident to the player
- ((Player)event.getEntity().getShooter()).getInventory().addItem(Items.trident());
- }
- }
- },200);
- tasks.put(((Player)event.getEntity().getShooter()).getUniqueId(), task);
- }
-}
diff --git a/src/de/steev/tridentwar/events/playerRespawn.java b/src/de/steev/tridentwar/events/playerRespawn.java
deleted file mode 100644
index ca81629..0000000
--- a/src/de/steev/tridentwar/events/playerRespawn.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package de.steev.tridentwar.events;
-
-import de.steev.tridentwar.data.Items;
-import de.steev.tridentwar.main;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.player.PlayerRespawnEvent;
-import org.bukkit.inventory.ItemStack;
-
-public class playerRespawn implements Listener {
-
- private main plugin;
- public playerRespawn(main plugin) {
- this.plugin = plugin;
- }
-
- @EventHandler
- public void onPlayerRespawn(PlayerRespawnEvent event){
- Player p = event.getPlayer();
-
- for(String pd : plugin.playerDataConfig.getKeys(false)){
- if(plugin.playerDataConfig.getString(event.getPlayer().getUniqueId() + ".name") == p.getDisplayName()){
-
- for(ItemStack is : p.getInventory()) {
- try {
- if(is.getItemMeta().getDisplayName().contains("Kriegs Dreizack")){
- return;
- }
- } catch (Exception e){
- // nothing happens
- }
- }
-
- p.getInventory().addItem(Items.trident());
-
- return;
- }
- }
- // when a player respawns remove trident from inventory
- for(ItemStack is : p.getInventory()) {
- try {
- if(is.getItemMeta().getDisplayName().contains("Kriegs Dreizack")){
- p.getInventory().remove(is);
- }
- } catch (Exception e){
- // nothing happens
- }
- }
- }
-}
diff --git a/src/de/steev/tridentwar/main.java b/src/de/steev/tridentwar/main.java
deleted file mode 100644
index d7b9ccc..0000000
--- a/src/de/steev/tridentwar/main.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package de.steev.tridentwar;
-
-import de.steev.tridentwar.events.*;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.bukkit.event.Listener;
-import org.bukkit.plugin.java.JavaPlugin;
-
-import java.io.File;
-import java.io.IOException;
-
-public class main extends JavaPlugin implements Listener {
-
- public static boolean eventActive = false;
- public FileConfiguration config = this.getConfig();
- public static int alive = 0;
-
- // Custom Playerdata File
- public static File playerdata;
- public static FileConfiguration playerDataConfig;
- public static final String playerdatafilename = "game.yml";
-
- public void onEnable(){
- this.getLogger().info(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.YELLOW + " Plugin lädt");
-
- // Registers Events
- this.getLogger().info(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.YELLOW + " Registriere Events");
- this.getServer().getPluginManager().registerEvents(this, this);
- this.getServer().getPluginManager().registerEvents(new onHit(this), this);
- this.getServer().getPluginManager().registerEvents(new itemDrop(this), this);
- this.getServer().getPluginManager().registerEvents(new onProjectileLaunch(this), this);
- this.getServer().getPluginManager().registerEvents(new PlayerConnectionEvents(this), this);
- this.getServer().getPluginManager().registerEvents(new playerRespawn(this), this);
-
-
- // Registers Commands
- this.getLogger().info(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.YELLOW + " Lade Befehle");
- this.getCommand("tw").setExecutor(new command(this));
-
- /*
- * ====================================================
- * # Deletes old game.yml from previus plugin session #
- * ====================================================
- */
- // Writes a file with playername, uuid and playermods
- playerdata = new File(this.getDataFolder(), playerdatafilename);
-
- try{
- // Check for already existing file
- if(playerdata.exists()){
- // Delete the file if it does exist
- playerdata.delete();
- this.getLogger().info(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.YELLOW + " game.yml wird neu erstellt");
- }
- }catch (Exception e){
- this.getLogger().warning("Error while creating File\n===================================================\n" + e);
- }
-
- playerDataConfig = YamlConfiguration.loadConfiguration(playerdata);
- saveplayerdata();
- saveDefaultConfig();
- }
-
- public void onDisable(){
- this.getLogger().info(ChatColor.AQUA + "Steev's Trident War: " + ChatColor.YELLOW + " Plugin fährt runter");
- }
-
- /*
- * ================================
- * # File Handler #
- * ================================
- */
- /** Handles Player data */
- public static void saveplayerdata(){
- try {
- playerDataConfig.save(playerdata);
- } catch (IOException e) {
- Bukkit.getLogger().warning("Unable to save " + playerdatafilename); // shouldn't really happen, but save throws the exception
- }
- }
-}
-
diff --git a/src/de/steev/tridentwar/warcontroller.java b/src/de/steev/tridentwar/warcontroller.java
deleted file mode 100644
index 21475bc..0000000
--- a/src/de/steev/tridentwar/warcontroller.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package de.steev.tridentwar;
-
-import de.steev.tridentwar.data.Items;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-
-public class warcontroller {
- /** Handles Starting the Trident War */
- public static void StartTridentWar(main plugin) {
- // TODO: set everyone in adventure
- plugin.alive = Bukkit.getOnlinePlayers().size();
- // TODO: Create Bossbar with timer in it
- for (Player p : Bukkit.getOnlinePlayers()) {
- p.getInventory().addItem(Items.trident());
- plugin.playerDataConfig.set(p.getUniqueId() + ".life", 4);
- plugin.playerDataConfig.set(p.getUniqueId() + ".name", p.getDisplayName());
- }
- plugin.saveplayerdata();
- }
-
- /** Handles stoping a trident war */
- public static void StopTridentWar(main plugin) {
-
- // TODO set everyone to default gamemode
- plugin.alive = 0;
- plugin.eventActive = false;
-
- for (Player p : Bukkit.getOnlinePlayers()) {
- for(ItemStack is : p.getInventory().getContents()){
- try {
- if(is.getItemMeta() != null){
- if(is.getItemMeta().getDisplayName().contains("Kriegs Dreizack")){
- p.getInventory().remove(is);
- }
- }
- } catch (Exception e){
- // this wont be catched
- }
- }
-
- plugin.playerDataConfig.set(p.getUniqueId() + "", null);
- }
- plugin.saveplayerdata();
- }
-}
diff --git a/src/main/java/de/steev/Tridentwar/Tridentwar.java b/src/main/java/de/steev/Tridentwar/Tridentwar.java
new file mode 100644
index 0000000..a9184b8
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/Tridentwar.java
@@ -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();
+ }
+}
diff --git a/src/main/java/de/steev/Tridentwar/commands/TridentwarCommand.java b/src/main/java/de/steev/Tridentwar/commands/TridentwarCommand.java
new file mode 100644
index 0000000..1cfb345
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/commands/TridentwarCommand.java
@@ -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;
+ }
+}
diff --git a/src/main/java/de/steev/Tridentwar/listeners/ProjectileHitListener.java b/src/main/java/de/steev/Tridentwar/listeners/ProjectileHitListener.java
new file mode 100644
index 0000000..44a1cd7
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/listeners/ProjectileHitListener.java
@@ -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));
+ }
+}
diff --git a/src/main/java/de/steev/Tridentwar/listeners/ProjectileLaunchListener.java b/src/main/java/de/steev/Tridentwar/listeners/ProjectileLaunchListener.java
new file mode 100644
index 0000000..99967af
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/listeners/ProjectileLaunchListener.java
@@ -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);
+ }
+}
diff --git a/src/main/java/de/steev/Tridentwar/manager/GameManager.java b/src/main/java/de/steev/Tridentwar/manager/GameManager.java
new file mode 100644
index 0000000..9fefac3
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/manager/GameManager.java
@@ -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; }
+}
diff --git a/src/main/java/de/steev/Tridentwar/manager/GameState.java b/src/main/java/de/steev/Tridentwar/manager/GameState.java
new file mode 100644
index 0000000..0f36861
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/manager/GameState.java
@@ -0,0 +1,5 @@
+package de.steev.Tridentwar.manager;
+
+public enum GameState {
+ LOBBY, STARTING, ACTIVE, WON, RESTARTING, STOPPING;
+}
diff --git a/src/main/java/de/steev/Tridentwar/manager/PlayerManager.java b/src/main/java/de/steev/Tridentwar/manager/PlayerManager.java
new file mode 100644
index 0000000..964aa59
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/manager/PlayerManager.java
@@ -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));
+ }
+}
diff --git a/src/main/java/de/steev/Tridentwar/manager/TridentManager.java b/src/main/java/de/steev/Tridentwar/manager/TridentManager.java
new file mode 100644
index 0000000..cbb1c8c
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/manager/TridentManager.java
@@ -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 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); }
+}
diff --git a/src/main/java/de/steev/Tridentwar/tasks/GameStartCountdownTask.java b/src/main/java/de/steev/Tridentwar/tasks/GameStartCountdownTask.java
new file mode 100644
index 0000000..9b32b3a
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/tasks/GameStartCountdownTask.java
@@ -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!");
+ }
+}
diff --git a/src/main/java/de/steev/Tridentwar/tasks/TridentResetTask.java b/src/main/java/de/steev/Tridentwar/tasks/TridentResetTask.java
new file mode 100644
index 0000000..5bce939
--- /dev/null
+++ b/src/main/java/de/steev/Tridentwar/tasks/TridentResetTask.java
@@ -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));
+ }
+}