Browse Source

Pull master

nossr50 2 years ago
parent
commit
f88dfe479e
24 changed files with 123 additions and 104 deletions
  1. 8 0
      Changelog.txt
  2. 6 2
      src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java
  3. 1 1
      src/main/java/com/gmail/nossr50/commands/party/PartyRenameCommand.java
  4. 5 5
      src/main/java/com/gmail/nossr50/config/AutoUpdateLegacyConfigLoader.java
  5. 11 15
      src/main/java/com/gmail/nossr50/config/BukkitConfig.java
  6. 6 5
      src/main/java/com/gmail/nossr50/config/LegacyConfigLoader.java
  7. 3 3
      src/main/java/com/gmail/nossr50/config/RankConfig.java
  8. 1 1
      src/main/java/com/gmail/nossr50/config/mods/ArmorConfigManager.java
  9. 1 1
      src/main/java/com/gmail/nossr50/config/mods/BlockConfigManager.java
  10. 3 3
      src/main/java/com/gmail/nossr50/config/mods/CustomArmorLegacyConfig.java
  11. 3 3
      src/main/java/com/gmail/nossr50/config/mods/CustomBlockLegacyConfig.java
  12. 3 3
      src/main/java/com/gmail/nossr50/config/mods/CustomEntityLegacyConfig.java
  13. 3 3
      src/main/java/com/gmail/nossr50/config/mods/CustomToolLegacyConfig.java
  14. 1 1
      src/main/java/com/gmail/nossr50/config/mods/EntityConfigManager.java
  15. 1 1
      src/main/java/com/gmail/nossr50/config/mods/ToolConfigManager.java
  16. 2 2
      src/main/java/com/gmail/nossr50/config/skills/alchemy/PotionConfig.java
  17. 2 2
      src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java
  18. 2 2
      src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfigManager.java
  19. 2 2
      src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java
  20. 2 2
      src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfigManager.java
  21. 3 0
      src/main/java/com/gmail/nossr50/listeners/PlayerListener.java
  22. 26 21
      src/main/java/com/gmail/nossr50/party/PartyManager.java
  23. 20 18
      src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java
  24. 8 8
      src/main/java/com/gmail/nossr50/util/ModManager.java

+ 8 - 0
Changelog.txt

@@ -55,8 +55,16 @@ Version 2.2.000
     New Power Level Command
     New Power Level Command
     This power level command gives you a view of all your current masteries, it also provides a summary of your power level.
     This power level command gives you a view of all your current masteries, it also provides a summary of your power level.
 
 
+Version 2.1.220
+    Config files update automatically again
+    Default configs are now copied to plugins/mcMMO/defaults for easy reference, these configs will always match the default values of the config in the JAR
+
 Version 2.1.219
 Version 2.1.219
+    Fixed Fishing exploit protection being triggered inappropriately by other plugins (Thanks smudgge)
     Fixed wiki url being incorrect in commands
     Fixed wiki url being incorrect in commands
+    Party loading is more resilient (Thanks Wariorrrr)
+    Fixed periods not being replaced whe nrenaming party (Thanks Wariorrrr)
+    Fixed Party Teleport NPE (Thanks Wariorrrr)
     Added support for various new things from Minecraft 1.20
     Added support for various new things from Minecraft 1.20
     Fixed double drop issue with Beetroots
     Fixed double drop issue with Beetroots
     Added 'Camel' to taming experience in experience.yml
     Added 'Camel' to taming experience in experience.yml

+ 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) {
                         if (matches.size() == 0) {
                             Player player = (Player) sender;
                             Player player = (Player) sender;
+                            final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
 
 
                             //Not Loaded
                             //Not Loaded
-                            if(UserManager.getPlayer(player) == null)
+                            if(mcMMOPlayer == null)
                             {
                             {
                                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
                                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
                                 return ImmutableList.of();
                                 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);
                             playerNames = party.getOnlinePlayerNames(player);
                             return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<>(playerNames.size()));
                             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();
             Party playerParty = mcMMOPlayer.getParty();
 
 
             String oldPartyName = playerParty.getName();
             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
             // This is to prevent party leaders from spamming other players with the rename message
             if (oldPartyName.equalsIgnoreCase(newPartyName)) {
             if (oldPartyName.equalsIgnoreCase(newPartyName)) {

+ 5 - 5
src/main/java/com/gmail/nossr50/config/AutoUpdateConfigLoader.java → src/main/java/com/gmail/nossr50/config/AutoUpdateLegacyConfigLoader.java

@@ -10,22 +10,22 @@ import java.io.IOException;
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.Set;
 
 
-public abstract class AutoUpdateConfigLoader extends ConfigLoader {
-    public AutoUpdateConfigLoader(String relativePath, String fileName, File dataFolder) {
+public abstract class AutoUpdateLegacyConfigLoader extends LegacyConfigLoader {
+    public AutoUpdateLegacyConfigLoader(String relativePath, String fileName, File dataFolder) {
         super(relativePath, fileName, dataFolder);
         super(relativePath, fileName, dataFolder);
     }
     }
 
 
-    public AutoUpdateConfigLoader(String fileName, File dataFolder) {
+    public AutoUpdateLegacyConfigLoader(String fileName, File dataFolder) {
         super(fileName, dataFolder);
         super(fileName, dataFolder);
     }
     }
 
 
     @Deprecated
     @Deprecated
-    public AutoUpdateConfigLoader(String relativePath, String fileName) {
+    public AutoUpdateLegacyConfigLoader(String relativePath, String fileName) {
         super(relativePath, fileName);
         super(relativePath, fileName);
     }
     }
 
 
     @Deprecated
     @Deprecated
-    public AutoUpdateConfigLoader(String fileName) {
+    public AutoUpdateLegacyConfigLoader(String fileName) {
         super(fileName);
         super(fileName);
     }
     }
 
 

+ 11 - 15
src/main/java/com/gmail/nossr50/config/BukkitConfig.java

@@ -19,17 +19,7 @@ public abstract class BukkitConfig {
     protected YamlConfiguration defaultYamlConfig;
     protected YamlConfiguration defaultYamlConfig;
     protected YamlConfiguration config;
     protected YamlConfiguration config;
     protected @NotNull final File dataFolder;
     protected @NotNull final File dataFolder;
-
-    public BukkitConfig(@NotNull String fileName, @NotNull File dataFolder) {
-        mcMMO.p.getLogger().info("[config] Initializing config: " + fileName);
-        this.fileName = fileName;
-        this.dataFolder = dataFolder;
-        configFile = new File(dataFolder, fileName);
-        this.defaultYamlConfig = copyDefaultConfig();
-        this.config = initConfig();
-        updateFile();
-        mcMMO.p.getLogger().info("[config] Config initialized: " + fileName);
-    }
+    private boolean savedDefaults = false;
 
 
     public BukkitConfig(@NotNull String fileName, @NotNull File dataFolder, boolean copyDefaults) {
     public BukkitConfig(@NotNull String fileName, @NotNull File dataFolder, boolean copyDefaults) {
         mcMMO.p.getLogger().info("[config] Initializing config: " + fileName);
         mcMMO.p.getLogger().info("[config] Initializing config: " + fileName);
@@ -37,12 +27,16 @@ public abstract class BukkitConfig {
         this.fileName = fileName;
         this.fileName = fileName;
         this.dataFolder = dataFolder;
         this.dataFolder = dataFolder;
         configFile = new File(dataFolder, fileName);
         configFile = new File(dataFolder, fileName);
-        this.defaultYamlConfig = copyDefaultConfig();
+        this.defaultYamlConfig = saveDefaultConfigToDisk();
         this.config = initConfig();
         this.config = initConfig();
         updateFile();
         updateFile();
         mcMMO.p.getLogger().info("[config] Config initialized: " + fileName);
         mcMMO.p.getLogger().info("[config] Config initialized: " + fileName);
     }
     }
 
 
+    public BukkitConfig(@NotNull String fileName, @NotNull File dataFolder) {
+        this(fileName, dataFolder, true);
+    }
+
     public BukkitConfig(@NotNull String fileName) {
     public BukkitConfig(@NotNull String fileName) {
         this(fileName, mcMMO.p.getDataFolder());
         this(fileName, mcMMO.p.getDataFolder());
     }
     }
@@ -55,10 +49,12 @@ public abstract class BukkitConfig {
      */
      */
     public void updateFile() {
     public void updateFile() {
         try {
         try {
-            if(copyDefaults) {
+            config.save(configFile);
+
+            if(copyDefaults && !savedDefaults) {
                 copyMissingDefaultsFromResource();
                 copyMissingDefaultsFromResource();
+                savedDefaults = true;
             }
             }
-            config.save(configFile);
         } catch (IOException e) {
         } catch (IOException e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
@@ -84,7 +80,7 @@ public abstract class BukkitConfig {
     /**
     /**
      * Copies the config from the JAR to defaults/<fileName>
      * Copies the config from the JAR to defaults/<fileName>
      */
      */
-    YamlConfiguration copyDefaultConfig() {
+    YamlConfiguration saveDefaultConfigToDisk() {
         mcMMO.p.getLogger().info("[config] Copying default config to disk: " + fileName + " to defaults/" + fileName);
         mcMMO.p.getLogger().info("[config] Copying default config to disk: " + fileName + " to defaults/" + fileName);
         try(InputStream inputStream = mcMMO.p.getResource(fileName)) {
         try(InputStream inputStream = mcMMO.p.getResource(fileName)) {
             if(inputStream == null) {
             if(inputStream == null) {

+ 6 - 5
src/main/java/com/gmail/nossr50/config/ConfigLoader.java → src/main/java/com/gmail/nossr50/config/LegacyConfigLoader.java

@@ -7,20 +7,21 @@ import org.jetbrains.annotations.NotNull;
 import java.io.File;
 import java.io.File;
 import java.util.List;
 import java.util.List;
 
 
-public abstract class ConfigLoader {
+@Deprecated
+public abstract class LegacyConfigLoader {
     protected final File configFile;
     protected final File configFile;
     protected final @NotNull File dataFolder;
     protected final @NotNull File dataFolder;
     protected String fileName;
     protected String fileName;
     protected YamlConfiguration config;
     protected YamlConfiguration config;
 
 
-    public ConfigLoader(String relativePath, String fileName, @NotNull File dataFolder) {
+    public LegacyConfigLoader(String relativePath, String fileName, @NotNull File dataFolder) {
         this.fileName = fileName;
         this.fileName = fileName;
         this.dataFolder = dataFolder;
         this.dataFolder = dataFolder;
         configFile = new File(dataFolder, relativePath + File.separator + fileName);
         configFile = new File(dataFolder, relativePath + File.separator + fileName);
         loadFile();
         loadFile();
     }
     }
 
 
-    public ConfigLoader(String fileName, @NotNull File dataFolder) {
+    public LegacyConfigLoader(String fileName, @NotNull File dataFolder) {
         this.fileName = fileName;
         this.fileName = fileName;
         this.dataFolder = dataFolder;
         this.dataFolder = dataFolder;
         configFile = new File(dataFolder, fileName);
         configFile = new File(dataFolder, fileName);
@@ -28,7 +29,7 @@ public abstract class ConfigLoader {
     }
     }
 
 
     @Deprecated
     @Deprecated
-    public ConfigLoader(String relativePath, String fileName) {
+    public LegacyConfigLoader(String relativePath, String fileName) {
         this.fileName = fileName;
         this.fileName = fileName;
         configFile = new File(mcMMO.p.getDataFolder(), relativePath + File.separator + fileName);
         configFile = new File(mcMMO.p.getDataFolder(), relativePath + File.separator + fileName);
         this.dataFolder = mcMMO.p.getDataFolder();
         this.dataFolder = mcMMO.p.getDataFolder();
@@ -36,7 +37,7 @@ public abstract class ConfigLoader {
     }
     }
 
 
     @Deprecated
     @Deprecated
-    public ConfigLoader(String fileName) {
+    public LegacyConfigLoader(String fileName) {
         this.fileName = fileName;
         this.fileName = fileName;
         configFile = new File(mcMMO.p.getDataFolder(), fileName);
         configFile = new File(mcMMO.p.getDataFolder(), fileName);
         this.dataFolder = mcMMO.p.getDataFolder();
         this.dataFolder = mcMMO.p.getDataFolder();

+ 3 - 3
src/main/java/com/gmail/nossr50/config/RankConfig.java

@@ -9,7 +9,7 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.List;
 import java.util.List;
 
 
-public class RankConfig extends AutoUpdateConfigLoader {
+public class RankConfig extends BukkitConfig {
     private static RankConfig instance;
     private static RankConfig instance;
 
 
     public RankConfig() {
     public RankConfig() {
@@ -66,7 +66,7 @@ public class RankConfig extends AutoUpdateConfigLoader {
      */
      */
     public int getSubSkillUnlockLevel(SubSkillType subSkillType, int rank, boolean retroMode) {
     public int getSubSkillUnlockLevel(SubSkillType subSkillType, int rank, boolean retroMode) {
         String key = getRankAddressKey(subSkillType, rank, retroMode);
         String key = getRankAddressKey(subSkillType, rank, retroMode);
-        return config.getInt(key, getInternalConfig().getInt(key));
+        return config.getInt(key, defaultYamlConfig.getInt(key));
     }
     }
 
 
     /**
     /**
@@ -128,7 +128,7 @@ public class RankConfig extends AutoUpdateConfigLoader {
 
 
     private void resetRankValue(@NotNull SubSkillType subSkillType, int rank, boolean retroMode) {
     private void resetRankValue(@NotNull SubSkillType subSkillType, int rank, boolean retroMode) {
         String key = getRankAddressKey(subSkillType, rank, retroMode);
         String key = getRankAddressKey(subSkillType, rank, retroMode);
-        int defaultValue = getInternalConfig().getInt(key);
+        int defaultValue = defaultYamlConfig.getInt(key);
         config.set(key, defaultValue);
         config.set(key, defaultValue);
         mcMMO.p.getLogger().info(key + " SET -> " + defaultValue);
         mcMMO.p.getLogger().info(key + " SET -> " + defaultValue);
     }
     }

+ 1 - 1
src/main/java/com/gmail/nossr50/config/mods/ArmorConfigManager.java

@@ -29,7 +29,7 @@ public class ArmorConfigManager {
                 continue;
                 continue;
             }
             }
 
 
-            modManager.registerCustomArmor(new CustomArmorConfig(fileName));
+            modManager.registerCustomArmor(new CustomArmorLegacyConfig(fileName));
         }
         }
     }
     }
 }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/config/mods/BlockConfigManager.java

@@ -29,7 +29,7 @@ public class BlockConfigManager {
                 continue;
                 continue;
             }
             }
 
 
-            modManager.registerCustomBlocks(new CustomBlockConfig(fileName));
+            modManager.registerCustomBlocks(new CustomBlockLegacyConfig(fileName));
         }
         }
     }
     }
 }
 }

+ 3 - 3
src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java → src/main/java/com/gmail/nossr50/config/mods/CustomArmorLegacyConfig.java

@@ -1,6 +1,6 @@
 package com.gmail.nossr50.config.mods;
 package com.gmail.nossr50.config.mods;
 
 
-import com.gmail.nossr50.config.ConfigLoader;
+import com.gmail.nossr50.config.LegacyConfigLoader;
 import com.gmail.nossr50.datatypes.skills.ItemType;
 import com.gmail.nossr50.datatypes.skills.ItemType;
 import com.gmail.nossr50.datatypes.skills.MaterialType;
 import com.gmail.nossr50.datatypes.skills.MaterialType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
@@ -13,7 +13,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Set;
 import java.util.Set;
 
 
-public class CustomArmorConfig extends ConfigLoader {
+public class CustomArmorLegacyConfig extends LegacyConfigLoader {
     public List<Material> customBoots = new ArrayList<>();
     public List<Material> customBoots = new ArrayList<>();
     public List<Material> customChestplates = new ArrayList<>();
     public List<Material> customChestplates = new ArrayList<>();
     public List<Material> customHelmets = new ArrayList<>();
     public List<Material> customHelmets = new ArrayList<>();
@@ -21,7 +21,7 @@ public class CustomArmorConfig extends ConfigLoader {
     public List<Repairable> repairables = new ArrayList<>();
     public List<Repairable> repairables = new ArrayList<>();
     private boolean needsUpdate = false;
     private boolean needsUpdate = false;
 
 
-    protected CustomArmorConfig(String fileName) {
+    protected CustomArmorLegacyConfig(String fileName) {
         super("mods", fileName);
         super("mods", fileName);
         loadKeys();
         loadKeys();
     }
     }

+ 3 - 3
src/main/java/com/gmail/nossr50/config/mods/CustomBlockConfig.java → src/main/java/com/gmail/nossr50/config/mods/CustomBlockLegacyConfig.java

@@ -1,6 +1,6 @@
 package com.gmail.nossr50.config.mods;
 package com.gmail.nossr50.config.mods;
 
 
-import com.gmail.nossr50.config.ConfigLoader;
+import com.gmail.nossr50.config.LegacyConfigLoader;
 import com.gmail.nossr50.datatypes.mods.CustomBlock;
 import com.gmail.nossr50.datatypes.mods.CustomBlock;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import org.bukkit.Material;
 import org.bukkit.Material;
@@ -11,7 +11,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Set;
 import java.util.Set;
 
 
-public class CustomBlockConfig extends ConfigLoader {
+public class CustomBlockLegacyConfig extends LegacyConfigLoader {
     public List<Material> customExcavationBlocks = new ArrayList<>();
     public List<Material> customExcavationBlocks = new ArrayList<>();
     public List<Material> customHerbalismBlocks = new ArrayList<>();
     public List<Material> customHerbalismBlocks = new ArrayList<>();
     public List<Material> customMiningBlocks = new ArrayList<>();
     public List<Material> customMiningBlocks = new ArrayList<>();
@@ -22,7 +22,7 @@ public class CustomBlockConfig extends ConfigLoader {
     public HashMap<Material, CustomBlock> customBlockMap = new HashMap<>();
     public HashMap<Material, CustomBlock> customBlockMap = new HashMap<>();
     private boolean needsUpdate = false;
     private boolean needsUpdate = false;
 
 
-    protected CustomBlockConfig(String fileName) {
+    protected CustomBlockLegacyConfig(String fileName) {
         super("mods", fileName);
         super("mods", fileName);
         loadKeys();
         loadKeys();
     }
     }

+ 3 - 3
src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java → src/main/java/com/gmail/nossr50/config/mods/CustomEntityLegacyConfig.java

@@ -1,6 +1,6 @@
 package com.gmail.nossr50.config.mods;
 package com.gmail.nossr50.config.mods;
 
 
-import com.gmail.nossr50.config.ConfigLoader;
+import com.gmail.nossr50.config.LegacyConfigLoader;
 import com.gmail.nossr50.datatypes.mods.CustomEntity;
 import com.gmail.nossr50.datatypes.mods.CustomEntity;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import org.apache.commons.lang.ClassUtils;
 import org.apache.commons.lang.ClassUtils;
@@ -9,11 +9,11 @@ import org.bukkit.inventory.ItemStack;
 
 
 import java.util.HashMap;
 import java.util.HashMap;
 
 
-public class CustomEntityConfig extends ConfigLoader {
+public class CustomEntityLegacyConfig extends LegacyConfigLoader {
     public HashMap<String, CustomEntity> customEntityClassMap = new HashMap<>();
     public HashMap<String, CustomEntity> customEntityClassMap = new HashMap<>();
     public HashMap<String, CustomEntity> customEntityTypeMap = new HashMap<>();
     public HashMap<String, CustomEntity> customEntityTypeMap = new HashMap<>();
 
 
-    protected CustomEntityConfig(String fileName) {
+    protected CustomEntityLegacyConfig(String fileName) {
         super("mods", fileName);
         super("mods", fileName);
         loadKeys();
         loadKeys();
     }
     }

+ 3 - 3
src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java → src/main/java/com/gmail/nossr50/config/mods/CustomToolLegacyConfig.java

@@ -1,6 +1,6 @@
 package com.gmail.nossr50.config.mods;
 package com.gmail.nossr50.config.mods;
 
 
-import com.gmail.nossr50.config.ConfigLoader;
+import com.gmail.nossr50.config.LegacyConfigLoader;
 import com.gmail.nossr50.datatypes.mods.CustomTool;
 import com.gmail.nossr50.datatypes.mods.CustomTool;
 import com.gmail.nossr50.datatypes.skills.ItemType;
 import com.gmail.nossr50.datatypes.skills.ItemType;
 import com.gmail.nossr50.datatypes.skills.MaterialType;
 import com.gmail.nossr50.datatypes.skills.MaterialType;
@@ -15,7 +15,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Set;
 import java.util.Set;
 
 
-public class CustomToolConfig extends ConfigLoader {
+public class CustomToolLegacyConfig extends LegacyConfigLoader {
     public List<Material> customAxes = new ArrayList<>();
     public List<Material> customAxes = new ArrayList<>();
     public List<Material> customBows = new ArrayList<>();
     public List<Material> customBows = new ArrayList<>();
     public List<Material> customHoes = new ArrayList<>();
     public List<Material> customHoes = new ArrayList<>();
@@ -26,7 +26,7 @@ public class CustomToolConfig extends ConfigLoader {
     public List<Repairable> repairables = new ArrayList<>();
     public List<Repairable> repairables = new ArrayList<>();
     private boolean needsUpdate = false;
     private boolean needsUpdate = false;
 
 
-    protected CustomToolConfig(String fileName) {
+    protected CustomToolLegacyConfig(String fileName) {
         super("mods", fileName);
         super("mods", fileName);
         loadKeys();
         loadKeys();
     }
     }

+ 1 - 1
src/main/java/com/gmail/nossr50/config/mods/EntityConfigManager.java

@@ -29,7 +29,7 @@ public class EntityConfigManager {
                 continue;
                 continue;
             }
             }
 
 
-            modManager.registerCustomEntities(new CustomEntityConfig(fileName));
+            modManager.registerCustomEntities(new CustomEntityLegacyConfig(fileName));
         }
         }
     }
     }
 }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/config/mods/ToolConfigManager.java

@@ -29,7 +29,7 @@ public class ToolConfigManager {
                 continue;
                 continue;
             }
             }
 
 
-            modManager.registerCustomTools(new CustomToolConfig(fileName));
+            modManager.registerCustomTools(new CustomToolLegacyConfig(fileName));
         }
         }
     }
     }
 }
 }

+ 2 - 2
src/main/java/com/gmail/nossr50/config/skills/alchemy/PotionConfig.java

@@ -1,6 +1,6 @@
 package com.gmail.nossr50.config.skills.alchemy;
 package com.gmail.nossr50.config.skills.alchemy;
 
 
-import com.gmail.nossr50.config.ConfigLoader;
+import com.gmail.nossr50.config.LegacyConfigLoader;
 import com.gmail.nossr50.datatypes.skills.alchemy.AlchemyPotion;
 import com.gmail.nossr50.datatypes.skills.alchemy.AlchemyPotion;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import org.bukkit.ChatColor;
 import org.bukkit.ChatColor;
@@ -15,7 +15,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
-public class PotionConfig extends ConfigLoader {
+public class PotionConfig extends LegacyConfigLoader {
     private static PotionConfig instance;
     private static PotionConfig instance;
 
 
     private final List<ItemStack> concoctionsIngredientsTierOne = new ArrayList<>();
     private final List<ItemStack> concoctionsIngredientsTierOne = new ArrayList<>();

+ 2 - 2
src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java

@@ -17,8 +17,8 @@ public class RepairConfig extends BukkitConfig {
     private final HashSet<String> notSupported;
     private final HashSet<String> notSupported;
     private List<Repairable> repairables;
     private List<Repairable> repairables;
 
 
-    public RepairConfig(String fileName) {
-        super(fileName, false);
+    public RepairConfig(String fileName, boolean copyDefaults) {
+        super(fileName, copyDefaults);
         notSupported = new HashSet<>();
         notSupported = new HashSet<>();
         loadKeys();
         loadKeys();
     }
     }

+ 2 - 2
src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfigManager.java

@@ -16,7 +16,7 @@ public class RepairConfigManager {
         Pattern pattern = Pattern.compile("repair\\.(?:.+)\\.yml");
         Pattern pattern = Pattern.compile("repair\\.(?:.+)\\.yml");
         File dataFolder = plugin.getDataFolder();
         File dataFolder = plugin.getDataFolder();
 
 
-        RepairConfig mainRepairConfig = new RepairConfig(REPAIR_VANILLA_YML);
+        RepairConfig mainRepairConfig = new RepairConfig(REPAIR_VANILLA_YML, true);
         repairables.addAll(mainRepairConfig.getLoadedRepairables());
         repairables.addAll(mainRepairConfig.getLoadedRepairables());
 
 
         for (String fileName : dataFolder.list()) {
         for (String fileName : dataFolder.list()) {
@@ -33,7 +33,7 @@ public class RepairConfigManager {
                 continue;
                 continue;
             }
             }
 
 
-            RepairConfig rConfig = new RepairConfig(fileName);
+            RepairConfig rConfig = new RepairConfig(fileName, false);
             repairables.addAll(rConfig.getLoadedRepairables());
             repairables.addAll(rConfig.getLoadedRepairables());
         }
         }
     }
     }

+ 2 - 2
src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java

@@ -20,8 +20,8 @@ public class SalvageConfig extends BukkitConfig {
     private final HashSet<String> notSupported;
     private final HashSet<String> notSupported;
     private Set<Salvageable> salvageables;
     private Set<Salvageable> salvageables;
 
 
-    public SalvageConfig(String fileName) {
-        super(fileName);
+    public SalvageConfig(String fileName, boolean copyDefaults) {
+        super(fileName, copyDefaults);
         notSupported = new HashSet<>();
         notSupported = new HashSet<>();
         loadKeys();
         loadKeys();
     }
     }

+ 2 - 2
src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfigManager.java

@@ -17,7 +17,7 @@ public class SalvageConfigManager {
         Pattern pattern = Pattern.compile("salvage\\.(?:.+)\\.yml");
         Pattern pattern = Pattern.compile("salvage\\.(?:.+)\\.yml");
         File dataFolder = plugin.getDataFolder();
         File dataFolder = plugin.getDataFolder();
 
 
-        SalvageConfig mainSalvageConfig = new SalvageConfig(SALVAGE_VANILLA_YML);
+        SalvageConfig mainSalvageConfig = new SalvageConfig(SALVAGE_VANILLA_YML, true);
         salvageables.addAll(mainSalvageConfig.getLoadedSalvageables());
         salvageables.addAll(mainSalvageConfig.getLoadedSalvageables());
 
 
         for (String fileName : dataFolder.list()) {
         for (String fileName : dataFolder.list()) {
@@ -34,7 +34,7 @@ public class SalvageConfigManager {
                 continue;
                 continue;
             }
             }
 
 
-            SalvageConfig salvageConfig = new SalvageConfig(fileName);
+            SalvageConfig salvageConfig = new SalvageConfig(fileName, false);
             salvageables.addAll(salvageConfig.getLoadedSalvageables());
             salvageables.addAll(salvageConfig.getLoadedSalvageables());
         }
         }
     }
     }

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

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

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

@@ -50,6 +50,7 @@ public class FishingManager extends SkillManager {
     private long lastWarnedExhaust = 0L;
     private long lastWarnedExhaust = 0L;
     private FishHook fishHookReference;
     private FishHook fishHookReference;
     private BoundingBox lastFishingBoundingBox;
     private BoundingBox lastFishingBoundingBox;
+    private boolean sameTarget;
     private Item fishingCatch;
     private Item fishingCatch;
     private Location hookLocation;
     private Location hookLocation;
     private int fishCaughtCounter = 1;
     private int fishCaughtCounter = 1;
@@ -127,33 +128,34 @@ public class FishingManager extends SkillManager {
         return hasFished;
         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);
         BoundingBox newCastBoundingBox = makeBoundingBox(centerOfCastVector);
+        this.sameTarget = lastFishingBoundingBox != null && lastFishingBoundingBox.overlaps(newCastBoundingBox);
 
 
-        boolean sameTarget = lastFishingBoundingBox != null && lastFishingBoundingBox.overlaps(newCastBoundingBox);
-
-        if(sameTarget)
+        if (this.sameTarget) {
             fishCaughtCounter++;
             fishCaughtCounter++;
-        else
+        }
+        else {
             fishCaughtCounter = 1;
             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()));
             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) {
     public static BoundingBox makeBoundingBox(Vector centerOfCastVector) {

+ 8 - 8
src/main/java/com/gmail/nossr50/util/ModManager.java

@@ -1,9 +1,9 @@
 package com.gmail.nossr50.util;
 package com.gmail.nossr50.util;
 
 
-import com.gmail.nossr50.config.mods.CustomArmorConfig;
-import com.gmail.nossr50.config.mods.CustomBlockConfig;
-import com.gmail.nossr50.config.mods.CustomEntityConfig;
-import com.gmail.nossr50.config.mods.CustomToolConfig;
+import com.gmail.nossr50.config.mods.CustomArmorLegacyConfig;
+import com.gmail.nossr50.config.mods.CustomBlockLegacyConfig;
+import com.gmail.nossr50.config.mods.CustomEntityLegacyConfig;
+import com.gmail.nossr50.config.mods.CustomToolLegacyConfig;
 import com.gmail.nossr50.datatypes.mods.CustomBlock;
 import com.gmail.nossr50.datatypes.mods.CustomBlock;
 import com.gmail.nossr50.datatypes.mods.CustomEntity;
 import com.gmail.nossr50.datatypes.mods.CustomEntity;
 import com.gmail.nossr50.datatypes.mods.CustomTool;
 import com.gmail.nossr50.datatypes.mods.CustomTool;
@@ -52,7 +52,7 @@ public class ModManager {
     private final List<Material> customSwords   = new ArrayList<>();
     private final List<Material> customSwords   = new ArrayList<>();
     private final HashMap<Material, CustomTool> customToolMap = new HashMap<>();
     private final HashMap<Material, CustomTool> customToolMap = new HashMap<>();
 
 
-    public void registerCustomArmor(CustomArmorConfig config) {
+    public void registerCustomArmor(CustomArmorLegacyConfig config) {
         customBoots.addAll(config.customBoots);
         customBoots.addAll(config.customBoots);
         customChestplates.addAll(config.customChestplates);
         customChestplates.addAll(config.customChestplates);
         customHelmets.addAll(config.customHelmets);
         customHelmets.addAll(config.customHelmets);
@@ -60,7 +60,7 @@ public class ModManager {
         repairables.addAll(config.repairables);
         repairables.addAll(config.repairables);
     }
     }
 
 
-    public void registerCustomBlocks(CustomBlockConfig config) {
+    public void registerCustomBlocks(CustomBlockLegacyConfig config) {
         customExcavationBlocks.addAll(config.customExcavationBlocks);
         customExcavationBlocks.addAll(config.customExcavationBlocks);
         customHerbalismBlocks.addAll(config.customHerbalismBlocks);
         customHerbalismBlocks.addAll(config.customHerbalismBlocks);
         customMiningBlocks.addAll(config.customMiningBlocks);
         customMiningBlocks.addAll(config.customMiningBlocks);
@@ -71,12 +71,12 @@ public class ModManager {
         customBlockMap.putAll(config.customBlockMap);
         customBlockMap.putAll(config.customBlockMap);
     }
     }
 
 
-    public void registerCustomEntities(CustomEntityConfig config) {
+    public void registerCustomEntities(CustomEntityLegacyConfig config) {
         customEntityClassMap.putAll(config.customEntityClassMap);
         customEntityClassMap.putAll(config.customEntityClassMap);
         customEntityTypeMap.putAll(config.customEntityTypeMap);
         customEntityTypeMap.putAll(config.customEntityTypeMap);
     }
     }
 
 
-    public void registerCustomTools(CustomToolConfig config) {
+    public void registerCustomTools(CustomToolLegacyConfig config) {
         customAxes.addAll(config.customAxes);
         customAxes.addAll(config.customAxes);
         customBows.addAll(config.customBows);
         customBows.addAll(config.customBows);
         customHoes.addAll(config.customHoes);
         customHoes.addAll(config.customHoes);