Browse Source

Move all commands into own classes
Added PlayerCommandPreprocess to support aliasing functionality

NuclearW 13 years ago
parent
commit
faff625187
37 changed files with 2628 additions and 1656 deletions
  1. 0 1647
      src/com/gmail/nossr50/command/Commands.java
  2. 86 0
      src/com/gmail/nossr50/commands/general/AddxpCommand.java
  3. 46 0
      src/com/gmail/nossr50/commands/general/ClearmyspawnCommand.java
  4. 83 0
      src/com/gmail/nossr50/commands/general/MmoeditCommand.java
  5. 39 0
      src/com/gmail/nossr50/commands/general/MmoupdateCommand.java
  6. 58 0
      src/com/gmail/nossr50/commands/general/MyspawnCommand.java
  7. 85 0
      src/com/gmail/nossr50/commands/general/StatsCommand.java
  8. 98 0
      src/com/gmail/nossr50/commands/general/WhoisCommand.java
  9. 126 0
      src/com/gmail/nossr50/commands/general/XprateCommand.java
  10. 45 0
      src/com/gmail/nossr50/commands/mc/McabilityCommand.java
  11. 73 0
      src/com/gmail/nossr50/commands/mc/MccCommand.java
  12. 48 0
      src/com/gmail/nossr50/commands/mc/McgodCommand.java
  13. 48 0
      src/com/gmail/nossr50/commands/mc/McmmoCommand.java
  14. 93 0
      src/com/gmail/nossr50/commands/mc/McrefreshCommand.java
  15. 199 0
      src/com/gmail/nossr50/commands/mc/MctopCommand.java
  16. 86 0
      src/com/gmail/nossr50/commands/party/ACommand.java
  17. 52 0
      src/com/gmail/nossr50/commands/party/AcceptCommand.java
  18. 73 0
      src/com/gmail/nossr50/commands/party/InviteCommand.java
  19. 101 0
      src/com/gmail/nossr50/commands/party/PCommand.java
  20. 192 0
      src/com/gmail/nossr50/commands/party/PartyCommand.java
  21. 62 0
      src/com/gmail/nossr50/commands/party/PtpCommand.java
  22. 52 0
      src/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java
  23. 63 0
      src/com/gmail/nossr50/commands/skills/ArcheryCommand.java
  24. 62 0
      src/com/gmail/nossr50/commands/skills/AxesCommand.java
  25. 46 0
      src/com/gmail/nossr50/commands/skills/ExcavationCommand.java
  26. 47 0
      src/com/gmail/nossr50/commands/skills/FishingCommand.java
  27. 63 0
      src/com/gmail/nossr50/commands/skills/HerbalismCommand.java
  28. 48 0
      src/com/gmail/nossr50/commands/skills/MiningCommand.java
  29. 53 0
      src/com/gmail/nossr50/commands/skills/RepairCommand.java
  30. 69 0
      src/com/gmail/nossr50/commands/skills/SwordsCommand.java
  31. 70 0
      src/com/gmail/nossr50/commands/skills/TamingCommand.java
  32. 74 0
      src/com/gmail/nossr50/commands/skills/UnarmedCommand.java
  33. 56 0
      src/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java
  34. 50 0
      src/com/gmail/nossr50/commands/spout/MchudCommand.java
  35. 62 0
      src/com/gmail/nossr50/commands/spout/XplockCommand.java
  36. 14 2
      src/com/gmail/nossr50/listeners/mcPlayerListener.java
  37. 106 7
      src/com/gmail/nossr50/mcMMO.java

+ 0 - 1647
src/com/gmail/nossr50/command/Commands.java

@@ -1,1647 +0,0 @@
-/*
-	This file is part of mcMMO.
-
-    mcMMO is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    mcMMO is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with mcMMO.  If not, see <http://www.gnu.org/licenses/>.
-*/
-package com.gmail.nossr50.command;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.getspout.spoutapi.player.SpoutPlayer;
-
-import com.gmail.nossr50.Leaderboard;
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.HUDType;
-import com.gmail.nossr50.datatypes.HUDmmo;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.party.Party;
-import com.gmail.nossr50.skills.Fishing;
-import com.gmail.nossr50.skills.Repair;
-import com.gmail.nossr50.skills.Skills;
-import com.gmail.nossr50.spout.SpoutStuff;
-
-public class Commands 
-{
-	//Setup some vars
-	public static final Logger log = Logger.getLogger("Minecraft"); 
-	public static boolean xpevent = false;
-	static int oldrate = LoadProperties.xpGainMultiplier;
-
-	
-	public static boolean isPlayer(String playerName){
-		for(Player herp :  Bukkit.getServer().getOnlinePlayers()){
-			if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){
-				return true;
-			}
-		}
-		return false;
-	}
-	
-	public static Player getPlayer(String playerName){
-		for(Player herp : Bukkit.getServer().getOnlinePlayers()){
-			if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){
-				return herp;
-			}
-		}
-		return null;
-	}
-	
-	public static boolean processCommands(CommandSender sender, Command command, String label, String[] args)
-	{
-		Player player = null;
-		PlayerProfile PP = null;
-		if(sender instanceof Player) 
-		{
-			player = (Player) sender;
-			PP = Users.getProfile(player);
-		}
-
-		String[] split = new String[args.length + 1];
-		split[0] = label;
-		for(int a = 0; a < args.length; a++){
-			split[a + 1] = args[a];
-		}
-		
-		//Check if the command is an MMO related help command
-		if(label.equalsIgnoreCase("taming") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillTaming").toLowerCase())){ 
-			float skillvalue = (float)PP.getSkillLevel(SkillType.TAMING);
-
-			String percentage = String.valueOf((skillvalue / 1000) * 100);
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillTaming")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainTaming")})); 
-			if(mcPermissions.getInstance().taming(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.TAMING), PP.getSkillXpLevel(SkillType.TAMING), PP.getXpToLevel(SkillType.TAMING)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming1_0"), mcLocale.getString("m.EffectsTaming1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming2_0"), mcLocale.getString("m.EffectsTaming2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming3_0"), mcLocale.getString("m.EffectsTaming3_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming4_0"), mcLocale.getString("m.EffectsTaming4_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming5_0"), mcLocale.getString("m.EffectsTaming5_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming6_0"), mcLocale.getString("m.EffectsTaming6_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsTaming7_0"), mcLocale.getString("m.EffectsTaming7_1")}));
-			player.sendMessage(mcLocale.getString("m.EffectsTaming7_2", new Object[] {LoadProperties.bonesConsumedByCOTW}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			if(PP.getSkillLevel(SkillType.TAMING) < 100)
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockTaming1")})); 
-			else
-				player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusTaming1_0"), mcLocale.getString("m.AbilBonusTaming1_1")}));  
-			if(PP.getSkillLevel(SkillType.TAMING) < 250)
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockTaming2")})); 
-			else
-				player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusTaming2_0"), mcLocale.getString("m.AbilBonusTaming2_1")}));  
-			if(PP.getSkillLevel(SkillType.TAMING) < 500)
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockTaming3")})); 
-			else
-				player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusTaming3_0"), mcLocale.getString("m.AbilBonusTaming3_1")}));  
-			if(PP.getSkillLevel(SkillType.TAMING) < 750)
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockTaming4")})); 
-			else
-				player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusTaming4_0"), mcLocale.getString("m.AbilBonusTaming4_1")}));  
-			player.sendMessage(mcLocale.getString("m.TamingGoreChance", new Object[] {percentage})); 
-		}
-		else if(label.equalsIgnoreCase("woodcutting") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillWoodCutting").toLowerCase())){ 
-			float skillvalue = (float)PP.getSkillLevel(SkillType.WOODCUTTING);
-			int ticks = 2;
-			int x = PP.getSkillLevel(SkillType.WOODCUTTING);
-			while(x >= 50){
-				x-=50;
-				ticks++;
-			}
-			String percentage = String.valueOf((skillvalue / 1000) * 100);
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillWoodCutting")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainWoodCutting")})); 
-			if(mcPermissions.getInstance().woodcutting(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.WOODCUTTING), PP.getSkillXpLevel(SkillType.WOODCUTTING), PP.getXpToLevel(SkillType.WOODCUTTING)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsWoodCutting1_0"), mcLocale.getString("m.EffectsWoodCutting1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsWoodCutting2_0"), mcLocale.getString("m.EffectsWoodCutting2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsWoodCutting3_0"), mcLocale.getString("m.EffectsWoodCutting3_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			if(PP.getSkillLevel(SkillType.WOODCUTTING) < 100)
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockWoodCutting1")})); 
-			else
-				player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusWoodCutting1_0"), mcLocale.getString("m.AbilBonusWoodCutting1_1")}));  
-			player.sendMessage(mcLocale.getString("m.WoodCuttingDoubleDropChance", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.WoodCuttingTreeFellerLength", new Object[] {ticks})); 
-		}
-		else if(label.equalsIgnoreCase("archery") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillArchery").toLowerCase())){ 
-			float skillvalue = (float)PP.getSkillLevel(SkillType.ARCHERY);
-			String percentage = String.valueOf((skillvalue / 1000) * 100);
-
-			int ignition = 20;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 200)
-				ignition+=20;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 400)
-				ignition+=20;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 600)
-				ignition+=20;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 800)
-				ignition+=20;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 1000)
-				ignition+=20;
-
-			String percentagedaze;
-			if(PP.getSkillLevel(SkillType.ARCHERY) < 1000){
-				percentagedaze = String.valueOf((skillvalue / 2000) * 100);
-			} else {
-				percentagedaze = "50"; 
-			}
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillArchery")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainArchery")})); 
-			if(mcPermissions.getInstance().archery(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.ARCHERY), PP.getSkillXpLevel(SkillType.ARCHERY), PP.getXpToLevel(SkillType.ARCHERY)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery1_0"), mcLocale.getString("m.EffectsArchery1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery2_0"), mcLocale.getString("m.EffectsArchery2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery4_0"), mcLocale.getString("m.EffectsArchery4_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.ArcheryDazeChance", new Object[] {percentagedaze})); 
-			player.sendMessage(mcLocale.getString("m.ArcheryRetrieveChance", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.ArcheryIgnitionLength", new Object[] {(ignition / 20)}));  
-		}
-		else if(label.equalsIgnoreCase("axes") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillAxes"))){ 
-			String percentage;
-			float skillvalue = (float)PP.getSkillLevel(SkillType.AXES);
-			if(PP.getSkillLevel(SkillType.AXES) < 750){
-				percentage = String.valueOf((skillvalue / 1000) * 100);
-			} else {
-				percentage = "75"; 
-			}
-			int ticks = 2;
-			int x = PP.getSkillLevel(SkillType.AXES);
-			while(x >= 50){
-				x-=50;
-				ticks++;
-			}
-
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillAxes")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainAxes")})); 
-			if(mcPermissions.getInstance().axes(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.AXES), PP.getSkillXpLevel(SkillType.AXES), PP.getXpToLevel(SkillType.AXES)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAxes1_0"), mcLocale.getString("m.EffectsAxes1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAxes2_0"), mcLocale.getString("m.EffectsAxes2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAxes3_0"), mcLocale.getString("m.EffectsAxes3_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.AxesCritChance", new Object[] {percentage})); 
-			if(PP.getSkillLevel(SkillType.AXES) < 500){
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockAxes1")})); 
-			} else {
-				player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusAxes1_0"), mcLocale.getString("m.AbilBonusAxes1_1")}));  
-			}
-			player.sendMessage(mcLocale.getString("m.AxesSkullLength", new Object[] {ticks})); 
-		}
-		else if(label.equalsIgnoreCase("swords") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillSwords").toLowerCase())){ 
-			int bleedrank = 2;
-			String percentage, counterattackpercentage;
-			float skillvalue = (float)PP.getSkillLevel(SkillType.SWORDS);
-			if(PP.getSkillLevel(SkillType.SWORDS) < 750){
-				percentage = String.valueOf((skillvalue / 1000) * 100);
-			} else {
-				percentage = "75"; 
-			}
-			if(skillvalue >= 750)
-				bleedrank+=1;
-
-			if(PP.getSkillLevel(SkillType.SWORDS) <= 600){
-				counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
-			} else {
-				counterattackpercentage = "30"; 
-			}
-
-			int ticks = 2;
-			int x = PP.getSkillLevel(SkillType.SWORDS);
-			while(x >= 50){
-				x-=50;
-				ticks++;
-			}
-
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillSwords")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainSwords")})); 
-			if(mcPermissions.getInstance().swords(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.SWORDS), PP.getSkillXpLevel(SkillType.SWORDS), PP.getXpToLevel(SkillType.SWORDS)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords1_0"), mcLocale.getString("m.EffectsSwords1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords2_0"), mcLocale.getString("m.EffectsSwords2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords3_0"), mcLocale.getString("m.EffectsSwords3_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords5_0"), mcLocale.getString("m.EffectsSwords5_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.SwordsCounterAttChance", new Object[] {counterattackpercentage})); 
-			player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] {bleedrank})); 
-			player.sendMessage(mcLocale.getString("m.SwordsTickNote")); 
-			player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.SwordsSSLength", new Object[] {ticks})); 
-
-		}
-		else if(label.equalsIgnoreCase("acrobatics") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillAcrobatics").toLowerCase())){ 
-			String dodgepercentage;
-			float skillvalue = (float)PP.getSkillLevel(SkillType.ACROBATICS);
-			String percentage = String.valueOf((skillvalue / 1000) * 100);
-			String gracepercentage = String.valueOf(((skillvalue / 1000) * 100) * 2);
-			if(PP.getSkillLevel(SkillType.ACROBATICS) <= 800){
-				dodgepercentage = String.valueOf((skillvalue / 4000 * 100));
-			} else {
-				dodgepercentage = "20"; 
-			}
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillAcrobatics")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainAcrobatics")})); 
-			if(mcPermissions.getInstance().acrobatics(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.ACROBATICS), PP.getSkillXpLevel(SkillType.ACROBATICS), PP.getXpToLevel(SkillType.ACROBATICS)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAcrobatics1_0"), mcLocale.getString("m.EffectsAcrobatics1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAcrobatics2_0"), mcLocale.getString("m.EffectsAcrobatics2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsAcrobatics3_0"), mcLocale.getString("m.EffectsAcrobatics3_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.AcrobaticsRollChance", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.AcrobaticsGracefulRollChance", new Object[] {gracepercentage})); 
-			player.sendMessage(mcLocale.getString("m.AcrobaticsDodgeChance", new Object[] {dodgepercentage})); 
-		}
-		else if(label.equalsIgnoreCase("mining") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillMining"))){ 
-			float skillvalue = (float)PP.getSkillLevel(SkillType.MINING);
-			String percentage = String.valueOf((skillvalue / 1000) * 100);
-			int ticks = 2;
-			int x = PP.getSkillLevel(SkillType.MINING);
-			while(x >= 50){
-				x-=50;
-				ticks++;
-			}
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillMining")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainMining")})); 
-			if(mcPermissions.getInstance().mining(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.MINING), PP.getSkillXpLevel(SkillType.MINING), PP.getXpToLevel(SkillType.MINING)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsMining1_0"), mcLocale.getString("m.EffectsMining1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsMining2_0"), mcLocale.getString("m.EffectsMining2_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.MiningDoubleDropChance", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.MiningSuperBreakerLength", new Object[] {ticks})); 
-		}
-		else if(label.equalsIgnoreCase("repair") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillRepair").toLowerCase())){ 
-			float skillvalue = (float)PP.getSkillLevel(SkillType.REPAIR);
-			String percentage = String.valueOf((skillvalue / 1000) * 100);
-			String repairmastery = String.valueOf((skillvalue / 500) * 100);
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillRepair")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainRepair")})); 
-			if(mcPermissions.getInstance().repair(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.REPAIR), PP.getSkillXpLevel(SkillType.REPAIR), PP.getXpToLevel(SkillType.REPAIR)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair1_0"), mcLocale.getString("m.EffectsRepair1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair2_0"), mcLocale.getString("m.EffectsRepair2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair3_0"), mcLocale.getString("m.EffectsRepair3_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair4_0", new Object[]{LoadProperties.repairdiamondlevel}), mcLocale.getString("m.EffectsRepair4_1")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsRepair5_0"), mcLocale.getString("m.EffectsRepair5_1")}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.RepairRepairMastery", new Object[] {repairmastery})); 
-			player.sendMessage(mcLocale.getString("m.RepairSuperRepairChance", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.ArcaneForgingRank", new Object[] {Repair.getArcaneForgingRank(PP)})); 
-			player.sendMessage(mcLocale.getString("m.ArcaneEnchantKeepChance", new Object[] {Repair.getEnchantChance(Repair.getArcaneForgingRank(PP))})); 
-			player.sendMessage(mcLocale.getString("m.ArcaneEnchantDowngradeChance", new Object[] {Repair.getDowngradeChance(Repair.getArcaneForgingRank(PP))})); 
-			player.sendMessage(mcLocale.getString("m.ArcaneForgingMilestones"));
-			player.sendMessage(mcLocale.getString("m.ArcaneForgingMilestones2"));
-
-		}
-		else if(label.equals("fishing")){
-			//float skillvalue = (float)PP.getSkillLevel(SkillType.FISHING);
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillFishing")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainFishing")})); 
-			if(mcPermissions.getInstance().fishing(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.FISHING), PP.getSkillXpLevel(SkillType.FISHING), PP.getXpToLevel(SkillType.FISHING)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsFishing1_0"), mcLocale.getString("m.EffectsFishing1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsFishing2_0"), mcLocale.getString("m.EffectsFishing2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsFishing3_0"), mcLocale.getString("m.EffectsFishing3_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")}));
-			player.sendMessage(mcLocale.getString("m.FishingRank", new Object[] {Fishing.getFishingLootTier(PP)}));
-			player.sendMessage(mcLocale.getString("m.FishingMagicInfo"));
-			if(PP.getSkillLevel(SkillType.FISHING) < 150)
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockFishing1")})); 
-			else
-				player.sendMessage(mcLocale.getString("m.ShakeInfo", new Object[] {Fishing.getFishingLootTier(PP)}));
-		}
-		else if(label.equalsIgnoreCase("unarmed")){ 
-			String percentage, arrowpercentage;
-			float skillvalue = (float)PP.getSkillLevel(SkillType.UNARMED);
-
-			if(PP.getSkillLevel(SkillType.UNARMED) < 1000){
-				percentage = String.valueOf((skillvalue / 4000) * 100);
-			} else {
-				percentage = "25"; 
-			}
-
-			if(PP.getSkillLevel(SkillType.UNARMED) < 1000){
-				arrowpercentage = String.valueOf(((skillvalue / 1000) * 100) / 2);
-			} else {
-				arrowpercentage = "50"; 
-			}
-
-
-			int ticks = 2;
-			int x = PP.getSkillLevel(SkillType.UNARMED);
-			while(x >= 50){
-				x-=50;
-				ticks++;
-			}
-
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillUnarmed")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainUnarmed")})); 
-			if(mcPermissions.getInstance().unarmed(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.UNARMED), PP.getSkillXpLevel(SkillType.UNARMED), PP.getXpToLevel(SkillType.UNARMED)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed1_0"), mcLocale.getString("m.EffectsUnarmed1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed2_0"), mcLocale.getString("m.EffectsUnarmed2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed3_0"), mcLocale.getString("m.EffectsUnarmed3_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed4_0"), mcLocale.getString("m.EffectsUnarmed4_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsUnarmed5_0"), mcLocale.getString("m.EffectsUnarmed5_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.UnarmedArrowDeflectChance", new Object[] {arrowpercentage})); 
-			player.sendMessage(mcLocale.getString("m.UnarmedDisarmChance", new Object[] {percentage})); 
-			if(PP.getSkillLevel(SkillType.UNARMED) < 250){
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockUnarmed1")})); 
-			} else if(PP.getSkillLevel(SkillType.UNARMED) >= 250 && PP.getSkillLevel(SkillType.UNARMED) < 500){
-				player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusUnarmed1_0"), mcLocale.getString("m.AbilBonusUnarmed1_1")}));  
-				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockUnarmed2")})); 
-			} else {
-				player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] {mcLocale.getString("m.AbilBonusUnarmed2_0"), mcLocale.getString("m.AbilBonusUnarmed2_1")}));  
-			}
-			player.sendMessage(mcLocale.getString("m.UnarmedBerserkLength", new Object[] {ticks})); 
-		}
-		else if(label.equalsIgnoreCase("herbalism") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillHerbalism").toLowerCase())){ 
-			int bonus = 0;
-			if(PP.getSkillLevel(SkillType.HERBALISM) >= 200)
-				bonus++;
-			if(PP.getSkillLevel(SkillType.HERBALISM) >= 400)
-				bonus++;
-			if(PP.getSkillLevel(SkillType.HERBALISM) >= 600)
-				bonus++;
-
-			int ticks = 2;
-			int x = PP.getSkillLevel(SkillType.HERBALISM);
-			while(x >= 50){
-				x-=50;
-				ticks++;
-			}
-
-			float skillvalue = (float)PP.getSkillLevel(SkillType.HERBALISM);
-			String percentage = String.valueOf((skillvalue / 1000) * 100);
-			String gpercentage = String.valueOf((skillvalue / 1500) * 100);
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillHerbalism")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainHerbalism")})); 
-			if(mcPermissions.getInstance().herbalism(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism1_0"), mcLocale.getString("m.EffectsHerbalism1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism2_0"), mcLocale.getString("m.EffectsHerbalism2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism3_0"), mcLocale.getString("m.EffectsHerbalism3_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism5_0"), mcLocale.getString("m.EffectsHerbalism5_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.HerbalismGreenTerraLength", new Object[] {ticks})); 
-			player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbChance", new Object[] {gpercentage})); 
-			player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbStage", new Object[] {bonus})); 
-			player.sendMessage(mcLocale.getString("m.HerbalismDoubleDropChance", new Object[] {percentage}));  
-		}
-
-		else if(label.equalsIgnoreCase("excavation") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillExcavation").toLowerCase())) 
-		{
-			int ticks = 2;
-			int x = PP.getSkillLevel(SkillType.EXCAVATION);
-			while(x >= 50){
-				x-=50;
-				ticks++;
-			}
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillExcavation")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainExcavation")})); 
-			if(mcPermissions.getInstance().excavation(player))
-				player.sendMessage(mcLocale.getString("m.LVL", new Object[] {PP.getSkillLevel(SkillType.EXCAVATION), PP.getSkillXpLevel(SkillType.EXCAVATION), PP.getXpToLevel(SkillType.EXCAVATION)}));
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsExcavation1_0"), mcLocale.getString("m.EffectsExcavation1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsExcavation2_0"), mcLocale.getString("m.EffectsExcavation2_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.ExcavationGreenTerraLength", new Object[] {ticks})); 
-		}
-
-		else if(label.equalsIgnoreCase("sorcery") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillSorcery").toLowerCase())) 
-		{
-			/*
-	        player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.SkillExcavation")})); 
-			player.sendMessage(mcLocale.getString("m.XPGain", new Object[] {mcLocale.getString("m.XPGainExcavation")})); 
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsExcavation1_0"), mcLocale.getString("m.EffectsExcavation1_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsExcavation2_0"), mcLocale.getString("m.EffectsExcavation2_1")}));  
-			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
-			player.sendMessage(mcLocale.getString("m.ExcavationGreenTerraLength", new Object[] {ticks})); 
-			 */
-		}
-
-		else if(LoadProperties.mcmmoEnable && label.equalsIgnoreCase(LoadProperties.mcmmo))
-		{ 
-			player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"mcMMO"+ChatColor.RED+"[]-----");
-			String description = mcLocale.getString("mcMMO.Description", new Object[] {LoadProperties.mcc});
-			String[] mcSplit = description.split(",");
-			
-			for(String x : mcSplit)
-			{
-				player.sendMessage(x);
-			}
-			if(LoadProperties.spoutEnabled && player instanceof SpoutPlayer)
-			{
-				SpoutPlayer sPlayer = (SpoutPlayer)player;
-				if(LoadProperties.donateMessage)
-					sPlayer.sendNotification("[mcMMO] Donate!", "Paypal nossr50@gmail.com", Material.CAKE);
-			}
-			else
-			{
-				if(LoadProperties.donateMessage)
-					player.sendMessage(ChatColor.GREEN+"If you like my work you can donate via Paypal: nossr50@gmail.com");
-			}
-		}
-		else if(LoadProperties.mccEnable && label.equalsIgnoreCase(LoadProperties.mcc))
-		{ 
-			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.YELLOW+"mcMMO Commands"+ChatColor.RED+"[]---");   
-			if(mcPermissions.getInstance().party(player)){
-				player.sendMessage(mcLocale.getString("m.mccPartyCommands")); 
-				player.sendMessage(LoadProperties.party+" "+mcLocale.getString("m.mccParty"));   
-				player.sendMessage(LoadProperties.party+" q "+mcLocale.getString("m.mccPartyQ"));
-				if(mcPermissions.getInstance().partyChat(player))
-					player.sendMessage("/p "+mcLocale.getString("m.mccPartyToggle"));  
-				player.sendMessage(LoadProperties.invite+" "+mcLocale.getString("m.mccPartyInvite"));   
-				player.sendMessage(LoadProperties.accept+" "+mcLocale.getString("m.mccPartyAccept"));   
-				if(mcPermissions.getInstance().partyTeleport(player))
-					player.sendMessage(LoadProperties.ptp+" "+mcLocale.getString("m.mccPartyTeleport"));   
-			}
-			player.sendMessage(mcLocale.getString("m.mccOtherCommands")); 
-			player.sendMessage(LoadProperties.stats+ChatColor.RED+" "+mcLocale.getString("m.mccStats"));  
-			player.sendMessage("/mctop <skillname> <page> "+ChatColor.RED+mcLocale.getString("m.mccLeaderboards"));  
-			if(mcPermissions.getInstance().mySpawn(player)){
-				player.sendMessage(LoadProperties.myspawn+" "+ChatColor.RED+mcLocale.getString("m.mccMySpawn"));   
-				player.sendMessage(LoadProperties.clearmyspawn+" "+ChatColor.RED+mcLocale.getString("m.mccClearMySpawn"));   
-			}
-			if(mcPermissions.getInstance().mcAbility(player))
-				player.sendMessage(LoadProperties.mcability+ChatColor.RED+" "+mcLocale.getString("m.mccToggleAbility"));  
-			if(mcPermissions.getInstance().adminChat(player)){
-				player.sendMessage("/a "+ChatColor.RED+mcLocale.getString("m.mccAdminToggle"));  
-			}
-			if(mcPermissions.getInstance().whois(player))
-				player.sendMessage(LoadProperties.whois+" "+mcLocale.getString("m.mccWhois"));   
-			if(mcPermissions.getInstance().mmoedit(player)){
-				//player.sendMessage(LoadProperties.mmoedit+" [skill] [newvalue] "+ChatColor.RED+"Modify the designated skill value");
-				player.sendMessage(LoadProperties.mmoedit+mcLocale.getString("m.mccMmoedit"));   
-			}
-			if(mcPermissions.getInstance().mcgod(player))
-				player.sendMessage(LoadProperties.mcgod+ChatColor.RED+" "+mcLocale.getString("m.mccMcGod"));  
-			player.sendMessage(mcLocale.getString("m.mccSkillInfo"));  
-			player.sendMessage(LoadProperties.mcmmo+" "+mcLocale.getString("m.mccModDescription"));   
-		}
-		else if(LoadProperties.mcabilityEnable && mcPermissions.permissionsEnabled && label.equalsIgnoreCase(LoadProperties.mcability)){ 
-			if(PP.getAbilityUse()){
-				player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOff")); 
-				PP.toggleAbilityUse();
-			} else {
-				player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOn")); 
-				PP.toggleAbilityUse();
-			}
-		}
-		else if (LoadProperties.xprateEnable && label.equalsIgnoreCase(LoadProperties.xprate))
-		{
-			if(sender instanceof Player)
-			{
-				if(!mcPermissions.getInstance().admin(player))
-				{
-					player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-					return true;
-				}
-				if(split.length <= 1)
-				{
-					player.sendMessage(mcLocale.getString("Commands.xprate.proper", new Object[] {LoadProperties.xprate}));
-					player.sendMessage(mcLocale.getString("Commands.xprate.proper2", new Object[] {LoadProperties.xprate}));
-				}
-				if(split.length == 2 && split[1].equalsIgnoreCase("reset"))
-				{
-					if(xpevent)
-					{
-						for(Player x : Bukkit.getServer().getOnlinePlayers())
-							x.sendMessage(mcLocale.getString("Commands.xprate.over"));
-						xpevent = !xpevent;
-						LoadProperties.xpGainMultiplier = oldrate;
-					} else
-					{
-						LoadProperties.xpGainMultiplier = oldrate;
-					}
-				}
-				if(split.length >= 2 && m.isInt(split[1]))
-				{
-					oldrate = LoadProperties.xpGainMultiplier;
-					
-					if(split.length >= 3 && (split[2].equalsIgnoreCase("true") || split[2].equalsIgnoreCase("false")))
-					{
-						if(split[2].equalsIgnoreCase("true"))
-							xpevent = true;
-						else
-							xpevent = false;
-					} else
-					{
-						player.sendMessage(mcLocale.getString("Commands.xprate.proper3"));
-						return true;
-					}
-					LoadProperties.xpGainMultiplier = m.getInt(split[1]);
-					if(xpevent = true)
-						for(Player x : Bukkit.getServer().getOnlinePlayers())
-						{
-							x.sendMessage(mcLocale.getString("Commands.xprate.started"));
-							x.sendMessage(mcLocale.getString("Commands.xprate.started2", new Object[] {LoadProperties.xpGainMultiplier}));
-						}
-				}
-			} else
-			{
-				if(split.length <= 1)
-				{
-					System.out.println(mcLocale.getString("Commands.xprate.proper", new Object[] {LoadProperties.xprate}));
-					System.out.println(mcLocale.getString("Commands.xprate.proper2", new Object[] {LoadProperties.xprate}));
-				}
-				
-				if(split.length == 2 && split[1].equalsIgnoreCase("reset"))
-				{
-					if(xpevent)
-					{
-						for(Player x : Bukkit.getServer().getOnlinePlayers())
-							x.sendMessage(mcLocale.getString("Commands.xprate.over"));
-						xpevent = !xpevent;
-						LoadProperties.xpGainMultiplier = oldrate;
-					} else
-					{
-						LoadProperties.xpGainMultiplier = oldrate;
-					}
-				}
-				
-				if(split.length >= 2 && m.isInt(split[1]))
-				{
-					oldrate = LoadProperties.xpGainMultiplier;
-					
-					if(split.length >= 3 && (split[2].equalsIgnoreCase("true") || split[2].equalsIgnoreCase("false")))
-					{
-						if(split[2].equalsIgnoreCase("true"))
-							xpevent = true;
-						else
-							xpevent = false;
-					} else
-					{
-						System.out.println(mcLocale.getString("Commands.xprate.proper3"));
-						return true;
-					}
-					LoadProperties.xpGainMultiplier = m.getInt(split[1]);
-					if(xpevent = true)
-						for(Player x : Bukkit.getServer().getOnlinePlayers())
-						{
-							x.sendMessage(ChatColor.GOLD+"XP EVENT FOR mcMMO HAS STARTED!");
-							x.sendMessage(ChatColor.GOLD+"mcMMO XP RATE IS NOW "+LoadProperties.xpGainMultiplier+"x!!");
-						}
-				}
-			}
-		}
-		/*
-		 * FFS -> MySQL
-		 */
-		else if(label.equalsIgnoreCase("mmoupdate"))
-		{
-			if(!mcPermissions.getInstance().admin(player))
-			{
-				player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-				return true;
-			}
-			player.sendMessage(ChatColor.GRAY+"Starting conversion..."); 
-			Users.clearUsers();
-			m.convertToMySQL();
-			for(Player x : Bukkit.getServer().getOnlinePlayers())
-			{
-				Users.addUser(x);
-			}
-			player.sendMessage(ChatColor.GREEN+"Conversion finished!"); 
-		}
-
-		/*
-		 * LEADER BOARD COMMAND
-		 */
-		else if(LoadProperties.mctopEnable && label.equalsIgnoreCase(LoadProperties.mctop)){ 
-
-			if(LoadProperties.useMySQL == false){
-				/*
-				 * POWER LEVEL INFO RETRIEVAL
-				 */
-				if(split.length == 1){
-					int p = 1;
-					String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p); 
-					player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
-					int n = 1 * p; //Position
-					for(String x : info){
-						if(x != null){
-							String digit = String.valueOf(n);
-							if(n < 10)
-								digit ="0"+String.valueOf(n); 
-							String[] splitx = x.split(":"); 
-							//Format: 1. Playername - skill value
-							player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]);  
-							n++;
-						}
-					}
-				}
-				if(split.length >= 2 && m.isInt(split[1])){
-					int p = 1;
-					//Grab page value if specified
-					if(split.length >= 2){
-						if(m.isInt(split[1])){
-							p = Integer.valueOf(split[1]);
-						}
-					}
-					int pt = p;
-					if(p > 1){
-						pt -= 1;
-						pt += (pt * 10);
-						pt = 10;
-					}
-					String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p); 
-					player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard")); 
-					int n = 1 * pt; //Position
-					for(String x : info){
-						if(x != null){
-							String digit = String.valueOf(n);
-							if(n < 10)
-								digit ="0"+String.valueOf(n); 
-							String[] splitx = x.split(":"); 
-							//Format: 1. Playername - skill value
-							player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]);  
-							n++;
-						}
-					}
-				}
-				/*
-				 * SKILL SPECIFIED INFO RETRIEVAL
-				 */
-				if(split.length >= 2 && Skills.isSkill(split[1]))
-				{
-					int p = 1;
-					//Grab page value if specified
-					if(split.length >= 3)
-					{
-						if(m.isInt(split[2])){
-							p = Integer.valueOf(split[2]);
-						}
-					}
-					int pt = p;
-					if(p > 1){
-						pt -= 1;
-						pt += (pt * 10);
-						pt = 10;
-					}
-					String firstLetter = split[1].substring(0,1);  // Get first letter
-					String remainder   = split[1].substring(1);    // Get remainder of word.
-					String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
-
-					String[] info = Leaderboard.retrieveInfo(split[1].toUpperCase(), p);
-					player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] {capitalized}));  
-					int n = 1 * pt; //Position
-					for(String x : info)
-					{
-						if(x != null)
-						{
-							String digit = String.valueOf(n);
-							if(n < 10)
-								digit ="0"+String.valueOf(n); 
-							String[] splitx = x.split(":"); 
-							//Format: 1. Playername - skill value
-							player.sendMessage(digit+". "+ChatColor.GREEN+splitx[1]+" - "+ChatColor.WHITE+splitx[0]);  
-							n++;
-						}
-					}
-				}
-			} else {
-				/*
-				 * MYSQL LEADERBOARDS
-				 */
-				String powerlevel = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing"; 
-				if(split.length >= 2 && Skills.isSkill(split[1])){
-					/*
-					 * Create a nice consistent capitalized leaderboard name
-					 */
-					String lowercase = split[1].toLowerCase(); //For the query
-					String firstLetter = split[1].substring(0,1); //Get first letter
-					String remainder   = split[1].substring(1); //Get remainder of word.
-					String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
-
-					player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] {capitalized}));  
-					if(split.length >= 3 && m.isInt(split[2])){
-						int n = 1; //For the page number
-						int n2 = Integer.valueOf(split[2]);
-						if(n2 > 1){
-							//Figure out the 'page' here
-							n = 10;
-							n = n * (n2-1);
-						}
-						//If a page number is specified
-						HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT "+lowercase+", user_id FROM "  
-								+LoadProperties.MySQLtablePrefix+"skills WHERE "+lowercase+" > 0 ORDER BY `"+LoadProperties.MySQLtablePrefix+"skills`.`"+lowercase+"` DESC ");    
-
-						for(int i=n;i<=n+10;i++){
-							if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)   
-								break;
-							HashMap<Integer, ArrayList<String>> username =  mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");   
-							player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0));  
-						}
-						return true;
-					}
-					//If no page number is specified
-					HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT "+lowercase+", user_id FROM "  
-							+LoadProperties.MySQLtablePrefix+"skills WHERE "+lowercase+" > 0 ORDER BY `"+LoadProperties.MySQLtablePrefix+"skills`.`"+lowercase+"` DESC ");    
-					for(int i=1;i<=10;i++){ //i<=userslist.size()
-						if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)   
-							break;
-						HashMap<Integer, ArrayList<String>> username =  mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");   
-						player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0));  
-					}
-					return true;
-				}
-				if(split.length >= 1){
-					player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard")); 
-					if(split.length >= 2 && m.isInt(split[1])){
-						int n = 1; //For the page number
-						int n2 = Integer.valueOf(split[1]);
-						if(n2 > 1){
-							//Figure out the 'page' here
-							n = 10;
-							n = n * (n2-1);
-						}
-						//If a page number is specified
-						HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT "+powerlevel+", user_id FROM "  
-								+LoadProperties.MySQLtablePrefix+"skills WHERE "+powerlevel+" > 0 ORDER BY "+powerlevel+" DESC ");  
-						for(int i=n;i<=n+10;i++){
-							if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)   
-								break;
-							HashMap<Integer, ArrayList<String>> username =  mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");   
-							player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0));  
-						}
-						return true;
-					}
-					HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT "+powerlevel+", user_id FROM " 
-							+LoadProperties.MySQLtablePrefix+"skills WHERE "+powerlevel+" > 0 ORDER BY "+powerlevel+" DESC ");  
-					for(int i=1;i<=10;i++){
-						if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)   
-							break;
-						HashMap<Integer, ArrayList<String>> username =  mcMMO.database.Read("SELECT user FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");   
-						player.sendMessage(String.valueOf(i)+". "+ChatColor.GREEN+userslist.get(i).get(0)+" - "+ChatColor.WHITE+username.get(1).get(0));  
-						//System.out.println(username.get(1).get(0));
-						//System.out.println("Mining : " + userslist.get(i).get(0) + ", User id : " + userslist.get(i).get(1));
-					}
-				}
-			}
-		}
-
-		else if(LoadProperties.mcrefreshEnable && label.equalsIgnoreCase(LoadProperties.mcrefresh)){ 
-
-			if(!mcPermissions.getInstance().mcrefresh(player)){
-				player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-				return true;
-			}
-			if(split.length >= 2 && isPlayer(split[1])){
-				player.sendMessage("You have refreshed "+split[1]+"'s cooldowns!");  
-				player = getPlayer(split[1]);
-			}
-			/*
-			 * PREP MODES
-			 */
-			PP = Users.getProfile(player);
-			PP.setRecentlyHurt((long) 0);
-			PP.setHoePreparationMode(false);
-			PP.setAxePreparationMode(false);
-			PP.setFistsPreparationMode(false);
-			PP.setSwordsPreparationMode(false);
-			PP.setPickaxePreparationMode(false);
-			/*
-			 * GREEN TERRA
-			 */
-			PP.setGreenTerraMode(false);
-			PP.setGreenTerraDeactivatedTimeStamp((long) 0);
-
-			/*
-			 * GIGA DRILL BREAKER
-			 */
-			PP.setGigaDrillBreakerMode(false);
-			PP.setGigaDrillBreakerDeactivatedTimeStamp((long) 0);
-			/*
-			 * SERRATED STRIKE
-			 */
-			PP.setSerratedStrikesMode(false);
-			PP.setSerratedStrikesDeactivatedTimeStamp((long) 0);
-			/*
-			 * SUPER BREAKER
-			 */
-			PP.setSuperBreakerMode(false);
-			PP.setSuperBreakerDeactivatedTimeStamp((long) 0);
-			/*
-			 * TREE FELLER
-			 */
-			PP.setTreeFellerMode(false);
-			PP.setTreeFellerDeactivatedTimeStamp((long) 0);
-			/*
-			 * BERSERK
-			 */
-			PP.setBerserkMode(false);
-			PP.setBerserkDeactivatedTimeStamp((long)0);
-
-			player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesRefreshed")); 
-		}
-		/*
-		 * GODMODE COMMAND
-		 */
-		else if(LoadProperties.mcgodEnable && label.equalsIgnoreCase(LoadProperties.mcgod))
-		{ 
-			if(mcPermissions.permissionsEnabled)
-			{
-				if(!mcPermissions.getInstance().mcgod(player))
-				{
-					player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-					return true;
-				}
-				if(PP.getGodMode())
-				{
-					player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled")); 
-					PP.toggleGodMode();
-				} else 
-				{
-					player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled")); 
-					PP.toggleGodMode();
-				}
-			}
-		}
-		else if(LoadProperties.clearmyspawnEnable && LoadProperties.enableMySpawn && label.equalsIgnoreCase(LoadProperties.clearmyspawn) && mcPermissions.getInstance().mySpawn(player))
-		{ 
-			double x = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getX();
-			double y = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getY();
-			double z = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getZ();
-			String worldname = Bukkit.getServer().getWorlds().get(0).getName();
-			PP.setMySpawn(x, y, z, worldname);
-			player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnCleared")); 
-		}
-		else if(LoadProperties.mmoeditEnable && mcPermissions.permissionsEnabled && label.equalsIgnoreCase(""+LoadProperties.mmoedit))
-		{ 
-			if(sender instanceof Player)
-			{
-				if(!mcPermissions.getInstance().mmoedit(player))
-				{
-					player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-					return true;
-				}
-				if(split.length < 3)
-				{
-					player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.mmoedit+" playername skillname newvalue");  
-					return true;
-				}
-				if(split.length == 4)
-				{
-					if(isPlayer(split[1]) && m.isInt(split[3]) && Skills.isSkill(split[2]))
-					{
-						int newvalue = Integer.valueOf(split[3]);
-						Users.getProfile(getPlayer(split[1])).modifyskill(Skills.getSkillType(split[2]), newvalue);
-						player.sendMessage(ChatColor.RED+split[2]+" has been modified."); 
-					}
-				}
-				else if(split.length == 3)
-				{
-					if(m.isInt(split[2]) && Skills.isSkill(split[1]))
-					{
-						int newvalue = Integer.valueOf(split[2]);
-						PP.modifyskill(Skills.getSkillType(split[1]), newvalue);
-						player.sendMessage(ChatColor.RED+split[1]+" has been modified."); 
-					}
-				} else 
-				{
-					player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.mmoedit+" playername skillname newvalue");  
-				}
-			} else {
-				//If they do it wrong, inform them
-				if(split.length < 3)
-				{
-					System.out.println("Usage is /"+LoadProperties.mmoedit+" playername skillname newvalue");  
-					return true;
-				}
-				else if(split.length == 4)
-				{
-					if(isPlayer(split[1]) && m.isInt(split[3]) && Skills.isSkill(split[2]))
-					{
-						int newvalue = Integer.valueOf(split[3]);
-						Users.getProfile(getPlayer(split[1])).modifyskill(Skills.getSkillType(split[2]), newvalue);
-						System.out.println(split[2]+" has been modified for "+getPlayer(split[1]).getName()+"."); 
-					}
-				} 
-				else 
-				{
-					System.out.println("Usage is /"+LoadProperties.mmoedit+" playername skillname newvalue");  
-				}
-			}
-		}
-		/*
-		 * ADD EXPERIENCE COMMAND
-		 */
-		else if(LoadProperties.addxpEnable && mcPermissions.permissionsEnabled && label.equalsIgnoreCase(LoadProperties.addxp))
-		{ 
-			if(sender instanceof Player)
-			{
-				if(!mcPermissions.getInstance().mmoedit(player)){
-					player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-					return true;
-				}
-				if(split.length < 3){
-					player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.addxp+" playername skillname xp");  
-					return true;
-				}
-				if(split.length == 4){
-					if(isPlayer(split[1]) && m.isInt(split[3]) && Skills.isSkill(split[2]))
-					{
-						int newvalue = Integer.valueOf(split[3]);
-						Users.getProfile(getPlayer(split[1])).addXP(Skills.getSkillType(split[2]), newvalue, getPlayer(split[1]));
-						getPlayer(split[1]).sendMessage(ChatColor.GREEN+"Experience granted!"); 
-						player.sendMessage(ChatColor.RED+split[2]+" has been modified."); 
-						Skills.XpCheckAll(getPlayer(split[1]));
-					}
-				}
-				else if(split.length == 3 && m.isInt(split[2]) && Skills.isSkill(split[1]))
-				{
-					int newvalue = Integer.valueOf(split[2]);
-					Users.getProfile(player).addXP(Skills.getSkillType(split[1]), newvalue, player);
-					player.sendMessage(ChatColor.RED+split[1]+" has been modified."); 
-				} else {
-					player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.addxp+" playername skillname xp");  
-				}
-			} else {
-				if(split.length < 3)
-				{
-					System.out.println("Usage is /"+LoadProperties.addxp+" playername skillname xp");  
-					return true;
-				} else if(split.length == 4)
-				{
-					if(isPlayer(split[1]) && m.isInt(split[3]) && Skills.isSkill(split[2]))
-					{
-						int newvalue = Integer.valueOf(split[3]);
-						Users.getProfile(getPlayer(split[1])).addXP(Skills.getSkillType(split[2]), newvalue, getPlayer(split[1]));
-						getPlayer(split[1]).sendMessage(ChatColor.GREEN+"Experience granted!"); 
-						System.out.println(split[2]+" has been modified for "+getPlayer(split[1]).getName()+".");
-						Skills.XpCheckAll(getPlayer(split[1]));
-					}
-				} else {
-					System.out.println("Usage is /"+LoadProperties.addxp+" playername skillname xp");  
-				}
-			}
-		}
-		else if(LoadProperties.ptpEnable && label.equalsIgnoreCase(LoadProperties.ptp) && PP.inParty())
-		{
-			if(!mcPermissions.getInstance().partyTeleport(player))
-			{
-				player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-				return true;
-			}
-			if(split.length < 2)
-			{
-				player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.ptp+" <playername>");  
-				return true;
-			}
-			if(!isPlayer(split[1]))
-			{
-				player.sendMessage("That is not a valid player"); 
-			}
-			if(isPlayer(split[1]))
-			{
-				Player target = getPlayer(split[1]);
-				PlayerProfile PPt = Users.getProfile(target);
-				if(PP.getParty().equals(PPt.getParty()))
-				{
-					player.teleport(target);
-					player.sendMessage(ChatColor.GREEN+"You have teleported to "+target.getName()); 
-					target.sendMessage(ChatColor.GREEN+player.getName() + " has teleported to you."); 
-				}
-			}
-		}
-		/*
-		 * WHOIS COMMAND
-		 */
-		else if(LoadProperties.whoisEnable && label.equalsIgnoreCase(LoadProperties.whois) && mcPermissions.getInstance().whois(player)){ 
-			if(split.length < 2){
-				player.sendMessage(ChatColor.RED + "Proper usage is /"+LoadProperties.whois+" <playername>");  
-				return true;
-			}
-			//if split[1] is a player
-			if(isPlayer(split[1]))
-			{
-				Player target = getPlayer(split[1]);
-				PlayerProfile PPt = Users.getProfile(target);
-
-				player.sendMessage(ChatColor.GREEN + "~~WHOIS RESULTS~~"); 
-				player.sendMessage(target.getName());
-				if(PPt.inParty())
-					player.sendMessage("Party: "+PPt.getParty()); 
-				player.sendMessage("Health: "+target.getHealth()+ChatColor.GRAY+" (20 is full health)");  
-				player.sendMessage("OP: " + target.isOp()); 
-				player.sendMessage(ChatColor.GREEN+"mcMMO Stats for "+ChatColor.YELLOW+target.getName()); 
-
-				player.sendMessage(ChatColor.GOLD+"-=GATHERING SKILLS=-");
-				if(mcPermissions.getInstance().excavation(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PPt.getSkillLevel(SkillType.EXCAVATION), PPt.getSkillXpLevel(SkillType.EXCAVATION), PPt.getXpToLevel(SkillType.EXCAVATION)));
-				if(mcPermissions.getInstance().fishing(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.FishingSkill"), PPt.getSkillLevel(SkillType.FISHING), PPt.getSkillXpLevel(SkillType.FISHING), PPt.getXpToLevel(SkillType.FISHING)));
-				if(mcPermissions.getInstance().herbalism(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PPt.getSkillLevel(SkillType.HERBALISM), PPt.getSkillXpLevel(SkillType.HERBALISM), PPt.getXpToLevel(SkillType.HERBALISM)));
-				if(mcPermissions.getInstance().mining(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PPt.getSkillLevel(SkillType.MINING), PPt.getSkillXpLevel(SkillType.MINING), PPt.getXpToLevel(SkillType.MINING)));
-				if(mcPermissions.getInstance().woodcutting(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PPt.getSkillLevel(SkillType.WOODCUTTING), PPt.getSkillXpLevel(SkillType.WOODCUTTING), PPt.getXpToLevel(SkillType.WOODCUTTING)));
-
-				player.sendMessage(ChatColor.GOLD+"-=COMBAT SKILLS=-");
-				if(mcPermissions.getInstance().axes(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PPt.getSkillLevel(SkillType.AXES), PPt.getSkillXpLevel(SkillType.AXES), PPt.getXpToLevel(SkillType.AXES)));
-				if(mcPermissions.getInstance().archery(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PPt.getSkillLevel(SkillType.ARCHERY), PPt.getSkillXpLevel(SkillType.ARCHERY), PPt.getXpToLevel(SkillType.ARCHERY)));
-				//if(mcPermissions.getInstance().sorcery(target))
-				//player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PPt.getSkill("sorcery"), PPt.getSkill("sorceryXP"), PPt.getXpToLevel("excavation")));
-				if(mcPermissions.getInstance().swords(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PPt.getSkillLevel(SkillType.SWORDS), PPt.getSkillXpLevel(SkillType.SWORDS), PPt.getXpToLevel(SkillType.SWORDS)));
-				if(mcPermissions.getInstance().taming(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PPt.getSkillLevel(SkillType.TAMING), PPt.getSkillXpLevel(SkillType.TAMING), PPt.getXpToLevel(SkillType.TAMING)));
-				if(mcPermissions.getInstance().unarmed(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PPt.getSkillLevel(SkillType.UNARMED), PPt.getSkillXpLevel(SkillType.UNARMED), PPt.getXpToLevel(SkillType.UNARMED)));
-
-				player.sendMessage(ChatColor.GOLD+"-=MISC SKILLS=-");
-				if(mcPermissions.getInstance().acrobatics(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PPt.getSkillLevel(SkillType.ACROBATICS), PPt.getSkillXpLevel(SkillType.ACROBATICS), PPt.getXpToLevel(SkillType.ACROBATICS)));
-				//if(mcPermissions.getInstance().alchemy(target))
-					//player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AlchemySkill"), PPt.getSkillLevel(SkillType.ALCHEMY), PPt.getSkillXpLevel(SkillType.ALCHEMY), PPt.getXpToLevel(SkillType.ALCHEMY)));
-				//if(mcPermissions.getInstance().enchanting(target))
-					//player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.EnchantingSkill"), PPt.getSkillLevel(SkillType.ENCHANTING), PPt.getSkillXpLevel(SkillType.ENCHANTING), PPt.getXpToLevel(SkillType.ENCHANTING)));
-				if(mcPermissions.getInstance().repair(target))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PPt.getSkillLevel(SkillType.REPAIR), PPt.getSkillXpLevel(SkillType.REPAIR), PPt.getXpToLevel(SkillType.REPAIR)));	
-
-				player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") +ChatColor.GREEN+(m.getPowerLevel(target))); 
-			}
-		}
-		/*
-		 * STATS COMMAND
-		 */
-		else if(LoadProperties.statsEnable && label.equalsIgnoreCase(LoadProperties.stats))
-		{ 
-
-			player.sendMessage(mcLocale.getString("mcPlayerListener.YourStats"));
-
-			if(mcPermissions.getEnabled())
-				player.sendMessage(mcLocale.getString("mcPlayerListener.NoSkillNote")); 
-
-			ChatColor header = ChatColor.GOLD;
-
-			if(Skills.hasGatheringSkills(player)){
-				player.sendMessage(header+"-=GATHERING SKILLS=-");
-				if(mcPermissions.getInstance().excavation(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PP.getSkillLevel(SkillType.EXCAVATION), PP.getSkillXpLevel(SkillType.EXCAVATION), PP.getXpToLevel(SkillType.EXCAVATION)));
-				if(mcPermissions.getInstance().fishing(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.FishingSkill"), PP.getSkillLevel(SkillType.FISHING), PP.getSkillXpLevel(SkillType.FISHING), PP.getXpToLevel(SkillType.FISHING)));
-				if(mcPermissions.getInstance().herbalism(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM)));
-				if(mcPermissions.getInstance().mining(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PP.getSkillLevel(SkillType.MINING), PP.getSkillXpLevel(SkillType.MINING), PP.getXpToLevel(SkillType.MINING)));
-				if(mcPermissions.getInstance().woodcutting(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PP.getSkillLevel(SkillType.WOODCUTTING), PP.getSkillXpLevel(SkillType.WOODCUTTING), PP.getXpToLevel(SkillType.WOODCUTTING)));
-			}
-			if(Skills.hasCombatSkills(player)){
-				player.sendMessage(header+"-=COMBAT SKILLS=-");
-				if(mcPermissions.getInstance().axes(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PP.getSkillLevel(SkillType.AXES), PP.getSkillXpLevel(SkillType.AXES), PP.getXpToLevel(SkillType.AXES)));
-				if(mcPermissions.getInstance().archery(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PP.getSkillLevel(SkillType.ARCHERY), PP.getSkillXpLevel(SkillType.ARCHERY), PP.getXpToLevel(SkillType.ARCHERY)));
-				//if(mcPermissions.getInstance().sorcery(player))
-				//player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PP.getSkill("sorcery"), PP.getSkill("sorceryXP"), PP.getXpToLevel("excavation")));
-				if(mcPermissions.getInstance().swords(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PP.getSkillLevel(SkillType.SWORDS), PP.getSkillXpLevel(SkillType.SWORDS), PP.getXpToLevel(SkillType.SWORDS)));
-				if(mcPermissions.getInstance().taming(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PP.getSkillLevel(SkillType.TAMING), PP.getSkillXpLevel(SkillType.TAMING), PP.getXpToLevel(SkillType.TAMING)));
-				if(mcPermissions.getInstance().unarmed(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PP.getSkillLevel(SkillType.UNARMED), PP.getSkillXpLevel(SkillType.UNARMED), PP.getXpToLevel(SkillType.UNARMED)));
-			}
-
-			if(Skills.hasMiscSkills(player)){
-				player.sendMessage(header+"-=MISC SKILLS=-");
-				if(mcPermissions.getInstance().acrobatics(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PP.getSkillLevel(SkillType.ACROBATICS), PP.getSkillXpLevel(SkillType.ACROBATICS), PP.getXpToLevel(SkillType.ACROBATICS)));
-				//if(mcPermissions.getInstance().alchemy(player))
-					//player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AlchemySkill"), PP.getSkillLevel(SkillType.ALCHEMY), PP.getSkillXpLevel(SkillType.ALCHEMY), PP.getXpToLevel(SkillType.ALCHEMY)));
-				//if(mcPermissions.getInstance().enchanting(player))
-					//player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.EnchantingSkill"), PP.getSkillLevel(SkillType.ENCHANTING), PP.getSkillXpLevel(SkillType.ENCHANTING), PP.getXpToLevel(SkillType.ENCHANTING)));				
-				if(mcPermissions.getInstance().repair(player))
-					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PP.getSkillLevel(SkillType.REPAIR), PP.getSkillXpLevel(SkillType.REPAIR), PP.getXpToLevel(SkillType.REPAIR)));	
-			}
-			player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel")+ChatColor.GREEN+(m.getPowerLevel(player))); 
-		}
-		//Invite Command
-		else if(LoadProperties.inviteEnable && label.equalsIgnoreCase(LoadProperties.invite) && mcPermissions.getInstance().party(player)){ 
-
-			Party Pinstance = Party.getInstance();
-			
-			if(!PP.inParty())
-			{
-				player.sendMessage(mcLocale.getString("mcPlayerListener.NotInParty")); 
-				return true;
-			}
-			if(split.length < 2)
-			{
-				player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.invite+" <playername>");  
-				return true;
-			}
-			if(PP.inParty() && split.length >= 2 && isPlayer(split[1]))
-			{
-				if(Pinstance.canInvite(player, PP)) {
-					Player target = getPlayer(split[1]);
-					PlayerProfile PPt = Users.getProfile(target);
-					PPt.modifyInvite(PP.getParty());
-	
-	
-					player.sendMessage(mcLocale.getString("mcPlayerListener.InviteSuccess")); 
-					//target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+PPt.getInvite()+" from "+player.getName());   
-					target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite1", new Object[] {PPt.getInvite(), player.getName()}));
-					//target.sendMessage(ChatColor.YELLOW+"Type "+ChatColor.GREEN+LoadProperties.accept+ChatColor.YELLOW+" to accept the invite");   
-					target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite2", new Object[] {LoadProperties.accept}));
-				} else {
-					player.sendMessage(mcLocale.getString("Party.Locked"));
-					return true;
-				}
-			}
-		}
-		//Accept invite
-		else if(LoadProperties.acceptEnable && label.equalsIgnoreCase(LoadProperties.accept) && mcPermissions.getInstance().party(player))
-		{ 
-			if(PP.hasPartyInvite())
-			{
-				Party Pinstance = Party.getInstance();
-				
-				if(PP.inParty()) 
-				{
-					Pinstance.removeFromParty(player, PP);
-				}
-				PP.acceptInvite();
-				Pinstance.addToParty(player, PP, PP.getParty(), true);
-				
-			} else 
-			{
-				player.sendMessage(mcLocale.getString("mcPlayerListener.NoInvites")); 
-			}
-		}
-		//Party command
-		else if(LoadProperties.partyEnable && label.equalsIgnoreCase(LoadProperties.party))
-		{ 
-			if(!mcPermissions.getInstance().party(player))
-			{
-				player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-				return true;
-			}
-			
-			Party Pinstance = Party.getInstance();
-			
-			if(PP.inParty() && (!Pinstance.isParty(PP.getParty()) || !Pinstance.isInParty(player, PP))) 
-			{
-				Pinstance.addToParty(player, PP, PP.getParty(), false);
-			}
-			
-			if(args.length == 0 && !PP.inParty())
-			{
-				player.sendMessage(mcLocale.getString("Party.Help1", new Object[] {LoadProperties.party}));
-				player.sendMessage(mcLocale.getString("Party.Help2", new Object[] {LoadProperties.party}));
-				player.sendMessage(mcLocale.getString("Party.Help3", new Object[] {LoadProperties.party}));
-				return true;
-			} else if(args.length == 0 && PP.inParty())
-			{
-				String tempList = ""; 
-				int x = 0;
-				for(Player p : Bukkit.getServer().getOnlinePlayers())
-				{
-					if(PP.getParty().equals(Users.getProfile(p).getParty()))
-					{
-						if(p != null && x+1 >= Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers()))
-						{
-							if(Pinstance.isPartyLeader(p.getName(), PP.getParty()))
-							{
-								tempList+=ChatColor.GOLD+p.getName();
-								x++;
-							}
-							else
-							{
-								tempList+= ChatColor.WHITE+p.getName();
-								x++;
-							}
-						}
-						if(p != null && x < Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers()))
-						{
-							if(Pinstance.isPartyLeader(p.getName(), PP.getParty()))
-							{
-								tempList+=ChatColor.GOLD+p.getName()+", ";
-								x++;
-							}
-							else
-							{
-								tempList+= ChatColor.WHITE+p.getName()+", ";
-								x++;
-							}
-						}
-					}
-				}
-				player.sendMessage(mcLocale.getString("mcPlayerListener.YouAreInParty", new Object[] {PP.getParty()}));
-				player.sendMessage(mcLocale.getString("mcPlayerListener.PartyMembers")+" ("+tempList+ChatColor.GREEN+")");
-				return true;
-			} else if(args.length == 1)
-			{
-				if(args[0].equals("q") && PP.inParty()) 
-				{
-					Pinstance.removeFromParty(player, PP);
-
-					player.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty")); 
-					return true;
-				} else if (args[0].equalsIgnoreCase("?")) {
-					player.sendMessage(mcLocale.getString("Party.Help4", new Object[] {LoadProperties.party}));
-					player.sendMessage(mcLocale.getString("Party.Help2", new Object[] {LoadProperties.party}));
-					player.sendMessage(mcLocale.getString("Party.Help5", new Object[] {LoadProperties.party}));
-					player.sendMessage(mcLocale.getString("Party.Help6", new Object[] {LoadProperties.party}));
-					player.sendMessage(mcLocale.getString("Party.Help7", new Object[] {LoadProperties.party}));
-					player.sendMessage(mcLocale.getString("Party.Help8", new Object[] {LoadProperties.party}));
-					player.sendMessage(mcLocale.getString("Party.Help9", new Object[] {LoadProperties.party}));
-				} else if (args[0].equalsIgnoreCase("lock")) 
-				{
-					if(PP.inParty()) 
-					{
-						if(Pinstance.isPartyLeader(player.getName(), PP.getParty())) 
-						{
-							Pinstance.lockParty(PP.getParty());
-							player.sendMessage(mcLocale.getString("Party.Locked"));
-						} else 
-						{
-							player.sendMessage(mcLocale.getString("Party.NotOwner"));
-						}
-					} else 
-					{
-						player.sendMessage(mcLocale.getString("Party.InvalidName"));
-					}
-				} else if (args[0].equalsIgnoreCase("unlock")) 
-				{
-					if(PP.inParty()) 
-					{
-						if(Pinstance.isPartyLeader(player.getName(), PP.getParty())) 
-						{
-							Pinstance.unlockParty(PP.getParty());
-							player.sendMessage(mcLocale.getString("Party.Unlocked"));
-						} else 
-						{
-							player.sendMessage(mcLocale.getString("Party.NotOwner"));
-						}
-					} else 
-					{
-						player.sendMessage(mcLocale.getString("Party.InvalidName"));
-					}
-				//Party debugging command.
-				//} else if (args[0].equalsIgnoreCase("dump")) {
-				//	Pinstance.dump(player);
-				} else 
-				{
-					if(PP.inParty()) 
-					{
-						Pinstance.removeFromParty(player, PP);
-					}
-					Pinstance.addToParty(player, PP, args[0], false);
-					return true;
-				}
-			} else if(args.length == 2 && PP.inParty()) 
-			{
-				if(args[0].equalsIgnoreCase("password")) 
-				{
-					if(Pinstance.isPartyLeader(player.getName(), PP.getParty())) 
-					{
-						if(Pinstance.isPartyLocked(PP.getParty())) 
-						{
-							Pinstance.setPartyPassword(PP.getParty(), args[1]);
-							player.sendMessage(mcLocale.getString("Party.PasswordSet", new Object[] {args[1]}));
-						} else 
-						{
-							player.sendMessage(mcLocale.getString("Party.IsntLocked"));
-						}
-					} else 
-					{
-						player.sendMessage(mcLocale.getString("Party.NotOwner"));
-					}
-				} else if(args[0].equalsIgnoreCase("kick")) 
-				{
-					if(Pinstance.isPartyLeader(player.getName(), PP.getParty())) 
-					{
-						if(Pinstance.isPartyLocked(PP.getParty())) 
-						{
-							Player tPlayer = null;
-							if(Bukkit.getServer().getPlayer(args[1]) != null) tPlayer = Bukkit.getServer().getPlayer(args[1]);
-							if(tPlayer == null) 
-							{
-								player.sendMessage(mcLocale.getString("Party.CouldNotKick", new Object[] {args[1]}));
-							}
-							if(!Pinstance.inSameParty(player, tPlayer)) 
-							{
-								player.sendMessage(mcLocale.getString("Party.NotInYourParty", new Object[] {tPlayer.getName()}));
-							} else 
-							{
-								//Not an admin
-								if(!mcPermissions.getInstance().admin(player)) 
-								{
-									//Can't kick an admin
-									if(mcPermissions.getInstance().admin(tPlayer)) 
-									{
-										player.sendMessage(mcLocale.getString("Party.CouldNotKick", new Object[] {tPlayer.getName()}));
-									}
-								}
-								PlayerProfile tPP = Users.getProfile(tPlayer);
-								
-								Pinstance.removeFromParty(tPlayer, tPP);
-								
-								tPlayer.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
-							}
-						} else {
-							player.sendMessage(mcLocale.getString("Party.IsntLocked"));
-						}
-					} else {
-						player.sendMessage(mcLocale.getString("Party.NotOwner"));
-					}
-				} else if(args[0].equalsIgnoreCase("owner")) 
-				{
-					if(Pinstance.isPartyLeader(player.getName(), PP.getParty())) 
-					{
-						Player tPlayer = null;
-						if(Bukkit.getServer().getPlayer(args[1]) != null) tPlayer = Bukkit.getServer().getPlayer(args[1]);
-						if(tPlayer == null) 
-						{
-							player.sendMessage(mcLocale.getString("Party.CouldNotSetOwner", new Object[] {args[1]}));
-						}
-						if(!Pinstance.inSameParty(player, tPlayer)) 
-						{
-							player.sendMessage(mcLocale.getString("Party.CouldNotSetOwner", new Object[] {tPlayer.getName()}));
-						} else 
-						{
-							Pinstance.setPartyLeader(PP.getParty(), tPlayer.getName());
-						}
-					} else 
-					{
-						player.sendMessage(mcLocale.getString("Party.NotOwner"));
-					}
-				} else 
-				{
-					Pinstance.removeFromParty(player, PP);
-					Pinstance.addToParty(player, PP, args[0], false, args[1]);
-				}
-			} else if(args.length == 2 && !PP.inParty()) 
-			{
-				Pinstance.addToParty(player, PP, args[0], false, args[1]);
-			}
-		}
-		else if(LoadProperties.partyEnable && label.equalsIgnoreCase("p")){
-
-			// Console message?
-			if(!(sender instanceof Player)) 
-			{
-				if(args.length < 2) return true;
-				String pMessage = args[1];
-				for (int i = 2; i <= args.length - 1; i++) {
-					pMessage = pMessage + " " + args[i];
-				}
-
-				String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE
-				+ "*Console*" + ChatColor.GREEN + ") ";
-
-				log.log(Level.INFO,
-						"[P](" + args[0] + ")" + "<*Console*> "
-						+ pMessage);
-
-				for(Player herp : Bukkit.getServer().getOnlinePlayers()) {
-					if(Users.getProfile(herp).inParty()) {
-						if(Users.getProfile(herp).getParty().equalsIgnoreCase(args[0])) {
-							herp.sendMessage(pPrefix + pMessage);
-						}
-					}
-				}
-				return true;
-			}
-
-			if(!mcPermissions.getInstance().party(player)){
-				player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-				return true;
-			}
-
-			// Not a toggle, a message
-
-			if (args.length >= 1) {
-				String pMessage = args[0];
-				for (int i = 1; i <= args.length - 1; i++) {
-					pMessage = pMessage + " " + args[i];
-				}
-				String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE
-				+ player.getDisplayName() + ChatColor.GREEN + ") ";
-
-				log.log(Level.INFO,
-						"[P](" + PP.getParty() + ")" + "<" + player.getDisplayName()
-						+ "> " + pMessage);
-
-				for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
-					if (Users.getProfile(herp).inParty()) {
-						if (Party.getInstance().inSameParty(herp, player))
-							herp.sendMessage(pPrefix + pMessage);
-					}
-				}
-
-				return true;
-			}
-
-			if(PP.getAdminChatMode())
-				PP.toggleAdminChat();
-
-			PP.togglePartyChat();
-
-			if(PP.getPartyChatMode()){
-				//player.sendMessage(ChatColor.GREEN + "Party Chat Toggled On"); 
-				player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOn"));
-			} else {
-				//player.sendMessage(ChatColor.GREEN + "Party Chat Toggled " + ChatColor.RED + "Off");  
-				player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOff"));
-			}
-		}
-
-		else if(label.equalsIgnoreCase("a")){
-			// Console message?
-			if(!(sender instanceof Player) && args.length >= 1) 
-			{
-				String aMessage = args[0];
-				for (int i = 1; i <= args.length - 1; i++) {
-					aMessage = aMessage + " " + args[i];
-				}
-
-				String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE
-				+ "*Console*" + ChatColor.AQUA + "} ";
-
-				log.log(Level.INFO, "[A]<*Console*> "
-						+ aMessage);
-
-				for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
-					if (mcPermissions.getInstance().adminChat(herp) || herp.isOp())
-						herp.sendMessage(aPrefix + aMessage);
-				}
-				return true;
-			}
-
-			if(!mcPermissions.getInstance().adminChat(player) && !player.isOp())
-			{
-				player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-				return true;
-			}
-
-			// Not a toggle, a message
-
-			if (args.length >= 1) {
-				String aMessage = args[0];
-				for (int i = 1; i <= args.length - 1; i++) {
-					aMessage = aMessage + " " + args[i];
-				}
-
-				String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE
-				+ player.getDisplayName() + ChatColor.AQUA + "} ";
-				log.log(Level.INFO, "[A]<" + player.getDisplayName() + "> "
-						+ aMessage);
-				for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
-					if (mcPermissions.getInstance().adminChat(herp) || herp.isOp())
-						herp.sendMessage(aPrefix + aMessage);
-				}
-				return true;
-			}
-
-			if(PP.getPartyChatMode())
-				PP.togglePartyChat();
-
-			PP.toggleAdminChat();
-
-			if(PP.getAdminChatMode())
-			{
-				player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOn"));
-				//player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.GREEN + "On");  
-			} else {
-				player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOff"));
-				//player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.RED + "Off");  
-			}
-		}
-
-		/*
-		 * MYSPAWN
-		 */
-		else if(LoadProperties.myspawnEnable && LoadProperties.enableMySpawn && label.equalsIgnoreCase(LoadProperties.myspawn))
-		{ 
-			if(!mcPermissions.getInstance().mySpawn(player)){
-				player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-				return true;
-			}
-			if(System.currentTimeMillis() < (PP.getMySpawnATS()*1000) + 3600000){
-				long x = (((PP.getMySpawnATS()*1000) + 3600000) - System.currentTimeMillis());
-				int y = (int) (x/60000);
-				int z = (int) ((x/1000) - (y*60));
-				player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnTimeNotice", new Object[] {y, z}));    
-				return true;
-			}
-			PP.setMySpawnATS(System.currentTimeMillis());
-			if(PP.getMySpawn(player) != null)
-			{
-				Location mySpawn = PP.getMySpawn(player);
-				
-				if(mySpawn != null){
-					//It's done twice because it acts oddly when you are in another world
-					player.teleport(mySpawn);
-					player.teleport(mySpawn);
-				}
-			} else {
-				player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnNotExist")); 
-			}
-		}
-		else if(LoadProperties.spoutEnabled && LoadProperties.xpbar && LoadProperties.xplockEnable && label.equalsIgnoreCase(LoadProperties.xplock))
-		{
-			if(split.length >= 2 && Skills.isSkill(split[1]) && mcPermissions.permission(player, "mcmmo.skills."+Skills.getSkillType(split[1]).toString().toLowerCase()))
-			{
-				if(PP.getXpBarLocked())
-				{
-					PP.setSkillLock(Skills.getSkillType(split[1]));
-					player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] {m.getCapitalized(PP.getSkillLock().toString())}));
-				}
-				else
-				{
-					PP.setSkillLock(Skills.getSkillType(split[1]));
-					PP.toggleXpBarLocked();
-					player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] {m.getCapitalized(PP.getSkillLock().toString())}));
-				}
-				SpoutStuff.updateXpBar(player);
-			} else if (split.length < 2)
-			{
-				if(PP.getXpBarLocked())
-				{
-					PP.toggleXpBarLocked();
-					player.sendMessage(mcLocale.getString("Commands.xplock.unlocked"));
-				} else if(PP.getLastGained() != null)
-				{
-					PP.toggleXpBarLocked();
-					PP.setSkillLock(PP.getLastGained());
-					player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] {m.getCapitalized(PP.getSkillLock().toString())}));
-				}
-			}
-			else if (split.length >= 2 && !Skills.isSkill(split[1]))
-			{
-				player.sendMessage("Commands.xplock.invalid");
-			}
-			else if(split.length >= 2 && Skills.isSkill(split[1]) && !mcPermissions.permission(player, "mcmmo.skills."+Skills.getSkillType(split[1]).toString().toLowerCase()))
-			{
-				player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
-				return true;
-			}
-		}
-		else if (LoadProperties.spoutEnabled && label.equalsIgnoreCase("mchud"))
-		{
-			if(split.length >= 2)
-			{
-				for(HUDType x : HUDType.values())
-				{
-					if(x.toString().toLowerCase().equals(split[1].toLowerCase()))
-					{
-						if(SpoutStuff.playerHUDs.containsKey(player))
-						{
-							SpoutStuff.playerHUDs.get(player).resetHUD();
-							SpoutStuff.playerHUDs.remove(player);
-							PP.setHUDType(x);
-							SpoutStuff.playerHUDs.put(player, new HUDmmo(player));
-						}
-					}
-				}
-			}
-		}
-		return true;
-	}
-}

+ 86 - 0
src/com/gmail/nossr50/commands/general/AddxpCommand.java

@@ -0,0 +1,86 @@
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class AddxpCommand implements CommandExecutor {
+	private final mcMMO plugin;
+
+	public AddxpCommand(mcMMO instance) {
+		this.plugin = instance;
+	}
+
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!mcPermissions.permissionsEnabled) {
+			sender.sendMessage("This command requires permissions.");
+			return true;
+		}
+
+		if (!LoadProperties.addxpEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			if (args.length < 2) {
+				// No console aliasing yet
+				// System.out.println("Usage is /"+LoadProperties.addxp+" playername skillname xp");
+				System.out.println("Usage is /addxp playername skillname xp");
+				return true;
+			} else if (args.length == 3) {
+				if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
+					int newvalue = Integer.valueOf(args[2]);
+					Users.getProfile(plugin.getServer().getPlayer(args[0])).addXP(Skills.getSkillType(args[1]), newvalue, plugin.getServer().getPlayer(args[0]));
+					plugin.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "Experience granted!");
+					System.out.println(args[1] + " has been modified for " + plugin.getServer().getPlayer(args[0]).getName() + ".");
+					Skills.XpCheckAll(plugin.getServer().getPlayer(args[0]));
+				}
+			} else {
+				// No console aliasing yet
+				// System.out.println("Usage is /"+LoadProperties.addxp+" playername skillname xp");
+				System.out.println("Usage is /addxp playername skillname xp");
+			}
+			return true;
+		}
+
+		Player player = (Player) sender;
+
+		if (!mcPermissions.getInstance().mmoedit(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+		if (args.length < 2) {
+			player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.addxp + " playername skillname xp");
+			return true;
+		}
+		if (args.length == 3) {
+			if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
+				int newvalue = Integer.valueOf(args[2]);
+				Users.getProfile(plugin.getServer().getPlayer(args[0])).addXP(Skills.getSkillType(args[1]), newvalue, plugin.getServer().getPlayer(args[0]));
+				plugin.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "Experience granted!");
+				player.sendMessage(ChatColor.RED + args[1] + " has been modified.");
+				Skills.XpCheckAll(plugin.getServer().getPlayer(args[0]));
+			}
+		} else if (args.length == 2 && m.isInt(args[1]) && Skills.isSkill(args[0])) {
+			int newvalue = Integer.valueOf(args[1]);
+			Users.getProfile(player).addXP(Skills.getSkillType(args[0]), newvalue, player);
+			player.sendMessage(ChatColor.RED + args[0] + " has been modified.");
+		} else {
+			player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.addxp + " playername skillname xp");
+		}
+
+		return true;
+	}
+}

+ 46 - 0
src/com/gmail/nossr50/commands/general/ClearmyspawnCommand.java

@@ -0,0 +1,46 @@
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class ClearmyspawnCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.clearmyspawnEnable || !LoadProperties.enableMySpawn) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().mySpawn(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+
+		double x = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getX();
+		double y = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getY();
+		double z = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getZ();
+		String worldname = Bukkit.getServer().getWorlds().get(0).getName();
+		PP.setMySpawn(x, y, z, worldname);
+		player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnCleared"));
+
+		return true;
+	}
+}

+ 83 - 0
src/com/gmail/nossr50/commands/general/MmoeditCommand.java

@@ -0,0 +1,83 @@
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class MmoeditCommand implements CommandExecutor {
+	private final mcMMO plugin;
+
+	public MmoeditCommand(mcMMO instance) {
+		this.plugin = instance;
+	}
+
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!mcPermissions.permissionsEnabled) {
+			sender.sendMessage("This command requires permissions.");
+			return true;
+		}
+
+		if (!LoadProperties.mmoeditEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			if (args.length < 2) {
+				System.out.println("Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
+				return true;
+			} else if (args.length == 3) {
+				if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
+					int newvalue = Integer.valueOf(args[2]);
+					Users.getProfile(plugin.getServer().getPlayer(args[0])).modifyskill(Skills.getSkillType(args[1]), newvalue);
+					System.out.println(args[1] + " has been modified for " + plugin.getServer().getPlayer(args[0]).getName() + ".");
+				}
+			} else {
+				System.out.println("Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
+			}
+
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().mmoedit(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+		if (args.length < 2) {
+			player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
+			return true;
+		}
+		if (args.length == 3) {
+			if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
+				int newvalue = Integer.valueOf(args[2]);
+				Users.getProfile(plugin.getServer().getPlayer(args[0])).modifyskill(Skills.getSkillType(args[1]), newvalue);
+				player.sendMessage(ChatColor.RED + args[1] + " has been modified.");
+			}
+		} else if (args.length == 2) {
+			if (m.isInt(args[1]) && Skills.isSkill(args[0])) {
+				int newvalue = Integer.valueOf(args[1]);
+				PP.modifyskill(Skills.getSkillType(args[0]), newvalue);
+				player.sendMessage(ChatColor.RED + args[0] + " has been modified.");
+			}
+		} else {
+			player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
+		}
+
+		return true;
+	}
+}

+ 39 - 0
src/com/gmail/nossr50/commands/general/MmoupdateCommand.java

@@ -0,0 +1,39 @@
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class MmoupdateCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+
+		if (!mcPermissions.getInstance().admin(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+		player.sendMessage(ChatColor.GRAY + "Starting conversion...");
+		Users.clearUsers();
+		m.convertToMySQL();
+		for (Player x : Bukkit.getServer().getOnlinePlayers()) {
+			Users.addUser(x);
+		}
+		player.sendMessage(ChatColor.GREEN + "Conversion finished!");
+
+		return true;
+	}
+}

+ 58 - 0
src/com/gmail/nossr50/commands/general/MyspawnCommand.java

@@ -0,0 +1,58 @@
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class MyspawnCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.myspawnEnable || !LoadProperties.enableMySpawn) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().mySpawn(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+		if (System.currentTimeMillis() < (PP.getMySpawnATS() * 1000) + 3600000) {
+			long x = (((PP.getMySpawnATS() * 1000) + 3600000) - System.currentTimeMillis());
+			int y = (int) (x / 60000);
+			int z = (int) ((x / 1000) - (y * 60));
+			player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnTimeNotice", new Object[] { y, z }));
+			return true;
+		}
+		PP.setMySpawnATS(System.currentTimeMillis());
+		if (PP.getMySpawn(player) != null) {
+			Location mySpawn = PP.getMySpawn(player);
+
+			if (mySpawn != null) {
+				// It's done twice because it acts oddly when you are in another world
+				player.teleport(mySpawn);
+				player.teleport(mySpawn);
+			}
+		} else {
+			player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnNotExist"));
+		}
+
+		return true;
+	}
+}

+ 85 - 0
src/com/gmail/nossr50/commands/general/StatsCommand.java

@@ -0,0 +1,85 @@
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class StatsCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.statsEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		player.sendMessage(mcLocale.getString("mcPlayerListener.YourStats"));
+
+		if (mcPermissions.getEnabled())
+			player.sendMessage(mcLocale.getString("mcPlayerListener.NoSkillNote"));
+
+		ChatColor header = ChatColor.GOLD;
+
+		if (Skills.hasGatheringSkills(player)) {
+			player.sendMessage(header + "-=GATHERING SKILLS=-");
+			if (mcPermissions.getInstance().excavation(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PP.getSkillLevel(SkillType.EXCAVATION), PP.getSkillXpLevel(SkillType.EXCAVATION), PP.getXpToLevel(SkillType.EXCAVATION)));
+			if (mcPermissions.getInstance().fishing(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.FishingSkill"), PP.getSkillLevel(SkillType.FISHING), PP.getSkillXpLevel(SkillType.FISHING), PP.getXpToLevel(SkillType.FISHING)));
+			if (mcPermissions.getInstance().herbalism(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM)));
+			if (mcPermissions.getInstance().mining(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PP.getSkillLevel(SkillType.MINING), PP.getSkillXpLevel(SkillType.MINING), PP.getXpToLevel(SkillType.MINING)));
+			if (mcPermissions.getInstance().woodcutting(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PP.getSkillLevel(SkillType.WOODCUTTING), PP.getSkillXpLevel(SkillType.WOODCUTTING), PP.getXpToLevel(SkillType.WOODCUTTING)));
+		}
+		if (Skills.hasCombatSkills(player)) {
+			player.sendMessage(header + "-=COMBAT SKILLS=-");
+			if (mcPermissions.getInstance().axes(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PP.getSkillLevel(SkillType.AXES), PP.getSkillXpLevel(SkillType.AXES), PP.getXpToLevel(SkillType.AXES)));
+			if (mcPermissions.getInstance().archery(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PP.getSkillLevel(SkillType.ARCHERY), PP.getSkillXpLevel(SkillType.ARCHERY), PP.getXpToLevel(SkillType.ARCHERY)));
+			// if(mcPermissions.getInstance().sorcery(player))
+			// player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PP.getSkill("sorcery"), PP.getSkill("sorceryXP"), PP.getXpToLevel("excavation")));
+			if (mcPermissions.getInstance().swords(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PP.getSkillLevel(SkillType.SWORDS), PP.getSkillXpLevel(SkillType.SWORDS), PP.getXpToLevel(SkillType.SWORDS)));
+			if (mcPermissions.getInstance().taming(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PP.getSkillLevel(SkillType.TAMING), PP.getSkillXpLevel(SkillType.TAMING), PP.getXpToLevel(SkillType.TAMING)));
+			if (mcPermissions.getInstance().unarmed(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PP.getSkillLevel(SkillType.UNARMED), PP.getSkillXpLevel(SkillType.UNARMED), PP.getXpToLevel(SkillType.UNARMED)));
+		}
+
+		if (Skills.hasMiscSkills(player)) {
+			player.sendMessage(header + "-=MISC SKILLS=-");
+			if (mcPermissions.getInstance().acrobatics(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PP.getSkillLevel(SkillType.ACROBATICS), PP.getSkillXpLevel(SkillType.ACROBATICS), PP.getXpToLevel(SkillType.ACROBATICS)));
+			// if(mcPermissions.getInstance().alchemy(player))
+			// player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AlchemySkill"), PP.getSkillLevel(SkillType.ALCHEMY), PP.getSkillXpLevel(SkillType.ALCHEMY), PP.getXpToLevel(SkillType.ALCHEMY)));
+			// if(mcPermissions.getInstance().enchanting(player))
+			// player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.EnchantingSkill"), PP.getSkillLevel(SkillType.ENCHANTING), PP.getSkillXpLevel(SkillType.ENCHANTING), PP.getXpToLevel(SkillType.ENCHANTING)));
+			if (mcPermissions.getInstance().repair(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PP.getSkillLevel(SkillType.REPAIR), PP.getSkillXpLevel(SkillType.REPAIR), PP.getXpToLevel(SkillType.REPAIR)));
+		}
+		player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") + ChatColor.GREEN + (m.getPowerLevel(player)));
+
+		return true;
+	}
+}

+ 98 - 0
src/com/gmail/nossr50/commands/general/WhoisCommand.java

@@ -0,0 +1,98 @@
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class WhoisCommand implements CommandExecutor {
+	private final mcMMO plugin;
+
+	public WhoisCommand(mcMMO instance) {
+		this.plugin = instance;
+	}
+
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.whoisEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+
+		if (!mcPermissions.getInstance().whois(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+
+		if (args.length < 1) {
+			player.sendMessage(ChatColor.RED + "Proper usage is /" + LoadProperties.whois + " <playername>");
+			return true;
+		}
+		// if split[1] is a player
+		if (plugin.getServer().getPlayer(args[0]) != null) {
+			Player target = plugin.getServer().getPlayer(args[0]);
+			PlayerProfile PPt = Users.getProfile(target);
+
+			player.sendMessage(ChatColor.GREEN + "~~WHOIS RESULTS~~");
+			player.sendMessage(target.getName());
+			if (PPt.inParty())
+				player.sendMessage("Party: " + PPt.getParty());
+			player.sendMessage("Health: " + target.getHealth() + ChatColor.GRAY + " (20 is full health)");
+			player.sendMessage("OP: " + target.isOp());
+			player.sendMessage(ChatColor.GREEN + "mcMMO Stats for " + ChatColor.YELLOW + target.getName());
+
+			player.sendMessage(ChatColor.GOLD + "-=GATHERING SKILLS=-");
+			if (mcPermissions.getInstance().excavation(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PPt.getSkillLevel(SkillType.EXCAVATION), PPt.getSkillXpLevel(SkillType.EXCAVATION), PPt.getXpToLevel(SkillType.EXCAVATION)));
+			if (mcPermissions.getInstance().fishing(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.FishingSkill"), PPt.getSkillLevel(SkillType.FISHING), PPt.getSkillXpLevel(SkillType.FISHING), PPt.getXpToLevel(SkillType.FISHING)));
+			if (mcPermissions.getInstance().herbalism(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PPt.getSkillLevel(SkillType.HERBALISM), PPt.getSkillXpLevel(SkillType.HERBALISM), PPt.getXpToLevel(SkillType.HERBALISM)));
+			if (mcPermissions.getInstance().mining(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PPt.getSkillLevel(SkillType.MINING), PPt.getSkillXpLevel(SkillType.MINING), PPt.getXpToLevel(SkillType.MINING)));
+			if (mcPermissions.getInstance().woodcutting(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PPt.getSkillLevel(SkillType.WOODCUTTING), PPt.getSkillXpLevel(SkillType.WOODCUTTING), PPt.getXpToLevel(SkillType.WOODCUTTING)));
+
+			player.sendMessage(ChatColor.GOLD + "-=COMBAT SKILLS=-");
+			if (mcPermissions.getInstance().axes(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PPt.getSkillLevel(SkillType.AXES), PPt.getSkillXpLevel(SkillType.AXES), PPt.getXpToLevel(SkillType.AXES)));
+			if (mcPermissions.getInstance().archery(player))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PPt.getSkillLevel(SkillType.ARCHERY), PPt.getSkillXpLevel(SkillType.ARCHERY), PPt.getXpToLevel(SkillType.ARCHERY)));
+			// if(mcPermissions.getInstance().sorcery(target))
+			// player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PPt.getSkill("sorcery"), PPt.getSkill("sorceryXP"), PPt.getXpToLevel("excavation")));
+			if (mcPermissions.getInstance().swords(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PPt.getSkillLevel(SkillType.SWORDS), PPt.getSkillXpLevel(SkillType.SWORDS), PPt.getXpToLevel(SkillType.SWORDS)));
+			if (mcPermissions.getInstance().taming(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PPt.getSkillLevel(SkillType.TAMING), PPt.getSkillXpLevel(SkillType.TAMING), PPt.getXpToLevel(SkillType.TAMING)));
+			if (mcPermissions.getInstance().unarmed(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PPt.getSkillLevel(SkillType.UNARMED), PPt.getSkillXpLevel(SkillType.UNARMED), PPt.getXpToLevel(SkillType.UNARMED)));
+
+			player.sendMessage(ChatColor.GOLD + "-=MISC SKILLS=-");
+			if (mcPermissions.getInstance().acrobatics(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PPt.getSkillLevel(SkillType.ACROBATICS), PPt.getSkillXpLevel(SkillType.ACROBATICS), PPt.getXpToLevel(SkillType.ACROBATICS)));
+			// if(mcPermissions.getInstance().alchemy(target))
+			// player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AlchemySkill"), PPt.getSkillLevel(SkillType.ALCHEMY), PPt.getSkillXpLevel(SkillType.ALCHEMY), PPt.getXpToLevel(SkillType.ALCHEMY)));
+			// if(mcPermissions.getInstance().enchanting(target))
+			// player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.EnchantingSkill"), PPt.getSkillLevel(SkillType.ENCHANTING), PPt.getSkillXpLevel(SkillType.ENCHANTING), PPt.getXpToLevel(SkillType.ENCHANTING)));
+			if (mcPermissions.getInstance().repair(target))
+				player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PPt.getSkillLevel(SkillType.REPAIR), PPt.getSkillXpLevel(SkillType.REPAIR), PPt.getXpToLevel(SkillType.REPAIR)));
+
+			player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") + ChatColor.GREEN + (m.getPowerLevel(target)));
+		}
+
+		return true;
+	}
+}

+ 126 - 0
src/com/gmail/nossr50/commands/general/XprateCommand.java

@@ -0,0 +1,126 @@
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class XprateCommand implements CommandExecutor {
+	private static int oldrate = LoadProperties.xpGainMultiplier;
+	
+	public static boolean xpevent = false;
+	
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.xprateEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			if(args.length <= 0)
+			{
+				System.out.println(mcLocale.getString("Commands.xprate.proper", new Object[] {LoadProperties.xprate}));
+				System.out.println(mcLocale.getString("Commands.xprate.proper2", new Object[] {LoadProperties.xprate}));
+			}
+			
+			if(args.length == 1 && args[0].equalsIgnoreCase("reset"))
+			{
+				if(xpevent)
+				{
+					for(Player x : Bukkit.getServer().getOnlinePlayers())
+						x.sendMessage(mcLocale.getString("Commands.xprate.over"));
+					xpevent = !xpevent;
+					LoadProperties.xpGainMultiplier = oldrate;
+				} else
+				{
+					LoadProperties.xpGainMultiplier = oldrate;
+				}
+			}
+			
+			if(args.length >= 1 && m.isInt(args[0]))
+			{
+				oldrate = LoadProperties.xpGainMultiplier;
+				
+				if(args.length >= 2 && (args[1].equalsIgnoreCase("true") || args[1].equalsIgnoreCase("false")))
+				{
+					if(args[1].equalsIgnoreCase("true"))
+						xpevent = true;
+					else
+						xpevent = false;
+				} else
+				{
+					System.out.println(mcLocale.getString("Commands.xprate.proper3"));
+					return true;
+				}
+				LoadProperties.xpGainMultiplier = m.getInt(args[0]);
+				if(xpevent = true)
+					for(Player x : Bukkit.getServer().getOnlinePlayers())
+					{
+						x.sendMessage(ChatColor.GOLD+"XP EVENT FOR mcMMO HAS STARTED!");
+						x.sendMessage(ChatColor.GOLD+"mcMMO XP RATE IS NOW "+LoadProperties.xpGainMultiplier+"x!!");
+					}
+			}
+			
+			return true;
+		}
+		
+		Player player = (Player) sender;
+		
+		if(!mcPermissions.getInstance().admin(player))
+		{
+			player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
+			return true;
+		}
+		if(args.length <= 0)
+		{
+			player.sendMessage(mcLocale.getString("Commands.xprate.proper", new Object[] {LoadProperties.xprate}));
+			player.sendMessage(mcLocale.getString("Commands.xprate.proper2", new Object[] {LoadProperties.xprate}));
+		}
+		if(args.length == 1 && args[0].equalsIgnoreCase("reset"))
+		{
+			if(xpevent)
+			{
+				for(Player x : Bukkit.getServer().getOnlinePlayers())
+					x.sendMessage(mcLocale.getString("Commands.xprate.over"));
+				xpevent = !xpevent;
+				LoadProperties.xpGainMultiplier = oldrate;
+			} else
+			{
+				LoadProperties.xpGainMultiplier = oldrate;
+			}
+		}
+		if(args.length >= 1 && m.isInt(args[0]))
+		{
+			oldrate = LoadProperties.xpGainMultiplier;
+			
+			if(args.length >= 2 && (args[1].equalsIgnoreCase("true") || args[1].equalsIgnoreCase("false")))
+			{
+				if(args[1].equalsIgnoreCase("true"))
+					xpevent = true;
+				else
+					xpevent = false;
+			} else
+			{
+				player.sendMessage(mcLocale.getString("Commands.xprate.proper3"));
+				return true;
+			}
+			LoadProperties.xpGainMultiplier = m.getInt(args[0]);
+			if(xpevent = true)
+				for(Player x : Bukkit.getServer().getOnlinePlayers())
+				{
+					x.sendMessage(mcLocale.getString("Commands.xprate.started"));
+					x.sendMessage(mcLocale.getString("Commands.xprate.started2", new Object[] {LoadProperties.xpGainMultiplier}));
+				}
+		}
+		
+		return true;
+	}
+}

+ 45 - 0
src/com/gmail/nossr50/commands/mc/McabilityCommand.java

@@ -0,0 +1,45 @@
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class McabilityCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!mcPermissions.permissionsEnabled) {
+			sender.sendMessage("This command requires permissions.");
+			return true;
+		}
+
+		if (!LoadProperties.mcabilityEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (PP.getAbilityUse()) {
+			player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOff"));
+			PP.toggleAbilityUse();
+		} else {
+			player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOn"));
+			PP.toggleAbilityUse();
+		}
+
+		return true;
+	}
+}

+ 73 - 0
src/com/gmail/nossr50/commands/mc/MccCommand.java

@@ -0,0 +1,73 @@
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class MccCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.mccEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+
+		player.sendMessage(ChatColor.RED + "---[]" + ChatColor.YELLOW + "mcMMO Commands" + ChatColor.RED + "[]---");
+
+		if (mcPermissions.getInstance().party(player)) {
+			player.sendMessage(mcLocale.getString("m.mccPartyCommands"));
+			player.sendMessage(LoadProperties.party + " " + mcLocale.getString("m.mccParty"));
+			player.sendMessage(LoadProperties.party + " q " + mcLocale.getString("m.mccPartyQ"));
+
+			if (mcPermissions.getInstance().partyChat(player))
+				player.sendMessage("/p " + mcLocale.getString("m.mccPartyToggle"));
+
+			player.sendMessage(LoadProperties.invite + " " + mcLocale.getString("m.mccPartyInvite"));
+			player.sendMessage(LoadProperties.accept + " " + mcLocale.getString("m.mccPartyAccept"));
+
+			if (mcPermissions.getInstance().partyTeleport(player))
+				player.sendMessage(LoadProperties.ptp + " " + mcLocale.getString("m.mccPartyTeleport"));
+		}
+		player.sendMessage(mcLocale.getString("m.mccOtherCommands"));
+		player.sendMessage(LoadProperties.stats + ChatColor.RED + " " + mcLocale.getString("m.mccStats"));
+		player.sendMessage("/mctop <skillname> <page> " + ChatColor.RED + mcLocale.getString("m.mccLeaderboards"));
+
+		if (mcPermissions.getInstance().mySpawn(player)) {
+			player.sendMessage(LoadProperties.myspawn + " " + ChatColor.RED + mcLocale.getString("m.mccMySpawn"));
+			player.sendMessage(LoadProperties.clearmyspawn + " " + ChatColor.RED + mcLocale.getString("m.mccClearMySpawn"));
+		}
+
+		if (mcPermissions.getInstance().mcAbility(player))
+			player.sendMessage(LoadProperties.mcability + ChatColor.RED + " " + mcLocale.getString("m.mccToggleAbility"));
+
+		if (mcPermissions.getInstance().adminChat(player))
+			player.sendMessage("/a " + ChatColor.RED + mcLocale.getString("m.mccAdminToggle"));
+
+		if (mcPermissions.getInstance().whois(player))
+			player.sendMessage(LoadProperties.whois + " " + mcLocale.getString("m.mccWhois"));
+
+		if (mcPermissions.getInstance().mmoedit(player))
+			player.sendMessage(LoadProperties.mmoedit + mcLocale.getString("m.mccMmoedit"));
+
+		if (mcPermissions.getInstance().mcgod(player))
+			player.sendMessage(LoadProperties.mcgod + ChatColor.RED + " " + mcLocale.getString("m.mccMcGod"));
+
+		player.sendMessage(mcLocale.getString("m.mccSkillInfo"));
+		player.sendMessage(LoadProperties.mcmmo + " " + mcLocale.getString("m.mccModDescription"));
+
+		return true;
+	}
+}

+ 48 - 0
src/com/gmail/nossr50/commands/mc/McgodCommand.java

@@ -0,0 +1,48 @@
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class McgodCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.mcgodEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (mcPermissions.permissionsEnabled) {
+			if (!mcPermissions.getInstance().mcgod(player)) {
+				player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+				return true;
+			}
+
+			if (PP.getGodMode()) {
+				player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled"));
+				PP.toggleGodMode();
+			} else {
+				player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled"));
+				PP.toggleGodMode();
+			}
+		}
+
+		return true;
+	}
+}

+ 48 - 0
src/com/gmail/nossr50/commands/mc/McmmoCommand.java

@@ -0,0 +1,48 @@
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.ChatColor;
+import org.bukkit.Material;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.getspout.spoutapi.player.SpoutPlayer;
+
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class McmmoCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.mcmmoEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+
+		player.sendMessage(ChatColor.RED + "-----[]" + ChatColor.GREEN + "mcMMO" + ChatColor.RED + "[]-----");
+		String description = mcLocale.getString("mcMMO.Description", new Object[] { LoadProperties.mcc });
+		String[] mcSplit = description.split(",");
+
+		for (String x : mcSplit) {
+			player.sendMessage(x);
+		}
+
+		if (LoadProperties.spoutEnabled && player instanceof SpoutPlayer) {
+			SpoutPlayer sPlayer = (SpoutPlayer) player;
+			if (LoadProperties.donateMessage)
+				sPlayer.sendNotification("[mcMMO] Donate!", "Paypal nossr50@gmail.com", Material.CAKE);
+		} else {
+			if (LoadProperties.donateMessage)
+				player.sendMessage(ChatColor.GREEN + "If you like my work you can donate via Paypal: nossr50@gmail.com");
+		}
+
+		return true;
+	}
+}

+ 93 - 0
src/com/gmail/nossr50/commands/mc/McrefreshCommand.java

@@ -0,0 +1,93 @@
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class McrefreshCommand implements CommandExecutor {
+	private final mcMMO plugin;
+
+	public McrefreshCommand(mcMMO instance) {
+		this.plugin = instance;
+	}
+
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.mcrefreshEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().mcrefresh(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+		if (args.length >= 1 && (plugin.getServer().getPlayer(args[0]) != null)) {
+			player.sendMessage("You have refreshed " + args[0] + "'s cooldowns!");
+			player = plugin.getServer().getPlayer(args[0]);
+		}
+
+		/*
+		 * PREP MODES
+		 */
+		PP = Users.getProfile(player);
+		PP.setRecentlyHurt((long) 0);
+		PP.setHoePreparationMode(false);
+		PP.setAxePreparationMode(false);
+		PP.setFistsPreparationMode(false);
+		PP.setSwordsPreparationMode(false);
+		PP.setPickaxePreparationMode(false);
+		/*
+		 * GREEN TERRA
+		 */
+		PP.setGreenTerraMode(false);
+		PP.setGreenTerraDeactivatedTimeStamp((long) 0);
+
+		/*
+		 * GIGA DRILL BREAKER
+		 */
+		PP.setGigaDrillBreakerMode(false);
+		PP.setGigaDrillBreakerDeactivatedTimeStamp((long) 0);
+		/*
+		 * SERRATED STRIKE
+		 */
+		PP.setSerratedStrikesMode(false);
+		PP.setSerratedStrikesDeactivatedTimeStamp((long) 0);
+		/*
+		 * SUPER BREAKER
+		 */
+		PP.setSuperBreakerMode(false);
+		PP.setSuperBreakerDeactivatedTimeStamp((long) 0);
+		/*
+		 * TREE FELLER
+		 */
+		PP.setTreeFellerMode(false);
+		PP.setTreeFellerDeactivatedTimeStamp((long) 0);
+		/*
+		 * BERSERK
+		 */
+		PP.setBerserkMode(false);
+		PP.setBerserkDeactivatedTimeStamp((long) 0);
+
+		player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesRefreshed"));
+
+		return true;
+	}
+}

+ 199 - 0
src/com/gmail/nossr50/commands/mc/MctopCommand.java

@@ -0,0 +1,199 @@
+package com.gmail.nossr50.commands.mc;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Leaderboard;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class MctopCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.mctopEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+
+		if (LoadProperties.useMySQL == false) {
+			/*
+			 * POWER LEVEL INFO RETRIEVAL
+			 */
+			if (args.length == 0) {
+				int p = 1;
+				String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p);
+				player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
+				int n = 1 * p; // Position
+				for (String x : info) {
+					if (x != null) {
+						String digit = String.valueOf(n);
+						if (n < 10)
+							digit = "0" + String.valueOf(n);
+						String[] splitx = x.split(":");
+						// Format: 1. Playername - skill value
+						player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
+						n++;
+					}
+				}
+			}
+			if (args.length >= 1 && m.isInt(args[0])) {
+				int p = 1;
+				// Grab page value if specified
+				if (args.length >= 1) {
+					if (m.isInt(args[0])) {
+						p = Integer.valueOf(args[0]);
+					}
+				}
+				int pt = p;
+				if (p > 1) {
+					pt -= 1;
+					pt += (pt * 10);
+					pt = 10;
+				}
+				String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p);
+				player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
+				int n = 1 * pt; // Position
+				for (String x : info) {
+					if (x != null) {
+						String digit = String.valueOf(n);
+						if (n < 10)
+							digit = "0" + String.valueOf(n);
+						String[] splitx = x.split(":");
+						// Format: 1. Playername - skill value
+						player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
+						n++;
+					}
+				}
+			}
+			/*
+			 * SKILL SPECIFIED INFO RETRIEVAL
+			 */
+			if (args.length >= 1 && Skills.isSkill(args[0])) {
+				int p = 1;
+				// Grab page value if specified
+				if (args.length >= 2) {
+					if (m.isInt(args[1])) {
+						p = Integer.valueOf(args[1]);
+					}
+				}
+				int pt = p;
+				if (p > 1) {
+					pt -= 1;
+					pt += (pt * 10);
+					pt = 10;
+				}
+				String firstLetter = args[0].substring(0, 1); // Get first letter
+				String remainder = args[0].substring(1); // Get remainder of word.
+				String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
+
+				String[] info = Leaderboard.retrieveInfo(args[0].toUpperCase(), p);
+				player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] { capitalized }));
+				int n = 1 * pt; // Position
+				for (String x : info) {
+					if (x != null) {
+						String digit = String.valueOf(n);
+						if (n < 10)
+							digit = "0" + String.valueOf(n);
+						String[] splitx = x.split(":");
+						// Format: 1. Playername - skill value
+						player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
+						n++;
+					}
+				}
+			}
+		} else {
+			/*
+			 * MYSQL LEADERBOARDS
+			 */
+			String powerlevel = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing";
+			if (args.length >= 1 && Skills.isSkill(args[0])) {
+				/*
+				 * Create a nice consistent capitalized leaderboard name
+				 */
+				String lowercase = args[0].toLowerCase(); // For the query
+				String firstLetter = args[0].substring(0, 1); // Get first letter
+				String remainder = args[0].substring(1); // Get remainder of word.
+				String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
+
+				player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] { capitalized }));
+				if (args.length >= 2 && m.isInt(args[1])) {
+					int n = 1; // For the page number
+					int n2 = Integer.valueOf(args[1]);
+					if (n2 > 1) {
+						// Figure out the 'page' here
+						n = 10;
+						n = n * (n2 - 1);
+					}
+					// If a page number is specified
+					HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT " + lowercase + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + lowercase + " > 0 ORDER BY `" + LoadProperties.MySQLtablePrefix + "skills`.`" + lowercase + "` DESC ");
+
+					for (int i = n; i <= n + 10; i++) {
+						if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
+							break;
+						HashMap<Integer, ArrayList<String>> username = mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
+						player.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
+					}
+					return true;
+				}
+				// If no page number is specified
+				HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT " + lowercase + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + lowercase + " > 0 ORDER BY `" + LoadProperties.MySQLtablePrefix + "skills`.`" + lowercase + "` DESC ");
+				for (int i = 1; i <= 10; i++) { // i<=userslist.size()
+					if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
+						break;
+					HashMap<Integer, ArrayList<String>> username = mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
+					player.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
+				}
+				return true;
+			}
+			if (args.length >= 0) {
+				player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
+				if (args.length >= 1 && m.isInt(args[0])) {
+					int n = 1; // For the page number
+					int n2 = Integer.valueOf(args[0]);
+					if (n2 > 1) {
+						// Figure out the 'page' here
+						n = 10;
+						n = n * (n2 - 1);
+					}
+					// If a page number is specified
+					HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT " + powerlevel + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + powerlevel + " > 0 ORDER BY " + powerlevel + " DESC ");
+					for (int i = n; i <= n + 10; i++) {
+						if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
+							break;
+						HashMap<Integer, ArrayList<String>> username = mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
+						player.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
+					}
+					return true;
+				}
+				HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.Read("SELECT " + powerlevel + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + powerlevel + " > 0 ORDER BY " + powerlevel + " DESC ");
+				for (int i = 1; i <= 10; i++) {
+					if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
+						break;
+					HashMap<Integer, ArrayList<String>> username = mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
+					player.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
+					// System.out.println(username.get(1).get(0));
+					// System.out.println("Mining : " + userslist.get(i).get(0) + ", User id : " + userslist.get(i).get(1));
+				}
+			}
+		}
+
+		return true;
+	}
+}

+ 86 - 0
src/com/gmail/nossr50/commands/party/ACommand.java

@@ -0,0 +1,86 @@
+package com.gmail.nossr50.commands.party;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class ACommand implements CommandExecutor {
+	private Logger log;
+
+	public ACommand() {
+		this.log = Logger.getLogger("Minecraft");
+	}
+
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+
+		// Console message?
+		if (!(sender instanceof Player) && args.length >= 1) {
+			String aMessage = args[0];
+			for (int i = 1; i <= args.length - 1; i++) {
+				aMessage = aMessage + " " + args[i];
+			}
+
+			String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE + "*Console*" + ChatColor.AQUA + "} ";
+
+			log.log(Level.INFO, "[A]<*Console*> " + aMessage);
+
+			for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
+				if (mcPermissions.getInstance().adminChat(herp) || herp.isOp())
+					herp.sendMessage(aPrefix + aMessage);
+			}
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().adminChat(player) && !player.isOp()) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+
+		// Not a toggle, a message
+
+		if (args.length >= 1) {
+			String aMessage = args[0];
+			for (int i = 1; i <= args.length - 1; i++) {
+				aMessage = aMessage + " " + args[i];
+			}
+
+			String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE + player.getDisplayName() + ChatColor.AQUA + "} ";
+			log.log(Level.INFO, "[A]<" + player.getDisplayName() + "> " + aMessage);
+			for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
+				if (mcPermissions.getInstance().adminChat(herp) || herp.isOp())
+					herp.sendMessage(aPrefix + aMessage);
+			}
+			return true;
+		}
+
+		if (PP.getPartyChatMode())
+			PP.togglePartyChat();
+
+		PP.toggleAdminChat();
+
+		if (PP.getAdminChatMode()) {
+			player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOn"));
+			// player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.GREEN + "On");
+		} else {
+			player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOff"));
+			// player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.RED + "Off");
+		}
+
+		return true;
+	}
+}

+ 52 - 0
src/com/gmail/nossr50/commands/party/AcceptCommand.java

@@ -0,0 +1,52 @@
+package com.gmail.nossr50.commands.party;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class AcceptCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.acceptEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().party(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+
+		if (PP.hasPartyInvite()) {
+			Party Pinstance = Party.getInstance();
+
+			if (PP.inParty()) {
+				Pinstance.removeFromParty(player, PP);
+			}
+			PP.acceptInvite();
+			Pinstance.addToParty(player, PP, PP.getParty(), true);
+
+		} else {
+			player.sendMessage(mcLocale.getString("mcPlayerListener.NoInvites"));
+		}
+
+		return true;
+	}
+}

+ 73 - 0
src/com/gmail/nossr50/commands/party/InviteCommand.java

@@ -0,0 +1,73 @@
+package com.gmail.nossr50.commands.party;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class InviteCommand implements CommandExecutor {
+	private final mcMMO plugin;
+
+	public InviteCommand(mcMMO instance) {
+		this.plugin = instance;
+	}
+
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.inviteEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().party(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+
+		Party Pinstance = Party.getInstance();
+
+		if (!PP.inParty()) {
+			player.sendMessage(mcLocale.getString("mcPlayerListener.NotInParty"));
+			return true;
+		}
+		if (args.length < 1) {
+			player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.invite + " <playername>");
+			return true;
+		}
+		if (PP.inParty() && args.length >= 1 && (plugin.getServer().getPlayer(args[0]) != null)) {
+			if (Pinstance.canInvite(player, PP)) {
+				Player target = plugin.getServer().getPlayer(args[0]);
+				PlayerProfile PPt = Users.getProfile(target);
+				PPt.modifyInvite(PP.getParty());
+
+				player.sendMessage(mcLocale.getString("mcPlayerListener.InviteSuccess"));
+				// target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+PPt.getInvite()+" from "+player.getName());
+				target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite1", new Object[] { PPt.getInvite(), player.getName() }));
+				// target.sendMessage(ChatColor.YELLOW+"Type "+ChatColor.GREEN+LoadProperties.accept+ChatColor.YELLOW+" to accept the invite");
+				target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite2", new Object[] { LoadProperties.accept }));
+			} else {
+				player.sendMessage(mcLocale.getString("Party.Locked"));
+				return true;
+			}
+		}
+
+		return true;
+	}
+}

+ 101 - 0
src/com/gmail/nossr50/commands/party/PCommand.java

@@ -0,0 +1,101 @@
+package com.gmail.nossr50.commands.party;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class PCommand implements CommandExecutor {
+	private Logger log;
+
+	public PCommand() {
+		this.log = Logger.getLogger("Minecraft");
+	}
+
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.partyEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		// Console message?
+		if (!(sender instanceof Player)) {
+			if (args.length < 2)
+				return true;
+			String pMessage = args[1];
+			for (int i = 2; i <= args.length - 1; i++) {
+				pMessage = pMessage + " " + args[i];
+			}
+
+			String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE + "*Console*" + ChatColor.GREEN + ") ";
+
+			log.log(Level.INFO, "[P](" + args[0] + ")" + "<*Console*> " + pMessage);
+
+			for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
+				if (Users.getProfile(herp).inParty()) {
+					if (Users.getProfile(herp).getParty().equalsIgnoreCase(args[0])) {
+						herp.sendMessage(pPrefix + pMessage);
+					}
+				}
+			}
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().party(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+
+		// Not a toggle, a message
+
+		if (args.length >= 1) {
+			String pMessage = args[0];
+			for (int i = 1; i <= args.length - 1; i++) {
+				pMessage = pMessage + " " + args[i];
+			}
+			String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE + player.getDisplayName() + ChatColor.GREEN + ") ";
+
+			log.log(Level.INFO, "[P](" + PP.getParty() + ")" + "<" + player.getDisplayName() + "> " + pMessage);
+
+			for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
+				if (Users.getProfile(herp).inParty()) {
+					if (Party.getInstance().inSameParty(herp, player))
+						herp.sendMessage(pPrefix + pMessage);
+				}
+			}
+
+			return true;
+		}
+
+		if (PP.getAdminChatMode())
+			PP.toggleAdminChat();
+
+		PP.togglePartyChat();
+
+		if (PP.getPartyChatMode()) {
+			// player.sendMessage(ChatColor.GREEN + "Party Chat Toggled On");
+			player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOn"));
+		} else {
+			// player.sendMessage(ChatColor.GREEN + "Party Chat Toggled " + ChatColor.RED + "Off");
+			player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOff"));
+		}
+
+		return true;
+	}
+}

+ 192 - 0
src/com/gmail/nossr50/commands/party/PartyCommand.java

@@ -0,0 +1,192 @@
+package com.gmail.nossr50.commands.party;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class PartyCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.partyEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().party(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+
+		Party Pinstance = Party.getInstance();
+
+		if (PP.inParty() && (!Pinstance.isParty(PP.getParty()) || !Pinstance.isInParty(player, PP))) {
+			Pinstance.addToParty(player, PP, PP.getParty(), false);
+		}
+
+		if (args.length == 0 && !PP.inParty()) {
+			player.sendMessage(mcLocale.getString("Party.Help1", new Object[] { LoadProperties.party }));
+			player.sendMessage(mcLocale.getString("Party.Help2", new Object[] { LoadProperties.party }));
+			player.sendMessage(mcLocale.getString("Party.Help3", new Object[] { LoadProperties.party }));
+			return true;
+		} else if (args.length == 0 && PP.inParty()) {
+			String tempList = "";
+			int x = 0;
+			for (Player p : Bukkit.getServer().getOnlinePlayers()) {
+				if (PP.getParty().equals(Users.getProfile(p).getParty())) {
+					if (p != null && x + 1 >= Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers())) {
+						if (Pinstance.isPartyLeader(p.getName(), PP.getParty())) {
+							tempList += ChatColor.GOLD + p.getName();
+							x++;
+						} else {
+							tempList += ChatColor.WHITE + p.getName();
+							x++;
+						}
+					}
+					if (p != null && x < Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers())) {
+						if (Pinstance.isPartyLeader(p.getName(), PP.getParty())) {
+							tempList += ChatColor.GOLD + p.getName() + ", ";
+							x++;
+						} else {
+							tempList += ChatColor.WHITE + p.getName() + ", ";
+							x++;
+						}
+					}
+				}
+			}
+			player.sendMessage(mcLocale.getString("mcPlayerListener.YouAreInParty", new Object[] { PP.getParty() }));
+			player.sendMessage(mcLocale.getString("mcPlayerListener.PartyMembers") + " (" + tempList + ChatColor.GREEN + ")");
+			return true;
+		} else if (args.length == 1) {
+			if (args[0].equals("q") && PP.inParty()) {
+				Pinstance.removeFromParty(player, PP);
+
+				player.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
+				return true;
+			} else if (args[0].equalsIgnoreCase("?")) {
+				player.sendMessage(mcLocale.getString("Party.Help4", new Object[] { LoadProperties.party }));
+				player.sendMessage(mcLocale.getString("Party.Help2", new Object[] { LoadProperties.party }));
+				player.sendMessage(mcLocale.getString("Party.Help5", new Object[] { LoadProperties.party }));
+				player.sendMessage(mcLocale.getString("Party.Help6", new Object[] { LoadProperties.party }));
+				player.sendMessage(mcLocale.getString("Party.Help7", new Object[] { LoadProperties.party }));
+				player.sendMessage(mcLocale.getString("Party.Help8", new Object[] { LoadProperties.party }));
+				player.sendMessage(mcLocale.getString("Party.Help9", new Object[] { LoadProperties.party }));
+			} else if (args[0].equalsIgnoreCase("lock")) {
+				if (PP.inParty()) {
+					if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+						Pinstance.lockParty(PP.getParty());
+						player.sendMessage(mcLocale.getString("Party.Locked"));
+					} else {
+						player.sendMessage(mcLocale.getString("Party.NotOwner"));
+					}
+				} else {
+					player.sendMessage(mcLocale.getString("Party.InvalidName"));
+				}
+			} else if (args[0].equalsIgnoreCase("unlock")) {
+				if (PP.inParty()) {
+					if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+						Pinstance.unlockParty(PP.getParty());
+						player.sendMessage(mcLocale.getString("Party.Unlocked"));
+					} else {
+						player.sendMessage(mcLocale.getString("Party.NotOwner"));
+					}
+				} else {
+					player.sendMessage(mcLocale.getString("Party.InvalidName"));
+				}
+				// Party debugging command.
+				// } else if (args[0].equalsIgnoreCase("dump")) {
+				// Pinstance.dump(player);
+			} else {
+				if (PP.inParty()) {
+					Pinstance.removeFromParty(player, PP);
+				}
+				Pinstance.addToParty(player, PP, args[0], false);
+				return true;
+			}
+		} else if (args.length == 2 && PP.inParty()) {
+			if (args[0].equalsIgnoreCase("password")) {
+				if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+					if (Pinstance.isPartyLocked(PP.getParty())) {
+						Pinstance.setPartyPassword(PP.getParty(), args[1]);
+						player.sendMessage(mcLocale.getString("Party.PasswordSet", new Object[] { args[1] }));
+					} else {
+						player.sendMessage(mcLocale.getString("Party.IsntLocked"));
+					}
+				} else {
+					player.sendMessage(mcLocale.getString("Party.NotOwner"));
+				}
+			} else if (args[0].equalsIgnoreCase("kick")) {
+				if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+					if (Pinstance.isPartyLocked(PP.getParty())) {
+						Player tPlayer = null;
+						if (Bukkit.getServer().getPlayer(args[1]) != null)
+							tPlayer = Bukkit.getServer().getPlayer(args[1]);
+						if (tPlayer == null) {
+							player.sendMessage(mcLocale.getString("Party.CouldNotKick", new Object[] { args[1] }));
+						}
+						if (!Pinstance.inSameParty(player, tPlayer)) {
+							player.sendMessage(mcLocale.getString("Party.NotInYourParty", new Object[] { tPlayer.getName() }));
+						} else {
+							// Not an admin
+							if (!mcPermissions.getInstance().admin(player)) {
+								// Can't kick an admin
+								if (mcPermissions.getInstance().admin(tPlayer)) {
+									player.sendMessage(mcLocale.getString("Party.CouldNotKick", new Object[] { tPlayer.getName() }));
+								}
+							}
+							PlayerProfile tPP = Users.getProfile(tPlayer);
+
+							Pinstance.removeFromParty(tPlayer, tPP);
+
+							tPlayer.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
+						}
+					} else {
+						player.sendMessage(mcLocale.getString("Party.IsntLocked"));
+					}
+				} else {
+					player.sendMessage(mcLocale.getString("Party.NotOwner"));
+				}
+			} else if (args[0].equalsIgnoreCase("owner")) {
+				if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+					Player tPlayer = null;
+					if (Bukkit.getServer().getPlayer(args[1]) != null)
+						tPlayer = Bukkit.getServer().getPlayer(args[1]);
+					if (tPlayer == null) {
+						player.sendMessage(mcLocale.getString("Party.CouldNotSetOwner", new Object[] { args[1] }));
+					}
+					if (!Pinstance.inSameParty(player, tPlayer)) {
+						player.sendMessage(mcLocale.getString("Party.CouldNotSetOwner", new Object[] { tPlayer.getName() }));
+					} else {
+						Pinstance.setPartyLeader(PP.getParty(), tPlayer.getName());
+					}
+				} else {
+					player.sendMessage(mcLocale.getString("Party.NotOwner"));
+				}
+			} else {
+				Pinstance.removeFromParty(player, PP);
+				Pinstance.addToParty(player, PP, args[0], false, args[1]);
+			}
+		} else if (args.length == 2 && !PP.inParty()) {
+			Pinstance.addToParty(player, PP, args[0], false, args[1]);
+		}
+
+		return true;
+	}
+}

+ 62 - 0
src/com/gmail/nossr50/commands/party/PtpCommand.java

@@ -0,0 +1,62 @@
+package com.gmail.nossr50.commands.party;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class PtpCommand implements CommandExecutor {
+	private final mcMMO plugin;
+
+	public PtpCommand(mcMMO instance) {
+		this.plugin = instance;
+	}
+
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.ptpEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (!mcPermissions.getInstance().partyTeleport(player)) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+		if (args.length < 1) {
+			player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.ptp + " <playername>");
+			return true;
+		}
+		if (plugin.getServer().getPlayer(args[0]) == null) {
+			player.sendMessage("That is not a valid player");
+		}
+
+		if (plugin.getServer().getPlayer(args[0]) != null) {
+			Player target = plugin.getServer().getPlayer(args[0]);
+			PlayerProfile PPt = Users.getProfile(target);
+			if (PP.getParty().equals(PPt.getParty())) {
+				player.teleport(target);
+				player.sendMessage(ChatColor.GREEN + "You have teleported to " + target.getName());
+				target.sendMessage(ChatColor.GREEN + player.getName() + " has teleported to you.");
+			}
+		}
+
+		return true;
+	}
+}

+ 52 - 0
src/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java

@@ -0,0 +1,52 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class AcrobaticsCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		String dodgepercentage;
+		float skillvalue = (float) PP.getSkillLevel(SkillType.ACROBATICS);
+		String percentage = String.valueOf((skillvalue / 1000) * 100);
+		String gracepercentage = String.valueOf(((skillvalue / 1000) * 100) * 2);
+
+		if (PP.getSkillLevel(SkillType.ACROBATICS) <= 800)
+			dodgepercentage = String.valueOf((skillvalue / 4000 * 100));
+		else
+			dodgepercentage = "20";
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillAcrobatics") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainAcrobatics") }));
+
+		if (mcPermissions.getInstance().acrobatics(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.ACROBATICS), PP.getSkillXpLevel(SkillType.ACROBATICS), PP.getXpToLevel(SkillType.ACROBATICS) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics1_0"), mcLocale.getString("m.EffectsAcrobatics1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics2_0"), mcLocale.getString("m.EffectsAcrobatics2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics3_0"), mcLocale.getString("m.EffectsAcrobatics3_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.AcrobaticsRollChance", new Object[] { percentage }));
+		player.sendMessage(mcLocale.getString("m.AcrobaticsGracefulRollChance", new Object[] { gracepercentage }));
+		player.sendMessage(mcLocale.getString("m.AcrobaticsDodgeChance", new Object[] { dodgepercentage }));
+
+		return true;
+	}
+}

+ 63 - 0
src/com/gmail/nossr50/commands/skills/ArcheryCommand.java

@@ -0,0 +1,63 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class ArcheryCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		float skillvalue = (float) PP.getSkillLevel(SkillType.ARCHERY);
+		String percentage = String.valueOf((skillvalue / 1000) * 100);
+
+		int ignition = 20;
+		if (PP.getSkillLevel(SkillType.ARCHERY) >= 200)
+			ignition += 20;
+		if (PP.getSkillLevel(SkillType.ARCHERY) >= 400)
+			ignition += 20;
+		if (PP.getSkillLevel(SkillType.ARCHERY) >= 600)
+			ignition += 20;
+		if (PP.getSkillLevel(SkillType.ARCHERY) >= 800)
+			ignition += 20;
+		if (PP.getSkillLevel(SkillType.ARCHERY) >= 1000)
+			ignition += 20;
+
+		String percentagedaze;
+		if (PP.getSkillLevel(SkillType.ARCHERY) < 1000)
+			percentagedaze = String.valueOf((skillvalue / 2000) * 100);
+		else
+			percentagedaze = "50";
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillArchery") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainArchery") }));
+
+		if (mcPermissions.getInstance().archery(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.ARCHERY), PP.getSkillXpLevel(SkillType.ARCHERY), PP.getXpToLevel(SkillType.ARCHERY) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery1_0"), mcLocale.getString("m.EffectsArchery1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery2_0"), mcLocale.getString("m.EffectsArchery2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery4_0"), mcLocale.getString("m.EffectsArchery4_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.ArcheryDazeChance", new Object[] { percentagedaze }));
+		player.sendMessage(mcLocale.getString("m.ArcheryRetrieveChance", new Object[] { percentage }));
+		player.sendMessage(mcLocale.getString("m.ArcheryIgnitionLength", new Object[] { (ignition / 20) }));
+
+		return true;
+	}
+}

+ 62 - 0
src/com/gmail/nossr50/commands/skills/AxesCommand.java

@@ -0,0 +1,62 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class AxesCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		String percentage;
+
+		float skillvalue = (float) PP.getSkillLevel(SkillType.AXES);
+		if (PP.getSkillLevel(SkillType.AXES) < 750)
+			percentage = String.valueOf((skillvalue / 1000) * 100);
+		else
+			percentage = "75";
+
+		int ticks = 2;
+		int x = PP.getSkillLevel(SkillType.AXES);
+		while (x >= 50) {
+			x -= 50;
+			ticks++;
+		}
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillAxes") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainAxes") }));
+
+		if (mcPermissions.getInstance().axes(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.AXES), PP.getSkillXpLevel(SkillType.AXES), PP.getXpToLevel(SkillType.AXES) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes1_0"), mcLocale.getString("m.EffectsAxes1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes2_0"), mcLocale.getString("m.EffectsAxes2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes3_0"), mcLocale.getString("m.EffectsAxes3_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.AxesCritChance", new Object[] { percentage }));
+
+		if (PP.getSkillLevel(SkillType.AXES) < 500)
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockAxes1") }));
+		else
+			player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusAxes1_0"), mcLocale.getString("m.AbilBonusAxes1_1") }));
+
+		player.sendMessage(mcLocale.getString("m.AxesSkullLength", new Object[] { ticks }));
+
+		return true;
+	}
+}

+ 46 - 0
src/com/gmail/nossr50/commands/skills/ExcavationCommand.java

@@ -0,0 +1,46 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class ExcavationCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		int ticks = 2;
+		int x = PP.getSkillLevel(SkillType.EXCAVATION);
+		while (x >= 50) {
+			x -= 50;
+			ticks++;
+		}
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillExcavation") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainExcavation") }));
+
+		if (mcPermissions.getInstance().excavation(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.EXCAVATION), PP.getSkillXpLevel(SkillType.EXCAVATION), PP.getXpToLevel(SkillType.EXCAVATION) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsExcavation1_0"), mcLocale.getString("m.EffectsExcavation1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsExcavation2_0"), mcLocale.getString("m.EffectsExcavation2_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.ExcavationGreenTerraLength", new Object[] { ticks }));
+
+		return true;
+	}
+}

+ 47 - 0
src/com/gmail/nossr50/commands/skills/FishingCommand.java

@@ -0,0 +1,47 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Fishing;
+
+public class FishingCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillFishing") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainFishing") }));
+
+		if (mcPermissions.getInstance().fishing(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.FISHING), PP.getSkillXpLevel(SkillType.FISHING), PP.getXpToLevel(SkillType.FISHING) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing1_0"), mcLocale.getString("m.EffectsFishing1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing2_0"), mcLocale.getString("m.EffectsFishing2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing3_0"), mcLocale.getString("m.EffectsFishing3_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.FishingRank", new Object[] { Fishing.getFishingLootTier(PP) }));
+		player.sendMessage(mcLocale.getString("m.FishingMagicInfo"));
+
+		if (PP.getSkillLevel(SkillType.FISHING) < 150)
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockFishing1") }));
+		else
+			player.sendMessage(mcLocale.getString("m.ShakeInfo", new Object[] { Fishing.getFishingLootTier(PP) }));
+
+		return true;
+	}
+}

+ 63 - 0
src/com/gmail/nossr50/commands/skills/HerbalismCommand.java

@@ -0,0 +1,63 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class HerbalismCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		int bonus = 0;
+		if (PP.getSkillLevel(SkillType.HERBALISM) >= 200)
+			bonus++;
+		if (PP.getSkillLevel(SkillType.HERBALISM) >= 400)
+			bonus++;
+		if (PP.getSkillLevel(SkillType.HERBALISM) >= 600)
+			bonus++;
+
+		int ticks = 2;
+		int x = PP.getSkillLevel(SkillType.HERBALISM);
+		while (x >= 50) {
+			x -= 50;
+			ticks++;
+		}
+
+		float skillvalue = (float) PP.getSkillLevel(SkillType.HERBALISM);
+
+		String percentage = String.valueOf((skillvalue / 1000) * 100);
+		String gpercentage = String.valueOf((skillvalue / 1500) * 100);
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillHerbalism") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainHerbalism") }));
+
+		if (mcPermissions.getInstance().herbalism(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism1_0"), mcLocale.getString("m.EffectsHerbalism1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism2_0"), mcLocale.getString("m.EffectsHerbalism2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism3_0"), mcLocale.getString("m.EffectsHerbalism3_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism5_0"), mcLocale.getString("m.EffectsHerbalism5_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.HerbalismGreenTerraLength", new Object[] { ticks }));
+		player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbChance", new Object[] { gpercentage }));
+		player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbStage", new Object[] { bonus }));
+		player.sendMessage(mcLocale.getString("m.HerbalismDoubleDropChance", new Object[] { percentage }));
+
+		return true;
+	}
+}

+ 48 - 0
src/com/gmail/nossr50/commands/skills/MiningCommand.java

@@ -0,0 +1,48 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class MiningCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		float skillvalue = (float) PP.getSkillLevel(SkillType.MINING);
+		String percentage = String.valueOf((skillvalue / 1000) * 100);
+		int ticks = 2;
+		int x = PP.getSkillLevel(SkillType.MINING);
+		while (x >= 50) {
+			x -= 50;
+			ticks++;
+		}
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillMining") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainMining") }));
+
+		if (mcPermissions.getInstance().mining(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.MINING), PP.getSkillXpLevel(SkillType.MINING), PP.getXpToLevel(SkillType.MINING) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsMining1_0"), mcLocale.getString("m.EffectsMining1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsMining2_0"), mcLocale.getString("m.EffectsMining2_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.MiningDoubleDropChance", new Object[] { percentage }));
+		player.sendMessage(mcLocale.getString("m.MiningSuperBreakerLength", new Object[] { ticks }));
+
+		return true;
+	}
+}

+ 53 - 0
src/com/gmail/nossr50/commands/skills/RepairCommand.java

@@ -0,0 +1,53 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Repair;
+
+public class RepairCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		float skillvalue = (float) PP.getSkillLevel(SkillType.REPAIR);
+		String percentage = String.valueOf((skillvalue / 1000) * 100);
+		String repairmastery = String.valueOf((skillvalue / 500) * 100);
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillRepair") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainRepair") }));
+
+		if (mcPermissions.getInstance().repair(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.REPAIR), PP.getSkillXpLevel(SkillType.REPAIR), PP.getXpToLevel(SkillType.REPAIR) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair1_0"), mcLocale.getString("m.EffectsRepair1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair2_0"), mcLocale.getString("m.EffectsRepair2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair3_0"), mcLocale.getString("m.EffectsRepair3_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair4_0", new Object[] { LoadProperties.repairdiamondlevel }), mcLocale.getString("m.EffectsRepair4_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair5_0"), mcLocale.getString("m.EffectsRepair5_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.RepairRepairMastery", new Object[] { repairmastery }));
+		player.sendMessage(mcLocale.getString("m.RepairSuperRepairChance", new Object[] { percentage }));
+		player.sendMessage(mcLocale.getString("m.ArcaneForgingRank", new Object[] { Repair.getArcaneForgingRank(PP) }));
+		player.sendMessage(mcLocale.getString("m.ArcaneEnchantKeepChance", new Object[] { Repair.getEnchantChance(Repair.getArcaneForgingRank(PP)) }));
+		player.sendMessage(mcLocale.getString("m.ArcaneEnchantDowngradeChance", new Object[] { Repair.getDowngradeChance(Repair.getArcaneForgingRank(PP)) }));
+		player.sendMessage(mcLocale.getString("m.ArcaneForgingMilestones"));
+		player.sendMessage(mcLocale.getString("m.ArcaneForgingMilestones2"));
+
+		return true;
+	}
+}

+ 69 - 0
src/com/gmail/nossr50/commands/skills/SwordsCommand.java

@@ -0,0 +1,69 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class SwordsCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		int bleedrank = 2;
+		String percentage, counterattackpercentage;
+
+		float skillvalue = (float) PP.getSkillLevel(SkillType.SWORDS);
+		if (PP.getSkillLevel(SkillType.SWORDS) < 750)
+			percentage = String.valueOf((skillvalue / 1000) * 100);
+		else
+			percentage = "75";
+
+		if (skillvalue >= 750)
+			bleedrank += 1;
+
+		if (PP.getSkillLevel(SkillType.SWORDS) <= 600)
+			counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
+		else
+			counterattackpercentage = "30";
+
+		int ticks = 2;
+		int x = PP.getSkillLevel(SkillType.SWORDS);
+		while (x >= 50) {
+			x -= 50;
+			ticks++;
+		}
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillSwords") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainSwords") }));
+		
+		if (mcPermissions.getInstance().swords(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.SWORDS), PP.getSkillXpLevel(SkillType.SWORDS), PP.getXpToLevel(SkillType.SWORDS) }));
+		
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords1_0"), mcLocale.getString("m.EffectsSwords1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords2_0"), mcLocale.getString("m.EffectsSwords2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords3_0"), mcLocale.getString("m.EffectsSwords3_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords5_0"), mcLocale.getString("m.EffectsSwords5_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.SwordsCounterAttChance", new Object[] { counterattackpercentage }));
+		player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] { bleedrank }));
+		player.sendMessage(mcLocale.getString("m.SwordsTickNote"));
+		player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] { percentage }));
+		player.sendMessage(mcLocale.getString("m.SwordsSSLength", new Object[] { ticks }));
+
+		return true;
+	}
+}

+ 70 - 0
src/com/gmail/nossr50/commands/skills/TamingCommand.java

@@ -0,0 +1,70 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class TamingCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		float skillvalue = (float) PP.getSkillLevel(SkillType.TAMING);
+		String percentage = String.valueOf((skillvalue / 1000) * 100);
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillTaming") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainTaming") }));
+
+		if (mcPermissions.getInstance().taming(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.TAMING), PP.getSkillXpLevel(SkillType.TAMING), PP.getXpToLevel(SkillType.TAMING) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming1_0"), mcLocale.getString("m.EffectsTaming1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming2_0"), mcLocale.getString("m.EffectsTaming2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming3_0"), mcLocale.getString("m.EffectsTaming3_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming4_0"), mcLocale.getString("m.EffectsTaming4_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming5_0"), mcLocale.getString("m.EffectsTaming5_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming6_0"), mcLocale.getString("m.EffectsTaming6_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming7_0"), mcLocale.getString("m.EffectsTaming7_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTaming7_2", new Object[] { LoadProperties.bonesConsumedByCOTW }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+
+		if (PP.getSkillLevel(SkillType.TAMING) < 100)
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming1") }));
+		else
+			player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming1_0"), mcLocale.getString("m.AbilBonusTaming1_1") }));
+
+		if (PP.getSkillLevel(SkillType.TAMING) < 250)
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming2") }));
+		else
+			player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming2_0"), mcLocale.getString("m.AbilBonusTaming2_1") }));
+
+		if (PP.getSkillLevel(SkillType.TAMING) < 500)
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming3") }));
+		else
+			player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming3_0"), mcLocale.getString("m.AbilBonusTaming3_1") }));
+
+		if (PP.getSkillLevel(SkillType.TAMING) < 750)
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming4") }));
+		else
+			player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming4_0"), mcLocale.getString("m.AbilBonusTaming4_1") }));
+
+		player.sendMessage(mcLocale.getString("m.TamingGoreChance", new Object[] { percentage }));
+
+		return true;
+	}
+}

+ 74 - 0
src/com/gmail/nossr50/commands/skills/UnarmedCommand.java

@@ -0,0 +1,74 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class UnarmedCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		String percentage, arrowpercentage;
+		float skillvalue = (float) PP.getSkillLevel(SkillType.UNARMED);
+
+		if (PP.getSkillLevel(SkillType.UNARMED) < 1000)
+			percentage = String.valueOf((skillvalue / 4000) * 100);
+		else
+			percentage = "25";
+
+		if (PP.getSkillLevel(SkillType.UNARMED) < 1000)
+			arrowpercentage = String.valueOf(((skillvalue / 1000) * 100) / 2);
+		else
+			arrowpercentage = "50";
+
+		int ticks = 2;
+		int x = PP.getSkillLevel(SkillType.UNARMED);
+		while (x >= 50) {
+			x -= 50;
+			ticks++;
+		}
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillUnarmed") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainUnarmed") }));
+
+		if (mcPermissions.getInstance().unarmed(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.UNARMED), PP.getSkillXpLevel(SkillType.UNARMED), PP.getXpToLevel(SkillType.UNARMED) }));
+
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed1_0"), mcLocale.getString("m.EffectsUnarmed1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed2_0"), mcLocale.getString("m.EffectsUnarmed2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed3_0"), mcLocale.getString("m.EffectsUnarmed3_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed4_0"), mcLocale.getString("m.EffectsUnarmed4_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed5_0"), mcLocale.getString("m.EffectsUnarmed5_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		player.sendMessage(mcLocale.getString("m.UnarmedArrowDeflectChance", new Object[] { arrowpercentage }));
+		player.sendMessage(mcLocale.getString("m.UnarmedDisarmChance", new Object[] { percentage }));
+
+		if (PP.getSkillLevel(SkillType.UNARMED) < 250) {
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockUnarmed1") }));
+		} else if (PP.getSkillLevel(SkillType.UNARMED) >= 250 && PP.getSkillLevel(SkillType.UNARMED) < 500) {
+			player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusUnarmed1_0"), mcLocale.getString("m.AbilBonusUnarmed1_1") }));
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockUnarmed2") }));
+		} else {
+			player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusUnarmed2_0"), mcLocale.getString("m.AbilBonusUnarmed2_1") }));
+		}
+
+		player.sendMessage(mcLocale.getString("m.UnarmedBerserkLength", new Object[] { ticks }));
+
+		return true;
+	}
+}

+ 56 - 0
src/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java

@@ -0,0 +1,56 @@
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class WoodcuttingCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+		
+		float skillvalue = (float) PP.getSkillLevel(SkillType.WOODCUTTING);
+		int ticks = 2;
+		int x = PP.getSkillLevel(SkillType.WOODCUTTING);
+		while (x >= 50) {
+			x -= 50;
+			ticks++;
+		}
+		String percentage = String.valueOf((skillvalue / 1000) * 100);
+		
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillWoodCutting") }));
+		player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainWoodCutting") }));
+		
+		if (mcPermissions.getInstance().woodcutting(player))
+			player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.WOODCUTTING), PP.getSkillXpLevel(SkillType.WOODCUTTING), PP.getXpToLevel(SkillType.WOODCUTTING) }));
+		
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting1_0"), mcLocale.getString("m.EffectsWoodCutting1_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting2_0"), mcLocale.getString("m.EffectsWoodCutting2_1") }));
+		player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting3_0"), mcLocale.getString("m.EffectsWoodCutting3_1") }));
+		player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+		
+		if (PP.getSkillLevel(SkillType.WOODCUTTING) < 100)
+			player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockWoodCutting1") }));
+		else
+			player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusWoodCutting1_0"), mcLocale.getString("m.AbilBonusWoodCutting1_1") }));
+		
+		player.sendMessage(mcLocale.getString("m.WoodCuttingDoubleDropChance", new Object[] { percentage }));
+		player.sendMessage(mcLocale.getString("m.WoodCuttingTreeFellerLength", new Object[] { ticks }));
+		
+		return true;
+	}
+}

+ 50 - 0
src/com/gmail/nossr50/commands/spout/MchudCommand.java

@@ -0,0 +1,50 @@
+package com.gmail.nossr50.commands.spout;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.HUDType;
+import com.gmail.nossr50.datatypes.HUDmmo;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.spout.SpoutStuff;
+
+public class MchudCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.spoutEnabled) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+		
+		if(args.length >= 1)
+		{
+			for(HUDType x : HUDType.values())
+			{
+				if(x.toString().toLowerCase().equals(args[0].toLowerCase()))
+				{
+					if(SpoutStuff.playerHUDs.containsKey(player))
+					{
+						SpoutStuff.playerHUDs.get(player).resetHUD();
+						SpoutStuff.playerHUDs.remove(player);
+						PP.setHUDType(x);
+						SpoutStuff.playerHUDs.put(player, new HUDmmo(player));
+					}
+				}
+			}
+		}
+		
+		return true;
+	}
+}

+ 62 - 0
src/com/gmail/nossr50/commands/spout/XplockCommand.java

@@ -0,0 +1,62 @@
+package com.gmail.nossr50.commands.spout;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+import com.gmail.nossr50.spout.SpoutStuff;
+
+public class XplockCommand implements CommandExecutor {
+	@Override
+	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+		if (!LoadProperties.spoutEnabled || !LoadProperties.xpbar || !LoadProperties.xplockEnable) {
+			sender.sendMessage("This command is not enabled.");
+			return true;
+		}
+
+		if (!(sender instanceof Player)) {
+			sender.sendMessage("This command does not support console useage.");
+			return true;
+		}
+
+		Player player = (Player) sender;
+		PlayerProfile PP = Users.getProfile(player);
+
+		if (args.length >= 1 && Skills.isSkill(args[0]) && mcPermissions.permission(player, "mcmmo.skills." + Skills.getSkillType(args[0]).toString().toLowerCase())) {
+			if (PP.getXpBarLocked()) {
+				PP.setSkillLock(Skills.getSkillType(args[0]));
+				player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
+			} else {
+				PP.setSkillLock(Skills.getSkillType(args[0]));
+				PP.toggleXpBarLocked();
+				player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
+			}
+			SpoutStuff.updateXpBar(player);
+		} else if (args.length < 1) {
+			if (PP.getXpBarLocked()) {
+				PP.toggleXpBarLocked();
+				player.sendMessage(mcLocale.getString("Commands.xplock.unlocked"));
+			} else if (PP.getLastGained() != null) {
+				PP.toggleXpBarLocked();
+				PP.setSkillLock(PP.getLastGained());
+				player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
+			}
+		} else if (args.length >= 1 && !Skills.isSkill(args[0])) {
+			player.sendMessage("Commands.xplock.invalid");
+		} else if (args.length >= 2 && Skills.isSkill(args[0]) && !mcPermissions.permission(player, "mcmmo.skills." + Skills.getSkillType(args[0]).toString().toLowerCase())) {
+			player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+			return true;
+		}
+
+		return true;
+	}
+}

+ 14 - 2
src/com/gmail/nossr50/listeners/mcPlayerListener.java

@@ -34,6 +34,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.entity.Wolf;
 import org.bukkit.event.block.Action;
 import org.bukkit.event.player.PlayerChatEvent;
+import org.bukkit.event.player.PlayerCommandPreprocessEvent;
 import org.bukkit.event.player.PlayerFishEvent;
 import org.bukkit.event.player.PlayerFishEvent.State;
 import org.bukkit.event.player.PlayerInteractEvent;
@@ -49,7 +50,7 @@ import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.command.Commands;
+import com.gmail.nossr50.commands.general.XprateCommand;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.spout.SpoutStuff;
 import com.gmail.nossr50.spout.mmoHelper;
@@ -158,7 +159,8 @@ public class mcPlayerListener extends PlayerListener
 			player.sendMessage(mcLocale.getString("mcPlayerListener.MOTD", new Object[] {plugin.getDescription().getVersion(), LoadProperties.mcmmo}));
 			player.sendMessage(mcLocale.getString("mcPlayerListener.WIKI"));
 		}
-		if(Commands.xpevent)
+		//THIS IS VERY BAD WAY TO DO THINGS, NEED BETTER WAY
+		if(XprateCommand.xpevent)
 			player.sendMessage(ChatColor.GOLD+"mcMMO is currently in an XP rate event! XP rate is "+LoadProperties.xpGainMultiplier+"x!");
 	}
 
@@ -331,4 +333,14 @@ public class mcPlayerListener extends PlayerListener
 			}
 		}
 	}
+	
+	public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
+		String message = event.getMessage();
+		if(!message.startsWith("/")) return;
+		String command = message.substring(1).split(" ")[0];
+		if(plugin.aliasMap.containsKey(command)) {
+			event.setCancelled(true);
+			event.getPlayer().chat(message.replaceFirst(command, plugin.aliasMap.get(command)));
+		}
+	}
 }

+ 106 - 7
src/com/gmail/nossr50/mcMMO.java

@@ -18,13 +18,18 @@ package com.gmail.nossr50;
 
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.command.Commands;
+import com.gmail.nossr50.commands.skills.*;
+import com.gmail.nossr50.commands.spout.*;
+import com.gmail.nossr50.commands.mc.*;
+import com.gmail.nossr50.commands.party.*;
+import com.gmail.nossr50.commands.general.*;
 import com.gmail.nossr50.config.*;
 import com.gmail.nossr50.runnables.mcTimer;
 import com.gmail.nossr50.spout.SpoutStuff;
 import com.gmail.nossr50.listeners.mcBlockListener;
 import com.gmail.nossr50.listeners.mcEntityListener;
 import com.gmail.nossr50.listeners.mcPlayerListener;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.skills.*;
 import com.nijikokun.bukkit.Permissions.Permissions;
@@ -40,11 +45,10 @@ import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandSender;
 import org.bukkit.event.Event.Priority;
 import org.bukkit.event.Event;
 import org.bukkit.plugin.PluginDescriptionFile;
@@ -84,6 +88,9 @@ public class mcMMO extends JavaPlugin
 	private Runnable mcMMO_Timer = new mcTimer(this); //BLEED AND REGENERATION
 	//private Timer mcMMO_SpellTimer = new Timer(true);
 
+	//Alias - Command
+	public HashMap<String, String> aliasMap = new HashMap<String, String>();
+	
 	public static Database database = null;
 	public Misc misc = new Misc(this);
 
@@ -142,6 +149,7 @@ public class mcMMO extends JavaPlugin
 		pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this);
 		pm.registerEvent(Event.Type.PLAYER_PICKUP_ITEM, playerListener, Priority.Normal, this);
 		pm.registerEvent(Event.Type.PLAYER_FISH, playerListener, Priority.Normal, this);
+		pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Lowest, this);
 
 		//Block Stuff
 		pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
@@ -169,6 +177,8 @@ public class mcMMO extends JavaPlugin
 		
 		Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, mcMMO_Timer, 0, 20);
 		
+		registerCommands();
+		
 		//Spout Stuff
 		if(LoadProperties.spoutEnabled)
 		{
@@ -257,10 +267,99 @@ public class mcMMO extends JavaPlugin
 		Bukkit.getServer().getScheduler().cancelTasks(this);
 		System.out.println("mcMMO was disabled."); 
 	}
-
-	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) 
-	{
-		return Commands.processCommands(sender, command, label, args);
+	
+	private void registerCommands() {
+		//Register aliases with the aliasmap (used in the playercommandpreprocessevent to ugly alias them to actual commands)
+		//Skills commands
+		aliasMap.put(mcLocale.getString("m.SkillAcrobatics").toLowerCase(), "acrobatics");
+		aliasMap.put(mcLocale.getString("m.SkillArchery").toLowerCase(), "archery");
+		aliasMap.put(mcLocale.getString("m.SkillAxes").toLowerCase(), "axes");
+		aliasMap.put(mcLocale.getString("m.SkillExcavation").toLowerCase(), "excavation");
+		aliasMap.put(mcLocale.getString("m.SkillFishing").toLowerCase(), "fishing");
+		aliasMap.put(mcLocale.getString("m.SkillHerbalism").toLowerCase(), "herbalism");
+		aliasMap.put(mcLocale.getString("m.SkillMining").toLowerCase(), "mining");
+		aliasMap.put(mcLocale.getString("m.SkillRepair").toLowerCase(), "repair");
+		aliasMap.put(mcLocale.getString("m.SkillSwords").toLowerCase(), "swords");
+		aliasMap.put(mcLocale.getString("m.SkillTaming").toLowerCase(), "taming");
+		aliasMap.put(mcLocale.getString("m.SkillUnarmed").toLowerCase(), "unarmed");
+		aliasMap.put(mcLocale.getString("m.SkillWoodCutting").toLowerCase(), "woodcutting");
+		
+		//Mc* commands
+		aliasMap.put(LoadProperties.mcability, "mcability");
+		aliasMap.put(LoadProperties.mcc, "mcc");
+		aliasMap.put(LoadProperties.mcgod, "mcgod");
+		aliasMap.put(LoadProperties.mcmmo, "mcmmo");
+		aliasMap.put(LoadProperties.mcrefresh, "mcrefresh");
+		aliasMap.put(LoadProperties.mctop, "mctop");
+		
+		//Party commands
+		aliasMap.put(LoadProperties.accept, "accept");
+		//aliasMap.put(null, "a");
+		aliasMap.put(LoadProperties.invite, "invite");
+		aliasMap.put(LoadProperties.party, "party");
+		//aliasMap.put(null, "p");
+		aliasMap.put(LoadProperties.ptp, "ptp");
+		
+		//Other commands
+		aliasMap.put(LoadProperties.addxp, "addxp");
+		aliasMap.put(LoadProperties.clearmyspawn, "clearmyspawn");
+		aliasMap.put(LoadProperties.mmoedit, "mmoedit");
+		//aliasMap.put(key, "mmoupdate");
+		aliasMap.put(LoadProperties.myspawn, "myspawn");
+		aliasMap.put(LoadProperties.stats, "stats");
+		aliasMap.put(LoadProperties.whois, "whois");
+		aliasMap.put(LoadProperties.xprate, "xprate");
+		
+		//Spout commands
+		//aliasMap.put(null, "mchud");
+		aliasMap.put(LoadProperties.xplock, "xplock");
+		
+		
+		//Register commands
+		//Skills commands
+		getCommand("acrobatics").setExecutor(new AcrobaticsCommand());
+		getCommand("archery").setExecutor(new ArcheryCommand());
+		getCommand("axes").setExecutor(new AxesCommand());
+		getCommand("excavation").setExecutor(new ExcavationCommand());
+		getCommand("fishing").setExecutor(new FishingCommand());
+		getCommand("herbalism").setExecutor(new HerbalismCommand());
+		getCommand("mining").setExecutor(new MiningCommand());
+		getCommand("repair").setExecutor(new RepairCommand());
+		getCommand("swords").setExecutor(new SwordsCommand());
+		getCommand("taming").setExecutor(new TamingCommand());
+		getCommand("unarmed").setExecutor(new UnarmedCommand());
+		getCommand("woodcutting").setExecutor(new WoodcuttingCommand());
+		
+		//Mc* commands
+		getCommand("mcability").setExecutor(new McabilityCommand());
+		getCommand("mcc").setExecutor(new MccCommand());
+		getCommand("mcgod").setExecutor(new McgodCommand());
+		getCommand("mcmmo").setExecutor(new McmmoCommand());
+		getCommand("mcrefresh").setExecutor(new McrefreshCommand(this));
+		getCommand("mctop").setExecutor(new MctopCommand());
+		
+		//Party commands
+		getCommand("accept").setExecutor(new AcceptCommand());
+		getCommand("a").setExecutor(new ACommand());
+		getCommand("invite").setExecutor(new InviteCommand(this));
+		getCommand("party").setExecutor(new PartyCommand());
+		getCommand("p").setExecutor(new PCommand());
+		getCommand("ptp").setExecutor(new PtpCommand(this));
+		
+		//Other commands
+		getCommand("addxp").setExecutor(new AddxpCommand(this));
+		getCommand("clearmyspawn").setExecutor(new ClearmyspawnCommand());
+		getCommand("mmoedit").setExecutor(new MmoeditCommand(this));
+		getCommand("mmoupdate").setExecutor(new MmoupdateCommand());
+		getCommand("myspawn").setExecutor(new MyspawnCommand());
+		getCommand("stats").setExecutor(new StatsCommand());
+		getCommand("whois").setExecutor(new WhoisCommand(this));
+		getCommand("xprate").setExecutor(new XprateCommand());
+		
+		//Spout commands
+		getCommand("mchud").setExecutor(new MchudCommand());
+		getCommand("xplock").setExecutor(new XplockCommand());
+		
 	}
 
 	/*