瀏覽代碼

Make party loading more resilient (#4881)

Warrior 2 年之前
父節點
當前提交
9b0632d63c
共有 1 個文件被更改,包括 26 次插入21 次删除
  1. 26 21
      src/main/java/com/gmail/nossr50/party/PartyManager.java

+ 26 - 21
src/main/java/com/gmail/nossr50/party/PartyManager.java

@@ -28,6 +28,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.Map.Entry;
 import java.util.UUID;
 import java.util.UUID;
+import java.util.logging.Level;
 
 
 public final class PartyManager {
 public final class PartyManager {
     private static final String partiesFilePath = mcMMO.getFlatFileDirectory() + "parties.yml";
     private static final String partiesFilePath = mcMMO.getFlatFileDirectory() + "parties.yml";
@@ -609,34 +610,38 @@ public final class PartyManager {
             ArrayList<Party> hasAlly = new ArrayList<>();
             ArrayList<Party> hasAlly = new ArrayList<>();
 
 
             for (String partyName : partiesFile.getConfigurationSection("").getKeys(false)) {
             for (String partyName : partiesFile.getConfigurationSection("").getKeys(false)) {
-                Party party = new Party(partyName);
+                try {
+                    Party party = new Party(partyName);
 
 
-                String[] leaderSplit = partiesFile.getString(partyName + ".Leader").split("[|]");
-                party.setLeader(new PartyLeader(UUID.fromString(leaderSplit[0]), leaderSplit[1]));
-                party.setPassword(partiesFile.getString(partyName + ".Password"));
-                party.setLocked(partiesFile.getBoolean(partyName + ".Locked"));
-                party.setLevel(partiesFile.getInt(partyName + ".Level"));
-                party.setXp(partiesFile.getInt(partyName + ".Xp"));
+                    String[] leaderSplit = partiesFile.getString(partyName + ".Leader").split("[|]");
+                    party.setLeader(new PartyLeader(UUID.fromString(leaderSplit[0]), leaderSplit[1]));
+                    party.setPassword(partiesFile.getString(partyName + ".Password"));
+                    party.setLocked(partiesFile.getBoolean(partyName + ".Locked"));
+                    party.setLevel(partiesFile.getInt(partyName + ".Level"));
+                    party.setXp(partiesFile.getInt(partyName + ".Xp"));
 
 
-                if (partiesFile.getString(partyName + ".Ally") != null) {
-                    hasAlly.add(party);
-                }
+                    if (partiesFile.getString(partyName + ".Ally") != null) {
+                        hasAlly.add(party);
+                    }
 
 
-                party.setXpShareMode(ShareMode.getShareMode(partiesFile.getString(partyName + ".ExpShareMode", "NONE")));
-                party.setItemShareMode(ShareMode.getShareMode(partiesFile.getString(partyName + ".ItemShareMode", "NONE")));
+                    party.setXpShareMode(ShareMode.getShareMode(partiesFile.getString(partyName + ".ExpShareMode", "NONE")));
+                    party.setItemShareMode(ShareMode.getShareMode(partiesFile.getString(partyName + ".ItemShareMode", "NONE")));
 
 
-                for (ItemShareType itemShareType : ItemShareType.values()) {
-                    party.setSharingDrops(itemShareType, partiesFile.getBoolean(partyName + ".ItemShareType." + itemShareType.toString(), true));
-                }
+                    for (ItemShareType itemShareType : ItemShareType.values()) {
+                        party.setSharingDrops(itemShareType, partiesFile.getBoolean(partyName + ".ItemShareType." + itemShareType.toString(), true));
+                    }
 
 
-                LinkedHashMap<UUID, String> members = party.getMembers();
+                    LinkedHashMap<UUID, String> members = party.getMembers();
 
 
-                for (String memberEntry : partiesFile.getStringList(partyName + ".Members")) {
-                    String[] memberSplit = memberEntry.split("[|]");
-                    members.put(UUID.fromString(memberSplit[0]), memberSplit[1]);
-                }
+                    for (String memberEntry : partiesFile.getStringList(partyName + ".Members")) {
+                        String[] memberSplit = memberEntry.split("[|]");
+                        members.put(UUID.fromString(memberSplit[0]), memberSplit[1]);
+                    }
 
 
-                parties.add(party);
+                    parties.add(party);
+                } catch (Exception e) {
+                    mcMMO.p.getLogger().log(Level.WARNING, "An exception occurred while loading a party with name '" + partyName + "'. Skipped loading party.", e);
+                }
             }
             }
 
 
             mcMMO.p.debug("Loaded (" + parties.size() + ") Parties...");
             mcMMO.p.debug("Loaded (" + parties.size() + ") Parties...");