Jelajahi Sumber

Merge pull request #38 from RedstoneFuture/EventListenerReworkV3.2

Reworking EventListener v.3b
Daniel 2 tahun lalu
induk
melakukan
d2d6727ae0

+ 26 - 19
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/EndListener.java

@@ -19,11 +19,10 @@
 package de.butzlabben.missilewars.listener;
 
 import de.butzlabben.missilewars.MessageConfig;
-import de.butzlabben.missilewars.MissileWars;
 import de.butzlabben.missilewars.game.Game;
-import de.butzlabben.missilewars.util.PlayerDataProvider;
 import de.butzlabben.missilewars.wrapper.event.PlayerArenaJoinEvent;
-import org.bukkit.Bukkit;
+import de.butzlabben.missilewars.wrapper.event.PlayerArenaLeaveEvent;
+import de.butzlabben.missilewars.wrapper.player.MWPlayer;
 import org.bukkit.GameMode;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
@@ -42,22 +41,6 @@ public class EndListener extends GameBoundListener {
         super(game);
     }
 
-    @EventHandler
-    public void onJoin(PlayerArenaJoinEvent event) {
-        Game game = event.getGame();
-        if (game != getGame()) return;
-
-        Player p = event.getPlayer();
-        PlayerDataProvider.getInstance().storeInventory(p);
-        p.sendMessage(MessageConfig.getMessage("spectator"));
-
-        Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.teleport(game.getArena().getSpectatorSpawn()), 2);
-
-        Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.setGameMode(GameMode.SPECTATOR), 35);
-        p.setDisplayName("§7" + p.getName() + "§r");
-        game.addPlayer(p);
-    }
-
     @EventHandler(priority = EventPriority.HIGH)
     public void onRespawn(PlayerRespawnEvent event) {
         if (!isInGameWorld(event.getPlayer().getLocation())) return;
@@ -84,4 +67,28 @@ public class EndListener extends GameBoundListener {
 
         if (player.getGameMode() != GameMode.CREATIVE) event.setCancelled(true);
     }
+
+    @EventHandler
+    public void onPlayerArenaJoin(PlayerArenaJoinEvent event) {
+        if (!isInGameWorld(event.getPlayer().getLocation())) return;
+
+        if (getGame().isSpectatorsMax()) {
+            event.setCancelled(true);
+            event.getPlayer().sendMessage(MessageConfig.getMessage("not_enter_arena"));
+            return;
+        }
+
+        Player player = event.getPlayer();
+        getGame().playerJoinInGame(player, true);
+    }
+
+    @EventHandler
+    public void onPlayerArenaLeave(PlayerArenaLeaveEvent event) {
+        if (!isInGameWorld(event.getPlayer().getLocation())) return;
+
+        Player player = event.getPlayer();
+        MWPlayer mwPlayer = event.getGame().getPlayer(player);
+
+        if (mwPlayer != null) getGame().playerLeaveFromGame(mwPlayer);
+    }
 }

+ 58 - 92
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/GameListener.java

@@ -19,10 +19,8 @@
 package de.butzlabben.missilewars.listener;
 
 import de.butzlabben.missilewars.MessageConfig;
-import de.butzlabben.missilewars.MissileWars;
 import de.butzlabben.missilewars.game.Game;
 import de.butzlabben.missilewars.game.GameResult;
-import de.butzlabben.missilewars.util.PlayerDataProvider;
 import de.butzlabben.missilewars.util.version.VersionUtil;
 import de.butzlabben.missilewars.wrapper.abstracts.arena.FallProtectionConfiguration;
 import de.butzlabben.missilewars.wrapper.event.PlayerArenaJoinEvent;
@@ -31,7 +29,6 @@ import de.butzlabben.missilewars.wrapper.game.RespawnGoldBlock;
 import de.butzlabben.missilewars.wrapper.game.Shield;
 import de.butzlabben.missilewars.wrapper.game.Team;
 import de.butzlabben.missilewars.wrapper.player.MWPlayer;
-import org.bukkit.Bukkit;
 import org.bukkit.GameMode;
 import org.bukkit.Location;
 import org.bukkit.entity.EntityType;
@@ -54,8 +51,6 @@ import org.bukkit.event.player.PlayerMoveEvent;
 import org.bukkit.event.player.PlayerRespawnEvent;
 import org.bukkit.inventory.Inventory;
 import org.bukkit.inventory.ItemStack;
-import org.bukkit.scheduler.BukkitTask;
-import org.bukkit.util.Vector;
 
 /**
  * @author Butzlabben
@@ -67,27 +62,6 @@ public class GameListener extends GameBoundListener {
         super(game);
     }
 
-    @EventHandler
-    public void onMove(PlayerMoveEvent event) {
-        if (!isInGameWorld(event.getTo())) return;
-
-        Player p = event.getPlayer();
-        if ((event.getTo().getBlockY() >= getGame().getArena().getMaxHeight()) && (p.getGameMode() == GameMode.SURVIVAL)) {
-            p.teleport(event.getFrom());
-            p.sendMessage(MessageConfig.getMessage("not_higher"));
-        } else if ((event.getTo().getBlockY() <= getGame().getArena().getDeathHeight()) && (p.getGameMode() == GameMode.SURVIVAL)) {
-            p.setLastDamageCause(new EntityDamageEvent(p, EntityDamageEvent.DamageCause.FALL, 20));
-            p.damage(20.0D);
-        }
-        if (!getGame().isInGameArea(event.getTo())) {
-            event.setCancelled(true);
-            Vector addTo = event.getFrom().toVector().subtract(event.getTo().toVector()).multiply(3);
-            addTo.setY(0);
-            p.teleport(event.getFrom().add(addTo));
-            p.sendMessage(MessageConfig.getMessage("arena_leave"));
-        }
-    }
-
     @EventHandler
     public void onExplode(EntityExplodeEvent event) {
         if (!isInGameWorld(event.getLocation())) return;
@@ -148,39 +122,6 @@ public class GameListener extends GameBoundListener {
         }
     }
 
-    @EventHandler
-    public void onJoin(PlayerArenaJoinEvent event) {
-        Game game = event.getGame();
-        if (game != getGame()) return;
-
-        Player p = event.getPlayer();
-        MWPlayer mwPlayer = game.addPlayer(p);
-        PlayerDataProvider.getInstance().storeInventory(p);
-        p.getInventory().clear();
-
-        if (!game.getLobby().isJoinOngoingGame() || game.getPlayers().size() >= game.getLobby().getMaxSize()) {
-            p.sendMessage(MessageConfig.getMessage("spectator"));
-            Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.teleport(game.getArena().getSpectatorSpawn()), 2);
-            Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.setGameMode(GameMode.SPECTATOR), 35);;
-            p.setDisplayName("§7" + p.getName() + "§r");
-            p.setScoreboard(game.getScoreboard());
-        } else {
-            Team to;
-            int size1 = game.getTeam1().getMembers().size();
-            int size2 = game.getTeam2().getMembers().size();
-            if (size2 < size1)
-                to = getGame().getTeam2();
-            else
-                to = getGame().getTeam1();
-
-            // Adds the player to the new team.
-            to.addMember(mwPlayer);
-
-            p.sendMessage(MessageConfig.getMessage("team_assigned").replace("%team%", to.getFullname()));
-            game.startForPlayer(p);
-        }
-    }
-
     @EventHandler
     public void onThrow(ProjectileLaunchEvent event) {
         if (!isInGameWorld(event.getEntity().getLocation())) return;
@@ -265,51 +206,22 @@ public class GameListener extends GameBoundListener {
 
             if (player.getLastDamageCause() == null) return;
 
-            String deathBroadcastMessage;
+            String deathBroadcast;
             EntityDamageEvent.DamageCause damageCause = player.getLastDamageCause().getCause();
 
             if (damageCause == EntityDamageEvent.DamageCause.BLOCK_EXPLOSION || damageCause == EntityDamageEvent.DamageCause.ENTITY_EXPLOSION) {
-                deathBroadcastMessage = MessageConfig.getNativeMessage("died_explosion").replace("%player%", player.getDisplayName());
+                deathBroadcast = MessageConfig.getNativeMessage("died_explosion").replace("%player%", player.getDisplayName());
             } else {
-                deathBroadcastMessage = MessageConfig.getNativeMessage("died").replace("%player%", player.getDisplayName());
+                deathBroadcast = MessageConfig.getNativeMessage("died").replace("%player%", player.getDisplayName());
             }
 
-            getGame().broadcast(deathBroadcastMessage);
+            getGame().broadcast(deathBroadcast);
         }
 
         event.setDeathMessage(null);
         if (getGame().getArena().isAutoRespawn()) getGame().autoRespawnPlayer(player);
     }
 
-    @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
-    public void onLeave(PlayerArenaLeaveEvent event) {
-        Game game = event.getGame();
-        if (game != getGame()) return;
-
-        MWPlayer player = getGame().getPlayer(event.getPlayer());
-        if (player == null) return;
-        BukkitTask task = game.getPlayerTasks().get(player.getUuid());
-        if (task != null) task.cancel();
-
-        Team team = player.getTeam();
-        if (team != null) {
-            getGame().broadcast(
-                    MessageConfig.getMessage("player_left").replace("%player%", event.getPlayer().getDisplayName()));
-            team.removeMember(getGame().getPlayer(event.getPlayer()));
-
-            int teamSize = team.getMembers().size();
-            if (teamSize == 0) {
-                Bukkit.getScheduler().runTask(MissileWars.getInstance(), () -> {
-                    team.getEnemyTeam().setGameResult(GameResult.WIN);
-                    team.setGameResult(GameResult.LOSE);
-                    game.sendGameResult();
-                    getGame().stopGame();
-                });
-                getGame().broadcast(MessageConfig.getMessage("team_offline").replace("%team%", team.getFullname()));
-            }
-        }
-    }
-
     @EventHandler
     public void onInventoryClick(InventoryClickEvent event) {
         if (!(event.getWhoClicked() instanceof Player)) return;
@@ -329,4 +241,58 @@ public class GameListener extends GameBoundListener {
         if ((event.getSlotType() != InventoryType.SlotType.CONTAINER) &&
                 (event.getSlotType() != InventoryType.SlotType.QUICKBAR)) event.setCancelled(true);
     }
+
+    @EventHandler
+    public void onMove(PlayerMoveEvent event) {
+        if (!isInGameWorld(event.getTo())) return;
+
+        Player player = event.getPlayer();
+        if (player.getGameMode() != GameMode.SURVIVAL) return;
+
+        int toY = event.getTo().getBlockY();
+        if (toY > getGame().getArena().getMaxHeight()) {
+            player.teleport(event.getFrom());
+            player.sendMessage(MessageConfig.getMessage("not_higher"));
+        } else if (toY < getGame().getArena().getDeathHeight()) {
+            player.setLastDamageCause(new EntityDamageEvent(player, EntityDamageEvent.DamageCause.FALL, 20));
+            player.damage(20.0D);
+        }
+
+        Location from = event.getFrom();
+        Location to = event.getTo();
+
+        if (!getGame().isInGameArea(event.getTo())) {
+            if (to != null) Game.knockbackEffect(player, from, to);
+            player.sendMessage(MessageConfig.getMessage("arena_leave"));
+        }
+    }
+
+    @EventHandler
+    public void onPlayerArenaJoin(PlayerArenaJoinEvent event) {
+        if (!isInGameWorld(event.getPlayer().getLocation())) return;
+
+        Player player = event.getPlayer();
+
+        if ((!getGame().getLobby().isJoinOngoingGame()) || (getGame().isPlayersMax())) {
+            if (getGame().isSpectatorsMax()) {
+                event.setCancelled(true);
+                event.getPlayer().sendMessage(MessageConfig.getMessage("not_enter_arena"));
+                return;
+            }
+            getGame().playerJoinInGame(player, true);
+            return;
+        }
+
+        getGame().playerJoinInGame(player, false);
+    }
+
+    @EventHandler
+    public void onPlayerArenaLeave(PlayerArenaLeaveEvent event) {
+        if (!isInGameWorld(event.getPlayer().getLocation())) return;
+
+        Player player = event.getPlayer();
+        MWPlayer mwPlayer = event.getGame().getPlayer(player);
+
+        if (mwPlayer != null) getGame().playerLeaveFromGame(mwPlayer);
+    }
 }

+ 25 - 59
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/LobbyListener.java

@@ -19,18 +19,12 @@
 package de.butzlabben.missilewars.listener;
 
 import de.butzlabben.missilewars.MessageConfig;
-import de.butzlabben.missilewars.MissileWars;
 import de.butzlabben.missilewars.game.Game;
-import de.butzlabben.missilewars.inventory.OrcItem;
 import de.butzlabben.missilewars.inventory.VoteInventory;
-import de.butzlabben.missilewars.util.PlayerDataProvider;
 import de.butzlabben.missilewars.util.version.VersionUtil;
-import de.butzlabben.missilewars.wrapper.abstracts.MapChooseProcedure;
 import de.butzlabben.missilewars.wrapper.event.PlayerArenaJoinEvent;
-import de.butzlabben.missilewars.wrapper.game.Team;
+import de.butzlabben.missilewars.wrapper.event.PlayerArenaLeaveEvent;
 import de.butzlabben.missilewars.wrapper.player.MWPlayer;
-import de.butzlabben.missilewars.wrapper.signs.MWSign;
-import org.bukkit.Bukkit;
 import org.bukkit.GameMode;
 import org.bukkit.Material;
 import org.bukkit.entity.Player;
@@ -95,58 +89,6 @@ public class LobbyListener extends GameBoundListener {
         }
     }
 
-    @EventHandler
-    public void onJoin(PlayerArenaJoinEvent event) {
-        Game game = event.getGame();
-        if (game != getGame()) return;
-
-        Player p = event.getPlayer();
-        MWPlayer mw = game.addPlayer(p);
-
-        PlayerDataProvider.getInstance().storeInventory(p);
-
-        p.getInventory().clear();
-        p.setFoodLevel(20);
-        p.setHealth(p.getMaxHealth());
-
-        Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.setGameMode(GameMode.ADVENTURE), 10);
-        Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.teleport(game.getLobby().getSpawnPoint()), 2);
-
-        Team to;
-
-        int size1 = getGame().getTeam1().getMembers().size();
-        int size2 = getGame().getTeam2().getMembers().size();
-
-        if (size2 < size1) {
-            to = getGame().getTeam2();
-        } else {
-            to = getGame().getTeam1();
-        }
-
-        // Premium version
-        if (p.hasPermission("mw.change")) {
-            p.getInventory().setItem(0, VersionUtil.getGlassPlane(getGame().getTeam1()));
-            p.getInventory().setItem(8, VersionUtil.getGlassPlane(getGame().getTeam2()));
-        }
-
-        if (game.getLobby().getMapChooseProcedure() == MapChooseProcedure.MAPVOTING && game.getArena() == null) {
-            p.getInventory().setItem(4, new OrcItem(Material.NETHER_STAR, "§3Vote Map").getItemStack());
-        }
-
-        // Adds the player to the new team.
-        to.addMember(mw);
-
-        p.sendMessage(MessageConfig.getMessage("team_assigned").replace("%team%", to.getFullname()));
-
-        String name = p.getName();
-        String players = "" + game.getPlayers().values().size();
-        String maxPlayers = "" + game.getLobby().getMaxSize();
-        String message = MessageConfig.getMessage("lobby_joined").replace("%max_players%", maxPlayers).replace("%players%", players).replace("%player%", name);
-        game.broadcast(message);
-
-        MissileWars.getInstance().getSignRepository().getSigns(game).forEach(MWSign::update);
-    }
-
     @EventHandler
     public void onDamage(EntityDamageEvent event) {
         if (!(event.getEntity() instanceof Player)) return;
@@ -173,4 +115,28 @@ public class LobbyListener extends GameBoundListener {
 
         if (player.getGameMode() != GameMode.CREATIVE) event.setCancelled(true);
     }
+
+    @EventHandler
+    public void onPlayerArenaJoin(PlayerArenaJoinEvent event) {
+        if (!isInLobbyArea(event.getPlayer().getLocation())) return;
+
+        if (getGame().isPlayersMax()) {
+            event.setCancelled(true);
+            event.getPlayer().sendMessage(MessageConfig.getMessage("not_enter_arena"));
+            return;
+        }
+
+        Player player = event.getPlayer();
+        getGame().playerJoinInGame(player, false);
+    }
+
+    @EventHandler
+    public void onPlayerArenaLeave(PlayerArenaLeaveEvent event) {
+        if (!isInLobbyArea(event.getPlayer().getLocation())) return;
+
+        Player player = event.getPlayer();
+        MWPlayer mwPlayer = event.getGame().getPlayer(player);
+
+        if (mwPlayer != null) getGame().playerLeaveFromGame(mwPlayer);
+    }
 }

+ 86 - 87
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/PlayerListener.java

@@ -20,36 +20,28 @@ package de.butzlabben.missilewars.listener;
 
 import de.butzlabben.missilewars.Config;
 import de.butzlabben.missilewars.Logger;
-import de.butzlabben.missilewars.MessageConfig;
 import de.butzlabben.missilewars.MissileWars;
 import de.butzlabben.missilewars.game.Game;
 import de.butzlabben.missilewars.game.GameManager;
-import de.butzlabben.missilewars.game.GameState;
 import de.butzlabben.missilewars.util.MotdManager;
-import de.butzlabben.missilewars.util.PlayerDataProvider;
 import de.butzlabben.missilewars.wrapper.event.PlayerArenaJoinEvent;
 import de.butzlabben.missilewars.wrapper.event.PlayerArenaLeaveEvent;
-import de.butzlabben.missilewars.wrapper.event.PrePlayerArenaJoinEvent;
-import de.butzlabben.missilewars.wrapper.player.MWPlayer;
-import de.butzlabben.missilewars.wrapper.signs.MWSign;
 import org.bukkit.Bukkit;
 import org.bukkit.GameMode;
 import org.bukkit.Location;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
 import org.bukkit.event.Listener;
 import org.bukkit.event.block.BlockPlaceEvent;
 import org.bukkit.event.entity.FoodLevelChangeEvent;
 import org.bukkit.event.player.*;
 import org.bukkit.event.server.ServerListPingEvent;
-import org.bukkit.util.Vector;
+import org.bukkit.scheduler.BukkitRunnable;
 
 /**
  * @author Butzlabben
  * @since 01.01.2018
  */
-@SuppressWarnings("deprecation")
 public class PlayerListener implements Listener {
 
     @EventHandler
@@ -92,117 +84,124 @@ public class PlayerListener implements Listener {
     }
 
     @EventHandler
-    public void onQuit(PlayerQuitEvent event) {
-        Player p = event.getPlayer();
-
-        Game game = getGame(p.getLocation());
-        if (game != null) {
+    public void onJoin(PlayerJoinEvent event) {
+        Game game = getGame(event.getPlayer().getLocation());
+        if (game == null) return;
 
-            if (!game.isIn(game.getLobby().getAfterGameSpawn()))
-                p.teleport(game.getLobby().getAfterGameSpawn());
-            else
-                p.teleport(Config.getFallbackSpawn());
-        }
+        Player player = event.getPlayer();
+        game.teleportToFallbackSpawn(player);
     }
 
     @EventHandler
-    public void onJoin(PlayerJoinEvent event) {
-        Player p = event.getPlayer();
+    public void onQuit(PlayerQuitEvent event) {
+        Game game = getGame(event.getPlayer().getLocation());
+        if (game == null) return;
 
-        Game game = getGame(p.getLocation());
-        if (game != null) {
+        Player player = event.getPlayer();
 
-            if (checkJoinOrLeave(p, null, game)) {
-                p.teleport(Config.getFallbackSpawn());
-            }
-        }
+        // old game handling:
+        registerPlayerArenaLeaveEvent(player, game);
+
+        game.teleportToFallbackSpawn(player);
     }
 
     @EventHandler
     public void onTeleport(PlayerTeleportEvent event) {
-        Game to = getGame(event.getTo());
-        Game from = getGame(event.getFrom());
-        if (checkJoinOrLeave(event.getPlayer(), from, to)) {
-            event.setCancelled(true);
-        }
+        Location from = event.getFrom();
+        Location to = event.getTo();
+        Game gameFrom = getGame(from);
+        Game gameTo = getGame(to);
+
+        // same game:
+        if (gameFrom == gameTo) return;
+
+        Player player = event.getPlayer();
+
+        // old game handling:
+        if (gameFrom != null) registerPlayerArenaLeaveEvent(player, gameFrom);
+
+        // teleport after a delay between the arena leave and the next area join
+        if (gameTo == null) return;
+        new BukkitRunnable() {
+            public void run() {
+                // new game handling:
+                PlayerArenaJoinEvent joinEvent = registerPlayerArenaJoinEvent(player, gameTo);
+                if (joinEvent.isCancelled()) gameTo.teleportToFallbackSpawn(player);
+            }
+        }.runTaskLater(MissileWars.getInstance(), 2);
     }
 
     @EventHandler
     public void onMove(PlayerMoveEvent event) {
-        Game to = getGame(event.getTo());
-        Game from = getGame(event.getFrom());
-
-        if (checkJoinOrLeave(event.getPlayer(), from, to)) {
-            event.setCancelled(true);
-            Vector addTo = event.getFrom().toVector().subtract(event.getTo().toVector()).multiply(3);
-            addTo.setY(0);
-            event.getPlayer().teleport(event.getFrom().add(addTo));
-        }
-
-    }
-
-    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
-    public void onLeaveWithStuff(PlayerArenaLeaveEvent event) {
-        Game game = event.getGame();
+        Location from = event.getFrom();
+        Location to = event.getTo();
+        Game gameFrom = getGame(from);
+        Game gameTo = getGame(to);
 
-        MWPlayer mwPlayer = game.getPlayer(event.getPlayer());
-        Player player = mwPlayer.getPlayer();
+        // same game:
+        if (gameFrom == gameTo) return;
 
-        PlayerDataProvider.getInstance().loadInventory(player);
+        Player player = event.getPlayer();
 
-        game.removePlayer(mwPlayer);
+        // old game handling:
+        if (gameFrom != null) registerPlayerArenaLeaveEvent(player, gameFrom);
 
-        MissileWars.getInstance().getSignRepository().getSigns(game).forEach(MWSign::update);
+        // new game handling:
+        if (gameTo != null) {
+            PlayerArenaJoinEvent joinEvent = registerPlayerArenaJoinEvent(player, gameTo);
+            if (!joinEvent.isCancelled()) return;
+            if (to != null) Game.knockbackEffect(player, from, to);
+        }
     }
 
-    // Internal stuff
+    private PlayerArenaJoinEvent registerPlayerArenaJoinEvent(Player player, Game game) {
+        PlayerArenaJoinEvent onJoinGame = new PlayerArenaJoinEvent(player, game);
+        Bukkit.getPluginManager().callEvent(onJoinGame);
 
-    @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
-    public void onMaxPlayers(PrePlayerArenaJoinEvent event) {
-        if (event.getGame().getPlayers().size() >= event.getGame().getLobby().getMaxSize() && event.getGame().getState() == GameState.LOBBY)
-            event.setCancelled(true);
-    }
+        if (!onJoinGame.isCancelled()) {
+            game.updateGameInfo();
+            logEventDebugMessage(player, game);
+            Logger.NORMAL.log(player.getName() + " joint the MW game " + game.getLobby().getName());
+        } else {
+            Logger.DEBUG.log("Canceling game join for " + player.getName());
+        }
 
-    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
-    public void onPreJoin(PrePlayerArenaJoinEvent event) {
-        Logger.DEBUG.log("PrePlayerArenaJoinEvent: " + event.getPlayer().getName());
-        Bukkit.getScheduler().runTask(MissileWars.getInstance(), () -> Bukkit.getPluginManager()
-                .callEvent(new PlayerArenaJoinEvent(event.getPlayer(), event.getGame())));
+        return onJoinGame;
     }
 
-    // Debugging staff
+    private PlayerArenaLeaveEvent registerPlayerArenaLeaveEvent(Player player, Game game) {
+        PlayerArenaLeaveEvent onLeaveGame = new PlayerArenaLeaveEvent(player, game);
+        Bukkit.getPluginManager().callEvent(onLeaveGame);
 
-    @EventHandler
-    public void onPlayerArenaJoin(PlayerArenaJoinEvent event) {
-        Logger.DEBUG.log("PlayerArenaJoinEvent: " + event.getPlayer().getName());
-    }
+        game.updateGameInfo();
+        logEventDebugMessage(player, game);
+        Logger.NORMAL.log(player.getName() + " left the MW game " + game.getLobby().getName());
 
-    @EventHandler
-    public void onPlayerArenaLeave(PlayerArenaLeaveEvent event) {
-        Logger.DEBUG.log("PlayerArenaLeaveEvent: " + event.getPlayer().getName());
+        return onLeaveGame;
     }
 
+    /**
+     * This method gets the game based of the location. It's either inside
+     * the game lobby (representing as an area) or inside the game arena
+     * (representing as a world).
+     *
+     * @param location (Location) of the player
+     * @return the Game Object if existing for the location
+     */
     private Game getGame(Location location) {
         if (GameManager.getInstance() == null) return null;
 
         return GameManager.getInstance().getGame(location);
     }
 
-    /**
-     * Checks if cancelled and spits out events
-     */
-    private boolean checkJoinOrLeave(Player player, Game from, Game to) {
-        if (to != null && to != from) {
-            PrePlayerArenaJoinEvent event = new PrePlayerArenaJoinEvent(player, to);
-            Bukkit.getPluginManager().callEvent(event);
-            if (event.isCancelled()) player.sendMessage(MessageConfig.getMessage("not_enter_arena"));
-            return event.isCancelled();
-        }
-        if (from != null && to != from) {
-            PlayerArenaLeaveEvent event = new PlayerArenaLeaveEvent(player, from);
-            Bukkit.getPluginManager().callEvent(event);
-        }
-        return false;
-    }
+    private void logEventDebugMessage(Player player, Game game) {
 
+        Logger.DEBUG.log("Location: " + player.getLocation());
+        Logger.DEBUG.log("Current game amount: " + GameManager.getInstance().getGameAmount());
+        Logger.DEBUG.log("Lobby: " + game.getLobby().getDisplayName());
+        Logger.DEBUG.log("Arena: " + game.getArena().getDisplayName());
+        Logger.DEBUG.log("Team 1: " + game.getTeam1());
+        Logger.DEBUG.log("Team 2: " + game.getTeam2());
+
+    }
 }