Преглед на файлове

Centralization of the game remove process

RedstoneFuture преди 3 години
родител
ревизия
d7e5b20ed5

+ 9 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/Game.java

@@ -585,4 +585,13 @@ public class Game {
         VersionUtil.sendTitle(player, title, subTitle);
     }
 
+
+    /**
+     * This method removes players from the game. Besides former
+     * team members, it also affects spectators.
+     */
+    public void removePlayer(MWPlayer mwPlayer) {
+        if (mwPlayer.getTeam() != null) mwPlayer.getTeam().removeMember(mwPlayer);
+        players.remove(mwPlayer);
+    }
 }

+ 5 - 6
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/timer/LobbyTimer.java

@@ -47,14 +47,13 @@ public class LobbyTimer extends Timer implements Runnable {
 
     @Override
     public void tick() {
-        if (getGame().getPlayers().values().size() == 0)
-            return;
+        if (getGame().getPlayers().values().size() == 0) return;
 
         for (MWPlayer mp : getGame().getPlayers().values()) {
-            if (mp.getPlayer() != null) mp.getPlayer().setLevel(seconds);
-            else {
-                if (mp.getTeam() != null) mp.getTeam().removeMember(mp);
-                getGame().getPlayers().remove(mp.getUUID());
+            if (mp.getPlayer() != null) {
+                mp.getPlayer().setLevel(seconds);
+            } else {
+                getGame().removePlayer(mp);
             }
         }
 

+ 4 - 16
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/PlayerListener.java

@@ -144,26 +144,14 @@ public class PlayerListener implements Listener {
         Game game = event.getGame();
 
         MWPlayer mwPlayer = game.getPlayer(event.getPlayer());
-        if (mwPlayer == null) return;
-
-        // Already in a team?
-        if (mwPlayer.getTeam() != null) {
-            mwPlayer.getTeam().removeMember(mwPlayer);
-        }
-
-        game.getPlayers().remove(event.getPlayer().getUniqueId());
-
-        Player player = mwPlayer.getPlayer();
-        if (player == null) {
-            Logger.WARN.log("Player was null as he left the game");
-            return;
-        }
+        Player player= mwPlayer.getPlayer();
 
         player.getInventory().clear();
+        PlayerDataProvider.getInstance().loadInventory(player);
 
-        MissileWars.getInstance().getSignRepository().getSigns(game).forEach(MWSign::update);
+        game.removePlayer(mwPlayer);
 
-        PlayerDataProvider.getInstance().loadInventory(player);
+        MissileWars.getInstance().getSignRepository().getSigns(game).forEach(MWSign::update);
     }
 
     @EventHandler