Browse Source

Merge remote-tracking branch 'origin/master'

nossr50 2 years ago
parent
commit
921a0228db

+ 6 - 2
src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java

@@ -200,15 +200,19 @@ public class PartyCommand implements TabExecutor {
 
                         if (matches.size() == 0) {
                             Player player = (Player) sender;
+                            final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
 
                             //Not Loaded
-                            if(UserManager.getPlayer(player) == null)
+                            if(mcMMOPlayer == null)
                             {
                                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
                                 return ImmutableList.of();
                             }
 
-                            Party party = UserManager.getPlayer(player).getParty();
+                            if (mcMMOPlayer.getParty() == null)
+                                return ImmutableList.of();
+
+                            final Party party = mcMMOPlayer.getParty();
 
                             playerNames = party.getOnlinePlayerNames(player);
                             return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<>(playerNames.size()));

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyRenameCommand.java

@@ -25,7 +25,7 @@ public class PartyRenameCommand implements CommandExecutor {
             Party playerParty = mcMMOPlayer.getParty();
 
             String oldPartyName = playerParty.getName();
-            String newPartyName = args[1];
+            String newPartyName = args[1].replace(".", "");
 
             // This is to prevent party leaders from spamming other players with the rename message
             if (oldPartyName.equalsIgnoreCase(newPartyName)) {

+ 3 - 0
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -450,6 +450,9 @@ public class PlayerListener implements Listener {
             case CAUGHT_FISH:
                 if(caught instanceof Item) {
                     if(ExperienceConfig.getInstance().isFishingExploitingPrevented()) {
+
+                        fishingManager.processExploiting(event.getHook().getLocation().toVector());
+
                         if (fishingManager.isExploitingFishing(event.getHook().getLocation().toVector())) {
                             player.sendMessage(LocaleLoader.getString("Fishing.ScarcityTip", ExperienceConfig.getInstance().getFishingExploitingOptionMoveRange()));
                             event.setExpToDrop(0);

+ 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.Map.Entry;
 import java.util.UUID;
+import java.util.logging.Level;
 
 public final class PartyManager {
     private static final String partiesFilePath = mcMMO.getFlatFileDirectory() + "parties.yml";
@@ -609,34 +610,38 @@ public final class PartyManager {
             ArrayList<Party> hasAlly = new ArrayList<>();
 
             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...");

+ 20 - 18
src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java

@@ -51,6 +51,7 @@ public class FishingManager extends SkillManager {
     private long lastWarnedExhaust = 0L;
     private FishHook fishHookReference;
     private BoundingBox lastFishingBoundingBox;
+    private boolean sameTarget;
     private Item fishingCatch;
     private Location hookLocation;
     private int fishCaughtCounter = 1;
@@ -125,33 +126,34 @@ public class FishingManager extends SkillManager {
         return hasFished;
     }
 
-    public boolean isExploitingFishing(Vector centerOfCastVector) {
-
-        /*Block targetBlock = getPlayer().getTargetBlock(BlockUtils.getTransparentBlocks(), 100);
-
-        if (!targetBlock.isLiquid()) {
-            return false;
-        }*/
-
+    public void processExploiting(Vector centerOfCastVector) {
         BoundingBox newCastBoundingBox = makeBoundingBox(centerOfCastVector);
+        this.sameTarget = lastFishingBoundingBox != null && lastFishingBoundingBox.overlaps(newCastBoundingBox);
 
-        boolean sameTarget = lastFishingBoundingBox != null && lastFishingBoundingBox.overlaps(newCastBoundingBox);
-
-        if(sameTarget)
+        if (this.sameTarget) {
             fishCaughtCounter++;
-        else
+        }
+        else {
             fishCaughtCounter = 1;
+        }
 
-        if(fishCaughtCounter + 1 == ExperienceConfig.getInstance().getFishingExploitingOptionOverFishLimit())
-        {
+        //If the new bounding box does not intersect with the old one, then update our bounding box reference
+        if (!this.sameTarget) lastFishingBoundingBox = newCastBoundingBox;
+
+        if (fishCaughtCounter + 1 == ExperienceConfig.getInstance().getFishingExploitingOptionOverFishLimit()) {
             getPlayer().sendMessage(LocaleLoader.getString("Fishing.LowResourcesTip", ExperienceConfig.getInstance().getFishingExploitingOptionMoveRange()));
         }
+    }
 
-        //If the new bounding box does not intersect with the old one, then update our bounding box reference
-        if(!sameTarget)
-            lastFishingBoundingBox = newCastBoundingBox;
+    public boolean isExploitingFishing(Vector centerOfCastVector) {
+
+        /*Block targetBlock = getPlayer().getTargetBlock(BlockUtils.getTransparentBlocks(), 100);
+
+        if (!targetBlock.isLiquid()) {
+            return false;
+        }*/
 
-        return sameTarget && fishCaughtCounter >= ExperienceConfig.getInstance().getFishingExploitingOptionOverFishLimit();
+        return this.sameTarget && fishCaughtCounter >= ExperienceConfig.getInstance().getFishingExploitingOptionOverFishLimit();
     }
 
     public static BoundingBox makeBoundingBox(Vector centerOfCastVector) {