diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index cf12048..b899675 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -6,11 +6,21 @@
+
+
+
+
+
+
+
+
+
+
@@ -31,5 +41,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
index 42e8c39..a972847 100644
--- a/dependency-reduced-pom.xml
+++ b/dependency-reduced-pom.xml
@@ -45,12 +45,32 @@
sonatype
https://oss.sonatype.org/content/groups/public/
+
+ enginehub
+ https://maven.enginehub.org/repo/
+
+
+ multiverse-multiverse-releases
+ https://repo.onarandombox.com/multiverse-releases
+
io.papermc.paper
paper-api
- 1.21-R0.1-SNAPSHOT
+ 1.21.1-R0.1-SNAPSHOT
+ provided
+
+
+ com.sk89q.worldedit
+ worldedit-bukkit
+ 7.3.9
+ provided
+
+
+ com.fastasyncworldedit
+ FastAsyncWorldEdit-Bukkit
+ 2.13.0
provided
diff --git a/pom.xml b/pom.xml
index f04e95b..becf5f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,6 +63,10 @@
enginehub
https://maven.enginehub.org/repo/
+
+ multiverse-multiverse-releases
+ https://repo.onarandombox.com/multiverse-releases
+
@@ -86,5 +90,12 @@
2.13.0
provided
+
+
+ org.mvplugins.multiverse.core
+ multiverse-core
+ 5.1.2
+ provided
+
diff --git a/src/main/java/lnmpro/Commands/AcceptDuelCommand.java b/src/main/java/lnmpro/Commands/AcceptDuelCommand.java
index 9caba24..6463e24 100644
--- a/src/main/java/lnmpro/Commands/AcceptDuelCommand.java
+++ b/src/main/java/lnmpro/Commands/AcceptDuelCommand.java
@@ -104,14 +104,14 @@ public class AcceptDuelCommand implements CommandExecutor, TabCompleter {
survival = true;
}
- World world = Bukkit.getWorld("world");
+ World world = Bukkit.getWorld("arenas");
int y = 0;
int z;
if (plugin.usedArenas.isEmpty()) {
z = -2000;
} else {
- z = min(plugin.usedArenas) - 1;
+ z = min(plugin.usedArenas) - 100;
}
plugin.usedArenas.add(z);
@@ -144,8 +144,6 @@ public class AcceptDuelCommand implements CommandExecutor, TabCompleter {
player.setMetadata("ArenaLoc", new FixedMetadataValue(plugin, new Location(world, x, y, z)));
enemy.setMetadata("ArenaLoc", new FixedMetadataValue(plugin, new Location(world, x, y, z)));
-
-
player.setMetadata("Frozen", new FixedMetadataValue(plugin, true));
enemy.setMetadata("Frozen", new FixedMetadataValue(plugin, true));
diff --git a/src/main/java/lnmpro/Commands/LeaveCommand.java b/src/main/java/lnmpro/Commands/LeaveCommand.java
new file mode 100644
index 0000000..4572c12
--- /dev/null
+++ b/src/main/java/lnmpro/Commands/LeaveCommand.java
@@ -0,0 +1,37 @@
+package lnmpro.Commands;
+
+import lnmpro.Main;
+import org.bukkit.Bukkit;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabCompleter;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+import java.util.UUID;
+
+public class LeaveCommand implements CommandExecutor, TabCompleter {
+ private final Main plugin;
+
+ public LeaveCommand(Main plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
+ if (sender instanceof Player player) {
+ if (player.hasMetadata("DuelingWith")) {
+ player.setHealth(0);
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
+ return List.of();
+ }
+}
diff --git a/src/main/java/lnmpro/Commands/ResetArenasCommand.java b/src/main/java/lnmpro/Commands/ResetArenasCommand.java
new file mode 100644
index 0000000..3a4fd86
--- /dev/null
+++ b/src/main/java/lnmpro/Commands/ResetArenasCommand.java
@@ -0,0 +1,34 @@
+package lnmpro.Commands;
+
+import lnmpro.Main;
+import lnmpro.Utils.WorldReset;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabCompleter;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ResetArenasCommand implements CommandExecutor, TabCompleter {
+ private final Main plugin;
+
+ public ResetArenasCommand(Main plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
+ WorldReset worldReset = new WorldReset(plugin);
+ worldReset.recreateArenaWorld();
+ plugin.usedArenas = new ArrayList<>();
+ return true;
+ }
+
+ @Override
+ public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
+ return List.of();
+ }
+}
diff --git a/src/main/java/lnmpro/Commands/SpectateCommand.java b/src/main/java/lnmpro/Commands/SpectateCommand.java
new file mode 100644
index 0000000..f54cc78
--- /dev/null
+++ b/src/main/java/lnmpro/Commands/SpectateCommand.java
@@ -0,0 +1,44 @@
+package lnmpro.Commands;
+
+import org.bukkit.Bukkit;
+import org.bukkit.GameMode;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class SpectateCommand implements CommandExecutor {
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("nem vagy jatekos ez nem cica");
+ return true;
+ }
+
+ Player player = (Player) sender;
+
+ if (args.length != 1) {
+ player.sendMessage("§7[§9§lInsane§e§lDuels§7] §7» §cKell egy játékosnév is dumbass");
+ return true;
+ }
+
+ Player target = Bukkit.getPlayer(args[0]);
+ if (target == null || !target.isOnline()) {
+ player.sendMessage("§7[§9§lInsane§e§lDuels§7] §7» §cA játékos jelenleg nem elérhető");
+ return true;
+ }
+
+ if (!target.hasMetadata("DuelingWith") || target.getMetadata("DuelingWith").isEmpty()) {
+ player.sendMessage("§7[§9§lInsane§e§lDuels§7] §7» §cEz a játékos jelenleg nincs párbajban");
+ return true;
+ }
+
+ player.setGameMode(GameMode.SPECTATOR);
+ player.teleport(target);
+ player.sendMessage("§7[§9§lInsane§e§lDuels§7] §7» §aMostantól §e" + target.getName() + "§a párbaját figyeled!");
+
+ return true;
+ }
+}
diff --git a/src/main/java/lnmpro/Listeners/DuelEndListener.java b/src/main/java/lnmpro/Listeners/DuelEndListener.java
index b822606..23ad34e 100644
--- a/src/main/java/lnmpro/Listeners/DuelEndListener.java
+++ b/src/main/java/lnmpro/Listeners/DuelEndListener.java
@@ -10,7 +10,6 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import java.time.Duration;
-import java.util.List;
import java.util.UUID;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.title.Title;
@@ -74,16 +73,8 @@ public class DuelEndListener implements Listener {
Bukkit.getScheduler().runTaskLater(plugin, () -> {
try {
- Location spawn = new Location(Bukkit.getWorld("world"), 0, 3, 0, 0, 0);
- player.setGameMode(GameMode.ADVENTURE);
- enemy.setGameMode(GameMode.ADVENTURE);
- player.teleport(spawn);
- enemy.teleport(spawn);
-
- Location arenaLoc = (Location) player.getMetadata("ArenaLoc").get(0).value();
- Location loc1 = new Location(arenaLoc.getWorld(), arenaLoc.getX() - 36, arenaLoc.getY() - 4, arenaLoc.getZ() - 30);
- Location loc2 = new Location(arenaLoc.getWorld(), arenaLoc.getX() + 36, arenaLoc.getY() + 11, arenaLoc.getZ() + 30);
- schematic.removeSchematic(arenaLoc.getWorld(), loc1, loc2);
+ plugin.removePlayerFromDuel(player);
+ plugin.removePlayerFromDuel(enemy);
} catch (Exception exception) {
exception.printStackTrace();
}
diff --git a/src/main/java/lnmpro/Listeners/PlayerLeaveListener.java b/src/main/java/lnmpro/Listeners/PlayerLeaveListener.java
new file mode 100644
index 0000000..8fcfcc2
--- /dev/null
+++ b/src/main/java/lnmpro/Listeners/PlayerLeaveListener.java
@@ -0,0 +1,31 @@
+package lnmpro.Listeners;
+
+import lnmpro.Main;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Listener;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.player.PlayerQuitEvent;
+import org.bukkit.metadata.MetadataValue;
+
+public class PlayerLeaveListener implements Listener {
+ private final Main plugin;
+
+ public PlayerLeaveListener(Main plugin) {
+ this.plugin = plugin;
+ }
+ @EventHandler
+ public void onLeave(PlayerQuitEvent e) {
+ Player player = e.getPlayer();
+ for (String key : plugin.metadatas) {
+ for (MetadataValue value : player.getMetadata(key)) {
+ if (value.getOwningPlugin() == plugin) {
+ player.removeMetadata(key, plugin);
+ break;
+ }
+ }
+ }
+ if (player.hasMetadata("DuelingWith")) {
+ player.setHealth(0);
+ }
+ }
+}
diff --git a/src/main/java/lnmpro/Listeners/SpectatorListener.java b/src/main/java/lnmpro/Listeners/SpectatorListener.java
new file mode 100644
index 0000000..de68f5c
--- /dev/null
+++ b/src/main/java/lnmpro/Listeners/SpectatorListener.java
@@ -0,0 +1,17 @@
+package lnmpro.Listeners;
+
+import org.bukkit.GameMode;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerTeleportEvent;
+import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
+
+public class SpectatorListener implements Listener {
+
+ @EventHandler
+ public void onSpectatorTeleport(PlayerTeleportEvent event) {
+ if (event.getPlayer().getGameMode() == GameMode.SPECTATOR && event.getCause() == TeleportCause.SPECTATE) {
+ event.setCancelled(true);
+ }
+ }
+}
diff --git a/src/main/java/lnmpro/Main.java b/src/main/java/lnmpro/Main.java
index b52104f..7f88b58 100644
--- a/src/main/java/lnmpro/Main.java
+++ b/src/main/java/lnmpro/Main.java
@@ -1,17 +1,49 @@
package lnmpro;
+import lnmpro.Utils.WorldReset;
+import org.bukkit.Bukkit;
+import org.bukkit.GameMode;
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
+import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.java.JavaPlugin;
import lnmpro.Commands.*;
import lnmpro.Listeners.*;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
import java.util.ArrayList;
import java.util.List;
public final class Main extends JavaPlugin {
+ public final String[] metadatas = {"DuelingWith", "ArenaLoc", "Frozen", "DuelRequest", "DueledBy", "DueledWithGamemode"};
+
private static Main instance;
+ public void removePlayerFromDuel(Player player) {
+ Location spawn = new Location(Bukkit.getWorld("world"), 0, 3, 0, 0, 0);
+ for (PotionEffect potionEffect : player.getActivePotionEffects()) {
+ player.removePotionEffect(potionEffect.getType());
+ }
+ player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 20, 1), true);
+ player.setHealth(20D);
+ player.setFoodLevel(20);
+ player.setSaturation(5);
+ player.setGameMode(GameMode.ADVENTURE);
+ player.teleport(spawn);
+ player.getInventory().clear();
+ for (String key : metadatas) {
+ for (MetadataValue value : player.getMetadata(key)) {
+ if (value.getOwningPlugin() == this) {
+ player.removeMetadata(key, this);
+ break;
+ }
+ }
+ }
+ }
+
@Override
public void onEnable() {
getConfig().options().copyDefaults(true);
@@ -22,15 +54,37 @@ public final class Main extends JavaPlugin {
getCommand("acceptduel").setExecutor(new AcceptDuelCommand(this));
getCommand("denyduel").setExecutor(new DenyDuelCommand(this));
getCommand("editkit").setExecutor(new EditKitCommand(this));
+ getCommand("resetarenas").setExecutor(new ResetArenasCommand(this));
+ getCommand("spectate").setExecutor(new SpectateCommand());
+ getCommand("leave").setExecutor(new LeaveCommand(this));
getServer().getPluginManager().registerEvents(new DuelRequestListener(this), this);
getServer().getPluginManager().registerEvents(new KitListener(this), this);
getServer().getPluginManager().registerEvents(new DuelEndListener(this), this);
getServer().getPluginManager().registerEvents(new FreezeListener(), this);
+ getServer().getPluginManager().registerEvents(new PlayerLeaveListener(this), this);
+ getServer().getPluginManager().registerEvents(new SpectatorListener(), this);
+
+ WorldReset worldReset = new WorldReset(this);
+ worldReset.recreateArenaWorld();
instance = this;
}
+ @Override
+ public void onDisable() {
+ for (Player player : Bukkit.getOnlinePlayers()) {
+ for (String key : metadatas) {
+ for (MetadataValue value : player.getMetadata(key)) {
+ if (value.getOwningPlugin() == this) {
+ player.removeMetadata(key, this);
+ break;
+ }
+ }
+ }
+ }
+ }
+
public static Main getInstance() {
return instance;
}
diff --git a/src/main/java/lnmpro/Utils/WorldReset.java b/src/main/java/lnmpro/Utils/WorldReset.java
new file mode 100644
index 0000000..97debe7
--- /dev/null
+++ b/src/main/java/lnmpro/Utils/WorldReset.java
@@ -0,0 +1,134 @@
+package lnmpro.Utils;
+
+import org.bukkit.*;
+import org.bukkit.metadata.MetadataValue;
+import org.bukkit.plugin.Plugin;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
+
+import java.io.File;
+
+public class WorldReset {
+ private Plugin plugin;
+
+ public WorldReset(Plugin plugin) {
+ this.plugin = plugin;
+ }
+
+ public final String[] metadatas = {"DuelingWith", "ArenaLoc", "Frozen", "DuelRequest", "DueledBy", "DueledWithGamemode"};
+
+ public boolean recreateArenaWorld() {
+ String worldName = "arenas";
+
+ try {
+ removeArenaWorld(worldName);
+
+ Bukkit.getScheduler().runTaskLater(plugin, () -> {
+ createArenaWorld(worldName);
+ }, 20L);
+
+ return true;
+
+ } catch (Exception e) {
+ plugin.getLogger().severe("Error recreating arena world: " + e.getMessage());
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ private boolean removeArenaWorld(String worldName) {
+ try {
+ World world = Bukkit.getWorld(worldName);
+
+ if (world != null) {
+
+ world.getPlayers().forEach(player -> {
+ Location spawn = new Location(Bukkit.getWorld("world"), 0, 3, 0, 0, 0);
+ for (PotionEffect potionEffect : player.getActivePotionEffects()) {
+ player.removePotionEffect(potionEffect.getType());
+ }
+ player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 20, 1), true);
+ player.setHealth(20D);
+ player.setFoodLevel(20);
+ player.setSaturation(5);
+ player.setGameMode(GameMode.ADVENTURE);
+ player.teleport(spawn);
+ for (String key : metadatas) {
+ for (MetadataValue value : player.getMetadata(key)) {
+ if (value.getOwningPlugin() == plugin) {
+ player.removeMetadata(key, plugin);
+ break;
+ }
+ }
+ }
+ player.sendMessage("§cszia resetel a map szoval tunes");
+ });
+
+ boolean unloaded = Bukkit.unloadWorld(world, false);
+
+ if (unloaded) {
+ File worldFolder = new File(Bukkit.getWorldContainer(), worldName);
+ if (worldFolder.exists()) {
+ deleteDirectory(worldFolder);
+ }
+
+ return true;
+ } else {
+ plugin.getLogger().warning("Failed to unload arena world.");
+ return false;
+ }
+ } else {
+ return true;
+ }
+ } catch (Exception e) {
+ plugin.getLogger().severe("Error removing arena world: " + e.getMessage());
+ return false;
+ }
+ }
+
+ private boolean createArenaWorld(String worldName) {
+ try {
+ WorldCreator creator = new WorldCreator(worldName)
+ .type(WorldType.FLAT)
+ .environment(World.Environment.NORMAL)
+ .generateStructures(false)
+ .generatorSettings("{\"layers\":[{\"block\":\"air\",\"height\":1}],\"biome\":\"plains\"}");
+
+ World world = creator.createWorld();
+
+ if (world != null) {
+ world.setSpawnFlags(false, false);
+ world.setTime(6000);
+ world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
+ world.setStorm(false);
+ world.setThundering(false);
+ world.setGameRule(GameRule.DO_WEATHER_CYCLE, false);
+ return true;
+ } else {
+ plugin.getLogger().severe("Failed to create arena world!");
+ return false;
+ }
+
+ } catch (Exception e) {
+ plugin.getLogger().severe("Error creating arena world: " + e.getMessage());
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ private boolean deleteDirectory(File directory) {
+ if (directory.exists()) {
+ File[] files = directory.listFiles();
+ if (files != null) {
+ for (File file : files) {
+ if (file.isDirectory()) {
+ deleteDirectory(file);
+ } else {
+ file.delete();
+ }
+ }
+ }
+ }
+ return directory.delete();
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index eeaac16..56fe631 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -7,4 +7,8 @@ commands:
duel:
acceptduel:
denyduel:
- editkit:
\ No newline at end of file
+ editkit:
+ resetarenas:
+ permission: insaneduels.resetarenas
+ spectate:
+ leave:
\ No newline at end of file
diff --git a/target/InsaneDuels-1.0-SNAPSHOT.jar b/target/InsaneDuels-1.0-SNAPSHOT.jar
index 6824c15..968f6bd 100644
Binary files a/target/InsaneDuels-1.0-SNAPSHOT.jar and b/target/InsaneDuels-1.0-SNAPSHOT.jar differ
diff --git a/target/classes/lnmpro/Commands/AcceptDuelCommand$1.class b/target/classes/lnmpro/Commands/AcceptDuelCommand$1.class
index 93a6bb5..a1869ac 100644
Binary files a/target/classes/lnmpro/Commands/AcceptDuelCommand$1.class and b/target/classes/lnmpro/Commands/AcceptDuelCommand$1.class differ
diff --git a/target/classes/lnmpro/Commands/AcceptDuelCommand.class b/target/classes/lnmpro/Commands/AcceptDuelCommand.class
index 49da4b4..76e5090 100644
Binary files a/target/classes/lnmpro/Commands/AcceptDuelCommand.class and b/target/classes/lnmpro/Commands/AcceptDuelCommand.class differ
diff --git a/target/classes/lnmpro/Commands/ResetArenasCommand.class b/target/classes/lnmpro/Commands/ResetArenasCommand.class
new file mode 100644
index 0000000..87c0c60
Binary files /dev/null and b/target/classes/lnmpro/Commands/ResetArenasCommand.class differ
diff --git a/target/classes/lnmpro/Commands/SpectateCommand.class b/target/classes/lnmpro/Commands/SpectateCommand.class
new file mode 100644
index 0000000..84cb6c3
Binary files /dev/null and b/target/classes/lnmpro/Commands/SpectateCommand.class differ
diff --git a/target/classes/lnmpro/Listeners/DuelEndListener.class b/target/classes/lnmpro/Listeners/DuelEndListener.class
index 3e26272..6b5bf03 100644
Binary files a/target/classes/lnmpro/Listeners/DuelEndListener.class and b/target/classes/lnmpro/Listeners/DuelEndListener.class differ
diff --git a/target/classes/lnmpro/Listeners/PlayerLeaveListener.class b/target/classes/lnmpro/Listeners/PlayerLeaveListener.class
new file mode 100644
index 0000000..255e5b2
Binary files /dev/null and b/target/classes/lnmpro/Listeners/PlayerLeaveListener.class differ
diff --git a/target/classes/lnmpro/Listeners/SpectatorListener.class b/target/classes/lnmpro/Listeners/SpectatorListener.class
new file mode 100644
index 0000000..b32fead
Binary files /dev/null and b/target/classes/lnmpro/Listeners/SpectatorListener.class differ
diff --git a/target/classes/lnmpro/Main.class b/target/classes/lnmpro/Main.class
index fe2d6b6..6da9ca0 100644
Binary files a/target/classes/lnmpro/Main.class and b/target/classes/lnmpro/Main.class differ
diff --git a/target/classes/lnmpro/Utils/WorldReset.class b/target/classes/lnmpro/Utils/WorldReset.class
new file mode 100644
index 0000000..85be435
Binary files /dev/null and b/target/classes/lnmpro/Utils/WorldReset.class differ
diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml
index eeaac16..56fe631 100644
--- a/target/classes/plugin.yml
+++ b/target/classes/plugin.yml
@@ -7,4 +7,8 @@ commands:
duel:
acceptduel:
denyduel:
- editkit:
\ No newline at end of file
+ editkit:
+ resetarenas:
+ permission: insaneduels.resetarenas
+ spectate:
+ leave:
\ No newline at end of file
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index e288228..a9a0976 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,6 +1,12 @@
lnmpro/Listeners/FreezeListener.class
+lnmpro/Listeners/PlayerLeaveListener.class
lnmpro/Commands/AcceptDuelCommand$1.class
+lnmpro/Commands/ResetArenasCommand.class
lnmpro/Commands/DuelCommand.class
lnmpro/Listeners/DuelEndListener.class
+lnmpro/Commands/SpectateCommand.class
lnmpro/Utils/SchematicManager.class
+lnmpro/Utils/WorldReset.class
+lnmpro/Listeners/SpectatorListener.class
+lnmpro/Commands/LeaveCommand.class
lnmpro/Commands/EditKitCommand.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 071410e..7d106ed 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -2,10 +2,16 @@
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/DenyDuelCommand.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/DuelCommand.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/EditKitCommand.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/LeaveCommand.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/ResetArenasCommand.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/SpectateCommand.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Listeners/DuelEndListener.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Listeners/DuelRequestListener.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Listeners/FreezeListener.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Listeners/KitListener.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Listeners/PlayerLeaveListener.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Listeners/SpectatorListener.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Main.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Utils/Kits.java
/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Utils/SchematicManager.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Utils/WorldReset.java
diff --git a/target/original-InsaneDuels-1.0-SNAPSHOT.jar b/target/original-InsaneDuels-1.0-SNAPSHOT.jar
index ab9ba31..364b509 100644
Binary files a/target/original-InsaneDuels-1.0-SNAPSHOT.jar and b/target/original-InsaneDuels-1.0-SNAPSHOT.jar differ