浏览代码

A WIP of 1.0.35 (Massive changes to the code)

nossr50 14 年之前
父节点
当前提交
daf139f560
共有 36 个文件被更改,包括 5120 次插入1468 次删除
  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:
 Changelog:
 #Versions without changelogs probably had very small misc fixes, like tweaks to the source code
 #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
 Version 1.0.34
 Fixed the PVP setting determining whether or not you would hurt yourself from AoE Abilities
 Fixed the PVP setting determining whether or not you would hurt yourself from AoE Abilities
 Added Dutch (nl) language support
 Added Dutch (nl) language support

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

@@ -1,6 +1,5 @@
 package com.gmail.nossr50;
 package com.gmail.nossr50;
 
 
-import org.bukkit.Location;
 import org.bukkit.World;
 import org.bukkit.World;
 import org.bukkit.entity.*;
 import org.bukkit.entity.*;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;
 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.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.skills.Acrobatics;
 import com.gmail.nossr50.skills.Acrobatics;
+import com.gmail.nossr50.skills.Archery;
 import com.gmail.nossr50.skills.Axes;
 import com.gmail.nossr50.skills.Axes;
 import com.gmail.nossr50.skills.Skills;
 import com.gmail.nossr50.skills.Skills;
 import com.gmail.nossr50.skills.Swords;
 import com.gmail.nossr50.skills.Swords;
 import com.gmail.nossr50.skills.Taming;
 import com.gmail.nossr50.skills.Taming;
 import com.gmail.nossr50.skills.Unarmed;
 import com.gmail.nossr50.skills.Unarmed;
 
 
-public class Combat {
+public class Combat 
+{
 	public static void combatChecks(EntityDamageEvent event, mcMMO pluginx)
 	public static void combatChecks(EntityDamageEvent event, mcMMO pluginx)
 	{
 	{
 		if(event.isCancelled() || event.getDamage() == 0)
 		if(event.isCancelled() || event.getDamage() == 0)
@@ -28,36 +30,7 @@ public class Combat {
 		 * CHANGE DAMAGE BASED ON DIFFICULTY
 		 * CHANGE DAMAGE BASED ON DIFFICULTY
 		 */
 		 */
 		if(event instanceof EntityDamageByEntityEvent)
 		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
 			 * OFFENSIVE CHECKS FOR PLAYERS VERSUS ENTITIES
 			 */
 			 */
@@ -177,14 +150,14 @@ public class Combat {
 		      				event.setCancelled(true);
 		      				event.setCancelled(true);
 		      				if(theWolf.isTamed())
 		      				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
 		      				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;
 			EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
 			Wolf theWolf = (Wolf) eventb.getDamager();
 			Wolf theWolf = (Wolf) eventb.getDamager();
-			if(Taming.ownerOnline(theWolf, pluginx))
+			if(theWolf.isTamed() && Taming.ownerOnline(theWolf, pluginx))
 			{
 			{
 				if(Taming.getOwner(theWolf, pluginx) == null)
 				if(Taming.getOwner(theWolf, pluginx) == null)
 					return;
 					return;
@@ -222,13 +195,13 @@ public class Combat {
 						if(event.getEntity() instanceof Player)
 						if(event.getEntity() instanceof Player)
 						{
 						{
 							Player target = (Player)event.getEntity();
 							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);
 							Users.getProfile(target).setBleedTicks(2);
 						}
 						}
 						else
 						else
 							pluginx.misc.addToBleedQue((LivingEntity) event.getEntity());
 							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()))
 					if(!event.getEntity().isDead() && !pluginx.misc.mobSpawnerList.contains(event.getEntity()))
 					{
 					{
@@ -283,7 +256,7 @@ public class Combat {
 		{
 		{
 			Wolf theWolf = (Wolf) event.getEntity();
 			Wolf theWolf = (Wolf) event.getEntity();
 			
 			
-			if(Taming.ownerOnline(theWolf, pluginx))
+			if(theWolf.isTamed() && Taming.ownerOnline(theWolf, pluginx))
 			{
 			{
 				if(Taming.getOwner(theWolf, pluginx) == null)
 				if(Taming.getOwner(theWolf, pluginx) == null)
 					return;
 					return;
@@ -331,7 +304,7 @@ public class Combat {
     	Entity x = event.getEntity();
     	Entity x = event.getEntity();
     	Projectile projectile = event.getProjectile();
     	Projectile projectile = event.getProjectile();
     	if(projectile.toString().equals("CraftArrow") && x instanceof Player)
     	if(projectile.toString().equals("CraftArrow") && x instanceof Player)
-    	{ //$NON-NLS-1$
+    	{
     		Player defender = (Player)x;
     		Player defender = (Player)x;
     		PlayerProfile PPd = Users.getProfile(defender);
     		PlayerProfile PPd = Users.getProfile(defender);
     		if(PPd == null)
     		if(PPd == null)
@@ -343,13 +316,13 @@ public class Combat {
 	    			if(Math.random() * 1000 <= 500)
 	    			if(Math.random() * 1000 <= 500)
 	    			{
 	    			{
 	    				event.setCancelled(true);
 	    				event.setCancelled(true);
-	    				defender.sendMessage(Messages.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
+	    				defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
 	    				return;
 	    				return;
 	    			}
 	    			}
 	    		} else if(defender != null && Math.random() * 1000 <= (PPd.getSkill("unarmed") / 2))
 	    		} else if(defender != null && Math.random() * 1000 <= (PPd.getSkill("unarmed") / 2))
 	    		{
 	    		{
 	    			event.setCancelled(true);
 	    			event.setCancelled(true);
-	    			defender.sendMessage(Messages.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
+	    			defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
 	    			return;
 	    			return;
 	    		}
 	    		}
     		}
     		}
@@ -362,29 +335,8 @@ public class Combat {
     		Player attacker = (Player)y;
     		Player attacker = (Player)y;
     		PlayerProfile PPa = Users.getProfile(attacker);
     		PlayerProfile PPa = Users.getProfile(attacker);
     		if(projectile.toString().equals("CraftArrow") && mcPermissions.getInstance().archery(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
     			 * DAMAGE MODIFIER
     			 */
     			 */
@@ -402,32 +354,7 @@ public class Combat {
     			/*
     			/*
     			 * IGNITION
     			 * 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
     		 * Defender is Monster
     		 */
     		 */
@@ -457,8 +384,10 @@ public class Combat {
     			/*
     			/*
     			 * Stuff for the daze proc
     			 * 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);
     						event.setCancelled(true);
     						return;
     						return;
     					}
     					}
@@ -467,29 +396,14 @@ public class Combat {
     	    		 * PVP XP
     	    		 * PVP XP
     	    		 */
     	    		 */
     	    		if(LoadProperties.pvpxp && !Party.getInstance().inSameParty(attacker, defender) 
     	    		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);
     	    			PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
     	    		}
     	    		}
     				/*
     				/*
     				 * DAZE PROC
     				 * 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);
     		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.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 import org.bukkit.plugin.Plugin;
 import com.gmail.nossr50.config.*;
 import com.gmail.nossr50.config.*;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.skills.*;
 import com.gmail.nossr50.skills.*;
 
 
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
@@ -20,18 +21,24 @@ public class Item {
 			chimaerawing(player, plugin);
 			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);
 		PlayerProfile PP = Users.getProfile(player);
 		ItemStack is = player.getItemInHand();
 		ItemStack is = player.getItemInHand();
 		Block block = player.getLocation().getBlock();
 		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();
     			Block derp = player.getLocation().getBlock();
     			int y = derp.getY();
     			int y = derp.getY();
     			ItemStack[] inventory = player.getInventory().getContents();
     			ItemStack[] inventory = player.getInventory().getContents();
     	    	for(ItemStack x : inventory){
     	    	for(ItemStack x : inventory){
     	    		if(x != null && x.getTypeId() == 288){
     	    		if(x != null && x.getTypeId() == 288){
-    	    			if(x.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing + 1){
+    	    			if(x.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing + 1)
+    	    			{
     	    				x.setAmount(x.getAmount() - LoadProperties.feathersConsumedByChimaeraWing);
     	    				x.setAmount(x.getAmount() - LoadProperties.feathersConsumedByChimaeraWing);
     	    				player.getInventory().setContents(inventory);
     	    				player.getInventory().setContents(inventory);
         	    			player.updateInventory();
         	    			player.updateInventory();
@@ -45,17 +52,21 @@ public class Item {
     	    			}
     	    			}
     	    		}
     	    		}
     	    	}
     	    	}
-    			while(y < 127){
+    			while(y < 127)
+    			{
     				y++;
     				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());
 	    					player.teleport(player.getLocation().getWorld().getBlockAt(block.getX(), (y - 1), block.getZ()).getLocation());
 	    					return;
 	    					return;
     					}
     					}
     				}
     				}
     			}
     			}
-    			if(PP.getMySpawn(player) != null){
+    			if(PP.getMySpawn(player) != null)
+    			{
     				Location mySpawn = PP.getMySpawn(player);
     				Location mySpawn = PP.getMySpawn(player);
     				if(mySpawn != null && plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)) != null)
     				if(mySpawn != null && plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)) != null)
     					mySpawn.setWorld(plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)));
     					mySpawn.setWorld(plugin.getServer().getWorld(PP.getMySpawnWorld(plugin)));
@@ -66,11 +77,12 @@ public class Item {
     			} else {
     			} else {
     				player.teleport(player.getWorld().getSpawnLocation());
     				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){
     		} 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)
 	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
 		//CHECK IF THE FILE EXISTS
 		File theDir = new File(theLocation);
 		File theDir = new File(theLocation);
 		if(!theDir.exists()){
 		if(!theDir.exists()){
@@ -170,7 +170,7 @@ public class Leaderboard {
 	}
 	}
 	
 	
 	public static String[] retrieveInfo(String statName, int pagenumber){
 	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 {
 		try {
         	FileReader file = new FileReader(theLocation);
         	FileReader file = new FileReader(theLocation);
         	BufferedReader in = new BufferedReader(file);
         	BufferedReader in = new BufferedReader(file);
@@ -199,7 +199,7 @@ public class Leaderboard {
 	public static void updateLeaderboard(PlayerStat ps, String statName){
 	public static void updateLeaderboard(PlayerStat ps, String statName){
 		if(LoadProperties.useMySQL)
 		if(LoadProperties.useMySQL)
 			return;
 			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 {
 		try {
         	//Open the file
         	//Open the file
         	FileReader file = new FileReader(theLocation);
         	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$
                 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 false;
 		}
 		}
 		return true;
 		return true;

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

@@ -13,7 +13,7 @@ import com.gmail.nossr50.datatypes.PlayerProfile;
 public class Users {
 public class Users {
     private static volatile Users instance;
     private static volatile Users instance;
     protected static final Logger log = Logger.getLogger("Minecraft");
     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 ArrayList<PlayerProfile> players;
     public static HashMap<Player, PlayerProfile> players = new HashMap<Player, PlayerProfile>();
     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));
     	players.put(player, new PlayerProfile(player));
     }
     }
     public static void clearUsers()
     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 java.util.List;
 import org.bukkit.util.config.Configuration;
 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 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;
 	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/"; 
 	public String directory = "plugins/mcMMO/"; 
 	File file = new File(directory + File.separator + "config.yml");
 	File file = new File(directory + File.separator + "config.yml");
@@ -52,16 +50,19 @@ public class LoadProperties {
 	    	return config.getInt(root, 0);
 	    	return config.getInt(root, 0);
 	    }
 	    }
 
 
-	    private Double readDouble(String root)
+	    @SuppressWarnings("unused")
+		private Double readDouble(String root)
 	    {
 	    {
 	        Configuration config = load();
 	        Configuration config = load();
 	        return config.getDouble(root, 0);
 	        return config.getDouble(root, 0);
 	    }
 	    }
-	    private List<String> readStringList(String root)
+	    @SuppressWarnings("unused")
+		private List<String> readStringList(String root)
 	    {
 	    {
 	        Configuration config = load();
 	        Configuration config = load();
 	        return config.getKeys(root);
 	        return config.getKeys(root);
 	    }
 	    }
+	    
 	    private String readString(String root)
 	    private String readString(String root)
 	    {
 	    {
 	        Configuration config = load();
 	        Configuration config = load();
@@ -80,8 +81,9 @@ public class LoadProperties {
 	        }
 	        }
 	        return null;
 	        return null;
 	    }
 	    }
-	    private void addDefaults(){
-	        plugin.log.info("Generating Config File...");  	
+	    private void addDefaults()
+	    {
+	        System.out.println("Generating Config File...");  	
 	    	
 	    	
 	        //Put in defaults
 	        //Put in defaults
 	        write("MySQL.Enabled", false);
 	        write("MySQL.Enabled", false);
@@ -150,9 +152,9 @@ public class LoadProperties {
 	    	write("XP.Excavation.Cake", 300);
 	    	write("XP.Excavation.Cake", 300);
 	    	write("XP.Excavation.Cocoa_Beans", 10);
 	    	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.Cocoa_Beans", true);
 	    	write("Excavation.Drops.Mushrooms", true);
 	    	write("Excavation.Drops.Mushrooms", true);
@@ -229,21 +231,15 @@ public class LoadProperties {
 	    	
 	    	
 	     loadkeys();
 	     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");
 	        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");
 	        msulphur = readInteger("XP.Excavation.Sulphur");
 	        mbones = readInteger("XP.Excavation.Bones");
 	        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);
 		removeXP("acrobatics", newXP);
 	}
 	}
 
 
-	public boolean isInt(String string){
+	public boolean isInt(String string)
+	{
 		try {
 		try {
-		    int x = Integer.parseInt(string);
+		    Integer.parseInt(string);
 		}
 		}
 		catch(NumberFormatException nFE) {
 		catch(NumberFormatException nFE) {
 		    return false;
 		    return false;
 		}
 		}
 		return true;
 		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 false;
 		}
 		}
 		return true;
 		return true;
 	}
 	}
-	public void acceptInvite(){
+	public void acceptInvite()
+	{
 		party = invite;
 		party = invite;
 		invite = "";
 		invite = "";
 	}
 	}
-	public void modifyInvite(String invitename){
+	public void modifyInvite(String invitename)
+	{
 		invite = invitename;
 		invite = invitename;
 	}
 	}
 	public String getInvite() { return invite; }
 	public String getInvite() { return invite; }
@@ -1054,7 +1061,8 @@ public class PlayerProfile
 		}
 		}
 		save();
 		save();
 	}
 	}
-	public Integer getXpToLevel(String skillname){
+	public Integer getXpToLevel(String skillname)
+	{
 		if(skillname.equals("sorcery")){
 		if(skillname.equals("sorcery")){
 			return ((stats.get("sorcery") + 50) * LoadProperties.sorceryxpmodifier) * LoadProperties.globalxpmodifier;
 			return ((stats.get("sorcery") + 50) * LoadProperties.sorceryxpmodifier) * LoadProperties.globalxpmodifier;
 		}
 		}
@@ -1111,13 +1119,15 @@ public class PlayerProfile
     	save();
     	save();
     }
     }
     //Retrieve whether or not the player is in a party
     //Retrieve whether or not the player is in a party
-    public boolean inParty() {
+    public boolean inParty() 
+    {
     	if(party != null && !party.equals("") && !party.equals("null")){
     	if(party != null && !party.equals("") && !party.equals("null")){
     		return true;
     		return true;
     	} else {
     	} else {
     		return false;
     		return false;
     	}
     	}
     }
     }
+    
     //Retrieve whether or not the player has an invite
     //Retrieve whether or not the player has an invite
     public boolean hasPartyInvite() {
     public boolean hasPartyInvite() {
     	if(invite != null && !invite.equals("") && !invite.equals("null")){
     	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 org.bukkit.plugin.Plugin;
 import com.nijikokun.bukkit.Permissions.Permissions;
 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;
 	private static Permissions permissionsPlugin;
     public static boolean permissionsEnabled = false;
     public static boolean permissionsEnabled = false;
     private static volatile mcPermissions instance;
     private static volatile mcPermissions instance;
 
 
-    public static void initialize(Server server) {
+    public static void initialize(Server server) 
+    {
         Plugin test = server.getPluginManager().getPlugin("Permissions");
         Plugin test = server.getPluginManager().getPlugin("Permissions");
-        if (test != null) {
+        if (test != null) 
+        {
             Logger log = Logger.getLogger("Minecraft");
             Logger log = Logger.getLogger("Minecraft");
             permissionsPlugin = ((Permissions) test);
             permissionsPlugin = ((Permissions) test);
             permissionsEnabled = true;
             permissionsEnabled = true;
             log.log(Level.INFO, "[mcMMO] Permissions enabled.");
             log.log(Level.INFO, "[mcMMO] Permissions enabled.");
-        } else {
+        } else 
+        {
             Logger log = Logger.getLogger("Minecraft");
             Logger log = Logger.getLogger("Minecraft");
             log.log(Level.SEVERE, "[mcMMO] Permissions isn't loaded, there are no restrictions.");
             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){
     public boolean admin(Player player){
     	if (permissionsEnabled) {
     	if (permissionsEnabled) {

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

@@ -21,7 +21,6 @@ public class mcTimer extends TimerTask
     
     
 	public void run() 
 	public void run() 
 	{
 	{
-		long before = System.currentTimeMillis();
 		for(Player player : plugin.getServer().getOnlinePlayers())
 		for(Player player : plugin.getServer().getOnlinePlayers())
 		{
 		{
 			if(player == null)
 			if(player == null)
@@ -107,15 +106,5 @@ public class mcTimer extends TimerTask
 		thecount++;
 		thecount++;
 		if(thecount >= 41)
 		if(thecount >= 41)
 			thecount = 1;
 			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 org.bukkit.entity.Player;
 
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 
 
-public class Party {
+public class Party 
+{
 	private static mcMMO plugin;
 	private static mcMMO plugin;
-	public Party(mcMMO instance) {
+	public Party(mcMMO instance) 
+	{
     	plugin = instance;
     	plugin = instance;
     }
     }
 	private static volatile Party instance;
 	private static volatile Party instance;
-	public static Party getInstance() {
-    	if (instance == null) {
+	public static Party getInstance() 
+	{
+    	if (instance == null) 
+    	{
     	instance = new Party(plugin);
     	instance = new Party(plugin);
     	}
     	}
     	return instance;
     	return instance;
     	}
     	}
     public boolean inSameParty(Player playera, Player playerb){
     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(playera);
     		Users.addUser(playerb);
     		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;
 	            return true;
-	        } else {
+	        } else 
+	        {
 	            return false;
 	            return false;
 	        }
 	        }
-    	} else {
+    	} else 
+    	{
     		return false;
     		return false;
     	}
     	}
     }
     }
     
     
-	public int partyCount(Player player, Player[] players){
+	public int partyCount(Player player, Player[] players)
+	{
         int x = 0;
         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()))
         	if(Users.getProfile(player).getParty().equals(Users.getProfile(hurrdurr).getParty()))
         	x++;
         	x++;
         	}
         	}
         }
         }
         return x;
         return x;
     }
     }
-    public void informPartyMembers(Player player, Player[] players){
+    public void informPartyMembers(Player player, Player[] players)
+    {
         int x = 0;
         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++;
                 x++;
                 }
                 }
             }
             }
@@ -63,7 +79,7 @@ public class Party {
         	if(player != null && p != null){
         	if(player != null && p != null){
         		if(inSameParty(player, p) && !p.getName().equals(player.getName()))
         		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++;
         			x++;
                 }
                 }
         	}
         	}

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

@@ -1,5 +1,99 @@
 package com.gmail.nossr50.skills;
 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;
 package com.gmail.nossr50.skills;
 
 
 import org.bukkit.ChatColor;
 import org.bukkit.ChatColor;
-import org.bukkit.entity.Animals;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Monster;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Wolf;
 import org.bukkit.entity.Wolf;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;
 import org.bukkit.plugin.Plugin;
 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.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcPermissions;
 import com.gmail.nossr50.mcPermissions;
@@ -26,7 +23,8 @@ public class Axes {
     		/*
     		/*
     		 * CHECK FOR AXE PREP MODE
     		 * CHECK FOR AXE PREP MODE
     		 */
     		 */
-    		if(PP.getAxePreparationMode()){
+    		if(PP.getAxePreparationMode())
+    		{
     			PP.setAxePreparationMode(false);
     			PP.setAxePreparationMode(false);
     		}
     		}
     		int ticks = 2;
     		int ticks = 2;
@@ -37,17 +35,17 @@ public class Axes {
     		}
     		}
 
 
     		if(!PP.getSkullSplitterMode() && Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){
     		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()){
     			for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 	    			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.setSkullSplitterActivatedTimeStamp(System.currentTimeMillis());
     			PP.setSkullSplitterDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
     			PP.setSkullSplitterDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
     			PP.setSkullSplitterMode(true);
     			PP.setSkullSplitterMode(true);
     		}
     		}
     		if(!PP.getSkullSplitterMode() && !Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){
     		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)");
     					+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.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 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.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.config.LoadProperties;
@@ -33,10 +33,10 @@ public class Excavation {
     		}
     		}
     		
     		
 	    	if(!PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() < System.currentTimeMillis()){
 	    	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()){
 	    		for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 	    			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.setGigaDrillBreakerActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setGigaDrillBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
 	    		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.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 import org.bukkit.plugin.Plugin;
 
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 
 
 public class Herbalism {
 public class Herbalism {
@@ -106,10 +106,10 @@ public class Herbalism {
     		}
     		}
     		
     		
 	    	if(!PP.getGreenTerraMode() && Skills.cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){
 	    	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()){
 	    		for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 	    			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.setGreenTerraActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setGreenTerraDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
 	    		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.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 import org.bukkit.plugin.Plugin;
 
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 
 
 public class Mining {
 public class Mining {
@@ -38,11 +38,11 @@ public class Mining {
     		}
     		}
     		
     		
 	    	if(!PP.getSuperBreakerMode() && Skills.cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
 	    	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())
 	    		for(Player y : pluginx.getServer().getOnlinePlayers())
 	    		{
 	    		{
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 	    			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.setSuperBreakerActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setSuperBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
 	    		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.entity.Player;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.inventory.ItemStack;
 
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcPermissions;
 import com.gmail.nossr50.mcPermissions;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 
 
 public class Repair {
 public class Repair {
@@ -30,6 +30,7 @@ public class Repair {
         private static String nIron =  LoadProperties.nIron;
         private static String nIron =  LoadProperties.nIron;
         
         
 	
 	
+	@SuppressWarnings("deprecation")
 	public static void repairCheck(Player player, ItemStack is, Block block){
 	public static void repairCheck(Player player, ItemStack is, Block block){
 		PlayerProfile PP = Users.getProfile(player);
 		PlayerProfile PP = Users.getProfile(player);
 		short durabilityBefore = player.getItemInHand().getDurability();
 		short durabilityBefore = player.getItemInHand().getDurability();
@@ -164,7 +165,7 @@ public class Repair {
         		}
         		}
         		
         		
         	} else {
         	} else {
-        		player.sendMessage(Messages.getString("Skills.FullDurability"));
+        		player.sendMessage(mcLocale.getString("Skills.FullDurability"));
         	}
         	}
         	player.updateInventory();
         	player.updateInventory();
         	/*
         	/*
@@ -450,32 +451,32 @@ public class Repair {
     public static void needMoreVespeneGas(ItemStack is, Player player){
     public static void needMoreVespeneGas(ItemStack is, Player player){
     	PlayerProfile PP = Users.getProfile(player);
     	PlayerProfile PP = Users.getProfile(player);
     	if ((isDiamondTools(is) || isDiamondArmor(is)) && PP.getSkill("repair") < LoadProperties.repairdiamondlevel){
     	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)){
 		} else if (isDiamondTools(is) && !hasItem(player, rDiamond) || isIronTools(is) && !hasItem(player, rIron) || isGoldTools(is) && !hasItem(player, rGold)){
 			if(isDiamondTools(is) && !hasItem(player, rDiamond))
 			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))
 			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))
 			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))
 			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))
 			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)){
 		} 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)){
 		} 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)){
 		} 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)
 		} else if (is.getAmount() > 1)
-			player.sendMessage(Messages.getString("Skills.StackedItems"));
+			player.sendMessage(mcLocale.getString("Skills.StackedItems"));
     	}
     	}
     public static boolean checkPlayerProcRepair(Player player){
     public static boolean checkPlayerProcRepair(Player player){
     	PlayerProfile PP = Users.getProfile(player);
     	PlayerProfile PP = Users.getProfile(player);
 		if(player != null){
 		if(player != null){
 			if(Math.random() * 1000 <= PP.getSkill("repair")){
 			if(Math.random() * 1000 <= PP.getSkill("repair")){
-				player.sendMessage(Messages.getString("Skills.FeltEasy"));
+				player.sendMessage(mcLocale.getString("Skills.FeltEasy"));
 				return true;
 				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.entity.Player;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.inventory.ItemStack;
 import com.gmail.nossr50.Leaderboard;
 import com.gmail.nossr50.Leaderboard;
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
@@ -15,6 +14,7 @@ import com.gmail.nossr50.mcPermissions;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerStat;
 import com.gmail.nossr50.datatypes.PlayerStat;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 
 
 public class Skills {
 public class Skills {
@@ -74,42 +74,42 @@ public class Skills {
     	PlayerProfile PP = Users.getProfile(player);
     	PlayerProfile PP = Users.getProfile(player);
     	if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
     	if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
 			PP.setGreenTerraInformed(true);
 			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)){
     	if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - PP.getTreeFellerDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
 			PP.setTreeFellerInformed(true);
 			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)){
     	if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - PP.getSuperBreakerDeactivatedTimeStamp() >= (LoadProperties.superBreakerCooldown * 1000)){
 			PP.setSuperBreakerInformed(true);
 			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)){
     	if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - PP.getSerratedStrikesDeactivatedTimeStamp() >= (LoadProperties.serratedStrikeCooldown * 1000)){
 			PP.setSerratedStrikesInformed(true);
 			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)){
     	if(!PP.getBerserkInformed() && System.currentTimeMillis() - PP.getBerserkDeactivatedTimeStamp() >= (LoadProperties.berserkCooldown * 1000)){
 			PP.setBerserkInformed(true);
 			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)){
     	if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - PP.getSkullSplitterDeactivatedTimeStamp() >= (LoadProperties.skullSplitterCooldown * 1000)){
 			PP.setSkullSplitterInformed(true);
 			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)){
     	if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - PP.getGigaDrillBreakerDeactivatedTimeStamp() >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){
 			PP.setGigaDrillBreakerInformed(true);
 			PP.setGigaDrillBreakerInformed(true);
-			player.sendMessage(Messages.getString("Skills.YourGigaDrillBreaker"));
+			player.sendMessage(mcLocale.getString("Skills.YourGigaDrillBreaker"));
     	}
     	}
     }
     }
     public static void hoeReadinessCheck(Player player){
     public static void hoeReadinessCheck(Player player){
     	PlayerProfile PP = Users.getProfile(player);
     	PlayerProfile PP = Users.getProfile(player);
     	if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){
     	if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){
     		if(!PP.getGreenTerraMode() && !cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){
     		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)");
 	    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)+"s)");
 	    		return;
 	    		return;
 	    	}
 	    	}
-    		player.sendMessage(Messages.getString("Skills.ReadyHoe"));
+    		player.sendMessage(mcLocale.getString("Skills.ReadyHoe"));
 			PP.setHoePreparationATS(System.currentTimeMillis());
 			PP.setHoePreparationATS(System.currentTimeMillis());
 			PP.setHoePreparationMode(true);
 			PP.setHoePreparationMode(true);
     	}
     	}
@@ -122,27 +122,27 @@ public class Skills {
 		{
 		{
 			if(PP.getHoePreparationMode() && System.currentTimeMillis() - PP.getHoePreparationATS() >= 4000){
 			if(PP.getHoePreparationMode() && System.currentTimeMillis() - PP.getHoePreparationATS() >= 4000){
 				PP.setHoePreparationMode(false);
 				PP.setHoePreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerHoe"));
+				player.sendMessage(mcLocale.getString("Skills.LowerHoe"));
 			}
 			}
 			if(PP.getAxePreparationMode() && System.currentTimeMillis() - PP.getAxePreparationATS() >= 4000){
 			if(PP.getAxePreparationMode() && System.currentTimeMillis() - PP.getAxePreparationATS() >= 4000){
 				PP.setAxePreparationMode(false);
 				PP.setAxePreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerAxe"));
+				player.sendMessage(mcLocale.getString("Skills.LowerAxe"));
 			}
 			}
 			if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - PP.getPickaxePreparationATS() >= 4000){
 			if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - PP.getPickaxePreparationATS() >= 4000){
 				PP.setPickaxePreparationMode(false);
 				PP.setPickaxePreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerPickAxe"));
+				player.sendMessage(mcLocale.getString("Skills.LowerPickAxe"));
 			}
 			}
 			if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - PP.getSwordsPreparationATS() >= 4000){
 			if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - PP.getSwordsPreparationATS() >= 4000){
 				PP.setSwordsPreparationMode(false);
 				PP.setSwordsPreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerSword"));
+				player.sendMessage(mcLocale.getString("Skills.LowerSword"));
 			}
 			}
 			if(PP.getFistsPreparationMode() && System.currentTimeMillis() - PP.getFistsPreparationATS() >= 4000){
 			if(PP.getFistsPreparationMode() && System.currentTimeMillis() - PP.getFistsPreparationATS() >= 4000){
 				PP.setFistsPreparationMode(false);
 				PP.setFistsPreparationMode(false);
-				player.sendMessage(Messages.getString("Skills.LowerFists"));
+				player.sendMessage(mcLocale.getString("Skills.LowerFists"));
 			}
 			}
 			if(PP.getShovelPreparationMode() && System.currentTimeMillis() - PP.getShovelPreparationATS() >= 4000){
 			if(PP.getShovelPreparationMode() && System.currentTimeMillis() - PP.getShovelPreparationATS() >= 4000){
 				PP.setShovelPreparationMode(false);
 				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()){
 				if(PP.getGreenTerraMode() && PP.getGreenTerraDeactivatedTimeStamp() <= System.currentTimeMillis()){
 					PP.setGreenTerraMode(false);
 					PP.setGreenTerraMode(false);
 					PP.setGreenTerraInformed(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()){
 				if(PP.getSkullSplitterMode() && PP.getSkullSplitterDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setSkullSplitterMode(false);
 						PP.setSkullSplitterMode(false);
 						PP.setSkullSplitterInformed(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()){
 				if(PP.getTreeFellerMode() && PP.getTreeFellerDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setTreeFellerMode(false);
 						PP.setTreeFellerMode(false);
 						PP.setTreeFellerInformed(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()){
 				if(PP.getSuperBreakerMode() && PP.getSuperBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setSuperBreakerMode(false);
 						PP.setSuperBreakerMode(false);
 						PP.setSuperBreakerInformed(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()){
 				if(PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setGigaDrillBreakerMode(false);
 						PP.setGigaDrillBreakerMode(false);
 						PP.setGigaDrillBreakerInformed(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()){
 				if(PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setSerratedStrikesMode(false);
 						PP.setSerratedStrikesMode(false);
 						PP.setSerratedStrikesInformed(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()){
 				if(PP.getBerserkMode() && PP.getBerserkDeactivatedTimeStamp() <= System.currentTimeMillis()){
 						PP.setBerserkMode(false);
 						PP.setBerserkMode(false);
 						PP.setBerserkInformed(false);
 						PP.setBerserkInformed(false);
-						player.sendMessage(Messages.getString("Skills.BerserkOff"));
+						player.sendMessage(mcLocale.getString("Skills.BerserkOff"));
 				}
 				}
 			}
 			}
 		}
 		}
@@ -224,47 +224,47 @@ public class Skills {
 	    		return;
 	    		return;
 	    	if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode()){
 	    	if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode()){
 	    		if(!PP.getSuperBreakerMode() && !cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
 	    		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)");
 		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)+"s)");
 		    		return;
 		    		return;
 		    	}
 		    	}
-	    		player.sendMessage(Messages.getString("Skills.ReadyPickAxe"));
+	    		player.sendMessage(mcLocale.getString("Skills.ReadyPickAxe"));
 				PP.setPickaxePreparationATS(System.currentTimeMillis());
 				PP.setPickaxePreparationATS(System.currentTimeMillis());
 				PP.setPickaxePreparationMode(true);
 				PP.setPickaxePreparationMode(true);
 	    	}
 	    	}
 	    	if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode()){
 	    	if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode()){
 	    		if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)){
 	    		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)");
 		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)+"s)");
 		    		return;
 		    		return;
 		    	}
 		    	}
-	    		player.sendMessage(Messages.getString("Skills.ReadyShovel"));
+	    		player.sendMessage(mcLocale.getString("Skills.ReadyShovel"));
 				PP.setShovelPreparationATS(System.currentTimeMillis());
 				PP.setShovelPreparationATS(System.currentTimeMillis());
 				PP.setShovelPreparationMode(true);
 				PP.setShovelPreparationMode(true);
 	    	}
 	    	}
 	    	if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode()){
 	    	if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode()){
 	    		if(!PP.getSerratedStrikesMode() && !cooldownOver(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)){
 	    		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)");
 		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)+"s)");
 		    		return;
 		    		return;
 		    	}
 		    	}
-	    		player.sendMessage(Messages.getString("Skills.ReadySword"));
+	    		player.sendMessage(mcLocale.getString("Skills.ReadySword"));
 				PP.setSwordsPreparationATS(System.currentTimeMillis());
 				PP.setSwordsPreparationATS(System.currentTimeMillis());
 				PP.setSwordsPreparationMode(true);
 				PP.setSwordsPreparationMode(true);
 	    	}
 	    	}
 	    	if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode()){
 	    	if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode()){
 		    	if(!PP.getBerserkMode() && !cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){
 		    	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)");
 		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)+"s)");
 		    		return;
 		    		return;
 		    	}
 		    	}
-		    	player.sendMessage(Messages.getString("Skills.ReadyFists"));
+		    	player.sendMessage(mcLocale.getString("Skills.ReadyFists"));
 				PP.setFistsPreparationATS(System.currentTimeMillis());
 				PP.setFistsPreparationATS(System.currentTimeMillis());
 				PP.setFistsPreparationMode(true);
 				PP.setFistsPreparationMode(true);
 	    	}
 	    	}
 	    	if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !PP.getAxePreparationMode()){
 	    	if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !PP.getAxePreparationMode()){
 	    		if(m.isAxes(player.getItemInHand())){
 	    		if(m.isAxes(player.getItemInHand())){
-	    			player.sendMessage(Messages.getString("Skills.ReadyAxe"));
+	    			player.sendMessage(mcLocale.getString("Skills.ReadyAxe"));
 	    			PP.setAxePreparationATS(System.currentTimeMillis());
 	    			PP.setAxePreparationATS(System.currentTimeMillis());
 	    			PP.setAxePreparationMode(true);
 	    			PP.setAxePreparationMode(true);
 	    		}
 	    		}
@@ -294,7 +294,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "taming");
 					Leaderboard.updateLeaderboard(ps, "taming");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("taming") != null)
 				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
 	    	 * ACROBATICS
@@ -317,7 +317,7 @@ public class Skills {
 				}
 				}
 				
 				
 				if(player != null && PP != null && PP.getSkillToString("acrobatics") != null)
 				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
 	    	 * ARCHERY
@@ -339,7 +339,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "archery");
 					Leaderboard.updateLeaderboard(ps, "archery");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("archery") != null)
 				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
 	    	 * SWORDS
@@ -362,7 +362,7 @@ public class Skills {
 				}
 				}
 				
 				
 				if(player != null && PP != null && PP.getSkillToString("swords") != null)
 				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
 	    	 * AXES
@@ -384,7 +384,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "axes");
 					Leaderboard.updateLeaderboard(ps, "axes");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("axes") != null)
 				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
 			 * UNARMED
@@ -406,7 +406,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "unarmed");
 					Leaderboard.updateLeaderboard(ps, "unarmed");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("unarmed") != null)
 				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
 			 * HERBALISM
@@ -428,7 +428,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "herbalism");
 					Leaderboard.updateLeaderboard(ps, "herbalism");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("herbalism") != null)
 				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
 			 * MINING
@@ -450,7 +450,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "mining");
 					Leaderboard.updateLeaderboard(ps, "mining");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("mining") != null)
 				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
 			 * WOODCUTTING
@@ -472,7 +472,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "woodcutting");
 					Leaderboard.updateLeaderboard(ps, "woodcutting");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("woodcutting") != null)
 				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
 			 * REPAIR
@@ -494,7 +494,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "repair");
 					Leaderboard.updateLeaderboard(ps, "repair");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("repair") != null)
 				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
 			 * EXCAVATION
@@ -516,7 +516,7 @@ public class Skills {
 					Leaderboard.updateLeaderboard(ps, "excavation");
 					Leaderboard.updateLeaderboard(ps, "excavation");
 				}
 				}
 				if(player != null && PP != null && PP.getSkillToString("excavation") != null)
 				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")+")");	
 					//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")){
     	if(skillname.equals("all")){
     		return true;
     		return true;
     	}
     	}
-    	if(skillname.equals("sorcery")){
+    	else if(skillname.equals("sorcery")){
     		return true;
     		return true;
     	}
     	}
-    	if(skillname.equals("taming")){
+    	else if(skillname.equals("taming")){
 			return true;
 			return true;
 		}
 		}
-		if(skillname.equals("mining")){
+    	else if(skillname.equals("mining")){
 			return true;
 			return true;
 		}
 		}
 		else if(skillname.equals("woodcutting")){
 		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.block.Block;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
 
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcPermissions;
 import com.gmail.nossr50.mcPermissions;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 public class Sorcery
 public class Sorcery
 {
 {
@@ -37,13 +37,13 @@ public class Sorcery
 	}
 	}
 	public void informSelected(String spellname, int cost, Player player)
 	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)
 	public void informSpell(String spellname, Player player)
 	{
 	{
 		PlayerProfile PP = Users.getProfile(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)
 	public void shoutSpell(String spellname, Player player)
@@ -79,7 +79,7 @@ public class Sorcery
 				PP.setGreenDyeCycleSel(1);
 				PP.setGreenDyeCycleSel(1);
 				PP.setGreenDyeCycle(0);
 				PP.setGreenDyeCycle(0);
 				
 				
-				informSelected(Messages.getString("Sorcery.Curative.Self"), LoadProperties.cure_self, player);
+				informSelected(mcLocale.getString("Sorcery.Curative.Self"), LoadProperties.cure_self, player);
 				break;
 				break;
 			}
 			}
 			
 			
@@ -94,7 +94,7 @@ public class Sorcery
 				PP.setGreenDyeCycleSel(0);
 				PP.setGreenDyeCycleSel(0);
 				PP.setGreenDyeCycle(1);
 				PP.setGreenDyeCycle(1);
 				
 				
-				informSelected(Messages.getString("Sorcery.Curative.Other"), LoadProperties.cure_other, player);
+				informSelected(mcLocale.getString("Sorcery.Curative.Other"), LoadProperties.cure_other, player);
 				break;
 				break;
 			} 
 			} 
 			else
 			else

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

@@ -1,7 +1,6 @@
 package com.gmail.nossr50.skills;
 package com.gmail.nossr50.skills;
 
 
 import org.bukkit.ChatColor;
 import org.bukkit.ChatColor;
-import org.bukkit.entity.Animals;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
@@ -12,17 +11,16 @@ import org.bukkit.event.entity.EntityDamageEvent;
 import org.bukkit.plugin.Plugin;
 import org.bukkit.plugin.Plugin;
 
 
 import com.gmail.nossr50.Combat;
 import com.gmail.nossr50.Combat;
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcPermissions;
 import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.party.Party;
 
 
-public class Swords {
-	
+public class Swords 
+{
 	public static void serratedStrikesActivationCheck(Player player, Plugin pluginx){
 	public static void serratedStrikesActivationCheck(Player player, Plugin pluginx){
     	PlayerProfile PP = Users.getProfile(player);
     	PlayerProfile PP = Users.getProfile(player);
 		if(m.isSwords(player.getItemInHand()))
 		if(m.isSwords(player.getItemInHand()))
@@ -41,11 +39,11 @@ public class Swords {
     		
     		
 	    	if(!PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() < System.currentTimeMillis())
 	    	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())
 	    		for(Player y : pluginx.getServer().getOnlinePlayers())
 	    		{
 	    		{
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 	    			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.setSerratedStrikesActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setSerratedStrikesDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
 	    		PP.setSerratedStrikesDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
@@ -231,8 +229,6 @@ public class Swords {
     }
     }
     public static void bleedSimulate(mcMMO plugin)
     public static void bleedSimulate(mcMMO plugin)
     {
     {
-    	long before = System.currentTimeMillis();
-    	
     	//Add items from Que list to BleedTrack list
     	//Add items from Que list to BleedTrack list
     	
     	
     	for(LivingEntity x : plugin.misc.bleedQue)
     	for(LivingEntity x : plugin.misc.bleedQue)
@@ -269,11 +265,5 @@ public class Swords {
         		x.damage(2);
         		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 class Taming 
 {
 {
-	public static boolean ownerOnline(Wolf theWolf, Plugin pluginx){
+	public static boolean ownerOnline(Wolf theWolf, Plugin pluginx)
+	{
 		for(Player x : pluginx.getServer().getOnlinePlayers())
 		for(Player x : pluginx.getServer().getOnlinePlayers())
 		{
 		{
 			if(x instanceof AnimalTamer)
 			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.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 import org.bukkit.plugin.Plugin;
 
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 
 
 public class Unarmed {
 public class Unarmed {
 	public static void berserkActivationCheck(Player player, Plugin pluginx){
 	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)){
 	    	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()){
 	    		for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 	    			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.setBerserkActivatedTimeStamp(System.currentTimeMillis());
 	    		PP.setBerserkDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
 	    		PP.setBerserkDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
@@ -60,7 +60,7 @@ public class Unarmed {
 	    			Location loc = defender.getLocation();
 	    			Location loc = defender.getLocation();
 	    			if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
 	    			if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
 	    			{
 	    			{
-	    				defender.sendMessage(Messages.getString("Skills.Disarmed"));
+	    				defender.sendMessage(mcLocale.getString("Skills.Disarmed"));
 	    				ItemStack item = defender.getItemInHand();
 	    				ItemStack item = defender.getItemInHand();
 		    			if(item != null)
 		    			if(item != null)
 		    			{
 		    			{
@@ -75,7 +75,7 @@ public class Unarmed {
 	    			Location loc = defender.getLocation();
 	    			Location loc = defender.getLocation();
 	    			if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
 	    			if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
 	    			{
 	    			{
-	    				defender.sendMessage(Messages.getString("Skills.Disarmed"));
+	    				defender.sendMessage(mcLocale.getString("Skills.Disarmed"));
 	    				ItemStack item = defender.getItemInHand();
 	    				ItemStack item = defender.getItemInHand();
 		    			if(item != null)
 		    			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.inventory.ItemStack;
 import org.bukkit.plugin.Plugin;
 import org.bukkit.plugin.Plugin;
 
 
-import com.gmail.nossr50.Messages;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.config.*;
 import com.gmail.nossr50.config.*;
 
 
 
 
@@ -58,10 +58,10 @@ public class WoodCutting {
     		}
     		}
 
 
     		if(!PP.getTreeFellerMode() && Skills.cooldownOver(player, PP.getTreeFellerDeactivatedTimeStamp(), LoadProperties.treeFellerCooldown)){
     		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()){
     			for(Player y : pluginx.getServer().getOnlinePlayers()){
 	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 	    			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.setTreeFellerActivatedTimeStamp(System.currentTimeMillis());
     			PP.setTreeFellerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
     			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