Browse Source

Second Smelt makes use of its own section in Bonus Drops in config.yml

Co-authored-by: t00thpick1 <t00thpick1dirko@gmail.com>
nossr50 5 years ago
parent
commit
fdd951f1f1
100 changed files with 385 additions and 337 deletions
  1. 11 0
      Changelog.txt
  2. 1 1
      src/main/java/com/gmail/nossr50/api/PartyAPI.java
  3. 1 1
      src/main/java/com/gmail/nossr50/api/SkillAPI.java
  4. 2 2
      src/main/java/com/gmail/nossr50/chat/ChatManagerFactory.java
  5. 3 2
      src/main/java/com/gmail/nossr50/commands/MHDCommand.java
  6. 16 22
      src/main/java/com/gmail/nossr50/commands/McImportCommand.java
  7. 8 7
      src/main/java/com/gmail/nossr50/commands/McconvertCommand.java
  8. 2 1
      src/main/java/com/gmail/nossr50/commands/McmmoCommand.java
  9. 3 2
      src/main/java/com/gmail/nossr50/commands/McnotifyCommand.java
  10. 4 3
      src/main/java/com/gmail/nossr50/commands/McscoreboardCommand.java
  11. 4 3
      src/main/java/com/gmail/nossr50/commands/ToggleCommand.java
  12. 5 4
      src/main/java/com/gmail/nossr50/commands/XprateCommand.java
  13. 2 1
      src/main/java/com/gmail/nossr50/commands/admin/McmmoReloadLocaleCommand.java
  14. 2 1
      src/main/java/com/gmail/nossr50/commands/admin/PlayerDebugCommand.java
  15. 4 3
      src/main/java/com/gmail/nossr50/commands/chat/ChatCommand.java
  16. 2 1
      src/main/java/com/gmail/nossr50/commands/database/ConvertDatabaseCommand.java
  17. 3 2
      src/main/java/com/gmail/nossr50/commands/database/McpurgeCommand.java
  18. 4 3
      src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java
  19. 3 2
      src/main/java/com/gmail/nossr50/commands/database/MmoshowdbCommand.java
  20. 2 1
      src/main/java/com/gmail/nossr50/commands/experience/ConvertExperienceCommand.java
  21. 5 4
      src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java
  22. 5 4
      src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java
  23. 4 3
      src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreModeCommand.java
  24. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyAcceptCommand.java
  25. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyChangeOwnerCommand.java
  26. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyChangePasswordCommand.java
  27. 13 12
      src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java
  28. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyCreateCommand.java
  29. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyDisbandCommand.java
  30. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyHelpCommand.java
  31. 4 3
      src/main/java/com/gmail/nossr50/commands/party/PartyInfoCommand.java
  32. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyInviteCommand.java
  33. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyItemShareCommand.java
  34. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyJoinCommand.java
  35. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyKickCommand.java
  36. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyLockCommand.java
  37. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyQuitCommand.java
  38. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyRenameCommand.java
  39. 2 1
      src/main/java/com/gmail/nossr50/commands/party/PartyXpShareCommand.java
  40. 2 1
      src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceAcceptCommand.java
  41. 5 4
      src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceCommand.java
  42. 2 1
      src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceDisbandCommand.java
  43. 2 1
      src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceInviteCommand.java
  44. 2 1
      src/main/java/com/gmail/nossr50/commands/party/teleport/PtpAcceptAnyCommand.java
  45. 2 1
      src/main/java/com/gmail/nossr50/commands/party/teleport/PtpAcceptCommand.java
  46. 5 4
      src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java
  47. 2 1
      src/main/java/com/gmail/nossr50/commands/party/teleport/PtpToggleCommand.java
  48. 4 3
      src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java
  49. 3 2
      src/main/java/com/gmail/nossr50/commands/player/MccooldownCommand.java
  50. 4 3
      src/main/java/com/gmail/nossr50/commands/player/McrankCommand.java
  51. 3 2
      src/main/java/com/gmail/nossr50/commands/player/McstatsCommand.java
  52. 5 4
      src/main/java/com/gmail/nossr50/commands/player/MctopCommand.java
  53. 1 1
      src/main/java/com/gmail/nossr50/commands/player/XPBarCommand.java
  54. 2 1
      src/main/java/com/gmail/nossr50/commands/server/Mcmmoupgrade.java
  55. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java
  56. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/AlchemyCommand.java
  57. 5 4
      src/main/java/com/gmail/nossr50/commands/skills/AprilCommand.java
  58. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java
  59. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java
  60. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java
  61. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java
  62. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java
  63. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java
  64. 4 3
      src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java
  65. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java
  66. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java
  67. 10 12
      src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java
  68. 4 3
      src/main/java/com/gmail/nossr50/commands/skills/SkillGuideCommand.java
  69. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java
  70. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java
  71. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java
  72. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java
  73. 1 1
      src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java
  74. 1 1
      src/main/java/com/gmail/nossr50/config/AdvancedConfig.java
  75. 9 9
      src/main/java/com/gmail/nossr50/config/AutoUpdateConfigLoader.java
  76. 1 1
      src/main/java/com/gmail/nossr50/config/Config.java
  77. 1 1
      src/main/java/com/gmail/nossr50/config/RankConfig.java
  78. 1 1
      src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java
  79. 5 5
      src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java
  80. 2 2
      src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java
  81. 8 8
      src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java
  82. 1 1
      src/main/java/com/gmail/nossr50/config/party/ItemWeightConfig.java
  83. 14 14
      src/main/java/com/gmail/nossr50/config/skills/alchemy/PotionConfig.java
  84. 3 3
      src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java
  85. 1 1
      src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfigManager.java
  86. 3 3
      src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java
  87. 1 1
      src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfigManager.java
  88. 15 15
      src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java
  89. 42 42
      src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java
  90. 12 13
      src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java
  91. 2 1
      src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java
  92. 9 9
      src/main/java/com/gmail/nossr50/datatypes/party/Party.java
  93. 4 12
      src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java
  94. 5 6
      src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java
  95. 3 3
      src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java
  96. 10 10
      src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java
  97. 3 3
      src/main/java/com/gmail/nossr50/datatypes/skills/subskills/interfaces/Rank.java
  98. 2 1
      src/main/java/com/gmail/nossr50/events/chat/McMMOChatEvent.java
  99. 2 1
      src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java
  100. 2 1
      src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java

+ 11 - 0
Changelog.txt

@@ -1,5 +1,16 @@
 Version 2.1.134
+    Minor code cleanup
+    Smelting now has a Bonus Drops section in config.yml
+    Smelting now only doubles smelting results for items which have bonus drop entries in the config
+    Fixed a bug where players could set each other on fire when partied or when PVP was disabled
     Fixed a NPE that could happen with thrown potions
+    Fixed a potential NPE when damaging player armor with Axes
+    Fixed a potential NPE when damaging a player with Blast Mining
+    Fixed a potential NPE when checking tools related to Super Abilities
+    Fixed a potential NPE when checking the Chimaera Wing
+    Fixed a potential NPE when creating party member lists
+    Fixed a potential NPE when fishing
+    Fixed a potential NPE when players right click blocks
     Fixed a locale mistake in locale hu_HU
     Fixed a locale mistake in locale ru
     Changed the UUID updater task to not catastrophically fail when requests failed

+ 1 - 1
src/main/java/com/gmail/nossr50/api/PartyAPI.java

@@ -185,7 +185,7 @@ public final class PartyAPI {
      */
     @Deprecated
     public static List<OfflinePlayer> getOnlineAndOfflineMembers(Player player) {
-        List<OfflinePlayer> members = new ArrayList<OfflinePlayer>();
+        List<OfflinePlayer> members = new ArrayList<>();
 
         for (UUID memberUniqueId : PartyManager.getAllMembers(player).keySet()) {
             OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberUniqueId);

+ 1 - 1
src/main/java/com/gmail/nossr50/api/SkillAPI.java

@@ -82,7 +82,7 @@ public final class SkillAPI {
     }
 
     private static List<String> getListFromEnum(List<PrimarySkillType> skillsTypes) {
-        List<String> skills = new ArrayList<String>();
+        List<String> skills = new ArrayList<>();
 
         for (PrimarySkillType primarySkillType : skillsTypes) {
             skills.add(primarySkillType.name());

+ 2 - 2
src/main/java/com/gmail/nossr50/chat/ChatManagerFactory.java

@@ -6,8 +6,8 @@ import org.bukkit.plugin.Plugin;
 import java.util.HashMap;
 
 public class ChatManagerFactory {
-    private static final HashMap<Plugin, AdminChatManager> adminChatManagers = new HashMap<Plugin, AdminChatManager>();
-    private static final HashMap<Plugin, PartyChatManager> partyChatManagers = new HashMap<Plugin, PartyChatManager>();
+    private static final HashMap<Plugin, AdminChatManager> adminChatManagers = new HashMap<>();
+    private static final HashMap<Plugin, PartyChatManager> partyChatManagers = new HashMap<>();
 
     public static ChatManager getChatManager(Plugin plugin, ChatMode mode) {
         switch (mode) {

+ 3 - 2
src/main/java/com/gmail/nossr50/commands/MHDCommand.java

@@ -10,13 +10,14 @@ import com.google.common.collect.ImmutableList;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
 
 public class MHDCommand implements TabExecutor {
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (mcMMO.getDatabaseManager() instanceof SQLDatabaseManager) {
             SQLDatabaseManager m = (SQLDatabaseManager) mcMMO.getDatabaseManager();
             m.resetMobHealthSettings();
@@ -39,7 +40,7 @@ public class MHDCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         return ImmutableList.of();
     }
 }

+ 16 - 22
src/main/java/com/gmail/nossr50/commands/McImportCommand.java

@@ -7,6 +7,7 @@ import org.bukkit.Material;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
+import org.jetbrains.annotations.NotNull;
 
 import java.io.*;
 import java.util.ArrayList;
@@ -17,7 +18,7 @@ public class McImportCommand implements CommandExecutor {
     int fileAmount;
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 0) {
             importModConfig();
             return true;
@@ -31,7 +32,7 @@ public class McImportCommand implements CommandExecutor {
         mcMMO.p.getLogger().info("Starting import of mod materials...");
         fileAmount = 0;
 
-        HashMap<ModConfigType, ArrayList<String>> materialNames = new HashMap<ModConfigType, ArrayList<String>>();
+        HashMap<ModConfigType, ArrayList<String>> materialNames = new HashMap<>();
 
         BufferedReader in = null;
 
@@ -63,11 +64,10 @@ public class McImportCommand implements CommandExecutor {
                 ModConfigType type = ModConfigType.getModConfigType(materialName);
 
                 if (!materialNames.containsKey(type)) {
-                    materialNames.put(type, new ArrayList<String>());
+                    materialNames.put(type, new ArrayList<>());
                 }
 
                 materialNames.get(type).add(materialName);
-                continue;
             }
         }
         catch (FileNotFoundException e) {
@@ -91,13 +91,13 @@ public class McImportCommand implements CommandExecutor {
 
     private void createOutput(HashMap<ModConfigType, ArrayList<String>> materialNames) {
         for (ModConfigType modConfigType : materialNames.keySet()) {
-            HashMap<String, ArrayList<String>> materialNamesType = new HashMap<String, ArrayList<String>>();
+            HashMap<String, ArrayList<String>> materialNamesType = new HashMap<>();
 
             for (String materialName : materialNames.get(modConfigType)) {
                 String modName = Misc.getModName(materialName);
 
                 if (!materialNamesType.containsKey(modName)) {
-                    materialNamesType.put(modName, new ArrayList<String>());
+                    materialNamesType.put(modName, new ArrayList<>());
                 }
 
                 materialNamesType.get(modName).add(materialName);
@@ -167,16 +167,10 @@ public class McImportCommand implements CommandExecutor {
 
                 out = new FileWriter(outputFile);
                 out.write(writer.toString());
-            }
-            catch (IOException e) {
+            } catch (Exception e) {
                 e.printStackTrace();
                 return;
-            }
-            catch (Exception e) {
-                e.printStackTrace();
-                return;
-            }
-            finally {
+            } finally {
                 tryClose(out);
                 fileAmount++;
             }
@@ -199,7 +193,7 @@ public class McImportCommand implements CommandExecutor {
     }
 
     private HashMap<String, ArrayList<String>> getConfigSectionsBlocks(String modName, HashMap<String, ArrayList<String>> materialNames) {
-        HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
+        HashMap<String, ArrayList<String>> configSections = new HashMap<>();
 
         // Go through all the materials and categorise them under a skill
         for (String materialName : materialNames.get(modName)) {
@@ -218,7 +212,7 @@ public class McImportCommand implements CommandExecutor {
             }
 
             if (!configSections.containsKey(skillName)) {
-                configSections.put(skillName, new ArrayList<String>());
+                configSections.put(skillName, new ArrayList<>());
             }
 
             ArrayList<String> skillContents = configSections.get(skillName);
@@ -238,7 +232,7 @@ public class McImportCommand implements CommandExecutor {
     }
 
     private HashMap<String, ArrayList<String>> getConfigSectionsTools(String modName, HashMap<String, ArrayList<String>> materialNames) {
-        HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
+        HashMap<String, ArrayList<String>> configSections = new HashMap<>();
 
         // Go through all the materials and categorise them under a tool type
         for (String materialName : materialNames.get(modName)) {
@@ -263,7 +257,7 @@ public class McImportCommand implements CommandExecutor {
             }
 
             if (!configSections.containsKey(toolType)) {
-                configSections.put(toolType, new ArrayList<String>());
+                configSections.put(toolType, new ArrayList<>());
             }
 
             ArrayList<String> skillContents = configSections.get(toolType);
@@ -278,7 +272,7 @@ public class McImportCommand implements CommandExecutor {
     }
 
     private HashMap<String, ArrayList<String>> getConfigSectionsArmor(String modName, HashMap<String, ArrayList<String>> materialNames) {
-        HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
+        HashMap<String, ArrayList<String>> configSections = new HashMap<>();
 
         // Go through all the materials and categorise them under an armor type
         for (String materialName : materialNames.get(modName)) {
@@ -297,7 +291,7 @@ public class McImportCommand implements CommandExecutor {
             }
 
             if (!configSections.containsKey(toolType)) {
-                configSections.put(toolType, new ArrayList<String>());
+                configSections.put(toolType, new ArrayList<>());
             }
 
             ArrayList<String> skillContents = configSections.get(toolType);
@@ -323,14 +317,14 @@ public class McImportCommand implements CommandExecutor {
     }
 
     private HashMap<String, ArrayList<String>> getConfigSectionsUnknown(String modName, HashMap<String, ArrayList<String>> materialNames) {
-        HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
+        HashMap<String, ArrayList<String>> configSections = new HashMap<>();
 
         // Go through all the materials and print them
         for (String materialName : materialNames.get(modName)) {
             String configKey = "UNIDENTIFIED";
 
             if (!configSections.containsKey(configKey)) {
-                configSections.put(configKey, new ArrayList<String>());
+                configSections.put(configKey, new ArrayList<>());
             }
 
             ArrayList<String> skillContents = configSections.get(configKey);

+ 8 - 7
src/main/java/com/gmail/nossr50/commands/McconvertCommand.java

@@ -12,6 +12,7 @@ import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -26,8 +27,8 @@ public class McconvertCommand implements TabExecutor {
     private final CommandExecutor experienceConvertCommand = new ConvertExperienceCommand();
 
     static {
-        ArrayList<String> formulaTypes = new ArrayList<String>();
-        ArrayList<String> databaseTypes = new ArrayList<String>();
+        ArrayList<String> formulaTypes = new ArrayList<>();
+        ArrayList<String> databaseTypes = new ArrayList<>();
 
         for (FormulaType type : FormulaType.values()) {
             formulaTypes.add(type.toString());
@@ -53,7 +54,7 @@ public class McconvertCommand implements TabExecutor {
     }
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {
             if (args[0].equalsIgnoreCase("database") || args[0].equalsIgnoreCase("db")) {
                 return databaseConvertCommand.onCommand(sender, command, label, args);
@@ -67,17 +68,17 @@ public class McconvertCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         switch (args.length) {
             case 1:
-                return StringUtil.copyPartialMatches(args[0], SUBCOMMANDS, new ArrayList<String>(SUBCOMMANDS.size()));
+                return StringUtil.copyPartialMatches(args[0], SUBCOMMANDS, new ArrayList<>(SUBCOMMANDS.size()));
             case 2:
                 if (args[0].equalsIgnoreCase("database") || args[0].equalsIgnoreCase("db")) {
-                    return StringUtil.copyPartialMatches(args[0], DATABASE_TYPES, new ArrayList<String>(DATABASE_TYPES.size()));
+                    return StringUtil.copyPartialMatches(args[0], DATABASE_TYPES, new ArrayList<>(DATABASE_TYPES.size()));
                 }
 
                 if (args[0].equalsIgnoreCase("experience") || args[0].equalsIgnoreCase("xp") || args[0].equalsIgnoreCase("exp")) {
-                    return StringUtil.copyPartialMatches(args[0], FORMULA_TYPES, new ArrayList<String>(FORMULA_TYPES.size()));
+                    return StringUtil.copyPartialMatches(args[0], FORMULA_TYPES, new ArrayList<>(FORMULA_TYPES.size()));
                 }
 
                 return ImmutableList.of();

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/McmmoCommand.java

@@ -9,10 +9,11 @@ import org.bukkit.ChatColor;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
+import org.jetbrains.annotations.NotNull;
 
 public class McmmoCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 0:
                 if (!Permissions.mcmmoDescription(sender)) {

+ 3 - 2
src/main/java/com/gmail/nossr50/commands/McnotifyCommand.java

@@ -9,12 +9,13 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
 
 public class McnotifyCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -34,7 +35,7 @@ public class McnotifyCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         return ImmutableList.of();
     }
 }

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/McscoreboardCommand.java

@@ -9,6 +9,7 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,7 +18,7 @@ public class McscoreboardCommand implements TabExecutor {
     private static final List<String> FIRST_ARGS = ImmutableList.of("keep", "time", "clear");
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -69,9 +70,9 @@ public class McscoreboardCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
-            return StringUtil.copyPartialMatches(args[0], FIRST_ARGS, new ArrayList<String>(FIRST_ARGS.size()));
+            return StringUtil.copyPartialMatches(args[0], FIRST_ARGS, new ArrayList<>(FIRST_ARGS.size()));
         }
         return ImmutableList.of();
     }

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/ToggleCommand.java

@@ -8,13 +8,14 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public abstract class ToggleCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 0:
                 if (CommandUtils.noConsoleUsage(sender)) {
@@ -60,10 +61,10 @@ public abstract class ToggleCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
             List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
-            return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
+            return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size()));
         }
         return ImmutableList.of();
     }

+ 5 - 4
src/main/java/com/gmail/nossr50/commands/XprateCommand.java

@@ -16,6 +16,7 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -24,7 +25,7 @@ public class XprateCommand implements TabExecutor {
     private final double ORIGINAL_XP_RATE = ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier();
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 1:
                 if (!args[0].equalsIgnoreCase("reset") &&  !args[0].equalsIgnoreCase("clear")) {
@@ -116,16 +117,16 @@ public class XprateCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         switch (args.length) {
             case 1:
                 if (StringUtils.isInt(args[0])) {
                     return ImmutableList.of();
                 }
 
-                return StringUtil.copyPartialMatches(args[0], CommandUtils.RESET_OPTIONS, new ArrayList<String>(CommandUtils.RESET_OPTIONS.size()));
+                return StringUtil.copyPartialMatches(args[0], CommandUtils.RESET_OPTIONS, new ArrayList<>(CommandUtils.RESET_OPTIONS.size()));
             case 2:
-                return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
+                return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
             default:
                 return ImmutableList.of();
         }

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/admin/McmmoReloadLocaleCommand.java

@@ -5,13 +5,14 @@ import com.gmail.nossr50.util.Permissions;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * @author Mark Vainomaa
  */
 public final class McmmoReloadLocaleCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 0) {
             if (!Permissions.reloadlocale(sender)) {
                 sender.sendMessage(command.getPermissionMessage());

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/admin/PlayerDebugCommand.java

@@ -7,11 +7,12 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PlayerDebugCommand implements CommandExecutor {
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if(sender instanceof Player) {
             McMMOPlayer mcMMOPlayer = UserManager.getPlayer((Player) sender);
             mcMMOPlayer.toggleDebugMode(); //Toggle debug mode

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/chat/ChatCommand.java

@@ -16,6 +16,7 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -30,7 +31,7 @@ public abstract class ChatCommand implements TabExecutor {
     }
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         McMMOPlayer mcMMOPlayer;
 
         switch (args.length) {
@@ -88,9 +89,9 @@ public abstract class ChatCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
-            return StringUtil.copyPartialMatches(args[0], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
+            return StringUtil.copyPartialMatches(args[0], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
         }
         return ImmutableList.of();
     }

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/database/ConvertDatabaseCommand.java

@@ -13,10 +13,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class ConvertDatabaseCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {
             DatabaseType previousType = DatabaseType.getDatabaseType(args[1]);
             DatabaseType newType = mcMMO.getDatabaseManager().getDatabaseType();

+ 3 - 2
src/main/java/com/gmail/nossr50/commands/database/McpurgeCommand.java

@@ -7,12 +7,13 @@ import com.google.common.collect.ImmutableList;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
 
 public class McpurgeCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 0) {
             mcMMO.getDatabaseManager().purgePowerlessUsers();
 
@@ -27,7 +28,7 @@ public class McpurgeCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         return ImmutableList.of();
     }
 }

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/database/McremoveCommand.java

@@ -10,6 +10,7 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,7 +18,7 @@ import java.util.UUID;
 
 public class McremoveCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 1) {
             String playerName = CommandUtils.getMatchedPlayerName(args[0]);
 
@@ -43,10 +44,10 @@ public class McremoveCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
             List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
-            return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
+            return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size()));
         }
         return ImmutableList.of();
     }

+ 3 - 2
src/main/java/com/gmail/nossr50/commands/database/MmoshowdbCommand.java

@@ -7,12 +7,13 @@ import com.google.common.collect.ImmutableList;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
 
 public class MmoshowdbCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 0) {
             Class<?> clazz = DatabaseManagerFactory.getCustomDatabaseManagerClass();
 
@@ -28,7 +29,7 @@ public class MmoshowdbCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         return ImmutableList.of();
     }
 }

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/experience/ConvertExperienceCommand.java

@@ -10,12 +10,13 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.Locale;
 
 public class ConvertExperienceCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {
             FormulaType previousType = mcMMO.getFormulaManager().getPreviousFormulaType();
             FormulaType newType = FormulaType.getFormulaType(args[1].toUpperCase(Locale.ENGLISH));

+ 5 - 4
src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java

@@ -14,6 +14,7 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -21,7 +22,7 @@ import java.util.UUID;
 
 public abstract class ExperienceCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         PrimarySkillType skill;
 
         switch (args.length) {
@@ -119,13 +120,13 @@ public abstract class ExperienceCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         switch (args.length) {
             case 1:
                 List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
-                return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
+                return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size()));
             case 2:
-                return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<String>(PrimarySkillType.SKILL_NAMES.size()));
+                return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<>(PrimarySkillType.SKILL_NAMES.size()));
             default:
                 return ImmutableList.of();
         }

+ 5 - 4
src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java

@@ -17,6 +17,7 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -28,7 +29,7 @@ import java.util.UUID;
  */
 public class SkillresetCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         PrimarySkillType skill;
         switch (args.length) {
             case 1:
@@ -103,13 +104,13 @@ public class SkillresetCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         switch (args.length) {
             case 1:
                 List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
-                return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
+                return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size()));
             case 2:
-                return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<String>(PrimarySkillType.SKILL_NAMES.size()));
+                return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<>(PrimarySkillType.SKILL_NAMES.size()));
             default:
                 return ImmutableList.of();
         }

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreModeCommand.java

@@ -9,6 +9,7 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -18,7 +19,7 @@ public abstract class HardcoreModeCommand implements TabExecutor {
     protected final DecimalFormat percent = new DecimalFormat("##0.00%");
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 0:
                 if (!checkTogglePermissions(sender)) {
@@ -108,13 +109,13 @@ public abstract class HardcoreModeCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
             if (StringUtils.isDouble(args[0])) {
                 return ImmutableList.of();
             }
 
-            return StringUtil.copyPartialMatches(args[0], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
+            return StringUtil.copyPartialMatches(args[0], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
         }
         return ImmutableList.of();
     }

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

@@ -8,10 +8,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyAcceptCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 1) {
             Player player = (Player) sender;
 

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

@@ -11,10 +11,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyChangeOwnerCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {//Check if player profile is loaded
             if (UserManager.getPlayer((Player) sender) == null) {
                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

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

@@ -7,10 +7,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyChangePasswordCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if(UserManager.getPlayer((Player) sender) == null)
         {
             sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

+ 13 - 12
src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java

@@ -16,6 +16,7 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,7 +29,7 @@ public class PartyCommand implements TabExecutor {
     private static final List<String> ITEMSHARE_COMPLETIONS = ImmutableList.of("none", "equal", "random", "loot", "mining", "herbalism", "woodcutting", "misc");
 
     static {
-        ArrayList<String> subcommands = new ArrayList<String>();
+        ArrayList<String> subcommands = new ArrayList<>();
 
         for (PartySubcommandType subcommand : PartySubcommandType.values()) {
             subcommands.add(subcommand.toString());
@@ -58,7 +59,7 @@ public class PartyCommand implements TabExecutor {
     private final CommandExecutor partyAllianceCommand       = new PartyAllianceCommand();
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -171,10 +172,10 @@ public class PartyCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         switch (args.length) {
             case 1:
-                return StringUtil.copyPartialMatches(args[0], PARTY_SUBCOMMANDS, new ArrayList<String>(PARTY_SUBCOMMANDS.size()));
+                return StringUtil.copyPartialMatches(args[0], PARTY_SUBCOMMANDS, new ArrayList<>(PARTY_SUBCOMMANDS.size()));
             case 2:
                 PartySubcommandType subcommand = PartySubcommandType.getSubcommand(args[0]);
 
@@ -188,18 +189,18 @@ public class PartyCommand implements TabExecutor {
                     case KICK:
                     case OWNER:
                         List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
-                        return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<String>(playerNames.size()));
+                        return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<>(playerNames.size()));
                     case XPSHARE:
-                        return StringUtil.copyPartialMatches(args[1], XPSHARE_COMPLETIONS, new ArrayList<String>(XPSHARE_COMPLETIONS.size()));
+                        return StringUtil.copyPartialMatches(args[1], XPSHARE_COMPLETIONS, new ArrayList<>(XPSHARE_COMPLETIONS.size()));
                     case ITEMSHARE:
-                        return StringUtil.copyPartialMatches(args[1], ITEMSHARE_COMPLETIONS, new ArrayList<String>(ITEMSHARE_COMPLETIONS.size()));
+                        return StringUtil.copyPartialMatches(args[1], ITEMSHARE_COMPLETIONS, new ArrayList<>(ITEMSHARE_COMPLETIONS.size()));
                     case LOCK:
                     case CHAT:
-                        return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
+                        return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
                     case PASSWORD:
-                        return StringUtil.copyPartialMatches(args[1], CommandUtils.RESET_OPTIONS, new ArrayList<String>(CommandUtils.RESET_OPTIONS.size()));
+                        return StringUtil.copyPartialMatches(args[1], CommandUtils.RESET_OPTIONS, new ArrayList<>(CommandUtils.RESET_OPTIONS.size()));
                     case TELEPORT:
-                        List<String> matches = StringUtil.copyPartialMatches(args[1], PtpCommand.TELEPORT_SUBCOMMANDS, new ArrayList<String>(PtpCommand.TELEPORT_SUBCOMMANDS.size()));
+                        List<String> matches = StringUtil.copyPartialMatches(args[1], PtpCommand.TELEPORT_SUBCOMMANDS, new ArrayList<>(PtpCommand.TELEPORT_SUBCOMMANDS.size()));
 
                         if (matches.size() == 0) {
                             Player player = (Player) sender;
@@ -214,7 +215,7 @@ public class PartyCommand implements TabExecutor {
                             Party party = UserManager.getPlayer(player).getParty();
 
                             playerNames = party.getOnlinePlayerNames(player);
-                            return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<String>(playerNames.size()));
+                            return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<>(playerNames.size()));
                         }
 
                         return matches;
@@ -223,7 +224,7 @@ public class PartyCommand implements TabExecutor {
                 }
             case 3:
                 if (PartySubcommandType.getSubcommand(args[0]) == PartySubcommandType.ITEMSHARE && isItemShareCategory(args[1])) {
-                    return StringUtil.copyPartialMatches(args[2], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
+                    return StringUtil.copyPartialMatches(args[2], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
                 }
 
                 return ImmutableList.of();

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

@@ -8,10 +8,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyCreateCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 2:
             case 3:

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

@@ -9,10 +9,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyDisbandCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 1) {
             if (UserManager.getPlayer((Player) sender) == null) {
                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

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

@@ -4,11 +4,12 @@ import com.gmail.nossr50.locale.LocaleLoader;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyHelpCommand implements CommandExecutor {
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 1) {
             sender.sendMessage(LocaleLoader.getString("Party.Help.3", "/party join", "/party quit"));
             sender.sendMessage(LocaleLoader.getString("Party.Help.1", "/party create"));

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/party/PartyInfoCommand.java

@@ -13,13 +13,14 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class PartyInfoCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 0:
             case 1:
@@ -60,8 +61,8 @@ public class PartyInfoCommand implements CommandExecutor {
     private void displayPartyFeatures(Player player, Party party) {
         player.sendMessage(LocaleLoader.getString("Commands.Party.Features.Header"));
 
-        List<String> unlockedPartyFeatures = new ArrayList<String>();
-        List<String> lockedPartyFeatures = new ArrayList<String>();
+        List<String> unlockedPartyFeatures = new ArrayList<>();
+        List<String> lockedPartyFeatures = new ArrayList<>();
 
         for (PartyFeature partyFeature : PartyFeature.values()) {
             if (!partyFeature.hasPermission(player)) {

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

@@ -11,10 +11,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyInviteCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {
             String targetName = CommandUtils.getMatchedPlayerName(args[1]);
             McMMOPlayer mcMMOTarget = UserManager.getOfflinePlayer(targetName);

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

@@ -13,12 +13,13 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.Locale;
 
 public class PartyItemShareCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if(UserManager.getPlayer((Player) sender) == null)
         {
             sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

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

@@ -10,10 +10,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyJoinCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 2:
             case 3:

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

@@ -12,10 +12,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyKickCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {
             if (UserManager.getPlayer((Player) sender) == null) {
                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

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

@@ -9,10 +9,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyLockCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 1:
                 if (args[0].equalsIgnoreCase("lock")) {

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

@@ -10,10 +10,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyQuitCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 1) {
             Player player = (Player) sender;
 

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

@@ -10,10 +10,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyRenameCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {
             if (UserManager.getPlayer((Player) sender) == null) {
                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

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

@@ -12,10 +12,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyXpShareCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if(UserManager.getPlayer((Player) sender) == null)
         {
             sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceAcceptCommand.java

@@ -8,10 +8,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyAllianceAcceptCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {
             if (UserManager.getPlayer((Player) sender) == null) {
                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

+ 5 - 4
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceCommand.java

@@ -16,6 +16,7 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -32,7 +33,7 @@ public class PartyAllianceCommand implements TabExecutor {
     private final CommandExecutor partyAllianceDisbandCommand = new PartyAllianceDisbandCommand();
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -108,13 +109,13 @@ public class PartyAllianceCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender commandSender, Command command, String label, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 1) {
-            List<String> matches = StringUtil.copyPartialMatches(args[0], ALLIANCE_SUBCOMMANDS, new ArrayList<String>(ALLIANCE_SUBCOMMANDS.size()));
+            List<String> matches = StringUtil.copyPartialMatches(args[0], ALLIANCE_SUBCOMMANDS, new ArrayList<>(ALLIANCE_SUBCOMMANDS.size()));
 
             if (matches.size() == 0) {
                 List<String> playerNames = CommandUtils.getOnlinePlayerNames(commandSender);
-                return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
+                return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size()));
             }
 
             return matches;

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceDisbandCommand.java

@@ -9,10 +9,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyAllianceDisbandCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 2) {
             if (UserManager.getPlayer((Player) sender) == null) {
                 sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/party/alliance/PartyAllianceInviteCommand.java

@@ -10,10 +10,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PartyAllianceInviteCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 3) {
             String targetName = CommandUtils.getMatchedPlayerName(args[2]);
             McMMOPlayer mcMMOTarget = UserManager.getOfflinePlayer(targetName);

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/party/teleport/PtpAcceptAnyCommand.java

@@ -7,10 +7,11 @@ import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
+import org.jetbrains.annotations.NotNull;
 
 public class PtpAcceptAnyCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (!Permissions.partyTeleportAcceptAll(sender)) {
             sender.sendMessage(command.getPermissionMessage());
             return true;

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/party/teleport/PtpAcceptCommand.java

@@ -11,10 +11,11 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 public class PtpAcceptCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (!Permissions.partyTeleportAccept(sender)) {
             sender.sendMessage(command.getPermissionMessage());
             return true;

+ 5 - 4
src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java

@@ -26,6 +26,7 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -38,7 +39,7 @@ public class PtpCommand implements TabExecutor {
     private final CommandExecutor ptpAcceptCommand = new PtpAcceptCommand();
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -129,9 +130,9 @@ public class PtpCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
-            List<String> matches = StringUtil.copyPartialMatches(args[0], TELEPORT_SUBCOMMANDS, new ArrayList<String>(TELEPORT_SUBCOMMANDS.size()));
+            List<String> matches = StringUtil.copyPartialMatches(args[0], TELEPORT_SUBCOMMANDS, new ArrayList<>(TELEPORT_SUBCOMMANDS.size()));
 
             if (matches.size() == 0) {
                 if (UserManager.getPlayer((Player) sender) == null) {
@@ -147,7 +148,7 @@ public class PtpCommand implements TabExecutor {
                 }
 
                 List<String> playerNames = mcMMOPlayer.getParty().getOnlinePlayerNames(player);
-                return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
+                return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size()));
             }
 
             return matches;

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/party/teleport/PtpToggleCommand.java

@@ -7,10 +7,11 @@ import com.gmail.nossr50.util.player.UserManager;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
+import org.jetbrains.annotations.NotNull;
 
 public class PtpToggleCommand implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (!Permissions.partyTeleportToggle(sender)) {
             sender.sendMessage(command.getPermissionMessage());
             return true;

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java

@@ -16,13 +16,14 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class InspectCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (args.length == 1) {
             String playerName = CommandUtils.getMatchedPlayerName(args[0]);
             McMMOPlayer mcMMOPlayer = UserManager.getOfflinePlayer(playerName);
@@ -91,10 +92,10 @@ public class InspectCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
             List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
-            return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
+            return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size()));
         }
         return ImmutableList.of();
     }

+ 3 - 2
src/main/java/com/gmail/nossr50/commands/player/MccooldownCommand.java

@@ -12,12 +12,13 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
 
 public class MccooldownCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -67,7 +68,7 @@ public class MccooldownCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         return ImmutableList.of();
     }
 }

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/player/McrankCommand.java

@@ -15,13 +15,14 @@ import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.metadata.FixedMetadataValue;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class McrankCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 0:
                 if (CommandUtils.noConsoleUsage(sender)) {
@@ -72,10 +73,10 @@ public class McrankCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
             List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
-            return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
+            return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<>(playerNames.size()));
         }
         return ImmutableList.of();
     }

+ 3 - 2
src/main/java/com/gmail/nossr50/commands/player/McstatsCommand.java

@@ -10,12 +10,13 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
 
 public class McstatsCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -61,7 +62,7 @@ public class McstatsCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         return ImmutableList.of();
     }
 }

+ 5 - 4
src/main/java/com/gmail/nossr50/commands/player/MctopCommand.java

@@ -17,13 +17,14 @@ import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.metadata.FixedMetadataValue;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class MctopCommand implements TabExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         PrimarySkillType skill = null;
 
         switch (args.length) {
@@ -66,9 +67,9 @@ public class MctopCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
-            return StringUtil.copyPartialMatches(args[0], PrimarySkillType.SKILL_NAMES, new ArrayList<String>(PrimarySkillType.SKILL_NAMES.size()));
+            return StringUtil.copyPartialMatches(args[0], PrimarySkillType.SKILL_NAMES, new ArrayList<>(PrimarySkillType.SKILL_NAMES.size()));
         }
         return ImmutableList.of();
     }
@@ -88,7 +89,7 @@ public class MctopCommand implements TabExecutor {
             long cooldownMillis = Math.max(Config.getInstance().getDatabasePlayerCooldown(), 1750);
 
             if (mcMMOPlayer.getDatabaseATS() + cooldownMillis > System.currentTimeMillis()) {
-                double seconds = ((mcMMOPlayer.getDatabaseATS() + cooldownMillis) - System.currentTimeMillis()) / 1000;
+                double seconds = ((mcMMOPlayer.getDatabaseATS() + cooldownMillis) - System.currentTimeMillis()) / 1000.0D;
                 if (seconds < 1) {
                     seconds = 1;
                 }

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/player/XPBarCommand.java

@@ -103,7 +103,7 @@ public class XPBarCommand implements TabExecutor {
                 return StringUtil.copyPartialMatches(args[0], options, new ArrayList<>(ExperienceBarManager.XPBarSettingTarget.values().length));
             case 2:
                 if(!args[0].equalsIgnoreCase(ExperienceBarManager.XPBarSettingTarget.RESET.toString()))
-                    return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<String>(PrimarySkillType.SKILL_NAMES.size()));
+                    return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<>(PrimarySkillType.SKILL_NAMES.size()));
             default:
                 return ImmutableList.of();
         }

+ 2 - 1
src/main/java/com/gmail/nossr50/commands/server/Mcmmoupgrade.java

@@ -3,13 +3,14 @@ package com.gmail.nossr50.commands.server;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * This command facilitates switching the skill system scale between classic and modern scale
  */
 public class Mcmmoupgrade implements CommandExecutor {
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         return false;
     }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java

@@ -44,7 +44,7 @@ public class AcrobaticsCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canDodge) {
             messages.add(getStatMessage(SubSkillType.ACROBATICS_DODGE, dodgeChance)

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/AlchemyCommand.java

@@ -74,7 +74,7 @@ public class AlchemyCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canCatalysis) {
             messages.add(getStatMessage(SubSkillType.ALCHEMY_CATALYSIS, brewSpeed)

+ 5 - 4
src/main/java/com/gmail/nossr50/commands/skills/AprilCommand.java

@@ -10,6 +10,7 @@ import org.bukkit.command.Command;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -22,7 +23,7 @@ public class AprilCommand implements TabExecutor {
     protected DecimalFormat decimal = new DecimalFormat("##0.00");
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -98,7 +99,7 @@ public class AprilCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
             return ImmutableList.of("?");
         }
@@ -106,7 +107,7 @@ public class AprilCommand implements TabExecutor {
     }
 
     private List<String> effectsDisplay(FakeSkillType fakeSkillType) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         switch (fakeSkillType) {
             case MACHO:
@@ -152,7 +153,7 @@ public class AprilCommand implements TabExecutor {
     }
 
     private List<String> statsDisplay(FakeSkillType fakeSkillType) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         switch (fakeSkillType) {
             case MACHO:

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java

@@ -59,7 +59,7 @@ public class ArcheryCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canRetrieve) {
             messages.add(getStatMessage(SubSkillType.ARCHERY_ARROW_RETRIEVAL, retrieveChance)

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java

@@ -72,7 +72,7 @@ public class AxesCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canImpact) {
             messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Axes.Ability.Bonus.2"), LocaleLoader.getString("Axes.Ability.Bonus.3", impactDamage)));

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java

@@ -43,7 +43,7 @@ public class ExcavationCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         ExcavationManager excavationManager = UserManager.getPlayer(player).getExcavationManager();
 

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java

@@ -128,7 +128,7 @@ public class FishingCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
         
         if (canFishermansDiet) {
             messages.add(getStatMessage(false, true, SubSkillType.FISHING_FISHERMANS_DIET, String.valueOf(fishermansDietRank)));

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java

@@ -99,7 +99,7 @@ public class HerbalismCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canDoubleDrop) {
             messages.add(getStatMessage(SubSkillType.HERBALISM_DOUBLE_DROPS, doubleDropChance)

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java

@@ -78,7 +78,7 @@ public class MiningCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canBiggerBombs) {
             messages.add(getStatMessage(true, true, SubSkillType.MINING_BLAST_MINING, String.valueOf(blastRadiusIncrease)));

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java

@@ -13,6 +13,7 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
 import org.bukkit.util.StringUtil;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -23,7 +24,7 @@ import java.util.List;
 public class MmoInfoCommand implements TabExecutor {
 
     @Override
-    public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
+    public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, String[] args) {
         /*
          * Only allow players to use this command
          */
@@ -61,9 +62,9 @@ public class MmoInfoCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
-            return StringUtil.copyPartialMatches(args[0], PrimarySkillType.SUBSKILL_NAMES, new ArrayList<String>(PrimarySkillType.SUBSKILL_NAMES.size()));
+            return StringUtil.copyPartialMatches(args[0], PrimarySkillType.SUBSKILL_NAMES, new ArrayList<>(PrimarySkillType.SUBSKILL_NAMES.size()));
         }
         return ImmutableList.of();
     }

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java

@@ -91,7 +91,7 @@ public class RepairCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canArcaneForge) {
             RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java

@@ -36,7 +36,7 @@ public class SalvageCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
         SalvageManager salvageManager = UserManager.getPlayer(player).getSalvageManager();
 
         if (canScrapCollector) {

+ 10 - 12
src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java

@@ -26,6 +26,7 @@ import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.TabExecutor;
 import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -49,7 +50,7 @@ public abstract class SkillCommand implements TabExecutor {
     }
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         if (CommandUtils.noConsoleUsage(sender)) {
             return true;
         }
@@ -161,31 +162,28 @@ public abstract class SkillCommand implements TabExecutor {
 
 
             Set<PrimarySkillType> parents = FamilyTree.getParents(skill);
-            ArrayList<PrimarySkillType> parentList = new ArrayList<>();
 
             //TODO: Add JSON here
-            for (PrimarySkillType parent : parents) {
-                parentList.add(parent);
-                /*player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level.Overhaul", mcMMOPlayer.getSkillLevel(parent), mcMMOPlayer.getSkillXpLevel(parent), mcMMOPlayer.getXpToLevel(parent)))*/
-            }
+            /*player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level.Overhaul", mcMMOPlayer.getSkillLevel(parent), mcMMOPlayer.getSkillXpLevel(parent), mcMMOPlayer.getXpToLevel(parent)))*/
+            ArrayList<PrimarySkillType> parentList = new ArrayList<>(parents);
 
-            String parentMessage = "";
+            StringBuilder parentMessage = new StringBuilder();
 
             for(int i = 0; i < parentList.size(); i++)
             {
                 if(i+1 < parentList.size())
                 {
-                    parentMessage += LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getName(), mcMMOPlayer.getSkillLevel(parentList.get(i)));
-                    parentMessage += ChatColor.GRAY+", ";
+                    parentMessage.append(LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getName(), mcMMOPlayer.getSkillLevel(parentList.get(i))));
+                    parentMessage.append(ChatColor.GRAY).append(", ");
                 } else {
-                    parentMessage += LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getName(), mcMMOPlayer.getSkillLevel(parentList.get(i)));
+                    parentMessage.append(LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getName(), mcMMOPlayer.getSkillLevel(parentList.get(i))));
                 }
             }
 
             //XP GAIN METHOD
             player.sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain.Child")));
 
-            player.sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, parentMessage));
+            player.sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, parentMessage.toString()));
             //LEVEL
             //player.sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, skillValue));
 
@@ -211,7 +209,7 @@ public abstract class SkillCommand implements TabExecutor {
     }
 
     @Override
-    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+    public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
         if (args.length == 1) {
             return ImmutableList.of("?");
         }

+ 4 - 3
src/main/java/com/gmail/nossr50/commands/skills/SkillGuideCommand.java

@@ -6,6 +6,7 @@ import com.gmail.nossr50.util.StringUtils;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -22,7 +23,7 @@ public class SkillGuideCommand implements CommandExecutor {
     }
 
     @Override
-    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
         switch (args.length) {
             case 1:
                 if (!args[0].equals("?")) {
@@ -67,7 +68,7 @@ public class SkillGuideCommand implements CommandExecutor {
 
     private ArrayList<String> grabPageContents(int page) {
         int pageIndexStart = 8 * (page - 1); // Determine what string to start at
-        ArrayList<String> allStrings = new ArrayList<String>();
+        ArrayList<String> allStrings = new ArrayList<>();
 
         allStrings.add(header);
 
@@ -86,7 +87,7 @@ public class SkillGuideCommand implements CommandExecutor {
     }
 
     private ArrayList<String> getGuide(PrimarySkillType skill) {
-        ArrayList<String> guide = new ArrayList<String>();
+        ArrayList<String> guide = new ArrayList<>();
 
         for (int i = 0; i < 10; i++) {
             String[] section = LocaleLoader.getString("Guides." + StringUtils.getCapitalized(skill.toString()) + ".Section." + i).split("\n");

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java

@@ -62,7 +62,7 @@ public class SmeltingCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         /*if (canFluxMine) {
             messages.add(getStatMessage(SubSkillType.SMELTING_FLUX_MINING, str_fluxMiningChance)

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java

@@ -68,7 +68,7 @@ public class SwordsCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         int ruptureTicks = UserManager.getPlayer(player).getSwordsManager().getRuptureBleedTicks();
         double ruptureDamagePlayers =  RankUtils.getRank(player, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamagePlayer() * 1.5D : AdvancedConfig.getInstance().getRuptureDamagePlayer();

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java

@@ -56,7 +56,7 @@ public class TamingCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canEnvironmentallyAware) {
             messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.0"), LocaleLoader.getString("Taming.Ability.Bonus.1")));

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java

@@ -84,7 +84,7 @@ public class UnarmedCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canDeflect) {
             messages.add(getStatMessage(SubSkillType.UNARMED_ARROW_DEFLECT, deflectChance)

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java

@@ -63,7 +63,7 @@ public class WoodcuttingCommand extends SkillCommand {
 
     @Override
     protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
 
         if (canDoubleDrop) {
             messages.add(getStatMessage(SubSkillType.WOODCUTTING_HARVEST_LUMBER, doubleDropChance)

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

@@ -28,7 +28,7 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
     @Override
     protected boolean validateKeys() {
         // Validate all the settings!
-        List<String> reason = new ArrayList<String>();
+        List<String> reason = new ArrayList<>();
 
         /* GENERAL */
         if (getAbilityLength() < 1) {

+ 9 - 9
src/main/java/com/gmail/nossr50/config/AutoUpdateConfigLoader.java

@@ -28,10 +28,10 @@ public abstract class AutoUpdateConfigLoader extends ConfigLoader {
 
         boolean needSave = false;
 
-        Set<String> oldKeys = new HashSet<String>(configKeys);
+        Set<String> oldKeys = new HashSet<>(configKeys);
         oldKeys.removeAll(internalConfigKeys);
 
-        Set<String> newKeys = new HashSet<String>(internalConfigKeys);
+        Set<String> newKeys = new HashSet<>(internalConfigKeys);
         newKeys.removeAll(configKeys);
 
         // Don't need a re-save if we have old keys sticking around?
@@ -66,17 +66,17 @@ public abstract class AutoUpdateConfigLoader extends ConfigLoader {
             try {
                 // Read internal
                 BufferedReader reader = new BufferedReader(new InputStreamReader(plugin.getResource(fileName)));
-                LinkedHashMap<String, String> comments = new LinkedHashMap<String, String>();
-                String temp = "";
+                LinkedHashMap<String, String> comments = new LinkedHashMap<>();
+                StringBuilder temp = new StringBuilder();
 
                 String line;
                 while ((line = reader.readLine()) != null) {
                     if (line.contains("#")) {
-                        temp += line + "\n";
+                        temp.append(line).append("\n");
                     }
                     else if (line.contains(":")) {
                         line = line.substring(0, line.indexOf(":") + 1);
-                        if (!temp.isEmpty()) {
+                        if (temp.length() > 0) {
                             if(comments.containsKey(line)) {
                                 int index = 0;
                                 while(comments.containsKey(line + index)) {
@@ -86,14 +86,14 @@ public abstract class AutoUpdateConfigLoader extends ConfigLoader {
                                 line = line + index;
                             }
 
-                            comments.put(line, temp);
-                            temp = "";
+                            comments.put(line, temp.toString());
+                            temp = new StringBuilder();
                         }
                     }
                 }
 
                 // Dump to the new one
-                HashMap<String, Integer> indexed = new HashMap<String, Integer>();
+                HashMap<String, Integer> indexed = new HashMap<>();
                 for (String key : comments.keySet()) {
                     String actualkey = key.substring(0, key.indexOf(":") + 1);
 

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

@@ -39,7 +39,7 @@ public class Config extends AutoUpdateConfigLoader {
     @Override
     protected boolean validateKeys() {
         // Validate all the settings!
-        List<String> reason = new ArrayList<String>();
+        List<String> reason = new ArrayList<>();
 
         /* General Settings */
         if (getSaveInterval() <= 0) {

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

@@ -31,7 +31,7 @@ public class RankConfig extends AutoUpdateConfigLoader {
 
     @Override
     protected boolean validateKeys() {
-        List<String> reason = new ArrayList<String>();
+        List<String> reason = new ArrayList<>();
 
         /*
          * In the future this method will check keys for all skills, but for now it only checks overhauled skills

+ 1 - 1
src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java

@@ -38,7 +38,7 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
 
     @Override
     protected boolean validateKeys() {
-        List<String> reason = new ArrayList<String>();
+        List<String> reason = new ArrayList<>();
 
         /*
          * FORMULA SETTINGS

+ 5 - 5
src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java

@@ -15,12 +15,12 @@ import java.util.Set;
 public class CustomArmorConfig extends ConfigLoader {
     private boolean needsUpdate = false;
 
-    public List<Material> customBoots       = new ArrayList<Material>();
-    public List<Material> customChestplates = new ArrayList<Material>();
-    public List<Material> customHelmets     = new ArrayList<Material>();
-    public List<Material> customLeggings    = new ArrayList<Material>();
+    public List<Material> customBoots       = new ArrayList<>();
+    public List<Material> customChestplates = new ArrayList<>();
+    public List<Material> customHelmets     = new ArrayList<>();
+    public List<Material> customLeggings    = new ArrayList<>();
 
-    public List<Repairable> repairables = new ArrayList<Repairable>();
+    public List<Repairable> repairables = new ArrayList<>();
 
     protected CustomArmorConfig(String fileName) {
         super("mods", fileName);

+ 2 - 2
src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java

@@ -9,8 +9,8 @@ import org.bukkit.inventory.ItemStack;
 import java.util.HashMap;
 
 public class CustomEntityConfig extends ConfigLoader {
-    public HashMap<String, CustomEntity> customEntityClassMap = new HashMap<String, CustomEntity>();
-    public HashMap<String, CustomEntity> customEntityTypeMap  = new HashMap<String, CustomEntity>();
+    public HashMap<String, CustomEntity> customEntityClassMap = new HashMap<>();
+    public HashMap<String, CustomEntity> customEntityTypeMap  = new HashMap<>();
 
     protected CustomEntityConfig(String fileName) {
         super("mods", fileName);

+ 8 - 8
src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java

@@ -17,16 +17,16 @@ import java.util.Set;
 public class CustomToolConfig extends ConfigLoader {
     private boolean needsUpdate = false;
 
-    public List<Material> customAxes     = new ArrayList<Material>();
-    public List<Material> customBows     = new ArrayList<Material>();
-    public List<Material> customHoes     = new ArrayList<Material>();
-    public List<Material> customPickaxes = new ArrayList<Material>();
-    public List<Material> customShovels  = new ArrayList<Material>();
-    public List<Material> customSwords   = new ArrayList<Material>();
+    public List<Material> customAxes     = new ArrayList<>();
+    public List<Material> customBows     = new ArrayList<>();
+    public List<Material> customHoes     = new ArrayList<>();
+    public List<Material> customPickaxes = new ArrayList<>();
+    public List<Material> customShovels  = new ArrayList<>();
+    public List<Material> customSwords   = new ArrayList<>();
 
-    public HashMap<Material, CustomTool> customToolMap = new HashMap<Material, CustomTool>();
+    public HashMap<Material, CustomTool> customToolMap = new HashMap<>();
 
-    public List<Repairable> repairables = new ArrayList<Repairable>();
+    public List<Repairable> repairables = new ArrayList<>();
 
     protected CustomToolConfig(String fileName) {
         super("mods", fileName);

+ 1 - 1
src/main/java/com/gmail/nossr50/config/party/ItemWeightConfig.java

@@ -27,7 +27,7 @@ public class ItemWeightConfig extends ConfigLoader {
     }
 
     public HashSet<Material> getMiscItems() {
-        HashSet<Material> miscItems = new HashSet<Material>();
+        HashSet<Material> miscItems = new HashSet<>();
 
         for (String item : config.getStringList("Party_Shareables.Misc_Items")) {
             Material material = Material.getMaterial(item.toUpperCase(Locale.ENGLISH));

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

@@ -18,16 +18,16 @@ import java.util.Map;
 public class PotionConfig extends ConfigLoader {
     private static PotionConfig instance;
 
-    private final List<ItemStack> concoctionsIngredientsTierOne = new ArrayList<ItemStack>();
-    private final List<ItemStack> concoctionsIngredientsTierTwo = new ArrayList<ItemStack>();
-    private final List<ItemStack> concoctionsIngredientsTierThree = new ArrayList<ItemStack>();
-    private final List<ItemStack> concoctionsIngredientsTierFour = new ArrayList<ItemStack>();
-    private final List<ItemStack> concoctionsIngredientsTierFive = new ArrayList<ItemStack>();
-    private final List<ItemStack> concoctionsIngredientsTierSix = new ArrayList<ItemStack>();
-    private final List<ItemStack> concoctionsIngredientsTierSeven = new ArrayList<ItemStack>();
-    private final List<ItemStack> concoctionsIngredientsTierEight = new ArrayList<ItemStack>();
+    private final List<ItemStack> concoctionsIngredientsTierOne = new ArrayList<>();
+    private final List<ItemStack> concoctionsIngredientsTierTwo = new ArrayList<>();
+    private final List<ItemStack> concoctionsIngredientsTierThree = new ArrayList<>();
+    private final List<ItemStack> concoctionsIngredientsTierFour = new ArrayList<>();
+    private final List<ItemStack> concoctionsIngredientsTierFive = new ArrayList<>();
+    private final List<ItemStack> concoctionsIngredientsTierSix = new ArrayList<>();
+    private final List<ItemStack> concoctionsIngredientsTierSeven = new ArrayList<>();
+    private final List<ItemStack> concoctionsIngredientsTierEight = new ArrayList<>();
 
-    private final Map<String, AlchemyPotion> potionMap = new HashMap<String, AlchemyPotion>();
+    private final Map<String, AlchemyPotion> potionMap = new HashMap<>();
 
     private PotionConfig() {
         super("potions.yml");
@@ -137,14 +137,14 @@ public class PotionConfig extends ConfigLoader {
                 material = Material.valueOf(mat);
             }
 
-            List<String> lore = new ArrayList<String>();
+            List<String> lore = new ArrayList<>();
             if (potion_section.contains("Lore")) {
                 for (String line : potion_section.getStringList("Lore")) {
                     lore.add(ChatColor.translateAlternateColorCodes('&', line));
                 }
             }
 
-            List<PotionEffect> effects = new ArrayList<PotionEffect>();
+            List<PotionEffect> effects = new ArrayList<>();
             if (potion_section.contains("Effects")) {
                 for (String effect : potion_section.getStringList("Effects")) {
                     String[] parts = effect.split(" ");
@@ -162,7 +162,7 @@ public class PotionConfig extends ConfigLoader {
                 }
             }
             
-            Color color = null;
+            Color color;
             if (potion_section.contains("Color")) {
                 color = Color.fromRGB(potion_section.getInt("Color"));
             }
@@ -170,7 +170,7 @@ public class PotionConfig extends ConfigLoader {
                 color = this.generateColor(effects);
             }
 
-            Map<ItemStack, String> children = new HashMap<ItemStack, String>();
+            Map<ItemStack, String> children = new HashMap<>();
             if (potion_section.contains("Children")) {
                 for (String child : potion_section.getConfigurationSection("Children").getKeys(false)) {
                     ItemStack ingredient = loadIngredient(child);
@@ -255,7 +255,7 @@ public class PotionConfig extends ConfigLoader {
     
     public Color generateColor(List<PotionEffect> effects) {
         if (effects != null && !effects.isEmpty()) {
-            List<Color> colors = new ArrayList<Color>();
+            List<Color> colors = new ArrayList<>();
             for (PotionEffect effect : effects) {
                 if (effect.getType().getColor() != null) {
                     colors.add(effect.getType().getColor());

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

@@ -25,7 +25,7 @@ public class RepairConfig extends ConfigLoader {
 
     @Override
     protected void loadKeys() {
-        repairables = new ArrayList<Repairable>();
+        repairables = new ArrayList<>();
 
         if (!config.isConfigurationSection("Repairables")) {
             mcMMO.p.getLogger().severe("Could not find Repairables section in " + fileName);
@@ -42,7 +42,7 @@ public class RepairConfig extends ConfigLoader {
             }
 
             // Validate all the things!
-            List<String> reason = new ArrayList<String>();
+            List<String> reason = new ArrayList<>();
 
             // Item Material
             Material itemMaterial = Material.matchMaterial(key);
@@ -177,7 +177,7 @@ public class RepairConfig extends ConfigLoader {
     }
 
     protected List<Repairable> getLoadedRepairables() {
-        return repairables == null ? new ArrayList<Repairable>() : repairables;
+        return repairables == null ? new ArrayList<>() : repairables;
     }
 
     private boolean noErrorsInRepairable(List<String> issues) {

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

@@ -11,7 +11,7 @@ import java.util.List;
 import java.util.regex.Pattern;
 
 public class RepairConfigManager {
-    private final List<Repairable> repairables = new ArrayList<Repairable>();
+    private final List<Repairable> repairables = new ArrayList<>();
 
     public RepairConfigManager(mcMMO plugin) {
         Pattern pattern = Pattern.compile("repair\\.(?:.+)\\.yml");

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

@@ -28,7 +28,7 @@ public class SalvageConfig extends ConfigLoader {
 
     @Override
     protected void loadKeys() {
-        salvageables = new ArrayList<Salvageable>();
+        salvageables = new ArrayList<>();
 
         if (!config.isConfigurationSection("Salvageables")) {
             mcMMO.p.getLogger().severe("Could not find Salvageables section in " + fileName);
@@ -59,7 +59,7 @@ public class SalvageConfig extends ConfigLoader {
 
         for (String key : keys) {
             // Validate all the things!
-            List<String> reason = new ArrayList<String>();
+            List<String> reason = new ArrayList<>();
 
             // Item Material
             Material itemMaterial = Material.matchMaterial(key);
@@ -195,7 +195,7 @@ public class SalvageConfig extends ConfigLoader {
     }
 
     protected List<Salvageable> getLoadedSalvageables() {
-        return salvageables == null ? new ArrayList<Salvageable>() : salvageables;
+        return salvageables == null ? new ArrayList<>() : salvageables;
     }
 
     private boolean noErrorsInSalvageable(List<String> issues) {

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

@@ -11,7 +11,7 @@ import java.util.List;
 import java.util.regex.Pattern;
 
 public class SalvageConfigManager {
-    private final List<Salvageable> salvageables = new ArrayList<Salvageable>();
+    private final List<Salvageable> salvageables = new ArrayList<>();
 
     public SalvageConfigManager(mcMMO plugin) {
         Pattern pattern = Pattern.compile("salvage\\.(?:.+)\\.yml");

+ 15 - 15
src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java

@@ -24,13 +24,13 @@ public class TreasureConfig extends ConfigLoader {
 
     private static TreasureConfig instance;
 
-    public HashMap<String, List<ExcavationTreasure>> excavationMap = new HashMap<String, List<ExcavationTreasure>>();
+    public HashMap<String, List<ExcavationTreasure>> excavationMap = new HashMap<>();
 
-    public HashMap<EntityType, List<ShakeTreasure>> shakeMap  = new HashMap<EntityType, List<ShakeTreasure>>();
-    public HashMap<String, List<HylianTreasure>>    hylianMap = new HashMap<String, List<HylianTreasure>>();
+    public HashMap<EntityType, List<ShakeTreasure>> shakeMap  = new HashMap<>();
+    public HashMap<String, List<HylianTreasure>>    hylianMap = new HashMap<>();
 
-    public HashMap<Rarity, List<FishingTreasure>>     fishingRewards      = new HashMap<Rarity, List<FishingTreasure>>();
-    public HashMap<Rarity, List<EnchantmentTreasure>> fishingEnchantments = new HashMap<Rarity, List<EnchantmentTreasure>>();
+    public HashMap<Rarity, List<FishingTreasure>>     fishingRewards      = new HashMap<>();
+    public HashMap<Rarity, List<EnchantmentTreasure>> fishingEnchantments = new HashMap<>();
 
     private TreasureConfig() {
         super("treasures.yml");
@@ -49,7 +49,7 @@ public class TreasureConfig extends ConfigLoader {
     @Override
     protected boolean validateKeys() {
         // Validate all the settings!
-        List<String> reason = new ArrayList<String>();
+        List<String> reason = new ArrayList<>();
         for (String tier : config.getConfigurationSection("Enchantment_Drop_Rates").getKeys(false)) {
             double totalEnchantDropRate = 0;
             double totalItemDropRate = 0;
@@ -116,13 +116,13 @@ public class TreasureConfig extends ConfigLoader {
         // Initialize fishing HashMap
         for (Rarity rarity : Rarity.values()) {
             if (!fishingRewards.containsKey(rarity)) {
-                fishingRewards.put(rarity, (new ArrayList<FishingTreasure>()));
+                fishingRewards.put(rarity, (new ArrayList<>()));
             }
         }
 
         for (String treasureName : treasureSection.getKeys(false)) {
             // Validate all the things!
-            List<String> reason = new ArrayList<String>();
+            List<String> reason = new ArrayList<>();
 
             String[] treasureInfo = treasureName.split("[|]");
             String materialName = treasureInfo[0];
@@ -135,7 +135,7 @@ public class TreasureConfig extends ConfigLoader {
             if (materialName.contains("INVENTORY")) {
                 // Use magic material BEDROCK to know that we're grabbing something from the inventory and not a normal treasure
                 if (!shakeMap.containsKey(EntityType.PLAYER))
-                    shakeMap.put(EntityType.PLAYER, new ArrayList<ShakeTreasure>());
+                    shakeMap.put(EntityType.PLAYER, new ArrayList<>());
                 shakeMap.get(EntityType.PLAYER).add(new ShakeTreasure(new ItemStack(Material.BEDROCK, 1, (byte) 0), 1, getInventoryStealDropChance(), getInventoryStealDropLevel()));
                 continue;
             } else {
@@ -218,7 +218,7 @@ public class TreasureConfig extends ConfigLoader {
                     }
 
                     if (config.contains(type + "." + treasureName + ".Lore")) {
-                        List<String> lore = new ArrayList<String>();
+                        List<String> lore = new ArrayList<>();
                         for (String s : config.getStringList(type + "." + treasureName + ".Lore")) {
                             lore.add(ChatColor.translateAlternateColorCodes('&', s));
                         }
@@ -237,7 +237,7 @@ public class TreasureConfig extends ConfigLoader {
 
                 if (config.contains(type + "." + treasureName + ".Lore")) {
                     ItemMeta itemMeta = item.getItemMeta();
-                    List<String> lore = new ArrayList<String>();
+                    List<String> lore = new ArrayList<>();
                     for (String s : config.getStringList(type + "." + treasureName + ".Lore")) {
                         lore.add(ChatColor.translateAlternateColorCodes('&', s));
                     }
@@ -254,7 +254,7 @@ public class TreasureConfig extends ConfigLoader {
 
                     EntityType entityType = EntityType.valueOf(type.substring(6));
                     if (!shakeMap.containsKey(entityType))
-                        shakeMap.put(entityType, new ArrayList<ShakeTreasure>());
+                        shakeMap.put(entityType, new ArrayList<>());
                     shakeMap.get(entityType).add(shakeTreasure);
                 } else if (isExcavation) {
                     ExcavationTreasure excavationTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel);
@@ -262,7 +262,7 @@ public class TreasureConfig extends ConfigLoader {
 
                     for (String blockType : dropList) {
                         if (!excavationMap.containsKey(blockType))
-                            excavationMap.put(blockType, new ArrayList<ExcavationTreasure>());
+                            excavationMap.put(blockType, new ArrayList<>());
                         excavationMap.get(blockType).add(excavationTreasure);
                     }
                 } else if (isHylian) {
@@ -305,7 +305,7 @@ public class TreasureConfig extends ConfigLoader {
 
     private void AddHylianTreasure(String dropper, HylianTreasure treasure) {
         if (!hylianMap.containsKey(dropper))
-            hylianMap.put(dropper, new ArrayList<HylianTreasure>());
+            hylianMap.put(dropper, new ArrayList<>());
         hylianMap.get(dropper).add(treasure);
     }
 
@@ -316,7 +316,7 @@ public class TreasureConfig extends ConfigLoader {
             }
 
             if (!fishingEnchantments.containsKey(rarity)) {
-                fishingEnchantments.put(rarity, (new ArrayList<EnchantmentTreasure>()));
+                fishingEnchantments.put(rarity, (new ArrayList<>()));
             }
 
             ConfigurationSection enchantmentSection = config.getConfigurationSection("Enchantments_Rarity." + rarity.toString());

+ 42 - 42
src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java

@@ -20,8 +20,8 @@ import java.io.*;
 import java.util.*;
 
 public final class FlatfileDatabaseManager implements DatabaseManager {
-    private final HashMap<PrimarySkillType, List<PlayerStat>> playerStatHash = new HashMap<PrimarySkillType, List<PlayerStat>>();
-    private final List<PlayerStat> powerLevels = new ArrayList<PlayerStat>();
+    private final HashMap<PrimarySkillType, List<PlayerStat>> playerStatHash = new HashMap<>();
+    private final List<PlayerStat> powerLevels = new ArrayList<>();
     private long lastUpdate = 0;
 
     private final long UPDATE_WAIT_TIME = 600000L; // 10 minutes
@@ -374,7 +374,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
     public Map<PrimarySkillType, Integer> readRank(String playerName) {
         updateLeaderboards();
 
-        Map<PrimarySkillType, Integer> skills = new HashMap<PrimarySkillType, Integer>();
+        Map<PrimarySkillType, Integer> skills = new HashMap<>();
 
         for (PrimarySkillType skill : PrimarySkillType.NON_CHILD_SKILLS) {
             skills.put(skill, getPlayerRank(playerName, playerStatHash.get(skill)));
@@ -662,7 +662,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
                         }
 
                         character[UUID_INDEX] = fetchedUUIDs.remove(character[USERNAME]).toString();
-                        line = new StringBuilder(org.apache.commons.lang.StringUtils.join(character, ":")).append(":").toString();
+                        line = org.apache.commons.lang.StringUtils.join(character, ":") + ":";
                     }
 
                     i++;
@@ -700,7 +700,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
     }
 
     public List<String> getStoredUsers() {
-        ArrayList<String> users = new ArrayList<String>();
+        ArrayList<String> users = new ArrayList<>();
         BufferedReader in = null;
         String usersFilePath = mcMMO.getUsersFilePath();
 
@@ -746,19 +746,19 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
         powerLevels.clear(); // Clear old values from the power levels
 
         // Initialize lists
-        List<PlayerStat> mining = new ArrayList<PlayerStat>();
-        List<PlayerStat> woodcutting = new ArrayList<PlayerStat>();
-        List<PlayerStat> herbalism = new ArrayList<PlayerStat>();
-        List<PlayerStat> excavation = new ArrayList<PlayerStat>();
-        List<PlayerStat> acrobatics = new ArrayList<PlayerStat>();
-        List<PlayerStat> repair = new ArrayList<PlayerStat>();
-        List<PlayerStat> swords = new ArrayList<PlayerStat>();
-        List<PlayerStat> axes = new ArrayList<PlayerStat>();
-        List<PlayerStat> archery = new ArrayList<PlayerStat>();
-        List<PlayerStat> unarmed = new ArrayList<PlayerStat>();
-        List<PlayerStat> taming = new ArrayList<PlayerStat>();
-        List<PlayerStat> fishing = new ArrayList<PlayerStat>();
-        List<PlayerStat> alchemy = new ArrayList<PlayerStat>();
+        List<PlayerStat> mining = new ArrayList<>();
+        List<PlayerStat> woodcutting = new ArrayList<>();
+        List<PlayerStat> herbalism = new ArrayList<>();
+        List<PlayerStat> excavation = new ArrayList<>();
+        List<PlayerStat> acrobatics = new ArrayList<>();
+        List<PlayerStat> repair = new ArrayList<>();
+        List<PlayerStat> swords = new ArrayList<>();
+        List<PlayerStat> axes = new ArrayList<>();
+        List<PlayerStat> archery = new ArrayList<>();
+        List<PlayerStat> unarmed = new ArrayList<>();
+        List<PlayerStat> taming = new ArrayList<>();
+        List<PlayerStat> fishing = new ArrayList<>();
+        List<PlayerStat> alchemy = new ArrayList<>();
 
         BufferedReader in = null;
         String playerName = null;
@@ -853,8 +853,8 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
                     in = new BufferedReader(new FileReader(usersFilePath));
                     StringBuilder writer = new StringBuilder();
                     String line;
-                    HashSet<String> usernames = new HashSet<String>();
-                    HashSet<String> players = new HashSet<String>();
+                    HashSet<String> usernames = new HashSet<>();
+                    HashSet<String> players = new HashSet<>();
 
                     while ((line = in.readLine()) != null) {
                         // Remove empty lines from the file
@@ -909,7 +909,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
                                     continue;
                                 }
                                 int cap = Config.getInstance().getLevelCap(skill);
-                                if (Integer.valueOf(character[index]) > cap) {
+                                if (Integer.parseInt(character[index]) > cap) {
                                     mcMMO.p.getLogger().warning("Truncating " + skill.getName() + " to configured max level for player " + character[USERNAME]);
                                     character[index] = cap + "";
                                     updated = true;
@@ -1053,7 +1053,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
                         }
 
                         if (updated) {
-                            line = new StringBuilder(org.apache.commons.lang.StringUtils.join(character, ":")).append(":").toString();
+                            line = org.apache.commons.lang.StringUtils.join(character, ":") + ":";
                         }
 
                         writer.append(line).append("\r\n");
@@ -1130,7 +1130,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
         return statValue;
     }
 
-    private class SkillComparator implements Comparator<PlayerStat> {
+    private static class SkillComparator implements Comparator<PlayerStat> {
         @Override
         public int compare(PlayerStat o1, PlayerStat o2) {
             return (o2.statVal - o1.statVal);
@@ -1139,27 +1139,27 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
 
     private PlayerProfile loadFromLine(String[] character) {
         Map<PrimarySkillType, Integer>   skills     = getSkillMapFromLine(character);      // Skill levels
-        Map<PrimarySkillType, Float>     skillsXp   = new EnumMap<PrimarySkillType, Float>(PrimarySkillType.class);     // Skill & XP
-        Map<SuperAbilityType, Integer> skillsDATS = new EnumMap<SuperAbilityType, Integer>(SuperAbilityType.class); // Ability & Cooldown
-        Map<UniqueDataType, Integer> uniquePlayerDataMap = new EnumMap<UniqueDataType, Integer>(UniqueDataType.class);
+        Map<PrimarySkillType, Float>     skillsXp   = new EnumMap<>(PrimarySkillType.class);     // Skill & XP
+        Map<SuperAbilityType, Integer> skillsDATS = new EnumMap<>(SuperAbilityType.class); // Ability & Cooldown
+        Map<UniqueDataType, Integer> uniquePlayerDataMap = new EnumMap<>(UniqueDataType.class);
         MobHealthbarType mobHealthbarType;
         int scoreboardTipsShown;
 
         // TODO on updates, put new values in a try{} ?
 
-        skillsXp.put(PrimarySkillType.TAMING, (float) Integer.valueOf(character[EXP_TAMING]));
-        skillsXp.put(PrimarySkillType.MINING, (float) Integer.valueOf(character[EXP_MINING]));
-        skillsXp.put(PrimarySkillType.REPAIR, (float) Integer.valueOf(character[EXP_REPAIR]));
-        skillsXp.put(PrimarySkillType.WOODCUTTING, (float) Integer.valueOf(character[EXP_WOODCUTTING]));
-        skillsXp.put(PrimarySkillType.UNARMED, (float) Integer.valueOf(character[EXP_UNARMED]));
-        skillsXp.put(PrimarySkillType.HERBALISM, (float) Integer.valueOf(character[EXP_HERBALISM]));
-        skillsXp.put(PrimarySkillType.EXCAVATION, (float) Integer.valueOf(character[EXP_EXCAVATION]));
-        skillsXp.put(PrimarySkillType.ARCHERY, (float) Integer.valueOf(character[EXP_ARCHERY]));
-        skillsXp.put(PrimarySkillType.SWORDS, (float) Integer.valueOf(character[EXP_SWORDS]));
-        skillsXp.put(PrimarySkillType.AXES, (float) Integer.valueOf(character[EXP_AXES]));
-        skillsXp.put(PrimarySkillType.ACROBATICS, (float) Integer.valueOf(character[EXP_ACROBATICS]));
-        skillsXp.put(PrimarySkillType.FISHING, (float) Integer.valueOf(character[EXP_FISHING]));
-        skillsXp.put(PrimarySkillType.ALCHEMY, (float) Integer.valueOf(character[EXP_ALCHEMY]));
+        skillsXp.put(PrimarySkillType.TAMING, (float) Integer.parseInt(character[EXP_TAMING]));
+        skillsXp.put(PrimarySkillType.MINING, (float) Integer.parseInt(character[EXP_MINING]));
+        skillsXp.put(PrimarySkillType.REPAIR, (float) Integer.parseInt(character[EXP_REPAIR]));
+        skillsXp.put(PrimarySkillType.WOODCUTTING, (float) Integer.parseInt(character[EXP_WOODCUTTING]));
+        skillsXp.put(PrimarySkillType.UNARMED, (float) Integer.parseInt(character[EXP_UNARMED]));
+        skillsXp.put(PrimarySkillType.HERBALISM, (float) Integer.parseInt(character[EXP_HERBALISM]));
+        skillsXp.put(PrimarySkillType.EXCAVATION, (float) Integer.parseInt(character[EXP_EXCAVATION]));
+        skillsXp.put(PrimarySkillType.ARCHERY, (float) Integer.parseInt(character[EXP_ARCHERY]));
+        skillsXp.put(PrimarySkillType.SWORDS, (float) Integer.parseInt(character[EXP_SWORDS]));
+        skillsXp.put(PrimarySkillType.AXES, (float) Integer.parseInt(character[EXP_AXES]));
+        skillsXp.put(PrimarySkillType.ACROBATICS, (float) Integer.parseInt(character[EXP_ACROBATICS]));
+        skillsXp.put(PrimarySkillType.FISHING, (float) Integer.parseInt(character[EXP_FISHING]));
+        skillsXp.put(PrimarySkillType.ALCHEMY, (float) Integer.parseInt(character[EXP_ALCHEMY]));
 
         // Taming - Unused
         skillsDATS.put(SuperAbilityType.SUPER_BREAKER, Integer.valueOf(character[COOLDOWN_SUPER_BREAKER]));
@@ -1190,7 +1190,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
         }
 
         try {
-            scoreboardTipsShown = Integer.valueOf(character[SCOREBOARD_TIPS]);
+            scoreboardTipsShown = Integer.parseInt(character[SCOREBOARD_TIPS]);
         }
         catch (Exception e) {
             scoreboardTipsShown = 0;
@@ -1207,7 +1207,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
     }
 
     private Map<PrimarySkillType, Integer> getSkillMapFromLine(String[] character) {
-        Map<PrimarySkillType, Integer> skills = new EnumMap<PrimarySkillType, Integer>(PrimarySkillType.class);   // Skill & Level
+        Map<PrimarySkillType, Integer> skills = new EnumMap<>(PrimarySkillType.class);   // Skill & Level
 
         skills.put(PrimarySkillType.TAMING, Integer.valueOf(character[SKILLS_TAMING]));
         skills.put(PrimarySkillType.MINING, Integer.valueOf(character[SKILLS_MINING]));
@@ -1328,7 +1328,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
                     
                     character[HEALTHBAR] = Config.getInstance().getMobHealthbarDefault().toString();
                     
-                    line = new StringBuilder(org.apache.commons.lang.StringUtils.join(character, ":")).append(":").toString();
+                    line = org.apache.commons.lang.StringUtils.join(character, ":") + ":";
 
                     writer.append(line).append("\r\n");
                 }

+ 12 - 13
src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java

@@ -25,7 +25,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
     private static final String ALL_QUERY_VERSION = "total";
     private final String tablePrefix = Config.getInstance().getMySQLTablePrefix();
 
-    private final Map<UUID, Integer> cachedUserIDs = new HashMap<UUID, Integer>();
+    private final Map<UUID, Integer> cachedUserIDs = new HashMap<>();
 
     private DataSource miscPool;
     private DataSource loadPool;
@@ -214,8 +214,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public void cleanupUser(UUID uuid) {
-        if(cachedUserIDs.containsKey(uuid))
-            cachedUserIDs.remove(uuid);
+        cachedUserIDs.remove(uuid);
     }
 
     public boolean saveUser(PlayerProfile profile) {
@@ -345,7 +344,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public List<PlayerStat> readLeaderboard(PrimarySkillType skill, int pageNumber, int statsPerPage) {
-        List<PlayerStat> stats = new ArrayList<PlayerStat>();
+        List<PlayerStat> stats = new ArrayList<>();
 
         String query = skill == null ? ALL_QUERY_VERSION : skill.name().toLowerCase(Locale.ENGLISH);
         ResultSet resultSet = null;
@@ -360,13 +359,13 @@ public final class SQLDatabaseManager implements DatabaseManager {
             resultSet = statement.executeQuery();
 
             while (resultSet.next()) {
-                ArrayList<String> column = new ArrayList<String>();
+                ArrayList<String> column = new ArrayList<>();
 
                 for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
                     column.add(resultSet.getString(i));
                 }
 
-                stats.add(new PlayerStat(column.get(1), Integer.valueOf(column.get(0))));
+                stats.add(new PlayerStat(column.get(1), Integer.parseInt(column.get(0))));
             }
         }
         catch (SQLException ex) {
@@ -382,7 +381,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public Map<PrimarySkillType, Integer> readRank(String playerName) {
-        Map<PrimarySkillType, Integer> skills = new HashMap<PrimarySkillType, Integer>();
+        Map<PrimarySkillType, Integer> skills = new HashMap<>();
 
         ResultSet resultSet = null;
         PreparedStatement statement = null;
@@ -752,7 +751,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     public List<String> getStoredUsers() {
-        ArrayList<String> users = new ArrayList<String>();
+        ArrayList<String> users = new ArrayList<>();
 
         Statement statement = null;
         Connection connection = null;
@@ -1070,10 +1069,10 @@ public final class SQLDatabaseManager implements DatabaseManager {
     }
 
     private PlayerProfile loadFromResult(String playerName, ResultSet result) throws SQLException {
-        Map<PrimarySkillType, Integer> skills = new EnumMap<PrimarySkillType, Integer>(PrimarySkillType.class); // Skill & Level
-        Map<PrimarySkillType, Float> skillsXp = new EnumMap<PrimarySkillType, Float>(PrimarySkillType.class); // Skill & XP
-        Map<SuperAbilityType, Integer> skillsDATS = new EnumMap<SuperAbilityType, Integer>(SuperAbilityType.class); // Ability & Cooldown
-        Map<UniqueDataType, Integer> uniqueData = new EnumMap<UniqueDataType, Integer>(UniqueDataType.class); //Chimaera wing cooldown and other misc info
+        Map<PrimarySkillType, Integer> skills = new EnumMap<>(PrimarySkillType.class); // Skill & Level
+        Map<PrimarySkillType, Float> skillsXp = new EnumMap<>(PrimarySkillType.class); // Skill & XP
+        Map<SuperAbilityType, Integer> skillsDATS = new EnumMap<>(SuperAbilityType.class); // Ability & Cooldown
+        Map<UniqueDataType, Integer> uniqueData = new EnumMap<>(UniqueDataType.class); //Chimaera wing cooldown and other misc info
         MobHealthbarType mobHealthbarType;
         UUID uuid;
         int scoreboardTipsShown;
@@ -1316,7 +1315,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
     private class GetUUIDUpdatesRequired extends BukkitRunnable {
         public void run() {
             massUpdateLock.lock();
-            List<String> names = new ArrayList<String>();
+            List<String> names = new ArrayList<>();
             Connection connection = null;
             Statement statement = null;
             ResultSet resultSet = null;

+ 2 - 1
src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java

@@ -2,6 +2,7 @@ package com.gmail.nossr50.datatypes.experience;
 
 import com.gmail.nossr50.config.experience.ExperienceConfig;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.concurrent.Delayed;
 import java.util.concurrent.TimeUnit;
@@ -40,7 +41,7 @@ public class SkillXpGain implements Delayed {
     }
 
     @Override
-    public int compareTo(Delayed other) {
+    public int compareTo(@NotNull Delayed other) {
         if (other instanceof SkillXpGain) {
             // Use more efficient method if possible (private fields)
             return this.compareTo((SkillXpGain) other);

+ 9 - 9
src/main/java/com/gmail/nossr50/datatypes/party/Party.java

@@ -31,8 +31,8 @@ public class Party {
 //    private static final String OFFLINE_PLAYER_PREFIX = "☆";
     private static final String OFFLINE_PLAYER_PREFIX = "○";
 //    private static final String OFFLINE_PLAYER_PREFIX = "⭕" + ChatColor.RESET;
-    private final LinkedHashMap<UUID, String> members = new LinkedHashMap<UUID, String>();
-    private final List<Player> onlineMembers = new ArrayList<Player>();
+    private final LinkedHashMap<UUID, String> members = new LinkedHashMap<>();
+    private final List<Player> onlineMembers = new ArrayList<>();
 
     private PartyLeader leader;
     private String name;
@@ -101,7 +101,7 @@ public class Party {
 
     public List<String> getOnlinePlayerNames(CommandSender sender) {
         Player player = sender instanceof Player ? (Player) sender : null;
-        List<String> onlinePlayerNames = new ArrayList<String>();
+        List<String> onlinePlayerNames = new ArrayList<>();
 
         for (Player onlinePlayer : getOnlineMembers()) {
             if (player != null && player.canSee(onlinePlayer)) {
@@ -141,7 +141,7 @@ public class Party {
     }
 
     public List<String> getItemShareCategories() {
-        List<String> shareCategories = new ArrayList<String>();
+        List<String> shareCategories = new ArrayList<>();
 
         for (ItemShareType shareType : ItemShareType.values()) {
             if (sharingDrops(shareType)) {
@@ -323,16 +323,15 @@ public class Party {
                 break;
 
             default:
-                return;
         }
     }
 
     public boolean hasMember(String memberName) {
-        return this.getMembers().values().contains(memberName);
+        return this.getMembers().containsValue(memberName);
     }
 
     public boolean hasMember(UUID uuid) {
-        return this.getMembers().keySet().contains(uuid);
+        return this.getMembers().containsKey(uuid);
     }
 
     /**
@@ -361,7 +360,8 @@ public class Party {
         {
             Player onlinePlayer = Bukkit.getPlayer(onlineMember);
 
-            if(!isNotSamePerson(player.getUniqueId(), onlineMember) || player.canSee(onlinePlayer))
+            if(!isNotSamePerson(player.getUniqueId(), onlineMember)
+                    || onlinePlayer != null && player.canSee(onlinePlayer))
             {
                 visiblePartyList.add(onlineMember);
             } else {
@@ -515,7 +515,7 @@ public class Party {
      * @return the near party members
      */
     public List<Player> getNearMembers(McMMOPlayer mcMMOPlayer) {
-        List<Player> nearMembers = new ArrayList<Player>();
+        List<Player> nearMembers = new ArrayList<>();
         Party party = mcMMOPlayer.getParty();
 
         if (party != null) {

+ 4 - 12
src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java

@@ -45,7 +45,6 @@ import com.gmail.nossr50.util.experience.ExperienceBarManager;
 import com.gmail.nossr50.util.player.NotificationManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
-import com.gmail.nossr50.util.skills.ParticleEffectUtils;
 import com.gmail.nossr50.util.skills.PerksUtils;
 import com.gmail.nossr50.util.skills.RankUtils;
 import com.gmail.nossr50.util.skills.SkillUtils;
@@ -68,7 +67,7 @@ public class McMMOPlayer {
     private final Player        player;
     private final PlayerProfile profile;
 
-    private final Map<PrimarySkillType, SkillManager> skillManagers = new HashMap<PrimarySkillType, SkillManager>();
+    private final Map<PrimarySkillType, SkillManager> skillManagers = new HashMap<>();
     private final ExperienceBarManager experienceBarManager;
 
     private Party   party;
@@ -87,10 +86,10 @@ public class McMMOPlayer {
     private boolean godMode;
     private boolean chatSpy = false; //Off by default
 
-    private final Map<SuperAbilityType, Boolean> abilityMode     = new HashMap<SuperAbilityType, Boolean>();
-    private final Map<SuperAbilityType, Boolean> abilityInformed = new HashMap<SuperAbilityType, Boolean>();
+    private final Map<SuperAbilityType, Boolean> abilityMode     = new HashMap<>();
+    private final Map<SuperAbilityType, Boolean> abilityInformed = new HashMap<>();
 
-    private final Map<ToolType, Boolean> toolMode = new HashMap<ToolType, Boolean>();
+    private final Map<ToolType, Boolean> toolMode = new HashMap<>();
 
     private int recentlyHurt;
     private int respawnATS;
@@ -766,7 +765,6 @@ public class McMMOPlayer {
                 return;
 
             default:
-                return;
         }
     }
 
@@ -783,7 +781,6 @@ public class McMMOPlayer {
                 return;
 
             default:
-                return;
         }
 
     }
@@ -801,7 +798,6 @@ public class McMMOPlayer {
                 return;
 
             default:
-                return;
         }
     }
 
@@ -906,9 +902,6 @@ public class McMMOPlayer {
             ticks = PerksUtils.handleActivationPerks(player, 2 + (getSkillLevel(skill) / abilityLengthVar), ability.getMaxLength());
         }
 
-        // Notify people that ability has been activated
-        ParticleEffectUtils.playAbilityEnabledEffect(player);
-
         if (useChatNotifications()) {
             NotificationManager.sendPlayerInformation(player, NotificationType.SUPER_ABILITY, ability.getAbilityOn());
             //player.sendMessage(ability.getAbilityOn());
@@ -919,7 +912,6 @@ public class McMMOPlayer {
         //Sounds
         SoundManager.worldSendSound(player.getWorld(), player.getLocation(), SoundType.ABILITY_ACTIVATED_GENERIC);
 
-
         // Enable the ability
         profile.setAbilityDATS(ability, System.currentTimeMillis() + (ticks * Misc.TIME_CONVERSION_FACTOR));
         setAbilityMode(ability, true);

+ 5 - 6
src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java

@@ -32,14 +32,14 @@ public class PlayerProfile {
     private int saveAttempts = 0;
 
     /* Skill Data */
-    private final Map<PrimarySkillType, Integer>   skills     = new HashMap<PrimarySkillType, Integer>();   // Skill & Level
-    private final Map<PrimarySkillType, Float>     skillsXp   = new HashMap<PrimarySkillType, Float>();     // Skill & XP
-    private final Map<SuperAbilityType, Integer> abilityDATS = new HashMap<SuperAbilityType, Integer>(); // Ability & Cooldown
+    private final Map<PrimarySkillType, Integer>   skills     = new HashMap<>();   // Skill & Level
+    private final Map<PrimarySkillType, Float>     skillsXp   = new HashMap<>();     // Skill & XP
+    private final Map<SuperAbilityType, Integer> abilityDATS = new HashMap<>(); // Ability & Cooldown
     private final Map<UniqueDataType, Integer> uniquePlayerData = new HashMap<>(); //Misc data that doesn't fit into other categories (chimaera wing, etc..)
 
     // Store previous XP gains for diminished returns
-    private final DelayQueue<SkillXpGain> gainedSkillsXp = new DelayQueue<SkillXpGain>();
-    private final HashMap<PrimarySkillType, Float> rollingSkillsXp = new HashMap<PrimarySkillType, Float>();
+    private final DelayQueue<SkillXpGain> gainedSkillsXp = new DelayQueue<>();
+    private final HashMap<PrimarySkillType, Float> rollingSkillsXp = new HashMap<>();
 
     @Deprecated
     public PlayerProfile(String playerName) {
@@ -136,7 +136,6 @@ public class PlayerProfile {
                 else
                     scheduleAsyncSaveDelay();
 
-                return;
             } else {
                 mcMMO.p.getLogger().severe("mcMMO has failed to save the profile for "
                         +getPlayerName()+" numerous times." +

+ 3 - 3
src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java

@@ -82,9 +82,9 @@ public enum PrimarySkillType {
     public static final List<PrimarySkillType> MISC_SKILLS = ImmutableList.of(ACROBATICS, ALCHEMY, REPAIR, SALVAGE, SMELTING);
 
     static {
-        List<PrimarySkillType> childSkills = new ArrayList<PrimarySkillType>();
-        List<PrimarySkillType> nonChildSkills = new ArrayList<PrimarySkillType>();
-        ArrayList<String> names = new ArrayList<String>();
+        List<PrimarySkillType> childSkills = new ArrayList<>();
+        List<PrimarySkillType> nonChildSkills = new ArrayList<>();
+        ArrayList<String> names = new ArrayList<>();
         ArrayList<String> subSkillNames = new ArrayList<>();
 
         for (PrimarySkillType skill : values()) {

+ 10 - 10
src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java

@@ -180,7 +180,7 @@ public enum SubSkillType {
         /*
          * Find where to begin our substring (after the prefix)
          */
-        String endResult = "";
+        StringBuilder endResult = new StringBuilder();
         int subStringIndex = getSubStringIndex(subSkillName);
 
         /*
@@ -193,20 +193,20 @@ public enum SubSkillType {
 
             for(String string : splitStrings)
             {
-                endResult += StringUtils.getCapitalized(string);
+                endResult.append(StringUtils.getCapitalized(string));
             }
         } else {
-            endResult += StringUtils.getCapitalized(subskillNameWithoutPrefix);
+            endResult.append(StringUtils.getCapitalized(subskillNameWithoutPrefix));
         }
 
-        return endResult;
+        return endResult.toString();
     }
 
     public String getWikiName(String subSkillName) {
         /*
          * Find where to begin our substring (after the prefix)
          */
-        String endResult = "";
+        StringBuilder endResult = new StringBuilder();
         int subStringIndex = getSubStringIndex(subSkillName);
 
         /*
@@ -220,17 +220,17 @@ public enum SubSkillType {
             for(int i = 0; i < splitStrings.length; i++)
             {
                 if(i+1 >= splitStrings.length)
-                    endResult+=StringUtils.getCapitalized(splitStrings[i]);
+                    endResult.append(StringUtils.getCapitalized(splitStrings[i]));
                 else {
-                    endResult += StringUtils.getCapitalized(splitStrings[i]);
-                    endResult += "_";
+                    endResult.append(StringUtils.getCapitalized(splitStrings[i]));
+                    endResult.append("_");
                 }
             }
         } else {
-            endResult += StringUtils.getCapitalized(subskillNameWithoutPrefix);
+            endResult.append(StringUtils.getCapitalized(subskillNameWithoutPrefix));
         }
 
-        return endResult;
+        return endResult.toString();
     }
 
     /**

+ 3 - 3
src/main/java/com/gmail/nossr50/datatypes/skills/subskills/interfaces/Rank.java

@@ -13,9 +13,9 @@ public interface Rank {
      */
     boolean hasRanks();
 
-    /**
-     * An sequential collection of rank level requirements
-     * @return level requirements
+    /*
+      An sequential collection of rank level requirements
+      @return level requirements
      */
     //Collection<Integer> getUnlockLevels();
 }

+ 2 - 1
src/main/java/com/gmail/nossr50/events/chat/McMMOChatEvent.java

@@ -4,6 +4,7 @@ import org.bukkit.event.Cancellable;
 import org.bukkit.event.Event;
 import org.bukkit.event.HandlerList;
 import org.bukkit.plugin.Plugin;
+import org.jetbrains.annotations.NotNull;
 
 public abstract class McMMOChatEvent extends Event implements Cancellable {
     private boolean cancelled;
@@ -84,7 +85,7 @@ public abstract class McMMOChatEvent extends Event implements Cancellable {
     private static final HandlerList handlers = new HandlerList();
 
     @Override
-    public HandlerList getHandlers() {
+    public @NotNull HandlerList getHandlers() {
         return handlers;
     }
 

+ 2 - 1
src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java

@@ -7,6 +7,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.Cancellable;
 import org.bukkit.event.HandlerList;
 import org.bukkit.event.player.PlayerEvent;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Generic event for mcMMO experience events.
@@ -67,7 +68,7 @@ public abstract class McMMOPlayerExperienceEvent extends PlayerEvent implements
     private static final HandlerList handlers = new HandlerList();
 
     @Override
-    public HandlerList getHandlers() {
+    public @NotNull HandlerList getHandlers() {
         return handlers;
     }
 

+ 2 - 1
src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java

@@ -4,6 +4,7 @@ import com.gmail.nossr50.datatypes.experience.XPGainReason;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import org.bukkit.entity.Player;
 import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Called when a user loses levels in a skill
@@ -50,7 +51,7 @@ public class McMMOPlayerLevelDownEvent extends McMMOPlayerLevelChangeEvent {
     private static final HandlerList handlers = new HandlerList();
 
     @Override
-    public HandlerList getHandlers() {
+    public @NotNull HandlerList getHandlers() {
         return handlers;
     }
 

Some files were not shown because too many files changed in this diff