Browse Source

Merge pull request #180 from NuclearW/pullme

Move all commands into own classes
nossr50 13 years ago
parent
commit
7e200fd6a3
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());
+		
 	}
 
 	/*