Przeglądaj źródła

Merge branch 'master' of github.com:mcMMO-Dev/mcMMO

U-YUE\Sean 12 lat temu
rodzic
commit
d32e0962b0
100 zmienionych plików z 245 dodań i 195 usunięć
  1. 4 0
      Changelog.txt
  2. 1 1
      src/main/java/com/gmail/nossr50/api/AbilityAPI.java
  3. 2 2
      src/main/java/com/gmail/nossr50/api/ExperienceAPI.java
  4. 1 1
      src/main/java/com/gmail/nossr50/api/SpoutToolsAPI.java
  5. 1 1
      src/main/java/com/gmail/nossr50/blockstore/chunkmeta/ChunkManager.java
  6. 1 1
      src/main/java/com/gmail/nossr50/blockstore/chunkmeta/ChunkManagerFactory.java
  7. 2 2
      src/main/java/com/gmail/nossr50/blockstore/chunkmeta/ChunkStore.java
  8. 1 1
      src/main/java/com/gmail/nossr50/blockstore/chunkmeta/ChunkStoreFactory.java
  9. 2 2
      src/main/java/com/gmail/nossr50/blockstore/chunkmeta/HashChunkManager.java
  10. 1 1
      src/main/java/com/gmail/nossr50/blockstore/chunkmeta/NullChunkManager.java
  11. 3 15
      src/main/java/com/gmail/nossr50/blockstore/chunkmeta/PrimitiveChunkStore.java
  12. 1 1
      src/main/java/com/gmail/nossr50/blockstore/conversion/BlockStoreConversionMain.java
  13. 1 1
      src/main/java/com/gmail/nossr50/blockstore/conversion/BlockStoreConversionXDirectory.java
  14. 7 7
      src/main/java/com/gmail/nossr50/blockstore/conversion/BlockStoreConversionZDirectory.java
  15. 1 1
      src/main/java/com/gmail/nossr50/blockstore/old/ChunkletManager.java
  16. 1 1
      src/main/java/com/gmail/nossr50/blockstore/old/ChunkletManagerFactory.java
  17. 1 1
      src/main/java/com/gmail/nossr50/blockstore/old/ChunkletStore.java
  18. 1 1
      src/main/java/com/gmail/nossr50/blockstore/old/ChunkletStoreFactory.java
  19. 1 1
      src/main/java/com/gmail/nossr50/blockstore/old/HashChunkletManager.java
  20. 1 1
      src/main/java/com/gmail/nossr50/blockstore/old/NullChunkletManager.java
  21. 1 1
      src/main/java/com/gmail/nossr50/blockstore/old/PrimitiveChunkletStore.java
  22. 1 1
      src/main/java/com/gmail/nossr50/blockstore/old/PrimitiveExChunkletStore.java
  23. 2 2
      src/main/java/com/gmail/nossr50/commands/CommandHelper.java
  24. 2 2
      src/main/java/com/gmail/nossr50/commands/general/AddlevelsCommand.java
  25. 2 2
      src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java
  26. 1 1
      src/main/java/com/gmail/nossr50/commands/general/InspectCommand.java
  27. 2 2
      src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java
  28. 1 1
      src/main/java/com/gmail/nossr50/commands/general/SkillResetCommand.java
  29. 2 2
      src/main/java/com/gmail/nossr50/commands/mc/McrankCommand.java
  30. 2 2
      src/main/java/com/gmail/nossr50/commands/mc/MctopCommand.java
  31. 7 0
      src/main/java/com/gmail/nossr50/config/AdvancedConfig.java
  32. 10 8
      src/main/java/com/gmail/nossr50/database/Database.java
  33. 1 1
      src/main/java/com/gmail/nossr50/database/commands/MmoupdateCommand.java
  34. 1 1
      src/main/java/com/gmail/nossr50/database/runnables/SQLConversionTask.java
  35. 1 1
      src/main/java/com/gmail/nossr50/database/runnables/SQLReconnect.java
  36. 1 1
      src/main/java/com/gmail/nossr50/database/runnables/UserPurgeTask.java
  37. 1 1
      src/main/java/com/gmail/nossr50/datatypes/McMMOPlayer.java
  38. 3 3
      src/main/java/com/gmail/nossr50/datatypes/PlayerProfile.java
  39. 1 1
      src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java
  40. 1 1
      src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java
  41. 1 1
      src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerXpGainEvent.java
  42. 1 1
      src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerDisarmEvent.java
  43. 1 1
      src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerRepairCheckEvent.java
  44. 1 1
      src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerSkillEvent.java
  45. 4 4
      src/main/java/com/gmail/nossr50/listeners/BlockListener.java
  46. 3 3
      src/main/java/com/gmail/nossr50/listeners/EntityListener.java
  47. 8 6
      src/main/java/com/gmail/nossr50/listeners/PlayerListener.java
  48. 1 1
      src/main/java/com/gmail/nossr50/listeners/WorldListener.java
  49. 5 5
      src/main/java/com/gmail/nossr50/mcMMO.java
  50. 2 2
      src/main/java/com/gmail/nossr50/party/ShareHandler.java
  51. 2 2
      src/main/java/com/gmail/nossr50/runnables/McRankAsync.java
  52. 3 1
      src/main/java/com/gmail/nossr50/skills/SkillCommand.java
  53. 12 8
      src/main/java/com/gmail/nossr50/skills/SkillGuide.java
  54. 1 0
      src/main/java/com/gmail/nossr50/skills/SkillManager.java
  55. 1 1
      src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsCommand.java
  56. 1 1
      src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java
  57. 2 2
      src/main/java/com/gmail/nossr50/skills/acrobatics/DodgeEventHandler.java
  58. 2 2
      src/main/java/com/gmail/nossr50/skills/acrobatics/RollEventHandler.java
  59. 1 1
      src/main/java/com/gmail/nossr50/skills/archery/ArcheryCommand.java
  60. 2 2
      src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java
  61. 1 1
      src/main/java/com/gmail/nossr50/skills/axes/AxeManager.java
  62. 1 1
      src/main/java/com/gmail/nossr50/skills/axes/AxesCommand.java
  63. 3 3
      src/main/java/com/gmail/nossr50/skills/axes/SkullSplitterEventHandler.java
  64. 2 2
      src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java
  65. 1 1
      src/main/java/com/gmail/nossr50/skills/excavation/ExcavationCommand.java
  66. 44 7
      src/main/java/com/gmail/nossr50/skills/fishing/Fishing.java
  67. 1 1
      src/main/java/com/gmail/nossr50/skills/fishing/FishingCommand.java
  68. 2 2
      src/main/java/com/gmail/nossr50/skills/fishing/ShakeMob.java
  69. 3 3
      src/main/java/com/gmail/nossr50/skills/herbalism/GreenThumbTimer.java
  70. 3 4
      src/main/java/com/gmail/nossr50/skills/herbalism/Herbalism.java
  71. 1 1
      src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismCommand.java
  72. 2 2
      src/main/java/com/gmail/nossr50/skills/mining/Mining.java
  73. 1 1
      src/main/java/com/gmail/nossr50/skills/mining/MiningCommand.java
  74. 1 1
      src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java
  75. 2 2
      src/main/java/com/gmail/nossr50/skills/mining/RemoteDetonationEventHandler.java
  76. 1 1
      src/main/java/com/gmail/nossr50/skills/mining/SuperBreakerEventHandler.java
  77. 2 2
      src/main/java/com/gmail/nossr50/skills/repair/Repair.java
  78. 1 1
      src/main/java/com/gmail/nossr50/skills/repair/RepairCommand.java
  79. 1 1
      src/main/java/com/gmail/nossr50/skills/repair/Salvage.java
  80. 1 1
      src/main/java/com/gmail/nossr50/skills/repair/SimpleRepairManager.java
  81. 5 5
      src/main/java/com/gmail/nossr50/skills/runnables/BleedTimer.java
  82. 3 3
      src/main/java/com/gmail/nossr50/skills/runnables/GainXp.java
  83. 4 4
      src/main/java/com/gmail/nossr50/skills/runnables/SkillMonitor.java
  84. 1 1
      src/main/java/com/gmail/nossr50/skills/smelting/FluxMiningEventHandler.java
  85. 2 2
      src/main/java/com/gmail/nossr50/skills/smelting/SmeltResourceEventHandler.java
  86. 1 1
      src/main/java/com/gmail/nossr50/skills/smelting/SmeltingCommand.java
  87. 1 1
      src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java
  88. 1 1
      src/main/java/com/gmail/nossr50/skills/swords/BleedEventHandler.java
  89. 2 2
      src/main/java/com/gmail/nossr50/skills/swords/CounterAttackEventHandler.java
  90. 4 4
      src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java
  91. 1 1
      src/main/java/com/gmail/nossr50/skills/swords/SwordsCommand.java
  92. 1 1
      src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java
  93. 6 2
      src/main/java/com/gmail/nossr50/skills/taming/BeastLoreEventHandler.java
  94. 1 1
      src/main/java/com/gmail/nossr50/skills/taming/GoreEventHandler.java
  95. 1 1
      src/main/java/com/gmail/nossr50/skills/taming/TamingCommand.java
  96. 2 2
      src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java
  97. 1 1
      src/main/java/com/gmail/nossr50/skills/unarmed/IronGripEventHandler.java
  98. 1 1
      src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedCommand.java
  99. 1 1
      src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java
  100. 1 1
      src/main/java/com/gmail/nossr50/skills/utilities/AbilityType.java

+ 4 - 0
Changelog.txt

@@ -20,6 +20,8 @@ Version 1.4.00-dev
  + Added XP bonus for Archery based on distance from shooter to target
  + Added ability to config Hylian Luck drops through treasures.yml
  + Added party XP sharing
+ + Added vanilla XP boost for Fishing - includes permissions, config options, etc
+ = Fixed the guide usage string showing up every time /skillname was called
  = Fixed Spout not being able to precache our resources properly, and therefore making our XP bars fail
  = Fixed Spout config files loading / generating when they shouldn't have
  = Fixed mod config files loading / generating when they shouldn't have
@@ -52,6 +54,8 @@ Version 1.4.00-dev
  ! Changed McMMOChatEvent to contain the plugin that the event originated from.
  ! Changed Excavation to have individual XP values for each block type, rather than a base XP value.
  ! Changed the way party teleportation works. When using /ptp, the target player needs to confirm the teleport before it takes place. (Configurable)
+ ! Changed BeastLore: Now also displays offline player names
+ - Removed Party "master/apprentice" system. Replaced with the new party XP share feature.
 
 Version 1.3.14
  + Added new Hylian Luck skill to Herbalism.

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.api;
 
 import org.bukkit.entity.Player;
 
-import com.gmail.nossr50.skills.AbilityType;
+import com.gmail.nossr50.skills.utilities.AbilityType;
 import com.gmail.nossr50.util.Users;
 
 public final class AbilityAPI {

+ 2 - 2
src/main/java/com/gmail/nossr50/api/ExperienceAPI.java

@@ -2,8 +2,8 @@ package com.gmail.nossr50.api;
 
 import org.bukkit.entity.Player;
 
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Users;
 
 public final class ExperienceAPI {

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

@@ -5,7 +5,7 @@ import java.util.List;
 
 import org.bukkit.inventory.ItemStack;
 
-import com.gmail.nossr50.skills.ToolType;
+import com.gmail.nossr50.skills.utilities.ToolType;
 
 public final class SpoutToolsAPI {
     public static final List<ItemStack> spoutSwords = new ArrayList<ItemStack>();

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/ChunkManager.java → src/main/java/com/gmail/nossr50/blockstore/chunkmeta/ChunkManager.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta.chunkmeta;
+package com.gmail.nossr50.blockstore.chunkmeta;
 
 import java.io.IOException;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/ChunkManagerFactory.java → src/main/java/com/gmail/nossr50/blockstore/chunkmeta/ChunkManagerFactory.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta.chunkmeta;
+package com.gmail.nossr50.blockstore.chunkmeta;
 
 import com.gmail.nossr50.config.HiddenConfig;
 

+ 2 - 2
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/ChunkStore.java → src/main/java/com/gmail/nossr50/blockstore/chunkmeta/ChunkStore.java

@@ -1,10 +1,10 @@
-package com.gmail.nossr50.util.blockmeta.chunkmeta;
+package com.gmail.nossr50.blockstore.chunkmeta;
 
 import java.io.Serializable;
 import java.util.List;
 import java.util.UUID;
 
-import com.gmail.nossr50.util.blockmeta.ChunkletStore;
+import com.gmail.nossr50.blockstore.old.ChunkletStore;
 
 /**
  * A ChunkStore should be responsible for a 16x16xWorldHeight area of data

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/ChunkStoreFactory.java → src/main/java/com/gmail/nossr50/blockstore/chunkmeta/ChunkStoreFactory.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta.chunkmeta;
+package com.gmail.nossr50.blockstore.chunkmeta;
 
 import org.bukkit.World;
 

+ 2 - 2
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/HashChunkManager.java → src/main/java/com/gmail/nossr50/blockstore/chunkmeta/HashChunkManager.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta.chunkmeta;
+package com.gmail.nossr50.blockstore.chunkmeta;
 
 import java.io.File;
 import java.io.IOException;
@@ -18,7 +18,7 @@ import org.bukkit.block.Block;
 import org.bukkit.entity.Entity;
 import org.getspout.spoutapi.chunkstore.mcMMOSimpleRegionFile;
 
-import com.gmail.nossr50.runnables.blockstoreconversion.BlockStoreConversionZDirectory;
+import com.gmail.nossr50.blockstore.conversion.BlockStoreConversionZDirectory;
 
 public class HashChunkManager implements ChunkManager {
     private HashMap<UUID, HashMap<Long, mcMMOSimpleRegionFile>> regionFiles = new HashMap<UUID, HashMap<Long, mcMMOSimpleRegionFile>>();

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/NullChunkManager.java → src/main/java/com/gmail/nossr50/blockstore/chunkmeta/NullChunkManager.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta.chunkmeta;
+package com.gmail.nossr50.blockstore.chunkmeta;
 
 import java.io.IOException;
 

+ 3 - 15
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/PrimitiveChunkStore.java → src/main/java/com/gmail/nossr50/blockstore/chunkmeta/PrimitiveChunkStore.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta.chunkmeta;
+package com.gmail.nossr50.blockstore.chunkmeta;
 
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -10,7 +10,7 @@ import java.util.UUID;
 import org.bukkit.World;
 
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.util.blockmeta.ChunkletStore;
+import com.gmail.nossr50.blockstore.old.ChunkletStore;
 
 public class PrimitiveChunkStore implements ChunkStore {
     private static final long serialVersionUID = -1L;
@@ -25,22 +25,12 @@ public class PrimitiveChunkStore implements ChunkStore {
     private List<UUID> spawnedMobs = new ArrayList<UUID>();
     transient private int worldHeight;
 
-    transient private int xBitShifts;
-    transient private int zBitShifts;
-    transient private boolean conversionNeeded;
-
     public PrimitiveChunkStore(World world, int cx, int cz) {
         this.cx = cx;
         this.cz = cz;
         this.worldUid = world.getUID();
-
-        this.worldHeight = world != null ? world.getMaxHeight() : 128;
-        this.xBitShifts = 11;
-        this.zBitShifts = 7;
-
+        this.worldHeight = world.getMaxHeight();
         this.store = new boolean[16][16][this.worldHeight];
-
-        conversionNeeded = false;
     }
 
     @Override
@@ -207,8 +197,6 @@ public class PrimitiveChunkStore implements ChunkStore {
         World world = mcMMO.p.getServer().getWorld(this.worldUid);
 
         this.worldHeight = world.getMaxHeight();
-        this.xBitShifts = 11;
-        this.zBitShifts = 7;
 
         store = (boolean[][][]) in.readObject();
 

+ 1 - 1
src/main/java/com/gmail/nossr50/runnables/blockstoreconversion/BlockStoreConversionMain.java → src/main/java/com/gmail/nossr50/blockstore/conversion/BlockStoreConversionMain.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.runnables.blockstoreconversion;
+package com.gmail.nossr50.blockstore.conversion;
 
 import java.io.File;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/runnables/blockstoreconversion/BlockStoreConversionXDirectory.java → src/main/java/com/gmail/nossr50/blockstore/conversion/BlockStoreConversionXDirectory.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.runnables.blockstoreconversion;
+package com.gmail.nossr50.blockstore.conversion;
 
 import java.io.File;
 

+ 7 - 7
src/main/java/com/gmail/nossr50/runnables/blockstoreconversion/BlockStoreConversionZDirectory.java → src/main/java/com/gmail/nossr50/blockstore/conversion/BlockStoreConversionZDirectory.java

@@ -1,16 +1,16 @@
-package com.gmail.nossr50.runnables.blockstoreconversion;
+package com.gmail.nossr50.blockstore.conversion;
 
 import java.io.File;
 
 import org.bukkit.scheduler.BukkitScheduler;
 
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.util.blockmeta.ChunkletStore;
-import com.gmail.nossr50.util.blockmeta.HashChunkletManager;
-import com.gmail.nossr50.util.blockmeta.PrimitiveChunkletStore;
-import com.gmail.nossr50.util.blockmeta.PrimitiveExChunkletStore;
-import com.gmail.nossr50.util.blockmeta.chunkmeta.HashChunkManager;
-import com.gmail.nossr50.util.blockmeta.chunkmeta.PrimitiveChunkStore;
+import com.gmail.nossr50.blockstore.chunkmeta.HashChunkManager;
+import com.gmail.nossr50.blockstore.chunkmeta.PrimitiveChunkStore;
+import com.gmail.nossr50.blockstore.old.ChunkletStore;
+import com.gmail.nossr50.blockstore.old.HashChunkletManager;
+import com.gmail.nossr50.blockstore.old.PrimitiveChunkletStore;
+import com.gmail.nossr50.blockstore.old.PrimitiveExChunkletStore;
 
 public class BlockStoreConversionZDirectory implements Runnable {
     public int taskID, cx, cz, x, y, z, y2, xPos, zPos, cxPos, czPos;

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/ChunkletManager.java → src/main/java/com/gmail/nossr50/blockstore/old/ChunkletManager.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta;
+package com.gmail.nossr50.blockstore.old;
 
 import org.bukkit.World;
 import org.bukkit.block.Block;

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/ChunkletManagerFactory.java → src/main/java/com/gmail/nossr50/blockstore/old/ChunkletManagerFactory.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta;
+package com.gmail.nossr50.blockstore.old;
 
 import com.gmail.nossr50.config.HiddenConfig;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/ChunkletStore.java → src/main/java/com/gmail/nossr50/blockstore/old/ChunkletStore.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta;
+package com.gmail.nossr50.blockstore.old;
 
 import java.io.Serializable;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/ChunkletStoreFactory.java → src/main/java/com/gmail/nossr50/blockstore/old/ChunkletStoreFactory.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta;
+package com.gmail.nossr50.blockstore.old;
 
 public class ChunkletStoreFactory {
     protected static ChunkletStore getChunkletStore() {

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkletManager.java → src/main/java/com/gmail/nossr50/blockstore/old/HashChunkletManager.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta;
+package com.gmail.nossr50.blockstore.old;
 
 import java.io.EOFException;
 import java.io.File;

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/NullChunkletManager.java → src/main/java/com/gmail/nossr50/blockstore/old/NullChunkletManager.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta;
+package com.gmail.nossr50.blockstore.old;
 
 import org.bukkit.World;
 import org.bukkit.block.Block;

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/PrimitiveChunkletStore.java → src/main/java/com/gmail/nossr50/blockstore/old/PrimitiveChunkletStore.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta;
+package com.gmail.nossr50.blockstore.old;
 
 public class PrimitiveChunkletStore implements ChunkletStore {
     private static final long serialVersionUID = -3453078050608607478L;

+ 1 - 1
src/main/java/com/gmail/nossr50/util/blockmeta/PrimitiveExChunkletStore.java → src/main/java/com/gmail/nossr50/blockstore/old/PrimitiveExChunkletStore.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.util.blockmeta;
+package com.gmail.nossr50.blockstore.old;
 
 import java.io.Externalizable;
 import java.io.IOException;

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

@@ -5,8 +5,8 @@ import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;
 

+ 2 - 2
src/main/java/com/gmail/nossr50/commands/general/AddlevelsCommand.java

@@ -10,8 +10,8 @@ import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.commands.CommandHelper;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Users;
 

+ 2 - 2
src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java

@@ -10,8 +10,8 @@ import com.gmail.nossr50.commands.CommandHelper;
 import com.gmail.nossr50.datatypes.McMMOPlayer;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Users;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/general/InspectCommand.java

@@ -9,7 +9,7 @@ import com.gmail.nossr50.commands.CommandHelper;
 import com.gmail.nossr50.datatypes.McMMOPlayer;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;

+ 2 - 2
src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java

@@ -9,8 +9,8 @@ import com.gmail.nossr50.commands.CommandHelper;
 import com.gmail.nossr50.datatypes.McMMOPlayer;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Users;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/general/SkillResetCommand.java

@@ -10,7 +10,7 @@ import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.commands.CommandHelper;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Users;
 
 public class SkillResetCommand implements CommandExecutor {

+ 2 - 2
src/main/java/com/gmail/nossr50/commands/mc/McrankCommand.java

@@ -10,8 +10,8 @@ import com.gmail.nossr50.commands.CommandHelper;
 import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.runnables.McRankAsync;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Leaderboard;
 
 public class McrankCommand implements CommandExecutor {

+ 2 - 2
src/main/java/com/gmail/nossr50/commands/mc/MctopCommand.java

@@ -11,8 +11,8 @@ import org.bukkit.command.CommandSender;
 import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.database.Database;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Leaderboard;
 import com.gmail.nossr50.util.Misc;
 

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

@@ -89,6 +89,13 @@ public class AdvancedConfig extends ConfigLoader {
     public int getShakeChanceRank4() { return config.getInt("Skills.Fishing.Shake_Chance.Rank_4", 60); }
     public int getShakeChanceRank5() { return config.getInt("Skills.Fishing.Shake_Chance.Rank_5", 75); }
 
+    /* Vanilla XP Boost */
+    public int getFishingVanillaXPModifierRank1() { return config.getInt("Skills.Fishing.VanillaXPBoost.Rank_1", 1); }
+    public int getFishingVanillaXPModifierRank2() { return config.getInt("Skills.Fishing.VanillaXPBoost.Rank_2", 2); }
+    public int getFishingVanillaXPModifierRank3() { return config.getInt("Skills.Fishing.VanillaXPBoost.Rank_3", 3); }
+    public int getFishingVanillaXPModifierRank4() { return config.getInt("Skills.Fishing.VanillaXPBoost.Rank_4", 4); }
+    public int getFishingVanillaXPModifierRank5() { return config.getInt("Skills.Fishing.VanillaXPBoost.Rank_5", 5); }
+
     /* HERBALISM */
     public int getFarmerDietRankChange() { return config.getInt("Skills.Herbalism.Farmer_Diet_RankChange", 200); }
 

+ 10 - 8
src/main/java/com/gmail/nossr50/database/Database.java

@@ -15,9 +15,9 @@ import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.Config;
+import com.gmail.nossr50.database.runnables.SQLReconnect;
 import com.gmail.nossr50.datatypes.McMMOPlayer;
-import com.gmail.nossr50.runnables.SQLReconnect;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.spout.SpoutTools;
 import com.gmail.nossr50.spout.huds.SpoutHud;
 import com.gmail.nossr50.util.Users;
@@ -179,7 +179,7 @@ public final class Database {
             break;
 
         case INDEX:
-            if(read("SHOW INDEX FROM " + tablePrefix + "skills").size() != 13) {
+            if (read("SHOW INDEX FROM " + tablePrefix + "skills").size() != 13) {
                 mcMMO.p.getLogger().info("Indexing tables, this may take a while on larger databases");
                 write("ALTER TABLE `" + tablePrefix + "skills` ADD INDEX `idx_taming` (`taming`) USING BTREE, "
                         + "ADD INDEX `idx_mining` (`mining`) USING BTREE, "
@@ -478,24 +478,26 @@ public final class Database {
                 for (SkillType skillType: SkillType.values()) {
                     if (skillType.isChildSkill()) continue;
                     String sql;
-                    if(skillType != SkillType.ALL) {
+                    if (skillType != SkillType.ALL) {
                         sql = "SELECT COUNT(*) AS rank FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE " + skillType.name().toLowerCase() + " > 0 AND " + skillType.name().toLowerCase() + " > (SELECT " + skillType.name().toLowerCase() + " FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE user = '" + playerName + "')";
-                    } else {
+                    }
+                    else {
                         sql = "SELECT COUNT(*) AS rank FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > 0 AND taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > (SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE user = '" + playerName + "')";
                     }
                     PreparedStatement statement = connection.prepareStatement(sql);
                     resultSet = statement.executeQuery();
                     resultSet.next();
                     int rank = resultSet.getInt("rank");
-                    if(skillType != SkillType.ALL) {
+                    if (skillType != SkillType.ALL) {
                         sql = "SELECT user, " + skillType.name().toLowerCase() + " FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE " + skillType.name().toLowerCase() + " > 0 AND " + skillType.name().toLowerCase() + " = (SELECT " + skillType.name().toLowerCase() + " FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE user = '" + playerName + "') ORDER BY user";
-                    } else {
+                    }
+                    else {
                         sql = "SELECT user, taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > 0 AND taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing = (SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE user = '" + playerName + "') ORDER BY user";
                     }
                     statement = connection.prepareStatement(sql);
                     resultSet = statement.executeQuery();
                     while (resultSet.next()) {
-                        if(resultSet.getString("user").equalsIgnoreCase(playerName)) {
+                        if (resultSet.getString("user").equalsIgnoreCase(playerName)) {
                             skills.put(skillType.name(), rank + resultSet.getRow());
                             break;
                         }

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

@@ -8,8 +8,8 @@ import org.bukkit.entity.Player;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.commands.CommandHelper;
 import com.gmail.nossr50.config.Config;
+import com.gmail.nossr50.database.runnables.SQLConversionTask;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.runnables.SQLConversionTask;
 import com.gmail.nossr50.util.Users;
 
 public class MmoupdateCommand implements CommandExecutor {

+ 1 - 1
src/main/java/com/gmail/nossr50/runnables/SQLConversionTask.java → src/main/java/com/gmail/nossr50/database/runnables/SQLConversionTask.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.runnables;
+package com.gmail.nossr50.database.runnables;
 
 import java.io.BufferedReader;
 import java.io.FileReader;

+ 1 - 1
src/main/java/com/gmail/nossr50/runnables/SQLReconnect.java → src/main/java/com/gmail/nossr50/database/runnables/SQLReconnect.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.runnables;
+package com.gmail.nossr50.database.runnables;
 
 import org.bukkit.entity.Player;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/runnables/UserPurgeTask.java → src/main/java/com/gmail/nossr50/database/runnables/UserPurgeTask.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.runnables;
+package com.gmail.nossr50.database.runnables;
 
 import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.database.Database;

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/McMMOPlayer.java

@@ -11,7 +11,7 @@ import com.gmail.nossr50.mods.ModChecks;
 import com.gmail.nossr50.mods.datatypes.CustomTool;
 import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.party.PartyManager;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.spout.huds.SpoutHud;
 import com.gmail.nossr50.util.Permissions;
 

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

@@ -14,9 +14,9 @@ import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.database.Database;
 import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.party.PartyManager;
-import com.gmail.nossr50.skills.AbilityType;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.ToolType;
+import com.gmail.nossr50.skills.utilities.AbilityType;
+import com.gmail.nossr50.skills.utilities.SkillType;
+import com.gmail.nossr50.skills.utilities.ToolType;
 import com.gmail.nossr50.spout.SpoutConfig;
 import com.gmail.nossr50.spout.huds.HudType;
 import com.gmail.nossr50.spout.huds.SpoutHud;

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

@@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.HandlerList;
 import org.bukkit.event.player.PlayerEvent;
 
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 /**
  * Generic event for mcMMO experience events.

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.events.experience;
 
 import org.bukkit.entity.Player;
 
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 /**
  * Called when a user levels up in a skill

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.events.experience;
 
 import org.bukkit.entity.Player;
 
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 /**
  * Called when a player gains XP in a skill

+ 1 - 1
src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerDisarmEvent.java

@@ -3,7 +3,7 @@ package com.gmail.nossr50.events.skills;
 import org.bukkit.entity.Player;
 import org.bukkit.event.Cancellable;
 
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 public class McMMOPlayerDisarmEvent extends McMMOPlayerSkillEvent implements Cancellable {
     private boolean cancelled;

+ 1 - 1
src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerRepairCheckEvent.java

@@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.Cancellable;
 import org.bukkit.inventory.ItemStack;
 
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 /**
  * Called just before a player repairs an object with mcMMO.

+ 1 - 1
src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerSkillEvent.java

@@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.HandlerList;
 import org.bukkit.event.player.PlayerEvent;
 
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 /**
  * Generic event for mcMMO skill handling.

+ 4 - 4
src/main/java/com/gmail/nossr50/listeners/BlockListener.java

@@ -27,10 +27,6 @@ import com.gmail.nossr50.events.fake.FakeBlockBreakEvent;
 import com.gmail.nossr50.events.fake.FakeBlockDamageEvent;
 import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
 import com.gmail.nossr50.runnables.StickyPistonTracker;
-import com.gmail.nossr50.skills.AbilityType;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
-import com.gmail.nossr50.skills.ToolType;
 import com.gmail.nossr50.skills.excavation.Excavation;
 import com.gmail.nossr50.skills.herbalism.Herbalism;
 import com.gmail.nossr50.skills.mining.Mining;
@@ -38,6 +34,10 @@ import com.gmail.nossr50.skills.mining.MiningManager;
 import com.gmail.nossr50.skills.repair.Repair;
 import com.gmail.nossr50.skills.repair.Salvage;
 import com.gmail.nossr50.skills.smelting.SmeltingManager;
+import com.gmail.nossr50.skills.utilities.AbilityType;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
+import com.gmail.nossr50.skills.utilities.ToolType;
 import com.gmail.nossr50.skills.woodcutting.Woodcutting;
 import com.gmail.nossr50.util.BlockChecks;
 import com.gmail.nossr50.util.ItemChecks;

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

@@ -31,15 +31,15 @@ import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
 import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
 import com.gmail.nossr50.party.PartyManager;
-import com.gmail.nossr50.runnables.BleedTimer;
-import com.gmail.nossr50.skills.Combat;
 import com.gmail.nossr50.skills.acrobatics.Acrobatics;
 import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
 import com.gmail.nossr50.skills.archery.Archery;
 import com.gmail.nossr50.skills.fishing.Fishing;
 import com.gmail.nossr50.skills.herbalism.Herbalism;
 import com.gmail.nossr50.skills.mining.MiningManager;
+import com.gmail.nossr50.skills.runnables.BleedTimer;
 import com.gmail.nossr50.skills.taming.TamingManager;
+import com.gmail.nossr50.skills.utilities.CombatTools;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;
@@ -121,7 +121,7 @@ public class EntityListener implements Listener {
             LivingEntity livingDefender = (LivingEntity) defender;
 
             if (!Misc.isInvincible(livingDefender, event)) {
-                Combat.combatChecks(event, attacker, livingDefender);
+                CombatTools.combatChecks(event, attacker, livingDefender);
             }
         }
     }

+ 8 - 6
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -24,16 +24,16 @@ import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.party.Party;
-import com.gmail.nossr50.runnables.BleedTimer;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
 import com.gmail.nossr50.skills.fishing.Fishing;
 import com.gmail.nossr50.skills.herbalism.Herbalism;
 import com.gmail.nossr50.skills.mining.BlastMining;
 import com.gmail.nossr50.skills.mining.MiningManager;
 import com.gmail.nossr50.skills.repair.Repair;
 import com.gmail.nossr50.skills.repair.Salvage;
+import com.gmail.nossr50.skills.runnables.BleedTimer;
 import com.gmail.nossr50.skills.taming.TamingManager;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.BlockChecks;
 import com.gmail.nossr50.util.ChatManager;
 import com.gmail.nossr50.util.ChimaeraWing;
@@ -92,7 +92,9 @@ public class PlayerListener implements Listener {
         switch (event.getState()) {
         case CAUGHT_FISH:
             Fishing.beginFishing(player, skillLevel, event);
-              break;
+            Fishing.awardAdditionalVanillaXP(skillLevel, event);
+            break;
+
         case CAUGHT_ENTITY:
             if (skillLevel >= AdvancedConfig.getInstance().getShakeUnlockLevel() && Permissions.shakeMob(player)) {
                 //TODO: Unsafe cast?
@@ -342,11 +344,11 @@ public class PlayerListener implements Listener {
                 return;
             }
 
-            ChatManager.handlePartyChat(plugin, party, player.getName(), event.getMessage());
+            ChatManager.handlePartyChat(plugin, party, player.getDisplayName(), event.getMessage());
             event.setCancelled(true);
         }
         else if (profile.getAdminChatMode()) {
-            ChatManager.handleAdminChat(plugin, player.getName(), event.getMessage());
+            ChatManager.handleAdminChat(plugin, player.getDisplayName(), event.getMessage());
             event.setCancelled(true);
         }
     }

+ 1 - 1
src/main/java/com/gmail/nossr50/listeners/WorldListener.java

@@ -20,7 +20,7 @@ import org.bukkit.event.world.WorldInitEvent;
 import org.bukkit.event.world.WorldUnloadEvent;
 
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.runnables.blockstoreconversion.BlockStoreConversionMain;
+import com.gmail.nossr50.blockstore.conversion.BlockStoreConversionMain;
 
 public class WorldListener implements Listener {
     private ArrayList<BlockStoreConversionMain> converters = new ArrayList<BlockStoreConversionMain>();

+ 5 - 5
src/main/java/com/gmail/nossr50/mcMMO.java

@@ -16,6 +16,8 @@ import org.bukkit.plugin.PluginManager;
 import org.bukkit.plugin.java.JavaPlugin;
 import org.bukkit.scheduler.BukkitScheduler;
 
+import com.gmail.nossr50.blockstore.chunkmeta.ChunkManager;
+import com.gmail.nossr50.blockstore.chunkmeta.ChunkManagerFactory;
 import com.gmail.nossr50.commands.general.AddlevelsCommand;
 import com.gmail.nossr50.commands.general.AddxpCommand;
 import com.gmail.nossr50.commands.general.InspectCommand;
@@ -38,6 +40,7 @@ import com.gmail.nossr50.database.Database;
 import com.gmail.nossr50.database.commands.McpurgeCommand;
 import com.gmail.nossr50.database.commands.McremoveCommand;
 import com.gmail.nossr50.database.commands.MmoupdateCommand;
+import com.gmail.nossr50.database.runnables.UserPurgeTask;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.listeners.BlockListener;
 import com.gmail.nossr50.listeners.EntityListener;
@@ -54,11 +57,8 @@ import com.gmail.nossr50.party.commands.ACommand;
 import com.gmail.nossr50.party.commands.PCommand;
 import com.gmail.nossr50.party.commands.PartyCommand;
 import com.gmail.nossr50.party.commands.PtpCommand;
-import com.gmail.nossr50.runnables.BleedTimer;
 import com.gmail.nossr50.runnables.MobStoreCleaner;
 import com.gmail.nossr50.runnables.SaveTimer;
-import com.gmail.nossr50.runnables.SkillMonitor;
-import com.gmail.nossr50.runnables.UserPurgeTask;
 import com.gmail.nossr50.skills.acrobatics.AcrobaticsCommand;
 import com.gmail.nossr50.skills.archery.ArcheryCommand;
 import com.gmail.nossr50.skills.axes.AxesCommand;
@@ -71,6 +71,8 @@ import com.gmail.nossr50.skills.repair.RepairManager;
 import com.gmail.nossr50.skills.repair.RepairManagerFactory;
 import com.gmail.nossr50.skills.repair.Repairable;
 import com.gmail.nossr50.skills.repair.config.RepairConfigManager;
+import com.gmail.nossr50.skills.runnables.BleedTimer;
+import com.gmail.nossr50.skills.runnables.SkillMonitor;
 import com.gmail.nossr50.skills.smelting.SmeltingCommand;
 import com.gmail.nossr50.skills.swords.SwordsCommand;
 import com.gmail.nossr50.skills.taming.TamingCommand;
@@ -85,8 +87,6 @@ import com.gmail.nossr50.util.Leaderboard;
 import com.gmail.nossr50.util.Metrics;
 import com.gmail.nossr50.util.Metrics.Graph;
 import com.gmail.nossr50.util.Users;
-import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManager;
-import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory;
 
 public class mcMMO extends JavaPlugin {
     private final PlayerListener playerListener = new PlayerListener(this);

+ 2 - 2
src/main/java/com/gmail/nossr50/party/ShareHandler.java

@@ -5,8 +5,8 @@ import java.util.List;
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.config.Config;
-import com.gmail.nossr50.skills.SkillTools;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Users;
 
 public class ShareHandler {

+ 2 - 2
src/main/java/com/gmail/nossr50/runnables/McRankAsync.java

@@ -7,8 +7,8 @@ import org.bukkit.command.CommandSender;
 
 import com.gmail.nossr50.database.Database;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 public class McRankAsync implements Runnable {
     private final String playerName;

+ 3 - 1
src/main/java/com/gmail/nossr50/skills/SkillCommand.java

@@ -10,6 +10,8 @@ import org.bukkit.entity.Player;
 import com.gmail.nossr50.commands.CommandHelper;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;
@@ -78,7 +80,7 @@ public abstract class SkillCommand implements CommandExecutor {
 
         statsDisplay();
 
-        Page.grabGuidePageForSkill(skill, player, args);
+        SkillGuide.grabGuidePageForSkill(skill, player, args);
 
         return true;
     }

+ 12 - 8
src/main/java/com/gmail/nossr50/skills/Page.java → src/main/java/com/gmail/nossr50/skills/SkillGuide.java

@@ -5,10 +5,12 @@ import java.util.ArrayList;
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.locale.LocaleLoader;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 
-public final class Page {
-    private Page() {}
+public final class SkillGuide {
+    private SkillGuide() {}
 
     public static int getTotalPageNumber(String address) {
         String[] addressSplit = LocaleLoader.getString(address).split("\n");
@@ -61,12 +63,12 @@ public final class Page {
 
         if (args.length >= 1 && args[0].equals("?")) {
             String address = "Guides." + capitalized;
-            int totalPages = Page.getTotalPageNumber(address);
+            int totalPages = SkillGuide.getTotalPageNumber(address);
 
             if (args.length == 1) {
-                Page.clearChat(player);
+                SkillGuide.clearChat(player);
 
-                for (String target : Page.grabPageContents(localized, address, 1)) {
+                for (String target : SkillGuide.grabPageContents(localized, address, 1)) {
                     player.sendMessage(target);
                 }
             }
@@ -76,9 +78,9 @@ public final class Page {
                 }
 
                 if (Misc.getInt(args[1]) <= totalPages) {
-                    Page.clearChat(player);
+                    SkillGuide.clearChat(player);
 
-                    for (String target : Page.grabPageContents(localized, address, Misc.getInt(args[1]))) {
+                    for (String target : SkillGuide.grabPageContents(localized, address, Misc.getInt(args[1]))) {
                         player.sendMessage(target);
                     }
                 }
@@ -87,7 +89,9 @@ public final class Page {
                 }
             }
         }
-        else {
+
+        // We have to specify this, else we get the usage string every time we call /skillname...
+        else if (args.length != 0) {
             player.sendMessage(LocaleLoader.getString("Guides.Usage", new Object[] {localized.toLowerCase()} ));
         }
     }

+ 1 - 0
src/main/java/com/gmail/nossr50/skills/SkillManager.java

@@ -3,6 +3,7 @@ package com.gmail.nossr50.skills;
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.acrobatics;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class AcrobaticsCommand extends SkillCommand {

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java

@@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.entity.EntityDamageEvent;
 
 import com.gmail.nossr50.skills.SkillManager;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 
 public class AcrobaticsManager extends SkillManager {

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/acrobatics/DodgeEventHandler.java

@@ -4,8 +4,8 @@ import org.bukkit.event.entity.EntityDamageEvent;
 
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 
 public class DodgeEventHandler extends AcrobaticsEventHandler {

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/acrobatics/RollEventHandler.java

@@ -3,8 +3,8 @@ package com.gmail.nossr50.skills.acrobatics;
 import org.bukkit.event.entity.EntityDamageEvent;
 
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.archery;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class ArcheryCommand extends SkillCommand {

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java

@@ -6,8 +6,8 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.entity.EntityDamageEvent;
 
 import com.gmail.nossr50.skills.SkillManager;
-import com.gmail.nossr50.skills.SkillTools;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/axes/AxeManager.java

@@ -5,7 +5,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;
 
 import com.gmail.nossr50.skills.SkillManager;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 
 public class AxeManager extends SkillManager {

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.axes;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class AxesCommand extends SkillCommand {

+ 3 - 3
src/main/java/com/gmail/nossr50/skills/axes/SkullSplitterEventHandler.java

@@ -3,8 +3,8 @@ package com.gmail.nossr50.skills.axes;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 
-import com.gmail.nossr50.skills.Combat;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.CombatTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 public class SkullSplitterEventHandler {
     private Player player;
@@ -18,6 +18,6 @@ public class SkullSplitterEventHandler {
     }
 
     protected void applyAbilityEffects() {
-        Combat.applyAbilityAoE(player, target, damage / Axes.skullSplitterModifier, SkillType.AXES);
+        CombatTools.applyAbilityAoE(player, target, damage / Axes.skullSplitterModifier, SkillType.AXES);
     }
 }

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java

@@ -17,8 +17,8 @@ import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
 import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
 import com.gmail.nossr50.mods.ModChecks;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.excavation;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class ExcavationCommand extends SkillCommand {

+ 44 - 7
src/main/java/com/gmail/nossr50/skills/fishing/Fishing.java

@@ -17,8 +17,8 @@ import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.config.TreasuresConfig;
 import com.gmail.nossr50.datatypes.treasure.FishingTreasure;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.ItemChecks;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
@@ -29,11 +29,26 @@ public final class Fishing {
 
     // The order of the values is extremely important, Fishing.getLootTier() and ShakeMob.getShakeChance() depend on it to work properly
     protected enum Tier {
-        FIVE(5) {@Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier5();} @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank5();}},
-        FOUR(4) {@Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier4();} @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank4();}},
-        THREE(3) {@Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier3();} @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank3();}},
-        TWO(2) {@Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier2();} @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank2();}},
-        ONE(1) {@Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier1();} @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank1();}};
+        FIVE(5) {
+            @Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier5();}
+            @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank5();}
+            @Override public int getVanillaXPBoostModifier() {return ADVANCED_CONFIG.getFishingVanillaXPModifierRank5();}},
+        FOUR(4) {
+            @Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier4();}
+            @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank4();}
+            @Override public int getVanillaXPBoostModifier() {return ADVANCED_CONFIG.getFishingVanillaXPModifierRank4();}},
+        THREE(3) {
+            @Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier3();}
+            @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank3();}
+            @Override public int getVanillaXPBoostModifier() {return ADVANCED_CONFIG.getFishingVanillaXPModifierRank3();}},
+        TWO(2) {
+            @Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier2();}
+            @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank2();}
+            @Override public int getVanillaXPBoostModifier() {return ADVANCED_CONFIG.getFishingVanillaXPModifierRank2();}},
+        ONE(1) {
+            @Override public int getLevel() {return ADVANCED_CONFIG.getFishingTierLevelsTier1();}
+            @Override public int getShakeChance() {return ADVANCED_CONFIG.getShakeChanceRank1();}
+            @Override public int getVanillaXPBoostModifier() {return ADVANCED_CONFIG.getFishingVanillaXPModifierRank1();}};
 
         int numerical;
 
@@ -47,6 +62,7 @@ public final class Fishing {
 
         abstract protected int getLevel();
         abstract protected int getShakeChance();
+        abstract protected int getVanillaXPBoostModifier();
     }
 
     // TODO: Get rid of that
@@ -115,6 +131,11 @@ public final class Fishing {
         SkillTools.xpProcessing(player, Users.getProfile(player), SkillType.FISHING, Config.getInstance().getFishingBaseXP() + xp);
     }
 
+    public static void awardAdditionalVanillaXP(int skillLevel, PlayerFishEvent event) {
+        int xp = event.getExpToDrop();
+        event.setExpToDrop(xp * getVanillaXPMultiplier(skillLevel));
+    }
+
     /**
      * Checks for treasure
      *
@@ -233,4 +254,20 @@ public final class Fishing {
 
         return 0;
     }
+
+   /**
+    * Gets the Shake Mob probability for a given skill level
+    *
+    * @param skillLevel Fishing skill level
+    * @return Shake Mob probability
+    */
+   public static int getVanillaXPMultiplier(int skillLevel) {
+       for (Tier tier : Tier.values()) {
+           if (skillLevel >= tier.getLevel()) {
+               return tier.getVanillaXPBoostModifier();
+           }
+       }
+
+       return 0;
+   }
 }

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

@@ -3,7 +3,7 @@ package com.gmail.nossr50.skills.fishing;
 import com.gmail.nossr50.config.AdvancedConfig;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class FishingCommand extends SkillCommand {

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/fishing/ShakeMob.java

@@ -15,8 +15,8 @@ import org.bukkit.material.Wool;
 import org.bukkit.potion.Potion;
 import org.bukkit.potion.PotionType;
 
-import com.gmail.nossr50.skills.Combat;
 import com.gmail.nossr50.skills.fishing.Fishing.Tier;
+import com.gmail.nossr50.skills.utilities.CombatTools;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 
@@ -92,7 +92,7 @@ public final class ShakeMob {
         }
 
         Misc.dropItem(mob.getLocation(), drop);
-        Combat.dealDamage(mob, 1); // We may want to base the damage on the entity max health
+        CombatTools.dealDamage(mob, 1); // We may want to base the damage on the entity max health
     }
 
     /**

+ 3 - 3
src/main/java/com/gmail/nossr50/runnables/GreenThumbTimer.java → src/main/java/com/gmail/nossr50/skills/herbalism/GreenThumbTimer.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.runnables;
+package com.gmail.nossr50.skills.herbalism;
 
 import org.bukkit.CropState;
 import org.bukkit.Material;
@@ -6,8 +6,8 @@ import org.bukkit.block.Block;
 
 import com.gmail.nossr50.config.AdvancedConfig;
 import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.skills.AbilityType;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.AbilityType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 public class GreenThumbTimer implements Runnable {
     private Block block;

+ 3 - 4
src/main/java/com/gmail/nossr50/skills/herbalism/Herbalism.java

@@ -23,10 +23,9 @@ import com.gmail.nossr50.datatypes.treasure.HylianTreasure;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.mods.ModChecks;
 import com.gmail.nossr50.mods.datatypes.CustomBlock;
-import com.gmail.nossr50.runnables.GreenThumbTimer;
-import com.gmail.nossr50.skills.AbilityType;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.AbilityType;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.herbalism;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class HerbalismCommand extends SkillCommand {

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/mining/Mining.java

@@ -14,8 +14,8 @@ import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.mods.ModChecks;
 import com.gmail.nossr50.mods.datatypes.CustomBlock;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 
 public class Mining {

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.mining;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java

@@ -10,7 +10,7 @@ import org.bukkit.event.player.PlayerInteractEvent;
 
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.skills.SkillManager;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/mining/RemoteDetonationEventHandler.java

@@ -11,8 +11,8 @@ import org.bukkit.event.player.PlayerInteractEvent;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.AbilityType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.AbilityType;
+import com.gmail.nossr50.skills.utilities.SkillTools;
 import com.gmail.nossr50.util.Misc;
 
 public class RemoteDetonationEventHandler {

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/mining/SuperBreakerEventHandler.java

@@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
 import com.gmail.nossr50.mods.ModChecks;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
 import com.gmail.nossr50.util.Misc;
 
 public class SuperBreakerEventHandler {

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

@@ -16,8 +16,8 @@ import com.gmail.nossr50.config.AdvancedConfig;
 import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;

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

@@ -5,7 +5,7 @@ import org.bukkit.Material;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class RepairCommand extends SkillCommand {

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

@@ -13,7 +13,7 @@ import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.ItemChecks;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Users;

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

@@ -12,7 +12,7 @@ import org.bukkit.inventory.PlayerInventory;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.events.skills.McMMOPlayerRepairCheckEvent;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 import com.gmail.nossr50.util.Users;

+ 5 - 5
src/main/java/com/gmail/nossr50/runnables/BleedTimer.java → src/main/java/com/gmail/nossr50/skills/runnables/BleedTimer.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.runnables;
+package com.gmail.nossr50.skills.runnables;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -11,7 +11,7 @@ import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.Combat;
+import com.gmail.nossr50.skills.utilities.CombatTools;
 
 public class BleedTimer implements Runnable {
     private final static int MAX_BLEED_TICKS = 10;
@@ -47,7 +47,7 @@ public class BleedTimer implements Runnable {
 
                 //Never kill with Bleeding
                 if (player.getHealth() - 1 > 0) {
-                    Combat.dealDamage(player, 1);
+                    CombatTools.dealDamage(player, 1);
                 }
 
                 entry.setValue(entry.getValue() - 1);
@@ -58,7 +58,7 @@ public class BleedTimer implements Runnable {
             }
             // Bleed monsters/animals
             else {
-                Combat.dealDamage(entity, 2);
+                CombatTools.dealDamage(entity, 2);
                 entry.setValue(entry.getValue() - 1);
             }
         }
@@ -87,7 +87,7 @@ public class BleedTimer implements Runnable {
      */
     public static void bleedOut(LivingEntity entity) {
         if (bleedList.containsKey(entity)) {
-            Combat.dealDamage(entity, bleedList.get(entity) * 2);
+            CombatTools.dealDamage(entity, bleedList.get(entity) * 2);
             bleedList.remove(entity);
         }
     }

+ 3 - 3
src/main/java/com/gmail/nossr50/runnables/GainXp.java → src/main/java/com/gmail/nossr50/skills/runnables/GainXp.java

@@ -1,11 +1,11 @@
-package com.gmail.nossr50.runnables;
+package com.gmail.nossr50.skills.runnables;
 
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 public class GainXp implements Runnable {
     private Player player;

+ 4 - 4
src/main/java/com/gmail/nossr50/runnables/SkillMonitor.java → src/main/java/com/gmail/nossr50/skills/runnables/SkillMonitor.java

@@ -1,12 +1,12 @@
-package com.gmail.nossr50.runnables;
+package com.gmail.nossr50.skills.runnables;
 
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.skills.AbilityType;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.AbilityType;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Users;
 
 public class SkillMonitor implements Runnable {

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/smelting/FluxMiningEventHandler.java

@@ -8,8 +8,8 @@ import org.bukkit.event.block.BlockBreakEvent;
 import org.bukkit.inventory.ItemStack;
 
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
 import com.gmail.nossr50.skills.mining.Mining;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/smelting/SmeltResourceEventHandler.java

@@ -7,8 +7,8 @@ import org.bukkit.inventory.ItemStack;
 
 import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.smelting;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class SmeltingCommand extends SkillCommand {

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java

@@ -7,7 +7,7 @@ import org.bukkit.event.inventory.FurnaceExtractEvent;
 import org.bukkit.event.inventory.FurnaceSmeltEvent;
 
 import com.gmail.nossr50.skills.SkillManager;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/swords/BleedEventHandler.java

@@ -4,7 +4,7 @@ import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.runnables.BleedTimer;
+import com.gmail.nossr50.skills.runnables.BleedTimer;
 import com.gmail.nossr50.util.Misc;
 
 public class BleedEventHandler {

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/swords/CounterAttackEventHandler.java

@@ -4,7 +4,7 @@ import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.Combat;
+import com.gmail.nossr50.skills.utilities.CombatTools;
 import com.gmail.nossr50.util.Misc;
 
 public class CounterAttackEventHandler {
@@ -27,7 +27,7 @@ public class CounterAttackEventHandler {
     }
 
     protected void dealDamage() {
-        Combat.dealDamage(attacker, damage / Swords.counterAttackModifier);
+        CombatTools.dealDamage(attacker, damage / Swords.counterAttackModifier);
     }
 
     protected void sendAbilityMessages() {

+ 4 - 4
src/main/java/com/gmail/nossr50/skills/swords/SerratedStrikesEventHandler.java

@@ -3,9 +3,9 @@ package com.gmail.nossr50.skills.swords;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 
-import com.gmail.nossr50.runnables.BleedTimer;
-import com.gmail.nossr50.skills.Combat;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.runnables.BleedTimer;
+import com.gmail.nossr50.skills.utilities.CombatTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 
 public class SerratedStrikesEventHandler {
     private Player player;
@@ -19,7 +19,7 @@ public class SerratedStrikesEventHandler {
     }
 
     protected void applyAbilityEffects() {
-        Combat.applyAbilityAoE(player, target, damage / Swords.serratedStrikesModifier, SkillType.SWORDS);
+        CombatTools.applyAbilityAoE(player, target, damage / Swords.serratedStrikesModifier, SkillType.SWORDS);
         BleedTimer.add(target, Swords.serratedStrikesBleedTicks);
     }
 }

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.swords;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class SwordsCommand extends SkillCommand {

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java

@@ -4,7 +4,7 @@ import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.skills.SkillManager;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 
 public class SwordsManager extends SkillManager {

+ 6 - 2
src/main/java/com/gmail/nossr50/skills/taming/BeastLoreEventHandler.java

@@ -1,5 +1,6 @@
 package com.gmail.nossr50.skills.taming;
 
+import org.bukkit.OfflinePlayer;
 import org.bukkit.entity.AnimalTamer;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
@@ -36,7 +37,7 @@ public class BeastLoreEventHandler {
      * Get the name of a tameable animal's owner.
      *
      * @param beast The animal whose owner's name to get
-     * @return the name of the animal's owner, or "Offline Master" if the owner is offline
+     * @return the name of the animal's owner
      */
     private String getOwnerName() {
         AnimalTamer tamer = beast.getOwner();
@@ -44,7 +45,10 @@ public class BeastLoreEventHandler {
         if (tamer instanceof Player) {
             return ((Player) tamer).getName();
         }
+        else if (tamer instanceof OfflinePlayer) {
+            return ((OfflinePlayer)tamer).getName();
+        }
 
-        return "Offline Master";
+        return "Unknown Master";
     }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/taming/GoreEventHandler.java

@@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.entity.EntityDamageEvent;
 
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.runnables.BleedTimer;
+import com.gmail.nossr50.skills.runnables.BleedTimer;
 import com.gmail.nossr50.util.Misc;
 
 public class GoreEventHandler {

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

@@ -3,7 +3,7 @@ package com.gmail.nossr50.skills.taming;
 import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class TamingCommand extends SkillCommand {

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java

@@ -12,8 +12,8 @@ import org.bukkit.inventory.ItemStack;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.Config;
 import com.gmail.nossr50.skills.SkillManager;
-import com.gmail.nossr50.skills.SkillType;
-import com.gmail.nossr50.skills.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillTools;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/unarmed/IronGripEventHandler.java

@@ -3,7 +3,7 @@ package com.gmail.nossr50.skills.unarmed;
 import org.bukkit.entity.Player;
 
 import com.gmail.nossr50.locale.LocaleLoader;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Users;
 

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

@@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.unarmed;
 
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.skills.SkillCommand;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Permissions;
 
 public class UnarmedCommand extends SkillCommand {

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java

@@ -5,7 +5,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.event.entity.EntityDamageEvent;
 
 import com.gmail.nossr50.skills.SkillManager;
-import com.gmail.nossr50.skills.SkillType;
+import com.gmail.nossr50.skills.utilities.SkillType;
 import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.Permissions;
 

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/AbilityType.java → src/main/java/com/gmail/nossr50/skills/utilities/AbilityType.java

@@ -1,4 +1,4 @@
-package com.gmail.nossr50.skills;
+package com.gmail.nossr50.skills.utilities;
 
 import org.bukkit.Material;
 import org.bukkit.block.Block;

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików