Răsfoiți Sursa

A WIP of 1.0.35 (Massive changes to the code)

nossr50 14 ani în urmă
părinte
comite
daf139f560
36 a modificat fișierele cu 5120 adăugiri și 1468 ștergeri
  1. 14 0
      mcMMO/Changelog.txt
  2. 27 113
      mcMMO/com/gmail/nossr50/Combat.java
  3. 25 13
      mcMMO/com/gmail/nossr50/Item.java
  4. 10 7
      mcMMO/com/gmail/nossr50/Leaderboard.java
  5. 3 2
      mcMMO/com/gmail/nossr50/Users.java
  6. 20 24
      mcMMO/com/gmail/nossr50/config/LoadProperties.java
  7. 76 0
      mcMMO/com/gmail/nossr50/datatypes/Mob.java
  8. 20 10
      mcMMO/com/gmail/nossr50/datatypes/PlayerProfile.java
  9. 332 0
      mcMMO/com/gmail/nossr50/listeners/mcBlockListener.java
  10. 219 0
      mcMMO/com/gmail/nossr50/listeners/mcEntityListener.java
  11. 241 0
      mcMMO/com/gmail/nossr50/listeners/mcPlayerListener.java
  12. 321 0
      mcMMO/com/gmail/nossr50/locale/locale_de.properties
  13. 323 0
      mcMMO/com/gmail/nossr50/locale/locale_en_us.properties
  14. 300 0
      mcMMO/com/gmail/nossr50/locale/locale_fi.properties
  15. 321 0
      mcMMO/com/gmail/nossr50/locale/locale_fr.properties
  16. 329 0
      mcMMO/com/gmail/nossr50/locale/locale_nl.properties
  17. 323 0
      mcMMO/com/gmail/nossr50/locale/locale_pl.properties
  18. 74 0
      mcMMO/com/gmail/nossr50/locale/mcLocale.java
  19. 461 926
      mcMMO/com/gmail/nossr50/m.java
  20. 1374 227
      mcMMO/com/gmail/nossr50/mcMMO.java
  21. 16 7
      mcMMO/com/gmail/nossr50/mcPermissions.java
  22. 0 11
      mcMMO/com/gmail/nossr50/mcTimer.java
  23. 35 19
      mcMMO/com/gmail/nossr50/party/Party.java
  24. 95 1
      mcMMO/com/gmail/nossr50/skills/Archery.java
  25. 6 8
      mcMMO/com/gmail/nossr50/skills/Axes.java
  26. 3 3
      mcMMO/com/gmail/nossr50/skills/Excavation.java
  27. 3 3
      mcMMO/com/gmail/nossr50/skills/Herbalism.java
  28. 3 3
      mcMMO/com/gmail/nossr50/skills/Mining.java
  29. 14 13
      mcMMO/com/gmail/nossr50/skills/Repair.java
  30. 46 46
      mcMMO/com/gmail/nossr50/skills/Skills.java
  31. 5 5
      mcMMO/com/gmail/nossr50/skills/Sorcery.java
  32. 5 15
      mcMMO/com/gmail/nossr50/skills/Swords.java
  33. 2 1
      mcMMO/com/gmail/nossr50/skills/Taming.java
  34. 5 5
      mcMMO/com/gmail/nossr50/skills/Unarmed.java
  35. 3 3
      mcMMO/com/gmail/nossr50/skills/WoodCutting.java
  36. 66 3
      mcMMO/plugin.yml

+ 14 - 0
mcMMO/Changelog.txt

@@ -1,5 +1,19 @@
 Changelog:
 #Versions without changelogs probably had very small misc fixes, like tweaks to the source code
+Version 1.0.35
+Fixed bug with randomly receiving Taming XP
+mcmmo.users file moved into /plugins/mcMMO/FlatFileStuff/
+Leaderboard files now moved into /plugins/mcMMO/FlatFileStuff/Leaderboards
+Locale files now have the prefix locale_ instead of messages_
+Locale files are now located inside com/gmail/nossr50/locale/ instead of com/gmail/nossr50/
+Updated the code that handles permissions (this may mean 3.1.6 will finally play well!)
+Some more source code organization
+Fixed warnings for compiler
+Removed dependencies on CraftBukkit
+Registered commands to OnCommand
+Removed performance debugging
+Removed some useless settings from the config file
+
 Version 1.0.34
 Fixed the PVP setting determining whether or not you would hurt yourself from AoE Abilities
 Added Dutch (nl) language support

+ 27 - 113
mcMMO/com/gmail/nossr50/Combat.java

@@ -1,6 +1,5 @@
 package com.gmail.nossr50;
 
-import org.bukkit.Location;
 import org.bukkit.World;
 import org.bukkit.entity.*;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -11,15 +10,18 @@ import org.bukkit.plugin.Plugin;
 
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.skills.Acrobatics;
+import com.gmail.nossr50.skills.Archery;
 import com.gmail.nossr50.skills.Axes;
 import com.gmail.nossr50.skills.Skills;
 import com.gmail.nossr50.skills.Swords;
 import com.gmail.nossr50.skills.Taming;
 import com.gmail.nossr50.skills.Unarmed;
 
-public class Combat {
+public class Combat 
+{
 	public static void combatChecks(EntityDamageEvent event, mcMMO pluginx)
 	{
 		if(event.isCancelled() || event.getDamage() == 0)
@@ -28,36 +30,7 @@ public class Combat {
 		 * CHANGE DAMAGE BASED ON DIFFICULTY
 		 */
 		if(event instanceof EntityDamageByEntityEvent)
-		{
-			EntityDamageByEntityEvent eventx = (EntityDamageByEntityEvent) event;
-			/*
-			 * MOB DIFFICULTY STUFF
-			 */
-			
-			/*
-			if(eventx.getDamager() instanceof Monster)
-			{
-				Integer theMob = eventx.getDamager().getEntityId();
-				//System.out.println("FIRST STAGE");
-				if(pluginx.mob.mobDiff.containsKey(theMob))
-				{
-					//System.out.println("STAGE TWO");
-					if(eventx.getEntity() instanceof Player)
-					{
-						Player player = (Player) eventx.getEntity();
-						player.sendMessage("Mob Difficulty: "+((int) pluginx.mob.mobDiff.get(theMob)+1));
-						//System.out.println("STAGE THREE");
-						
-						//SETUP DMG
-						event.setDamage((pluginx.mob.mobDiff.get(theMob)+1) * event.getDamage());
-					}
-				} else
-				{
-					pluginx.mob.assignDifficulty(eventx.getDamager());
-				}
-			}
-			*/
-			
+		{	
 			/*
 			 * OFFENSIVE CHECKS FOR PLAYERS VERSUS ENTITIES
 			 */
@@ -177,14 +150,14 @@ public class Combat {
 		      				event.setCancelled(true);
 		      				if(theWolf.isTamed())
 		      				{
-		      				attacker.sendMessage(Messages.getString("Combat.BeastLore")+" "+
-		      						Messages.getString("Combat.BeastLoreOwner", new Object[] {Taming.getOwnerName(theWolf)})+" "+
-		      						Messages.getString("Combat.BeastLoreHealthWolfTamed", new Object[] {theWolf.getHealth()}));
+		      				attacker.sendMessage(mcLocale.getString("Combat.BeastLore")+" "+
+		      						mcLocale.getString("Combat.BeastLoreOwner", new Object[] {Taming.getOwnerName(theWolf)})+" "+
+		      						mcLocale.getString("Combat.BeastLoreHealthWolfTamed", new Object[] {theWolf.getHealth()}));
 		      				} 
 		      				else
 		      				{
-		      					attacker.sendMessage(Messages.getString("Combat.BeastLore")+" "+
-		      							Messages.getString("Combat.BeastLoreHealthWolf", new Object[] {theWolf.getHealth()}));
+		      					attacker.sendMessage(mcLocale.getString("Combat.BeastLore")+" "+
+		      							mcLocale.getString("Combat.BeastLoreHealthWolf", new Object[] {theWolf.getHealth()}));
 		      				}
 		      			}
 		      		}
@@ -199,7 +172,7 @@ public class Combat {
 		{
 			EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
 			Wolf theWolf = (Wolf) eventb.getDamager();
-			if(Taming.ownerOnline(theWolf, pluginx))
+			if(theWolf.isTamed() && Taming.ownerOnline(theWolf, pluginx))
 			{
 				if(Taming.getOwner(theWolf, pluginx) == null)
 					return;
@@ -222,13 +195,13 @@ public class Combat {
 						if(event.getEntity() instanceof Player)
 						{
 							Player target = (Player)event.getEntity();
-							target.sendMessage(Messages.getString("Combat.StruckByGore")); //$NON-NLS-1$
+							target.sendMessage(mcLocale.getString("Combat.StruckByGore")); //$NON-NLS-1$
 							Users.getProfile(target).setBleedTicks(2);
 						}
 						else
 							pluginx.misc.addToBleedQue((LivingEntity) event.getEntity());
 						
-						master.sendMessage(Messages.getString("Combat.Gore")); //$NON-NLS-1$
+						master.sendMessage(mcLocale.getString("Combat.Gore")); //$NON-NLS-1$
 					}
 					if(!event.getEntity().isDead() && !pluginx.misc.mobSpawnerList.contains(event.getEntity()))
 					{
@@ -283,7 +256,7 @@ public class Combat {
 		{
 			Wolf theWolf = (Wolf) event.getEntity();
 			
-			if(Taming.ownerOnline(theWolf, pluginx))
+			if(theWolf.isTamed() && Taming.ownerOnline(theWolf, pluginx))
 			{
 				if(Taming.getOwner(theWolf, pluginx) == null)
 					return;
@@ -331,7 +304,7 @@ public class Combat {
     	Entity x = event.getEntity();
     	Projectile projectile = event.getProjectile();
     	if(projectile.toString().equals("CraftArrow") && x instanceof Player)
-    	{ //$NON-NLS-1$
+    	{
     		Player defender = (Player)x;
     		PlayerProfile PPd = Users.getProfile(defender);
     		if(PPd == null)
@@ -343,13 +316,13 @@ public class Combat {
 	    			if(Math.random() * 1000 <= 500)
 	    			{
 	    				event.setCancelled(true);
-	    				defender.sendMessage(Messages.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
+	    				defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
 	    				return;
 	    			}
 	    		} else if(defender != null && Math.random() * 1000 <= (PPd.getSkill("unarmed") / 2))
 	    		{
 	    			event.setCancelled(true);
-	    			defender.sendMessage(Messages.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
+	    			defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
 	    			return;
 	    		}
     		}
@@ -362,29 +335,8 @@ public class Combat {
     		Player attacker = (Player)y;
     		PlayerProfile PPa = Users.getProfile(attacker);
     		if(projectile.toString().equals("CraftArrow") && mcPermissions.getInstance().archery(attacker))
-    		{ //$NON-NLS-1$
-    			if(!pluginx.misc.arrowTracker.containsKey(x) && event.getDamage() > 0)
-    			{
-    				pluginx.misc.arrowTracker.put(x, 0);
-    				if(attacker != null)
-    				{
-    					if(Math.random() * 1000 <= PPa.getSkill("archery"))
-    					{
-    						pluginx.misc.arrowTracker.put(x, 1);
-    					}
-    				}
-    			} else 
-    			{
-    				if(event.getDamage() > 0)
-    				{
-    					if(attacker != null){
-        					if(Math.random() * 1000 <= PPa.getSkill("archery"))
-        					{
-        						pluginx.misc.arrowTracker.put(x, 1);
-        					}
-        				}
-    				}
-    			}
+    		{
+    			Archery.trackArrows(pluginx, x, event, attacker);
     			/*
     			 * DAMAGE MODIFIER
     			 */
@@ -402,32 +354,7 @@ public class Combat {
     			/*
     			 * IGNITION
     			 */
-    			if(Math.random() * 100 >= 75){
-    				
-    				int ignition = 20;	
-    				if(PPa.getSkill("archery") >= 200)
-    					ignition+=20;
-    				if(PPa.getSkill("archery") >= 400)
-    					ignition+=20;
-    				if(PPa.getSkill("archery") >= 600)
-    					ignition+=20;
-    				if(PPa.getSkill("archery") >= 800)
-    					ignition+=20;
-    				if(PPa.getSkill("archery") >= 1000)
-    					ignition+=20;
-    				
-        			if(x instanceof Player){
-        				Player Defender = (Player)x;
-        				if(!Party.getInstance().inSameParty(attacker, Defender)){
-        					event.getEntity().setFireTicks(ignition);
-        					attacker.sendMessage(Messages.getString("Combat.Ignition")); //$NON-NLS-1$
-        					Defender.sendMessage(Messages.getString("Combat.BurningArrowHit")); //$NON-NLS-1$
-        				}
-        			} else {
-        			event.getEntity().setFireTicks(ignition);
-        			attacker.sendMessage(Messages.getString("Combat.Ignition")); //$NON-NLS-1$
-        			}
-        		}
+    			Archery.ignitionCheck(x, event, attacker);
     		/*
     		 * Defender is Monster
     		 */
@@ -457,8 +384,10 @@ public class Combat {
     			/*
     			 * Stuff for the daze proc
     			 */
-    	    		if(PPa.inParty() && PPd.inParty()){
-    					if(Party.getInstance().inSameParty(defender, attacker)){
+    	    		if(PPa.inParty() && PPd.inParty())
+    	    		{
+    					if(Party.getInstance().inSameParty(defender, attacker))
+    					{
     						event.setCancelled(true);
     						return;
     					}
@@ -467,29 +396,14 @@ public class Combat {
     	    		 * PVP XP
     	    		 */
     	    		if(LoadProperties.pvpxp && !Party.getInstance().inSameParty(attacker, defender) 
-    	    				&& ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis()){
+    	    				&& ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis())
+    	    		{
     	    			PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
     	    		}
     				/*
     				 * DAZE PROC
     				 */
-    	    		Location loc = defender.getLocation();
-    				if(Math.random() * 10 > 5){
-					loc.setPitch(90);
-					} else {
-						loc.setPitch(-90);
-					}
-    				if(PPa.getSkill("archery") >= 1000){
-    	    			if(Math.random() * 1000 <= 500){
-    	    				defender.teleport(loc);
-    	    				defender.sendMessage(Messages.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
-    	    				attacker.sendMessage(Messages.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
-    	    			}
-    	    		} else if(Math.random() * 2000 <= PPa.getSkill("archery")){
-    	    			defender.teleport(loc);
-	    				defender.sendMessage(Messages.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
-	    				attacker.sendMessage(Messages.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
-    	    		}
+    	    		Archery.dazeCheck(defender, attacker);
     			}
     		}
     		Skills.XpCheck(attacker);

+ 25 - 13
mcMMO/com/gmail/nossr50/Item.java

@@ -7,6 +7,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 import com.gmail.nossr50.config.*;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.skills.*;
 
 import com.gmail.nossr50.datatypes.PlayerProfile;
@@ -20,18 +21,24 @@ public class Item {
 			chimaerawing(player, plugin);
 		}
 	}
-	public static void chimaerawing(Player player, Plugin plugin){
+	
+	@SuppressWarnings("deprecation")
+	public static void chimaerawing(Player player, Plugin plugin)
+	{
 		PlayerProfile PP = Users.getProfile(player);
 		ItemStack is = player.getItemInHand();
 		Block block = player.getLocation().getBlock();
-		if(mcPermissions.getInstance().chimaeraWing(player) && is.getTypeId() == 288){
-    		if(Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing){
+		if(mcPermissions.getInstance().chimaeraWing(player) && is.getTypeId() == 288)
+		{
+    		if(Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing)
+    		{
     			Block derp = player.getLocation().getBlock();
     			int y = derp.getY();
     			ItemStack[] inventory = player.getInventory().getContents();
     	    	for(ItemStack x : inventory){
     	    		if(x != null && x.getTypeId() == 288){
-    	    			if(x.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing + 1){
+    	    			if(x.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing + 1)
+    	    			{
     	    				x.setAmount(x.getAmount() - LoadProperties.feathersConsumedByChimaeraWing);
     	    				player.getInventory().setContents(inventory);
         	    			player.updateInventory();
@@ -45,17 +52,21 @@ public class Item {
     	    			}
     	    		}
     	    	}
-    			while(y < 127){
+    			while(y < 127)
+    			{
     				y++;
-    				if(player != null){
-    					if(player.getLocation().getWorld().getBlockAt(block.getX(), y, block.getZ()).getType() != Material.AIR){
-	    					player.sendMessage(Messages.getString("Item.ChimaeraWingFail")); //$NON-NLS-1$
+    				if(player != null)
+    				{
+    					if(player.getLocation().getWorld().getBlockAt(block.getX(), y, block.getZ()).getType() != Material.AIR)
+    					{
+	    					player.sendMessage(mcLocale.getString("Item.ChimaeraWingFail")); //$NON-NLS-1$
 	    					player.teleport(player.getLocation().getWorld().getBlockAt(block.getX(), (y - 1), block.getZ()).getLocation());
 	    					return;
     					}
     				}
     			}
-    			if(PP.getMySpawn(player) != null){
+    			if(PP.getMySpawn(player) != null)
+    			{
     				Location mySpawn = PP.getMySpawn(player);
     				if(mySpawn != null && plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)) != null)
     					mySpawn.setWorld(plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)));
@@ -66,11 +77,12 @@ public class Item {
     			} else {
     				player.teleport(player.getWorld().getSpawnLocation());
     			}
-    			player.sendMessage(Messages.getString("Item.ChimaeraWingPass")); //$NON-NLS-1$
-    		} else if (!Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= 10) {
-    			player.sendMessage(Messages.getString("Item.InjuredWait", new Object[] {Skills.calculateTimeLeft(player, PP.getRecentlyHurt(), 60)})); //$NON-NLS-1$
+    			player.sendMessage(mcLocale.getString("Item.ChimaeraWingPass")); //$NON-NLS-1$
+    		} else if (!Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= 10) 
+    		{
+    			player.sendMessage(mcLocale.getString("Item.InjuredWait", new Object[] {Skills.calculateTimeLeft(player, PP.getRecentlyHurt(), 60)})); //$NON-NLS-1$
     		} else if (is.getTypeId() == 288 && is.getAmount() <= 9){
-    			player.sendMessage(Messages.getString("Item.NeedFeathers")); //$NON-NLS-1$
+    			player.sendMessage(mcLocale.getString("Item.NeedFeathers")); //$NON-NLS-1$
     		}
     	}
 	}

+ 10 - 7
mcMMO/com/gmail/nossr50/Leaderboard.java

@@ -118,7 +118,7 @@ public class Leaderboard {
 	}
 	public static void leaderWrite(PlayerStat[] ps, String statName)
 	{
-		String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
+		String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
 		//CHECK IF THE FILE EXISTS
 		File theDir = new File(theLocation);
 		if(!theDir.exists()){
@@ -170,7 +170,7 @@ public class Leaderboard {
 	}
 	
 	public static String[] retrieveInfo(String statName, int pagenumber){
-		String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
+		String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
 		try {
         	FileReader file = new FileReader(theLocation);
         	BufferedReader in = new BufferedReader(file);
@@ -199,7 +199,7 @@ public class Leaderboard {
 	public static void updateLeaderboard(PlayerStat ps, String statName){
 		if(LoadProperties.useMySQL)
 			return;
-		String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
+		String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
 		try {
         	//Open the file
         	FileReader file = new FileReader(theLocation);
@@ -237,11 +237,14 @@ public class Leaderboard {
                 log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$ //$NON-NLS-2$
         }
 	}
-	public static boolean isInt(String string){
-		try {
-		    int x = Integer.parseInt(string);
+	public static boolean isInt(String string)
+	{
+		try 
+		{
+		    Integer.parseInt(string);
 		}
-		catch(NumberFormatException nFE) {
+		catch(NumberFormatException nFE) 
+		{
 		    return false;
 		}
 		return true;

+ 3 - 2
mcMMO/com/gmail/nossr50/Users.java

@@ -13,7 +13,7 @@ import com.gmail.nossr50.datatypes.PlayerProfile;
 public class Users {
     private static volatile Users instance;
     protected static final Logger log = Logger.getLogger("Minecraft");
-    String location = "plugins/mcMMO/mcmmo.users";
+    String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users";
     
     //public static ArrayList<PlayerProfile> players;
     public static HashMap<Player, PlayerProfile> players = new HashMap<Player, PlayerProfile>();
@@ -65,7 +65,8 @@ public class Users {
     }
 
 	
-    public static void addUser(Player player){
+    public static void addUser(Player player)
+    {
     	players.put(player, new PlayerProfile(player));
     }
     public static void clearUsers()

+ 20 - 24
mcMMO/com/gmail/nossr50/config/LoadProperties.java

@@ -4,13 +4,11 @@ import java.io.File;
 import java.util.List;
 import org.bukkit.util.config.Configuration;
 
-import com.gmail.nossr50.mcMMO;
-
-public class LoadProperties {
-	public static Boolean xpGainsMobSpawners=false, print_reports = false, myspawnEnable = true, mccEnable = true, mcmmoEnable = true, partyEnable = true, inviteEnable = true, acceptEnable = true, whoisEnable = true, statsEnable = true, addxpEnable = true, ptpEnable = true, mmoeditEnable = true, clearmyspawnEnable = true, mcgodEnable = true, mcabilityEnable = true, mctopEnable = true, mcrefreshEnable = true, enableMotd, enableMySpawn, enableRegen, enableCobbleToMossy, useMySQL, cocoabeans, archeryFireRateLimit, mushrooms, toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, eggs, apples, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages;
+public class LoadProperties 
+{
+	public static Boolean xpGainsMobSpawners=false, myspawnEnable = true, mccEnable = true, mcmmoEnable = true, partyEnable = true, inviteEnable = true, acceptEnable = true, whoisEnable = true, statsEnable = true, addxpEnable = true, ptpEnable = true, mmoeditEnable = true, clearmyspawnEnable = true, mcgodEnable = true, mcabilityEnable = true, mctopEnable = true, mcrefreshEnable = true, enableMotd, enableMySpawn, enableRegen, enableCobbleToMossy, useMySQL, cocoabeans, archeryFireRateLimit, mushrooms, toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, eggs, apples, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages;
 	public static String MySQLtablePrefix, MySQLuserName, MySQLserverName, MySQLdbName, MySQLdbPass, mctop, addxp, mcability, mcmmo, mcc, mcrefresh, mcgod, stats, mmoedit, ptp, party, myspawn, whois, invite, accept, clearmyspawn, nWood, nStone, nIron, nGold, nDiamond, locale;
 	public static int msandstone, mcocoa = 10, water_thunder = 75, cure_self = 5, cure_other = 5, mbones, msulphur, mslowsand, mmushroom2, mglowstone2, mmusic, mdiamond2, mbase, mapple, meggs, mcake, mpine, mbirch, mspruce, mcactus, mmushroom, mflower, msugar, mpumpkin, mwheat, mgold, mdiamond, miron, mredstone, mlapus, mobsidian, mnetherrack, mglowstone, mcoal, mstone, MySQLport, xpGainMultiplier, superBreakerCooldown = 240, greenTerraCooldown = 240, gigaDrillBreakerCooldown = 240, treeFellerCooldown = 240, berserkCooldown = 240, serratedStrikeCooldown = 240, skullSplitterCooldown = 240, abilityDurabilityLoss, feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, tamingxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, sorceryxpmodifier = 2, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier, rWood, rStone, rIron, rGold, rDiamond;
-	private static mcMMO plugin;
 	
 	public String directory = "plugins/mcMMO/"; 
 	File file = new File(directory + File.separator + "config.yml");
@@ -52,16 +50,19 @@ public class LoadProperties {
 	    	return config.getInt(root, 0);
 	    }
 
-	    private Double readDouble(String root)
+	    @SuppressWarnings("unused")
+		private Double readDouble(String root)
 	    {
 	        Configuration config = load();
 	        return config.getDouble(root, 0);
 	    }
-	    private List<String> readStringList(String root)
+	    @SuppressWarnings("unused")
+		private List<String> readStringList(String root)
 	    {
 	        Configuration config = load();
 	        return config.getKeys(root);
 	    }
+	    
 	    private String readString(String root)
 	    {
 	        Configuration config = load();
@@ -80,8 +81,9 @@ public class LoadProperties {
 	        }
 	        return null;
 	    }
-	    private void addDefaults(){
-	        plugin.log.info("Generating Config File...");  	
+	    private void addDefaults()
+	    {
+	        System.out.println("Generating Config File...");  	
 	    	
 	        //Put in defaults
 	        write("MySQL.Enabled", false);
@@ -150,9 +152,9 @@ public class LoadProperties {
 	    	write("XP.Excavation.Cake", 300);
 	    	write("XP.Excavation.Cocoa_Beans", 10);
 	    	
-	    	write("Sorcery.Spells.Water.Thunder", 75);
-	    	write("Sorcery.Spells.Curative.Cure_Self.Mana_Cost", 5);
-	    	write("Sorcery.Spells.Curative.Cure_Other.Mana_Cost", 5);
+	    	//write("Sorcery.Spells.Water.Thunder", 75);
+	    	//write("Sorcery.Spells.Curative.Cure_Self.Mana_Cost", 5);
+	    	//write("Sorcery.Spells.Curative.Cure_Other.Mana_Cost", 5);
 	    	
 	    	write("Excavation.Drops.Cocoa_Beans", true);
 	    	write("Excavation.Drops.Mushrooms", true);
@@ -229,21 +231,15 @@ public class LoadProperties {
 	    	
 	     loadkeys();
 	    }
-	    private void loadkeys(){
-	        plugin.log.info("Loading Config File...");
-	        
-	        System.out.println("print_reports = "+readBoolean("General.Performance.Print_Reports"));
+	    private void loadkeys()
+	    {
+	        System.out.println("Loading Config File...");
 	        
 	        xpGainsMobSpawners = readBoolean("XP.Gains.Mobspawners.Enabled");
 	        
-	        if(readBoolean("General.Performance.Print_Reports") != null)
-	        	print_reports = readBoolean("General.Performance.Print_Reports");
-	        else
-	        	print_reports = false;
-	        
-	        cure_self = readInteger("Sorcery.Spells.Curative.Cure_Self.Mana_Cost");
-	        cure_other = readInteger("Sorcery.Spells.Curative.Cure_Other.Mana_Cost");
-	        water_thunder = readInteger("Sorcery.Spells.Water.Thunder");
+	        //cure_self = readInteger("Sorcery.Spells.Curative.Cure_Self.Mana_Cost");
+	        //cure_other = readInteger("Sorcery.Spells.Curative.Cure_Other.Mana_Cost");
+	        //water_thunder = readInteger("Sorcery.Spells.Water.Thunder");
 	        
 	        msulphur = readInteger("XP.Excavation.Sulphur");
 	        mbones = readInteger("XP.Excavation.Bones");

+ 76 - 0
mcMMO/com/gmail/nossr50/datatypes/Mob.java

@@ -0,0 +1,76 @@
+package com.gmail.nossr50.datatypes;
+
+import java.util.HashMap;
+
+import org.bukkit.entity.*;
+
+public class Mob
+{
+	public HashMap<Integer, Short> mobDiff = new HashMap<Integer, Short>();
+	public HashMap<Integer, Boolean> isAggressive = new HashMap<Integer, Boolean>();
+	
+	public void assignDifficulty(Entity entity)
+	{
+		short x = 0;
+		
+		if(entity.getLocation().getY() >= 45)
+		{
+			//LEVEL 2
+			if(Math.random() * 100 > 50)
+			{
+				x = 0;
+			}
+			//LEVEL 3
+			else
+			{
+				x = 1;
+			}
+		}
+		else
+		{
+			double y = Math.random() * 100;
+			//HIGH CHANCE FOR 5's
+			if(entity.getLocation().getY() < 20)
+			{
+				//ASSIGN INTO THE 5 RANKS
+				if(y >= 0 && y < 50)
+					x = 0;
+				if(y >= 50 && y < 80)
+					x = 1;
+				if(y >= 80 && y < 95)
+					x = 2;
+				if(y >= 95 && y < 98)
+					x = 3;
+				if(y >= 98 && y <= 100)
+					x = 4;
+			}
+			//HIGH CHANCE FOR 4's
+			else
+			{
+				//ASSIGN INTO THE 5 RANKS
+				if(y >= 0 && y < 50)
+					x = 0;
+				if(y >= 50 && y < 74)
+					x = 1;
+				if(y >= 74 && y < 89)
+					x = 2;
+				if(y >= 89 && y < 99)
+					x = 3;
+				if(y >= 99 && y <= 100)
+					x = 4;
+			}
+				if(x > 1)
+				{
+					isAggressive.put(entity.getEntityId(), false);
+				}
+				
+		}
+		
+		if(!mobDiff.containsKey(entity.getEntityId()))
+		{
+			mobDiff.put(entity.getEntityId(), x);
+			//System.out.println("Mob "+entity.getEntityId()+" (DIFFICULTY) "+
+					//(x +1)+"(DEPTH) "+entity.getLocation().getY());
+		}
+	}
+}

+ 20 - 10
mcMMO/com/gmail/nossr50/datatypes/PlayerProfile.java

@@ -994,29 +994,36 @@ public class PlayerProfile
 		removeXP("acrobatics", newXP);
 	}
 
-	public boolean isInt(String string){
+	public boolean isInt(String string)
+	{
 		try {
-		    int x = Integer.parseInt(string);
+		    Integer.parseInt(string);
 		}
 		catch(NumberFormatException nFE) {
 		    return false;
 		}
 		return true;
 	}
-	public boolean isDouble(String string){
-		try {
-		    Double x = Double.valueOf(string);
+	
+	public boolean isDouble(String string)
+	{
+		try 
+		{
+		    Double.valueOf(string);
 		}
-		catch(NumberFormatException nFE) {
+		catch(NumberFormatException nFE) 
+		{
 		    return false;
 		}
 		return true;
 	}
-	public void acceptInvite(){
+	public void acceptInvite()
+	{
 		party = invite;
 		invite = "";
 	}
-	public void modifyInvite(String invitename){
+	public void modifyInvite(String invitename)
+	{
 		invite = invitename;
 	}
 	public String getInvite() { return invite; }
@@ -1054,7 +1061,8 @@ public class PlayerProfile
 		}
 		save();
 	}
-	public Integer getXpToLevel(String skillname){
+	public Integer getXpToLevel(String skillname)
+	{
 		if(skillname.equals("sorcery")){
 			return ((stats.get("sorcery") + 50) * LoadProperties.sorceryxpmodifier) * LoadProperties.globalxpmodifier;
 		}
@@ -1111,13 +1119,15 @@ public class PlayerProfile
     	save();
     }
     //Retrieve whether or not the player is in a party
-    public boolean inParty() {
+    public boolean inParty() 
+    {
     	if(party != null && !party.equals("") && !party.equals("null")){
     		return true;
     	} else {
     		return false;
     	}
     }
+    
     //Retrieve whether or not the player has an invite
     public boolean hasPartyInvite() {
     	if(invite != null && !invite.equals("") && !invite.equals("null")){

+ 332 - 0
mcMMO/com/gmail/nossr50/listeners/mcBlockListener.java

@@ -0,0 +1,332 @@
+package com.gmail.nossr50.listeners;
+
+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 org.bukkit.Material;
+import org.bukkit.Statistic;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.event.block.BlockDamageEvent;
+import org.bukkit.event.block.BlockFromToEvent;
+import org.bukkit.event.block.BlockListener;
+import org.bukkit.event.block.BlockPlaceEvent;
+import org.bukkit.inventory.ItemStack;
+
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.*;
+import com.gmail.nossr50.datatypes.FakeBlockBreakEvent;
+
+
+public class mcBlockListener extends BlockListener {
+    private final mcMMO plugin;
+
+    public mcBlockListener(final mcMMO plugin) {
+        this.plugin = plugin;
+    }
+    
+    public void onBlockPlace(BlockPlaceEvent event) 
+    {
+    	
+    	Block block;
+    	Player player = event.getPlayer();
+    	if (event.getBlock() != null && event.getBlockReplacedState() != null && event.getBlockReplacedState().getTypeId() == 78) 
+    	{
+    			block = event.getBlockAgainst();
+    		}
+    		else 
+    		{
+    			block = event.getBlock();
+    		}
+    	if(player != null && m.shouldBeWatched(block))
+    	{
+    		if(block.getTypeId() != 17 && block.getTypeId() != 39 && block.getTypeId() != 40 && block.getTypeId() != 91 && block.getTypeId() != 86)
+    			block.setData((byte) 5); //Change the byte
+    		if(block.getTypeId() == 17 || block.getTypeId() == 39 || block.getTypeId() == 40 || block.getTypeId() == 91 || block.getTypeId() == 86)
+    			plugin.misc.blockWatchList.add(block);
+    	}
+    	if(block.getTypeId() == 42 && LoadProperties.anvilmessages)
+    		event.getPlayer().sendMessage(mcLocale.getString("mcBlockListener.PlacedAnvil")); //$NON-NLS-1$
+    }
+    
+    public void onBlockBreak(BlockBreakEvent event) 
+    {
+    	
+    	
+    	Player player = event.getPlayer();
+    	PlayerProfile PP = Users.getProfile(player);
+    	Block block = event.getBlock();
+    	ItemStack inhand = player.getItemInHand();
+    	if(event.isCancelled())
+    		return;
+    	if (event instanceof FakeBlockBreakEvent) 
+    		return;
+    	
+   		/*
+   		 * HERBALISM
+   		 */
+   		if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalismAbility(player) && block.getTypeId() == 59 && block.getData() == (byte) 0x07)
+   		{
+   			Herbalism.greenTerraCheck(player, block, plugin);
+   		}
+   		//Wheat && Triple drops
+   		if(PP.getGreenTerraMode() && Herbalism.canBeGreenTerra(block))
+   		{
+   			Herbalism.herbalismProcCheck(block, player, event, plugin);
+   			Herbalism.greenTerraWheat(player, block, event, plugin);
+   		}
+   		
+   		
+    	/*
+    	 * MINING
+    	 */
+    	if(mcPermissions.getInstance().mining(player)){
+    		if(LoadProperties.miningrequirespickaxe){
+    			if(m.isMiningPick(inhand))
+    				Mining.miningBlockCheck(player, block, plugin);
+    		} else {
+    			Mining.miningBlockCheck(player, block, plugin);
+    		}
+    	}
+    	/*
+   		 * WOOD CUTTING
+   		 */
+    	
+   		if(player != null && block.getTypeId() == 17 && mcPermissions.getInstance().woodcutting(player))
+   		{
+   			if(LoadProperties.woodcuttingrequiresaxe)
+   			{
+				if(m.isAxes(inhand))
+				{
+					if(!plugin.misc.blockWatchList.contains(block))
+					{
+	    				WoodCutting.woodCuttingProcCheck(player, block);
+	    				//Default
+	    				if(block.getData() == (byte)0)
+	    					PP.addWoodcuttingXP(LoadProperties.mpine * LoadProperties.xpGainMultiplier);
+	    				//Spruce
+	    				if(block.getData() == (byte)1)
+	    					PP.addWoodcuttingXP(LoadProperties.mspruce * LoadProperties.xpGainMultiplier);
+	    				//Birch
+	    				if(block.getData() == (byte)2)
+	    					PP.addWoodcuttingXP(LoadProperties.mbirch * LoadProperties.xpGainMultiplier);
+					}
+    			}
+    		} else 
+    		{
+    			if(!plugin.misc.blockWatchList.contains(block))
+    			{
+	    			WoodCutting.woodCuttingProcCheck(player, block);
+	    			//Default
+    				if(block.getData() == (byte)0)
+    					PP.addWoodcuttingXP(LoadProperties.mpine * LoadProperties.xpGainMultiplier);
+    				//Spruce
+    				if(block.getData() == (byte)1)
+    					PP.addWoodcuttingXP(LoadProperties.mspruce * LoadProperties.xpGainMultiplier);
+    				//Birch
+    				if(block.getData() == (byte)2)
+    					PP.addWoodcuttingXP(LoadProperties.mbirch * LoadProperties.xpGainMultiplier);
+    			}
+   			}
+    		Skills.XpCheck(player);
+    			
+    		/*
+    		 * IF PLAYER IS USING TREEFELLER
+    		 */
+   			if(mcPermissions.getInstance().woodCuttingAbility(player) 
+   					&& PP.getTreeFellerMode() 
+   					&& block.getTypeId() == 17
+   					&& m.blockBreakSimulate(block, player, plugin)){
+   				
+    			WoodCutting.treeFeller(block, player, plugin);
+    			for(Block blockx : plugin.misc.treeFeller)
+    			{
+    				if(blockx != null){
+    					Material mat = Material.getMaterial(block.getTypeId());
+    					byte type = 0;
+    					if(block.getTypeId() == 17)
+    						type = block.getData();
+    					ItemStack item = new ItemStack(mat, 1, (byte)0, type);
+    					if(blockx.getTypeId() == 17){
+    						blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
+    						//XP WOODCUTTING
+    						if(!plugin.misc.blockWatchList.contains(block))
+    						{
+	    						WoodCutting.woodCuttingProcCheck(player, blockx);
+	    						PP.addWoodcuttingXP(LoadProperties.mpine);
+    						}
+    					}
+    					if(blockx.getTypeId() == 18)
+    					{
+    						mat = Material.SAPLING;
+    						
+    						item = new ItemStack(mat, 1, (short)0, blockx.getData());
+    						
+    						if(Math.random() * 10 > 9)
+    							blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
+    					}
+    					if(blockx.getType() != Material.AIR)
+    						player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType());
+    					blockx.setType(Material.AIR);
+    				}
+    			}
+    			if(LoadProperties.toolsLoseDurabilityFromAbilities)
+    		    	m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss);
+    			plugin.misc.treeFeller.clear();
+    		}
+    	}
+    	/*
+    	 * EXCAVATION
+    	 */
+    	if(mcPermissions.getInstance().excavation(player) && block.getData() != (byte) 5)
+    		Excavation.excavationProcCheck(block, player);
+    	/*
+    	 * HERBALISM
+    	 */
+    	if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalism(player) && Herbalism.canBeGreenTerra(block))
+    	{
+    		Herbalism.greenTerraCheck(player, block, plugin);
+    	}
+    	if(mcPermissions.getInstance().herbalism(player) && block.getData() != (byte) 5)
+			Herbalism.herbalismProcCheck(block, player, event, plugin);
+    	
+    	//Change the byte back when broken
+    	if(block.getData() == 5 && m.shouldBeWatched(block))
+    	{
+    		block.setData((byte) 0);
+    		if(plugin.misc.blockWatchList.contains(block))
+    		{
+    			plugin.misc.blockWatchList.remove(block);
+    		}
+    	}
+    	
+    	
+    }
+    public void onBlockDamage(BlockDamageEvent event) 
+    {
+    	
+    	
+    	if(event.isCancelled())
+    		return;
+    	Player player = event.getPlayer();
+    	PlayerProfile PP = Users.getProfile(player);
+    	ItemStack inhand = player.getItemInHand();
+    	Block block = event.getBlock();
+    	
+    	Skills.monitorSkills(player);
+
+    	/*
+    	 * ABILITY PREPARATION CHECKS
+    	 */
+   		if(PP.getHoePreparationMode() && Herbalism.canBeGreenTerra(block))
+    		Herbalism.greenTerraCheck(player, block, plugin);
+    	if(PP.getAxePreparationMode() && block.getTypeId() == 17)
+    		WoodCutting.treeFellerCheck(player, block, plugin);
+    	if(PP.getPickaxePreparationMode())
+    		Mining.superBreakerCheck(player, block, plugin);
+    	if(PP.getShovelPreparationMode() && Excavation.canBeGigaDrillBroken(block))
+    		Excavation.gigaDrillBreakerActivationCheck(player, block, plugin);
+    	if(PP.getFistsPreparationMode() && (Excavation.canBeGigaDrillBroken(block) || block.getTypeId() == 78))
+    		Unarmed.berserkActivationCheck(player, plugin);
+    	
+    	/*
+    	 * GREEN TERRA STUFF
+    	 */
+    	if(PP.getGreenTerraMode() && mcPermissions.getInstance().herbalismAbility(player) && PP.getGreenTerraMode()){
+   			Herbalism.greenTerra(player, block);
+   		}
+    	
+    	/*
+    	 * GIGA DRILL BREAKER CHECKS
+    	 */
+    	if(PP.getGigaDrillBreakerMode() && m.blockBreakSimulate(block, player, plugin) && Excavation.canBeGigaDrillBroken(block) && m.isShovel(inhand)){
+    		
+    		if(m.getTier(player) >= 2)
+    			Excavation.excavationProcCheck(block, player);
+    		if(m.getTier(player) >= 3)
+    			Excavation.excavationProcCheck(block, player);
+    		if(m.getTier(player) >= 4)
+    			Excavation.excavationProcCheck(block, player);
+    		Material mat = Material.getMaterial(block.getTypeId());
+    		if(block.getTypeId() == 2)
+    			mat = Material.DIRT;
+			byte type = block.getData();
+			ItemStack item = new ItemStack(mat, 1, (byte)0, type);
+			block.setType(Material.AIR);
+			player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType());
+			if(LoadProperties.toolsLoseDurabilityFromAbilities)
+	    		m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss);
+			block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+    	}
+    	/*
+    	 * BERSERK MODE CHECKS
+    	 */
+    	if(PP.getBerserkMode() 
+    		&& m.blockBreakSimulate(block, player, plugin) 
+    		&& player.getItemInHand().getTypeId() == 0 
+    		&& (Excavation.canBeGigaDrillBroken(block) || block.getTypeId() == 78)){
+		   	Material mat = Material.getMaterial(block.getTypeId());
+		   	if(block.getTypeId() == 2)
+		   		mat = Material.DIRT;
+		   	if(block.getTypeId() == 78)
+		   		mat = Material.SNOW_BALL;
+			byte type = block.getData();
+			ItemStack item = new ItemStack(mat, 1, (byte)0, type);
+			player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType());
+			block.setType(Material.AIR);
+			block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+    	}
+    	
+    	/*
+    	 * SUPER BREAKER CHECKS
+    	 */
+    	if(PP.getSuperBreakerMode() 
+    			&& Mining.canBeSuperBroken(block)
+    			&& m.blockBreakSimulate(block, player, plugin))
+    	{
+    		
+    		if(LoadProperties.miningrequirespickaxe)
+    		{
+    			if(m.isMiningPick(inhand))
+    				Mining.SuperBreakerBlockCheck(player, block, plugin);
+    		} else {
+    			Mining.SuperBreakerBlockCheck(player, block, plugin);
+    		}
+    	}
+    	
+    	/*
+    	 * LEAF BLOWER
+    	 */
+    	if(block.getTypeId() == 18 && mcPermissions.getInstance().woodcutting(player) && PP.getSkill("woodcutting") >= 100 && m.isAxes(player.getItemInHand()) && m.blockBreakSimulate(block, player, plugin))
+    	{
+    		m.damageTool(player, (short)1);
+    		if(Math.random() * 10 > 9)
+    		{
+    			ItemStack x = new ItemStack(Material.SAPLING, 1, (short)0, block.getData());
+    			block.getLocation().getWorld().dropItemNaturally(block.getLocation(), x);
+    		}
+    		block.setType(Material.AIR);
+    		player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType());
+    	}
+    	if(block.getType() == Material.AIR && plugin.misc.blockWatchList.contains(block))
+    	{
+    		plugin.misc.blockWatchList.remove(block);
+    	}
+    }
+    
+    public void onBlockFromTo(BlockFromToEvent event) 
+    {
+    	
+    	
+        Block blockFrom = event.getBlock();
+        Block blockTo = event.getToBlock();
+        if(m.shouldBeWatched(blockFrom) && blockFrom.getData() == (byte)5)
+        {
+        	blockTo.setData((byte)5);
+        }
+    }
+}

+ 219 - 0
mcMMO/com/gmail/nossr50/listeners/mcEntityListener.java

@@ -0,0 +1,219 @@
+package com.gmail.nossr50.listeners;
+
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Monster;
+import org.bukkit.entity.Player;
+import org.bukkit.entity.Wolf;
+import org.bukkit.event.entity.CreatureSpawnEvent;
+import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
+import org.bukkit.event.entity.EntityDamageEvent;
+import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
+import org.bukkit.event.entity.EntityDeathEvent;
+import org.bukkit.event.entity.EntityListener;
+import org.bukkit.event.entity.EntityTargetEvent;
+import org.bukkit.inventory.ItemStack;
+
+import com.gmail.nossr50.Combat;
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+import com.gmail.nossr50.skills.Acrobatics;
+import com.gmail.nossr50.skills.Skills;
+import com.gmail.nossr50.skills.Taming;
+
+
+public class mcEntityListener extends EntityListener 
+{
+	private final mcMMO plugin;
+
+    public mcEntityListener(final mcMMO plugin) {
+        this.plugin = plugin;
+    }
+    
+    public void onEntityDamage(EntityDamageEvent event) 
+    {
+    	
+    	
+    	if(event.isCancelled())
+    		return;
+    	//Check for world pvp flag
+    	if(event instanceof EntityDamageByEntityEvent)
+    	{
+    		EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent)event;
+    		if(eventb.getEntity() instanceof Player && eventb.getDamager() instanceof Player && !event.getEntity().getWorld().getPVP())
+    			return;
+    	}
+    	/*
+    	 * CHECK FOR INVULNERABILITY
+    	 */
+    	if(event.getEntity() instanceof Player)
+    	{
+    		Player defender = (Player)event.getEntity();
+    		PlayerProfile PPd = Users.getProfile(defender);
+    		if(defender != null && PPd.getGodMode())
+    			event.setCancelled(true);
+    		if(PPd == null)
+    			Users.addUser(defender);
+    	}
+    	
+    	if(event.getEntity() instanceof LivingEntity)
+    	{
+    		//CraftEntity cEntity = (CraftEntity)event.getEntity();
+	    	//if(cEntity.getHandle() instanceof EntityLiving)
+	    	{
+		    	LivingEntity entityliving = (LivingEntity)event.getEntity();
+		    	if(entityliving.getNoDamageTicks() < entityliving.getMaximumNoDamageTicks()/2.0F)
+		    	{
+			    	Entity x = event.getEntity();
+			    	DamageCause type = event.getCause();
+			    	if(event.getEntity() instanceof Wolf && ((Wolf)event.getEntity()).isTamed() && Taming.getOwner(((Wolf)event.getEntity()), plugin) != null)
+			    	{
+			    		Wolf theWolf = (Wolf) event.getEntity();
+				    	Player master = Taming.getOwner(theWolf, plugin);
+				    	PlayerProfile PPo = Users.getProfile(master);
+				    	if(master == null || PPo == null)
+				    		return;
+			    		//Environmentally Aware
+						if((event.getCause() == DamageCause.CONTACT || event.getCause() == DamageCause.LAVA || event.getCause() == DamageCause.FIRE) && PPo.getSkill("taming") >= 100)
+						{
+							if(event.getDamage() < ((Wolf) event.getEntity()).getHealth())
+							{
+								event.getEntity().teleport(Taming.getOwner(theWolf, plugin).getLocation());
+								master.sendMessage(mcLocale.getString("mcEntityListener.WolfComesBack")); //$NON-NLS-1$
+								event.getEntity().setFireTicks(0);
+							}
+						}
+						if(event.getCause() == DamageCause.FALL && PPo.getSkill("taming") >= 100)
+						{
+							event.setCancelled(true);
+						}
+						
+						//Thick Fur
+						if(event.getCause() == DamageCause.FIRE_TICK)
+						{
+							event.getEntity().setFireTicks(0);
+						}
+			    	}
+			    	
+			    	/*
+			    	 * ACROBATICS
+			    	 */
+			    	if(x instanceof Player){
+				    	Player player = (Player)x;
+				    	if(type == DamageCause.FALL){
+				    		Acrobatics.acrobaticsCheck(player, event);
+				    	}
+			    	}
+			    	
+			    	/*
+			    	 * Entity Damage by Entity checks
+			    	 */
+			    	if(event instanceof EntityDamageByEntityEvent && !event.isCancelled())
+			    	{
+			    		EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
+			    		Entity f = eventb.getDamager();
+			    		Entity e = event.getEntity();
+			    		/*
+			    		 * PARTY CHECKS
+			    		 */
+			    		if(event.getEntity() instanceof Player && f instanceof Player)
+			    		{
+			        		Player defender = (Player)e;
+			        		Player attacker = (Player)f;
+			        		if(Party.getInstance().inSameParty(defender, attacker))
+			        			event.setCancelled(true);
+			    		}
+			    		Combat.combatChecks(event, plugin);	
+			        }
+			    	/*
+			    	 * Check to see if the defender took damage so we can apply recently hurt
+			    	 */
+			    	if(event.getEntity() instanceof Player && !event.isCancelled() && event.getDamage() >= 1)
+			    	{
+			    		Player herpderp = (Player)event.getEntity();
+			    		Users.getProfile(herpderp).setRecentlyHurt(System.currentTimeMillis());
+			    	}
+		    	}
+	    	}
+    	}
+    }
+    
+    public void onEntityDeath(EntityDeathEvent event) 
+    {
+    	
+    	Entity x = event.getEntity();
+    	x.setFireTicks(0);
+    	
+    	//cleanup mob diff
+    	if(plugin.mob.mobDiff.containsKey(event.getEntity().getEntityId()))
+    			plugin.mob.mobDiff.remove(event.getEntity().getEntityId());
+    	
+    	
+    	//Remove bleed track
+    	if(plugin.misc.bleedTracker.contains((LivingEntity)x))
+    		plugin.misc.addToBleedRemovalQue((LivingEntity)x);
+    	
+		Skills.arrowRetrievalCheck(x, plugin);
+		/*
+		if(Config.getInstance().isMobSpawnTracked(x)){
+			Config.getInstance().removeMobSpawnTrack(x);
+		}
+		*/
+    	if(x instanceof Player){
+    		Player player = (Player)x;
+    		Users.getProfile(player).setBleedTicks(0);
+    	}
+    	
+    }
+    
+    public void onCreatureSpawn(CreatureSpawnEvent event) 
+    {
+    	
+    	SpawnReason reason = event.getSpawnReason();
+    	
+    	if(reason == SpawnReason.SPAWNER && !LoadProperties.xpGainsMobSpawners)
+    	{
+    		plugin.misc.mobSpawnerList.add(event.getEntity());
+    	} else 
+    	{
+    		if(event.getEntity() instanceof Monster && !plugin.mob.mobDiff.containsKey(event.getEntity().getEntityId()))
+        		plugin.mob.assignDifficulty(event.getEntity());
+    	}
+    }
+    
+    public void onEntityTarget(EntityTargetEvent event) 
+	{
+    	
+		int type = event.getEntity().getEntityId();
+		//Make 3+ non-aggressive
+		if(event.getEntity() instanceof Monster 
+				&& plugin.mob.mobDiff.containsKey(type)
+				&& plugin.mob.isAggressive.containsKey(type))
+		{
+			if(plugin.mob.mobDiff.get(type) >= 2 && plugin.mob.isAggressive.get(type) == false)
+			{
+				event.setCancelled(true);
+				event.setTarget(null);
+			}
+		}
+	}
+	public boolean isBow(ItemStack is){
+		if (is.getTypeId() == 261){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	public boolean isPlayer(Entity entity){
+    	if (entity instanceof Player) {
+    	    return true;
+    	} else{
+    		return false;
+    	}
+    }
+}

+ 241 - 0
mcMMO/com/gmail/nossr50/listeners/mcPlayerListener.java

@@ -0,0 +1,241 @@
+package com.gmail.nossr50.listeners;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+import org.bukkit.event.block.Action;
+import org.bukkit.event.player.PlayerChatEvent;
+import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerListener;
+import org.bukkit.event.player.PlayerLoginEvent;
+import org.bukkit.event.player.PlayerQuitEvent;
+import org.bukkit.event.player.PlayerRespawnEvent;
+import org.bukkit.inventory.ItemStack;
+
+import com.gmail.nossr50.Item;
+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.party.Party;
+import com.gmail.nossr50.skills.Herbalism;
+import com.gmail.nossr50.skills.Repair;
+import com.gmail.nossr50.skills.Skills;
+
+
+public class mcPlayerListener extends PlayerListener 
+{
+	protected static final Logger log = Logger.getLogger("Minecraft"); //$NON-NLS-1$
+	public Location spawn = null;
+	private mcMMO plugin;
+
+	public mcPlayerListener(mcMMO instance) 
+	{
+		plugin = instance;
+	}
+
+
+	public void onPlayerRespawn(PlayerRespawnEvent event) 
+	{
+		
+		Player player = event.getPlayer();
+		if(LoadProperties.enableMySpawn && mcPermissions.getInstance().mySpawn(player))
+		{
+			PlayerProfile PP = Users.getProfile(player);
+
+			if(player != null && PP != null)
+			{
+				PP.setRespawnATS(System.currentTimeMillis());
+				Location mySpawn = PP.getMySpawn(player);
+				if(mySpawn != null && plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)) != null)
+					mySpawn.setWorld(plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)));
+				if(mySpawn != null)
+				{
+					event.setRespawnLocation(mySpawn);
+				}
+			}
+		}
+	}
+	public void onPlayerLogin(PlayerLoginEvent event) 
+	{
+		Users.addUser(event.getPlayer());
+	}
+
+	public void onPlayerQuit(PlayerQuitEvent event) 
+	{
+		
+		/*
+		 * GARBAGE COLLECTION
+		 */
+
+		 //Discard the PlayerProfile object from players array in the Users object stored for this player as it is no longer needed
+		Users.removeUser(event.getPlayer());
+	}
+
+	public void onPlayerJoin(PlayerJoinEvent event) 
+	{
+		
+		Player player = event.getPlayer();
+
+		if(mcPermissions.getInstance().motd(player) && LoadProperties.enableMotd)
+		{
+			//player.sendMessage(ChatColor.BLUE +"This server is running mcMMO "+plugin.getDescription().getVersion()+" type /"+ChatColor.YELLOW+LoadProperties.mcmmo+ChatColor.BLUE+ " for help.");
+			player.sendMessage(mcLocale.getString("mcPlayerListener.MOTD", new Object[] {plugin.getDescription().getVersion(), LoadProperties.mcmmo}));
+			//player.sendMessage(ChatColor.GREEN+"http://mcmmo.wikia.com"+ChatColor.BLUE+" - mcMMO Wiki");
+			player.sendMessage(mcLocale.getString("mcPlayerListener.WIKI"));
+		}
+	}
+
+	@SuppressWarnings("deprecation")
+	public void onPlayerInteract(PlayerInteractEvent event) {
+		
+
+		Player player = event.getPlayer();
+		PlayerProfile PP = Users.getProfile(player);
+		Action action = event.getAction();
+		Block block = event.getClickedBlock();
+
+
+
+		//Archery Nerf
+		if(player.getItemInHand().getTypeId() == 261 && LoadProperties.archeryFireRateLimit){
+			if(System.currentTimeMillis() < PP.getArcheryShotATS() + 1000){
+				/*
+    			if(m.hasArrows(player))
+    				m.addArrows(player);
+				 */
+				player.updateInventory();
+				event.setCancelled(true);
+			} else {
+				PP.setArcheryShotATS(System.currentTimeMillis());
+			}
+		}
+
+		/*
+		 * Ability checks
+		 */
+		if(action == Action.RIGHT_CLICK_BLOCK)
+		{
+			ItemStack is = player.getItemInHand();
+			if(LoadProperties.enableMySpawn && block != null && player != null)
+			{
+				if(block.getTypeId() == 26 && mcPermissions.getInstance().setMySpawn(player))
+				{
+					Location loc = player.getLocation();
+					if(mcPermissions.getInstance().setMySpawn(player)){
+						PP.setMySpawn(loc.getX(), loc.getY(), loc.getZ(), loc.getWorld().getName());
+					}
+					player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnSet"));
+				}
+			}
+
+			if(block != null && player != null && mcPermissions.getInstance().repair(player) && event.getClickedBlock().getTypeId() == 42)
+			{
+				Repair.repairCheck(player, is, event.getClickedBlock());
+			}
+
+			if(m.abilityBlockCheck(block))
+			{
+				if(block != null && m.isHoe(player.getItemInHand()) && block.getTypeId() != 3 && block.getTypeId() != 2 && block.getTypeId() != 60){
+					Skills.hoeReadinessCheck(player);
+				}
+				Skills.abilityActivationCheck(player);
+			}
+
+			//GREEN THUMB
+			if(block != null && (block.getType() == Material.COBBLESTONE || block.getType() == Material.DIRT) && player.getItemInHand().getType() == Material.SEEDS)
+			{
+				boolean pass = false;
+				if(Herbalism.hasSeeds(player) && mcPermissions.getInstance().herbalism(player)){
+					Herbalism.removeSeeds(player);
+					if(LoadProperties.enableCobbleToMossy && m.blockBreakSimulate(block, player, plugin) && block.getType() == Material.COBBLESTONE && Math.random() * 1500 <= PP.getSkill("herbalism")){
+						player.sendMessage(mcLocale.getString("mcPlayerListener.GreenThumb"));
+						block.setType(Material.MOSSY_COBBLESTONE);
+						pass = true;
+					}
+					if(block.getType() == Material.DIRT && m.blockBreakSimulate(block, player, plugin) && Math.random() * 1500 <= PP.getSkill("herbalism")){
+						player.sendMessage(mcLocale.getString("mcPlayerListener.GreenThumb"));
+						block.setType(Material.GRASS);
+						pass = true;
+					}
+					if(pass == false)
+						player.sendMessage(mcLocale.getString("mcPlayerListener.GreenThumbFail"));
+				}
+				return;
+			}
+		}
+		if(action == Action.RIGHT_CLICK_AIR)
+		{
+			Skills.hoeReadinessCheck(player);
+			Skills.abilityActivationCheck(player);
+
+			/*
+			 * HERBALISM MODIFIERS
+			 */
+			if(mcPermissions.getInstance().herbalism(player))
+			{
+				Herbalism.breadCheck(player, player.getItemInHand());
+				Herbalism.stewCheck(player, player.getItemInHand());
+			}
+		}
+		
+		/*
+		 * ITEM CHECKS
+		 */
+		if(action == Action.RIGHT_CLICK_AIR)
+			Item.itehecks(player, plugin);
+		if(action == Action.RIGHT_CLICK_BLOCK)
+		{
+			if(m.abilityBlockCheck(event.getClickedBlock()))
+				Item.itehecks(player, plugin);
+		}
+	}
+
+	public void onPlayerChat(PlayerChatEvent event) 
+	{
+		
+		Player player = event.getPlayer();
+		PlayerProfile PP = Users.getProfile(player);
+
+		String x = ChatColor.GREEN + "(" + ChatColor.WHITE + player.getName() + ChatColor.GREEN + ") "; //$NON-NLS-1$ //$NON-NLS-2$
+		String y = ChatColor.AQUA + "{" + ChatColor.WHITE + player.getName() + ChatColor.AQUA + "} "; //$NON-NLS-1$ //$NON-NLS-2$
+
+		if(PP.getPartyChatMode())
+		{
+			event.setCancelled(true);
+			log.log(Level.INFO, "[P]("+PP.getParty()+")"+"<"+player.getName()+"> "+event.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+			for(Player herp : plugin.getServer().getOnlinePlayers())
+			{
+				if(Users.getProfile(herp).inParty())
+				{
+					if(Party.getInstance().inSameParty(herp, player))
+					{
+						herp.sendMessage(x+event.getMessage());
+					}
+				}
+			}
+			return;
+		}
+
+		if((player.isOp() || mcPermissions.getInstance().adminChat(player)) && PP.getAdminChatMode())
+		{
+			log.log(Level.INFO, "[A]"+"<"+player.getName()+"> "+event.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			event.setCancelled(true);
+			for(Player herp : plugin.getServer().getOnlinePlayers()){
+				if((herp.isOp() || mcPermissions.getInstance().adminChat(herp))){
+					herp.sendMessage(y+event.getMessage());
+				}
+			}
+			return;
+		}
+	}
+}

+ 321 - 0
mcMMO/com/gmail/nossr50/locale/locale_de.properties

@@ -0,0 +1,321 @@
+Combat.WolfExamine=[[GREEN]]**du musterst den Wolf mit Bestienkunde**
+Combat.WolfShowMaster=[[DARK_GREEN]]Der Bestienmeister \: {0}
+Combat.Ignition=[[RED]]**ENTZUENDEN**
+Combat.BurningArrowHit=[[DARK_RED]]Du wurdest von einem brennenden Pfeil gestriffen\!
+Combat.TouchedFuzzy=[[DARK_RED]]Benommen. fuehlt sich schwindelig.
+Combat.TargetDazed=Target was [[DARK_RED]]benommen
+Combat.WolfNoMaster=[[GRAY]]Diese Bestie hat keinen Meister...
+Combat.WolfHealth=[[GREEN]]Die Bestie hat {0} Lebensenergie 
+Combat.StruckByGore=[[RED]]**Getroffen von Biss**
+Combat.Gore=[[GREEN]]**BISS**
+Combat.ArrowDeflect=[[WHITE]]**PFEIL ABGELENKT**
+Item.ChimaeraWingFail=**CHIMAERA FLUEGEL fehlgeschlagen\!**
+Item.ChimaeraWingPass=**CHIMAERA FLUEGEL**
+Item.InjuredWait=du wurdest kurz zuvor verletzt und musst mit der Benutzung warten. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]Du brauchst mehr Federn..
+m.mccPartyCommands=[[GREEN]]--GRUPPEN BEFEHLE--
+m.mccParty=[party name] [[RED]]- Erstellen/beitreten einer Gruppe
+m.mccPartyQ=[[RED]]- Verlasse aktuelle Gruppe
+m.mccPartyToggle=[[RED]] - aktiviert Gruppenchat
+m.mccPartyInvite=[player name] [[RED]]- sende Gruppeneinladung
+m.mccPartyAccept=[[RED]]- Gruppeneinladung akzeptieren
+m.mccPartyTeleport=[party member name] [[RED]]- Teleport zu Gruppenmitglied
+m.mccOtherCommands=[[GREEN]]--ANDERE BEFEHLE--
+m.mccStats=- zeigt deinen Status
+m.mccLeaderboards=- Ranglisten
+m.mccMySpawn=- Teleport zum Spawnpunkt
+m.mccClearMySpawn=- Spawnpunkt loeschen
+m.mccToggleAbility=- Faehigkeitsaktivierung mit rechtsklick an/aus schalten
+m.mccAdminToggle=- Adminchat aktivieren
+m.mccWhois=[playername] [[RED]]- Detailierte Spielerinfos zeigen
+m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Ziel modifizieren
+m.mccMcGod=- God Mode
+m.mccSkillInfo=[skillname] [[RED]]- Detailierte Skillinfos zeigen
+m.mccModDescription=[[RED]]- kurze MOD-Beschreibung lesen
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]XP Erhalten: [[WHITE]]{0}
+m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
+m.AbilityLockTemplate=[[GRAY]]{0}
+m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
+m.Effects=EFFEKTE
+m.YourStats=DEINE WERTE
+m.SkillTaming=Bestienkunde (Taming)
+m.XPGainTaming=wenn Woelfe Schaden bekommen
+m.EffectsTaming1_0=Bestienkunde
+m.EffectsTaming1_1=mit Knochen schlagen inspiziert Woelfe
+m.EffectsTaming2_0=Biss
+m.EffectsTaming2_1=Kritischer Schlag mit Blutungseffekt
+m.EffectsTaming3_0=Geschaerfte Krallen
+m.EffectsTaming3_1=Schadens-Bonus
+m.EffectsTaming4_0=Umweltbewusst
+m.EffectsTaming4_1=Kaktus/Lava Phobie, Fall Schaden Immun
+m.EffectsTaming5_0=Dichtes Fell
+m.EffectsTaming5_1=Schadens-Reduzierung, Feuer-Resistenz
+m.EffectsTaming6_0=schockfest
+m.EffectsTaming6_1=Explosions-Schaden-Reduzierung
+m.AbilLockTaming1=gesperrt bis 100+ Skilllevel (Umweltbewusst)
+m.AbilLockTaming2=gesperrt bis 250+ Skillevel (Dichtes Fell)
+m.AbilLockTaming3=gesperrt bis 500+ Skillevel (Schockfest)
+m.AbilLockTaming4=gesperrt bis 750+ Skillevel (Geschaerfte Krallen)
+m.AbilBonusTaming1_0=Umweltbewusst
+m.AbilBonusTaming1_1=Woelfe meiden Gefahr
+m.AbilBonusTaming2_0=Dichtes Fell
+m.AbilBonusTaming2_1=Halber Schaden, Feuer-Resistenz
+m.AbilBonusTaming3_0=Schockfest
+m.AbilBonusTaming3_1=Explosionen machen 1/6 normalen Schaden
+m.AbilBonusTaming4_0=Geschärfte Krallen
+m.AbilBonusTaming4_1=+2 Schaden
+m.TamingGoreChance=[[RED]]Biss Chance: [[YELLOW]]{0}%
+m.SkillWoodCutting=Holzfaellen (WoodCutting)
+m.XPGainWoodCutting=Baeume faellen
+m.EffectsWoodCutting1_0=Baumfaeller (Faehigkeit)
+m.EffectsWoodCutting1_1=Bringt Baeume zum explodieren
+m.EffectsWoodCutting2_0=Blaetter-Sturm
+m.EffectsWoodCutting2_1=blaest Blaetter weg
+m.EffectsWoodCutting3_0=Doppelte Drops
+m.EffectsWoodCutting3_1=doppelte Anzahl Items
+m.AbilLockWoodCutting1=gesperrt bis 100+ Skilllevel (Blaetter-Sturm)
+m.AbilBonusWoodCutting1_0=Blaetter-Sturm
+m.AbilBonusWoodCutting1_1=blaest Blaetter weg
+m.WoodCuttingDoubleDropChance=[[RED]]Doppelte Drop Chance: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Baumfaeller Dauer: [[YELLOW]]{0}s
+m.SkillArchery=Bogenschiessen (Archery)
+m.XPGainArchery=Monster/Spieler angreifen
+m.EffectsArchery1_0=Entzuenden
+m.EffectsArchery1_1=25% Chance das Feind Feuer faengt
+m.EffectsArchery2_0=Blenden (Spieler)
+m.EffectsArchery2_1=Disorientiert Feinde
+m.EffectsArchery3_0=Schaden+
+m.EffectsArchery3_1=Modifiziert Schaden
+m.EffectsArchery4_0=Pfeil Rueckgewinnung
+m.EffectsArchery4_1=Chance Pfeile von Leichen zurueckzugewinnen
+m.ArcheryDazeChance=[[RED]]Chance zu blenden: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Chance Pfeile zurueckzugewinnen: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Dauer von Entzuenden: [[YELLOW]]{0} seconds
+m.ArcheryDamagePlus=[[RED]]Schaden+ (Rank{0}): [[YELLOW]]Bonus {0} damage
+m.SkillAxes=Axt (Axes)
+m.XPGainAxes=Monster/Spieler angreifen
+m.EffectsAxes1_0=Schaedelspalter (Faehigkeit)
+m.EffectsAxes1_1=Verursacht Flaechenschaden
+m.EffectsAxes2_0=Kritischer Schlag
+m.EffectsAxes2_1=doppelter Schaden
+m.EffectsAxes3_0=Axtmeister (500 Skilllevel)
+m.EffectsAxes3_1=Modifiziert Schaden
+m.AbilLockAxes1=gesperrt bis 500+ Skilllevel(Axtmeister)
+m.AbilBonusAxes1_0=Axtmeister
+m.AbilBonusAxes1_1=4 Bonus-Schaden
+m.AxesCritChance=[[RED]]Chance fuer kritische Treffer: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Schaedelspalter Dauer: [[YELLOW]]{0}s
+m.SkillSwords=Schwert (Swords)
+m.XPGainSwords=Monster/Spieler angreifen
+m.EffectsSwords1_0=Konter
+m.EffectsSwords1_1=Reflektiert 50% des erhaltenen Schadens
+m.EffectsSwords2_0=Saegezahn-Schlag (Faehigkeit)
+m.EffectsSwords2_1=25% Flaechenschaden, Blutung+ Flaecheneffekt
+m.EffectsSwords3_0=Saegezahn-Schlag Blutung+
+m.EffectsSwords3_1=5 Tick Blutung
+m.EffectsSwords4_0=parrieren
+m.EffectsSwords4_1=negiert Schaden
+m.EffectsSwords5_0=Blutung
+m.EffectsSwords5_1=hinterlaesst Blutungs-DOT
+m.SwordsCounterAttChance=[[RED]]Konter Chance: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Blutung Dauer: [[YELLOW]]{0} ticks
+m.SwordsBleedChance=[[RED]]Blutung Chance: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Parieren Chance: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Saegezahn-Schlag Dauer: [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]NOTIZ: [[YELLOW]]1 Tick erfolgt aller 2 Sekunden
+m.SkillAcrobatics=Akrobatik (Acrobatics)
+m.XPGainAcrobatics=runterfallen
+m.EffectsAcrobatics1_0=Rolle
+m.EffectsAcrobatics1_1=Reduziert oder negiert Schaden
+m.EffectsAcrobatics2_0=elegante Rolle
+m.EffectsAcrobatics2_1=Doppelt so effektiv wie Rolle
+m.EffectsAcrobatics3_0=Ausweichen
+m.EffectsAcrobatics3_1=halbiert Schaden
+m.AcrobaticsRollChance=[[RED]]Rolle Chance: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]elegante Rolle Chance: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Ausweichen Chance: [[YELLOW]]{0}%
+m.SkillMining=Bergbau (Mining)
+m.XPGainMining=Abbauen von Stein und Erz
+m.EffectsMining1_0=Super Brecher (Faehigkeit)
+m.EffectsMining1_1=Tempo+, dreifache Drop Chance
+m.EffectsMining2_0=doppelte Drops
+m.EffectsMining2_1=doppelte Anzahl Items
+m.MiningDoubleDropChance=[[RED]]doppelte Drops Chance: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Super Brecher Dauer: [[YELLOW]]{0}s
+m.SkillRepair=Reparieren (Repair)
+m.XPGainRepair=reparieren
+m.EffectsRepair1_0=reparieren
+m.EffectsRepair1_1=reparieren von Eisenwerkzeugen und Ruestung
+m.EffectsRepair2_0=reparieren - Meister
+m.EffectsRepair2_1=erhoeht Reparierwert
+m.EffectsRepair3_0=Super Reparatur
+m.EffectsRepair3_1=doppelte Effektivitaet
+m.EffectsRepair4_0=Diamanten Reparatur ({0}+ SKILL)
+m.EffectsRepair4_1=Reparieren von Diamantwerkzeugen und Ruestung
+m.RepairRepairMastery=[[RED]]reparieren - Meister: [[YELLOW]]Extra {0}% Haltbarkeit
+m.RepairSuperRepairChance=[[RED]]Super Reparatur Chance: [[YELLOW]]{0}%
+m.SkillUnarmed=Faustkampf (Unarmed)
+m.XPGainUnarmed=Monster/Spieler angreifen
+m.EffectsUnarmed1_0=Berserker (Faehigkeit)
+m.EffectsUnarmed1_1=+50% Schaden, bricht weiches Material (Bsp. Erde)
+m.EffectsUnarmed2_0=Entwaffnen (Spieler)
+m.EffectsUnarmed2_1=Droppt Item welches Feind in Hand haelt
+m.EffectsUnarmed3_0=Faustkampfmeister
+m.EffectsUnarmed3_1=grosse Schadenssteigerung
+m.EffectsUnarmed4_0=Faustkampflehrling
+m.EffectsUnarmed4_1=Schadens-Bonus
+m.EffectsUnarmed5_0=Pfeil ablenken
+m.EffectsUnarmed5_1=wehrt Pfeile ab
+m.AbilLockUnarmed1=gesperrt bis 250+ Skilllevel (Faustkampflehrling)
+m.AbilLockUnarmed2=gesperrt bis 500+ Skilllevel (Faustkampfmeister)
+m.AbilBonusUnarmed1_0=Faustkampflehrling
+m.AbilBonusUnarmed1_1=+2 Schadens-Bonus
+m.AbilBonusUnarmed2_0=Faustkampfmeister
+m.AbilBonusUnarmed2_1=+4 Schadens-Bonus
+m.UnarmedArrowDeflectChance=[[RED]]Pfeil ablenken Chance: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Entwaffnen Chance: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Berserker Dauer: [[YELLOW]]{0}s
+m.SkillHerbalism=Kraeutersammler (Herbalism)
+m.XPGainHerbalism=Kraeuter sammeln
+m.EffectsHerbalism1_0=Gruene Welt (Faehigkeit)
+m.EffectsHerbalism1_1=Pflegt die Welt, dreifache Drops
+m.EffectsHerbalism2_0=Gruener Daumen (Weizen)
+m.EffectsHerbalism2_1=automatisches neupflanzen nach ernten
+m.EffectsHerbalism3_0=Gruener Daumen (Cobble)
+m.EffectsHerbalism3_1=verwandelt Cobblestone zu Mossy Cobblestone mithilfe von Samen
+m.EffectsHerbalism4_0=Nahrung+
+m.EffectsHerbalism4_1=Modifiziert Heilung von Brot/Suppe
+m.EffectsHerbalism5_0=Doppelte Drops (Alle Kraeuter)
+m.EffectsHerbalism5_1=doppelte Anzahl Items
+m.HerbalismGreenTerraLength=[[RED]]Gruene Welt Dauer: [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Gruener Daumen Chance: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Gruener Daumen Stufe: [[YELLOW]] Getreide waechst auf Stufe {0}
+m.HerbalismDoubleDropChance=[[RED]]Doppelte Drop Chance: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Nahrung+ (Rank{0}): [[YELLOW]]Bonus-Heilung {0} 
+m.SkillExcavation=Graben (Excavation)
+m.XPGainExcavation=Graben und finden von Schaetzen
+m.EffectsExcavation1_0=Giga Bohrer (Faehigkeit)
+m.EffectsExcavation1_1=3x Drop Rate, 3x EXP, +Tempo
+m.EffectsExcavation2_0=Schatzjaeger
+m.EffectsExcavation2_1=Faehigkeit nach Schaetzen zu graben
+m.ExcavationGreenTerraLength=[[RED]]Giga Bohrer Dauer: [[YELLOW]]{0}s
+mcBlockListener.PlacedAnvil=[[DARK_RED]]Du hast einen Ambos platziert, du kannst hier Werkzeuge und Ruestungen reparieren.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Dein Wolf hastet zurueck zu dir...
+mcPlayerListener.AbilitiesOff=Faehigkeiten nutzen (rechtsklick) aus
+mcPlayerListener.AbilitiesOn=Faehigkeiten nutzen (rechtsklick) an
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**Faehigkeiten aufgefrischt\!**
+mcPlayerListener.AcrobaticsSkill=[[YELLOW]]Akrobatik Skill (Acrobatics): 
+mcPlayerListener.ArcherySkill=[[YELLOW]]Bogenschiessen Skill (Archery): 
+mcPlayerListener.AxesSkill=[[YELLOW]]Axt Skill (Axes): 
+mcPlayerListener.ExcavationSkill=[[YELLOW]]Graben Skill (Excavations): 
+mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO Godmode deaktiviert
+mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Godmode aktiviert
+mcPlayerListener.GreenThumb=[[GREEN]]**GRUENER DAUMEN**
+mcPlayerListener.GreenThumbFail=[[RED]]**GREEN THUMB FEHLGESCHLAGEN**
+mcPlayerListener.HerbalismSkill=[[YELLOW]]Kraeuterkunde Skill (Herbalism): 
+mcPlayerListener.MiningSkill=[[YELLOW]]Bergbau Skill (Mining): 
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn ist freigegeben
+mcPlayerListener.MyspawnNotExist=[[RED]]Lege deinen myspawn erst mit einem Bett fest
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn wurde an deine aktuelle Position gesetzt
+mcPlayerListener.MyspawnTimeNotice=Du musst {0}m {1}s warten um myspawn zu nutzen
+mcPlayerListener.NoPermission=unzureichende mcPermissions.
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]wenn du keinen Zugriff auf einen Skill hast wird er nicht hier gezeigt 
+mcPlayerListener.NotInParty=[[RED]]Du bist in keiner Gruppe.
+mcPlayerListener.InviteSuccess=[[GREEN]]Einladung erfolgreich versendet.
+mcPlayerListener.ReceivedInvite1=[[RED]]ALERT: [[GREEN]]Du hast eine Gruppeneinladung für {0} von {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Schreibe[[GREEN]]/{0}[[YELLOW]] um die Einladung zu akzeptieren 
+mcPlayerListener.InviteAccepted=[[GREEN]]Einladung akzeptiert. du bist {0} beigetreten
+mcPlayerListener.NoInvites=[[RED]]Du hast derzeit keine Einladungen
+mcPlayerListener.YouAreInParty=[[GREEN]]Du bist in Gruppe {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Gruppen Mitglieder
+mcPlayerListener.LeftParty=[[RED]]Du hast die Gruppe verlassen
+mcPlayerListener.JoinedParty=beigetrettene Gruppe: {0}
+mcPlayerListener.PartyChatOn=nur Gruppenchat [[RED]]an
+mcPlayerListener.PartyChatOff=nur Gruppenchat [[RED]]aus
+mcPlayerListener.AdminChatOn=nur Adminchat [[GREEN]]an
+mcPlayerListener.AdminChatOff=nur Adminchat [[RED]]aus
+mcPlayerListener.MOTD=[[BLUE]]Auf diesem Server laeuft {0} schreibe[[YELLOW]]/{1}[[BLUE]] fuer Hilfe. <frei Uebersetzt von g3oliver>
+mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Wiki
+mcPlayerListener.PowerLevel=[[DARK_RED]]POWER LEVEL: 
+mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Power Level [[YELLOW]]Rangliste--
+mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Rangliste--
+mcPlayerListener.RepairSkill=[[YELLOW]]Reparieren Skill (Repair): 
+mcPlayerListener.SwordsSkill=[[YELLOW]]Schwert Skill (Swords): 
+mcPlayerListener.TamingSkill=[[YELLOW]]Bestienkunde Skill (Taming): 
+mcPlayerListener.UnarmedSkill=[[YELLOW]]Faustkampf Skill (Unarmed): 
+mcPlayerListener.WoodcuttingSkill=[[YELLOW]]Holzfaeller Skill (Woodcutting): 
+mcPlayerListener.YourStats=[[GREEN]]Deine MMO Werte
+Party.InformedOnJoin={0} [[GREEN]] ist deiner Gruppe beigetreten
+Party.InformedOnQuit={0} [[GREEN]] hat deine Gruppe verlassen
+Skills.YourGreenTerra=[[GREEN]]Deine [[YELLOW]]Gruene Welt [[GREEN]]Faehigkeit ist bereit!
+Skills.YourTreeFeller=[[GREEN]]Deine [[YELLOW]]Baumfaeller [[GREEN]]Faehigkeit ist bereit!
+Skills.YourSuperBreaker=[[GREEN]]Deine [[YELLOW]]Super Brecher [[GREEN]]Faehigkeit ist bereit!
+Skills.YourSerratedStrikes=[[GREEN]]Deine [[YELLOW]]Saegezahn-Schlag [[GREEN]]Faehigkeit ist bereit!
+Skills.YourBerserk=[[GREEN]]Deine [[YELLOW]]Berserker [[GREEN]]Faehigkeit ist bereit!
+Skills.YourSkullSplitter=[[GREEN]]Deine [[YELLOW]]Schaedelspalter[[GREEN]]Faehigkeit ist bereit!
+Skills.YourGigaDrillBreaker=[[GREEN]]Deine [[YELLOW]]Giga Bohrer[[GREEN]]Faehigkeit ist bereit!
+Skills.TooTired=[[RED]]Du bist zu muede um diese Faehigkeit erneut zu nutzen.
+Skills.ReadyHoe=[[GREEN]]**DU BEREITEST DEINE HARKE VOR**
+Skills.LowerHoe=[[GRAY]]**DU SENKST DEINE HARKE**
+Skills.ReadyAxe=[[GREEN]]**DU BEREITEST DEINE AXT VOR**
+Skills.LowerAxe=[[GRAY]]**DU SENKST DEINE AXT**
+Skills.ReadyFists=[[GREEN]]**DU BEREITEST DEINE FAEUSTE VOR**
+Skills.LowerFists=[[GRAY]]**DU SENKST DEINE FAUSTE**
+Skills.ReadyPickAxe=[[GREEN]]**DU BEREITEST DEINE SPITZHACKE VOR**
+Skills.LowerPickAxe=[[GRAY]]**DU SENKST DEINE SPITZHACKE**
+Skills.ReadyShovel=[[GREEN]]**DU BEREITEST DEINE SCHAUFEL VOR**
+Skills.LowerShovel=[[GRAY]]**DU SENKST DEINE SCHAUFEL**
+Skills.ReadySword=[[GREEN]]**DU ERHEBST DEIN SCHWERT**
+Skills.LowerSword=[[GRAY]]**DU SENKST DEIN SCHWERT**
+Skills.GreenTerraOn=[[GREEN]]**GRUENE WELT AKTIV**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] hat [[RED]]Green Terra[[DARK_GREEN]] benutzt!
+Skills.TreeFellerOn=[[GREEN]]**BAUMFAELLER AKTIV**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] hat [[RED]]Baumfaeller[[DARK_GREEN]] benutzt!
+Skills.SuperBreakerOn=[[GREEN]]**SUPER BRECHER AKTIV**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] hat [[RED]]Super Brecher[[DARK_GREEN]] benutzt!
+Skills.SerratedStrikesOn=[[GREEN]]**SAEGEZAHN-SCHLAG AKTIV**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] hat [[RED]]Saegezahn-Schlag[[DARK_GREEN]] benutzt!
+Skills.SkullSplitterOn=[[GREEN]]**SCHAEDELSPALTER AKTIV**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] hat [[RED]]Schaedelspalter[[DARK_GREEN]] benutzt!
+Skills.GigaDrillBreakerOn=[[GREEN]]**GIGA BOHRER AKTIV**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] hat [[RED]]GigaBohrer[[DARK_GREEN]] benutzt!
+Skills.GreenTerraOff=[[RED]]**Gruene Welt ausgelaufen**
+Skills.TreeFellerOff=[[RED]]**Baumfaeller ausgelaufen**
+Skills.SuperBreakerOff=[[RED]]**Super Brecher ausgelaufen**
+Skills.SerratedStrikesOff=[[RED]]**Saegezahn-Schlag ausgelaufen**
+Skills.BerserkOff=[[RED]]**Berserker ausgelaufen**
+Skills.SkullSplitterOff=[[RED]]**Schaedelspalter ausgelaufen**
+Skills.GigaDrillBreakerOff=[[RED]]**Gruene Welt ausgelaufen**
+Skills.TamingUp=[[YELLOW]]Bestienkunde um {0} erhoeht. Gesamt ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Akrobatik um {0} erhoeht. Gesamt ({1})
+Skills.ArcheryUp=[[YELLOW]]Bogenschiessen um {0} erhoeht. Gesamt ({1})
+Skills.SwordsUp=[[YELLOW]]Schwert um {0} erhoeht. Gesamt ({1})
+Skills.AxesUp=[[YELLOW]]Axt um {0} erhoeht. Gesamt ({1})
+Skills.UnarmedUp=[[YELLOW]]Faustkampf um {0} erhoeht. Gesamt ({1})
+Skills.HerbalismUp=[[YELLOW]]Krauterkunde um {0} erhoeht. Gesamt ({1})
+Skills.MiningUp=[[YELLOW]]Bergbau um {0} erhoeht. Gesamt ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Holzfaeller um {0} erhoeht. Gesamt ({1})
+Skills.RepairUp=[[YELLOW]]Reparieren um {0} erhoeht. Gesamt ({1})
+Skills.ExcavationUp=[[YELLOW]]Graben um {0} erhoeht. Gesamt ({1})
+Skills.FeltEasy=[[GRAY]]Das fuehlt sich einfach an.
+Skills.StackedItems=[[DARK_RED]]Du kannst keine gestapelten Items reparieren
+Skills.NeedMore=[[DARK_RED]]Du brauchst mehr
+Skills.AdeptDiamond=[[DARK_RED]]Du bist nicht talentiert genug um Diamantwerkzeuge zu reparieren
+Skills.FullDurability=[[GRAY]]Dieses Item hat volle Haltbarkeit
+Skills.Disarmed=[[DARK_RED]]Du wurdest entwaffnet!
+mcPlayerListener.SorcerySkill=Zauberkunst Skill (Sorcery): 
+m.SkillSorcery=Zauberkunst (Sorcery)
+Sorcery.HasCast=[[GREEN]]**ZAUBERN**[[GOLD]]
+Sorcery.Current_Mana=[[DARK_AQUA]]MP
+Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
+Sorcery.Cost=[[RED]][COST] {0} MP
+Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Kein Mana [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=GEWITTER
+Sorcery.Curative.Self=HEILEN (SELBST)
+Sorcery.Curative.Other=HEILEN (ANDERE)
+m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]**BESTIENKUNDE**
+Combat.BeastLoreOwner=[[DARK_AQUA]]BEsitzer ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Gesundheit ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Gesundheit ([[GREEN]]{0}[[DARK_AQUA]]/8)

+ 323 - 0
mcMMO/com/gmail/nossr50/locale/locale_en_us.properties

@@ -0,0 +1,323 @@
+Combat.WolfExamine=[[GREEN]]**You examine the Wolf using Beast Lore**
+Combat.WolfShowMaster=[[DARK_GREEN]]The Beast's Master \: {0}
+Combat.Ignition=[[RED]]**IGNITION**
+Combat.BurningArrowHit=[[DARK_RED]]You were struck by a burning arrow\!
+Combat.TouchedFuzzy=[[DARK_RED]]Touched Fuzzy. Felt Dizzy.
+Combat.TargetDazed=Target was [[DARK_RED]]Dazed
+Combat.WolfNoMaster=[[GRAY]]This Beast has no Master...
+Combat.WolfHealth=[[GREEN]]This beast has {0} Health 
+Combat.StruckByGore=[[RED]]**STRUCK BY GORE**
+Combat.Gore=[[GREEN]]**GORE**
+Combat.ArrowDeflect=[[WHITE]]**ARROW DEFLECT**
+Item.ChimaeraWingFail=**CHIMAERA WING FAILED\!**
+Item.ChimaeraWingPass=**CHIMAERA WING**
+Item.InjuredWait=You were injured recently and must wait to use this. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]You need more feathers..
+m.mccPartyCommands=[[GREEN]]--PARTY COMMANDS--
+m.mccParty=[party name] [[RED]]- Create/Join designated party
+m.mccPartyQ=[[RED]]- Leave your current party
+m.mccPartyToggle=[[RED]] - Toggle Party Chat
+m.mccPartyInvite=[player name] [[RED]]- Send party invite
+m.mccPartyAccept=[[RED]]- Accept party invite
+m.mccPartyTeleport=[party member name] [[RED]]- Teleport to party member
+m.mccOtherCommands=[[GREEN]]--OTHER COMMANDS--
+m.mccStats=- View your mcMMO stats
+m.mccLeaderboards=- Leaderboards
+m.mccMySpawn=- Teleports to myspawn
+m.mccClearMySpawn=- Clears your MySpawn
+m.mccToggleAbility=- Toggle ability activation with right click
+m.mccAdminToggle=- Toggle admin chat
+m.mccWhois=[playername] [[RED]]- View detailed player info
+m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Modify target
+m.mccMcGod=- God Mode
+m.mccSkillInfo=[skillname] [[RED]]- View detailed information about a skill
+m.mccModDescription=[[RED]]- Read brief mod description
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]XP GAIN: [[WHITE]]{0}
+m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
+m.AbilityLockTemplate=[[GRAY]]{0}
+m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
+m.Effects=EFFECTS
+m.YourStats=YOUR STATS
+m.SkillTaming=TAMING
+m.XPGainTaming=Wolves getting harmed
+m.EffectsTaming1_0=Beast Lore
+m.EffectsTaming1_1=Bone-whacking inspects wolves
+m.EffectsTaming2_0=Gore
+m.EffectsTaming2_1=Critical Strike that applies Bleed
+m.EffectsTaming3_0=Sharpened Claws
+m.EffectsTaming3_1=Damage Bonus
+m.EffectsTaming4_0=Environmentally Aware
+m.EffectsTaming4_1=Cactus/Lava Phobia, Fall DMG Immune
+m.EffectsTaming5_0=Thick Fur
+m.EffectsTaming5_1=DMG Reduction, Fire Resistance
+m.EffectsTaming6_0=Shock Proof
+m.EffectsTaming6_1=Explosive Damage Reduction
+m.AbilLockTaming1=LOCKED UNTIL 100+ SKILL (ENVIRONMENTALLY AWARE)
+m.AbilLockTaming2=LOCKED UNTIL 250+ SKILL (THICK FUR)
+m.AbilLockTaming3=LOCKED UNTIL 500+ SKILL (SHOCK PROOF)
+m.AbilLockTaming4=LOCKED UNTIL 750+ SKILL (SHARPENED CLAWS)
+m.AbilBonusTaming1_0=Environmentally Aware
+m.AbilBonusTaming1_1=Wolves avoid danger
+m.AbilBonusTaming2_0=Thick Fur
+m.AbilBonusTaming2_1=Halved Damage, Fire Resistance
+m.AbilBonusTaming3_0=Shock Proof
+m.AbilBonusTaming3_1=Explosives do 1/6 normal damage
+m.AbilBonusTaming4_0=Sharpened Claws
+m.AbilBonusTaming4_1=+2 Damage
+m.TamingGoreChance=[[RED]]Gore Chance: [[YELLOW]]{0}%
+m.SkillWoodCutting=WOODCUTTING
+m.XPGainWoodCutting=Chopping down trees
+m.EffectsWoodCutting1_0=Tree Feller (ABILITY)
+m.EffectsWoodCutting1_1=Make trees explode
+m.EffectsWoodCutting2_0=Leaf Blower
+m.EffectsWoodCutting2_1=Blow Away Leaves
+m.EffectsWoodCutting3_0=Double Drops
+m.EffectsWoodCutting3_1=Double the normal loot
+m.AbilLockWoodCutting1=LOCKED UNTIL 100+ SKILL (LEAF BLOWER)
+m.AbilBonusWoodCutting1_0=Leaf Blower
+m.AbilBonusWoodCutting1_1=Blow away leaves
+m.WoodCuttingDoubleDropChance=[[RED]]Double Drop Chance: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Tree Feller Length: [[YELLOW]]{0}s
+m.SkillArchery=ARCHERY
+m.XPGainArchery=Attacking Monsters
+m.EffectsArchery1_0=Ignition
+m.EffectsArchery1_1=25% Chance Enemies will ignite
+m.EffectsArchery2_0=Daze (Players)
+m.EffectsArchery2_1=Disorients foes
+m.EffectsArchery3_0=Damage+
+m.EffectsArchery3_1=Modifies Damage
+m.EffectsArchery4_0=Arrow Retrieval
+m.EffectsArchery4_1=Chance to retrieve arrows from corpses
+m.ArcheryDazeChance=[[RED]]Chance to Daze: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Chance to Retrieve Arrows: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Length of Ignition: [[YELLOW]]{0} seconds
+m.ArcheryDamagePlus=[[RED]]Damage+ (Rank{0}): [[YELLOW]]Bonus {0} damage
+m.SkillAxes=AXES
+m.XPGainAxes=Attacking Monsters
+m.EffectsAxes1_0=Skull Splitter (ABILITY)
+m.EffectsAxes1_1=Deal AoE Damage
+m.EffectsAxes2_0=Critical Strikes
+m.EffectsAxes2_1=Double Damage
+m.EffectsAxes3_0=Axe Mastery (500 SKILL)
+m.EffectsAxes3_1=Modifies Damage
+m.AbilLockAxes1=LOCKED UNTIL 500+ SKILL (AXEMASTERY)
+m.AbilBonusAxes1_0=Axe Mastery
+m.AbilBonusAxes1_1=Bonus 4 damage
+m.AxesCritChance=[[RED]]Chance to critically strike: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Skull Splitter Length: [[YELLOW]]{0}s
+m.SkillSwords=SWORDS
+m.XPGainSwords=Attacking Monsters
+m.EffectsSwords1_0=Counter Attack
+m.EffectsSwords1_1=Reflect 50% of damage taken
+m.EffectsSwords2_0=Serrated Strikes (ABILITY)
+m.EffectsSwords2_1=25% DMG AoE, Bleed+ AoE
+m.EffectsSwords3_0=Serrated Strikes Bleed+
+m.EffectsSwords3_1=5 Tick Bleed
+m.EffectsSwords4_0=Parrying
+m.EffectsSwords4_1=Negates Damage
+m.EffectsSwords5_0=Bleed
+m.EffectsSwords5_1=Apply a bleed DoT
+m.SwordsCounterAttChance=[[RED]]Counter Attack Chance: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Bleed Length: [[YELLOW]]{0} ticks
+m.SwordsBleedChance=[[RED]]Bleed Chance: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Parry Chance: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Serrated Strikes Length: [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]NOTE: [[YELLOW]]1 Tick happens every 2 seconds
+m.SkillAcrobatics=ACROBATICS
+m.XPGainAcrobatics=Falling
+m.EffectsAcrobatics1_0=Roll
+m.EffectsAcrobatics1_1=Reduces or Negates damage
+m.EffectsAcrobatics2_0=Graceful Roll
+m.EffectsAcrobatics2_1=Twice as effective as Roll
+m.EffectsAcrobatics3_0=Dodge
+m.EffectsAcrobatics3_1=Reduce damage by half
+m.AcrobaticsRollChance=[[RED]]Roll Chance: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Graceful Roll Chance: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Dodge Chance: [[YELLOW]]{0}%
+m.SkillMining=MINING
+m.XPGainMining=Mining Stone & Ore
+m.EffectsMining1_0=Super Breaker (ABILITY)
+m.EffectsMining1_1=Speed+, Triple Drop Chance
+m.EffectsMining2_0=Double Drops
+m.EffectsMining2_1=Double the normal loot
+m.MiningDoubleDropChance=[[RED]]Double Drop Chance: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Super Breaker Length: [[YELLOW]]{0}s
+m.SkillRepair=REPAIR
+m.XPGainRepair=Repairing
+m.EffectsRepair1_0=Repair
+m.EffectsRepair1_1=Repair Iron Tools & Armor
+m.EffectsRepair2_0=Repair Mastery
+m.EffectsRepair2_1=Increased repair amount
+m.EffectsRepair3_0=Super Repair
+m.EffectsRepair3_1=Double effectiveness
+m.EffectsRepair4_0=Diamond Repair ({0}+ SKILL)
+m.EffectsRepair4_1=Repair Diamond Tools & Armor
+m.RepairRepairMastery=[[RED]]Repair Mastery: [[YELLOW]]Extra {0}% durability restored
+m.RepairSuperRepairChance=[[RED]]Super Repair Chance: [[YELLOW]]{0}%
+m.SkillUnarmed=UNARMED
+m.XPGainUnarmed=Attacking Monsters
+m.EffectsUnarmed1_0=Berserk (ABILITY)
+m.EffectsUnarmed1_1=+50% DMG, Breaks weak materials
+m.EffectsUnarmed2_0=Disarm (Players)
+m.EffectsUnarmed2_1=Drops the foes item held in hand
+m.EffectsUnarmed3_0=Unarmed Mastery
+m.EffectsUnarmed3_1=Large Damage Upgrade
+m.EffectsUnarmed4_0=Unarmed Apprentice
+m.EffectsUnarmed4_1=Damage Upgrade
+m.EffectsUnarmed5_0=Arrow Deflect
+m.EffectsUnarmed5_1=Deflect arrows
+m.AbilLockUnarmed1=LOCKED UNTIL 250+ SKILL (UNARMED APPRENTICE)
+m.AbilLockUnarmed2=LOCKED UNTIL 500+ SKILL (UNARMED MASTERY)
+m.AbilBonusUnarmed1_0=Unarmed Apprentice
+m.AbilBonusUnarmed1_1=+2 DMG Upgrade
+m.AbilBonusUnarmed2_0=Unarmed Mastery
+m.AbilBonusUnarmed2_1=+4 DMG Upgrade
+m.UnarmedArrowDeflectChance=[[RED]]Arrow Deflect Chance: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Disarm Chance: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Berserk Length: [[YELLOW]]{0}s
+m.SkillHerbalism=HERBALISM
+m.XPGainHerbalism=Harvesting Herbs
+m.EffectsHerbalism1_0=Green Terra (ABILITY)
+m.EffectsHerbalism1_1=Spread the Terra, 3x Drops
+m.EffectsHerbalism2_0=Green Thumb (Wheat)
+m.EffectsHerbalism2_1=Auto-Plants wheat when harvesting
+m.EffectsHerbalism3_0=Green Thumb (Cobble)
+m.EffectsHerbalism3_1=Cobblestone -> Mossy w/ Seeds
+m.EffectsHerbalism4_0=Food+
+m.EffectsHerbalism4_1=Modifies health received from bread/stew
+m.EffectsHerbalism5_0=Double Drops (All Herbs)
+m.EffectsHerbalism5_1=Double the normal loot
+m.HerbalismGreenTerraLength=[[RED]]Green Terra Length: [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Green Thumb Chance: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Green Thumb Stage: [[YELLOW]] Wheat grows in stage {0}
+m.HerbalismDoubleDropChance=[[RED]]Double Drop Chance: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Food+ (Rank{0}): [[YELLOW]]Bonus {0} healing
+m.SkillExcavation=EXCAVATION
+m.XPGainExcavation=Digging and finding treasures
+m.EffectsExcavation1_0=Giga Drill Breaker (ABILITY)
+m.EffectsExcavation1_1=3x Drop Rate, 3x EXP, +Speed
+m.EffectsExcavation2_0=Treasure Hunter
+m.EffectsExcavation2_1=Ability to dig for treasure
+m.ExcavationGreenTerraLength=[[RED]]Giga Drill Breaker Length: [[YELLOW]]{0}s
+mcBlockListener.PlacedAnvil=[[DARK_RED]]You have placed an anvil, anvils can repair tools and armor.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Your wolf scurries back to you...
+mcPlayerListener.AbilitiesOff=Ability use toggled off
+mcPlayerListener.AbilitiesOn=Ability use toggled on
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**ABILITIES REFRESHED\!**
+mcPlayerListener.AcrobaticsSkill=Acrobatics: 
+mcPlayerListener.ArcherySkill=Archery: 
+mcPlayerListener.AxesSkill=Axes: 
+mcPlayerListener.ExcavationSkill=Excavation: 
+mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO Godmode Disabled
+mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Godmode Enabled
+mcPlayerListener.GreenThumb=[[GREEN]]**GREEN THUMB**
+mcPlayerListener.GreenThumbFail=[[RED]]**GREEN THUMB FAIL**
+mcPlayerListener.HerbalismSkill=Herbalism: 
+mcPlayerListener.MiningSkill=Mining: 
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn is now cleared.
+mcPlayerListener.MyspawnNotExist=[[RED]]Configure your myspawn first with a bed.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn has been set to your current location.
+mcPlayerListener.MyspawnTimeNotice=You must wait {0}m {1}s to use myspawn
+mcPlayerListener.NoPermission=Insufficient mcPermissions.
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]If you don't have access to a skill it will not be shown here.
+mcPlayerListener.NotInParty=[[RED]]You are not in a party.
+mcPlayerListener.InviteSuccess=[[GREEN]]Invite sent successfully.
+mcPlayerListener.ReceivedInvite1=[[RED]]ALERT: [[GREEN]]You have received a party invite for {0} from {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Type [[GREEN]]/{0}[[YELLOW]] to accept the invite 
+mcPlayerListener.InviteAccepted=[[GREEN]]Invite Accepted. You have joined party {0}
+mcPlayerListener.NoInvites=[[RED]]You have no invites at this time
+mcPlayerListener.YouAreInParty=[[GREEN]]You are in party {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Party Members
+mcPlayerListener.LeftParty=[[RED]]You have left that party
+mcPlayerListener.JoinedParty=Joined Party: {0}
+mcPlayerListener.PartyChatOn=Party Chat only [[GREEN]]On
+mcPlayerListener.PartyChatOff=Party Chat only [[RED]]Off
+mcPlayerListener.AdminChatOn=Admin Chat only [[GREEN]]On
+mcPlayerListener.AdminChatOff=Admin Chat only [[RED]]Off
+mcPlayerListener.MOTD=[[BLUE]]This server is running mcMMO {0} type [[YELLOW]]/{1}[[BLUE]] for help.
+mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Wiki
+mcPlayerListener.PowerLevel=[[DARK_RED]]POWER LEVEL: 
+mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Power Level [[YELLOW]]Leaderboard--
+mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Leaderboard--
+mcPlayerListener.RepairSkill=Repair: 
+mcPlayerListener.SwordsSkill=Swords: 
+mcPlayerListener.TamingSkill=Taming: 
+mcPlayerListener.UnarmedSkill=Unarmed: 
+mcPlayerListener.WoodcuttingSkill=Woodcutting: 
+mcPlayerListener.YourStats=[[GREEN]][mcMMO] Stats
+Party.InformedOnJoin={0} [[GREEN]] has joined your party
+Party.InformedOnQuit={0} [[GREEN]] has left your party
+Skills.YourGreenTerra=[[GREEN]]Your [[YELLOW]]Green Terra [[GREEN]]ability is refreshed!
+Skills.YourTreeFeller=[[GREEN]]Your [[YELLOW]]Tree Feller [[GREEN]]ability is refreshed!
+Skills.YourSuperBreaker=[[GREEN]]Your [[YELLOW]]Super Breaker [[GREEN]]ability is refreshed!
+Skills.YourSerratedStrikes=[[GREEN]]Your [[YELLOW]]Serrated Strikes [[GREEN]]ability is refreshed!
+Skills.YourBerserk=[[GREEN]]Your [[YELLOW]]Berserk [[GREEN]]ability is refreshed!
+Skills.YourSkullSplitter=[[GREEN]]Your [[YELLOW]]Skull Splitter [[GREEN]]ability is refreshed!
+Skills.YourGigaDrillBreaker=[[GREEN]]Your [[YELLOW]]Giga Drill Breaker [[GREEN]]ability is refreshed!
+Skills.TooTired=[[RED]]You are too tired to use that ability again.
+Skills.ReadyHoe=[[GREEN]]**YOU READY YOUR HOE**
+Skills.LowerHoe=[[GRAY]]**YOU LOWER YOUR HOE**
+Skills.ReadyAxe=[[GREEN]]**YOU READY YOUR AXE**
+Skills.LowerAxe=[[GRAY]]**YOU LOWER YOUR AXE**
+Skills.ReadyFists=[[GREEN]]**YOU READY YOUR FISTS**
+Skills.LowerFists=[[GRAY]]**YOU LOWER YOUR FISTS**
+Skills.ReadyPickAxe=[[GREEN]]**YOU READY YOUR PICKAXE**
+Skills.LowerPickAxe=[[GRAY]]**YOU LOWER YOUR PICKAXE**
+Skills.ReadyShovel=[[GREEN]]**YOU READY YOUR SHOVEL**
+Skills.LowerShovel=[[GRAY]]**YOU LOWER YOUR SHOVEL**
+Skills.ReadySword=[[GREEN]]**YOU READY YOUR SWORD**
+Skills.LowerSword=[[GRAY]]**YOU LOWER YOUR SWORD**
+Skills.BerserkOn=[[GREEN]]**BERSERK ACTIVATED**
+Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Berserk!
+Skills.GreenTerraOn=[[GREEN]]**GREEN TERRA ACTIVATED**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Green Terra!
+Skills.TreeFellerOn=[[GREEN]]**TREE FELLER ACTIVATED**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Tree Feller!
+Skills.SuperBreakerOn=[[GREEN]]**SUPER BREAKER ACTIVATED**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Super Breaker!
+Skills.SerratedStrikesOn=[[GREEN]]**SERRATED STRIKES ACTIVATED**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Serrated Strikes!
+Skills.SkullSplitterOn=[[GREEN]]**SKULL SPLITTER ACTIVATED**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Skull Splitter!
+Skills.GigaDrillBreakerOn=[[GREEN]]**GIGA DRILL BREAKER ACTIVATED**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Giga Drill Breaker!
+Skills.GreenTerraOff=[[RED]]**Green Terra has worn off**
+Skills.TreeFellerOff=[[RED]]**Tree Feller has worn off**
+Skills.SuperBreakerOff=[[RED]]**Super Breaker has worn off**
+Skills.SerratedStrikesOff=[[RED]]**Serrated Strikes has worn off**
+Skills.BerserkOff=[[RED]]**Berserk has worn off**
+Skills.SkullSplitterOff=[[RED]]**Skull Splitter has worn off**
+Skills.GigaDrillBreakerOff=[[RED]]**Giga Drill Breaker has worn off**
+Skills.TamingUp=[[YELLOW]]Taming skill increased by {0}. Total ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Acrobatics skill increased by {0}. Total ({1})
+Skills.ArcheryUp=[[YELLOW]]Archery skill increased by {0}. Total ({1})
+Skills.SwordsUp=[[YELLOW]]Swords skill increased by {0}. Total ({1})
+Skills.AxesUp=[[YELLOW]]Axes skill increased by {0}. Total ({1})
+Skills.UnarmedUp=[[YELLOW]]Unarmed skill increased by {0}. Total ({1})
+Skills.HerbalismUp=[[YELLOW]]Herbalism skill increased by {0}. Total ({1})
+Skills.MiningUp=[[YELLOW]]Mining skill increased by {0}. Total ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Woodcutting skill increased by {0}. Total ({1})
+Skills.RepairUp=[[YELLOW]]Repair skill increased by {0}. Total ({1})
+Skills.ExcavationUp=[[YELLOW]]Excavation skill increased by {0}. Total ({1})
+Skills.FeltEasy=[[GRAY]]That felt easy.
+Skills.StackedItems=[[DARK_RED]]You can't repair stacked items
+Skills.NeedMore=[[DARK_RED]]You need more
+Skills.AdeptDiamond=[[DARK_RED]]You're not skilled enough to repair Diamond
+Skills.FullDurability=[[GRAY]]That is at full durability.
+Skills.Disarmed=[[DARK_RED]]You have been disarmed!
+mcPlayerListener.SorcerySkill=Sorcery: 
+m.SkillSorcery=SORCERY
+Sorcery.HasCast=[[GREEN]]**CASTING**[[GOLD]]
+Sorcery.Current_Mana=[[DARK_AQUA]]MP
+Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
+Sorcery.Cost=[[RED]][COST] {0} MP
+Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Out Of Mana [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=THUNDER
+Sorcery.Curative.Self=CURE SELF
+Sorcery.Curative.Other=CURE OTHER
+m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]**BEAST LORE**
+Combat.BeastLoreOwner=[[DARK_AQUA]]Owner ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/8)

+ 300 - 0
mcMMO/com/gmail/nossr50/locale/locale_fi.properties

@@ -0,0 +1,300 @@
+Combat.WolfExamine=[[GREEN]]**Tutkit sutta käyttämällä Pedon Tarinaa**
+Combat.WolfShowMaster=[[DARK_GREEN]]Pedon isäntä : {0}
+Combat.Ignition=[[RED]]**SYTYTYS**
+Combat.BurningArrowHit=[[DARK_RED]]Palava nuoli osui sinuun\!
+Combat.TouchedFuzzy=[[DARK_RED]]Touched Fuzzy. Felt Dizzy.
+Combat.TargetDazed=Kohde [[DARK_RED]]tyrmätty
+Combat.WolfNoMaster=[[GRAY]]Tällä pedolla ei ole isäntää...
+Combat.WolfHealth=[[GREEN]]Tämän pedon terveys on {0}
+Combat.StruckByGore=[[RED]]**SINUA ON PISTETTY**
+Combat.Gore=[[GREEN]]**PISTO**
+Combat.ArrowDeflect=[[WHITE]]**NUOLI TORJUTTU**
+Item.ChimaeraWingFail=**KHIMAIRAN SIIVEN KÄYTTÖ EPÄONNISTUI\!**
+Item.ChimaeraWingPass=**KHIMAIRAN SIIPI**
+Item.InjuredWait=Sinua on haavoitettu äskettäin joten joudut odottaa tämän käyttöä. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]Tarvitset lisää sulkia..
+m.mccPartyCommands=[[GREEN]]--RYHMÄKOMENNOT--
+m.mccParty=[party name] [[RED]]- Luo/liity nimettyyn ryhmään
+m.mccPartyQ=[[RED]]- Lähde ryhmästä
+m.mccPartyToggle=[[RED]] - Laita ryhmäjuttelu päälle/pois
+m.mccPartyInvite=[player name] [[RED]]- Lähetä ryhmäkutsu
+m.mccPartyAccept=[[RED]]- Hyväksy ryhmäkutsu
+m.mccPartyTeleport=[party member name] [[RED]]- Siirry ryhmän jäsenen luo
+m.mccOtherCommands=[[GREEN]]--MUUT KOMENNOT--
+m.mccStats=- Näytä mcMMO tilastosi
+m.mccLeaderboards=- Tulostaulukko
+m.mccMySpawn=- Siirtää sinut myspawniin
+m.mccClearMySpawn=- Tyhjää myspawnisi
+m.mccToggleAbility=- Laita taitojen aktivointi oikealla näppäimellä päälle/pois
+m.mccAdminToggle=- Laita admin juttelu päälle/pois
+m.mccWhois=[playername] [[RED]]- Näytä yksityiskohtaiset tiedot pelaajasta
+m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Muokkaa kohdetta
+m.mccMcGod=- "God Mode"
+m.mccSkillInfo=[skillname] [[RED]]- Näytä ykistyiskohtaiset tiedot taidosta
+m.mccModDescription=[[RED]]- Lue lyhyt kuvaus modista
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]KOKEMUSPISTEIDEN MÄÄRÄ: [[WHITE]]{0}
+m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
+m.AbilityLockTemplate=[[GRAY]]{0}
+m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
+m.Effects=EFEKTIT
+m.YourStats=TILASTOSI
+m.SkillTaming=KESYTTÄMINEN
+m.XPGainTaming=Susien satuttaminen
+m.EffectsTaming1_0=Pedon Tarina
+m.EffectsTaming1_1=Luulla lyöminen tutkii susia
+m.EffectsTaming2_0=Pisto
+m.EffectsTaming2_1=Kriittinen Isku joka lisää Verenvuodon
+m.EffectsTaming3_0=Teroitetut Kynnet
+m.EffectsTaming3_1=Tuhoamis Bonus
+m.EffectsTaming4_0=Ympäristötietoinen
+m.EffectsTaming4_1=Kaktus/Laavapelko, immuuni Putousvahingolle
+m.EffectsTaming5_0=Paksu Turkki
+m.EffectsTaming5_1=Vahingon vähennys, Tulenkestävä
+m.EffectsTaming6_0=Räjähdyskestävä
+m.EffectsTaming6_1=Räjähdysvahingon vähennys
+m.AbilLockTaming1=LUKITTU KUNNES 100+ TAITO (YMPÄRISTÖTIETOINEN)
+m.AbilLockTaming2=LUKITTU KUNNES 250+ TAITO (PAKSU TURKKI)
+m.AbilLockTaming3=LUKITTU KUNNES 500+ TAITO (RÄJÄHDYSKESTÄVÄ)
+m.AbilLockTaming4=LUKITTU KUNNES 750+ TAITO (TEROITETUT KYNNET)
+m.AbilBonusTaming1_0=Ympäristötietoinen
+m.AbilBonusTaming1_1=Sudet karttavat vaaraa
+m.AbilBonusTaming2_0=Paksu Turkki
+m.AbilBonusTaming2_1=Puolitettu vahinko, Tulenkestävä
+m.AbilBonusTaming3_0=Räjähdyskestävä
+m.AbilBonusTaming3_1=Räjähteet vahingoittavat 1/6 vähemmän
+m.AbilBonusTaming4_0=Teroitetut Kynnet
+m.AbilBonusTaming4_1=+2 Vahinko
+m.TamingGoreChance=[[RED]]Piston todennäköisyys: [[YELLOW]]{0}%
+m.SkillWoodCutting=PUUN KAATO
+m.XPGainWoodCutting=Puiden pilkkominen
+m.EffectsWoodCutting1_0=Puunkaataja (TAITO)
+m.EffectsWoodCutting1_1=Räjäytä puita
+m.EffectsWoodCutting2_0=Lehdenpuhallin
+m.EffectsWoodCutting2_1=Puhalla lehtiä pois
+m.EffectsWoodCutting3_0=Tuplasaalis
+m.EffectsWoodCutting3_1=Tuplaa normaali saalis
+m.AbilLockWoodCutting1=LUKITTU KUNNES 100+ TAITO (LEHDENPUHALLIN)
+m.AbilBonusWoodCutting1_0=Lehdenpuhallin
+m.AbilBonusWoodCutting1_1=Puhalla lehtiä pois
+m.WoodCuttingDoubleDropChance=[[RED]]Tuplasaaliin todennäköisyys: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Puunkaatajan kesto: [[YELLOW]]{0}s
+m.SkillArchery=JOUSIAMMUNTA
+m.XPGainArchery=Hyökkäämällä hirviöiden kimppuun
+m.EffectsArchery1_0=Sytytys
+m.EffectsArchery1_1=25% Todennäköisyys että vihollinen syttyy tuleen
+m.EffectsArchery2_0=Pökerrys (Pelaajat)
+m.EffectsArchery2_1=Saa viholliset pois tolaltaan
+m.EffectsArchery3_0=Vahinko+
+m.EffectsArchery3_1=Muokkaa vahinkoa
+m.EffectsArchery4_0=Nuolenkeräys
+m.EffectsArchery4_1=Todennäköisyys kerätä nuolia raadoista
+m.ArcheryDazeChance=[[RED]]Todennäköisyys Pökerryttää: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Todennäköisyys kerätä nuolia: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Sytytyksen kesto: [[YELLOW]]{0} sekuntia
+m.ArcheryDamagePlus=[[RED]]Vahinko+ (Rank{0}): [[YELLOW]]Bonus {0} vahinko
+m.SkillAxes=KIRVEET
+m.XPGainAxes=Hyökkäämällä hirviöiden kimppuun
+m.EffectsAxes1_0=Kallonhalkoja (TAITO)
+m.EffectsAxes1_1=Tee aluevahinkoa
+m.EffectsAxes2_0=Kriittiset Iskut
+m.EffectsAxes2_1=Tuplavahinko
+m.EffectsAxes3_0=Kirveiden Herra (500 TAITO)
+m.EffectsAxes3_1=Muokkaa vahinkoa
+m.AbilLockAxes1=LUKITTU KUNNES 500+ TAITO (KIRVEIDEN HERRA)
+m.AbilBonusAxes1_0=Kirveiden Herra
+m.AbilBonusAxes1_1=+4 Vahinko
+m.AxesCritChance=[[RED]]Todennäköisyys iskeä kriittisesti: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Kallonhalkojan kesto: [[YELLOW]]{0}s
+m.SkillSwords=MIEKAT
+m.XPGainSwords=Hyökkäämällä hirviöiden kimppuun
+m.EffectsSwords1_0=Vastaisku
+m.EffectsSwords1_1=Kimmota 50% saadusta vahingosta
+m.EffectsSwords2_0=Sahalaitaiset Iskut (TAITO)
+m.EffectsSwords2_1=25% Aluevahinko, Verenvuoto+ Aluevahinko
+m.EffectsSwords3_0=Sahalaitaiset Iskut Verenvuoto+
+m.EffectsSwords3_1=5 Aiheuta Verenvuotoa
+m.EffectsSwords4_0=Torjuminen
+m.EffectsSwords4_1=Estää saadun vahingon
+m.EffectsSwords5_0=Verenvuoto
+m.EffectsSwords5_1=Lisää Verenvuoto
+m.SwordsCounterAttChance=[[RED]]Vastaiskun todennäköisyys: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Verenvuodon kesto: [[YELLOW]]{0} vuotoa
+m.SwordsBleedChance=[[RED]]Verenvuodon todennäköisyys: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Torjumisen todennäköisyys: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Sahalaitaisten Iskujen kesto: [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]HUOMAA: [[YELLOW]]1 vuoto tapahtuu joka kahdes sekunti
+m.SkillAcrobatics=AKROBATIA
+m.XPGainAcrobatics=Tippumalla
+m.EffectsAcrobatics1_0=Kieriminen
+m.EffectsAcrobatics1_1=Vähentää tai estää vahinkoa
+m.EffectsAcrobatics2_0=Sulava Kieriminen
+m.EffectsAcrobatics2_1=Tuplasti tehokkaampi kuin Kieriminen
+m.EffectsAcrobatics3_0=Väistö
+m.EffectsAcrobatics3_1=Vähentää vahingon määrän puoleen
+m.AcrobaticsRollChance=[[RED]]Kierimisen todennäköisyys: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Sulavan Kierimisen todennäköisyys: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Väistön todennäköisyys: [[YELLOW]]{0}%
+m.SkillMining=LOUHINTA
+m.XPGainMining=Louhimalla kiveä ja malmia
+m.EffectsMining1_0=Supermurskain (TAITO)
+m.EffectsMining1_1=Nopeus+, Triplaa saaliin tippumistodennäköisyys
+m.EffectsMining2_0=Tuplasaalis
+m.EffectsMining2_1=Tuplaa normaali saaliin määrä
+m.MiningDoubleDropChance=[[RED]]Tuplasaaliin todennäköisyys: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Supermurskaimen kesto: [[YELLOW]]{0}s
+m.SkillRepair=KORJAUS
+m.XPGainRepair=Korjaamalla
+m.EffectsRepair1_0=Korjaa
+m.EffectsRepair1_1=Korjaa rautatyökaluja ja haarniskoja
+m.EffectsRepair2_0=Korjausten Herra
+m.EffectsRepair2_1=Lisätty korjausten määrä
+m.EffectsRepair3_0=Superkorjaus
+m.EffectsRepair3_1=Tuplatehokkuus
+m.EffectsRepair4_0=Timanttikorjaus ({0}+ TAITO)
+m.EffectsRepair4_1=Korjaa timanttityökaluja ja haarniskoja
+m.RepairRepairMastery=[[RED]]Korjausten Herra: [[YELLOW]]Extra {0}% kestävyyttä palautettu
+m.RepairSuperRepairChance=[[RED]]Superkorjauksen todennäköisyys: [[YELLOW]]{0}%
+m.SkillUnarmed=ASEISTAMATON
+m.XPGainUnarmed=Hyökkäämällä hirviöiden kimppuun
+m.EffectsUnarmed1_0=Raivopää (TAITO)
+m.EffectsUnarmed1_1=+50% vahinko, rikkoo heikkoja materiaaleja
+m.EffectsUnarmed2_0=Aseista riisuminen (Pelaajat)
+m.EffectsUnarmed2_1=Pudottaa vihollisen esineen kädestä
+m.EffectsUnarmed3_0=Aseistamattomuuden Herra
+m.EffectsUnarmed3_1=Suuri vahingonlisäys
+m.EffectsUnarmed4_0=Aseistamattomuuden Aloittelija
+m.EffectsUnarmed4_1=Vahingonlisäys
+m.EffectsUnarmed5_0=Nuolentorjunta
+m.EffectsUnarmed5_1=Torjuu nuolia
+m.AbilLockUnarmed1=LUKITTU KUNNES 250+ TAITO (ASEISTAMATTOMUUDEN ALOITTELIJA)
+m.AbilLockUnarmed2=LUKITTU KUNNES 500+ TAITO (ASEISTAMATTOMUUDEN HERRA)
+m.AbilBonusUnarmed1_0=Aseistamattomuuden Aloittelija
+m.AbilBonusUnarmed1_1=+2 Vahinko
+m.AbilBonusUnarmed2_0=Aseistamattomuuden Herra
+m.AbilBonusUnarmed2_1=+4 Vahinko
+m.UnarmedArrowDeflectChance=[[RED]]Nuolentorjunnan todennäköisyys: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Aseista riisumisen todennäköisyys: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Raivopään kesto: [[YELLOW]]{0}s
+m.SkillHerbalism=YRTTIHOITO
+m.XPGainHerbalism=Keräämällä yrttejä
+m.EffectsHerbalism1_0=Vihermaa (TAITO)
+m.EffectsHerbalism1_1=Levitä vihreyttä, 3x saalis
+m.EffectsHerbalism2_0=Viherpeukalo (Vehnä)
+m.EffectsHerbalism2_1=Istuttaa vehnää automaattisesti kun keräät vehnää
+m.EffectsHerbalism3_0=Viherpeukalo (Mukulakivi)
+m.EffectsHerbalism3_1=Mukulakivi -> Sammaleinen mukulakivi ja siemeniä
+m.EffectsHerbalism4_0=Ruoka+
+m.EffectsHerbalism4_1=Muokkaa terveyttä jota saat leivästä/muhennoksesta
+m.EffectsHerbalism5_0=Tuplasaalis (Kaikki yrtit)
+m.EffectsHerbalism5_1=Tuplaa normaali saaliin määrä
+m.HerbalismGreenTerraLength=[[RED]]Vihermaan kesto: [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Viherpeukalon todennäköisyys: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Viherpeukalon vaihe: [[YELLOW]] Vehnä kasvaa {0}:ssa vaiheessa
+m.HerbalismDoubleDropChance=[[RED]]Tuplasaaliin todennäköisyys: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Ruoka+ (Rank{0}): [[YELLOW]]Bonus {0} terveyden määrä
+m.SkillExcavation=KAIVANTO
+m.XPGainExcavation=Kaivamalla ja löytämällä aarteita
+m.EffectsExcavation1_0=Giga Drill Breaker (TAITO)
+m.EffectsExcavation1_1=3x saaliin määrä, 3x kokemuspisteiden määrä, +Nopeus
+m.EffectsExcavation2_0=Aarteenmetsästäjä
+m.EffectsExcavation2_1=Taito jonka avulla voit kaivaa aarteita
+m.ExcavationGreenTerraLength=[[RED]]Giga Drill Breaker kesto: [[YELLOW]]{0}s
+mcBlockListener.PlacedAnvil=[[DARK_RED]]Olet asettanut alasimen maahan, sillä voit korjata työkaluja ja haarniskoja.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Sutesi kipittää takaisin luoksesi...
+mcPlayerListener.AbilitiesOff=Taitojen käyttö pois päältä
+mcPlayerListener.AbilitiesOn=Taitojen käyttö päällä
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**TAIDOT PÄIVITETTY\!**
+mcPlayerListener.AcrobaticsSkill=[[YELLOW]]Akrobatia: 
+mcPlayerListener.ArcherySkill=[[YELLOW]]Jousiammunta: 
+mcPlayerListener.AxesSkill=[[YELLOW]]Kirveet: 
+mcPlayerListener.ExcavationSkill=[[YELLOW]]Kaivanto: 
+mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO Godmode pois päältä
+mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Godmode päällä
+mcPlayerListener.GreenThumb=[[GREEN]]**VIHERPEUKALO**
+mcPlayerListener.GreenThumbFail=[[RED]]**VIHERPEUKALO EPÄONNISTUI**
+mcPlayerListener.HerbalismSkill=[[YELLOW]]Yrttihoito: 
+mcPlayerListener.MiningSkill=[[YELLOW]]Kaivanto: 
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn on tyhjätty.
+mcPlayerListener.MyspawnNotExist=[[RED]]Määrää myspawnisi ensin laittamalla sänky maahan.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn on asetettu tämänhetkiseen sijaintiisi.
+mcPlayerListener.MyspawnTimeNotice=Sinun pitää odottaa {0}m {1}s käyttääksesi myspawnia
+mcPlayerListener.NoPermission=Puutteelliset oikeudet (mcPermissions)
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Jos sinulla ei ole käyttöoikeutta johonkin taitoon, sitä ei näytetä täällä.
+mcPlayerListener.NotInParty=[[RED]]Et ole ryhmässä.
+mcPlayerListener.InviteSuccess=[[GREEN]]Kutsu lähetetty.
+mcPlayerListener.ReceivedInvite1=[[RED]]HUOMIO: [[GREEN]]Olet saanut ryhmäkutsun ryhmään {0} pelaajalta {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Kirjoita [[GREEN]]/{0}[[YELLOW]] hyväksyäksesi kutsun 
+mcPlayerListener.InviteAccepted=[[GREEN]]Kutsu hyväksytty. Olet liittynyt ryhmään {0}
+mcPlayerListener.NoInvites=[[RED]]Sinulla ei ole kutsuja
+mcPlayerListener.YouAreInParty=[[GREEN]]Olet ryhmässä {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Ryhmän jäsenet
+mcPlayerListener.LeftParty=[[RED]]Olet lähtenyt ryhmästä
+mcPlayerListener.JoinedParty=Liityit ryhmään: {0}
+mcPlayerListener.PartyChatOn=Vain ryhmäjuttelu [[GREEN]]Päällä
+mcPlayerListener.PartyChatOff=Vain ryhmäjuttelu [[RED]]Pois päältä
+mcPlayerListener.AdminChatOn=Vain admin juttelu [[GREEN]]Päällä
+mcPlayerListener.AdminChatOff=Vain admin juttelu [[RED]]Pois päältä
+mcPlayerListener.MOTD=[[BLUE]]Tällä serverillä on mcMMO {0} kirjoita [[YELLOW]]/{1}[[BLUE]] apua varten.
+mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Wiki
+mcPlayerListener.PowerLevel=[[DARK_RED]]VOIMATASO: 
+mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Voimataso [[YELLOW]]Tulostaulukko--
+mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Tulostaulukko--
+mcPlayerListener.RepairSkill=[[YELLOW]]Korjaus: 
+mcPlayerListener.SwordsSkill=[[YELLOW]]Miekat: 
+mcPlayerListener.TamingSkill=[[YELLOW]]Kesytys: 
+mcPlayerListener.UnarmedSkill=[[YELLOW]]Aseistamattomuus: 
+mcPlayerListener.WoodcuttingSkill=[[YELLOW]]Puunkaato: 
+mcPlayerListener.YourStats=[[GREEN]]Sinun MMO tilastosi
+Party.InformedOnJoin={0} [[GREEN]] on liittynyt ryhmään
+Party.InformedOnQuit={0} [[GREEN]] on lähtenyt ryhmästä
+Skills.YourGreenTerra=[[GREEN]]Your [[YELLOW]]Green Terra [[GREEN]]ability is refreshed!
+Skills.YourTreeFeller=[[GREEN]]Your [[YELLOW]]Tree Feller [[GREEN]]ability is refreshed!
+Skills.YourSuperBreaker=[[GREEN]]Your [[YELLOW]]Super Breaker [[GREEN]]ability is refreshed!
+Skills.YourSerratedStrikes=[[GREEN]]Your [[YELLOW]]Serrated Strikes [[GREEN]]ability is refreshed!
+Skills.YourBerserk=[[GREEN]]Your [[YELLOW]]Berserk [[GREEN]]ability is refreshed!
+Skills.YourSkullSplitter=[[GREEN]]Your [[YELLOW]]Skull Splitter [[GREEN]]ability is refreshed!
+Skills.YourGigaDrillBreaker=[[GREEN]]Your [[YELLOW]]Giga Drill Breaker [[GREEN]]ability is refreshed!
+Skills.TooTired=[[RED]]You are too tired to use that ability again.
+Skills.ReadyHoe=[[GREEN]]**YOU READY YOUR HOE**
+Skills.LowerHoe=[[GRAY]]**YOU LOWER YOUR HOE**
+Skills.ReadyAxe=[[GREEN]]**YOU READY YOUR AXE**
+Skills.LowerAxe=[[GRAY]]**YOU LOWER YOUR AXE**
+Skills.ReadyFists=[[GREEN]]**YOU READY YOUR FISTS**
+Skills.LowerFists=[[GRAY]]**YOU LOWER YOUR FISTS**
+Skills.ReadyPickAxe=[[GREEN]]**YOU READY YOUR PICKAXE**
+Skills.LowerPickAxe=[[GRAY]]**YOU LOWER YOUR PICKAXE**
+Skills.ReadyShovel=[[GREEN]]**YOU READY YOUR SHOVEL**
+Skills.LowerShovel=[[GRAY]]**YOU LOWER YOUR SHOVEL**
+Skills.ReadySword=[[GREEN]]**YOU READY YOUR SWORD**
+Skills.LowerSword=[[GRAY]]**YOU LOWER YOUR SWORD**
+Skills.GreenTerraOn=[[GREEN]]**GREEN TERRA ACTIVATED**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Green Terra!
+Skills.TreeFellerOn=[[GREEN]]**TREE FELLER ACTIVATED**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Tree Feller!
+Skills.SuperBreakerOn=[[GREEN]]**SUPER BREAKER ACTIVATED**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Super Breaker!
+Skills.SerratedStrikesOn=[[GREEN]]**SERRATED STRIKES ACTIVATED**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Serrated Strikes!
+Skills.SkullSplitterOn=[[GREEN]]**SKULL SPLITTER ACTIVATED**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Skull Splitter!
+Skills.GigaDrillBreakerOn=[[GREEN]]**GIGA DRILL BREAKER ACTIVATED**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Giga Drill Breaker!
+Skills.GreenTerraOff=[[RED]]**Green Terra has worn off**
+Skills.TreeFellerOff=[[RED]]**Tree Feller has worn off**
+Skills.SuperBreakerOff=[[RED]]**Super Breaker has worn off**
+Skills.SerratedStrikesOff=[[RED]]**Serrated Strikes has worn off**
+Skills.BerserkOff=[[RED]]**Berserk has worn off**
+Skills.SkullSplitterOff=[[RED]]**Skull Splitter has worn off**
+Skills.GigaDrillBreakerOff=[[RED]]**Giga Drill Breaker has worn off**
+Skills.TamingUp=[[YELLOW]]Taming skill increased by {0}. Total ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Acrobatics skill increased by {0}. Total ({1})
+Skills.ArcheryUp=[[YELLOW]]Archery skill increased by {0}. Total ({1})
+Skills.SwordsUp=[[YELLOW]]Swords skill increased by {0}. Total ({1})
+Skills.AxesUp=[[YELLOW]]Axes skill increased by {0}. Total ({1})
+Skills.UnarmedUp=[[YELLOW]]Unarmed skill increased by {0}. Total ({1})
+Skills.HerbalismUp=[[YELLOW]]Herbalism skill increased by {0}. Total ({1})
+Skills.MiningUp=[[YELLOW]]Mining skill increased by {0}. Total ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Woodcutting skill increased by {0}. Total ({1})
+Skills.RepairUp=[[YELLOW]]Repair skill increased by {0}. Total ({1})
+Skills.ExcavationUp=[[YELLOW]]Excavation skill increased by {0}. Total ({1})

+ 321 - 0
mcMMO/com/gmail/nossr50/locale/locale_fr.properties

@@ -0,0 +1,321 @@
+Combat.WolfExamine=[[GREEN]]**Vous exminez le loup avec le Beast Lore**
+Combat.WolfShowMaster=[[DARK_GREEN]]Le Maitre des betes \: {0}
+Combat.Ignition=[[RED]]**ALLUMAGE**
+Combat.BurningArrowHit=[[DARK_RED]]Vous avez été frappé par une flèche brûlante\!
+Combat.TouchedFuzzy=[[DARK_RED]]Vous voyez floue. Vous vous senter étourdi.
+Combat.TargetDazed=La cible a été [[DARK_RED]]Étourdi
+Combat.WolfNoMaster=[[GRAY]]Cette bete n'a pas de maitre...
+Combat.WolfHealth=[[GREEN]]Cette bete a {0} de Vie 
+Combat.StruckByGore=[[RED]]**FRAPPE JUSQU'AU SANG**
+Combat.Gore=[[GREEN]]**SANG**
+Combat.ArrowDeflect=[[WHITE]]**FLECHE DEVIER**
+Item.ChimaeraWingFail=**CHIMAERA WING MANQUE\!**
+Item.ChimaeraWingPass=**CHIMAERA WING**
+Item.InjuredWait=Vous avez été blessé récemment et vous devez attendre pour l'utiliser. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]Vous avez besoin de plus de plumes..
+m.mccPartyCommands=[[GREEN]]--COMMANDES PARTIE--
+m.mccParty=[party name] [[RED]]- Créer / Rejoignez partie désignée
+m.mccPartyQ=[[RED]]- Vous quitter la partie en cours
+m.mccPartyToggle=[[RED]] - Active le Chat en groupe
+m.mccPartyInvite=[player name] [[RED]]- Envoye une invite
+m.mccPartyAccept=[[RED]]- Accepter l'invitation
+m.mccPartyTeleport=[party member name] [[RED]]- Vous teleporte vers la partie
+m.mccOtherCommands=[[GREEN]]--AUTRES COMMANDES--
+m.mccStats=- Voir les statistiques de votre mcMMO
+m.mccLeaderboards=- Classements
+m.mccMySpawn=- Téléporte au myspawn
+m.mccClearMySpawn=- Efface le MySpawn
+m.mccToggleAbility=- Active les capacités avec un clic droit
+m.mccAdminToggle=- Active le chat admin
+m.mccWhois=[playername] [[RED]]- Voir les infos détaillées du joueur
+m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Modifier 
+m.mccMcGod=- Mod dieu
+m.mccSkillInfo=[skillname] [[RED]]- Afficher des informations détaillées sur une compétence
+m.mccModDescription=[[RED]]- Affiche la description de Mcmmo
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]XP GAGNER: [[WHITE]]{0}
+m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
+m.AbilityLockTemplate=[[GRAY]]{0}
+m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
+m.Effects=EFFETS
+m.YourStats=VOS STATISTIQUES
+m.SkillTaming=APPRIVOISER
+m.XPGainTaming=Attaque avec les loups
+m.EffectsTaming1_0=Connaissance des betes
+m.EffectsTaming1_1=Bone-whacking inspects wolves
+m.EffectsTaming2_0=Morsures
+m.EffectsTaming2_1=Des coups critiques qui s'applique a la morsures
+m.EffectsTaming3_0=Griffes aiguisées
+m.EffectsTaming3_1=Bonus de dégâts
+m.EffectsTaming4_0=Conscient de l'environnement
+m.EffectsTaming4_1=Resistance Cactus/Lava Phobia
+m.EffectsTaming5_0=Epaisse fourrure
+m.EffectsTaming5_1=Réduction DMG, Résistance au feu
+m.EffectsTaming6_0=Résistance aux chocs
+m.EffectsTaming6_1=Réduction des dommages explosifs
+m.AbilLockTaming1=Verrouillé jusqu'à+ SKILL (Previent du danger)
+m.AbilLockTaming2=Verrouillé jusqu'à 250+ SKILL (épaisse fourrure)
+m.AbilLockTaming3=Verrouillé jusqu'à 500+ SKILL (antichoc)
+m.AbilLockTaming4=Verrouillé jusqu'à 750+ SKILL (Griffes aiguisées)
+m.AbilBonusTaming1_0=Conscient de l'environnement
+m.AbilBonusTaming1_1=Les loups previent du danger
+m.AbilBonusTaming2_0=Epaisse fourrure
+m.AbilBonusTaming2_1=Réduit de moitié les dommages dus à la résistance au feu
+m.AbilBonusTaming3_0=Résistance aux chocs
+m.AbilBonusTaming3_1=1/6 des explotion par rapport au dommages normaux
+m.AbilBonusTaming4_0=Griffes aiguisées
+m.AbilBonusTaming4_1=+2 Dommages
+m.TamingGoreChance=[[RED]]Chancede Morsures: [[YELLOW]]{0}%
+m.SkillWoodCutting=COUPAGES DE BOIS
+m.XPGainWoodCutting=Abattre des arbres
+m.EffectsWoodCutting1_0=Arbre Félée (CAPACITE)
+m.EffectsWoodCutting1_1=Faire exploser des arbres
+m.EffectsWoodCutting2_0=Soufler les feuilles
+m.EffectsWoodCutting2_1=Soufler les feuilles encore +
+m.EffectsWoodCutting3_0=Double Drops
+m.EffectsWoodCutting3_1=Double du butin normal
+m.AbilLockWoodCutting1=Verrouillé jusqu'à 100+ SKILL (LEAF BLOWER)
+m.AbilBonusWoodCutting1_0=Soufler les feuilles
+m.AbilBonusWoodCutting1_1=Soufler les feuilles encore +
+m.WoodCuttingDoubleDropChance=[[RED]]Chance de drop doubler: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Temps de votre Arbre Félée: [[YELLOW]]{0}s
+m.SkillArchery=TIR A L'ARC
+m.XPGainArchery=Attaque de monstre
+m.EffectsArchery1_0=Bruler
+m.EffectsArchery1_1=25% de chance que l'ennemi s'enflamment
+m.EffectsArchery2_0=Etourdir (les joueurs)
+m.EffectsArchery2_1=Ennemis désoriente
+m.EffectsArchery3_0=Dommages+
+m.EffectsArchery3_1=Modifie les dommages
+m.EffectsArchery4_0=Récupération de fleches
+m.EffectsArchery4_1=Chance pour récupérer les flèches sur un cadavres
+m.ArcheryDazeChance=[[RED]]Chance d'étourdir: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Chance pour récupérer les flèches: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Durée du feux: [[YELLOW]]{0} seconds
+m.ArcheryDamagePlus=[[RED]]Dégâts+ (Rank{0}): [[YELLOW]]Bonus {0} dommages
+m.SkillAxes=HACHES
+m.XPGainAxes=Attaque de monstre
+m.EffectsAxes1_0=Casseur de tete (capacité)
+m.EffectsAxes1_1=Frappes de dommages AoE 
+m.EffectsAxes2_0=Coup critiques
+m.EffectsAxes2_1=Double Dommages
+m.EffectsAxes3_0=Maîtrise de la hache (500 SKILL)
+m.EffectsAxes3_1=Modifie les dommages
+m.AbilLockAxes1=Verrouillé jusqu'à 500+ SKILL (MAITRISE DE LA HACHE)
+m.AbilBonusAxes1_0=Maîtrise de la hache
+m.AbilBonusAxes1_1=4 Blessures en bonus
+m.AxesCritChance=[[RED]]Chance de coup critique: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Temps de votre Casseur de tete: [[YELLOW]]{0}s
+m.SkillSwords=EPEE
+m.XPGainSwords=Attaque de monstre
+m.EffectsSwords1_0=Contre-Attaque
+m.EffectsSwords1_1=Renvoie 50% des degats subis
+m.EffectsSwords2_0=Epee cranté (capacité)
+m.EffectsSwords2_1=25% DMG AoE, saignement+ AoE
+m.EffectsSwords3_0=Epee cranté et saignement+
+m.EffectsSwords3_1=5 saignement
+m.EffectsSwords4_0=Parer
+m.EffectsSwords4_1=Inverse les dommages
+m.EffectsSwords5_0=Saignement
+m.EffectsSwords5_1=Applique un saignement DoT
+m.SwordsCounterAttChance=[[RED]]Chance de Contre-Attaque : [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]La longueur du saignement : [[YELLOW]]{0} ticks
+m.SwordsBleedChance=[[RED]]Chance de faire saigner: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Chance de parer: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Temps de votre epée cranté: [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]NOTE: [[YELLOW]]1 Le Tick va durer 2 secondes
+m.SkillAcrobatics=VOLTIGE
+m.XPGainAcrobatics=Chute
+m.EffectsAcrobatics1_0=Roulade
+m.EffectsAcrobatics1_1=Réduit ou Inverse les dommages
+m.EffectsAcrobatics2_0=Super roulade
+m.EffectsAcrobatics2_1=Roulade deux fois plus efficace
+m.EffectsAcrobatics3_0=Esquive
+m.EffectsAcrobatics3_1=Domages reduit de moitié
+m.AcrobaticsRollChance=[[RED]]Chance de rouler: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Chance de super roulade: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Chance d'esquive: [[YELLOW]]{0}%
+m.SkillMining=MINAGE
+m.XPGainMining=Extraction de pierre et de minerais
+m.EffectsMining1_0=Super Breaker (capacité)
+m.EffectsMining1_1=Vitesse+, Triple Chance de loot
+m.EffectsMining2_0=Double Drops
+m.EffectsMining2_1=Double du butin normal
+m.MiningDoubleDropChance=[[RED]]Double Chance de drop: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Super Breaker Length: [[YELLOW]]{0}s
+m.SkillRepair=RÉPARATION
+m.XPGainRepair=Réparation
+m.EffectsRepair1_0=Réparer
+m.EffectsRepair1_1=Réparation Outils en fer & Armure
+m.EffectsRepair2_0=Maitre en reparation
+m.EffectsRepair2_1=Augmentation des réparations
+m.EffectsRepair3_0=Super Réparation
+m.EffectsRepair3_1=Double efficacité
+m.EffectsRepair4_0=Réparation du Diamant ({0}+ compétence)
+m.EffectsRepair4_1=Réparation des outils diamant & Armure
+m.RepairRepairMastery=[[RED]]Maitre en reparation: [[YELLOW]]En plus {0}% durabilité restauré
+m.RepairSuperRepairChance=[[RED]]Chance de super réparation: [[YELLOW]]{0}%
+m.SkillUnarmed=Sans armes
+m.XPGainUnarmed=Attaque de monstre
+m.EffectsUnarmed1_0=Berserk (CAPACITE)
+m.EffectsUnarmed1_1=+50% DMG, Rend matériaux faibles
+m.EffectsUnarmed2_0=Désarmer (Players)
+m.EffectsUnarmed2_1=Vole l'objet ennemis dans la main
+m.EffectsUnarmed3_0=Maitres en désarmement
+m.EffectsUnarmed3_1=De gros dégâts ajouter
+m.EffectsUnarmed4_0=Apprentissage désarmement
+m.EffectsUnarmed4_1=Dommages ajouter
+m.EffectsUnarmed5_0=Fleches dévier
+m.EffectsUnarmed5_1=Déviation de fleches
+m.AbilLockUnarmed1=Verrouillé jusqu'à 250+ SKILL (APPRENTIE DESARMER)
+m.AbilLockUnarmed2=Verrouillé jusqu'à 500+ SKILL (MAITRES EN DESARMEMENT)
+m.AbilBonusUnarmed1_0=Apprentissage désarmement
+m.AbilBonusUnarmed1_1=+2 DMG ajouter
+m.AbilBonusUnarmed2_0=Maitres en désarmement
+m.AbilBonusUnarmed2_1=+4 DMG ajouter
+m.UnarmedArrowDeflectChance=[[RED]]Chance de Fleches dévier: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Chance de Désarmer: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Temps de votre Berserk: [[YELLOW]]{0}s
+m.SkillHerbalism=Herboristerie
+m.XPGainHerbalism=La récolte des herbes
+m.EffectsHerbalism1_0=Main verte (CAPACITE)
+m.EffectsHerbalism1_1=Propage la Main verte, 3x Items
+m.EffectsHerbalism2_0=Main verte (Wheat)
+m.EffectsHerbalism2_1=Auto-plantes lors de la récolte de blé
+m.EffectsHerbalism3_0=Main verte (Cobble)
+m.EffectsHerbalism3_1=Cobblestone -> Mossy w/ Seeds
+m.EffectsHerbalism4_0=Nouriture+
+m.EffectsHerbalism4_1=Modifie la santé a reçu du pain / ragoût
+m.EffectsHerbalism5_0=Double items (Toutes les cultures)
+m.EffectsHerbalism5_1=Double tout les items
+m.HerbalismGreenTerraLength=[[RED]]Temps de la Main verte: [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Main verte Taux de chance: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Main verte par niveaux: [[YELLOW]] Wheat grows in stage {0}
+m.HerbalismDoubleDropChance=[[RED]]Double Chance de dropper: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Nourriture+ (Rank{0}): [[YELLOW]]Bonus {0} curatif
+m.SkillExcavation=CREUSAGE
+m.XPGainExcavation=Creuser et de trouver des trésors
+m.EffectsExcavation1_0=Super broyeur (Capacité)
+m.EffectsExcavation1_1=3x Drop Rate, 3x EXPERIENCE, +Vitesse
+m.EffectsExcavation2_0=Chercheur de trésor
+m.EffectsExcavation2_1=Capacité de trouver un trésor
+m.ExcavationGreenTerraLength=[[RED]]Temps de votre Super broyeur: [[YELLOW]]{0}s
+mcBlockListener.PlacedAnvil=[[DARK_RED]]Vous avez placé une enclume, Les enclumes peuvent réparer les outils et l'armure.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Votre loup se précipite de nouveau vers vous...
+mcPlayerListener.AbilitiesOff=Capacité bascule off
+mcPlayerListener.AbilitiesOn=Capacité bascule on
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**CAPACITE RAFRAICHIE\!**
+mcPlayerListener.AcrobaticsSkill=[[YELLOW]]Acrobaties compétences**/Acrobatics**: 
+mcPlayerListener.ArcherySkill=[[YELLOW]]Tir a l'arc compétences**/Archery**: 
+mcPlayerListener.AxesSkill=[[YELLOW]]Haches compétences**/Axes**: 
+mcPlayerListener.ExcavationSkill=[[YELLOW]]Pelle compétences**/Excavation**: 
+mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO Mode Dieux Desactiver
+mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Mode Dieux Activer
+mcPlayerListener.GreenThumb=[[GREEN]]**GREEN THUMB**
+mcPlayerListener.GreenThumbFail=[[RED]]**GREEN THUMB FAIL**
+mcPlayerListener.HerbalismSkill=[[YELLOW]]Herboriste compétences**/Herbalism**: 
+mcPlayerListener.MiningSkill=[[YELLOW]]Minage compétences**/Mining**: 
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn est maintenant effacée.
+mcPlayerListener.MyspawnNotExist=[[RED]]Configurez votre myspawn en 1er avec un lit.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn a été enregistrer à votre emplacement actuel.
+mcPlayerListener.MyspawnTimeNotice=Vous devez attendre {0}m {1}s pour utiliser myspawn
+mcPlayerListener.NoPermission=Insufficient mcPermissions.
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Vous n'avez pas accès a la compétence.
+mcPlayerListener.NotInParty=[[RED]]Vous n'êtes pas dans un groupe.
+mcPlayerListener.InviteSuccess=[[GREEN]]Invitation a été envoyé avec succès.
+mcPlayerListener.ReceivedInvite1=[[RED]]ALERT: [[GREEN]]Vous avez reçu un invitation pour la partie {0} a partir de {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Type [[GREEN]]/{0}[[YELLOW]] à accepter l'invitation 
+mcPlayerListener.InviteAccepted=[[GREEN]]Invite acceptées. Vous avez rejoint la partie {0}
+mcPlayerListener.NoInvites=[[RED]]Vous n'avez pas d'invitation pour le moment 
+mcPlayerListener.YouAreInParty=[[GREEN]]Vous avez dans la partie {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Partie Membres
+mcPlayerListener.LeftParty=[[RED]]Vous avez quitté la partie
+mcPlayerListener.JoinedParty=Joidre la partie: {0}
+mcPlayerListener.PartyChatOn=Party Chat uniquement [[GREEN]]On
+mcPlayerListener.PartyChatOff=Party Chat uniquement [[RED]]Off
+mcPlayerListener.AdminChatOn=Admin Chat uniquement [[GREEN]]On
+mcPlayerListener.AdminChatOff=Admin Chat uniquement [[RED]]Off
+mcPlayerListener.MOTD=[[BLUE]]Ce serveur fonctionne avec mcMMO {0} [[YELLOW]]/{1}[[BLUE]] pour voir l'aide.
+mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Wiki - [[YELLOW]]Traduit par avalondrey
+mcPlayerListener.PowerLevel=[[DARK_RED]]POWER LEVEL: 
+mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Power Level [[YELLOW]]Leaderboard--
+mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Leaderboard--
+mcPlayerListener.RepairSkill=[[YELLOW]]Réparation Compétence**/Repair**: 
+mcPlayerListener.SwordsSkill=[[YELLOW]]Epee compétence**/Swords**: 
+mcPlayerListener.TamingSkill=[[YELLOW]]Dressage compétence**/Taming**: 
+mcPlayerListener.UnarmedSkill=[[YELLOW]]Mains nue Compétence**/Unarmed**: 
+mcPlayerListener.WoodcuttingSkill=[[YELLOW]]Bucheron Compétence**/Woodcutting**: 
+mcPlayerListener.YourStats=[[GREEN]]Votre MMO Stats
+Party.InformedOnJoin={0} [[GREEN]] a join votre partie
+Party.InformedOnQuit={0} [[GREEN]] a quitté votre partie
+Skills.YourGreenTerra=[[GREEN]]Your [[YELLOW]]Main verte [[GREEN]]la capacité est revenue!
+Skills.YourTreeFeller=[[GREEN]]Your [[YELLOW]]Massacre à la tronçonneuse [[GREEN]]la capacité est revenue!
+Skills.YourSuperBreaker=[[GREEN]]Your [[YELLOW]]Broyeur [[GREEN]]la capacité est revenue!
+Skills.YourSerratedStrikes=[[GREEN]]Your [[YELLOW]]Epee cranté [[GREEN]]la capacité est revenue!
+Skills.YourBerserk=[[GREEN]]Your [[YELLOW]]Berserk [[GREEN]]la capacité est revenue!
+Skills.YourSkullSplitter=[[GREEN]]Your [[YELLOW]]Casseur de tete [[GREEN]]la capacité est revenue!
+Skills.YourGigaDrillBreaker=[[GREEN]]Your [[YELLOW]]Super broyeur [[GREEN]]la capacité est revenue!
+Skills.TooTired=[[RED]]Vous êtes trop fatigué pour utiliser cette capacité à nouveau.
+Skills.ReadyHoe=[[GREEN]]**TA BINETTE EST PRETE**
+Skills.LowerHoe=[[GRAY]]**Ta binette n'est plus prete**
+Skills.ReadyAxe=[[GREEN]]**TA HACHE EST PRETE**
+Skills.LowerAxe=[[GRAY]]**Ta hache n'est plus prete**
+Skills.ReadyFists=[[GREEN]]**TON POINGS EST PRETE**
+Skills.LowerFists=[[GRAY]]**Ton poings n'est plus pret**
+Skills.ReadyPickAxe=[[GREEN]]**TA PIOCHE EST PRETE**
+Skills.LowerPickAxe=[[GRAY]]**Ta pioche n'est plus prete**
+Skills.ReadyShovel=[[GREEN]]**TA PELLE EST PRETE**
+Skills.LowerShovel=[[GRAY]]**Ta pelle n'est plus prete**
+Skills.ReadySword=[[GREEN]]**TON EPEE EST PRETE**
+Skills.LowerSword=[[GRAY]]**Ton épee n'est plus prete**
+Skills.GreenTerraOn=[[GREEN]]**MAIN VERTE ACTIF**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé [[RED]]Main verte!
+Skills.TreeFellerOn=[[GREEN]]**MASSACRE A LA TRONCONNEUSE ACTIF**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé [[RED]]Massacre à la tronçonneuse!
+Skills.SuperBreakerOn=[[GREEN]]**BROYEUR ACTIF**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé [[RED]]Broyeur!
+Skills.SerratedStrikesOn=[[GREEN]]**EPEE CRANTER ACTIF**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé [[RED]]Epee cranté!
+Skills.SkullSplitterOn=[[GREEN]]**CASSEUR DE TETE ACTIF**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé [[RED]]Casseur de tete!
+Skills.GigaDrillBreakerOn=[[GREEN]]**SUPER BROYEUR ACTIF**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé [[RED]]Super broyeur!
+Skills.GreenTerraOff=[[RED]]**Main verte est fini**
+Skills.TreeFellerOff=[[RED]]**Massacre à la tronçonneuse est fini**
+Skills.SuperBreakerOff=[[RED]]**Le broyeur est fini**
+Skills.SerratedStrikesOff=[[RED]]**Epee cranté est fini**
+Skills.BerserkOff=[[RED]]**Berserk est fini**
+Skills.SkullSplitterOff=[[RED]]**Casseur de tete est fini**
+Skills.GigaDrillBreakerOff=[[RED]]**Super broyeur est fini**
+Skills.TamingUp=[[YELLOW]]La competence du dressage a augmenté de {0}. Total ({1})
+Skills.AcrobaticsUp=[[YELLOW]]La competence acrobaties a augmenté de {0}. Total ({1})
+Skills.ArcheryUp=[[YELLOW]]La competence tir a l'arc a augmenté de {0}. Total ({1})
+Skills.SwordsUp=[[YELLOW]]La competence epee a augmenté de {0}. Total ({1})
+Skills.AxesUp=[[YELLOW]]La competence hache a augmenté de {0}. Total ({1})
+Skills.UnarmedUp=[[YELLOW]]La compétence de combat à mains nues a augmenté de {0}. Total ({1})
+Skills.HerbalismUp=[[YELLOW]]La competence herboriste a augmenté de {0}. Total ({1})
+Skills.MiningUp=[[YELLOW]]La competence minage a augmenté de {0}. Total ({1})
+Skills.WoodcuttingUp=[[YELLOW]]La competence coupe de bois a augmenté de {0}. Total ({1})
+Skills.RepairUp=[[YELLOW]]La competence réparation a augmenté de {0}. Total ({1})
+Skills.ExcavationUp=[[YELLOW]]La competence creusage a augmenté de {0}. Total ({1})
+Skills.FeltEasy=[[GRAY]]That felt easy.
+Skills.StackedItems=[[DARK_RED]]You can't repair stacked items
+Skills.NeedMore=[[DARK_RED]]You need more
+Skills.AdeptDiamond=[[DARK_RED]]You're not skilled enough to repair Diamond
+Skills.FullDurability=[[GRAY]]That is at full durability.
+Skills.Disarmed=[[DARK_RED]]You have been disarmed!
+mcPlayerListener.SorcerySkill=Sorcery: 
+m.SkillSorcery=SORCERY
+Sorcery.HasCast=[[GREEN]]**CASTING**[[GOLD]]
+Sorcery.Current_Mana=[[DARK_AQUA]]MP
+Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
+Sorcery.Cost=[[RED]][COST] {0} MP
+Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Out Of Mana [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=THUNDER
+Sorcery.Curative.Self=CURE SELF
+Sorcery.Curative.Other=CURE OTHER
+m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]**BEAST LORE**
+Combat.BeastLoreOwner=[[DARK_AQUA]]Owner ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/8)

+ 329 - 0
mcMMO/com/gmail/nossr50/locale/locale_nl.properties

@@ -0,0 +1,329 @@
+# Dutch translation by Pluis65 v1.1
+# To use: Set locale to nl
+# DO NOT EDIT THIS FILE WITH NORMAL NOTEPAD, use Notepad++
+# Verander deze file alleen met Notepad++
+# Geef fouten door aan pluis65@hotmail.com
+# Last official edit: 8-7-2011
+Combat.WolfExamine=[[GREEN]]**Je bekijkt de wolf met Wolfinspectie**
+Combat.WolfShowMaster=[[DARK_GREEN]]Eigenaar van de wolf \: {0}
+Combat.Ignition=[[RED]]**IGNITION**
+Combat.BurningArrowHit=[[DARK_RED]]Je bent geraakt door een brandende pijl\!
+Combat.TouchedFuzzy=[[DARK_RED]]Je raakte Fuzzy aan. Je voelt je duizelig.
+Combat.TargetDazed=Doelwit was [[DARK_RED]]versuft
+Combat.WolfNoMaster=[[GRAY]]Deze wolf heeft geen eigenaar...
+Combat.WolfHealth=[[GREEN]]Deze wolf heeft {0} levens 
+Combat.StruckByGore=[[RED]]**VAST DOOR GESTOLD BLOED**
+Combat.Gore=[[GREEN]]**GESTOLD BLOED**
+Combat.ArrowDeflect=[[WHITE]]**PIJL AFWIJKING**
+Item.ChimaeraWingFail=**CHIMAERA WING MISLUKT\!**
+Item.ChimaeraWingPass=**CHIMAERA WING**
+Item.InjuredWait=Je bent gewond en moet wachten. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]Je hebt meer veren nodig..
+m.mccPartyCommands=[[GREEN]]--PARTY COMMANDOS--
+m.mccParty=[party name] [[RED]]- Maak/Join getypte party
+m.mccPartyQ=[[RED]]- Verlaat je huidige party
+m.mccPartyToggle=[[RED]] - Doe party chat aan/uit
+m.mccPartyInvite=[player name] [[RED]]- Stuur een uitnodiging voor je party
+m.mccPartyAccept=[[RED]]- Accepteer party uitnodiging
+m.mccPartyTeleport=[party member name] [[RED]]- Teleporteer naar je party medelid
+m.mccOtherCommands=[[GREEN]]--ANDERE COMMANDOS--
+m.mccStats=- Laat je levels zien
+m.mccLeaderboards=- Topscores
+m.mccMySpawn=- Teleporteer naar MySpawn
+m.mccClearMySpawn=- Verwijder je MySpawn
+m.mccToggleAbility=- Doe ability activatie aan/uit
+m.mccAdminToggle=- Doe admin chat aan/uit
+m.mccWhois=[playername] [[RED]]- Laat informatie zien over speler
+m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Verander levels
+m.mccMcGod=- God Modus
+m.mccSkillInfo=[skillname] [[RED]]- Laat informatie zien over een skill
+m.mccModDescription=[[RED]]- Lees MOD beschrijving
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]XP: [[WHITE]]{0}
+m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
+m.AbilityLockTemplate=[[GRAY]]{0}
+m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
+m.Effects=EFFECTEN
+m.YourStats=JOUW STATUS
+m.SkillTaming=TEMMEN
+m.XPGainTaming=Wolven krijgen schade
+m.EffectsTaming1_0=Wolfinspectie
+m.EffectsTaming1_1=Bone-meal inspecteert wolven
+m.EffectsTaming2_0=Gestold bloed
+m.EffectsTaming2_1=Critical Strike zorgt voor bloedingen
+m.EffectsTaming3_0=Scherpere klauwen
+m.EffectsTaming3_1=Geeft meer schade
+m.EffectsTaming4_0=Mileukennis
+m.EffectsTaming4_1=Geen cactus/lava schade, geen falldamage
+m.EffectsTaming5_0=Dikke huis
+m.EffectsTaming5_1=Minder schade, kan tegen vuur
+m.EffectsTaming6_0=Explosieschild
+m.EffectsTaming6_1=Minder explosie schade
+m.AbilLockTaming1=GEBLOKEERD TOT 100+ SKILL (MILIEUKENNIS)
+m.AbilLockTaming2=GEBLOKEERD TOT 250+ SKILL (DIKKE HUIS)
+m.AbilLockTaming3=GEBLOKEERD TOT 500+ SKILL (EXPLOSIESCHILD)
+m.AbilLockTaming4=GEBLOKEERD TOT 750+ SKILL (SCHERPERE KLAUWEN)
+m.AbilBonusTaming1_0=Milieukennis
+m.AbilBonusTaming1_1=Wolven ontwijken gevaar (cactus, lava)
+m.AbilBonusTaming2_0=Dikkere huid
+m.AbilBonusTaming2_1=Halve schade, kan tegen vuur
+m.AbilBonusTaming3_0=Explosieschild
+m.AbilBonusTaming3_1=Explosies geven 1/6 van de normale schade
+m.AbilBonusTaming4_0=Scherpere klauwen
+m.AbilBonusTaming4_1=+2 Schade
+m.TamingGoreChance=[[RED]]Kans op gestold bloed: [[YELLOW]]{0}%
+m.SkillWoodCutting=HOUTHAKKEN
+m.XPGainWoodCutting=Bomen omhakken
+m.EffectsWoodCutting1_0=Tree Feller (ABILITY)
+m.EffectsWoodCutting1_1=Laat bomen deels exploderen
+m.EffectsWoodCutting2_0=Leaf Blower
+m.EffectsWoodCutting2_1=Laat leaves verdwijnen
+m.EffectsWoodCutting3_0=Dubbele Drop
+m.EffectsWoodCutting3_1=Geeft een dubbele drop
+m.AbilLockWoodCutting1=GEBLOKEERD TOT 100+ SKILL (LEAF BLOWER)
+m.AbilBonusWoodCutting1_0=Leaf Blower
+m.AbilBonusWoodCutting1_1=Laat leaves verdwijnen
+m.WoodCuttingDoubleDropChance=[[RED]]Dubbele Drop kans: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Tree Feller lengte: [[YELLOW]]{0}s
+m.SkillArchery=BOOGSCHIETEN
+m.XPGainArchery=Schiet op vijanden
+m.EffectsArchery1_0=Brandende pijl
+m.EffectsArchery1_1=25% kans dat een vijand verbrand
+m.EffectsArchery2_0=Verdoof (Players)
+m.EffectsArchery2_1=Gedesorienteerde vijanden
+m.EffectsArchery3_0=Schade+
+m.EffectsArchery3_1=Verhoogt schade
+m.EffectsArchery4_0=Pijlen terugkrijgen
+m.EffectsArchery4_1=Kans dat dode vijanden pijlen droppen
+m.ArcheryDazeChance=[[RED]]Kans op verdoving: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Kans om pijlen terug te krijgen: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Lengte van Brandende pijl: [[YELLOW]]{0} seconds
+m.ArcheryDamagePlus=[[RED]]Schade+ (Rank{0}): [[YELLOW]]Bonus {0} schade
+m.SkillAxes=BIJLEN
+m.XPGainAxes=Val monsters aan met een bijl
+m.EffectsAxes1_0=Schedelsplijter (ABILITY)
+m.EffectsAxes1_1=Geef schade rond om je heen
+m.EffectsAxes2_0=Critical Strikes
+m.EffectsAxes2_1=Dubbele schade
+m.EffectsAxes3_0=Bijl Master (500 SKILL)
+m.EffectsAxes3_1=Verhoogt schade
+m.AbilLockAxes1=GEBLOKEERD TOT 500+ SKILL (BIJL MASTER)
+m.AbilBonusAxes1_0=Bijl Master
+m.AbilBonusAxes1_1=4 schade extra
+m.AxesCritChance=[[RED]]Kans op Critical Strikes: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Schedelsplijter lengte: [[YELLOW]]{0}s
+m.SkillSwords=ZWAARDEN
+m.XPGainSwords=Val monsters aan met een zwaard
+m.EffectsSwords1_0=Terugkaats Aanval
+m.EffectsSwords1_1=Kaats 50% van de schade terug
+m.EffectsSwords2_0=Serrated Strikes (ABILITY)
+m.EffectsSwords2_1=25% meer schade, kans op Bloeding+ om je heen
+m.EffectsSwords3_0=Serrated Strikes Bloeding+
+m.EffectsSwords3_1=Kans op extra bloeding bij vijanden
+m.EffectsSwords4_0=Pareren
+m.EffectsSwords4_1=Blokkeer vijandelijke aanval
+m.EffectsSwords5_0=5 Tikken van Bloeding
+m.EffectsSwords5_1=Laat anderen bloeden
+m.SwordsCounterAttChance=[[RED]]Kans op Terugkeer Aanval: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Bloeding lengte: [[YELLOW]]{0} ticks
+m.SwordsBleedChance=[[RED]]Kans op Bloeding: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Kans op Pareren: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Serrated Strikes lengte: [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]NOTE: [[YELLOW]]1 tik per 2 seconden
+m.SkillAcrobatics=ACROBATIEK
+m.XPGainAcrobatics=Vallen
+m.EffectsAcrobatics1_0=Rollen
+m.EffectsAcrobatics1_1=Verminderd of voorkomt schade
+m.EffectsAcrobatics2_0=Perfecte Rol
+m.EffectsAcrobatics2_1=Twee keer zo effectief als Rollen
+m.EffectsAcrobatics3_0=Ontwijken
+m.EffectsAcrobatics3_1=50% minder schade
+m.AcrobaticsRollChance=[[RED]]Kans om te rollen: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Kans op Perfecte Rol: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Kans om te ontwijken: [[YELLOW]]{0}%
+m.SkillMining=MIJNBOUW
+m.XPGainMining=Hak steen & erts met een pickaxe
+m.EffectsMining1_0=Super Breeker (ABILITY)
+m.EffectsMining1_1=Hogere snelheid, Kans op 3x drop
+m.EffectsMining2_0=Dubbele Drops
+m.EffectsMining2_1=Dubbele van normale drop
+m.MiningDoubleDropChance=[[RED]]Kans op Dubbele Drop: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Super Breeker lengte: [[YELLOW]]{0}s
+m.SkillRepair=REPAREREN
+m.XPGainRepair=Repareer tools en armor
+m.EffectsRepair1_0=Repareer
+m.EffectsRepair1_1=Repareer Iron Tools & Armor
+m.EffectsRepair2_0=Repareer Master
+m.EffectsRepair2_1=Vergroot de reparatiehoeveelheid
+m.EffectsRepair3_0=Super Repareren
+m.EffectsRepair3_1=Dubbel effectief
+m.EffectsRepair4_0=Diamond Repareren ({0}+ SKILL)
+m.EffectsRepair4_1=Repareer Diamond Tools & Armor
+m.RepairRepairMastery=[[RED]]Repareer Master: [[YELLOW]]Extra {0}% durability restored
+m.RepairSuperRepairChance=[[RED]]Kans op Super Repareren: [[YELLOW]]{0}%
+m.SkillUnarmed=ONBEWAPEND
+m.XPGainUnarmed=Val monsters aan met hand
+m.EffectsUnarmed1_0=Onbewapende gek (ABILITY)
+m.EffectsUnarmed1_1=+50% schade, hak zachte materialen weg
+m.EffectsUnarmed2_0=Ontwapen (Players)
+m.EffectsUnarmed2_1=Dropt het wapen van de vijand
+m.EffectsUnarmed3_0=Onbewapende held
+m.EffectsUnarmed3_1=Nog meer schade
+m.EffectsUnarmed4_0=Onbewapende leerling
+m.EffectsUnarmed4_1=Meer schade
+m.EffectsUnarmed5_0=Pijlafwijking
+m.EffectsUnarmed5_1=Laat pijlen afwijken
+m.AbilLockUnarmed1=GEBLOKEERD TOT 250+ SKILL (Onbewapende leerling)
+m.AbilLockUnarmed2=GEBLOKEERD TOT 500+ SKILL (Onbewapende held)
+m.AbilBonusUnarmed1_0=Onbewapende leerling
+m.AbilBonusUnarmed1_1=+2 meer schade
+m.AbilBonusUnarmed2_0=Onbewapende held
+m.AbilBonusUnarmed2_1=+4 meer schade
+m.UnarmedArrowDeflectChance=[[RED]]Kans op Pijlafwijking: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Kans op Ontwapening: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Lengte van Onbewapende gek: [[YELLOW]]{0}s
+m.SkillHerbalism=LANDBOUW
+m.XPGainHerbalism=Verzamel kruiden en planten
+m.EffectsHerbalism1_0=Groene Aarde (ABILITY)
+m.EffectsHerbalism1_1=3x meer XP en kans op 3x drop
+m.EffectsHerbalism2_0=Groene vingers (Wheat)
+m.EffectsHerbalism2_1=Plant wheat bij het oogsten
+m.EffectsHerbalism3_0=Groene vingers (Cobble)
+m.EffectsHerbalism3_1=Maakt van cobblestone moss-stone met seeds
+m.EffectsHerbalism4_0=Voedsel+
+m.EffectsHerbalism4_1=Verhoogt de heling van brood en stews
+m.EffectsHerbalism5_0=Dubbele Drop (Alle planten)
+m.EffectsHerbalism5_1=Dubbele drop van planten
+m.HerbalismGreenTerraLength=[[RED]]Groene Aarde lengte: [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Kans op Groene vingers: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Groene vingers periode: [[YELLOW]] Wheat groeit in periode {0}
+m.HerbalismDoubleDropChance=[[RED]]Kans op Dubbele Drop: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Voedsel+ (Rank{0}): [[YELLOW]]Bonus {0} heling
+m.SkillExcavation=UITGRAVING
+m.XPGainExcavation=Graven
+m.EffectsExcavation1_0=Giga Drilboor (ABILITY)
+m.EffectsExcavation1_1=3x drop, 3x XP, hogere snelheid
+m.EffectsExcavation2_0=Schatzoeker
+m.EffectsExcavation2_1=Mogelijkheid om schatten te zoeken
+m.ExcavationGreenTerraLength=[[RED]]Giga Drilboor lengte: [[YELLOW]]{0}s
+mcBlockListener.PlacedAnvil=[[DARK_RED]]Je hebt een aambeeld geplaatst. Hierop kun je tools en armor repareren.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Je wolf dribbelt terug naar je...
+mcPlayerListener.AbilitiesOff=Ability activatie is uit
+mcPlayerListener.AbilitiesOn=Ability activatie is aan
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**ABILITIES HERLADEN\!**
+mcPlayerListener.AcrobaticsSkill=Acrobatiek: 
+mcPlayerListener.ArcherySkill=Boogschieten:
+mcPlayerListener.AxesSkill=Bijlen: 
+mcPlayerListener.ExcavationSkill=Uitgraving: 
+mcPlayerListener.GodModeDisabled=[[YELLOW]]Godmodus uitgeschakeld
+mcPlayerListener.GodModeEnabled=[[YELLOW]]Godmodus ingeschakeld
+mcPlayerListener.GreenThumb=[[GREEN]]**GROENE VINGERS**
+mcPlayerListener.GreenThumbFail=[[RED]]**GROENE VINNGERS MISLUKT**
+mcPlayerListener.HerbalismSkill=Landbouw: 
+mcPlayerListener.MiningSkill=Mijnbouw: 
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn is verwijderd.
+mcPlayerListener.MyspawnNotExist=[[RED]]Plaats Myspawn eerst door op een bed te drukken.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn is geplaatst op je huidige locatie.
+mcPlayerListener.MyspawnTimeNotice=Je moet {0}m {1}s wachten voordat je myspawn kan gebruiken.
+mcPlayerListener.NoPermission=Je hebt geen permissie.
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Als je geen toegang hebt tot een skill wordt hij hier niet weergegeven.
+mcPlayerListener.NotInParty=[[RED]]Je zit niet in een party.
+mcPlayerListener.InviteSuccess=[[GREEN]]Uitnodiging succesvol verzonden.
+mcPlayerListener.ReceivedInvite1=[[RED]]BERICHT: [[GREEN]]Je bent uitgenodigd voor de party {0} door {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Type [[GREEN]]/{0}[[YELLOW]] om de uitnodiging te accepteren.
+mcPlayerListener.InviteAccepted=[[GREEN]]Uitnodiging geaccepteerd. Je bent nu lid van {0}
+mcPlayerListener.NoInvites=[[RED]]Je hebt geen uitnodigingen
+mcPlayerListener.YouAreInParty=[[GREEN]]Je zit in de party {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Party Leden
+mcPlayerListener.LeftParty=[[RED]]Je hebt de party verlaten
+mcPlayerListener.JoinedParty=Lid geworden van: {0}
+mcPlayerListener.PartyChatOn=Alleen Party Chat [[GREEN]]aan
+mcPlayerListener.PartyChatOff=Alleen Party Chat [[RED]]uit
+mcPlayerListener.AdminChatOn=Alleen Admin Chat [[GREEN]]aan
+mcPlayerListener.AdminChatOff=Alleen Admin Chat [[RED]]uit
+mcPlayerListener.MOTD=[[BLUE]]Deze server werkt op mcMMO {0} type [[YELLOW]]/{1}[[BLUE]] voor hulp.
+mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Wiki
+mcPlayerListener.PowerLevel=[[DARK_RED]]POWER LEVEL: 
+mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Power Level [[YELLOW]]Highscore--
+mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Highscore--
+mcPlayerListener.RepairSkill=Repareren: 
+mcPlayerListener.SwordsSkill=Zwaarden: 
+mcPlayerListener.TamingSkill=Temmen: 
+mcPlayerListener.UnarmedSkill=Onbewapend: 
+mcPlayerListener.WoodcuttingSkill=Houthakken: 
+mcPlayerListener.YourStats=[[GREEN]][mcMMO] Status
+Party.InformedOnJoin={0} [[GREEN]] heeft je party gejoined
+Party.InformedOnQuit={0} [[GREEN]] heeft je party verlaten
+Skills.YourGreenTerra=[[GREEN]]Je [[YELLOW]]Groene Aarde [[GREEN]]ability is opgeladen!
+Skills.YourTreeFeller=[[GREEN]]Je [[YELLOW]]Tree Feller [[GREEN]]ability is opgeladen!
+Skills.YourSuperBreaker=[[GREEN]]Je [[YELLOW]]Super Breeker [[GREEN]]ability is opgeladen!
+Skills.YourSerratedStrikes=[[GREEN]]Je [[YELLOW]]Serrated Strikes [[GREEN]]ability is opgeladen!
+Skills.YourBerserk=[[GREEN]]Je [[YELLOW]]Onbewapende gek [[GREEN]]ability is opgeladen!
+Skills.YourSkullSplitter=[[GREEN]]Je [[YELLOW]]Schedelsplijter [[GREEN]]ability is opgeladen!
+Skills.YourGigaDrillBreaker=[[GREEN]]Je [[YELLOW]]Giga Drilboor [[GREEN]]ability is opgeladen!
+Skills.TooTired=[[RED]]Je bent te moe om die ability te gebruiken.
+Skills.ReadyHoe=[[GREEN]]**JE TILT JE SCHOFFEL OP**
+Skills.LowerHoe=[[GRAY]]**JE LAAT JE SCHOFFEL ZAKKEN**
+Skills.ReadyAxe=[[GREEN]]**JE TILT JE BIJL OP**
+Skills.LowerAxe=[[GRAY]]**JE LAAT JE BIJL ZAKKEN**
+Skills.ReadyFists=[[GREEN]]**JE BALT JE VUISTEN**
+Skills.LowerFists=[[GRAY]]**JE LAAT JE VUISTEN ZAKKEN**
+Skills.ReadyPickAxe=[[GREEN]]**JE TILT JE PICKAXE OP**
+Skills.LowerPickAxe=[[GRAY]]**JE LAAT JE PICKAXE ZAKKEN**
+Skills.ReadyShovel=[[GREEN]]**JE TILT JE SCHEP OP**
+Skills.LowerShovel=[[GRAY]]**JE LAAT JE SCHEP ZAKKEN**
+Skills.ReadySword=[[GREEN]]**JE TILT JE ZWAARD OP**
+Skills.LowerSword=[[GRAY]]**JE LAAT JE ZWAARD ZAKKEN**
+Skills.BerserkOn=[[GREEN]]**ONBEWAPENDE GEK GEACTIVEERD**
+Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] gebruikt [[RED]]Onbewapende gek!
+Skills.GreenTerraOn=[[GREEN]]**GROENE AARDE GEACTIVEERD**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] gebruikt [[RED]]Groene Aarde!
+Skills.TreeFellerOn=[[GREEN]]**TREE FELLER GEACTIVEERD**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] gebruikt [[RED]]Tree Feller!
+Skills.SuperBreakerOn=[[GREEN]]**SUPER BREEKER GEACTIVEERD**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] gebruikt [[RED]]Super Breeker!
+Skills.SerratedStrikesOn=[[GREEN]]**SERRATED STRIKES GEACTIVEERD**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] gebruikt [[RED]]Serrated Strikes!
+Skills.SkullSplitterOn=[[GREEN]]**SCHEDELSPLIJTER GEACTIVEERD**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] gebruikt [[RED]]Schedelsplijter!
+Skills.GigaDrillBreakerOn=[[GREEN]]**GIGA DRILBOOR GEACTIVEERD**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] gebruikt [[RED]]Giga Drilboor!
+Skills.GreenTerraOff=[[RED]]**Groene Aarde is uitgewerkt**
+Skills.TreeFellerOff=[[RED]]**Tree Feller is uitgewerkt**
+Skills.SuperBreakerOff=[[RED]]**Super Breeker is uitgewerkt**
+Skills.SerratedStrikesOff=[[RED]]**Serrated Strikes is uitgewerkt**
+Skills.BerserkOff=[[RED]]**Onbewapende gek is uitgewerkt**
+Skills.SkullSplitterOff=[[RED]]**Schedelsplijter is uitgewerkt**
+Skills.GigaDrillBreakerOff=[[RED]]**Giga Drilboor is uitgewerkt**
+Skills.TamingUp=[[YELLOW]]Temmen skill verhoogt met {0}. Totaal ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Acrobatics skill verhoogt met {0}. Total ({1})
+Skills.ArcheryUp=[[YELLOW]]Boogschieten skill verhoogt met {0}. Totaal ({1})
+Skills.SwordsUp=[[YELLOW]]Zwaarden skill verhoogt met {0}. Totaal ({1})
+Skills.AxesUp=[[YELLOW]]Bijlen skill verhoogt met {0}. Totaal ({1})
+Skills.UnarmedUp=[[YELLOW]]Onbewapend skill verhoogt met {0}. Totaal ({1})
+Skills.HerbalismUp=[[YELLOW]]Landbouw skill verhoogt met {0}. Totaal ({1})
+Skills.MiningUp=[[YELLOW]]Mijnbouw skill verhoogt met {0}. Totaal ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Houthakken skill verhoogt met {0}. Totaal ({1})
+Skills.RepairUp=[[YELLOW]]Repareren skill verhoogt met {0}. Totaal ({1})
+Skills.ExcavationUp=[[YELLOW]]Uitgraven skill verhoogt met {0}. Totaal ({1})
+Skills.FeltEasy=[[GRAY]]Dat was makkelijk.
+Skills.StackedItems=[[DARK_RED]]Je kan geen gestackte items repareren
+Skills.NeedMore=[[DARK_RED]]Je hebt te weinig
+Skills.AdeptDiamond=[[DARK_RED]]Je bent niet goed genoeg om diamond te repareren.
+Skills.FullDurability=[[GRAY]]Dat is nog helemaal heel.
+Skills.Disarmed=[[DARK_RED]]Je bent ontwapend!
+mcPlayerListener.SorcerySkill=Tovenarij: 
+m.SkillSorcery=TOVERNARIJ
+Sorcery.HasCast=[[GREEN]]**UITROEPEN VAN**[[GOLD]]
+Sorcery.Current_Mana=[[DARK_AQUA]]MP
+Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
+Sorcery.Cost=[[RED]][COST] {0} MP
+Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Geen Mana meer [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=DONDER
+Sorcery.Curative.Self=HEEL JEZELF
+Sorcery.Curative.Other=HEEL EEN ANDER
+m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]**WOLFINSPECTIE**
+Combat.BeastLoreOwner=[[DARK_AQUA]]Eigenaar ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Levens ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Levens ([[GREEN]]{0}[[DARK_AQUA]]/8)

+ 323 - 0
mcMMO/com/gmail/nossr50/locale/locale_pl.properties

@@ -0,0 +1,323 @@
+Combat.WolfExamine=[[GREEN]]**Zbadales Wilka uzywajac Wiedzy Besti**
+Combat.WolfShowMaster=[[DARK_GREEN]]Wlascicielem besti jest \: {0}
+Combat.Ignition=[[RED]]**PODPALENIE**
+Combat.BurningArrowHit=[[DARK_RED]]Zostales trafiony plonaca strzala\!
+Combat.TouchedFuzzy=[[DARK_RED]]Czujesz sie oszolomiony.
+Combat.TargetDazed=Target was [[DARK_RED]]Oszolomiony.
+Combat.WolfNoMaster=[[GRAY]]Ta Bestia nie ma wlasciciela...
+Combat.WolfHealth=[[GREEN]]Ta bestia ma {0} zycia.
+Combat.StruckByGore=[[RED]]**POWALONY**
+Combat.Gore=[[GREEN]]**WYLEW KRWI**
+Combat.ArrowDeflect=[[WHITE]]**ODBICIE STRZALU**
+Item.ChimaeraWingFail=**UZYCIE SKRZYDLA CHIMAERY NIE POWIODLO SIE\!**
+Item.ChimaeraWingPass=**UZYLES SKRZYDEL CHIMAERY**
+Item.InjuredWait=Musisz poczekac aby znowu to uzyc. [[YELLOW]]({0}sekund)
+Item.NeedFeathers=[[GRAY]]Potrzebujesz wiecej pior.
+m.mccPartyCommands=[[GREEN]]--KOMENDY DRUZYNOWE--
+m.mccParty=[party name] [[RED]]- Tworzy lub dolacza do danej druzyny.
+m.mccPartyQ=[[RED]]- Pozwala opuscic druzyne.
+m.mccPartyToggle=[[RED]] - Wlacza chat druzyny.
+m.mccPartyInvite=[player name] [[RED]]- Wysyla zaproszenie do druzyny.
+m.mccPartyAccept=[[RED]]- Akceptuje zaproszenie do druzyny.
+m.mccPartyTeleport=[party member name] [[RED]]- Teleportuje cie do czlonka druzyny.
+m.mccOtherCommands=[[GREEN]]--INNE KOMENDY--
+m.mccStats=- Pokazuje twoje statystyki.
+m.mccLeaderboards=- Pokazuje najlepszych graczy.
+m.mccMySpawn=- Teleportuje do spawna.
+m.mccClearMySpawn=- Kasuje twoj spawn i zmienia na domyslny.
+m.mccToggleAbility=- Wlacza specjalna umiejetnosc prawym przyciskiem myszy.
+m.mccAdminToggle=- Wlacza chat adminow.
+m.mccWhois=[nazwa gracza] [[RED]]- Zobacz dokladne informacje na temat gracza.
+m.mccMmoedit=[nazwa gracza] [umiejetnosc] [nowa wartosc] [[RED]]- Modyfikuje cel.
+m.mccMcGod=- Tryb Boga.
+m.mccSkillInfo=[nazwa umiejetnosci (np. Mining)] [[RED]]- Pokazuje dokladne informacje o umiejetnosci.
+m.mccModDescription=[[RED]]- Wyswietla opis moda.
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]Dostajesz doswiadczenie za: [[WHITE]]{0}
+m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
+m.AbilityLockTemplate=[[GRAY]]{0}
+m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
+m.Effects=EFEKTY
+m.YourStats=TWOJE STATYSTYKI
+m.SkillTaming=OSWAJANIE
+m.XPGainTaming=Wilki zostaja oswojone.
+m.EffectsTaming1_0=Wiedza Besti
+m.EffectsTaming1_1=Kosci pozwalaja sprawdzic wilki.
+m.EffectsTaming2_0=Krwotok
+m.EffectsTaming2_1=Atak Krytyczny powodujacy silny krwotok.
+m.EffectsTaming3_0=Naostrzone pazury
+m.EffectsTaming3_1=Bonus do obrazen
+m.EffectsTaming4_0=Swiadome srodowisko
+m.EffectsTaming4_1=Strach przed kaktusami i lawa, odpornosc na obrazenia ze spadania.
+m.EffectsTaming5_0=Grube Futro
+m.EffectsTaming5_1=Redukcja obrazen, obrona przeciw ogniowi.
+m.EffectsTaming6_0=Odpornosc na wstrzasy.
+m.EffectsTaming6_1=Redukajca obrazen spowodowanych wybuchem.
+m.AbilLockTaming1=Zablokowane puki nie osiagniesz umiejetnosci na poziomie 100+ (SWIADOME SRODOWISKO)
+m.AbilLockTaming2=Zablokowane puki nie osiagniesz umiejetnosci na poziomie 250+ (GRUBE FUTRO)
+m.AbilLockTaming3=Zablokowane puki nie osiganiesz umiejetnosci na poziomie 500+ (ODPORNOSC NA WSTRZASY)
+m.AbilLockTaming4=Zablokowane puki nie osiagniesz umiejetnosci na poziomie 750+ (NAOSTRZONE PAZURY)
+m.AbilBonusTaming1_0=Swiadome srodowisko.
+m.AbilBonusTaming1_1=Wilki unikaja zagrozenia.
+m.AbilBonusTaming2_0=Grube futro.
+m.AbilBonusTaming2_1=Polowa obrazen, obrona przeciw ogniowi.
+m.AbilBonusTaming3_0=Odpornosc na wstrzasy.
+m.AbilBonusTaming3_1=Wybuchy powoduja 1/6 normalnych obrazen.
+m.AbilBonusTaming4_0=Naostrzone pazury
+m.AbilBonusTaming4_1=+2 Obrazen
+m.TamingGoreChance=[[RED]]Szansa na spowodowanie krwotoku: [[YELLOW]]{0}%
+m.SkillWoodCutting=Scinanie Drzew
+m.XPGainWoodCutting=Powalanie drzew
+m.EffectsWoodCutting1_0=Powalacz drzew (UMIEJETNOSC)
+m.EffectsWoodCutting1_1=Powoduje ze drzewa blyskawicznie zostaja powalone
+m.EffectsWoodCutting2_0=Wysadzacz lisci
+m.EffectsWoodCutting2_1=Wyrzuca liscie
+m.EffectsWoodCutting3_0=Podwojna Zaplata
+m.EffectsWoodCutting3_1=Podwaja normalny drop przedmiotow.
+m.AbilLockWoodCutting1=Zablokowane puki nie osiagniesz umiejetnosci na poziomie 100+ (WYSADZACZ LISCI)
+m.AbilBonusWoodCutting1_0=Wysadzacz lisci
+m.AbilBonusWoodCutting1_1=Wyrzuca liscie
+m.WoodCuttingDoubleDropChance=[[RED]]Szansa na Podwojna Zaplate: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Dlugosc Powalacza Drzew: [[YELLOW]]{0}sekund
+m.SkillArchery=LUCZNICTWO
+m.XPGainArchery=Atakowanie potworow przy uzyciu luku.
+m.EffectsArchery1_0=Podpalenie
+m.EffectsArchery1_1=25% szansy, ze cel zostanie podpalony.
+m.EffectsArchery2_0=Oszolomienie(Tylko na graczy)
+m.EffectsArchery2_1=Dezorientuje przeciwnikow.
+m.EffectsArchery3_0=Obrazenia+
+m.EffectsArchery3_1=Modyfikuje obrazenia.
+m.EffectsArchery4_0=Odzyskanie strzal.
+m.EffectsArchery4_1=Szansa na wyciagniecie strzalow ze zwlok.
+m.ArcheryDazeChance=[[RED]]Szansa na oszolomienie: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Szansa na odzyskanie strzal: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Dlugosc podpalenia: [[YELLOW]]{0} sekund
+m.ArcheryDamagePlus=[[RED]]Obrazenia+ (Rank{0}): [[YELLOW]]Dodatkowe {0} obrazenia
+m.SkillAxes=TOPORY
+m.XPGainAxes=Atakowanie potworow przy uzyciu toporow.
+m.EffectsAxes1_0=Lamacz Czaszek (UMIEJETNOSC)
+m.EffectsAxes1_1=Powoduje obrazenia dla calego obszaru.
+m.EffectsAxes2_0=Krytyczne Ataki
+m.EffectsAxes2_1=Podwojna Sila
+m.EffectsAxes3_0=Mistrzostwo Toporow
+m.EffectsAxes3_1=Modyfikuje obrazenia
+m.AbilLockAxes1=Zablokowane puki nie osiagniesz umiejetnosci na poziomie 500+ (MISTRZOSTWO TOPOROW)
+m.AbilBonusAxes1_0=Mistrzostwo Toporow
+m.AbilBonusAxes1_1=Dodatkowe 4 obrazen
+m.AxesCritChance=[[RED]]Szansa na krytyczne ataki: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Dlugosc Lamacza Czaszek: [[YELLOW]]{0}sekund
+m.SkillSwords=MIECZE
+m.XPGainSwords=Atakowanie potworow przy uzyciu mieczy.
+m.EffectsSwords1_0=Konter-Atak
+m.EffectsSwords1_1=Odbija 50% poniesionych obrazen.
+m.EffectsSwords2_0=Zabkowany Atak (UMIEJETNOSC)
+m.EffectsSwords2_1=25% obrazen obszarowych, Krwotok+ obszarowy
+m.EffectsSwords3_0=Zabkowany Atak, Krwotok+
+m.EffectsSwords3_1=Powoduje dlugotrwaly krwotok.
+m.EffectsSwords4_0=Blok.
+m.EffectsSwords4_1=Nie ponosisz obrazen.
+m.EffectsSwords5_0=Krwotok
+m.EffectsSwords5_1=Powoduje Krwotok
+m.SwordsCounterAttChance=[[RED]]Szansa na Konter-Atak: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Dlugosc Krwotoku: [[YELLOW]]{0} wylewow krwi.
+m.SwordsBleedChance=[[RED]]Szansa na spowodowanie Krwotoku: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Parry Chance: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Dlugosc Zabkowanego Ataku: [[YELLOW]]{0}sekund
+m.SwordsTickNote=[[GRAY]]UWAGA: [[YELLOW]]1 Wylew Krwi pojawia sie co 2 sekundy.
+m.SkillAcrobatics=AKROBATYKI
+m.XPGainAcrobatics=Spadanie
+m.EffectsAcrobatics1_0=Rolowanie sie.
+m.EffectsAcrobatics1_1=Redukuje albo usuwa obrazenia.
+m.EffectsAcrobatics2_0=Wielka przewrotka
+m.EffectsAcrobatics2_1=Dwa razy efektowowniejsze niz rolowanie sie.
+m.EffectsAcrobatics3_0=Unik
+m.EffectsAcrobatics3_1=Redukuje polowe obrazen.
+m.AcrobaticsRollChance=[[RED]]Szansa na rolowanie sie: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Szansa na wielka przewrotke: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Szansa na unik: [[YELLOW]]{0}%
+m.SkillMining=WYKOPALISKA
+m.XPGainMining=Wykopywanie kamienia i roznych rud.
+m.EffectsMining1_0=Super Kopacz (UMIEJETNOSC)
+m.EffectsMining1_1=Szybkosc+, Szansa na potrujna zaplate.
+m.EffectsMining2_0=Podwojna zaplata.
+m.EffectsMining2_1=Podwaja normalny drop.
+m.MiningDoubleDropChance=[[RED]]Szansa na podwojna zaplate: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Dlugosc super kopania: [[YELLOW]]{0}sekund
+m.SkillRepair=NAPRAWA
+m.XPGainRepair=Naprawianie przedmiotow.
+m.EffectsRepair1_0=Naprawa
+m.EffectsRepair1_1=Naprawianie zelaznych przedmiotow.
+m.EffectsRepair2_0=Mistrz naprawy
+m.EffectsRepair2_1=Powiekszona liczba napraw.
+m.EffectsRepair3_0=Super Naprawa
+m.EffectsRepair3_1=Podwojna efektownosc.
+m.EffectsRepair4_0=Diamentowa Odnowa ({0}+ UMIEJETNOSC)
+m.EffectsRepair4_1=Naprawia diamentowe przedmioty.
+m.RepairRepairMastery=[[RED]]Mistrz naprawy: [[YELLOW]]Dodatkowe {0}% wytrzymalosci odzyskane.
+m.RepairSuperRepairChance=[[RED]]Szansa na Super Odnowe: [[YELLOW]]{0}%
+m.SkillUnarmed=BEZBRONNY
+m.XPGainUnarmed=Atakowanie potworow piescia.
+m.EffectsUnarmed1_0=Furia (UMIEJETNOSC)
+m.EffectsUnarmed1_1=+50% obrazen, niszczy slabe materialy.
+m.EffectsUnarmed2_0=Rozbrojenie (Gracze)
+m.EffectsUnarmed2_1=Wyrzuca przedmioty przyciwnikow trzymane przez nich w rekach.
+m.EffectsUnarmed3_0=Mistrzostwo walki gola piescia
+m.EffectsUnarmed3_1=Ogromne ulepszenie obrazen
+m.EffectsUnarmed4_0=Poczatkujacy bezbronny
+m.EffectsUnarmed4_1=Ulepszenie obrazen
+m.EffectsUnarmed5_0=Odbicie strzaly
+m.EffectsUnarmed5_1=Odbija strzaly
+m.AbilLockUnarmed1=Zablokowane puki nie osiagniesz umiejetnosci na poziomie 250+ (POCZATKUJACY BEZBRONNY)
+m.AbilLockUnarmed2=Zablokowane puki nie osiagniesz umiejetnosci na poziomie 500+ (MISTRZOSTWO WALKI GOLA PIESCIA)
+m.AbilBonusUnarmed1_0=Poczatkujacy bezbronny
+m.AbilBonusUnarmed1_1=+2 obrazen
+m.AbilBonusUnarmed2_0=Mistrzostwo walki gola piescia
+m.AbilBonusUnarmed2_1=+4 obrazen
+m.UnarmedArrowDeflectChance=[[RED]]Szansa na odbicie strzaly: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Szansa na rozbrojenie: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Dlugosc Furii: [[YELLOW]]{0}s
+m.SkillHerbalism=ZIELARSTWO
+m.XPGainHerbalism=Zbieranie ziol.
+m.EffectsHerbalism1_0=Zielona Ziemia (UMIEJETNOSC)
+m.EffectsHerbalism1_1=Rozprzestrzenia ziemie, Potraja Wynagrodzenie.
+m.EffectsHerbalism2_0=Zielony Kciuk (Zboze)
+m.EffectsHerbalism2_1=Automatycznie zasadza nasiona przy zbieraniu zboza.
+m.EffectsHerbalism3_0=Zielony Kciuk (Cobbletone)
+m.EffectsHerbalism3_1=Zamienia Cooblestone w Mossy Stone
+m.EffectsHerbalism4_0=Jedzenie+
+m.EffectsHerbalism4_1=Modyfikuje ilosc zycia regenerowana przez zjedzenie chleba/zupy grzybowej.
+m.EffectsHerbalism5_0=Podwojne wynagrodzenie
+m.EffectsHerbalism5_1=Podwaja normalny drop
+m.HerbalismGreenTerraLength=[[RED]]Czas Trwania Zielonego Kciuka: [[YELLOW]]{0}sekund
+m.HerbalismGreenThumbChance=[[RED]]Szansa na powodzenie Zielonego Kciuka: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Poziom Zielonego Kciuka: [[YELLOW]] Zboze rosnie na poziomie {0}
+m.HerbalismDoubleDropChance=[[RED]]Podwojne wynagrodzenie: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Jedzenie+ (Rank{0}): [[YELLOW]]Dodatkowe {0} zycia
+m.SkillExcavation=ARCHEOLOGIA
+m.XPGainExcavation=Kopanie i odnajdywanie skarbow
+m.EffectsExcavation1_0=Wielki Lamacz Wiertla (UMIEJETNOSC)
+m.EffectsExcavation1_1=3x wieksze wynagrodzenei, 3x wiecej doswiadczenia, +Szybkosc
+m.EffectsExcavation2_0=Lowca Skarbow
+m.EffectsExcavation2_1=Umiejetnosc znajdywania skarbow
+m.ExcavationGreenTerraLength=[[RED]]Wielki Lamacz Wiertla: [[YELLOW]]{0}s
+mcBlockListener.PlacedAnvil=[[DARK_RED]]Polozyles kowadlo, ktore pozwala na naprawe przedmiotow.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Twoj Wilk do Ciebie wraca.
+mcPlayerListener.AbilitiesOff=Uzywanie umiejetnosci wylaczone
+mcPlayerListener.AbilitiesOn=Uzywanie umiejetnosci wlaczone
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**UMIEJETNOSCI ODSWIEZONE\!**
+mcPlayerListener.AcrobaticsSkill=Akrobatyka: 
+mcPlayerListener.ArcherySkill=Lucznictwo:
+mcPlayerListener.AxesSkill=Topory: 
+mcPlayerListener.ExcavationSkill=Archeologia: 
+mcPlayerListener.GodModeDisabled=[[YELLOW]]Tryb boga wylaczony
+mcPlayerListener.GodModeEnabled=[[YELLOW]]Tryb boga wlaczony
+mcPlayerListener.GreenThumb=[[GREEN]]**UZYLES ZIELONY KCIUK**
+mcPlayerListener.GreenThumbFail=[[RED]]**UZYWANIE ZIELONEGO KCIUKA NIE POWIODLO SIE**
+mcPlayerListener.HerbalismSkill=Zielarstwo: 
+mcPlayerListener.MiningSkill=Wykopaliska: 
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Twoj spawn jest teraz oczyszczony.
+mcPlayerListener.MyspawnNotExist=[[RED]]Ustaw wpierw swoj spawn za pomoca lozka.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Twoj spawn zostal ustawiony na twoje aktualne polozenie.
+mcPlayerListener.MyspawnTimeNotice=Musisz zaczekac {0}minut i {1}sekund aby przeteleportowac sie na spawn.
+mcPlayerListener.NoPermission=Brak mcPermissions.
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Jesli nie masz prawa do uzywania umiejetnosci, nie pokaze sie ona tu.
+mcPlayerListener.NotInParty=[[RED]]Nie jestes w grupie.
+mcPlayerListener.InviteSuccess=[[GREEN]]Zaproszenie wyslane.
+mcPlayerListener.ReceivedInvite1=[[RED]]UWAGA: [[GREEN]]Dostales zaproszenie do grupy {0} od {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]Wpisz [[GREEN]]/{0}[[YELLOW]] aby zaakceptowac zaproszenie 
+mcPlayerListener.InviteAccepted=[[GREEN]]Zaproszenie akceptowane. Doszles do grupy {0}
+mcPlayerListener.NoInvites=[[RED]]Nie masz zadnych zaproszen do grupy
+mcPlayerListener.YouAreInParty=[[GREEN]]Jestes w grupie {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Czlonkowie grupy
+mcPlayerListener.LeftParty=[[RED]]Wyszles z tej grupy
+mcPlayerListener.JoinedParty=Doszedles do grupy: {0}
+mcPlayerListener.PartyChatOn=Chat tylko dla grupy [[GREEN]]WLACZONY
+mcPlayerListener.PartyChatOff=Chat tylko dla grupy [[RED]]WYLACZONY
+mcPlayerListener.AdminChatOn=Chat tylko dla adminow [[GREEN]]WLACZONY
+mcPlayerListener.AdminChatOff=Chat tylko dla adminow [[RED]]WYLACZONY
+mcPlayerListener.MOTD=[[BLUE]]Ten server uzywa plugina mcMMO {0} wpisz [[YELLOW]]/{1}[[BLUE]] aby uzyskac pomoc.
+mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Wiki
+mcPlayerListener.PowerLevel=[[DARK_RED]]POZIOM MOCY: 
+mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--Ranking [[BLUE]]poziomu mocy [[YELLOW]]mcMMO--
+mcPlayerListener.SkillLeaderboard=[[YELLOW]]--Ranking [[BLUE]]{0}[[YELLOW]] mcMMO--
+mcPlayerListener.RepairSkill=Naprawa: 
+mcPlayerListener.SwordsSkill=Miecze: 
+mcPlayerListener.TamingSkill=Oswajanie: 
+mcPlayerListener.UnarmedSkill=Bezbronny: 
+mcPlayerListener.WoodcuttingSkill=Scinanie drzew: 
+mcPlayerListener.YourStats=[[GREEN]][mcMMO] Statystyki
+Party.InformedOnJoin={0} [[GREEN]] dolaczyl do twojej grupy
+Party.InformedOnQuit={0} [[GREEN]] wyszedl z twojej grupy
+Skills.YourGreenTerra=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Zielona Ziemia [[GREEN]]zostala naladowana!
+Skills.YourTreeFeller=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Powalacz Drzew [[GREEN]]zostala naladowana!
+Skills.YourSuperBreaker=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Super Kopacz [[GREEN]]zostala naladowana!
+Skills.YourSerratedStrikes=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Zabkowany Atak [[GREEN]]zostala naladowana!
+Skills.YourBerserk=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Furia [[GREEN]]zostala naladowana!
+Skills.YourSkullSplitter=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Lamacz Czaszek [[GREEN]]zostala naladowana!
+Skills.YourGigaDrillBreaker=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Wielki Lamacz Wiertla [[GREEN]]zostala naladowana!
+Skills.TooTired=[[RED]]Jestes zbyt zmeczony zeby uzyc znowu tej umiejetnosci.
+Skills.ReadyHoe=[[GREEN]]**NALADOWALES SWOJA MOTYKE**
+Skills.LowerHoe=[[GRAY]]**ZWOLNILES SWOJA MOTYKE**
+Skills.ReadyAxe=[[GREEN]]**NALADOWALES SWOJ TOPOR**
+Skills.LowerAxe=[[GRAY]]**ZWOLNILES SWOJ TOPOR**
+Skills.ReadyFists=[[GREEN]]**NALADOWALES SWOJE PIESCI**
+Skills.LowerFists=[[GRAY]]**ZWOLNILES SWOJE PIESCI**
+Skills.ReadyPickAxe=[[GREEN]]**NALADOWALES SWOJ KILOF**
+Skills.LowerPickAxe=[[GRAY]]**ZWOLNILES SWOJ KILOF**
+Skills.ReadyShovel=[[GREEN]]**NALADOWALES SWOJA LOPATE**
+Skills.LowerShovel=[[GRAY]]**ZWOLNILES SWOJA LOPATE**
+Skills.ReadySword=[[GREEN]]**NALADOWALES SWOJ MIECZ**
+Skills.LowerSword=[[GRAY]]**ZWOLNILES SWOJ MIECZ**
+Skills.BerserkOn=[[GREEN]]**FURIA AKTYWOWANA**
+Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Furie!
+Skills.GreenTerraOn=[[GREEN]]**ZIELONA ZIEMIA AKTYWOWANA**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Zielona Ziemie!
+Skills.TreeFellerOn=[[GREEN]]**POWALACZ DRZEW AKTYWOWANY**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Powalacza Drzew!
+Skills.SuperBreakerOn=[[GREEN]]**SUPER KOPACZ AKTYWOWANY**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Super Kopacza!
+Skills.SerratedStrikesOn=[[GREEN]]**ZABKOWANY ATAK AKTYWOWANY**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Zabkowany Atak!
+Skills.SkullSplitterOn=[[GREEN]]**LAMACZ CZASZEK AKTYWOWANY**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Lamacza Czaszek!
+Skills.GigaDrillBreakerOn=[[GREEN]]**WIELKI LAMACZ WIERTLA AKTYWOWANY**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Wielki Lamacz Wiertla!
+Skills.GreenTerraOff=[[RED]]**Zielona Ziemia zostala zuzyta**
+Skills.TreeFellerOff=[[RED]]**Powalacz drzew zostal zuzyty**
+Skills.SuperBreakerOff=[[RED]]**Super Kopacz zostal zuzyty**
+Skills.SerratedStrikesOff=[[RED]]**Zabkowany Atak zostal zuzyty**
+Skills.BerserkOff=[[RED]]**Furia zostala zuzyta**
+Skills.SkullSplitterOff=[[RED]]**Lamacz czaszek zostal zuzyty**
+Skills.GigaDrillBreakerOff=[[RED]]**Wielki Lamacz Wiertla zostal zuzyty**
+Skills.TamingUp=[[YELLOW]]Umiejetnosc oswajania ulepszona o {0}. Razem ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Umiejetnosci akrobatyczne ulepszone o {0}. Razem ({1})
+Skills.ArcheryUp=[[YELLOW]]Umiejetnosc lucznictwa ulepszona o {0}. Razem ({1})
+Skills.SwordsUp=[[YELLOW]]Umiejetnosc uzywania mieczy ulepszona o {0}. Razem ({1})
+Skills.AxesUp=[[YELLOW]]Umiejetnosc uzywania topora ulepszona o {0}. Razem ({1})
+Skills.UnarmedUp=[[YELLOW]]Umiejetnosc bezbronnosci ulepszona o {0}. Razem ({1})
+Skills.HerbalismUp=[[YELLOW]]Umiejetnosc zielarstwa ulepszona o {0}. Razem ({1})
+Skills.MiningUp=[[YELLOW]]Umiejetnosc wykopalisk ulepszona o {0}. Razem ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Umiejetnosc ciecia drzew ulepszona o {0}. Razem ({1})
+Skills.RepairUp=[[YELLOW]]Umiejetnosc naprawy ulepszona o {0}. Razem ({1})
+Skills.ExcavationUp=[[YELLOW]]Umiejetnosc archeologii ulepszona o {0}. Razem ({1})
+Skills.FeltEasy=[[GRAY]]To poszlo latwo.
+Skills.StackedItems=[[DARK_RED]]Nie mozesz naprawiac przedmiotow ulozonych na sterte.
+Skills.NeedMore=[[DARK_RED]]Potrzebujesz wiecej
+Skills.AdeptDiamond=[[DARK_RED]]Nie jestes wystarczajaco utalentowany zeby naprawic Diament
+Skills.FullDurability=[[GRAY]]Ten przedmiot jest w pelni wytrzymaly.
+Skills.Disarmed=[[DARK_RED]]Zostales rozbrojony!
+mcPlayerListener.SorcerySkill=Magia: 
+m.SkillSorcery=MAGIA
+Sorcery.HasCast=[[GREEN]]**RZUCANIE ZAKLECIA**[[GOLD]]
+Sorcery.Current_Mana=[[DARK_AQUA]]MP
+Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
+Sorcery.Cost=[[RED]][COST] {0} MP
+Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Koniec Many [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=PIORUN
+Sorcery.Curative.Self=LECZENIE SIEBIE
+Sorcery.Curative.Other=LECZENIE INNYCH LUDZI
+m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]Doswiadczenia[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]**WIEDZA BESTI**
+Combat.BeastLoreOwner=[[DARK_AQUA]]Wlasciciel ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Zycie ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Zycie ([[GREEN]]{0}[[DARK_AQUA]]/8)

+ 74 - 0
mcMMO/com/gmail/nossr50/locale/mcLocale.java

@@ -0,0 +1,74 @@
+package com.gmail.nossr50.locale;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.bukkit.ChatColor;
+
+import com.gmail.nossr50.config.LoadProperties;
+
+public class mcLocale 
+{
+	private static final String BUNDLE_NAME = "com.gmail.nossr50.locale.locale"; //$NON-NLS-1$
+
+	private static ResourceBundle RESOURCE_BUNDLE = null;
+
+	public static String getString(String key) 
+	{
+		return getString(key, null);
+	}
+
+	public static String getString(String key, Object[] messageArguments) 
+	{
+		try {
+			if (RESOURCE_BUNDLE == null) 
+			{
+				String myLocale = LoadProperties.locale.toLowerCase();
+				try {
+					//attempt to get the locale denoted
+					RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME, new Locale(myLocale));
+				} catch (MissingResourceException e) {
+					//System.out.println("Failed to load locale specified by mcmmo.properties '"+myLocale+"', defaulting to en_us");
+					RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME, new Locale("en_us"));
+				}
+			}
+			
+			String output = RESOURCE_BUNDLE.getString(key);
+
+			if (messageArguments != null) {
+				MessageFormat formatter = new MessageFormat("");
+				formatter.applyPattern(output);
+				output = formatter.format(messageArguments);
+			}
+			
+			output = addColors(output);
+			
+			return output;
+		} catch (MissingResourceException e) {
+			return '!' + key + '!';
+		}
+	}
+	
+	private static String addColors(String input) {
+		input = input.replaceAll("\\Q[[BLACK]]\\E", ChatColor.BLACK.toString());
+		input = input.replaceAll("\\Q[[DARK_BLUE]]\\E", ChatColor.DARK_BLUE.toString());
+		input = input.replaceAll("\\Q[[DARK_GREEN]]\\E", ChatColor.DARK_GREEN.toString());
+		input = input.replaceAll("\\Q[[DARK_AQUA]]\\E", ChatColor.DARK_AQUA.toString());
+		input = input.replaceAll("\\Q[[DARK_RED]]\\E", ChatColor.DARK_RED.toString());
+		input = input.replaceAll("\\Q[[DARK_PURPLE]]\\E", ChatColor.DARK_PURPLE.toString());
+		input = input.replaceAll("\\Q[[GOLD]]\\E", ChatColor.GOLD.toString());
+		input = input.replaceAll("\\Q[[GRAY]]\\E", ChatColor.GRAY.toString());
+		input = input.replaceAll("\\Q[[DARK_GRAY]]\\E", ChatColor.DARK_GRAY.toString());
+		input = input.replaceAll("\\Q[[BLUE]]\\E", ChatColor.BLUE.toString());
+		input = input.replaceAll("\\Q[[GREEN]]\\E", ChatColor.GREEN.toString());
+		input = input.replaceAll("\\Q[[AQUA]]\\E", ChatColor.AQUA.toString());
+		input = input.replaceAll("\\Q[[RED]]\\E", ChatColor.RED.toString());
+		input = input.replaceAll("\\Q[[LIGHT_PURPLE]]\\E", ChatColor.LIGHT_PURPLE.toString());
+		input = input.replaceAll("\\Q[[YELLOW]]\\E", ChatColor.YELLOW.toString());
+		input = input.replaceAll("\\Q[[WHITE]]\\E", ChatColor.WHITE.toString());
+		
+		return input;
+	}
+}

+ 461 - 926
mcMMO/com/gmail/nossr50/m.java

@@ -1,926 +1,461 @@
-package com.gmail.nossr50;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.entity.*;
-import org.bukkit.event.player.PlayerChatEvent;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.plugin.Plugin;
-
-import com.gmail.nossr50.config.*;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.FakeBlockBreakEvent;
-public class m {
-	public static final Logger log = Logger.getLogger("Minecraft"); //$NON-NLS-1$
-	/*
-	 * I'm storing my misc functions/methods in here in an unorganized manner. Spheal with it.
-	 */
-	
-	//The lazy way to default to 0
-	public static int getInt(String string)
-	{
-		if(isInt(string))
-		{
-			return Integer.valueOf(string);
-		}
-		else
-		{
-			return 0;
-		}
-	}
-	public static Double getDouble(String string)
-	{
-		if(isDouble(string))
-		{
-			return Double.valueOf(string);
-		}
-		else
-		{
-			return (double) 0;
-		}
-	}
-	public static boolean isDouble(String string)
-	{
-		try {
-		    Double x = Double.valueOf(string);
-		}
-		catch(NumberFormatException nFE) {
-		    return false;
-		}
-		return true;
-	}
-	public static boolean shouldBeWatched(Block block)
-	{
-		int id = block.getTypeId();
-		if(id == 49 || id == 81 || id == 83 || id == 86 || id == 91 || id == 1 || id == 17 || id == 42 || id == 87 || id == 89 || id == 2 || id == 3 || id == 12 || id == 13 || id == 21 || id == 15 || id == 14 || id == 56 || id == 38 || id == 37 || id == 39 || id == 40 || id == 24){
-			return true;
-		} else {
-			return false;
-		}
-	}
-	public static int getPowerLevel(Player player)
-	{
-		PlayerProfile PP = Users.getProfile(player);
-		int x = 0;
-		if(mcPermissions.getInstance().mining(player))
-			x+=PP.getSkill("mining");
-		if(mcPermissions.getInstance().woodcutting(player))
-			x+=PP.getSkill("woodcutting");
-		if(mcPermissions.getInstance().unarmed(player))
-			x+=PP.getSkill("unarmed");
-		if(mcPermissions.getInstance().herbalism(player))
-			x+=PP.getSkill("herbalism");
-		if(mcPermissions.getInstance().excavation(player))
-			x+=PP.getSkill("excavation");
-		if(mcPermissions.getInstance().archery(player))
-			x+=PP.getSkill("archery");
-		if(mcPermissions.getInstance().swords(player))
-			x+=PP.getSkill("swords");
-		if(mcPermissions.getInstance().axes(player))
-			x+=PP.getSkill("axes");
-		if(mcPermissions.getInstance().acrobatics(player))
-			x+=PP.getSkill("acrobatics");
-		if(mcPermissions.getInstance().repair(player))
-			x+=PP.getSkill("repair");
-		return x;
-	}
-	
-	public static boolean blockBreakSimulate(Block block, Player player, Plugin plugin)
-	{
-
-    	FakeBlockBreakEvent event = new FakeBlockBreakEvent(block, player);
-    	if(block != null && plugin != null && player != null){
-    		plugin.getServer().getPluginManager().callEvent(event);
-	    	if(!event.isCancelled())
-	    	{
-	    		return true; //Return true if not cancelled
-	    	} else {
-	    		return false; //Return false if cancelled
-	    	}
-    	} else {
-    		return false; //Return false if something went wrong
-    	}
-    }
-	
-	public static void damageTool(Player player, short damage)
-	{
-		if(player.getItemInHand().getTypeId() == 0)
-			return;
-		player.getItemInHand().setDurability((short) (player.getItemInHand().getDurability() + damage));
-		if(player.getItemInHand().getDurability() >= getMaxDurability(getTier(player), player.getItemInHand()))
-		{
-			ItemStack[] inventory = player.getInventory().getContents();
-	    	for(ItemStack x : inventory)
-	    	{
-	    		if(x != null && x.getTypeId() == player.getItemInHand().getTypeId() && x.getDurability() == player.getItemInHand().getDurability()){
-	    			x.setTypeId(0);
-	    			x.setAmount(0);
-	    			player.getInventory().setContents(inventory);
-	    			return;
-	    		}
-	    	}
-		}
-	}
-	public boolean hasArrows(Player player){
-		for(ItemStack x : player.getInventory().getContents()){
-			if(x.getTypeId() == 262)
-				return true;
-		}
-		return false;
-	}
-	public void addArrows(Player player){
-		ItemStack[] inventory = player.getInventory().getContents();
-    	for(ItemStack x : inventory){
-    		if(x != null && x.getTypeId() == 262){
-    			if(x.getAmount() >= 1 && x.getAmount() < 64){
-    				x.setAmount(x.getAmount() + 1);
-    				player.getInventory().setContents(inventory);
-    			}
-    			return;
-    		}
-    	}
-	}
-	public static Integer getTier(Player player){
-		int i = player.getItemInHand().getTypeId();
-		if(i == 268 || i == 269 || i == 270 || i == 271 || i == 290){
-			return 1; //WOOD
-		} else if (i == 272 || i == 273 || i == 274 || i == 275 || i == 291){
-			return 2; //STONE
-		} else if (i == 256 || i == 257 || i == 258 || i == 267 || i == 292){
-			return 3; //IRON
-		} else if (i == 283 || i == 284 || i == 285 || i == 286 || i == 294){
-			return 1; //GOLD
-		} else if (i == 276 || i == 277 || i == 278 || i == 279 || i == 293){
-			return 4; //DIAMOND
-		} else {
-			return 1; //UNRECOGNIZED
-		}
-	}
-	public static Integer getMaxDurability(Integer tier, ItemStack item){
-		int id = item.getTypeId();
-		if(tier == 1){
-			if((id == 276 || id == 277 || id == 278 || id == 279 || id == 293)){
-				return 33;
-			} else {
-				return 60;
-			}
-		} else if (tier == 2){
-			return 132;
-		} else if (tier == 3){
-			return 251;
-		} else if (tier == 4){
-			return 1562;
-		} else {
-			return 0;
-		}
-	}
-	
-	public static double getDistance(Location loca, Location locb)
-    {
-		return Math.sqrt(Math.pow(loca.getX() - locb.getX(), 2) + Math.pow(loca.getY() - locb.getY(), 2)
-	    + Math.pow(loca.getZ() - locb.getZ(), 2));
-    }
-	
-	public static boolean abilityBlockCheck(Block block)
-	{
-		int i = block.getTypeId();
-		if(i == 96 || i == 68 || i == 355 || i == 26 || i == 323 || i == 25 || i == 54 || i == 69 || i == 92 || i == 77 || i == 58 || i == 61 || i == 62 || i == 42 || i == 71 || i == 64 || i == 84 || i == 324 || i == 330){
-			return false;
-		} else {
-			return true;
-		}
-	}
-	
-	public static boolean isBlockAround(Location loc, Integer radius, Integer typeid)
-	{
-		Block blockx = loc.getBlock();
-    	int ox = blockx.getX();
-        int oy = blockx.getY();
-        int oz = blockx.getZ();
-    	for (int cx = -radius; cx <= radius; cx++) {
-            for (int cy = -radius; cy <= radius; cy++) {
-                for (int cz = -radius; cz <= radius; cz++) {
-                    Block block = loc.getWorld().getBlockAt(ox + cx, oy + cy, oz + cz);
-                    if (block.getTypeId() == typeid) {
-                        return true;
-                    }
-                }
-            }
-        }
-    	return false;
-	}
-	
-	public static Integer calculateHealth(Integer health, Integer newvalue){
-    	if((health + newvalue) > 20){
-    		return 20;
-    	} else {
-    		return health+newvalue;
-    	}
-    }
-    public Integer calculateMinusHealth(Integer health, Integer newvalue){
-    	if((health - newvalue) < 1){
-    		return 0;
-    	} else {
-    		return health-newvalue;
-    	}
-    }
-    public static boolean isInt(String string){
-		try {
-		    int x = Integer.parseInt(string);
-		}
-		catch(NumberFormatException nFE) {
-		    return false;
-		}
-		return true;
-	}
-    public static void mcDropItem(Location loc, int id){
-    	if(loc != null){
-    	Material mat = Material.getMaterial(id);
-		byte damage = 0;
-		ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
-		loc.getWorld().dropItemNaturally(loc, item);
-    	}
-    }
-	
-    public static boolean isSwords(ItemStack is){
-    	if(is.getTypeId() == 268 || is.getTypeId() == 267 || is.getTypeId() == 272 || is.getTypeId() == 283 || is.getTypeId() == 276){
-    		return true;
-    	} else {
-    		return false;
-    	}
-    }
-    public static boolean isHoe(ItemStack is){
-    	int id = is.getTypeId();
-    	if(id == 290 || id == 291 || id == 292 || id == 293 || id == 294){
-    		return true;
-    	} else {
-    		return false;
-    	}
-    }
-    public static boolean isShovel(ItemStack is){
-    	if(is.getTypeId() == 269 || is.getTypeId() == 273 || is.getTypeId() == 277 || is.getTypeId() == 284 || is.getTypeId() == 256){
-    		return true;
-    	} else {
-    		return false;
-    	}
-    }
-    public static boolean isAxes(ItemStack is){
-    	if(is.getTypeId() == 271 || is.getTypeId() == 258 || is.getTypeId() == 286 || is.getTypeId() == 279 || is.getTypeId() == 275){
-    		return true;
-    	} else {
-    		return false;
-    	}
-    }
-    public static boolean isMiningPick(ItemStack is){
-    	if(is.getTypeId() == 270 || is.getTypeId() == 274 || is.getTypeId() == 285 || is.getTypeId() == 257 || is.getTypeId() == 278){
-    		return true;
-    	} else {
-    		return false;
-    	}
-    }
-    public boolean isGold(ItemStack is){
-    	int i = is.getTypeId();
-    	if(i == 283 || i == 284 || i == 285 || i == 286 || i == 294 || i == 314 || i == 315 || i == 316 || i == 317){
-    		return true;
-    	} else {
-    		return false;
-    	}
-    }
-    public static void convertToMySQL(Plugin pluginx)
-    {
-    	if(!LoadProperties.useMySQL)
-    		return;
-    	String location = "plugins/mcMMO/mcmmo.users"; //$NON-NLS-1$
-    	try {
-        	//Open the user file
-        	FileReader file = new FileReader(location);
-        	BufferedReader in = new BufferedReader(file);
-        	String line = ""; //$NON-NLS-1$
-        	String playerName = null, mining = null, party = null, miningXP = null, woodcutting = null, woodCuttingXP = null, repair = null, unarmed = null, herbalism = null,
-        	excavation = null, archery = null, swords = null, axes = null, acrobatics = null, repairXP = null, unarmedXP = null, herbalismXP = null, excavationXP = null, archeryXP = null, swordsXP = null, axesXP = null,
-        	acrobaticsXP = null, taming = null, tamingXP = null;
-        	int id = 0, theCount = 0;
-        	while((line = in.readLine()) != null)
-        	{
-        		//Find if the line contains the player we want.
-        		String[] character = line.split(":"); //$NON-NLS-1$
-        		playerName = character[0];
-        		//Check for things we don't want put in the DB
-        		if(playerName == null || playerName.equals("null") || playerName.equals("#Storage place for user information")) //$NON-NLS-1$ //$NON-NLS-2$
-        			continue;
-        		
-    			//Get Mining
-    			if(character.length > 1)
-    				mining = character[1];
-    			//Party
-    			if(character.length > 3)
-    				party = character[3];
-    			//Mining XP
-    			if(character.length > 4)
-    				miningXP = character[4];
-    			if(character.length > 5)
-    				woodcutting = character[5];
-    			if(character.length > 6)
-    				woodCuttingXP = character[6];
-    			if(character.length > 7)
-    				repair = character[7];
-    			if(character.length > 8)
-    				unarmed = character[8];
-    			if(character.length > 9)
-    				herbalism = character[9];
-    			if(character.length > 10)
-    				excavation = character[10];
-    			if(character.length > 11)
-    				archery = character[11];
-    			if(character.length > 12)
-    				swords = character[12];
-    			if(character.length > 13)
-    				axes = character[13];
-    			if(character.length > 14)
-    				acrobatics = character[14];
-    			if(character.length > 15)
-    				repairXP = character[15];
-    			if(character.length > 16)
-    				unarmedXP = character[16];
-    			if(character.length > 17)
-    				herbalismXP = character[17];
-    			if(character.length > 18)
-    				excavationXP = character[18];
-    			if(character.length > 19)
-    				archeryXP = character[19];
-    			if(character.length > 20)
-    				swordsXP = character[20];
-    			if(character.length > 21)
-    				axesXP = character[21];
-    			if(character.length > 22)
-    				acrobaticsXP = character[22];
-    			if(character.length > 24)
-    				taming = character[24];
-    			if(character.length > 25)
-    				tamingXP = character[25];
-            	//Check to see if the user is in the DB
-    			id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + playerName + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    			//Prepare some variables
-    			/*
-    			if(myspawn != null && myspawn.length() > 0)
-    			{
-    				String[] split = myspawn.split(",");
-    				x = split[0];
-    				y = split[1];
-    				z = split[2];
-    			}
-    			*/
-    			/*
-    		    if(myspawnworld.equals("") || myspawnworld == null)
-    		    	myspawnworld = pluginx.getServer().getWorlds().get(0).toString();
-    		    */
-    			if(id > 0)
-    			{
-    				theCount++;
-    				//Update the skill values
-    				mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET lastlogin = " + 0 + " WHERE id = " + id); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    				//if(getDouble(x) > 0 && getDouble(y) > 0 && getDouble(z) > 0)
-    					//mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + myspawnworld + "', x = " +getDouble(x)+", y = "+getDouble(y)+", z = "+getDouble(z)+" WHERE user_id = "+id);
-    	    		mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"skills SET " //$NON-NLS-1$ //$NON-NLS-2$
-    	    				+"  taming = taming+"+getInt(taming) //$NON-NLS-1$
-    	    				+", mining = mining+"+getInt(mining) //$NON-NLS-1$
-    	    				+", repair = repair+"+getInt(repair) //$NON-NLS-1$
-    	    				+", woodcutting = woodcutting+"+getInt(woodcutting) //$NON-NLS-1$
-    	    				+", unarmed = unarmed+"+getInt(unarmed) //$NON-NLS-1$
-    	    				+", herbalism = herbalism+"+getInt(herbalism) //$NON-NLS-1$
-    	    				+", excavation = excavation+"+getInt(excavation) //$NON-NLS-1$
-    	    				+", archery = archery+" +getInt(archery) //$NON-NLS-1$
-    	    				+", swords = swords+" +getInt(swords) //$NON-NLS-1$
-    	    				+", axes = axes+"+getInt(axes) //$NON-NLS-1$
-    	    				+", acrobatics = acrobatics+"+getInt(acrobatics) //$NON-NLS-1$
-    	    				+" WHERE user_id = "+id); //$NON-NLS-1$
-    	    		mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"experience SET " //$NON-NLS-1$ //$NON-NLS-2$
-    	    				+"  taming = "+getInt(tamingXP) //$NON-NLS-1$
-    	    				+", mining = "+getInt(miningXP) //$NON-NLS-1$
-    	    				+", repair = "+getInt(repairXP) //$NON-NLS-1$
-    	    				+", woodcutting = "+getInt(woodCuttingXP) //$NON-NLS-1$
-    	    				+", unarmed = "+getInt(unarmedXP) //$NON-NLS-1$
-    	    				+", herbalism = "+getInt(herbalismXP) //$NON-NLS-1$
-    	    				+", excavation = "+getInt(excavationXP) //$NON-NLS-1$
-    	    				+", archery = " +getInt(archeryXP) //$NON-NLS-1$
-    	    				+", swords = " +getInt(swordsXP) //$NON-NLS-1$
-    	    				+", axes = "+getInt(axesXP) //$NON-NLS-1$
-    	    				+", acrobatics = "+getInt(acrobaticsXP) //$NON-NLS-1$
-    	    				+" WHERE user_id = "+id); //$NON-NLS-1$
-    			}
-    			else
-    			{
-    				theCount++;
-    				//Create the user in the DB
-    				mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"users (user, lastlogin) VALUES ('" + playerName + "'," + System.currentTimeMillis() / 1000 +")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-    				id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + playerName + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    				mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"spawn (user_id) VALUES ("+id+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    				mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"skills (user_id) VALUES ("+id+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    				mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"experience (user_id) VALUES ("+id+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    				//Update the skill values
-    				mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET lastlogin = " + 0 + " WHERE id = " + id); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    				mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET party = '"+party+"' WHERE id = " +id); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-    				/*
-    				if(getDouble(x) > 0 && getDouble(y) > 0 && getDouble(z) > 0)
-    					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + myspawnworld + "', x = " +getDouble(x)+", y = "+getDouble(y)+", z = "+getDouble(z)+" WHERE user_id = "+id);
-    	    		*/
-    	    		mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"skills SET " //$NON-NLS-1$ //$NON-NLS-2$
-    	    				+"  taming = "+getInt(taming) //$NON-NLS-1$
-    	    				+", mining = "+getInt(mining) //$NON-NLS-1$
-    	    				+", repair = "+getInt(repair) //$NON-NLS-1$
-    	    				+", woodcutting = "+getInt(woodcutting) //$NON-NLS-1$
-    	    				+", unarmed = "+getInt(unarmed) //$NON-NLS-1$
-    	    				+", herbalism = "+getInt(herbalism) //$NON-NLS-1$
-    	    				+", excavation = "+getInt(excavation) //$NON-NLS-1$
-    	    				+", archery = " +getInt(archery) //$NON-NLS-1$
-    	    				+", swords = " +getInt(swords) //$NON-NLS-1$
-    	    				+", axes = "+getInt(axes) //$NON-NLS-1$
-    	    				+", acrobatics = "+getInt(acrobatics) //$NON-NLS-1$
-    	    				+" WHERE user_id = "+id); //$NON-NLS-1$
-    	    		mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"experience SET " //$NON-NLS-1$ //$NON-NLS-2$
-    	    				+"  taming = "+getInt(tamingXP) //$NON-NLS-1$
-    	    				+", mining = "+getInt(miningXP) //$NON-NLS-1$
-    	    				+", repair = "+getInt(repairXP) //$NON-NLS-1$
-    	    				+", woodcutting = "+getInt(woodCuttingXP) //$NON-NLS-1$
-    	    				+", unarmed = "+getInt(unarmedXP) //$NON-NLS-1$
-    	    				+", herbalism = "+getInt(herbalismXP) //$NON-NLS-1$
-    	    				+", excavation = "+getInt(excavationXP) //$NON-NLS-1$
-    	    				+", archery = " +getInt(archeryXP) //$NON-NLS-1$
-    	    				+", swords = " +getInt(swordsXP) //$NON-NLS-1$
-    	    				+", axes = "+getInt(axesXP) //$NON-NLS-1$
-    	    				+", acrobatics = "+getInt(acrobaticsXP) //$NON-NLS-1$
-    	    				+" WHERE user_id = "+id); //$NON-NLS-1$
-    			}
-        	}
-        	System.out.println("[mcMMO] MySQL Updated from users file, "+theCount+" items added/updated to MySQL DB"); //$NON-NLS-1$ //$NON-NLS-2$
-        	in.close();
-        } catch (Exception e) {
-            log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
-            		+ location + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
-        }
-    }
-    public static void mmoHelpCheck(String[] split, Player player, PlayerChatEvent event){
-    	PlayerProfile PP = Users.getProfile(player);
-    	if(split[0].equalsIgnoreCase("/taming") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillTaming").toLowerCase())){ //$NON-NLS-1$
-			event.setCancelled(true);
-			float skillvalue = (float)PP.getSkill("taming");
-			
-    		String percentage = String.valueOf((skillvalue / 1000) * 100);
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillTaming")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainTaming")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().taming(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("taming"), PP.getSkillToString("tamingXP"), PP.getXpToLevel("taming")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsTaming1_0"), Messages.getString("m.EffectsTaming1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsTaming2_0"), Messages.getString("m.EffectsTaming2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsTaming3_0"), Messages.getString("m.EffectsTaming3_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsTaming4_0"), Messages.getString("m.EffectsTaming4_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsTaming5_0"), Messages.getString("m.EffectsTaming5_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsTaming6_0"), Messages.getString("m.EffectsTaming6_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			if(PP.getSkill("taming") < 100)
-				player.sendMessage(Messages.getString("m.AbilityLockTemplate", new Object[] {Messages.getString("m.AbilLockTaming1")})); //$NON-NLS-1$ 
-			else
-				player.sendMessage(Messages.getString("m.AbilityBonusTemplate", new Object[] {Messages.getString("m.AbilBonusTaming1_0"), Messages.getString("m.AbilBonusTaming1_1")})); //$NON-NLS-1$  
-			if(PP.getSkill("taming") < 250)
-				player.sendMessage(Messages.getString("m.AbilityLockTemplate", new Object[] {Messages.getString("m.AbilLockTaming2")})); //$NON-NLS-1$ 
-			else
-				player.sendMessage(Messages.getString("m.AbilityBonusTemplate", new Object[] {Messages.getString("m.AbilBonusTaming2_0"), Messages.getString("m.AbilBonusTaming2_1")})); //$NON-NLS-1$  
-			if(PP.getSkill("taming") < 500)
-				player.sendMessage(Messages.getString("m.AbilityLockTemplate", new Object[] {Messages.getString("m.AbilLockTaming3")})); //$NON-NLS-1$ 
-			else
-				player.sendMessage(Messages.getString("m.AbilityBonusTemplate", new Object[] {Messages.getString("m.AbilBonusTaming3_0"), Messages.getString("m.AbilBonusTaming3_1")})); //$NON-NLS-1$  
-			if(PP.getSkill("taming") < 750)
-				player.sendMessage(Messages.getString("m.AbilityLockTemplate", new Object[] {Messages.getString("m.AbilLockTaming4")})); //$NON-NLS-1$ 
-			else
-				player.sendMessage(Messages.getString("m.AbilityBonusTemplate", new Object[] {Messages.getString("m.AbilBonusTaming4_0"), Messages.getString("m.AbilBonusTaming4_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.TamingGoreChance", new Object[] {percentage})); //$NON-NLS-1$
-    	}
-    	if(split[0].equalsIgnoreCase("/woodcutting") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillWoodCutting").toLowerCase())){ //$NON-NLS-1$
-			event.setCancelled(true);
-			float skillvalue = (float)PP.getSkill("woodcutting");
-			int ticks = 2;
-			int x = PP.getSkill("woodcutting");
-    		while(x >= 50){
-    			x-=50;
-    			ticks++;
-    		}
-    		String percentage = String.valueOf((skillvalue / 1000) * 100);
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillWoodCutting")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainWoodCutting")})); //$NON-NLS-1$
-			if(mcPermissions.getInstance().woodcutting(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("woodcutting"), PP.getSkillToString("woodcuttingXP"), PP.getXpToLevel("woodcutting")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsWoodCutting1_0"), Messages.getString("m.EffectsWoodCutting1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsWoodCutting2_0"), Messages.getString("m.EffectsWoodCutting2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsWoodCutting3_0"), Messages.getString("m.EffectsWoodCutting3_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			if(PP.getSkill("woodcutting") < 100)
-				player.sendMessage(Messages.getString("m.AbilityLockTemplate", new Object[] {Messages.getString("m.AbilLockWoodCutting1")})); //$NON-NLS-1$ 
-			else
-				player.sendMessage(Messages.getString("m.AbilityBonusTemplate", new Object[] {Messages.getString("m.AbilBonusWoodCutting1_0"), Messages.getString("m.AbilBonusWoodCutting1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.WoodCuttingDoubleDropChance", new Object[] {percentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.WoodCuttingTreeFellerLength", new Object[] {ticks})); //$NON-NLS-1$
-    	}
-    	if(split[0].equalsIgnoreCase("/archery") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillArchery").toLowerCase())){ //$NON-NLS-1$
-			event.setCancelled(true);
-			Integer rank = 0;
-			if(PP.getSkill("archery") >= 50)
-    			rank++;
-    		if(PP.getSkill("archery") >= 250)
-    			rank++;
-    		if(PP.getSkill("archery") >= 575)
-    			rank++;
-    		if(PP.getSkill("archery") >= 725)
-    			rank++;
-    		if(PP.getSkill("archery") >= 1000)
-    			rank++;
-			float skillvalue = (float)PP.getSkill("archery");
-    		String percentage = String.valueOf((skillvalue / 1000) * 100);
-    		
-    		int ignition = 20;
-			if(PP.getSkill("archery") >= 200)
-				ignition+=20;
-			if(PP.getSkill("archery") >= 400)
-				ignition+=20;
-			if(PP.getSkill("archery") >= 600)
-				ignition+=20;
-			if(PP.getSkill("archery") >= 800)
-				ignition+=20;
-			if(PP.getSkill("archery") >= 1000)
-				ignition+=20;
-			
-    		String percentagedaze;
-			if(PP.getSkill("archery") < 1000){
-				percentagedaze = String.valueOf((skillvalue / 2000) * 100);
-			} else {
-				percentagedaze = "50"; //$NON-NLS-1$
-			}
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillArchery")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainArchery")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().archery(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("archery"), PP.getSkillToString("archeryXP"), PP.getXpToLevel("archery")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsArchery1_0"), Messages.getString("m.EffectsArchery1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsArchery2_0"), Messages.getString("m.EffectsArchery2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsArchery3_0"), Messages.getString("m.EffectsArchery3_1")})); //$NON-NLS-1$  
-            player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsArchery4_0"), Messages.getString("m.EffectsArchery4_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.ArcheryDazeChance", new Object[] {percentagedaze})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.ArcheryRetrieveChance", new Object[] {percentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.ArcheryIgnitionLength", new Object[] {(ignition / 20)})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.ArcheryDamagePlus", new Object[] {rank})); //$NON-NLS-1$
-    	}
-    	if(split[0].equalsIgnoreCase("/axes") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillAxes"))){ //$NON-NLS-1$
-			event.setCancelled(true);
-			String percentage;
-			float skillvalue = (float)PP.getSkill("axes");
-			if(PP.getSkill("axes") < 750){
-				percentage = String.valueOf((skillvalue / 1000) * 100);
-			} else {
-				percentage = "75"; //$NON-NLS-1$
-			}
-			int ticks = 2;
-			int x = PP.getSkill("axes");
-    		while(x >= 50){
-    			x-=50;
-    			ticks++;
-    		}
-    		
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillAxes")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainAxes")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().axes(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("axes"), PP.getSkillToString("axesXP"), PP.getXpToLevel("axes")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsAxes1_0"), Messages.getString("m.EffectsAxes1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsAxes2_0"), Messages.getString("m.EffectsAxes2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsAxes3_0"), Messages.getString("m.EffectsAxes3_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.AxesCritChance", new Object[] {percentage})); //$NON-NLS-1$
-			if(PP.getSkill("axes") < 500){
-				player.sendMessage(Messages.getString("m.AbilityLockTemplate", new Object[] {Messages.getString("m.AbilLockAxes1")})); //$NON-NLS-1$ 
-			} else {
-				player.sendMessage(Messages.getString("m.AbilityBonusTemplate", new Object[] {Messages.getString("m.AbilBonusAxes1_0"), Messages.getString("m.AbilBonusAxes1_1")})); //$NON-NLS-1$  
-			}
-			player.sendMessage(Messages.getString("m.AxesSkullLength", new Object[] {ticks})); //$NON-NLS-1$
-    	}
-    	if(split[0].equalsIgnoreCase("/swords") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillSwords").toLowerCase())){ //$NON-NLS-1$
-			event.setCancelled(true);
-			int bleedrank = 2;
-			String percentage, parrypercentage = null, counterattackpercentage;
-			float skillvalue = (float)PP.getSkill("swords");
-			if(PP.getSkill("swords") < 750){
-				percentage = String.valueOf((skillvalue / 1000) * 100);
-			} else {
-				percentage = "75"; //$NON-NLS-1$
-			}
-			if(skillvalue >= 750)
-				bleedrank+=1;
-			
-			if(PP.getSkill("swords") <= 900){
-				parrypercentage = String.valueOf((skillvalue / 3000) * 100);
-			} else {
-				parrypercentage = "30"; //$NON-NLS-1$
-			}
-			
-			if(PP.getSkill("swords") <= 600){
-				counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
-			} else {
-				counterattackpercentage = "30"; //$NON-NLS-1$
-			}
-			
-			int ticks = 2;
-			int x = PP.getSkill("swords");
-    		while(x >= 50){
-    			x-=50;
-    			ticks++;
-    		}
-    		
-            player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillSwords")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainSwords")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().swords(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("swords"), PP.getSkillToString("swordsXP"), PP.getXpToLevel("swords")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsSwords1_0"), Messages.getString("m.EffectsSwords1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsSwords2_0"), Messages.getString("m.EffectsSwords2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsSwords3_0"), Messages.getString("m.EffectsSwords3_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsSwords4_0"), Messages.getString("m.EffectsSwords4_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsSwords5_0"), Messages.getString("m.EffectsSwords5_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.SwordsCounterAttChance", new Object[] {counterattackpercentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.SwordsBleedLength", new Object[] {bleedrank})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.SwordsTickNote")); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.SwordsBleedLength", new Object[] {percentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.SwordsParryChance", new Object[] {parrypercentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.SwordsSSLength", new Object[] {ticks})); //$NON-NLS-1$
-			
-    	}
-    	if(split[0].equalsIgnoreCase("/acrobatics") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillAcrobatics").toLowerCase())){ //$NON-NLS-1$
-			event.setCancelled(true);
-			String dodgepercentage;
-			float skillvalue = (float)PP.getSkill("acrobatics");
-    		String percentage = String.valueOf((skillvalue / 1000) * 100);
-    		String gracepercentage = String.valueOf(((skillvalue / 1000) * 100) * 2);
-    		if(PP.getSkill("acrobatics") <= 800){
-    			dodgepercentage = String.valueOf((skillvalue / 4000 * 100));
-    		} else {
-    			dodgepercentage = "20"; 
-    		}
-            player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillAcrobatics")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainAcrobatics")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().acrobatics(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("acrobatics"), PP.getSkillToString("acrobaticsXP"), PP.getXpToLevel("acrobatics")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsAcrobatics1_0"), Messages.getString("m.EffectsAcrobatics1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsAcrobatics2_0"), Messages.getString("m.EffectsAcrobatics2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsAcrobatics3_0"), Messages.getString("m.EffectsAcrobatics3_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.AcrobaticsRollChance", new Object[] {percentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.AcrobaticsGracefulRollChance", new Object[] {gracepercentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.AcrobaticsDodgeChance", new Object[] {dodgepercentage})); //$NON-NLS-1$
-    	}
-    	if(split[0].equalsIgnoreCase("/mining") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillMining"))){ //$NON-NLS-1$
-    		float skillvalue = (float)PP.getSkill("mining");
-    		String percentage = String.valueOf((skillvalue / 1000) * 100);
-    		int ticks = 2;
-    		int x = PP.getSkill("mining");
-    		while(x >= 50){
-    			x-=50;
-    			ticks++;
-    		}
-			event.setCancelled(true);
-            player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillMining")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainMining")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().mining(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("mining"), PP.getSkillToString("miningXP"), PP.getXpToLevel("mining")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsMining1_0"), Messages.getString("m.EffectsMining1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsMining2_0"), Messages.getString("m.EffectsMining2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.MiningDoubleDropChance", new Object[] {percentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.MiningSuperBreakerLength", new Object[] {ticks})); //$NON-NLS-1$
-    	}
-    	if(split[0].equalsIgnoreCase("/repair") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillRepair").toLowerCase())){ //$NON-NLS-1$
-    		float skillvalue = (float)PP.getSkill("repair");
-    		String percentage = String.valueOf((skillvalue / 1000) * 100);
-    		String repairmastery = String.valueOf((skillvalue / 500) * 100);
-			event.setCancelled(true);
-	        player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillRepair")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainRepair")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().repair(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("repair"), PP.getSkillToString("repairXP"), PP.getXpToLevel("repair")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsRepair1_0"), Messages.getString("m.EffectsRepair1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsRepair2_0"), Messages.getString("m.EffectsRepair2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsRepair3_0"), Messages.getString("m.EffectsRepair3_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsRepair4_0", new Object[]{LoadProperties.repairdiamondlevel}), Messages.getString("m.EffectsRepair4_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.RepairRepairMastery", new Object[] {repairmastery})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.RepairSuperRepairChance", new Object[] {percentage})); //$NON-NLS-1$
-    	}
-    	if(split[0].equalsIgnoreCase("/unarmed")){ //$NON-NLS-1$
-			event.setCancelled(true);
-			String percentage, arrowpercentage;
-			float skillvalue = (float)PP.getSkill("unarmed");
-			
-			if(PP.getSkill("unarmed") < 1000){
-				percentage = String.valueOf((skillvalue / 4000) * 100);
-			} else {
-				percentage = "25"; //$NON-NLS-1$
-			}
-			
-			if(PP.getSkill("unarmed") < 1000){
-				arrowpercentage = String.valueOf(((skillvalue / 1000) * 100) / 2);
-			} else {
-				arrowpercentage = "50"; //$NON-NLS-1$
-			}
-			
-			
-			int ticks = 2;
-			int x = PP.getSkill("unarmed");
-    		while(x >= 50){
-    			x-=50;
-    			ticks++;
-    		}
-    		
-	        player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillUnarmed")})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainUnarmed")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().unarmed(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("unarmed"), PP.getSkillToString("unarmedXP"), PP.getXpToLevel("unarmed")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsUnarmed1_0"), Messages.getString("m.EffectsUnarmed1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsUnarmed2_0"), Messages.getString("m.EffectsUnarmed2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsUnarmed3_0"), Messages.getString("m.EffectsUnarmed3_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsUnarmed4_0"), Messages.getString("m.EffectsUnarmed4_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsUnarmed5_0"), Messages.getString("m.EffectsUnarmed5_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.UnarmedArrowDeflectChance", new Object[] {arrowpercentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.UnarmedDisarmChance", new Object[] {percentage})); //$NON-NLS-1$
-			if(PP.getSkill("unarmed") < 250){
-				player.sendMessage(Messages.getString("m.AbilityLockTemplate", new Object[] {Messages.getString("m.AbilLockUnarmed1")})); //$NON-NLS-1$ 
-			} else if(PP.getSkill("unarmed") >= 250 && PP.getSkill("unarmed") < 500){
-				player.sendMessage(Messages.getString("m.AbilityBonusTemplate", new Object[] {Messages.getString("m.AbilBonusUnarmed1_0"), Messages.getString("m.AbilBonusUnarmed1_1")})); //$NON-NLS-1$  
-				player.sendMessage(Messages.getString("m.AbilityLockTemplate", new Object[] {Messages.getString("m.AbilLockUnarmed2")})); //$NON-NLS-1$ 
-			} else {
-				player.sendMessage(Messages.getString("m.AbilityBonusTemplate", new Object[] {Messages.getString("m.AbilBonusUnarmed2_0"), Messages.getString("m.AbilBonusUnarmed2_1")})); //$NON-NLS-1$  
-			}
-			player.sendMessage(Messages.getString("m.UnarmedBerserkLength", new Object[] {ticks})); //$NON-NLS-1$
-    	}
-    	if(split[0].equalsIgnoreCase("/herbalism") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillHerbalism").toLowerCase())){ //$NON-NLS-1$
-			event.setCancelled(true);
-			int rank = 0;
-			if(PP.getSkill("herbalism") >= 50)
-    			rank++;
-    		if (PP.getSkill("herbalism") >= 150)
-    			rank++;
-    		if (PP.getSkill("herbalism") >= 250)
-    			rank++;
-    		if (PP.getSkill("herbalism") >= 350)
-    			rank++;
-    		if (PP.getSkill("herbalism") >= 450)
-    			rank++;
-    		if (PP.getSkill("herbalism") >= 550)
-    			rank++;
-    		if (PP.getSkill("herbalism") >= 650)
-    			rank++;
-    		if (PP.getSkill("herbalism") >= 750)
-    			rank++;
-    		int bonus = 0;
-    		if(PP.getSkill("herbalism") >= 200)
-    			bonus++;
-    		if(PP.getSkill("herbalism") >= 400)
-    			bonus++;
-    		if(PP.getSkill("herbalism") >= 600)
-    			bonus++;
-    		
-    		int ticks = 2;
-			int x = PP.getSkill("herbalism");
-    		while(x >= 50){
-    			x-=50;
-    			ticks++;
-    		}
-    		
-			float skillvalue = (float)PP.getSkill("herbalism");
-    		String percentage = String.valueOf((skillvalue / 1000) * 100);
-    		String gpercentage = String.valueOf((skillvalue / 1500) * 100);
-	        player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillHerbalism")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainHerbalism")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().herbalism(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("herbalism"), PP.getSkillToString("herbalismXP"), PP.getXpToLevel("herbalism")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsHerbalism1_0"), Messages.getString("m.EffectsHerbalism1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsHerbalism2_0"), Messages.getString("m.EffectsHerbalism2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsHerbalism3_0"), Messages.getString("m.EffectsHerbalism3_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsHerbalism4_0"), Messages.getString("m.EffectsHerbalism4_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsHerbalism5_0"), Messages.getString("m.EffectsHerbalism5_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.HerbalismGreenTerraLength", new Object[] {ticks})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.HerbalismGreenThumbChance", new Object[] {gpercentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.HerbalismGreenThumbStage", new Object[] {bonus})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.HerbalismDoubleDropChance", new Object[] {percentage})); //$NON-NLS-1$
-			player.sendMessage(Messages.getString("m.HerbalismFoodPlus", new Object[] {rank})); //$NON-NLS-1$
-    	}
-    	
-    	if(split[0].equalsIgnoreCase("/excavation") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillExcavation").toLowerCase())) //$NON-NLS-1$
-    	{
-			event.setCancelled(true);
-			int ticks = 2;
-			int x = PP.getSkill("excavation");
-    		while(x >= 50){
-    			x-=50;
-    			ticks++;
-    		}
-	        player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillExcavation")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainExcavation")})); //$NON-NLS-1$ 
-			if(mcPermissions.getInstance().excavation(player))
-				player.sendMessage(Messages.getString("m.LVL", new Object[] {PP.getSkillToString("excavation"), PP.getSkillToString("excavationXP"), PP.getXpToLevel("excavation")}));
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsExcavation1_0"), Messages.getString("m.EffectsExcavation1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsExcavation2_0"), Messages.getString("m.EffectsExcavation2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.ExcavationGreenTerraLength", new Object[] {ticks})); //$NON-NLS-1$
-    	}
-    	
-    	if(split[0].equalsIgnoreCase("/sorcery") || split[0].toLowerCase().equalsIgnoreCase("/"+Messages.getString("m.SkillSorcery").toLowerCase())) //$NON-NLS-1$
-    	{
-			event.setCancelled(true);
-			
-			/*
-	        player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.SkillExcavation")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.XPGain", new Object[] {Messages.getString("m.XPGainExcavation")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.Effects")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsExcavation1_0"), Messages.getString("m.EffectsExcavation1_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.EffectsTemplate", new Object[] {Messages.getString("m.EffectsExcavation2_0"), Messages.getString("m.EffectsExcavation2_1")})); //$NON-NLS-1$  
-			player.sendMessage(Messages.getString("m.SkillHeader", new Object[] {Messages.getString("m.YourStats")})); //$NON-NLS-1$ 
-			player.sendMessage(Messages.getString("m.ExcavationGreenTerraLength", new Object[] {ticks})); //$NON-NLS-1$
-			*/
-    	}
-    	
-		if(LoadProperties.mcmmoEnable && split[0].equalsIgnoreCase("/"+LoadProperties.mcmmo)){ 
-			event.setCancelled(true);
-    		player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"mMO"+ChatColor.RED+"[]-----");   
-    		player.sendMessage(ChatColor.YELLOW+"mcMMO is an RPG server mod for minecraft."); 
-    		player.sendMessage(ChatColor.YELLOW+"There are many skills added by mcMMO to minecraft."); 
-    		player.sendMessage(ChatColor.YELLOW+"They can do anything from giving a chance"); 
-    		player.sendMessage(ChatColor.YELLOW+"for double drops to letting you break materials instantly."); 
-    		player.sendMessage(ChatColor.YELLOW+"For example, by harvesting logs from trees you will gain"); 
-    		player.sendMessage(ChatColor.YELLOW+"Woodcutting xp and once you have enough xp you will gain"); 
-    		player.sendMessage(ChatColor.YELLOW+"a skill level in Woodcutting. By raising this skill you will"); 
-    		player.sendMessage(ChatColor.YELLOW+"be able to receive benefits like "+ChatColor.RED+"double drops");  
-    		player.sendMessage(ChatColor.YELLOW+"and increase the effects of the "+ChatColor.RED+"\"Tree Felling\""+ChatColor.YELLOW+" ability.");   
-    		player.sendMessage(ChatColor.YELLOW+"mMO has abilities related to the skill, skills normally"); 
-    		player.sendMessage(ChatColor.YELLOW+"provide passive bonuses but they also have activated"); 
-    		player.sendMessage(ChatColor.YELLOW+"abilities too. Each ability is activated by holding"); 
-    		player.sendMessage(ChatColor.YELLOW+"the appropriate tool and "+ChatColor.RED+"right clicking.");  
-    		player.sendMessage(ChatColor.YELLOW+"For example, if you hold a Mining Pick and right click"); 
-    		player.sendMessage(ChatColor.YELLOW+"you will ready your Pickaxe, attack mining materials"); 
-    		player.sendMessage(ChatColor.YELLOW+"and then "+ChatColor.RED+"Super Breaker "+ChatColor.YELLOW+"will activate.");   
-    		player.sendMessage(ChatColor.GREEN+"Find out mcMMO commands with "+ChatColor.DARK_AQUA+"/"+LoadProperties.mcc);  
-    		player.sendMessage(ChatColor.GREEN+"You can donate via paypal to"+ChatColor.DARK_RED+" nossr50@gmail.com");  
-    	}
-    	if(LoadProperties.mccEnable && split[0].equalsIgnoreCase("/"+LoadProperties.mcc)){ 
-    		event.setCancelled(true);
-    		player.sendMessage(ChatColor.RED+"---[]"+ChatColor.YELLOW+"mcMMO Commands"+ChatColor.RED+"[]---");   
-    		if(mcPermissions.getInstance().party(player)){
-    			player.sendMessage(Messages.getString("m.mccPartyCommands")); 
-    			player.sendMessage("/"+LoadProperties.party+" "+Messages.getString("m.mccParty"));   
-    			player.sendMessage("/"+LoadProperties.party+" q "+Messages.getString("m.mccPartyQ"));
-    			if(mcPermissions.getInstance().partyChat(player))
-    				player.sendMessage("/p "+Messages.getString("m.mccPartyToggle"));  
-    			player.sendMessage("/"+LoadProperties.invite+" "+Messages.getString("m.mccPartyInvite"));   
-    			player.sendMessage("/"+LoadProperties.accept+" "+Messages.getString("m.mccPartyAccept"));   
-    			if(mcPermissions.getInstance().partyTeleport(player))
-    				player.sendMessage("/"+LoadProperties.ptp+" "+Messages.getString("m.mccPartyTeleport"));   
-    		}
-    		player.sendMessage(Messages.getString("m.mccOtherCommands")); 
-    		player.sendMessage("/"+LoadProperties.stats+ChatColor.RED+" "+Messages.getString("m.mccStats"));  
-    		player.sendMessage("/mctop <skillname> <page> "+ChatColor.RED+Messages.getString("m.mccLeaderboards"));  
-    		if(mcPermissions.getInstance().mySpawn(player)){
-	    		player.sendMessage("/"+LoadProperties.myspawn+" "+ChatColor.RED+Messages.getString("m.mccMySpawn"));   
-	    		player.sendMessage("/"+LoadProperties.clearmyspawn+" "+ChatColor.RED+Messages.getString("m.mccClearMySpawn"));   
-    		}
-    		if(mcPermissions.getInstance().mcAbility(player))
-    			player.sendMessage("/"+LoadProperties.mcability+ChatColor.RED+" "+Messages.getString("m.mccToggleAbility"));  
-    		if(mcPermissions.getInstance().adminChat(player)){
-    			player.sendMessage("/a "+ChatColor.RED+Messages.getString("m.mccAdminToggle"));  
-    		}
-    		if(mcPermissions.getInstance().whois(player))
-    			player.sendMessage("/"+LoadProperties.whois+" "+Messages.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+Messages.getString("m.mccMmoedit"));   
-    		}
-    		if(mcPermissions.getInstance().mcgod(player))
-    			player.sendMessage("/"+LoadProperties.mcgod+ChatColor.RED+" "+Messages.getString("m.mccMcGod"));  
-    		player.sendMessage("/"+Messages.getString("m.mccSkillInfo"));  
-    		player.sendMessage("/"+LoadProperties.mcmmo+" "+Messages.getString("m.mccModDescription"));   
-    	}
-    }
-}
+package com.gmail.nossr50;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.entity.*;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.plugin.Plugin;
+
+import com.gmail.nossr50.config.*;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.FakeBlockBreakEvent;
+
+public class m 
+{
+	public static final Logger log = Logger.getLogger("Minecraft"); 
+	/*
+	 * I'm storing my misc functions/methods in here in an unorganized manner. Spheal with it.
+	 * This is probably the most embarrassing part of my code for mcMMO
+	 * I really should find an organized place for these things!
+	 */
+
+	//The lazy way to default to 0
+	public static int getInt(String string)
+	{
+		if(isInt(string))
+		{
+			return Integer.parseInt(string);
+		}
+		else
+		{
+			return 0;
+		}
+	}
+	
+	public static Double getDouble(String string)
+	{
+		if(isDouble(string))
+		{
+			return Double.parseDouble(string);
+		}
+		else
+		{
+			return (double) 0;
+		}
+	}
+	
+	public static boolean isDouble(String string)
+	{
+		try 
+		{
+			Double.parseDouble(string);
+		}
+		catch(NumberFormatException nFE) {
+			return false;
+		}
+		return true;
+	}
+	
+	public static boolean shouldBeWatched(Block block)
+	{
+		int id = block.getTypeId();
+		if(id == 49 || id == 81 || id == 83 || id == 86 || id == 91 || id == 1 || id == 17 || id == 42 || id == 87 || id == 89 || id == 2 || id == 3 || id == 12 || id == 13 || id == 21 || id == 15 || id == 14 || id == 56 || id == 38 || id == 37 || id == 39 || id == 40 || id == 24){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	public static int getPowerLevel(Player player)
+	{
+		PlayerProfile PP = Users.getProfile(player);
+		int x = 0;
+		if(mcPermissions.getInstance().mining(player))
+			x+=PP.getSkill("mining");
+		if(mcPermissions.getInstance().woodcutting(player))
+			x+=PP.getSkill("woodcutting");
+		if(mcPermissions.getInstance().unarmed(player))
+			x+=PP.getSkill("unarmed");
+		if(mcPermissions.getInstance().herbalism(player))
+			x+=PP.getSkill("herbalism");
+		if(mcPermissions.getInstance().excavation(player))
+			x+=PP.getSkill("excavation");
+		if(mcPermissions.getInstance().archery(player))
+			x+=PP.getSkill("archery");
+		if(mcPermissions.getInstance().swords(player))
+			x+=PP.getSkill("swords");
+		if(mcPermissions.getInstance().axes(player))
+			x+=PP.getSkill("axes");
+		if(mcPermissions.getInstance().acrobatics(player))
+			x+=PP.getSkill("acrobatics");
+		if(mcPermissions.getInstance().repair(player))
+			x+=PP.getSkill("repair");
+		return x;
+	}
+
+	public static boolean blockBreakSimulate(Block block, Player player, Plugin plugin)
+	{
+
+		FakeBlockBreakEvent event = new FakeBlockBreakEvent(block, player);
+		if(block != null && plugin != null && player != null){
+			plugin.getServer().getPluginManager().callEvent(event);
+			if(!event.isCancelled())
+			{
+				return true; //Return true if not cancelled
+			} else {
+				return false; //Return false if cancelled
+			}
+		} else {
+			return false; //Return false if something went wrong
+		}
+	}
+
+	public static void damageTool(Player player, short damage)
+	{
+		if(player.getItemInHand().getTypeId() == 0)
+			return;
+		player.getItemInHand().setDurability((short) (player.getItemInHand().getDurability() + damage));
+		if(player.getItemInHand().getDurability() >= getMaxDurability(getTier(player), player.getItemInHand()))
+		{
+			ItemStack[] inventory = player.getInventory().getContents();
+			for(ItemStack x : inventory)
+			{
+				if(x != null && x.getTypeId() == player.getItemInHand().getTypeId() && x.getDurability() == player.getItemInHand().getDurability()){
+					x.setTypeId(0);
+					x.setAmount(0);
+					player.getInventory().setContents(inventory);
+					return;
+				}
+			}
+		}
+	}
+	public static Integer getTier(Player player){
+		int i = player.getItemInHand().getTypeId();
+		if(i == 268 || i == 269 || i == 270 || i == 271 || i == 290){
+			return 1; //WOOD
+		} else if (i == 272 || i == 273 || i == 274 || i == 275 || i == 291){
+			return 2; //STONE
+		} else if (i == 256 || i == 257 || i == 258 || i == 267 || i == 292){
+			return 3; //IRON
+		} else if (i == 283 || i == 284 || i == 285 || i == 286 || i == 294){
+			return 1; //GOLD
+		} else if (i == 276 || i == 277 || i == 278 || i == 279 || i == 293){
+			return 4; //DIAMOND
+		} else {
+			return 1; //UNRECOGNIZED
+		}
+	}
+	public static Integer getMaxDurability(Integer tier, ItemStack item){
+		int id = item.getTypeId();
+		if(tier == 1){
+			if((id == 276 || id == 277 || id == 278 || id == 279 || id == 293)){
+				return 33;
+			} else {
+				return 60;
+			}
+		} else if (tier == 2){
+			return 132;
+		} else if (tier == 3){
+			return 251;
+		} else if (tier == 4){
+			return 1562;
+		} else {
+			return 0;
+		}
+	}
+
+	public static double getDistance(Location loca, Location locb)
+	{
+		return Math.sqrt(Math.pow(loca.getX() - locb.getX(), 2) + Math.pow(loca.getY() - locb.getY(), 2)
+				+ Math.pow(loca.getZ() - locb.getZ(), 2));
+	}
+
+	public static boolean abilityBlockCheck(Block block)
+	{
+		int i = block.getTypeId();
+		if(i == 96 || i == 68 || i == 355 || i == 26 || i == 323 || i == 25 || i == 54 || i == 69 || i == 92 || i == 77 || i == 58 || i == 61 || i == 62 || i == 42 || i == 71 || i == 64 || i == 84 || i == 324 || i == 330){
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	public static boolean isBlockAround(Location loc, Integer radius, Integer typeid)
+	{
+		Block blockx = loc.getBlock();
+		int ox = blockx.getX();
+		int oy = blockx.getY();
+		int oz = blockx.getZ();
+		for (int cx = -radius; cx <= radius; cx++) {
+			for (int cy = -radius; cy <= radius; cy++) {
+				for (int cz = -radius; cz <= radius; cz++) {
+					Block block = loc.getWorld().getBlockAt(ox + cx, oy + cy, oz + cz);
+					if (block.getTypeId() == typeid) {
+						return true;
+					}
+				}
+			}
+		}
+		return false;
+	}
+
+	public static Integer calculateHealth(Integer health, Integer newvalue){
+		if((health + newvalue) > 20){
+			return 20;
+		} else {
+			return health+newvalue;
+		}
+	}
+	public Integer calculateMinusHealth(Integer health, Integer newvalue){
+		if((health - newvalue) < 1){
+			return 0;
+		} else {
+			return health-newvalue;
+		}
+	}
+	public static boolean isInt(String string){
+		try 
+		{
+			Integer.parseInt(string);
+		}
+		catch(NumberFormatException nFE) 
+		{
+			return false;
+		}
+		return true;
+	}
+	public static void mcDropItem(Location loc, int id){
+		if(loc != null){
+			Material mat = Material.getMaterial(id);
+			byte damage = 0;
+			ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
+			loc.getWorld().dropItemNaturally(loc, item);
+		}
+	}
+
+	public static boolean isSwords(ItemStack is){
+		if(is.getTypeId() == 268 || is.getTypeId() == 267 || is.getTypeId() == 272 || is.getTypeId() == 283 || is.getTypeId() == 276){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	public static boolean isHoe(ItemStack is){
+		int id = is.getTypeId();
+		if(id == 290 || id == 291 || id == 292 || id == 293 || id == 294){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	public static boolean isShovel(ItemStack is){
+		if(is.getTypeId() == 269 || is.getTypeId() == 273 || is.getTypeId() == 277 || is.getTypeId() == 284 || is.getTypeId() == 256){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	public static boolean isAxes(ItemStack is){
+		if(is.getTypeId() == 271 || is.getTypeId() == 258 || is.getTypeId() == 286 || is.getTypeId() == 279 || is.getTypeId() == 275){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	public static boolean isMiningPick(ItemStack is)
+	{
+		if(is.getTypeId() == 270 || is.getTypeId() == 274 || is.getTypeId() == 285 || is.getTypeId() == 257 || is.getTypeId() == 278)
+		{
+			return true;
+		} else {
+			return false;
+		}
+	}
+	public boolean isGold(ItemStack is)
+	{
+		int i = is.getTypeId();
+		if(i == 283 || i == 284 || i == 285 || i == 286 || i == 294 || i == 314 || i == 315 || i == 316 || i == 317){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	public static void convertToMySQL(Plugin pluginx)
+	{
+		if(!LoadProperties.useMySQL)
+			return;
+		String location = "plugins/mcMMO/mcmmo.users"; 
+		try {
+			//Open the user file
+			FileReader file = new FileReader(location);
+			BufferedReader in = new BufferedReader(file);
+			String line = ""; 
+			String playerName = null, mining = null, party = null, miningXP = null, woodcutting = null, woodCuttingXP = null, repair = null, unarmed = null, herbalism = null,
+			excavation = null, archery = null, swords = null, axes = null, acrobatics = null, repairXP = null, unarmedXP = null, herbalismXP = null, excavationXP = null, archeryXP = null, swordsXP = null, axesXP = null,
+			acrobaticsXP = null, taming = null, tamingXP = null;
+			int id = 0, theCount = 0;
+			while((line = in.readLine()) != null)
+			{
+				//Find if the line contains the player we want.
+				String[] character = line.split(":"); 
+				playerName = character[0];
+				//Check for things we don't want put in the DB
+				if(playerName == null || playerName.equals("null") || playerName.equals("#Storage place for user information")) 
+					continue;
+
+				//Get Mining
+				if(character.length > 1)
+					mining = character[1];
+				//Party
+				if(character.length > 3)
+					party = character[3];
+				//Mining XP
+				if(character.length > 4)
+					miningXP = character[4];
+				if(character.length > 5)
+					woodcutting = character[5];
+				if(character.length > 6)
+					woodCuttingXP = character[6];
+				if(character.length > 7)
+					repair = character[7];
+				if(character.length > 8)
+					unarmed = character[8];
+				if(character.length > 9)
+					herbalism = character[9];
+				if(character.length > 10)
+					excavation = character[10];
+				if(character.length > 11)
+					archery = character[11];
+				if(character.length > 12)
+					swords = character[12];
+				if(character.length > 13)
+					axes = character[13];
+				if(character.length > 14)
+					acrobatics = character[14];
+				if(character.length > 15)
+					repairXP = character[15];
+				if(character.length > 16)
+					unarmedXP = character[16];
+				if(character.length > 17)
+					herbalismXP = character[17];
+				if(character.length > 18)
+					excavationXP = character[18];
+				if(character.length > 19)
+					archeryXP = character[19];
+				if(character.length > 20)
+					swordsXP = character[20];
+				if(character.length > 21)
+					axesXP = character[21];
+				if(character.length > 22)
+					acrobaticsXP = character[22];
+				if(character.length > 24)
+					taming = character[24];
+				if(character.length > 25)
+					tamingXP = character[25];
+				//Check to see if the user is in the DB
+				id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + playerName + "'"); 
+				//Prepare some variables
+				/*
+    			if(myspawn != null && myspawn.length() > 0)
+    			{
+    				String[] split = myspawn.split(",");
+    				x = split[0];
+    				y = split[1];
+    				z = split[2];
+    			}
+				 */
+				/*
+    		    if(myspawnworld.equals("") || myspawnworld == null)
+    		    	myspawnworld = pluginx.getServer().getWorlds().get(0).toString();
+				 */
+				if(id > 0)
+				{
+					theCount++;
+					//Update the skill values
+					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET lastlogin = " + 0 + " WHERE id = " + id); 
+					//if(getDouble(x) > 0 && getDouble(y) > 0 && getDouble(z) > 0)
+					//mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + myspawnworld + "', x = " +getDouble(x)+", y = "+getDouble(y)+", z = "+getDouble(z)+" WHERE user_id = "+id);
+					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"skills SET " 
+							+"  taming = taming+"+getInt(taming) 
+							+", mining = mining+"+getInt(mining) 
+							+", repair = repair+"+getInt(repair) 
+							+", woodcutting = woodcutting+"+getInt(woodcutting) 
+							+", unarmed = unarmed+"+getInt(unarmed) 
+							+", herbalism = herbalism+"+getInt(herbalism) 
+							+", excavation = excavation+"+getInt(excavation) 
+							+", archery = archery+" +getInt(archery) 
+							+", swords = swords+" +getInt(swords) 
+							+", axes = axes+"+getInt(axes) 
+							+", acrobatics = acrobatics+"+getInt(acrobatics) 
+							+" WHERE user_id = "+id); 
+					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"experience SET " 
+							+"  taming = "+getInt(tamingXP) 
+							+", mining = "+getInt(miningXP) 
+							+", repair = "+getInt(repairXP) 
+							+", woodcutting = "+getInt(woodCuttingXP) 
+							+", unarmed = "+getInt(unarmedXP) 
+							+", herbalism = "+getInt(herbalismXP) 
+							+", excavation = "+getInt(excavationXP) 
+							+", archery = " +getInt(archeryXP) 
+							+", swords = " +getInt(swordsXP) 
+							+", axes = "+getInt(axesXP) 
+							+", acrobatics = "+getInt(acrobaticsXP) 
+							+" WHERE user_id = "+id); 
+				}
+				else
+				{
+					theCount++;
+					//Create the user in the DB
+					mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"users (user, lastlogin) VALUES ('" + playerName + "'," + System.currentTimeMillis() / 1000 +")"); 
+					id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + playerName + "'"); 
+					mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"spawn (user_id) VALUES ("+id+")"); 
+					mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"skills (user_id) VALUES ("+id+")"); 
+					mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"experience (user_id) VALUES ("+id+")"); 
+					//Update the skill values
+					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET lastlogin = " + 0 + " WHERE id = " + id); 
+					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET party = '"+party+"' WHERE id = " +id); 
+					/*
+    				if(getDouble(x) > 0 && getDouble(y) > 0 && getDouble(z) > 0)
+    					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + myspawnworld + "', x = " +getDouble(x)+", y = "+getDouble(y)+", z = "+getDouble(z)+" WHERE user_id = "+id);
+					 */
+					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"skills SET " 
+							+"  taming = "+getInt(taming) 
+							+", mining = "+getInt(mining) 
+							+", repair = "+getInt(repair) 
+							+", woodcutting = "+getInt(woodcutting) 
+							+", unarmed = "+getInt(unarmed) 
+							+", herbalism = "+getInt(herbalism) 
+							+", excavation = "+getInt(excavation) 
+							+", archery = " +getInt(archery) 
+							+", swords = " +getInt(swords) 
+							+", axes = "+getInt(axes) 
+							+", acrobatics = "+getInt(acrobatics) 
+							+" WHERE user_id = "+id); 
+					mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"experience SET " 
+							+"  taming = "+getInt(tamingXP) 
+							+", mining = "+getInt(miningXP) 
+							+", repair = "+getInt(repairXP) 
+							+", woodcutting = "+getInt(woodCuttingXP) 
+							+", unarmed = "+getInt(unarmedXP) 
+							+", herbalism = "+getInt(herbalismXP) 
+							+", excavation = "+getInt(excavationXP) 
+							+", archery = " +getInt(archeryXP) 
+							+", swords = " +getInt(swordsXP) 
+							+", axes = "+getInt(axesXP) 
+							+", acrobatics = "+getInt(acrobaticsXP) 
+							+" WHERE user_id = "+id); 
+				}
+			}
+			System.out.println("[mcMMO] MySQL Updated from users file, "+theCount+" items added/updated to MySQL DB"); 
+			in.close();
+		} catch (Exception e) {
+			log.log(Level.SEVERE, "Exception while reading " 
+					+ location + " (Are you sure you formatted it correctly?)", e); 
+		}
+	}
+}

+ 1374 - 227
mcMMO/com/gmail/nossr50/mcMMO.java

@@ -1,228 +1,1375 @@
-package com.gmail.nossr50;
-
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.config.*;
-import com.gmail.nossr50.skills.*;
-import com.nijikokun.bukkit.Permissions.Permissions;
-import com.nijiko.Messaging;
-import com.nijiko.permissions.PermissionHandler;
-import org.bukkit.plugin.Plugin;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.util.ArrayList;
-import java.util.Timer;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.bukkit.event.Event.Priority;
-import org.bukkit.event.Event;
-import org.bukkit.plugin.PluginDescriptionFile;
-import org.bukkit.plugin.java.JavaPlugin;
-import org.bukkit.plugin.PluginManager;
-import org.bukkit.entity.Player;
-
-
-public class mcMMO extends JavaPlugin 
-{
-	public static String maindirectory = "plugins/mcMMO/"; //$NON-NLS-1$
-	File file = new File(maindirectory + File.separator + "config.yml");
-    public static final Logger log = Logger.getLogger("Minecraft"); //$NON-NLS-1$
-    private final mcPlayerListener playerListener = new mcPlayerListener(this);
-    private final mcBlockListener blockListener = new mcBlockListener(this);
-    private final mcEntityListener entityListener = new mcEntityListener(this);
-    private final String name = "mcMMO"; //$NON-NLS-1$
-    public static PermissionHandler PermissionsHandler = null;
-    private Permissions permissions;
-    
-    //PERFORMANCE DEBUG STUFF
-    public long onPlayerRespawn=0, onPlayerQuit=0, onPlayerLogin=0, onPlayerInteract=0,onPlayerJoin=0, onPlayerCommandPreprocess=0, onPlayerChat=0, onBlockDamage=0, onBlockBreak=0, onBlockFromTo=0, onBlockPlace=0,
-    onEntityTarget=0, onEntityDeath=0, onEntityDamage=0, onCreatureSpawn=0, bleedSimulation=0, mcTimerx=0;
-    
-    public void printDelays()
-    {
-    	log.log(Level.INFO,"####mcMMO PERFORMANCE REPORT####");
-    	log.log(Level.INFO,"[These are the cumulative milliseconds mcMMO has lagged in the last 40 seconds]");
-    	log.log(Level.INFO,"[1000ms = 1 second, lower is better]");
-    	
-    	log.log(Level.INFO,"onPlayerRespawn: "+onPlayerRespawn+"ms");
-    	log.log(Level.INFO,"onPlayerQuit: "+onPlayerQuit+"ms");
-    	log.log(Level.INFO,"onPlayerLogin: "+onPlayerLogin+"ms");
-    	log.log(Level.INFO,"onPlayerInteract: "+onPlayerInteract+"ms");
-    	log.log(Level.INFO,"onPlayerJoin: "+onPlayerJoin+"ms");
-    	log.log(Level.INFO,"onPlayerCommandPreProcess: "+onPlayerCommandPreprocess+"ms");
-    	log.log(Level.INFO,"onPlayerChat: "+onPlayerChat+"ms");
-    	
-    	log.log(Level.INFO,"onBlockDamage: "+onBlockDamage+"ms");
-    	log.log(Level.INFO,"onBlockBreak: "+onBlockBreak+"ms");
-    	log.log(Level.INFO,"onBlockFromTo: "+onBlockFromTo+"ms");
-    	log.log(Level.INFO,"onBlockPlace: "+onBlockPlace+"ms");
-    	
-    	log.log(Level.INFO,"onEntityTarget: "+onEntityTarget+"ms");
-    	log.log(Level.INFO,"onEntityDeath: "+onEntityDeath+"ms");
-    	log.log(Level.INFO,"onEntityDamage: "+onEntityDamage+"ms");
-    	log.log(Level.INFO,"onCreatureSpawn: "+onCreatureSpawn+"ms");
-    	
-    	log.log(Level.INFO,"mcTimer (HPREGEN/ETC): "+mcTimerx+"ms");
-    	log.log(Level.INFO,"bleedSimulation: "+bleedSimulation+"ms");
-    	log.log(Level.INFO,"####mcMMO END OF PERFORMANCE REPORT####");
-    	
-    	onPlayerRespawn=0; 
-    	onPlayerQuit=0;
-    	onPlayerLogin=0;
-    	onPlayerJoin=0;
-    	onPlayerInteract=0;
-    	onPlayerCommandPreprocess=0;
-    	onPlayerChat=0;
-    	onBlockDamage=0;
-    	onBlockBreak=0;
-    	onBlockFromTo=0;
-    	onBlockPlace=0;
-    	onEntityTarget=0;
-    	onEntityDeath=0;
-    	onEntityDamage=0;
-    	onCreatureSpawn=0;
-    	mcTimerx=0;
-    	bleedSimulation=0;
-    }
-    
-    private Timer mcMMO_Timer = new Timer(true); //BLEED AND REGENERATION
-    //private Timer mcMMO_SpellTimer = new Timer(true);
-    
-    public static Database database = null;
-    public Mob mob = new Mob();
-    public Misc misc = new Misc(this);
-    public Sorcery sorcery = new Sorcery(this);
-    
-    //Config file stuff
-    LoadProperties config = new LoadProperties();
-    
-    public void onEnable() 
-    {
-    	//new File(maindirectory).mkdir();
-    	config.configCheck();
-    	
-    	Users.getInstance().loadUsers(); //Load Users file
-    	
-        /*
-         * REGISTER EVENTS
-         */
-    	
-    	PluginManager pm = getServer().getPluginManager();
-    	
-    	//Player Stuff
-    	pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Lowest, this);
-        pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Monitor, this);
-        pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Normal, this);
-        
-        //Block Stuff
-        pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
-        pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
-        pm.registerEvent(Event.Type.BLOCK_FROMTO, blockListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);
-        
-        //Entity Stuff
-        pm.registerEvent(Event.Type.ENTITY_TARGET, entityListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this);
-    	pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Priority.Normal, this);
-    	
-        PluginDescriptionFile pdfFile = this.getDescription();
-        mcPermissions.initialize(getServer());
-        
-        if(LoadProperties.useMySQL)
-        {
-        	database = new Database(this);
-        	database.createStructure();
-        } else
-        	Leaderboard.makeLeaderboards(); //Make the leaderboards
-        
-        for(Player player : getServer().getOnlinePlayers()){Users.addUser(player);} //In case of reload add all users back into PlayerProfile
-        System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" ); //$NON-NLS-1$ //$NON-NLS-2$
-        mcMMO_Timer.schedule(new mcTimer(this), (long)0, (long)(1000));
-        //mcMMO_SpellTimer.schedule(new mcTimerSpells(this), (long)0, (long)(100));
-    }
-    
-    public void setupPermissions() {
-    	Plugin test = this.getServer().getPluginManager().getPlugin("Permissions"); //$NON-NLS-1$
-    	if(this.PermissionsHandler == null) {
-    	    if(test != null) {
-    		this.PermissionsHandler = ((Permissions)test).getHandler();
-    	    } else {
-    		log.info(Messaging.bracketize(name) + " Permission system not enabled. Disabling plugin."); //$NON-NLS-1$
-    		this.getServer().getPluginManager().disablePlugin(this);
-    	    }
-    	}
-    }
-    public boolean inSameParty(Player playera, Player playerb){
-    	if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()){
-	        if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())){
-	            return true;
-	        } else {
-	            return false;
-	        }
-    	} else {
-    		return false;
-    	}
-    }
-    public void getXpToLevel(Player player, String skillname){
-    	Users.getProfile(player).getXpToLevel(skillname.toLowerCase());
-    }
-    public void removeXp(Player player, String skillname, Integer newvalue){
-    	PlayerProfile PP = Users.getProfile(player);
-    	PP.removeXP(skillname, newvalue);
-    	Skills.XpCheck(player);
-    }
-    public void addXp(Player player, String skillname, Integer newvalue){
-    	PlayerProfile PP = Users.getProfile(player);
-    	PP.addXP(skillname, newvalue);
-    	Skills.XpCheck(player);
-    }
-    public void modifySkill(Player player, String skillname, Integer newvalue){
-    	PlayerProfile PP = Users.getProfile(player);
-    	PP.modifyskill(newvalue, skillname);
-    }
-    public ArrayList<String> getParties(){
-    	String location = "plugins/mcMMO/mcmmo.users"; //$NON-NLS-1$
-		ArrayList<String> parties = new ArrayList<String>();
-		try {
-        	//Open the users file
-        	FileReader file = new FileReader(location);
-        	BufferedReader in = new BufferedReader(file);
-        	String line = ""; //$NON-NLS-1$
-        	while((line = in.readLine()) != null)
-        	{
-        		String[] character = line.split(":"); //$NON-NLS-1$
-        		String theparty = null;
-    			//Party
-    			if(character.length > 3)
-    				theparty = character[3];
-    			if(!parties.contains(theparty))
-    				parties.add(theparty);
-        	}
-        	in.close();
-        } catch (Exception e) {
-            log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
-            		+ location + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
-        }
-        return parties;
-	}
-    public static String getPartyName(Player player){
-    	PlayerProfile PP = Users.getProfile(player);
-    	return PP.getParty();
-    }
-    public static boolean inParty(Player player){
-    	PlayerProfile PP = Users.getProfile(player);
-    	return PP.inParty();
-    }
-    public Permissions getPermissions() {
-    	return permissions;
-    	}
-    public void onDisable() {
-        System.out.println("mcMMO was disabled."); //$NON-NLS-1$
-    }
+package com.gmail.nossr50;
+
+import com.gmail.nossr50.datatypes.Mob;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.config.*;
+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;
+import com.nijiko.permissions.PermissionHandler;
+
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.plugin.Plugin;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Timer;
+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;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.bukkit.plugin.PluginManager;
+import org.bukkit.entity.Player;
+
+
+public class mcMMO extends JavaPlugin 
+{
+	/*
+	 * I never expected mcMMO to get so popular!
+	 * Thanks for all the support for the mod
+	 * Thanks to the people who have worked on the code
+	 * Thanks to the donators who helped me out financially
+	 * Thanks to the server admins who use my mod :)
+	 * 
+	 * This mod is open source, and its going to stay that way >:3
+	 * 
+	 * Donate via paypal to nossr50@gmail.com (A million thanks to anyone that does!)
+	 */
+	
+	public static String maindirectory = "plugins/mcMMO/"; 
+	File file = new File(maindirectory + File.separator + "config.yml");
+	public static final Logger log = Logger.getLogger("Minecraft"); 
+	private final mcPlayerListener playerListener = new mcPlayerListener(this);
+	private final mcBlockListener blockListener = new mcBlockListener(this);
+	private final mcEntityListener entityListener = new mcEntityListener(this);
+	public static PermissionHandler permissionHandler;
+	private Permissions permissions;
+
+	private Timer mcMMO_Timer = new Timer(true); //BLEED AND REGENERATION
+	//private Timer mcMMO_SpellTimer = new Timer(true);
+
+	public static Database database = null;
+	public Mob mob = new Mob();
+	public Misc misc = new Misc(this);
+	public Sorcery sorcery = new Sorcery(this);
+
+	//Config file stuff
+	LoadProperties config = new LoadProperties();
+
+	public void onEnable() 
+	{
+		//new File(maindirectory).mkdir();
+		
+		setupPermissions();
+		config.configCheck();
+		
+		if(!LoadProperties.useMySQL)
+			Users.getInstance().loadUsers(); //Load Users file
+
+		/*
+		 * REGISTER EVENTS
+		 */
+
+		PluginManager pm = getServer().getPluginManager();
+
+		//Player Stuff
+		pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
+		pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
+		pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this);
+		pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Lowest, this);
+		pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Monitor, this);
+		pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this);
+
+		//Block Stuff
+		pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
+		pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
+		pm.registerEvent(Event.Type.BLOCK_FROMTO, blockListener, Priority.Normal, this);
+		pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);
+
+		//Entity Stuff
+		pm.registerEvent(Event.Type.ENTITY_TARGET, entityListener, Priority.Normal, this);
+		pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
+		pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this);
+		pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Priority.Normal, this);
+
+		PluginDescriptionFile pdfFile = this.getDescription();
+		mcPermissions.initialize(getServer());
+
+		if(LoadProperties.useMySQL)
+		{
+			database = new Database(this);
+			database.createStructure();
+		} else
+			Leaderboard.makeLeaderboards(); //Make the leaderboards
+
+		for(Player player : getServer().getOnlinePlayers()){Users.addUser(player);} //In case of reload add all users back into PlayerProfile
+		System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );  
+		mcMMO_Timer.schedule(new mcTimer(this), (long)0, (long)(1000));
+		//mcMMO_SpellTimer.schedule(new mcTimerSpells(this), (long)0, (long)(100));
+	}
+
+	private void setupPermissions() 
+	{
+	    if (permissionHandler != null) 
+	    {
+	        return;
+	    }
+	    
+	    Plugin permissionsPlugin = this.getServer().getPluginManager().getPlugin("Permissions");
+	    
+	    if (permissionsPlugin == null) 
+	    {
+	        //log.log(Level.INFO, "[mcMMO] Permission system not detected, defaulting to OP");
+	        return;
+	    }
+	    
+	    permissionHandler = ((Permissions) permissionsPlugin).getHandler();
+	    //log.log(Level.INFO, "[mcMMO] Found and will use plugin "+((Permissions)permissionsPlugin).getDescription().getFullName());
+	}
+
+	public boolean inSameParty(Player playera, Player playerb){
+		if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()){
+			if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())){
+				return true;
+			} else {
+				return false;
+			}
+		} else {
+			return false;
+		}
+	}
+	public void getXpToLevel(Player player, String skillname){
+		Users.getProfile(player).getXpToLevel(skillname.toLowerCase());
+	}
+	public void removeXp(Player player, String skillname, Integer newvalue){
+		PlayerProfile PP = Users.getProfile(player);
+		PP.removeXP(skillname, newvalue);
+		Skills.XpCheck(player);
+	}
+	public void addXp(Player player, String skillname, Integer newvalue){
+		PlayerProfile PP = Users.getProfile(player);
+		PP.addXP(skillname, newvalue);
+		Skills.XpCheck(player);
+	}
+	public void modifySkill(Player player, String skillname, Integer newvalue){
+		PlayerProfile PP = Users.getProfile(player);
+		PP.modifyskill(newvalue, skillname);
+	}
+	public ArrayList<String> getParties(){
+		String location = "plugins/mcMMO/mcmmo.users"; 
+		ArrayList<String> parties = new ArrayList<String>();
+		try {
+			//Open the users file
+			FileReader file = new FileReader(location);
+			BufferedReader in = new BufferedReader(file);
+			String line = ""; 
+			while((line = in.readLine()) != null)
+			{
+				String[] character = line.split(":"); 
+				String theparty = null;
+				//Party
+				if(character.length > 3)
+					theparty = character[3];
+				if(!parties.contains(theparty))
+					parties.add(theparty);
+			}
+			in.close();
+		} catch (Exception e) {
+			log.log(Level.SEVERE, "Exception while reading " 
+					+ location + " (Are you sure you formatted it correctly?)", e); 
+		}
+		return parties;
+	}
+	public static String getPartyName(Player player){
+		PlayerProfile PP = Users.getProfile(player);
+		return PP.getParty();
+	}
+	public static boolean inParty(Player player){
+		PlayerProfile PP = Users.getProfile(player);
+		return PP.inParty();
+	}
+	public Permissions getPermissions() {
+		return permissions;
+	}
+	public void onDisable() {
+		System.out.println("mcMMO was disabled."); 
+	}
+
+	public boolean onCommand( CommandSender sender, Command command, String label, String[] args ) {
+		Player player = (Player) sender;
+		PlayerProfile 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(split[0].equalsIgnoreCase("taming") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillTaming").toLowerCase())){ 
+			float skillvalue = (float)PP.getSkill("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.getSkillToString("taming"), PP.getSkillToString("tamingXP"), PP.getXpToLevel("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.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
+			if(PP.getSkill("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.getSkill("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.getSkill("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.getSkill("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})); 
+		}
+		if(split[0].equalsIgnoreCase("woodcutting") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillWoodCutting").toLowerCase())){ 
+			float skillvalue = (float)PP.getSkill("woodcutting");
+			int ticks = 2;
+			int x = PP.getSkill("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.getSkillToString("woodcutting"), PP.getSkillToString("woodcuttingXP"), PP.getXpToLevel("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.getSkill("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})); 
+		}
+		if(split[0].equalsIgnoreCase("archery") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillArchery").toLowerCase())){ 
+			Integer rank = 0;
+			if(PP.getSkill("archery") >= 50)
+				rank++;
+			if(PP.getSkill("archery") >= 250)
+				rank++;
+			if(PP.getSkill("archery") >= 575)
+				rank++;
+			if(PP.getSkill("archery") >= 725)
+				rank++;
+			if(PP.getSkill("archery") >= 1000)
+				rank++;
+			float skillvalue = (float)PP.getSkill("archery");
+			String percentage = String.valueOf((skillvalue / 1000) * 100);
+
+			int ignition = 20;
+			if(PP.getSkill("archery") >= 200)
+				ignition+=20;
+			if(PP.getSkill("archery") >= 400)
+				ignition+=20;
+			if(PP.getSkill("archery") >= 600)
+				ignition+=20;
+			if(PP.getSkill("archery") >= 800)
+				ignition+=20;
+			if(PP.getSkill("archery") >= 1000)
+				ignition+=20;
+
+			String percentagedaze;
+			if(PP.getSkill("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.getSkillToString("archery"), PP.getSkillToString("archeryXP"), PP.getXpToLevel("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.EffectsArchery3_0"), mcLocale.getString("m.EffectsArchery3_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)})); 
+			player.sendMessage(mcLocale.getString("m.ArcheryDamagePlus", new Object[] {rank})); 
+		}
+		if(split[0].equalsIgnoreCase("axes") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillAxes"))){ 
+			String percentage;
+			float skillvalue = (float)PP.getSkill("axes");
+			if(PP.getSkill("axes") < 750){
+				percentage = String.valueOf((skillvalue / 1000) * 100);
+			} else {
+				percentage = "75"; 
+			}
+			int ticks = 2;
+			int x = PP.getSkill("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.getSkillToString("axes"), PP.getSkillToString("axesXP"), PP.getXpToLevel("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.getSkill("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})); 
+		}
+		if(split[0].equalsIgnoreCase("swords") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillSwords").toLowerCase())){ 
+			int bleedrank = 2;
+			String percentage, parrypercentage = null, counterattackpercentage;
+			float skillvalue = (float)PP.getSkill("swords");
+			if(PP.getSkill("swords") < 750){
+				percentage = String.valueOf((skillvalue / 1000) * 100);
+			} else {
+				percentage = "75"; 
+			}
+			if(skillvalue >= 750)
+				bleedrank+=1;
+
+			if(PP.getSkill("swords") <= 900){
+				parrypercentage = String.valueOf((skillvalue / 3000) * 100);
+			} else {
+				parrypercentage = "30"; 
+			}
+
+			if(PP.getSkill("swords") <= 600){
+				counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
+			} else {
+				counterattackpercentage = "30"; 
+			}
+
+			int ticks = 2;
+			int x = PP.getSkill("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.getSkillToString("swords"), PP.getSkillToString("swordsXP"), PP.getXpToLevel("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.EffectsSwords4_0"), mcLocale.getString("m.EffectsSwords4_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.SwordsParryChance", new Object[] {parrypercentage})); 
+			player.sendMessage(mcLocale.getString("m.SwordsSSLength", new Object[] {ticks})); 
+
+		}
+		if(split[0].equalsIgnoreCase("acrobatics") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillAcrobatics").toLowerCase())){ 
+			String dodgepercentage;
+			float skillvalue = (float)PP.getSkill("acrobatics");
+			String percentage = String.valueOf((skillvalue / 1000) * 100);
+			String gracepercentage = String.valueOf(((skillvalue / 1000) * 100) * 2);
+			if(PP.getSkill("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.getSkillToString("acrobatics"), PP.getSkillToString("acrobaticsXP"), PP.getXpToLevel("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})); 
+		}
+		if(split[0].equalsIgnoreCase("mining") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillMining"))){ 
+			float skillvalue = (float)PP.getSkill("mining");
+			String percentage = String.valueOf((skillvalue / 1000) * 100);
+			int ticks = 2;
+			int x = PP.getSkill("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.getSkillToString("mining"), PP.getSkillToString("miningXP"), PP.getXpToLevel("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})); 
+		}
+		if(split[0].equalsIgnoreCase("repair") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillRepair").toLowerCase())){ 
+			float skillvalue = (float)PP.getSkill("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.getSkillToString("repair"), PP.getSkillToString("repairXP"), PP.getXpToLevel("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.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})); 
+		}
+		if(split[0].equalsIgnoreCase("unarmed")){ 
+			String percentage, arrowpercentage;
+			float skillvalue = (float)PP.getSkill("unarmed");
+
+			if(PP.getSkill("unarmed") < 1000){
+				percentage = String.valueOf((skillvalue / 4000) * 100);
+			} else {
+				percentage = "25"; 
+			}
+
+			if(PP.getSkill("unarmed") < 1000){
+				arrowpercentage = String.valueOf(((skillvalue / 1000) * 100) / 2);
+			} else {
+				arrowpercentage = "50"; 
+			}
+
+
+			int ticks = 2;
+			int x = PP.getSkill("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.getSkillToString("unarmed"), PP.getSkillToString("unarmedXP"), PP.getXpToLevel("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.getSkill("unarmed") < 250){
+				player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] {mcLocale.getString("m.AbilLockUnarmed1")})); 
+			} else if(PP.getSkill("unarmed") >= 250 && PP.getSkill("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})); 
+		}
+		if(split[0].equalsIgnoreCase("herbalism") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillHerbalism").toLowerCase())){ 
+			int rank = 0;
+			if(PP.getSkill("herbalism") >= 50)
+				rank++;
+			if (PP.getSkill("herbalism") >= 150)
+				rank++;
+			if (PP.getSkill("herbalism") >= 250)
+				rank++;
+			if (PP.getSkill("herbalism") >= 350)
+				rank++;
+			if (PP.getSkill("herbalism") >= 450)
+				rank++;
+			if (PP.getSkill("herbalism") >= 550)
+				rank++;
+			if (PP.getSkill("herbalism") >= 650)
+				rank++;
+			if (PP.getSkill("herbalism") >= 750)
+				rank++;
+			int bonus = 0;
+			if(PP.getSkill("herbalism") >= 200)
+				bonus++;
+			if(PP.getSkill("herbalism") >= 400)
+				bonus++;
+			if(PP.getSkill("herbalism") >= 600)
+				bonus++;
+
+			int ticks = 2;
+			int x = PP.getSkill("herbalism");
+			while(x >= 50){
+				x-=50;
+				ticks++;
+			}
+
+			float skillvalue = (float)PP.getSkill("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.getSkillToString("herbalism"), PP.getSkillToString("herbalismXP"), PP.getXpToLevel("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.EffectsHerbalism4_0"), mcLocale.getString("m.EffectsHerbalism4_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})); 
+			player.sendMessage(mcLocale.getString("m.HerbalismFoodPlus", new Object[] {rank})); 
+		}
+
+		if(split[0].equalsIgnoreCase("excavation") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillExcavation").toLowerCase())) 
+		{
+			int ticks = 2;
+			int x = PP.getSkill("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.getSkillToString("excavation"), PP.getSkillToString("excavationXP"), PP.getXpToLevel("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})); 
+		}
+
+		if(split[0].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})); 
+			 */
+		}
+
+		if(LoadProperties.mcmmoEnable && split[0].equalsIgnoreCase(LoadProperties.mcmmo)){ 
+			player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"mMO"+ChatColor.RED+"[]-----");   
+			player.sendMessage(ChatColor.YELLOW+"mcMMO is an RPG server mod for minecraft."); 
+			player.sendMessage(ChatColor.YELLOW+"There are many skills added by mcMMO to minecraft."); 
+			player.sendMessage(ChatColor.YELLOW+"They can do anything from giving a chance"); 
+			player.sendMessage(ChatColor.YELLOW+"for double drops to letting you break materials instantly."); 
+			player.sendMessage(ChatColor.YELLOW+"For example, by harvesting logs from trees you will gain"); 
+			player.sendMessage(ChatColor.YELLOW+"Woodcutting xp and once you have enough xp you will gain"); 
+			player.sendMessage(ChatColor.YELLOW+"a skill level in Woodcutting. By raising this skill you will"); 
+			player.sendMessage(ChatColor.YELLOW+"be able to receive benefits like "+ChatColor.RED+"double drops");  
+			player.sendMessage(ChatColor.YELLOW+"and increase the effects of the "+ChatColor.RED+"\"Tree Felling\""+ChatColor.YELLOW+" ability.");   
+			player.sendMessage(ChatColor.YELLOW+"mMO has abilities related to the skill, skills normally"); 
+			player.sendMessage(ChatColor.YELLOW+"provide passive bonuses but they also have activated"); 
+			player.sendMessage(ChatColor.YELLOW+"abilities too. Each ability is activated by holding"); 
+			player.sendMessage(ChatColor.YELLOW+"the appropriate tool and "+ChatColor.RED+"right clicking.");  
+			player.sendMessage(ChatColor.YELLOW+"For example, if you hold a Mining Pick and right click"); 
+			player.sendMessage(ChatColor.YELLOW+"you will ready your Pickaxe, attack mining materials"); 
+			player.sendMessage(ChatColor.YELLOW+"and then "+ChatColor.RED+"Super Breaker "+ChatColor.YELLOW+"will activate.");   
+			player.sendMessage(ChatColor.GREEN+"Find out mcMMO commands with "+ChatColor.DARK_AQUA+LoadProperties.mcc);  
+			player.sendMessage(ChatColor.GREEN+"You can donate via paypal to"+ChatColor.DARK_RED+" nossr50@gmail.com");  
+		}
+		if(LoadProperties.mccEnable && split[0].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"));   
+		}
+		if(LoadProperties.mcabilityEnable && mcPermissions.permissionsEnabled && split[0].equalsIgnoreCase(LoadProperties.mcability)){ 
+			if(PP.getAbilityUse()){
+				player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOff")); 
+				PP.toggleAbilityUse();
+			} else {
+				player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOn")); 
+				PP.toggleAbilityUse();
+			}
+		}
+
+		/*
+		 * FFS -> MySQL
+		 */
+		if(player.isOp() && split[0].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(this);
+			for(Player x : this.getServer().getOnlinePlayers())
+			{
+				Users.addUser(x);
+			}
+			player.sendMessage(ChatColor.GREEN+"Conversion finished!"); 
+		}
+
+		/*
+		 * LEADER BOARD COMMAND
+		 */
+		if(LoadProperties.mctopEnable && split[0].equalsIgnoreCase(LoadProperties.mctop)){ 
+
+			if(LoadProperties.useMySQL == false){
+				/*
+				 * POWER LEVEL INFO RETRIEVAL
+				 */
+				if(split.length == 1){
+					int p = 1;
+					String[] info = Leaderboard.retrieveInfo("powerlevel", 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 && Leaderboard.isInt(split[1])){
+					int p = 1;
+					//Grab page value if specified
+					if(split.length >= 2){
+						if(Leaderboard.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("powerlevel", 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(Leaderboard.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].toLowerCase(), 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"; 
+				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 taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics 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 taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics, user_id FROM " 
+							+LoadProperties.MySQLtablePrefix+"skills WHERE "+powerlevel+" > 0 ORDER BY taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics 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));
+					}
+				}
+			}
+		}
+
+		if(LoadProperties.mcrefreshEnable && split[0].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
+		 */
+		if(LoadProperties.mcgodEnable && split[0].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 (player.isOp())
+			{
+				if(PP.getGodMode())
+				{
+					player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled")); 
+					PP.toggleGodMode();
+				} else 
+				{
+					player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled")); 
+					PP.toggleGodMode();
+				}
+			}
+		}
+		if(LoadProperties.clearmyspawnEnable && LoadProperties.enableMySpawn && mcPermissions.getInstance().mySpawn(player) && split[0].equalsIgnoreCase(LoadProperties.clearmyspawn))
+		{ 
+			double x = this.getServer().getWorlds().get(0).getSpawnLocation().getX();
+			double y = this.getServer().getWorlds().get(0).getSpawnLocation().getY();
+			double z = this.getServer().getWorlds().get(0).getSpawnLocation().getZ();
+			String worldname = this.getServer().getWorlds().get(0).getName();
+			PP.setMySpawn(x, y, z, worldname);
+			player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnCleared")); 
+		}
+		if(LoadProperties.mmoeditEnable && mcPermissions.permissionsEnabled && split[0].equalsIgnoreCase(""+LoadProperties.mmoedit))
+		{ 
+
+			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(newvalue, split[2]);
+					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(newvalue, split[1]);
+					player.sendMessage(ChatColor.RED+split[1]+" has been modified."); 
+				}
+			} else 
+			{
+				player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.mmoedit+" playername skillname newvalue");  
+			}
+		}
+		/*
+		 * ADD EXPERIENCE COMMAND
+		 */
+		if(LoadProperties.addxpEnable && mcPermissions.permissionsEnabled && split[0].equalsIgnoreCase(LoadProperties.addxp)){ 
+
+			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(split[2], newvalue);
+					getPlayer(split[1]).sendMessage(ChatColor.GREEN+"Experience granted!"); 
+					player.sendMessage(ChatColor.RED+split[2]+" has been modified."); 
+					Skills.XpCheck(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(split[1], newvalue);
+				player.sendMessage(ChatColor.RED+split[1]+" has been modified."); 
+			} else {
+				player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.addxp+" playername skillname xp");  
+			}
+		}
+		if(LoadProperties.ptpEnable && PP != null && PP.inParty() && split[0].equalsIgnoreCase(LoadProperties.ptp)){ 
+
+			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
+		 */
+		if(LoadProperties.whoisEnable && (player.isOp() || mcPermissions.getInstance().whois(player)) && split[0].equalsIgnoreCase(LoadProperties.whois)){ 
+			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);
+				double x,y,z;
+				x = target.getLocation().getX();
+				y = target.getLocation().getY();
+				z = target.getLocation().getZ();
+				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.getSkillToString("excavation"), PPt.getSkillToString("excavationXP"), PPt.getXpToLevel("excavation")));
+				if(mcPermissions.getInstance().herbalism(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PPt.getSkillToString("herbalism"), PPt.getSkillToString("herbalismXP"), PPt.getXpToLevel("herbalism")));
+				if(mcPermissions.getInstance().mining(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PPt.getSkillToString("mining"), PPt.getSkillToString("miningXP"), PPt.getXpToLevel("mining")));
+				if(mcPermissions.getInstance().woodCuttingAbility(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PPt.getSkillToString("woodcutting"), PPt.getSkillToString("woodcuttingXP"), PPt.getXpToLevel("woodcutting")));
+
+				player.sendMessage(ChatColor.GOLD+"-=COMBAT SKILLS=-");
+				if(mcPermissions.getInstance().axes(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PPt.getSkillToString("axes"), PPt.getSkillToString("axesXP"), PPt.getXpToLevel("axes")));
+				if(mcPermissions.getInstance().archery(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PPt.getSkillToString("archery"), PPt.getSkillToString("archeryXP"), PPt.getXpToLevel("archery")));
+				//if(mcPermissions.getInstance().sorcery(target))
+				//player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PPt.getSkillToString("sorcery"), PPt.getSkillToString("sorceryXP"), PPt.getXpToLevel("excavation")));
+				if(mcPermissions.getInstance().swords(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PPt.getSkillToString("swords"), PPt.getSkillToString("swordsXP"), PPt.getXpToLevel("swords")));
+				if(mcPermissions.getInstance().taming(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PPt.getSkillToString("taming"), PPt.getSkillToString("tamingXP"), PPt.getXpToLevel("taming")));
+				if(mcPermissions.getInstance().unarmed(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PPt.getSkillToString("unarmed"), PPt.getSkillToString("unarmedXP"), PPt.getXpToLevel("unarmed")));
+
+				player.sendMessage(ChatColor.GOLD+"-=MISC SKILLS=-");
+				if(mcPermissions.getInstance().acrobatics(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PPt.getSkillToString("acrobatics"), PPt.getSkillToString("acrobaticsXP"), PPt.getXpToLevel("acrobatics")));
+				if(mcPermissions.getInstance().repair(target))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PPt.getSkillToString("repair"), PPt.getSkillToString("repairXP"), PPt.getXpToLevel("repair")));	
+
+				player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") +ChatColor.GREEN+(m.getPowerLevel(target))); 
+
+				player.sendMessage(ChatColor.GREEN+"~~COORDINATES~~"); 
+				player.sendMessage("X: "+x); 
+				player.sendMessage("Y: "+y); 
+				player.sendMessage("Z: "+z); 
+			}
+		}
+		/*
+		 * STATS COMMAND
+		 */
+		if(LoadProperties.statsEnable && split[0].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.getSkillToString("excavation"), PP.getSkillToString("excavationXP"), PP.getXpToLevel("excavation")));
+				if(mcPermissions.getInstance().herbalism(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PP.getSkillToString("herbalism"), PP.getSkillToString("herbalismXP"), PP.getXpToLevel("herbalism")));
+				if(mcPermissions.getInstance().mining(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PP.getSkillToString("mining"), PP.getSkillToString("miningXP"), PP.getXpToLevel("mining")));
+				if(mcPermissions.getInstance().woodCuttingAbility(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PP.getSkillToString("woodcutting"), PP.getSkillToString("woodcuttingXP"), PP.getXpToLevel("woodcutting")));
+			}
+			if(Skills.hasCombatSkills(player)){
+				player.sendMessage(header+"-=COMBAT SKILLS=-");
+				if(mcPermissions.getInstance().axes(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PP.getSkillToString("axes"), PP.getSkillToString("axesXP"), PP.getXpToLevel("axes")));
+				if(mcPermissions.getInstance().archery(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PP.getSkillToString("archery"), PP.getSkillToString("archeryXP"), PP.getXpToLevel("archery")));
+				//if(mcPermissions.getInstance().sorcery(player))
+				//player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PP.getSkillToString("sorcery"), PP.getSkillToString("sorceryXP"), PP.getXpToLevel("excavation")));
+				if(mcPermissions.getInstance().swords(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PP.getSkillToString("swords"), PP.getSkillToString("swordsXP"), PP.getXpToLevel("swords")));
+				if(mcPermissions.getInstance().taming(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PP.getSkillToString("taming"), PP.getSkillToString("tamingXP"), PP.getXpToLevel("taming")));
+				if(mcPermissions.getInstance().unarmed(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PP.getSkillToString("unarmed"), PP.getSkillToString("unarmedXP"), PP.getXpToLevel("unarmed")));
+			}
+
+			if(Skills.hasMiscSkills(player)){
+				player.sendMessage(header+"-=MISC SKILLS=-");
+				if(mcPermissions.getInstance().acrobatics(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PP.getSkillToString("acrobatics"), PP.getSkillToString("acrobaticsXP"), PP.getXpToLevel("acrobatics")));
+				if(mcPermissions.getInstance().repair(player))
+					player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PP.getSkillToString("repair"), PP.getSkillToString("repairXP"), PP.getXpToLevel("repair")));	
+			}
+			player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel")+ChatColor.GREEN+(m.getPowerLevel(player))); 
+		}
+		//Invite Command
+		if(LoadProperties.inviteEnable && mcPermissions.getInstance().party(player) && split[0].equalsIgnoreCase(LoadProperties.invite)){ 
+
+			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])){
+				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}));
+			}
+		}
+		//Accept invite
+		if(LoadProperties.acceptEnable && mcPermissions.getInstance().party(player) && split[0].equalsIgnoreCase(LoadProperties.accept)){ 
+			if(PP.hasPartyInvite()){
+				if(PP.inParty()){
+					Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
+				}
+				PP.acceptInvite();
+				Party.getInstance().informPartyMembers(player, getPlayersOnline());
+				player.sendMessage(mcLocale.getString("mcPlayerListener.InviteAccepted", new Object[]{PP.getParty()}));  
+			} else {
+				player.sendMessage(mcLocale.getString("mcPlayerListener.NoInvites")); 
+			}
+		}
+		//Party command
+		if(LoadProperties.partyEnable && split[0].equalsIgnoreCase(LoadProperties.party)){ 
+			if(!mcPermissions.getInstance().party(player)){
+				player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));  
+				return true;
+			}
+			if(split.length == 1 && !PP.inParty()){
+				player.sendMessage("Proper usage is "+LoadProperties.party+" <name> or 'q' to quit");   
+				return true;
+			}
+			if(split.length == 1 && PP.inParty()){
+				String tempList = ""; 
+				int x = 0;
+				for(Player p : this.getServer().getOnlinePlayers()){
+					if(PP.getParty().equals(Users.getProfile(p).getParty())){
+						if(p != null && x+1 >= Party.getInstance().partyCount(player, getPlayersOnline())){
+							tempList+= p.getName();
+							x++;
+						}
+						if(p != null && x < Party.getInstance().partyCount(player, getPlayersOnline())){
+							tempList+= p.getName() +", "; 
+							x++;
+						}
+					}
+				}
+				player.sendMessage(mcLocale.getString("mcPlayerListener.YouAreInParty", new Object[] {PP.getParty()}));
+				player.sendMessage(mcLocale.getString("mcPlayerListener.PartyMembers")+" ("+ChatColor.WHITE+tempList+ChatColor.GREEN+")");  
+			}
+			if(split.length > 1 && split[1].equals("q") && PP.inParty()){ 
+				Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
+				PP.removeParty();
+				player.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty")); 
+				return true;
+			}
+			if(split.length >= 2){
+				if(PP.inParty())
+					Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
+				PP.setParty(split[1]);
+				player.sendMessage(mcLocale.getString("mcPlayerListener.JoinedParty", new Object[] {split[1]}));
+				Party.getInstance().informPartyMembers(player, getPlayersOnline());
+			}
+		}
+		if(LoadProperties.partyEnable && split[0].equalsIgnoreCase("p")){
+
+			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.getName() + ChatColor.GREEN + ") ";
+
+				log.log(Level.INFO,
+						"[P](" + PP.getParty() + ")" + "<" + player.getName()
+						+ "> " + pMessage);
+
+				for (Player herp : 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"));
+			}
+		}
+
+		if(split[0].equalsIgnoreCase("a") && (player.isOp() || mcPermissions.getInstance().adminChat(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.getName() + ChatColor.AQUA + "} ";
+				log.log(Level.INFO, "[A]" + "<" + player.getName() + "> "
+						+ aMessage);
+				for (Player herp : getServer().getOnlinePlayers()) {
+					if ((herp.isOp() || mcPermissions.getInstance().adminChat(
+							herp)))
+						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
+		 */
+		if(LoadProperties.myspawnEnable && LoadProperties.enableMySpawn && split[0].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() + 3600000){
+				long x = ((PP.getMySpawnATS() + 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 && this.getServer().getWorld(PP.getMySpawnWorld(this)) != null)
+					mySpawn.setWorld(this.getServer().getWorld(PP.getMySpawnWorld(this)));
+				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;
+	}
+
+	public Player[] getPlayersOnline() {
+		return this.getServer().getOnlinePlayers();
+	}
+
+	public boolean isPlayer(String playerName){
+		for(Player herp :  getPlayersOnline()){
+			if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){
+				return true;
+			}
+		}
+		return false;
+	}
+
+	public Player getPlayer(String playerName){
+		for(Player herp : getPlayersOnline()){
+			if(herp.getName().toLowerCase().equals(playerName.toLowerCase())){
+				return herp;
+			}
+		}
+		return null;
+	}
 }

+ 16 - 7
mcMMO/com/gmail/nossr50/mcPermissions.java

@@ -8,27 +8,36 @@ import org.bukkit.entity.Player;
 import org.bukkit.plugin.Plugin;
 import com.nijikokun.bukkit.Permissions.Permissions;
 
-public class mcPermissions {
-	//Thanks to myWarp source code for helping me figure this shit out!
+public class mcPermissions 
+{
 	private static Permissions permissionsPlugin;
     public static boolean permissionsEnabled = false;
     private static volatile mcPermissions instance;
 
-    public static void initialize(Server server) {
+    public static void initialize(Server server) 
+    {
         Plugin test = server.getPluginManager().getPlugin("Permissions");
-        if (test != null) {
+        if (test != null) 
+        {
             Logger log = Logger.getLogger("Minecraft");
             permissionsPlugin = ((Permissions) test);
             permissionsEnabled = true;
             log.log(Level.INFO, "[mcMMO] Permissions enabled.");
-        } else {
+        } else 
+        {
             Logger log = Logger.getLogger("Minecraft");
             log.log(Level.SEVERE, "[mcMMO] Permissions isn't loaded, there are no restrictions.");
         }
     }
+    
+    public static boolean getEnabled()
+    {
+    	return permissionsEnabled;
+    }
   
-    private static boolean permission(Player player, String string) {
-        return permissionsPlugin.Security.permission(player, string);  
+    private static boolean permission(Player player, String string) 
+    {
+        return permissionsPlugin.getHandler().has(player, string);
     }
     public boolean admin(Player player){
     	if (permissionsEnabled) {

+ 0 - 11
mcMMO/com/gmail/nossr50/mcTimer.java

@@ -21,7 +21,6 @@ public class mcTimer extends TimerTask
     
 	public void run() 
 	{
-		long before = System.currentTimeMillis();
 		for(Player player : plugin.getServer().getOnlinePlayers())
 		{
 			if(player == null)
@@ -107,15 +106,5 @@ public class mcTimer extends TimerTask
 		thecount++;
 		if(thecount >= 41)
 			thecount = 1;
-		
-		
-		if(LoadProperties.print_reports)
-		{
-			long after = System.currentTimeMillis();
-			plugin.mcTimerx+=(after-before);
-			
-			if(thecount == 40)
-				plugin.printDelays();
-		}
 	}
 }

+ 35 - 19
mcMMO/com/gmail/nossr50/party/Party.java

@@ -2,55 +2,71 @@ package com.gmail.nossr50.party;
 
 import org.bukkit.entity.Player;
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.locale.mcLocale;
 
 
-public class Party {
+public class Party 
+{
 	private static mcMMO plugin;
-	public Party(mcMMO instance) {
+	public Party(mcMMO instance) 
+	{
     	plugin = instance;
     }
 	private static volatile Party instance;
-	public static Party getInstance() {
-    	if (instance == null) {
+	public static Party getInstance() 
+	{
+    	if (instance == null) 
+    	{
     	instance = new Party(plugin);
     	}
     	return instance;
     	}
     public boolean inSameParty(Player playera, Player playerb){
-    	if(Users.getProfile(playera) == null || Users.getProfile(playerb) == null){
+    	if(Users.getProfile(playera) == null || Users.getProfile(playerb) == null)
+    	{
     		Users.addUser(playera);
     		Users.addUser(playerb);
     	}
-    	if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()){
-	        if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())){
+    	if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty())
+    	{
+	        if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty()))
+	        {
 	            return true;
-	        } else {
+	        } else 
+	        {
 	            return false;
 	        }
-    	} else {
+    	} else 
+    	{
     		return false;
     	}
     }
     
-	public int partyCount(Player player, Player[] players){
+	public int partyCount(Player player, Player[] players)
+	{
         int x = 0;
-        for(Player hurrdurr : players){
-        	if(player != null && hurrdurr != null){
+        for(Player hurrdurr : players)
+        {
+        	if(player != null && hurrdurr != null)
+        	{
         	if(Users.getProfile(player).getParty().equals(Users.getProfile(hurrdurr).getParty()))
         	x++;
         	}
         }
         return x;
     }
-    public void informPartyMembers(Player player, Player[] players){
+    public void informPartyMembers(Player player, Player[] players)
+    {
         int x = 0;
-        for(Player p : players){
-        	if(player != null && p != null){
-                if(inSameParty(player, p) && !p.getName().equals(player.getName())){
-                p.sendMessage(Messages.getString("Party.InformedOnJoin", new Object[] {player.getName()}));
+        for(Player p : players)
+        {
+        	if(player != null && p != null)
+        	{
+                if(inSameParty(player, p) && !p.getName().equals(player.getName()))
+                {
+                p.sendMessage(mcLocale.getString("Party.InformedOnJoin", new Object[] {player.getName()}));
                 x++;
                 }
             }
@@ -63,7 +79,7 @@ public class Party {
         	if(player != null && p != null){
         		if(inSameParty(player, p) && !p.getName().equals(player.getName()))
         		{
-        			p.sendMessage(Messages.getString("Party.InformedOnQuit", new Object[] {player.getName()}));
+        			p.sendMessage(mcLocale.getString("Party.InformedOnQuit", new Object[] {player.getName()}));
         			x++;
                 }
         	}

+ 95 - 1
mcMMO/com/gmail/nossr50/skills/Archery.java

@@ -1,5 +1,99 @@
 package com.gmail.nossr50.skills;
 
-public class Archery {
+import org.bukkit.Location;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.Player;
+import org.bukkit.event.entity.EntityDamageByProjectileEvent;
 
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class Archery 
+{
+	public static void trackArrows(mcMMO pluginx, Entity x, EntityDamageByProjectileEvent event, Player attacker)
+	{
+		PlayerProfile PPa = Users.getProfile(attacker);
+		if(!pluginx.misc.arrowTracker.containsKey(x) && event.getDamage() > 0)
+		{
+			pluginx.misc.arrowTracker.put(x, 0);
+			if(attacker != null)
+			{
+				if(Math.random() * 1000 <= PPa.getSkill("archery"))
+				{
+					pluginx.misc.arrowTracker.put(x, 1);
+				}
+			}
+		} else 
+		{
+			if(event.getDamage() > 0)
+			{
+				if(attacker != null)
+				{
+					if(Math.random() * 1000 <= PPa.getSkill("archery"))
+					{
+						pluginx.misc.arrowTracker.put(x, 1);
+					}
+				}
+			}
+		}
+	}
+	public static void ignitionCheck(Entity x, EntityDamageByProjectileEvent event, Player attacker)
+	{
+		PlayerProfile PPa = Users.getProfile(attacker);
+		if(Math.random() * 100 >= 75)
+		{
+			
+			int ignition = 20;	
+			if(PPa.getSkill("archery") >= 200)
+				ignition+=20;
+			if(PPa.getSkill("archery") >= 400)
+				ignition+=20;
+			if(PPa.getSkill("archery") >= 600)
+				ignition+=20;
+			if(PPa.getSkill("archery") >= 800)
+				ignition+=20;
+			if(PPa.getSkill("archery") >= 1000)
+				ignition+=20;
+			
+			if(x instanceof Player)
+			{
+				Player Defender = (Player)x;
+				if(!Party.getInstance().inSameParty(attacker, Defender))
+				{
+					event.getEntity().setFireTicks(ignition);
+					attacker.sendMessage(mcLocale.getString("Combat.Ignition")); //$NON-NLS-1$
+					Defender.sendMessage(mcLocale.getString("Combat.BurningArrowHit")); //$NON-NLS-1$
+				}
+			} else {
+			event.getEntity().setFireTicks(ignition);
+			attacker.sendMessage(mcLocale.getString("Combat.Ignition")); //$NON-NLS-1$
+			}
+		}
+	}
+	public static void dazeCheck(Player defender, Player attacker)
+	{
+		PlayerProfile PPa = Users.getProfile(attacker);
+		
+		Location loc = defender.getLocation();
+		if(Math.random() * 10 > 5)
+		{
+		loc.setPitch(90);
+		} else {
+			loc.setPitch(-90);
+		}
+		if(PPa.getSkill("archery") >= 1000){
+			if(Math.random() * 1000 <= 500){
+				defender.teleport(loc);
+				defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
+				attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+		} else if(Math.random() * 2000 <= PPa.getSkill("archery")){
+			defender.teleport(loc);
+			defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
+			attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
 }

+ 6 - 8
mcMMO/com/gmail/nossr50/skills/Axes.java

@@ -1,17 +1,14 @@
 package com.gmail.nossr50.skills;
 
 import org.bukkit.ChatColor;
-import org.bukkit.entity.Animals;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Monster;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Wolf;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;
 import org.bukkit.plugin.Plugin;
 
-import com.gmail.nossr50.Combat;
-import com.gmail.nossr50.Messages;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcPermissions;
@@ -26,7 +23,8 @@ public class Axes {
     		/*
     		 * CHECK FOR AXE PREP MODE
     		 */
-    		if(PP.getAxePreparationMode()){
+    		if(PP.getAxePreparationMode())
+    		{
     			PP.setAxePreparationMode(false);
     		}
     		int ticks = 2;
@@ -37,17 +35,17 @@ public class Axes {
     		}
 
     		if(!PP.getSkullSplitterMode() && Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){
-    			player.sendMessage(Messages.getString("Skills.SkullSplitterOn"));
+    			player.sendMessage(mcLocale.getString("Skills.SkullSplitterOn"));
     			for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
-	    				y.sendMessage(Messages.getString("Skills.SkullSplitterPlayer", new Object[] {player.getName()}));
+	    				y.sendMessage(mcLocale.getString("Skills.SkullSplitterPlayer", new Object[] {player.getName()}));
 	    		}
     			PP.setSkullSplitterActivatedTimeStamp(System.currentTimeMillis());
     			PP.setSkullSplitterDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
     			PP.setSkullSplitterMode(true);
     		}
     		if(!PP.getSkullSplitterMode() && !Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){
-    			player.sendMessage(Messages.getString("Skills.TooTired")
+    			player.sendMessage(mcLocale.getString("Skills.TooTired")
     					+ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)+"s)");
     		}
     	}

+ 3 - 3
mcMMO/com/gmail/nossr50/skills/Excavation.java

@@ -7,7 +7,7 @@ import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 
-import com.gmail.nossr50.Messages;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.config.LoadProperties;
@@ -33,10 +33,10 @@ public class Excavation {
     		}
     		
 	    	if(!PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() < System.currentTimeMillis()){
-	    		player.sendMessage(Messages.getString("Skills.GigaDrillBreakerOn"));
+	    		player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOn"));
 	    		for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
-	    				y.sendMessage(Messages.getString("Skills.GigaDrillBreakerPlayer", new Object[] {player.getName()}));
+	    				y.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerPlayer", new Object[] {player.getName()}));
 	    		}
 	    		PP.setGigaDrillBreakerActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setGigaDrillBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));

+ 3 - 3
mcMMO/com/gmail/nossr50/skills/Herbalism.java

@@ -9,12 +9,12 @@ import org.bukkit.event.block.BlockBreakEvent;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 public class Herbalism {
@@ -106,10 +106,10 @@ public class Herbalism {
     		}
     		
 	    	if(!PP.getGreenTerraMode() && Skills.cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){
-	    		player.sendMessage(Messages.getString("Skills.GreenTerraOn"));
+	    		player.sendMessage(mcLocale.getString("Skills.GreenTerraOn"));
 	    		for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
-	    				y.sendMessage(Messages.getString("Skills.GreenTerraPlayer", new Object[] {player.getName()}));
+	    				y.sendMessage(mcLocale.getString("Skills.GreenTerraPlayer", new Object[] {player.getName()}));
 	    		}
 	    		PP.setGreenTerraActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setGreenTerraDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));

+ 3 - 3
mcMMO/com/gmail/nossr50/skills/Mining.java

@@ -8,12 +8,12 @@ import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 public class Mining {
@@ -38,11 +38,11 @@ public class Mining {
     		}
     		
 	    	if(!PP.getSuperBreakerMode() && Skills.cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
-	    		player.sendMessage(Messages.getString("Skills.SuperBreakerOn"));
+	    		player.sendMessage(mcLocale.getString("Skills.SuperBreakerOn"));
 	    		for(Player y : pluginx.getServer().getOnlinePlayers())
 	    		{
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
-	    				y.sendMessage(Messages.getString("Skills.SuperBreakerPlayer", new Object[] {player.getName()}));
+	    				y.sendMessage(mcLocale.getString("Skills.SuperBreakerPlayer", new Object[] {player.getName()}));
 	    		}
 	    		PP.setSuperBreakerActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setSuperBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));

+ 14 - 13
mcMMO/com/gmail/nossr50/skills/Repair.java

@@ -5,12 +5,12 @@ import org.bukkit.block.Block;
 import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemStack;
 
-import com.gmail.nossr50.Messages;
 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;
 
 
 public class Repair {
@@ -30,6 +30,7 @@ public class Repair {
         private static String nIron =  LoadProperties.nIron;
         
 	
+	@SuppressWarnings("deprecation")
 	public static void repairCheck(Player player, ItemStack is, Block block){
 		PlayerProfile PP = Users.getProfile(player);
 		short durabilityBefore = player.getItemInHand().getDurability();
@@ -164,7 +165,7 @@ public class Repair {
         		}
         		
         	} else {
-        		player.sendMessage(Messages.getString("Skills.FullDurability"));
+        		player.sendMessage(mcLocale.getString("Skills.FullDurability"));
         	}
         	player.updateInventory();
         	/*
@@ -450,32 +451,32 @@ public class Repair {
     public static void needMoreVespeneGas(ItemStack is, Player player){
     	PlayerProfile PP = Users.getProfile(player);
     	if ((isDiamondTools(is) || isDiamondArmor(is)) && PP.getSkill("repair") < LoadProperties.repairdiamondlevel){
-			player.sendMessage(Messages.getString("AdeptDiamond"));
+			player.sendMessage(mcLocale.getString("AdeptDiamond"));
 		} else if (isDiamondTools(is) && !hasItem(player, rDiamond) || isIronTools(is) && !hasItem(player, rIron) || isGoldTools(is) && !hasItem(player, rGold)){
 			if(isDiamondTools(is) && !hasItem(player, rDiamond))
-				player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.BLUE+ nDiamond);
+				player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.BLUE+ nDiamond);
 			if(isIronTools(is) && !hasItem(player, rIron))
-				player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GRAY+ nIron);
+				player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GRAY+ nIron);
 			if(isGoldTools(is) && !hasItem(player, rGold))
-				player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GOLD+nGold);
+				player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GOLD+nGold);
 			if(isWoodTools(is) && !hasItem(player,rWood))
-				player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.DARK_GREEN+ nWood);
+				player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.DARK_GREEN+ nWood);
 			if(isStoneTools(is) && !hasItem(player, rStone))
-				player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GRAY+nStone);
+				player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GRAY+nStone);
 		} else if (isDiamondArmor(is) && !hasItem(player, rDiamond)){
-			player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.BLUE+ nDiamond);
+			player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.BLUE+ nDiamond);
 		} else if (isIronArmor(is) && !hasItem(player, rIron)){
-			player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GRAY+ nIron);
+			player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GRAY+ nIron);
 		} else if (isGoldArmor(is) && !hasItem(player, rGold)){
-			player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GOLD+ nGold);
+			player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GOLD+ nGold);
 		} else if (is.getAmount() > 1)
-			player.sendMessage(Messages.getString("Skills.StackedItems"));
+			player.sendMessage(mcLocale.getString("Skills.StackedItems"));
     	}
     public static boolean checkPlayerProcRepair(Player player){
     	PlayerProfile PP = Users.getProfile(player);
 		if(player != null){
 			if(Math.random() * 1000 <= PP.getSkill("repair")){
-				player.sendMessage(Messages.getString("Skills.FeltEasy"));
+				player.sendMessage(mcLocale.getString("Skills.FeltEasy"));
 				return true;
 			}
 		}

+ 46 - 46
mcMMO/com/gmail/nossr50/skills/Skills.java

@@ -7,7 +7,6 @@ import org.bukkit.entity.Entity;
 import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemStack;
 import com.gmail.nossr50.Leaderboard;
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
@@ -15,6 +14,7 @@ import com.gmail.nossr50.mcPermissions;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerStat;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 public class Skills {
@@ -74,42 +74,42 @@ public class Skills {
     	PlayerProfile PP = Users.getProfile(player);
     	if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
 			PP.setGreenTerraInformed(true);
-    		player.sendMessage(Messages.getString("Skills.YourGreenTerra"));
+    		player.sendMessage(mcLocale.getString("Skills.YourGreenTerra"));
     	}
     	if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - PP.getTreeFellerDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
 			PP.setTreeFellerInformed(true);
-			player.sendMessage(Messages.getString("Skills.YourTreeFeller"));
+			player.sendMessage(mcLocale.getString("Skills.YourTreeFeller"));
     	}
     	if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - PP.getSuperBreakerDeactivatedTimeStamp() >= (LoadProperties.superBreakerCooldown * 1000)){
 			PP.setSuperBreakerInformed(true);
-			player.sendMessage(Messages.getString("Skills.YourSuperBreaker"));
+			player.sendMessage(mcLocale.getString("Skills.YourSuperBreaker"));
     	}
     	if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - PP.getSerratedStrikesDeactivatedTimeStamp() >= (LoadProperties.serratedStrikeCooldown * 1000)){
 			PP.setSerratedStrikesInformed(true);
-			player.sendMessage(Messages.getString("Skills.YourSerratedStrikes"));
+			player.sendMessage(mcLocale.getString("Skills.YourSerratedStrikes"));
     	}
     	if(!PP.getBerserkInformed() && System.currentTimeMillis() - PP.getBerserkDeactivatedTimeStamp() >= (LoadProperties.berserkCooldown * 1000)){
 			PP.setBerserkInformed(true);
-			player.sendMessage(Messages.getString("Skills.YourBerserk"));
+			player.sendMessage(mcLocale.getString("Skills.YourBerserk"));
     	}
     	if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - PP.getSkullSplitterDeactivatedTimeStamp() >= (LoadProperties.skullSplitterCooldown * 1000)){
 			PP.setSkullSplitterInformed(true);
-			player.sendMessage(Messages.getString("Skills.YourSkullSplitter"));
+			player.sendMessage(mcLocale.getString("Skills.YourSkullSplitter"));
     	}
     	if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - PP.getGigaDrillBreakerDeactivatedTimeStamp() >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){
 			PP.setGigaDrillBreakerInformed(true);
-			player.sendMessage(Messages.getString("Skills.YourGigaDrillBreaker"));
+			player.sendMessage(mcLocale.getString("Skills.YourGigaDrillBreaker"));
     	}
     }
     public static void hoeReadinessCheck(Player player){
     	PlayerProfile PP = Users.getProfile(player);
     	if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){
     		if(!PP.getGreenTerraMode() && !cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){
-	    		player.sendMessage(Messages.getString("Skills.TooTired")
+	    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 	    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)+"s)");
 	    		return;
 	    	}
-    		player.sendMessage(Messages.getString("Skills.ReadyHoe"));
+    		player.sendMessage(mcLocale.getString("Skills.ReadyHoe"));
 			PP.setHoePreparationATS(System.currentTimeMillis());
 			PP.setHoePreparationMode(true);
     	}
@@ -122,27 +122,27 @@ public class Skills {
 		{
 			if(PP.getHoePreparationMode() && System.currentTimeMillis() - PP.getHoePreparationATS() >= 4000){
 				PP.setHoePreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerHoe"));
+				player.sendMessage(mcLocale.getString("Skills.LowerHoe"));
 			}
 			if(PP.getAxePreparationMode() && System.currentTimeMillis() - PP.getAxePreparationATS() >= 4000){
 				PP.setAxePreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerAxe"));
+				player.sendMessage(mcLocale.getString("Skills.LowerAxe"));
 			}
 			if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - PP.getPickaxePreparationATS() >= 4000){
 				PP.setPickaxePreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerPickAxe"));
+				player.sendMessage(mcLocale.getString("Skills.LowerPickAxe"));
 			}
 			if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - PP.getSwordsPreparationATS() >= 4000){
 				PP.setSwordsPreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerSword"));
+				player.sendMessage(mcLocale.getString("Skills.LowerSword"));
 			}
 			if(PP.getFistsPreparationMode() && System.currentTimeMillis() - PP.getFistsPreparationATS() >= 4000){
 				PP.setFistsPreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerFists"));
+				player.sendMessage(mcLocale.getString("Skills.LowerFists"));
 			}
 			if(PP.getShovelPreparationMode() && System.currentTimeMillis() - PP.getShovelPreparationATS() >= 4000){
 				PP.setShovelPreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerShovel"));
+				player.sendMessage(mcLocale.getString("Skills.LowerShovel"));
 			}
 			
 			/*
@@ -152,7 +152,7 @@ public class Skills {
 				if(PP.getGreenTerraMode() && PP.getGreenTerraDeactivatedTimeStamp() <= System.currentTimeMillis()){
 					PP.setGreenTerraMode(false);
 					PP.setGreenTerraInformed(false);
-					player.sendMessage(Messages.getString("Skills.GreenTerraOff"));
+					player.sendMessage(mcLocale.getString("Skills.GreenTerraOff"));
 				}
 			}
 			/*
@@ -162,7 +162,7 @@ public class Skills {
 				if(PP.getSkullSplitterMode() && PP.getSkullSplitterDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setSkullSplitterMode(false);
 						PP.setSkullSplitterInformed(false);
-						player.sendMessage(Messages.getString("Skills.SkullSplitterOff"));
+						player.sendMessage(mcLocale.getString("Skills.SkullSplitterOff"));
 				}
 			}
 			/*
@@ -172,7 +172,7 @@ public class Skills {
 				if(PP.getTreeFellerMode() && PP.getTreeFellerDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setTreeFellerMode(false);
 						PP.setTreeFellerInformed(false);
-						player.sendMessage(Messages.getString("Skills.TreeFellerOff"));
+						player.sendMessage(mcLocale.getString("Skills.TreeFellerOff"));
 				}
 			}
 			/*
@@ -182,7 +182,7 @@ public class Skills {
 				if(PP.getSuperBreakerMode() && PP.getSuperBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setSuperBreakerMode(false);
 						PP.setSuperBreakerInformed(false);
-						player.sendMessage(Messages.getString("Skills.SuperBreakerOff"));
+						player.sendMessage(mcLocale.getString("Skills.SuperBreakerOff"));
 				}
 			}
 			/*
@@ -192,7 +192,7 @@ public class Skills {
 				if(PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setGigaDrillBreakerMode(false);
 						PP.setGigaDrillBreakerInformed(false);
-						player.sendMessage(Messages.getString("Skills.GigaDrillBreakerOff"));
+						player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOff"));
 				}
 			}
 			/*
@@ -202,7 +202,7 @@ public class Skills {
 				if(PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setSerratedStrikesMode(false);
 						PP.setSerratedStrikesInformed(false);
-						player.sendMessage(Messages.getString("Skills.SerratedStrikesOff"));
+						player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOff"));
 				}
 			}
 			/*
@@ -212,7 +212,7 @@ public class Skills {
 				if(PP.getBerserkMode() && PP.getBerserkDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setBerserkMode(false);
 						PP.setBerserkInformed(false);
-						player.sendMessage(Messages.getString("Skills.BerserkOff"));
+						player.sendMessage(mcLocale.getString("Skills.BerserkOff"));
 				}
 			}
 		}
@@ -224,47 +224,47 @@ public class Skills {
 	    		return;
 	    	if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode()){
 	    		if(!PP.getSuperBreakerMode() && !cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
-		    		player.sendMessage(Messages.getString("Skills.TooTired")
+		    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)+"s)");
 		    		return;
 		    	}
-	    		player.sendMessage(Messages.getString("Skills.ReadyPickAxe"));
+	    		player.sendMessage(mcLocale.getString("Skills.ReadyPickAxe"));
 				PP.setPickaxePreparationATS(System.currentTimeMillis());
 				PP.setPickaxePreparationMode(true);
 	    	}
 	    	if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode()){
 	    		if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)){
-		    		player.sendMessage(Messages.getString("Skills.TooTired")
+		    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)+"s)");
 		    		return;
 		    	}
-	    		player.sendMessage(Messages.getString("Skills.ReadyShovel"));
+	    		player.sendMessage(mcLocale.getString("Skills.ReadyShovel"));
 				PP.setShovelPreparationATS(System.currentTimeMillis());
 				PP.setShovelPreparationMode(true);
 	    	}
 	    	if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode()){
 	    		if(!PP.getSerratedStrikesMode() && !cooldownOver(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)){
-		    		player.sendMessage(Messages.getString("Skills.TooTired")
+		    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)+"s)");
 		    		return;
 		    	}
-	    		player.sendMessage(Messages.getString("Skills.ReadySword"));
+	    		player.sendMessage(mcLocale.getString("Skills.ReadySword"));
 				PP.setSwordsPreparationATS(System.currentTimeMillis());
 				PP.setSwordsPreparationMode(true);
 	    	}
 	    	if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode()){
 		    	if(!PP.getBerserkMode() && !cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){
-		    		player.sendMessage(Messages.getString("Skills.TooTired")
+		    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)+"s)");
 		    		return;
 		    	}
-		    	player.sendMessage(Messages.getString("Skills.ReadyFists"));
+		    	player.sendMessage(mcLocale.getString("Skills.ReadyFists"));
 				PP.setFistsPreparationATS(System.currentTimeMillis());
 				PP.setFistsPreparationMode(true);
 	    	}
 	    	if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !PP.getAxePreparationMode()){
 	    		if(m.isAxes(player.getItemInHand())){
-	    			player.sendMessage(Messages.getString("Skills.ReadyAxe"));
+	    			player.sendMessage(mcLocale.getString("Skills.ReadyAxe"));
 	    			PP.setAxePreparationATS(System.currentTimeMillis());
 	    			PP.setAxePreparationMode(true);
 	    		}
@@ -294,7 +294,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "taming");
 				}
 				if(player != null && PP != null && PP.getSkillToString("taming") != null)
-					player.sendMessage(Messages.getString("Skills.TamingUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("taming")}));
+					player.sendMessage(mcLocale.getString("Skills.TamingUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("taming")}));
 			}
 	    	/*
 	    	 * ACROBATICS
@@ -317,7 +317,7 @@ public class Skills {
 				}
 				
 				if(player != null && PP != null && PP.getSkillToString("acrobatics") != null)
-					player.sendMessage(Messages.getString("Skills.AcrobaticsUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("acrobatics")}));
+					player.sendMessage(mcLocale.getString("Skills.AcrobaticsUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("acrobatics")}));
 			}
 	    	/*
 	    	 * ARCHERY
@@ -339,7 +339,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "archery");
 				}
 				if(player != null && PP != null && PP.getSkillToString("archery") != null)
-					player.sendMessage(Messages.getString("Skills.ArcheryUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("archery")}));
+					player.sendMessage(mcLocale.getString("Skills.ArcheryUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("archery")}));
 			}
 	    	/*
 	    	 * SWORDS
@@ -362,7 +362,7 @@ public class Skills {
 				}
 				
 				if(player != null && PP != null && PP.getSkillToString("swords") != null)
-					player.sendMessage(Messages.getString("Skills.SwordsUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("swords")}));	
+					player.sendMessage(mcLocale.getString("Skills.SwordsUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("swords")}));	
 			}
 	    	/*
 	    	 * AXES
@@ -384,7 +384,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "axes");
 				}
 				if(player != null && PP != null && PP.getSkillToString("axes") != null)
-					player.sendMessage(Messages.getString("Skills.AxesUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("axes")}));	
+					player.sendMessage(mcLocale.getString("Skills.AxesUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("axes")}));	
 			}
 			/*
 			 * UNARMED
@@ -406,7 +406,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "unarmed");
 				}
 				if(player != null && PP != null && PP.getSkillToString("unarmed") != null)
-					player.sendMessage(Messages.getString("Skills.UnarmedUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("unarmed")}));
+					player.sendMessage(mcLocale.getString("Skills.UnarmedUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("unarmed")}));
 			}
 			/*
 			 * HERBALISM
@@ -428,7 +428,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "herbalism");
 				}
 				if(player != null && PP != null && PP.getSkillToString("herbalism") != null)
-					player.sendMessage(Messages.getString("Skills.HerbalismUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("herbalism")}));
+					player.sendMessage(mcLocale.getString("Skills.HerbalismUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("herbalism")}));
 			}
 			/*
 			 * MINING
@@ -450,7 +450,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "mining");
 				}
 				if(player != null && PP != null && PP.getSkillToString("mining") != null)
-					player.sendMessage(Messages.getString("Skills.MiningUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("mining")}));	
+					player.sendMessage(mcLocale.getString("Skills.MiningUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("mining")}));	
 			}
 			/*
 			 * WOODCUTTING
@@ -472,7 +472,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "woodcutting");
 				}
 				if(player != null && PP != null && PP.getSkillToString("woodcutting") != null)
-					player.sendMessage(Messages.getString("Skills.WoodcuttingUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("woodcutting")}));
+					player.sendMessage(mcLocale.getString("Skills.WoodcuttingUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("woodcutting")}));
 			}
 			/*
 			 * REPAIR
@@ -494,7 +494,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "repair");
 				}
 				if(player != null && PP != null && PP.getSkillToString("repair") != null)
-					player.sendMessage(Messages.getString("Skills.RepairUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("repair")}));	
+					player.sendMessage(mcLocale.getString("Skills.RepairUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("repair")}));	
 			}
 			/*
 			 * EXCAVATION
@@ -516,7 +516,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "excavation");
 				}
 				if(player != null && PP != null && PP.getSkillToString("excavation") != null)
-					player.sendMessage(Messages.getString("Skills.ExcavationUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("excavation")}));
+					player.sendMessage(mcLocale.getString("Skills.ExcavationUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("excavation")}));
 					//player.sendMessage(ChatColor.YELLOW+"Excavation skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getSkillToString("excavation")+")");	
 					
 			}
@@ -537,13 +537,13 @@ public class Skills {
     	if(skillname.equals("all")){
     		return true;
     	}
-    	if(skillname.equals("sorcery")){
+    	else if(skillname.equals("sorcery")){
     		return true;
     	}
-    	if(skillname.equals("taming")){
+    	else if(skillname.equals("taming")){
 			return true;
 		}
-		if(skillname.equals("mining")){
+    	else if(skillname.equals("mining")){
 			return true;
 		}
 		else if(skillname.equals("woodcutting")){

+ 5 - 5
mcMMO/com/gmail/nossr50/skills/Sorcery.java

@@ -7,13 +7,13 @@ import org.bukkit.Material;
 import org.bukkit.block.Block;
 import org.bukkit.entity.Player;
 
-import com.gmail.nossr50.Messages;
 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;
 
 public class Sorcery
 {
@@ -37,13 +37,13 @@ public class Sorcery
 	}
 	public void informSelected(String spellname, int cost, Player player)
 	{
-		player.sendMessage(Messages.getString("Sorcery.SpellSelected", new Object[] {spellname, cost}));
+		player.sendMessage(mcLocale.getString("Sorcery.SpellSelected", new Object[] {spellname, cost}));
 	}
 	
 	public void informSpell(String spellname, Player player)
 	{
 		PlayerProfile PP = Users.getProfile(player);
-		player.sendMessage(Messages.getString("Sorcery.HasCast") +" "+spellname+" "+ Messages.getString("Sorcery.Current_Mana")+ChatColor.YELLOW+"("+ChatColor.GRAY+PP.getCurrentMana()+ChatColor.YELLOW+"/"+ChatColor.GREEN+PP.getMaxMana()+ChatColor.YELLOW+")");
+		player.sendMessage(mcLocale.getString("Sorcery.HasCast") +" "+spellname+" "+ mcLocale.getString("Sorcery.Current_Mana")+ChatColor.YELLOW+"("+ChatColor.GRAY+PP.getCurrentMana()+ChatColor.YELLOW+"/"+ChatColor.GREEN+PP.getMaxMana()+ChatColor.YELLOW+")");
 	}
 	
 	public void shoutSpell(String spellname, Player player)
@@ -79,7 +79,7 @@ public class Sorcery
 				PP.setGreenDyeCycleSel(1);
 				PP.setGreenDyeCycle(0);
 				
-				informSelected(Messages.getString("Sorcery.Curative.Self"), LoadProperties.cure_self, player);
+				informSelected(mcLocale.getString("Sorcery.Curative.Self"), LoadProperties.cure_self, player);
 				break;
 			}
 			
@@ -94,7 +94,7 @@ public class Sorcery
 				PP.setGreenDyeCycleSel(0);
 				PP.setGreenDyeCycle(1);
 				
-				informSelected(Messages.getString("Sorcery.Curative.Other"), LoadProperties.cure_other, player);
+				informSelected(mcLocale.getString("Sorcery.Curative.Other"), LoadProperties.cure_other, player);
 				break;
 			} 
 			else

+ 5 - 15
mcMMO/com/gmail/nossr50/skills/Swords.java

@@ -1,7 +1,6 @@
 package com.gmail.nossr50.skills;
 
 import org.bukkit.ChatColor;
-import org.bukkit.entity.Animals;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
@@ -12,17 +11,16 @@ import org.bukkit.event.entity.EntityDamageEvent;
 import org.bukkit.plugin.Plugin;
 
 import com.gmail.nossr50.Combat;
-import com.gmail.nossr50.Messages;
 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.party.Party;
 
-public class Swords {
-	
+public class Swords 
+{
 	public static void serratedStrikesActivationCheck(Player player, Plugin pluginx){
     	PlayerProfile PP = Users.getProfile(player);
 		if(m.isSwords(player.getItemInHand()))
@@ -41,11 +39,11 @@ public class Swords {
     		
 	    	if(!PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() < System.currentTimeMillis())
 	    	{
-	    		player.sendMessage(Messages.getString("Skills.SerratedStrikesOn"));
+	    		player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOn"));
 	    		for(Player y : pluginx.getServer().getOnlinePlayers())
 	    		{
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
-	    				y.sendMessage(Messages.getString("Skills.SerratedStrikesPlayer", new Object[] {player.getName()}));
+	    				y.sendMessage(mcLocale.getString("Skills.SerratedStrikesPlayer", new Object[] {player.getName()}));
 	    		}
 	    		PP.setSerratedStrikesActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setSerratedStrikesDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
@@ -231,8 +229,6 @@ public class Swords {
     }
     public static void bleedSimulate(mcMMO plugin)
     {
-    	long before = System.currentTimeMillis();
-    	
     	//Add items from Que list to BleedTrack list
     	
     	for(LivingEntity x : plugin.misc.bleedQue)
@@ -269,11 +265,5 @@ public class Swords {
         		x.damage(2);
         	}
         }
-        
-        long after = System.currentTimeMillis();
-        if(LoadProperties.print_reports)
-		{
-        	plugin.bleedSimulation+=(after-before);
-		}
     }
 }

+ 2 - 1
mcMMO/com/gmail/nossr50/skills/Taming.java

@@ -8,7 +8,8 @@ import org.bukkit.plugin.Plugin;
 
 public class Taming 
 {
-	public static boolean ownerOnline(Wolf theWolf, Plugin pluginx){
+	public static boolean ownerOnline(Wolf theWolf, Plugin pluginx)
+	{
 		for(Player x : pluginx.getServer().getOnlinePlayers())
 		{
 			if(x instanceof AnimalTamer)

+ 5 - 5
mcMMO/com/gmail/nossr50/skills/Unarmed.java

@@ -6,11 +6,11 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 
 public class Unarmed {
 	public static void berserkActivationCheck(Player player, Plugin pluginx){
@@ -27,10 +27,10 @@ public class Unarmed {
     		}
     		
 	    	if(!PP.getBerserkMode() && Skills.cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){
-	    		player.sendMessage(Messages.getString("Skills.BerserkOn"));
+	    		player.sendMessage(mcLocale.getString("Skills.BerserkOn"));
 	    		for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
-	    				y.sendMessage(Messages.getString("Skills.BerserkPlayer", new Object[] {player.getName()}));
+	    				y.sendMessage(mcLocale.getString("Skills.BerserkPlayer", new Object[] {player.getName()}));
 	    		}
 	    		PP.setBerserkActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setBerserkDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
@@ -60,7 +60,7 @@ public class Unarmed {
 	    			Location loc = defender.getLocation();
 	    			if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
 	    			{
-	    				defender.sendMessage(Messages.getString("Skills.Disarmed"));
+	    				defender.sendMessage(mcLocale.getString("Skills.Disarmed"));
 	    				ItemStack item = defender.getItemInHand();
 		    			if(item != null)
 		    			{
@@ -75,7 +75,7 @@ public class Unarmed {
 	    			Location loc = defender.getLocation();
 	    			if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
 	    			{
-	    				defender.sendMessage(Messages.getString("Skills.Disarmed"));
+	    				defender.sendMessage(mcLocale.getString("Skills.Disarmed"));
 	    				ItemStack item = defender.getItemInHand();
 		    			if(item != null)
 		    			{

+ 3 - 3
mcMMO/com/gmail/nossr50/skills/WoodCutting.java

@@ -10,11 +10,11 @@ import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.config.*;
 
 
@@ -58,10 +58,10 @@ public class WoodCutting {
     		}
 
     		if(!PP.getTreeFellerMode() && Skills.cooldownOver(player, PP.getTreeFellerDeactivatedTimeStamp(), LoadProperties.treeFellerCooldown)){
-    			player.sendMessage(Messages.getString("Skills.TreeFellerOn"));
+    			player.sendMessage(mcLocale.getString("Skills.TreeFellerOn"));
     			for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
-	    				y.sendMessage(Messages.getString("Skills.TreeFellerPlayer", new Object[] {player.getName()}));
+	    				y.sendMessage(mcLocale.getString("Skills.TreeFellerPlayer", new Object[] {player.getName()}));
 	    		}
     			PP.setTreeFellerActivatedTimeStamp(System.currentTimeMillis());
     			PP.setTreeFellerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));

+ 66 - 3
mcMMO/plugin.yml

@@ -1,3 +1,66 @@
-name: mcMMO
-main: com.gmail.nossr50.mcMMO
-version: 1.0.34
+name: mcMMO
+main: com.gmail.nossr50.mcMMO
+version: 1.0.35
+commands:
+    mcc:
+        description: Lists mcMMO commands
+    mcmmo:
+        description: Shows a brief mod description
+    mctop:
+        description: Shows leader boards for mcMMO
+    addxp:
+        description: Add XP to a user
+    mcability:
+        description: Toggle whether or not abilities get readied on right click
+    mcrefresh:
+        description: Refresh all cooldowns for mcMMO
+    mcgod:
+        description: Make yourself invulnerable
+    stats:
+        description: Shows your mcMMO stats and xp
+    mmoedit:
+        description: Edit the skill values for a user
+    ptp:
+        description: Teleport to a party member
+    party:
+        description: Create/join a party
+    myspawn:
+        description: Teleport to your MySpawn
+    whois:
+        description: View mcMMO stats of another player
+    invite:
+        description: Invite a player into your party
+    accept:
+        description: Accept a party invite
+    clearmyspawn:
+        description: Clear your MySpawn location
+    mmoupdate:
+        description: Convert from Flat File to MySQL
+    p:
+        description: Toggle Party chat or send party chat messages
+    excavation:
+        description: Detailed skill info
+    herbalism:
+        description: Detailed skill info
+    mining:
+        description: Detailed skill info
+    woodcutting:
+        description: Detailed skill info
+    axes:
+        description: Detailed skill info
+    archery:
+        description: Detailed skill info
+    swords:
+        description: Detailed skill info
+    taming:
+        description: Detailed skill info
+    unarmed:
+        description: Detailed skill info
+    acrobatics:
+        description: Detailed skill info
+    repair:
+        description: Detailed skill info
+    a:
+        description: Toggle Admin chat or send admin chat messages
+    sorcery:
+        description: Detailed skill info