浏览代码

Fix NPE for new data tracker

nossr50 6 年之前
父节点
当前提交
426b2d27e7
共有 1 个文件被更改,包括 10 次插入5 次删除
  1. 10 5
      src/main/java/com/gmail/nossr50/util/player/UserManager.java

+ 10 - 5
src/main/java/com/gmail/nossr50/util/player/UserManager.java

@@ -16,9 +16,7 @@ public final class UserManager {
 
 
     private static HashSet<McMMOPlayer> playerDataSet; //Used to track players for sync saves on shutdown
     private static HashSet<McMMOPlayer> playerDataSet; //Used to track players for sync saves on shutdown
 
 
-    private UserManager() {
-        playerDataSet = new HashSet<>();
-    }
+    private UserManager() {}
 
 
     /**
     /**
      * Track a new user.
      * Track a new user.
@@ -27,6 +25,10 @@ public final class UserManager {
      */
      */
     public static void track(McMMOPlayer mcMMOPlayer) {
     public static void track(McMMOPlayer mcMMOPlayer) {
         mcMMOPlayer.getPlayer().setMetadata(mcMMO.playerDataKey, new FixedMetadataValue(mcMMO.p, mcMMOPlayer));
         mcMMOPlayer.getPlayer().setMetadata(mcMMO.playerDataKey, new FixedMetadataValue(mcMMO.p, mcMMOPlayer));
+
+        if(playerDataSet == null)
+            playerDataSet = new HashSet<>();
+
         playerDataSet.add(mcMMOPlayer); //for sync saves on shutdown
         playerDataSet.add(mcMMOPlayer); //for sync saves on shutdown
     }
     }
 
 
@@ -42,7 +44,9 @@ public final class UserManager {
     public static void remove(Player player) {
     public static void remove(Player player) {
         McMMOPlayer mcMMOPlayer = getPlayer(player);
         McMMOPlayer mcMMOPlayer = getPlayer(player);
         player.removeMetadata(mcMMO.playerDataKey, mcMMO.p);
         player.removeMetadata(mcMMO.playerDataKey, mcMMO.p);
-        playerDataSet.remove(mcMMOPlayer); //Clear sync save tracking
+
+        if(playerDataSet != null && playerDataSet.contains(mcMMOPlayer))
+            playerDataSet.remove(mcMMOPlayer); //Clear sync save tracking
     }
     }
 
 
     /**
     /**
@@ -53,7 +57,8 @@ public final class UserManager {
             remove(player);
             remove(player);
         }
         }
 
 
-        playerDataSet.clear(); //Clear sync save tracking
+        if(playerDataSet != null)
+            playerDataSet.clear(); //Clear sync save tracking
     }
     }
 
 
     /**
     /**