diff --git a/src/Changelog.txt b/Changelog.txt
similarity index 100%
rename from src/Changelog.txt
rename to Changelog.txt
diff --git a/src/com/gmail/nossr50/Combat.java b/src/main/java/com/gmail/nossr50/Combat.java
similarity index 97%
rename from src/com/gmail/nossr50/Combat.java
rename to src/main/java/com/gmail/nossr50/Combat.java
index 971173bea..feefa161d 100644
--- a/src/com/gmail/nossr50/Combat.java
+++ b/src/main/java/com/gmail/nossr50/Combat.java
@@ -1,420 +1,420 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50;
-
-import org.bukkit.World;
-import org.bukkit.entity.*;
-import org.bukkit.event.entity.EntityDamageByEntityEvent;
-import org.bukkit.event.entity.EntityDamageEvent;
-import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
-import org.bukkit.plugin.Plugin;
-
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.party.Party;
-import com.gmail.nossr50.skills.Acrobatics;
-import com.gmail.nossr50.skills.Archery;
-import com.gmail.nossr50.skills.Axes;
-import com.gmail.nossr50.skills.Skills;
-import com.gmail.nossr50.skills.Swords;
-import com.gmail.nossr50.skills.Taming;
-import com.gmail.nossr50.skills.Unarmed;
-
-public class Combat
-{
- public static void combatChecks(EntityDamageEvent event, mcMMO pluginx)
- {
- if(event.isCancelled() || event.getDamage() == 0)
- return;
-
- if(event instanceof EntityDamageByEntityEvent)
- {
- /*
- * OFFENSIVE CHECKS FOR PLAYERS VERSUS ENTITIES
- */
- if(((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
- {
- //Declare Things
- EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
- Player attacker = (Player)((EntityDamageByEntityEvent) event).getDamager();
- PlayerProfile PPa = Users.getProfile(attacker);
-
- //Damage modifiers
- if(mcPermissions.getInstance().unarmed(attacker) && attacker.getItemInHand().getTypeId() == 0) //Unarmed
- Unarmed.unarmedBonus(attacker, eventb);
- if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker) && Users.getProfile(attacker).getSkillLevel(SkillType.AXES) >= 500)
- event.setDamage(event.getDamage()+4);
-
- //If there are any abilities to activate
- combatAbilityChecks(attacker, PPa, pluginx);
-
- //Check for offensive procs
- if(!(((EntityDamageByEntityEvent) event).getDamager() instanceof Arrow))
- {
- if(mcPermissions.getInstance().axes(attacker))
- Axes.axeCriticalCheck(attacker, eventb, pluginx); //Axe Criticals
-
- if(!pluginx.misc.bleedTracker.contains((LivingEntity) event.getEntity())) //Swords Bleed
- Swords.bleedCheck(attacker, (LivingEntity)event.getEntity(), pluginx);
-
- if(event.getEntity() instanceof Player && mcPermissions.getInstance().unarmed(attacker))
- {
- Player defender = (Player)event.getEntity();
- Unarmed.disarmProcCheck(attacker, defender);
- }
-
-
-
- //Modify the event damage if Attacker is Berserk
- if(PPa.getBerserkMode())
- event.setDamage(event.getDamage() + (event.getDamage() / 2));
-
- //Handle Ability Interactions
- if(PPa.getSkullSplitterMode() && m.isAxes(attacker.getItemInHand()))
- Axes.applyAoeDamage(attacker, eventb, pluginx);
- if(PPa.getSerratedStrikesMode() && m.isSwords(attacker.getItemInHand()))
- Swords.applySerratedStrikes(attacker, eventb, pluginx);
-
- //Experience
- if(event.getEntity() instanceof Player)
- {
- Player defender = (Player)event.getEntity();
- PlayerProfile PPd = Users.getProfile(defender);
- if(attacker != null && defender != null && LoadProperties.pvpxp)
- {
- if(System.currentTimeMillis() >= (PPd.getRespawnATS()*1000) + 5000
- && ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis()
- && defender.getHealth() >= 1)
- {
- //Prevent a ridiculous amount of XP being granted by capping it at the remaining health of the mob
- int hpLeft = defender.getHealth(), xpinc = 0;
-
- if(hpLeft < event.getDamage())
- xpinc = event.getDamage();
- else
- xpinc = hpLeft;
-
- int xp = (int) (xpinc * 2 * LoadProperties.pvpxprewardmodifier);
-
- if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
- PPa.addXP(SkillType.AXES, xp*10, attacker);
- if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
- PPa.addXP(SkillType.SWORDS, xp*10, attacker);
- if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
- PPa.addXP(SkillType.UNARMED, xp*10, attacker);
- }
- }
- }
-
- if(!pluginx.misc.mobSpawnerList.contains(event.getEntity()))
- {
- int xp = getXp(event.getEntity(), event);
-
- if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
- PPa.addXP(SkillType.SWORDS, xp*10, attacker);
- else if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
- PPa.addXP(SkillType.AXES, xp*10, attacker);
- else if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
- PPa.addXP(SkillType.UNARMED, xp*10, attacker);
- }
- Skills.XpCheckAll(attacker);
-
- if(event.getEntity() instanceof Wolf)
- {
- Wolf theWolf = (Wolf)event.getEntity();
-
- if(attacker.getItemInHand().getTypeId() == 352 && mcPermissions.getInstance().taming(attacker))
- {
- event.setCancelled(true);
- if(theWolf.isTamed())
- {
- attacker.sendMessage(mcLocale.getString("Combat.BeastLore")+" "+
- mcLocale.getString("Combat.BeastLoreOwner", new Object[] {Taming.getOwnerName(theWolf)})+" "+
- mcLocale.getString("Combat.BeastLoreHealthWolfTamed", new Object[] {theWolf.getHealth()}));
- }
- else
- {
- attacker.sendMessage(mcLocale.getString("Combat.BeastLore")+" "+
- mcLocale.getString("Combat.BeastLoreHealthWolf", new Object[] {theWolf.getHealth()}));
- }
- }
- }
- }
- }
- }
-
- /*
- * OFFENSIVE CHECKS FOR WOLVES VERSUS ENTITIES
- */
- if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Wolf)
- {
- EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
- Wolf theWolf = (Wolf) eventb.getDamager();
- if(theWolf.isTamed() && Taming.ownerOnline(theWolf, pluginx))
- {
- if(Taming.getOwner(theWolf, pluginx) == null)
- return;
- Player master = Taming.getOwner(theWolf, pluginx);
- PlayerProfile PPo = Users.getProfile(master);
-
- if(mcPermissions.getInstance().taming(master))
- {
- //Sharpened Claws
- if(PPo.getSkillLevel(SkillType.TAMING) >= 750)
- {
- event.setDamage(event.getDamage() + 2);
- }
-
- //Gore
- if(Math.random() * 1000 <= PPo.getSkillLevel(SkillType.TAMING))
- {
- event.setDamage(event.getDamage() * 2);
-
- if(event.getEntity() instanceof Player)
- {
- Player target = (Player)event.getEntity();
- target.sendMessage(mcLocale.getString("Combat.StruckByGore")); //$NON-NLS-1$
- Users.getProfile(target).setBleedTicks(2);
- }
- else
- pluginx.misc.addToBleedQue((LivingEntity) event.getEntity());
-
- master.sendMessage(mcLocale.getString("Combat.Gore")); //$NON-NLS-1$
- }
- if(!event.getEntity().isDead() && !pluginx.misc.mobSpawnerList.contains(event.getEntity()))
- {
- int xp = getXp(event.getEntity(), event);
- Users.getProfile(master).addXP(SkillType.TAMING, xp*10, master);
-
- if(event.getEntity() instanceof Player)
- {
- xp = (event.getDamage() * 2);
- Users.getProfile(master).addXP(SkillType.TAMING, (int)((xp*10)*1.5), master);
- }
- Skills.XpCheckSkill(SkillType.TAMING, master);
- }
- }
- }
- }
- //Another offensive check for Archery
- if(event instanceof EntityDamageByEntityEvent && event.getCause() == DamageCause.PROJECTILE && ((EntityDamageByEntityEvent) event).getDamager() instanceof Arrow)
- archeryCheck((EntityDamageByEntityEvent)event, pluginx);
-
- /*
- * DEFENSIVE CHECKS
- */
- if(event instanceof EntityDamageByEntityEvent && event.getEntity() instanceof Player)
- {
- Swords.counterAttackChecks((EntityDamageByEntityEvent)event);
- Acrobatics.dodgeChecks((EntityDamageByEntityEvent)event);
- }
- /*
- * DEFENSIVE CHECKS FOR WOLVES
- */
-
- if(event.getEntity() instanceof Wolf)
- {
- Wolf theWolf = (Wolf) event.getEntity();
-
- if(theWolf.isTamed() && Taming.ownerOnline(theWolf, pluginx))
- {
- if(Taming.getOwner(theWolf, pluginx) == null)
- return;
-
- Player master = Taming.getOwner(theWolf, pluginx);
- PlayerProfile PPo = Users.getProfile(master);
- if(mcPermissions.getInstance().taming(master))
- {
- //Shock-Proof
- if((event.getCause() == DamageCause.ENTITY_EXPLOSION || event.getCause() == DamageCause.BLOCK_EXPLOSION) && PPo.getSkillLevel(SkillType.TAMING) >= 500)
- {
- event.setDamage(2);
- }
-
- //Thick Fur
- if(PPo.getSkillLevel(SkillType.TAMING) >= 250)
- event.setDamage(event.getDamage() / 2);
- }
- }
- }
- }
-
- public static void combatAbilityChecks(Player attacker, PlayerProfile PPa, Plugin pluginx)
- {
- //Check to see if any abilities need to be activated
- if(PPa.getAxePreparationMode())
- Axes.skullSplitterCheck(attacker);
- if(PPa.getSwordsPreparationMode())
- Swords.serratedStrikesActivationCheck(attacker);
- if(PPa.getFistsPreparationMode())
- Unarmed.berserkActivationCheck(attacker);
- }
- public static void archeryCheck(EntityDamageByEntityEvent event, mcMMO pluginx)
- {
- Arrow arrow = (Arrow)event.getDamager();
- Entity y = arrow.getShooter();
- Entity x = event.getEntity();
- if(x instanceof Player)
- {
- Player defender = (Player)x;
- PlayerProfile PPd = Users.getProfile(defender);
- if(PPd == null)
- Users.addUser(defender);
- if(mcPermissions.getInstance().unarmed(defender) && defender.getItemInHand().getTypeId() == 0)
- {
- if(defender != null && PPd.getSkillLevel(SkillType.UNARMED) >= 1000)
- {
- if(Math.random() * 1000 <= 500)
- {
- event.setCancelled(true);
- defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
- return;
- }
- } else if(defender != null && Math.random() * 1000 <= (PPd.getSkillLevel(SkillType.UNARMED) / 2))
- {
- event.setCancelled(true);
- defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
- return;
- }
- }
- }
- /*
- * If attacker is player
- */
- if(y instanceof Player)
- {
- Player attacker = (Player)y;
- PlayerProfile PPa = Users.getProfile(attacker);
- if(mcPermissions.getInstance().archery(attacker))
- {
- Archery.trackArrows(pluginx, x, event, attacker);
-
- /*
- * IGNITION
- */
- Archery.ignitionCheck(x, event, attacker);
- /*
- * Defender is Monster
- */
- if(!pluginx.misc.mobSpawnerList.contains(x))
- {
- int xp = getXp(event.getEntity(), event);
- PPa.addXP(SkillType.ARCHERY, xp*10, attacker);
- }
- /*
- * Attacker is Player
- */
- if(x instanceof Player){
- Player defender = (Player)x;
- PlayerProfile PPd = Users.getProfile(defender);
- /*
- * Stuff for the daze proc
- */
- if(PPa.inParty() && PPd.inParty())
- {
- if(Party.getInstance().inSameParty(defender, attacker))
- {
- event.setCancelled(true);
- return;
- }
- }
- /*
- * PVP XP
- */
- if(LoadProperties.pvpxp && !Party.getInstance().inSameParty(attacker, defender)
- && ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis() && !attacker.getName().equals(defender.getName()))
- {
- int xp = (int) ((event.getDamage() * 2) * 10);
- PPa.addXP(SkillType.ARCHERY, xp, attacker);
- }
- /*
- * DAZE PROC
- */
- Archery.dazeCheck(defender, attacker);
- }
- }
- Skills.XpCheckSkill(SkillType.ARCHERY, attacker);
- }
- }
- public static void dealDamage(Entity target, int dmg){
- if(target instanceof Player){
- ((Player) target).damage(dmg);
- }
- if(target instanceof Animals){
- ((Animals) target).damage(dmg);
- }
- if(target instanceof Monster){
- ((Monster) target).damage(dmg);
- }
- }
- public static boolean pvpAllowed(EntityDamageByEntityEvent event, World world)
- {
- if(!event.getEntity().getWorld().getPVP())
- return false;
- //If it made it this far, pvp is enabled
- return true;
- }
- public static int getXp(Entity entity, EntityDamageEvent event)
- {
- int xp = 0;
- if(entity instanceof LivingEntity)
- {
- LivingEntity le = (LivingEntity)entity;
- //Prevent a ridiculous amount of XP being granted by capping it at the remaining health of the entity
- int hpLeft = le.getHealth(), xpinc = 0;
-
- if(hpLeft < event.getDamage())
- xpinc = event.getDamage();
- else
- xpinc = hpLeft;
-
- if(entity instanceof Animals)
- {
- xp = (int) (xpinc * 1);
- } else
- {
- if(entity instanceof Enderman)
- xp = (xpinc * 2);
- else if(entity instanceof Creeper)
- xp = (xpinc * 4);
- else if(entity instanceof Silverfish)
- xp = (xpinc * 3);
- else if(entity instanceof CaveSpider)
- xp = (xpinc * 3);
- else if(entity instanceof Spider)
- xp = (xpinc * 3);
- else if(entity instanceof Skeleton)
- xp = (xpinc * 2);
- else if(entity instanceof Zombie)
- xp = (xpinc * 2);
- else if(entity instanceof PigZombie)
- xp = (xpinc * 3);
- else if(entity instanceof Slime)
- xp = (xpinc * 2);
- else if(entity instanceof Ghast)
- xp = (xpinc * 3);
- else if(entity instanceof Blaze)
- xp = (xpinc * 3);
- else if(entity instanceof EnderDragon)
- xp = (xpinc * 8);
- }
- }
- return xp;
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50;
+
+import org.bukkit.World;
+import org.bukkit.entity.*;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
+import org.bukkit.event.entity.EntityDamageEvent;
+import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
+import org.bukkit.plugin.Plugin;
+
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+import com.gmail.nossr50.skills.Acrobatics;
+import com.gmail.nossr50.skills.Archery;
+import com.gmail.nossr50.skills.Axes;
+import com.gmail.nossr50.skills.Skills;
+import com.gmail.nossr50.skills.Swords;
+import com.gmail.nossr50.skills.Taming;
+import com.gmail.nossr50.skills.Unarmed;
+
+public class Combat
+{
+ public static void combatChecks(EntityDamageEvent event, mcMMO pluginx)
+ {
+ if(event.isCancelled() || event.getDamage() == 0)
+ return;
+
+ if(event instanceof EntityDamageByEntityEvent)
+ {
+ /*
+ * OFFENSIVE CHECKS FOR PLAYERS VERSUS ENTITIES
+ */
+ if(((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
+ {
+ //Declare Things
+ EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
+ Player attacker = (Player)((EntityDamageByEntityEvent) event).getDamager();
+ PlayerProfile PPa = Users.getProfile(attacker);
+
+ //Damage modifiers
+ if(mcPermissions.getInstance().unarmed(attacker) && attacker.getItemInHand().getTypeId() == 0) //Unarmed
+ Unarmed.unarmedBonus(attacker, eventb);
+ if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker) && Users.getProfile(attacker).getSkillLevel(SkillType.AXES) >= 500)
+ event.setDamage(event.getDamage()+4);
+
+ //If there are any abilities to activate
+ combatAbilityChecks(attacker, PPa, pluginx);
+
+ //Check for offensive procs
+ if(!(((EntityDamageByEntityEvent) event).getDamager() instanceof Arrow))
+ {
+ if(mcPermissions.getInstance().axes(attacker))
+ Axes.axeCriticalCheck(attacker, eventb, pluginx); //Axe Criticals
+
+ if(!pluginx.misc.bleedTracker.contains((LivingEntity) event.getEntity())) //Swords Bleed
+ Swords.bleedCheck(attacker, (LivingEntity)event.getEntity(), pluginx);
+
+ if(event.getEntity() instanceof Player && mcPermissions.getInstance().unarmed(attacker))
+ {
+ Player defender = (Player)event.getEntity();
+ Unarmed.disarmProcCheck(attacker, defender);
+ }
+
+
+
+ //Modify the event damage if Attacker is Berserk
+ if(PPa.getBerserkMode())
+ event.setDamage(event.getDamage() + (event.getDamage() / 2));
+
+ //Handle Ability Interactions
+ if(PPa.getSkullSplitterMode() && m.isAxes(attacker.getItemInHand()))
+ Axes.applyAoeDamage(attacker, eventb, pluginx);
+ if(PPa.getSerratedStrikesMode() && m.isSwords(attacker.getItemInHand()))
+ Swords.applySerratedStrikes(attacker, eventb, pluginx);
+
+ //Experience
+ if(event.getEntity() instanceof Player)
+ {
+ Player defender = (Player)event.getEntity();
+ PlayerProfile PPd = Users.getProfile(defender);
+ if(attacker != null && defender != null && LoadProperties.pvpxp)
+ {
+ if(System.currentTimeMillis() >= (PPd.getRespawnATS()*1000) + 5000
+ && ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis()
+ && defender.getHealth() >= 1)
+ {
+ //Prevent a ridiculous amount of XP being granted by capping it at the remaining health of the mob
+ int hpLeft = defender.getHealth(), xpinc = 0;
+
+ if(hpLeft < event.getDamage())
+ xpinc = event.getDamage();
+ else
+ xpinc = hpLeft;
+
+ int xp = (int) (xpinc * 2 * LoadProperties.pvpxprewardmodifier);
+
+ if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
+ PPa.addXP(SkillType.AXES, xp*10, attacker);
+ if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
+ PPa.addXP(SkillType.SWORDS, xp*10, attacker);
+ if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
+ PPa.addXP(SkillType.UNARMED, xp*10, attacker);
+ }
+ }
+ }
+
+ if(!pluginx.misc.mobSpawnerList.contains(event.getEntity()))
+ {
+ int xp = getXp(event.getEntity(), event);
+
+ if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
+ PPa.addXP(SkillType.SWORDS, xp*10, attacker);
+ else if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
+ PPa.addXP(SkillType.AXES, xp*10, attacker);
+ else if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
+ PPa.addXP(SkillType.UNARMED, xp*10, attacker);
+ }
+ Skills.XpCheckAll(attacker);
+
+ if(event.getEntity() instanceof Wolf)
+ {
+ Wolf theWolf = (Wolf)event.getEntity();
+
+ if(attacker.getItemInHand().getTypeId() == 352 && mcPermissions.getInstance().taming(attacker))
+ {
+ event.setCancelled(true);
+ if(theWolf.isTamed())
+ {
+ attacker.sendMessage(mcLocale.getString("Combat.BeastLore")+" "+
+ mcLocale.getString("Combat.BeastLoreOwner", new Object[] {Taming.getOwnerName(theWolf)})+" "+
+ mcLocale.getString("Combat.BeastLoreHealthWolfTamed", new Object[] {theWolf.getHealth()}));
+ }
+ else
+ {
+ attacker.sendMessage(mcLocale.getString("Combat.BeastLore")+" "+
+ mcLocale.getString("Combat.BeastLoreHealthWolf", new Object[] {theWolf.getHealth()}));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * OFFENSIVE CHECKS FOR WOLVES VERSUS ENTITIES
+ */
+ if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Wolf)
+ {
+ EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
+ Wolf theWolf = (Wolf) eventb.getDamager();
+ if(theWolf.isTamed() && Taming.ownerOnline(theWolf, pluginx))
+ {
+ if(Taming.getOwner(theWolf, pluginx) == null)
+ return;
+ Player master = Taming.getOwner(theWolf, pluginx);
+ PlayerProfile PPo = Users.getProfile(master);
+
+ if(mcPermissions.getInstance().taming(master))
+ {
+ //Sharpened Claws
+ if(PPo.getSkillLevel(SkillType.TAMING) >= 750)
+ {
+ event.setDamage(event.getDamage() + 2);
+ }
+
+ //Gore
+ if(Math.random() * 1000 <= PPo.getSkillLevel(SkillType.TAMING))
+ {
+ event.setDamage(event.getDamage() * 2);
+
+ if(event.getEntity() instanceof Player)
+ {
+ Player target = (Player)event.getEntity();
+ target.sendMessage(mcLocale.getString("Combat.StruckByGore")); //$NON-NLS-1$
+ Users.getProfile(target).setBleedTicks(2);
+ }
+ else
+ pluginx.misc.addToBleedQue((LivingEntity) event.getEntity());
+
+ master.sendMessage(mcLocale.getString("Combat.Gore")); //$NON-NLS-1$
+ }
+ if(!event.getEntity().isDead() && !pluginx.misc.mobSpawnerList.contains(event.getEntity()))
+ {
+ int xp = getXp(event.getEntity(), event);
+ Users.getProfile(master).addXP(SkillType.TAMING, xp*10, master);
+
+ if(event.getEntity() instanceof Player)
+ {
+ xp = (event.getDamage() * 2);
+ Users.getProfile(master).addXP(SkillType.TAMING, (int)((xp*10)*1.5), master);
+ }
+ Skills.XpCheckSkill(SkillType.TAMING, master);
+ }
+ }
+ }
+ }
+ //Another offensive check for Archery
+ if(event instanceof EntityDamageByEntityEvent && event.getCause() == DamageCause.PROJECTILE && ((EntityDamageByEntityEvent) event).getDamager() instanceof Arrow)
+ archeryCheck((EntityDamageByEntityEvent)event, pluginx);
+
+ /*
+ * DEFENSIVE CHECKS
+ */
+ if(event instanceof EntityDamageByEntityEvent && event.getEntity() instanceof Player)
+ {
+ Swords.counterAttackChecks((EntityDamageByEntityEvent)event);
+ Acrobatics.dodgeChecks((EntityDamageByEntityEvent)event);
+ }
+ /*
+ * DEFENSIVE CHECKS FOR WOLVES
+ */
+
+ if(event.getEntity() instanceof Wolf)
+ {
+ Wolf theWolf = (Wolf) event.getEntity();
+
+ if(theWolf.isTamed() && Taming.ownerOnline(theWolf, pluginx))
+ {
+ if(Taming.getOwner(theWolf, pluginx) == null)
+ return;
+
+ Player master = Taming.getOwner(theWolf, pluginx);
+ PlayerProfile PPo = Users.getProfile(master);
+ if(mcPermissions.getInstance().taming(master))
+ {
+ //Shock-Proof
+ if((event.getCause() == DamageCause.ENTITY_EXPLOSION || event.getCause() == DamageCause.BLOCK_EXPLOSION) && PPo.getSkillLevel(SkillType.TAMING) >= 500)
+ {
+ event.setDamage(2);
+ }
+
+ //Thick Fur
+ if(PPo.getSkillLevel(SkillType.TAMING) >= 250)
+ event.setDamage(event.getDamage() / 2);
+ }
+ }
+ }
+ }
+
+ public static void combatAbilityChecks(Player attacker, PlayerProfile PPa, Plugin pluginx)
+ {
+ //Check to see if any abilities need to be activated
+ if(PPa.getAxePreparationMode())
+ Axes.skullSplitterCheck(attacker);
+ if(PPa.getSwordsPreparationMode())
+ Swords.serratedStrikesActivationCheck(attacker);
+ if(PPa.getFistsPreparationMode())
+ Unarmed.berserkActivationCheck(attacker);
+ }
+ public static void archeryCheck(EntityDamageByEntityEvent event, mcMMO pluginx)
+ {
+ Arrow arrow = (Arrow)event.getDamager();
+ Entity y = arrow.getShooter();
+ Entity x = event.getEntity();
+ if(x instanceof Player)
+ {
+ Player defender = (Player)x;
+ PlayerProfile PPd = Users.getProfile(defender);
+ if(PPd == null)
+ Users.addUser(defender);
+ if(mcPermissions.getInstance().unarmed(defender) && defender.getItemInHand().getTypeId() == 0)
+ {
+ if(defender != null && PPd.getSkillLevel(SkillType.UNARMED) >= 1000)
+ {
+ if(Math.random() * 1000 <= 500)
+ {
+ event.setCancelled(true);
+ defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
+ return;
+ }
+ } else if(defender != null && Math.random() * 1000 <= (PPd.getSkillLevel(SkillType.UNARMED) / 2))
+ {
+ event.setCancelled(true);
+ defender.sendMessage(mcLocale.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
+ return;
+ }
+ }
+ }
+ /*
+ * If attacker is player
+ */
+ if(y instanceof Player)
+ {
+ Player attacker = (Player)y;
+ PlayerProfile PPa = Users.getProfile(attacker);
+ if(mcPermissions.getInstance().archery(attacker))
+ {
+ Archery.trackArrows(pluginx, x, event, attacker);
+
+ /*
+ * IGNITION
+ */
+ Archery.ignitionCheck(x, event, attacker);
+ /*
+ * Defender is Monster
+ */
+ if(!pluginx.misc.mobSpawnerList.contains(x))
+ {
+ int xp = getXp(event.getEntity(), event);
+ PPa.addXP(SkillType.ARCHERY, xp*10, attacker);
+ }
+ /*
+ * Attacker is Player
+ */
+ if(x instanceof Player){
+ Player defender = (Player)x;
+ PlayerProfile PPd = Users.getProfile(defender);
+ /*
+ * Stuff for the daze proc
+ */
+ if(PPa.inParty() && PPd.inParty())
+ {
+ if(Party.getInstance().inSameParty(defender, attacker))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ }
+ /*
+ * PVP XP
+ */
+ if(LoadProperties.pvpxp && !Party.getInstance().inSameParty(attacker, defender)
+ && ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis() && !attacker.getName().equals(defender.getName()))
+ {
+ int xp = (int) ((event.getDamage() * 2) * 10);
+ PPa.addXP(SkillType.ARCHERY, xp, attacker);
+ }
+ /*
+ * DAZE PROC
+ */
+ Archery.dazeCheck(defender, attacker);
+ }
+ }
+ Skills.XpCheckSkill(SkillType.ARCHERY, attacker);
+ }
+ }
+ public static void dealDamage(Entity target, int dmg){
+ if(target instanceof Player){
+ ((Player) target).damage(dmg);
+ }
+ if(target instanceof Animals){
+ ((Animals) target).damage(dmg);
+ }
+ if(target instanceof Monster){
+ ((Monster) target).damage(dmg);
+ }
+ }
+ public static boolean pvpAllowed(EntityDamageByEntityEvent event, World world)
+ {
+ if(!event.getEntity().getWorld().getPVP())
+ return false;
+ //If it made it this far, pvp is enabled
+ return true;
+ }
+ public static int getXp(Entity entity, EntityDamageEvent event)
+ {
+ int xp = 0;
+ if(entity instanceof LivingEntity)
+ {
+ LivingEntity le = (LivingEntity)entity;
+ //Prevent a ridiculous amount of XP being granted by capping it at the remaining health of the entity
+ int hpLeft = le.getHealth(), xpinc = 0;
+
+ if(hpLeft < event.getDamage())
+ xpinc = event.getDamage();
+ else
+ xpinc = hpLeft;
+
+ if(entity instanceof Animals)
+ {
+ xp = (int) (xpinc * 1);
+ } else
+ {
+ if(entity instanceof Enderman)
+ xp = (xpinc * 2);
+ else if(entity instanceof Creeper)
+ xp = (xpinc * 4);
+ else if(entity instanceof Silverfish)
+ xp = (xpinc * 3);
+ else if(entity instanceof CaveSpider)
+ xp = (xpinc * 3);
+ else if(entity instanceof Spider)
+ xp = (xpinc * 3);
+ else if(entity instanceof Skeleton)
+ xp = (xpinc * 2);
+ else if(entity instanceof Zombie)
+ xp = (xpinc * 2);
+ else if(entity instanceof PigZombie)
+ xp = (xpinc * 3);
+ else if(entity instanceof Slime)
+ xp = (xpinc * 2);
+ else if(entity instanceof Ghast)
+ xp = (xpinc * 3);
+ else if(entity instanceof Blaze)
+ xp = (xpinc * 3);
+ else if(entity instanceof EnderDragon)
+ xp = (xpinc * 8);
+ }
+ }
+ return xp;
+ }
+}
diff --git a/src/com/gmail/nossr50/Database.java b/src/main/java/com/gmail/nossr50/Database.java
similarity index 97%
rename from src/com/gmail/nossr50/Database.java
rename to src/main/java/com/gmail/nossr50/Database.java
index 9db72945f..0ac7dbc12 100644
--- a/src/com/gmail/nossr50/Database.java
+++ b/src/main/java/com/gmail/nossr50/Database.java
@@ -1,211 +1,211 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.sql.PreparedStatement;
-
-import com.gmail.nossr50.config.LoadProperties;
-
-public class Database {
-
- private mcMMO plugin;
- private String connectionString;
-
- public Database(mcMMO instance) {
- this.plugin = instance;
- this.connectionString = "jdbc:mysql://" + LoadProperties.MySQLserverName + ":" + LoadProperties.MySQLport + "/" + LoadProperties.MySQLdbName + "?user=" + LoadProperties.MySQLuserName + "&password=" + LoadProperties.MySQLdbPass;
- // Load the driver instance
- try {
- Class.forName("com.mysql.jdbc.Driver");
- DriverManager.getConnection(connectionString);
- } catch (ClassNotFoundException e) {
- plugin.getServer().getLogger().warning(e.getLocalizedMessage());
- } catch (SQLException e) {
- plugin.getServer().getLogger().warning(e.getLocalizedMessage());
- System.out.println("SQLException: " + e.getMessage());
- System.out.println("SQLState: " + e.getSQLState());
- System.out.println("VendorError: " + e.getErrorCode());
- }
- }
- //Create the DB structure
- public void createStructure() {
- Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "huds` (`user_id` int(10) unsigned NOT NULL,"
- + "`hudtype` varchar(50) NOT NULL DEFAULT '',"
- + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
- Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,"
- + "`user` varchar(40) NOT NULL,"
- + "`lastlogin` int(32) unsigned NOT NULL,"
- + "`party` varchar(100) NOT NULL DEFAULT '',"
- + "PRIMARY KEY (`id`),"
- + "UNIQUE KEY `user` (`user`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;");
- Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "cooldowns` (`user_id` int(10) unsigned NOT NULL,"
- + "`taming` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`mining` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`woodcutting` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`repair` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`unarmed` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`herbalism` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`excavation` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`archery` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`swords` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`axes` int(32) unsigned NOT NULL DEFAULT '0',"
- + "`acrobatics` int(32) unsigned NOT NULL DEFAULT '0',"
- + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
- Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "skills` (`user_id` int(10) unsigned NOT NULL,"
- + "`taming` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`mining` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`woodcutting` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`repair` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`unarmed` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`herbalism` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`excavation` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`archery` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`swords` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`axes` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
- + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
- Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "experience` (`user_id` int(10) unsigned NOT NULL,"
- + "`taming` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`mining` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`woodcutting` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`repair` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`unarmed` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`herbalism` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`excavation` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`archery` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`swords` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`axes` int(10) unsigned NOT NULL DEFAULT '0',"
- + "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
- + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
- Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "spawn` (`user_id` int(10) NOT NULL,"
- + "`x` int(64) NOT NULL DEFAULT '0',"
- + "`y` int(64) NOT NULL DEFAULT '0',"
- + "`z` int(64) NOT NULL DEFAULT '0',"
- + "`world` varchar(50) NOT NULL DEFAULT '',"
- + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
-
- Write("DROP TABLE IF EXISTS `"+LoadProperties.MySQLtablePrefix+"skills2`");
- Write("DROP TABLE IF EXISTS `"+LoadProperties.MySQLtablePrefix+"experience2`");
-
- checkDatabaseStructure();
- }
-
- public void checkDatabaseStructure()
- {
- String sql = "SELECT * FROM `mcmmo_experience` ORDER BY `"+LoadProperties.MySQLtablePrefix+"experience`.`fishing` ASC LIMIT 0 , 30";
-
- ResultSet rs = null;
- HashMap> Rows = new HashMap>();
- try {
- Connection conn = DriverManager.getConnection(connectionString);
- PreparedStatement stmt = conn.prepareStatement(sql);
- if (stmt.executeQuery() != null) {
- stmt.executeQuery();
- rs = stmt.getResultSet();
- while (rs.next()) {
- ArrayList Col = new ArrayList();
- for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
- Col.add(rs.getString(i));
- }
- Rows.put(rs.getRow(), Col);
- }
- }
- conn.close();
- } catch (SQLException ex) {
- System.out.println("Updating mcMMO MySQL tables...");
- Write("ALTER TABLE `"+LoadProperties.MySQLtablePrefix + "skills` ADD `fishing` int(10) NOT NULL DEFAULT '0' ;");
- Write("ALTER TABLE `"+LoadProperties.MySQLtablePrefix + "experience` ADD `fishing` int(10) NOT NULL DEFAULT '0' ;");
- }
- }
-
- // write query
- public boolean Write(String sql) {
- try {
- Connection conn = DriverManager.getConnection(connectionString);
- PreparedStatement stmt = conn.prepareStatement(sql);
- stmt.executeUpdate();
- conn.close();
- return true;
- } catch (SQLException ex) {
- System.out.println("SQLException: " + ex.getMessage());
- System.out.println("SQLState: " + ex.getSQLState());
- System.out.println("VendorError: " + ex.getErrorCode());
- return false;
- }
- }
-
- // Get Int
- // only return first row / first field
- public Integer GetInt(String sql) {
- ResultSet rs = null;
- Integer result = 0;
- try {
- Connection conn = DriverManager.getConnection(connectionString);
- PreparedStatement stmt = conn.prepareStatement(sql);
- stmt = conn.prepareStatement(sql);
- if (stmt.executeQuery() != null) {
- stmt.executeQuery();
- rs = stmt.getResultSet();
- if (rs.next()) {
- result = rs.getInt(1);
- } else {
- result = 0;
- }
- }
- conn.close();
- } catch (SQLException ex) {
- System.out.println("SQLException: " + ex.getMessage());
- System.out.println("SQLState: " + ex.getSQLState());
- System.out.println("VendorError: " + ex.getErrorCode());
- }
-
- return result;
- }
-
- // read query
- public HashMap> Read(String sql) {
- ResultSet rs = null;
- HashMap> Rows = new HashMap>();
- try {
- Connection conn = DriverManager.getConnection(connectionString);
- PreparedStatement stmt = conn.prepareStatement(sql);
- if (stmt.executeQuery() != null) {
- stmt.executeQuery();
- rs = stmt.getResultSet();
- while (rs.next()) {
- ArrayList Col = new ArrayList();
- for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
- Col.add(rs.getString(i));
- }
- Rows.put(rs.getRow(), Col);
- }
- }
- conn.close();
- } catch (SQLException ex) {
- System.out.println("SQLException: " + ex.getMessage());
- System.out.println("SQLState: " + ex.getSQLState());
- System.out.println("VendorError: " + ex.getErrorCode());
- }
- return Rows;
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.sql.PreparedStatement;
+
+import com.gmail.nossr50.config.LoadProperties;
+
+public class Database {
+
+ private mcMMO plugin;
+ private String connectionString;
+
+ public Database(mcMMO instance) {
+ this.plugin = instance;
+ this.connectionString = "jdbc:mysql://" + LoadProperties.MySQLserverName + ":" + LoadProperties.MySQLport + "/" + LoadProperties.MySQLdbName + "?user=" + LoadProperties.MySQLuserName + "&password=" + LoadProperties.MySQLdbPass;
+ // Load the driver instance
+ try {
+ Class.forName("com.mysql.jdbc.Driver");
+ DriverManager.getConnection(connectionString);
+ } catch (ClassNotFoundException e) {
+ plugin.getServer().getLogger().warning(e.getLocalizedMessage());
+ } catch (SQLException e) {
+ plugin.getServer().getLogger().warning(e.getLocalizedMessage());
+ System.out.println("SQLException: " + e.getMessage());
+ System.out.println("SQLState: " + e.getSQLState());
+ System.out.println("VendorError: " + e.getErrorCode());
+ }
+ }
+ //Create the DB structure
+ public void createStructure() {
+ Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "huds` (`user_id` int(10) unsigned NOT NULL,"
+ + "`hudtype` varchar(50) NOT NULL DEFAULT '',"
+ + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+ Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,"
+ + "`user` varchar(40) NOT NULL,"
+ + "`lastlogin` int(32) unsigned NOT NULL,"
+ + "`party` varchar(100) NOT NULL DEFAULT '',"
+ + "PRIMARY KEY (`id`),"
+ + "UNIQUE KEY `user` (`user`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;");
+ Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "cooldowns` (`user_id` int(10) unsigned NOT NULL,"
+ + "`taming` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`mining` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`woodcutting` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`repair` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`unarmed` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`herbalism` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`excavation` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`archery` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`swords` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`axes` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "`acrobatics` int(32) unsigned NOT NULL DEFAULT '0',"
+ + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+ Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "skills` (`user_id` int(10) unsigned NOT NULL,"
+ + "`taming` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`mining` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`woodcutting` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`repair` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`unarmed` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`herbalism` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`excavation` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`archery` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`swords` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`axes` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+ Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "experience` (`user_id` int(10) unsigned NOT NULL,"
+ + "`taming` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`mining` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`woodcutting` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`repair` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`unarmed` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`herbalism` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`excavation` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`archery` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`swords` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`axes` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
+ + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+ Write("CREATE TABLE IF NOT EXISTS `" + LoadProperties.MySQLtablePrefix + "spawn` (`user_id` int(10) NOT NULL,"
+ + "`x` int(64) NOT NULL DEFAULT '0',"
+ + "`y` int(64) NOT NULL DEFAULT '0',"
+ + "`z` int(64) NOT NULL DEFAULT '0',"
+ + "`world` varchar(50) NOT NULL DEFAULT '',"
+ + "PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+
+ Write("DROP TABLE IF EXISTS `"+LoadProperties.MySQLtablePrefix+"skills2`");
+ Write("DROP TABLE IF EXISTS `"+LoadProperties.MySQLtablePrefix+"experience2`");
+
+ checkDatabaseStructure();
+ }
+
+ public void checkDatabaseStructure()
+ {
+ String sql = "SELECT * FROM `mcmmo_experience` ORDER BY `"+LoadProperties.MySQLtablePrefix+"experience`.`fishing` ASC LIMIT 0 , 30";
+
+ ResultSet rs = null;
+ HashMap> Rows = new HashMap>();
+ try {
+ Connection conn = DriverManager.getConnection(connectionString);
+ PreparedStatement stmt = conn.prepareStatement(sql);
+ if (stmt.executeQuery() != null) {
+ stmt.executeQuery();
+ rs = stmt.getResultSet();
+ while (rs.next()) {
+ ArrayList Col = new ArrayList();
+ for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
+ Col.add(rs.getString(i));
+ }
+ Rows.put(rs.getRow(), Col);
+ }
+ }
+ conn.close();
+ } catch (SQLException ex) {
+ System.out.println("Updating mcMMO MySQL tables...");
+ Write("ALTER TABLE `"+LoadProperties.MySQLtablePrefix + "skills` ADD `fishing` int(10) NOT NULL DEFAULT '0' ;");
+ Write("ALTER TABLE `"+LoadProperties.MySQLtablePrefix + "experience` ADD `fishing` int(10) NOT NULL DEFAULT '0' ;");
+ }
+ }
+
+ // write query
+ public boolean Write(String sql) {
+ try {
+ Connection conn = DriverManager.getConnection(connectionString);
+ PreparedStatement stmt = conn.prepareStatement(sql);
+ stmt.executeUpdate();
+ conn.close();
+ return true;
+ } catch (SQLException ex) {
+ System.out.println("SQLException: " + ex.getMessage());
+ System.out.println("SQLState: " + ex.getSQLState());
+ System.out.println("VendorError: " + ex.getErrorCode());
+ return false;
+ }
+ }
+
+ // Get Int
+ // only return first row / first field
+ public Integer GetInt(String sql) {
+ ResultSet rs = null;
+ Integer result = 0;
+ try {
+ Connection conn = DriverManager.getConnection(connectionString);
+ PreparedStatement stmt = conn.prepareStatement(sql);
+ stmt = conn.prepareStatement(sql);
+ if (stmt.executeQuery() != null) {
+ stmt.executeQuery();
+ rs = stmt.getResultSet();
+ if (rs.next()) {
+ result = rs.getInt(1);
+ } else {
+ result = 0;
+ }
+ }
+ conn.close();
+ } catch (SQLException ex) {
+ System.out.println("SQLException: " + ex.getMessage());
+ System.out.println("SQLState: " + ex.getSQLState());
+ System.out.println("VendorError: " + ex.getErrorCode());
+ }
+
+ return result;
+ }
+
+ // read query
+ public HashMap> Read(String sql) {
+ ResultSet rs = null;
+ HashMap> Rows = new HashMap>();
+ try {
+ Connection conn = DriverManager.getConnection(connectionString);
+ PreparedStatement stmt = conn.prepareStatement(sql);
+ if (stmt.executeQuery() != null) {
+ stmt.executeQuery();
+ rs = stmt.getResultSet();
+ while (rs.next()) {
+ ArrayList Col = new ArrayList();
+ for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
+ Col.add(rs.getString(i));
+ }
+ Rows.put(rs.getRow(), Col);
+ }
+ }
+ conn.close();
+ } catch (SQLException ex) {
+ System.out.println("SQLException: " + ex.getMessage());
+ System.out.println("SQLState: " + ex.getSQLState());
+ System.out.println("VendorError: " + ex.getErrorCode());
+ }
+ return Rows;
+ }
+}
diff --git a/src/com/gmail/nossr50/Item.java b/src/main/java/com/gmail/nossr50/Item.java
similarity index 97%
rename from src/com/gmail/nossr50/Item.java
rename to src/main/java/com/gmail/nossr50/Item.java
index 573716f07..40d6c194d 100644
--- a/src/com/gmail/nossr50/Item.java
+++ b/src/main/java/com/gmail/nossr50/Item.java
@@ -1,104 +1,104 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50;
-
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.plugin.Plugin;
-import com.gmail.nossr50.config.*;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.*;
-
-import com.gmail.nossr50.datatypes.PlayerProfile;
-
-public class Item {
-
- public static void itemchecks(Player player, Plugin plugin)
- {
- ItemStack inhand = player.getItemInHand();
- if(LoadProperties.chimaeraWingEnable && inhand.getTypeId() == LoadProperties.chimaeraId)
- {
- chimaerawing(player, plugin);
- }
- }
-
- @SuppressWarnings("deprecation")
- public static void chimaerawing(Player player, Plugin plugin)
- {
- PlayerProfile PP = Users.getProfile(player);
- ItemStack is = player.getItemInHand();
- Block block = player.getLocation().getBlock();
- if(mcPermissions.getInstance().chimaeraWing(player) && is.getTypeId() == LoadProperties.chimaeraId)
- {
- if(Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing)
- {
- Block derp = player.getLocation().getBlock();
- int y = derp.getY();
- ItemStack[] inventory = player.getInventory().getContents();
- for(ItemStack x : inventory){
- if(x != null && x.getTypeId() == LoadProperties.chimaeraId){
- if(x.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing + 1)
- {
- x.setAmount(x.getAmount() - LoadProperties.feathersConsumedByChimaeraWing);
- player.getInventory().setContents(inventory);
- player.updateInventory();
- break;
- } else {
- x.setAmount(0);
- x.setTypeId(0);
- player.getInventory().setContents(inventory);
- player.updateInventory();
- break;
- }
- }
- }
- while(y < 127)
- {
- y++;
- if(player != null)
- {
- if(player.getLocation().getWorld().getBlockAt(block.getX(), y, block.getZ()).getType() != Material.AIR)
- {
- player.sendMessage(mcLocale.getString("Item.ChimaeraWingFail")); //$NON-NLS-1$
- player.teleport(player.getLocation().getWorld().getBlockAt(block.getX(), (y - 1), block.getZ()).getLocation());
- return;
- }
- }
- }
- if(PP.getMySpawn(player) != null)
- {
- Location mySpawn = PP.getMySpawn(player);
- if(mySpawn != null){
- player.teleport(mySpawn); //Do it twice to prevent weird stuff
- player.teleport(mySpawn);
- }
- } else {
- player.teleport(player.getWorld().getSpawnLocation());
- }
- 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() == LoadProperties.chimaeraId && is.getAmount() <= 9){
- player.sendMessage(mcLocale.getString("Item.NeedFeathers")); //$NON-NLS-1$
- }
- }
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50;
+
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.plugin.Plugin;
+import com.gmail.nossr50.config.*;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.*;
+
+import com.gmail.nossr50.datatypes.PlayerProfile;
+
+public class Item {
+
+ public static void itemchecks(Player player, Plugin plugin)
+ {
+ ItemStack inhand = player.getItemInHand();
+ if(LoadProperties.chimaeraWingEnable && inhand.getTypeId() == LoadProperties.chimaeraId)
+ {
+ chimaerawing(player, plugin);
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ public static void chimaerawing(Player player, Plugin plugin)
+ {
+ PlayerProfile PP = Users.getProfile(player);
+ ItemStack is = player.getItemInHand();
+ Block block = player.getLocation().getBlock();
+ if(mcPermissions.getInstance().chimaeraWing(player) && is.getTypeId() == LoadProperties.chimaeraId)
+ {
+ if(Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing)
+ {
+ Block derp = player.getLocation().getBlock();
+ int y = derp.getY();
+ ItemStack[] inventory = player.getInventory().getContents();
+ for(ItemStack x : inventory){
+ if(x != null && x.getTypeId() == LoadProperties.chimaeraId){
+ if(x.getAmount() >= LoadProperties.feathersConsumedByChimaeraWing + 1)
+ {
+ x.setAmount(x.getAmount() - LoadProperties.feathersConsumedByChimaeraWing);
+ player.getInventory().setContents(inventory);
+ player.updateInventory();
+ break;
+ } else {
+ x.setAmount(0);
+ x.setTypeId(0);
+ player.getInventory().setContents(inventory);
+ player.updateInventory();
+ break;
+ }
+ }
+ }
+ while(y < 127)
+ {
+ y++;
+ if(player != null)
+ {
+ if(player.getLocation().getWorld().getBlockAt(block.getX(), y, block.getZ()).getType() != Material.AIR)
+ {
+ player.sendMessage(mcLocale.getString("Item.ChimaeraWingFail")); //$NON-NLS-1$
+ player.teleport(player.getLocation().getWorld().getBlockAt(block.getX(), (y - 1), block.getZ()).getLocation());
+ return;
+ }
+ }
+ }
+ if(PP.getMySpawn(player) != null)
+ {
+ Location mySpawn = PP.getMySpawn(player);
+ if(mySpawn != null){
+ player.teleport(mySpawn); //Do it twice to prevent weird stuff
+ player.teleport(mySpawn);
+ }
+ } else {
+ player.teleport(player.getWorld().getSpawnLocation());
+ }
+ 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() == LoadProperties.chimaeraId && is.getAmount() <= 9){
+ player.sendMessage(mcLocale.getString("Item.NeedFeathers")); //$NON-NLS-1$
+ }
+ }
+ }
+}
diff --git a/src/com/gmail/nossr50/Leaderboard.java b/src/main/java/com/gmail/nossr50/Leaderboard.java
similarity index 97%
rename from src/com/gmail/nossr50/Leaderboard.java
rename to src/main/java/com/gmail/nossr50/Leaderboard.java
index e61ab7d4f..3603f8b98 100644
--- a/src/com/gmail/nossr50/Leaderboard.java
+++ b/src/main/java/com/gmail/nossr50/Leaderboard.java
@@ -1,279 +1,279 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerStat;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.datatypes.Tree;
-
-public class Leaderboard
-{
- static String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users"; //$NON-NLS-1$
- protected static final Logger log = Logger.getLogger("Minecraft"); //$NON-NLS-1$
-
- /*
- * Read from the file
- */
- public static void makeLeaderboards()
- {
- //Make Trees
- Tree Mining = new Tree();
- Tree WoodCutting = new Tree();
- Tree Herbalism = new Tree();
- Tree Excavation = new Tree();
- Tree Acrobatics = new Tree();
- Tree Repair = new Tree();
- Tree Swords = new Tree();
- Tree Axes = new Tree();
- Tree Archery = new Tree();
- Tree Unarmed = new Tree();
- Tree Taming = new Tree();
- Tree Fishing = new Tree();
- Tree Enchanting = new Tree();
- Tree Alchemy = new Tree();
- Tree PowerLevel = new Tree();
-
- //Add Data To Trees
- try {
- //Open the user file
- FileReader file = new FileReader(location);
- BufferedReader in = new BufferedReader(file);
- String line = ""; //$NON-NLS-1$
- ArrayList players = new ArrayList();
- while((line = in.readLine()) != null)
- {
- String[] character = line.split(":"); //$NON-NLS-1$
- String p = character[0];
-
- //Prevent the same player from being added multiple times
- if(players.contains(p))
- continue;
- else
- players.add(p);
-
- int Plvl = 0;
-
- if(character.length > 1 && m.isInt(character[1]))
- {
- Mining.add(p, Integer.valueOf(character[1]));
- Plvl += Integer.valueOf(character[1]);
- }
- if(character.length > 5 && m.isInt(character[5])){
- WoodCutting.add(p, Integer.valueOf(character[5]));
- Plvl += Integer.valueOf(character[5]);
- }
- if(character.length > 7 && m.isInt(character[7])){
- Repair.add(p, Integer.valueOf(character[7]));
- Plvl += Integer.valueOf(character[7]);
- }
- if(character.length > 8 && m.isInt(character[8])){
- Unarmed.add(p, Integer.valueOf(character[8]));
- Plvl += Integer.valueOf(character[8]);
- }
- if(character.length > 9 && m.isInt(character[9])){
- Herbalism.add(p, Integer.valueOf(character[9]));
- Plvl += Integer.valueOf(character[9]);
- }
- if(character.length > 10 && m.isInt(character[10])){
- Excavation.add(p, Integer.valueOf(character[10]));
- Plvl += Integer.valueOf(character[10]);
- }
- if(character.length > 11 && m.isInt(character[11])){
- Archery.add(p, Integer.valueOf(character[11]));
- Plvl += Integer.valueOf(character[11]);
- }
- if(character.length > 12 && m.isInt(character[12])){
- Swords.add(p, Integer.valueOf(character[12]));
- Plvl += Integer.valueOf(character[12]);
- }
- if(character.length > 13 && m.isInt(character[13])){
- Axes.add(p, Integer.valueOf(character[13]));
- Plvl += Integer.valueOf(character[13]);
- }
- if(character.length > 14 && m.isInt(character[14])){
- Acrobatics.add(p, Integer.valueOf(character[14]));
- Plvl += Integer.valueOf(character[14]);
- }
- if(character.length > 24 && m.isInt(character[24])){
- Taming.add(p, Integer.valueOf(character[24]));
- Plvl += Integer.valueOf(character[24]);
- }
- if(character.length > 34 && m.isInt(character[34]))
- {
- Fishing.add(p, Integer.valueOf(character[34]));
- Plvl += Integer.valueOf(character[34]);
- }
-
- PowerLevel.add(p, Plvl);
- }
- 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$
- }
- //Write the leader board files
- leaderWrite(Mining.inOrder(), SkillType.MINING); //$NON-NLS-1$
- leaderWrite(WoodCutting.inOrder(), SkillType.WOODCUTTING); //$NON-NLS-1$
- leaderWrite(Repair.inOrder(), SkillType.REPAIR); //$NON-NLS-1$
- leaderWrite(Unarmed.inOrder(), SkillType.UNARMED); //$NON-NLS-1$
- leaderWrite(Herbalism.inOrder(), SkillType.HERBALISM); //$NON-NLS-1$
- leaderWrite(Excavation.inOrder(), SkillType.EXCAVATION); //$NON-NLS-1$
- leaderWrite(Archery.inOrder(), SkillType.ARCHERY); //$NON-NLS-1$
- leaderWrite(Swords.inOrder(), SkillType.SWORDS); //$NON-NLS-1$
- leaderWrite(Axes.inOrder(), SkillType.AXES); //$NON-NLS-1$
- leaderWrite(Acrobatics.inOrder(), SkillType.ACROBATICS); //$NON-NLS-1$
- leaderWrite(Taming.inOrder(), SkillType.TAMING); //$NON-NLS-1$
- leaderWrite(Fishing.inOrder(), SkillType.FISHING); //$NON-NLS-1$
- leaderWrite(Alchemy.inOrder(), SkillType.ALCHEMY); //$NON-NLS-1$
- leaderWrite(Enchanting.inOrder(), SkillType.ENCHANTING); //$NON-NLS-1$
- leaderWrite(PowerLevel.inOrder(), SkillType.ALL); //$NON-NLS-1$
- }
- public static void leaderWrite(PlayerStat[] ps, SkillType skillType)
- {
- String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillType + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
- //CHECK IF THE FILE EXISTS
- File theDir = new File(theLocation);
- if(!theDir.exists())
- {
- //properties = new PropertiesFile(location);
- FileWriter writer = null;
- try {
- writer = new FileWriter(theLocation);
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while creating " + theLocation, e); //$NON-NLS-1$
- } finally {
- try {
- if (writer != null) {
- writer.close();
- }
- } catch (IOException e) {
- log.log(Level.SEVERE, "Exception while closing writer for " + theLocation, e); //$NON-NLS-1$
- }
- }
- } else {
- try {
- FileReader file = new FileReader(theLocation);
-
- //HERP
- BufferedReader in = new BufferedReader(file);
- StringBuilder writer = new StringBuilder();
-
- for(PlayerStat p : ps)
- {
- if(p.name.equals("$mcMMO_DummyInfo")) //$NON-NLS-1$
- continue;
- if(p.statVal == 0)
- continue;
- writer.append(p.name + ":" + p.statVal); //$NON-NLS-1$
- writer.append("\r\n"); //$NON-NLS-1$
- }
-
- in.close();
- //Write the new file
- FileWriter out = new FileWriter(theLocation);
- out.write(writer.toString());
- out.close();
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
- //Create/open the file
- //Loop through backward writing each player
- //Close the file
- }
-
- public static String[] retrieveInfo(String skillName, int pagenumber)
- {
- String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
- try {
- FileReader file = new FileReader(theLocation);
- BufferedReader in = new BufferedReader(file);
-
- int destination = (pagenumber - 1) * 10; //How many lines to skip through
- int x = 0; //how many lines we've gone through
- int y = 0; //going through the lines
- String line = ""; //$NON-NLS-1$
- String[] info = new String[10]; //what to return
- while((line = in.readLine()) != null && y < 10)
- {
- x++;
- if(x >= destination && y < 10){
- info[y] = line.toString();
- y++;
- }
- }
- in.close();
- return info;
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
- + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
- }
- return null; //Shouldn't get here
- }
- public static void updateLeaderboard(PlayerStat ps, SkillType skillType)
- {
- if(LoadProperties.useMySQL)
- return;
- String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillType + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
- try {
- //Open the file
- FileReader file = new FileReader(theLocation);
- BufferedReader in = new BufferedReader(file);
- StringBuilder writer = new StringBuilder();
- String line = ""; //$NON-NLS-1$
- Boolean inserted = false;
- //While not at the end of the file
- while((line = in.readLine()) != null)
- {
- //Insert the player into the line before it finds a smaller one
- if(Integer.valueOf(line.split(":")[1]) < ps.statVal && !inserted) //$NON-NLS-1$
- {
- writer.append(ps.name + ":" + ps.statVal).append("\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
- inserted = true;
- }
- //Write anything that isn't the player already in the file so we remove the duplicate
- if(!line.split(":")[0].equalsIgnoreCase(ps.name)) //$NON-NLS-1$
- {
- writer.append(line).append("\r\n"); //$NON-NLS-1$
- }
- }
-
- if(!inserted)
- {
- writer.append(ps.name + ":" + ps.statVal).append("\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- in.close();
- //Write the new file
- FileWriter out = new FileWriter(theLocation);
- out.write(writer.toString());
- out.close();
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerStat;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.datatypes.Tree;
+
+public class Leaderboard
+{
+ static String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users"; //$NON-NLS-1$
+ protected static final Logger log = Logger.getLogger("Minecraft"); //$NON-NLS-1$
+
+ /*
+ * Read from the file
+ */
+ public static void makeLeaderboards()
+ {
+ //Make Trees
+ Tree Mining = new Tree();
+ Tree WoodCutting = new Tree();
+ Tree Herbalism = new Tree();
+ Tree Excavation = new Tree();
+ Tree Acrobatics = new Tree();
+ Tree Repair = new Tree();
+ Tree Swords = new Tree();
+ Tree Axes = new Tree();
+ Tree Archery = new Tree();
+ Tree Unarmed = new Tree();
+ Tree Taming = new Tree();
+ Tree Fishing = new Tree();
+ Tree Enchanting = new Tree();
+ Tree Alchemy = new Tree();
+ Tree PowerLevel = new Tree();
+
+ //Add Data To Trees
+ try {
+ //Open the user file
+ FileReader file = new FileReader(location);
+ BufferedReader in = new BufferedReader(file);
+ String line = ""; //$NON-NLS-1$
+ ArrayList players = new ArrayList();
+ while((line = in.readLine()) != null)
+ {
+ String[] character = line.split(":"); //$NON-NLS-1$
+ String p = character[0];
+
+ //Prevent the same player from being added multiple times
+ if(players.contains(p))
+ continue;
+ else
+ players.add(p);
+
+ int Plvl = 0;
+
+ if(character.length > 1 && m.isInt(character[1]))
+ {
+ Mining.add(p, Integer.valueOf(character[1]));
+ Plvl += Integer.valueOf(character[1]);
+ }
+ if(character.length > 5 && m.isInt(character[5])){
+ WoodCutting.add(p, Integer.valueOf(character[5]));
+ Plvl += Integer.valueOf(character[5]);
+ }
+ if(character.length > 7 && m.isInt(character[7])){
+ Repair.add(p, Integer.valueOf(character[7]));
+ Plvl += Integer.valueOf(character[7]);
+ }
+ if(character.length > 8 && m.isInt(character[8])){
+ Unarmed.add(p, Integer.valueOf(character[8]));
+ Plvl += Integer.valueOf(character[8]);
+ }
+ if(character.length > 9 && m.isInt(character[9])){
+ Herbalism.add(p, Integer.valueOf(character[9]));
+ Plvl += Integer.valueOf(character[9]);
+ }
+ if(character.length > 10 && m.isInt(character[10])){
+ Excavation.add(p, Integer.valueOf(character[10]));
+ Plvl += Integer.valueOf(character[10]);
+ }
+ if(character.length > 11 && m.isInt(character[11])){
+ Archery.add(p, Integer.valueOf(character[11]));
+ Plvl += Integer.valueOf(character[11]);
+ }
+ if(character.length > 12 && m.isInt(character[12])){
+ Swords.add(p, Integer.valueOf(character[12]));
+ Plvl += Integer.valueOf(character[12]);
+ }
+ if(character.length > 13 && m.isInt(character[13])){
+ Axes.add(p, Integer.valueOf(character[13]));
+ Plvl += Integer.valueOf(character[13]);
+ }
+ if(character.length > 14 && m.isInt(character[14])){
+ Acrobatics.add(p, Integer.valueOf(character[14]));
+ Plvl += Integer.valueOf(character[14]);
+ }
+ if(character.length > 24 && m.isInt(character[24])){
+ Taming.add(p, Integer.valueOf(character[24]));
+ Plvl += Integer.valueOf(character[24]);
+ }
+ if(character.length > 34 && m.isInt(character[34]))
+ {
+ Fishing.add(p, Integer.valueOf(character[34]));
+ Plvl += Integer.valueOf(character[34]);
+ }
+
+ PowerLevel.add(p, Plvl);
+ }
+ 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$
+ }
+ //Write the leader board files
+ leaderWrite(Mining.inOrder(), SkillType.MINING); //$NON-NLS-1$
+ leaderWrite(WoodCutting.inOrder(), SkillType.WOODCUTTING); //$NON-NLS-1$
+ leaderWrite(Repair.inOrder(), SkillType.REPAIR); //$NON-NLS-1$
+ leaderWrite(Unarmed.inOrder(), SkillType.UNARMED); //$NON-NLS-1$
+ leaderWrite(Herbalism.inOrder(), SkillType.HERBALISM); //$NON-NLS-1$
+ leaderWrite(Excavation.inOrder(), SkillType.EXCAVATION); //$NON-NLS-1$
+ leaderWrite(Archery.inOrder(), SkillType.ARCHERY); //$NON-NLS-1$
+ leaderWrite(Swords.inOrder(), SkillType.SWORDS); //$NON-NLS-1$
+ leaderWrite(Axes.inOrder(), SkillType.AXES); //$NON-NLS-1$
+ leaderWrite(Acrobatics.inOrder(), SkillType.ACROBATICS); //$NON-NLS-1$
+ leaderWrite(Taming.inOrder(), SkillType.TAMING); //$NON-NLS-1$
+ leaderWrite(Fishing.inOrder(), SkillType.FISHING); //$NON-NLS-1$
+ leaderWrite(Alchemy.inOrder(), SkillType.ALCHEMY); //$NON-NLS-1$
+ leaderWrite(Enchanting.inOrder(), SkillType.ENCHANTING); //$NON-NLS-1$
+ leaderWrite(PowerLevel.inOrder(), SkillType.ALL); //$NON-NLS-1$
+ }
+ public static void leaderWrite(PlayerStat[] ps, SkillType skillType)
+ {
+ String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillType + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
+ //CHECK IF THE FILE EXISTS
+ File theDir = new File(theLocation);
+ if(!theDir.exists())
+ {
+ //properties = new PropertiesFile(location);
+ FileWriter writer = null;
+ try {
+ writer = new FileWriter(theLocation);
+ } catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while creating " + theLocation, e); //$NON-NLS-1$
+ } finally {
+ try {
+ if (writer != null) {
+ writer.close();
+ }
+ } catch (IOException e) {
+ log.log(Level.SEVERE, "Exception while closing writer for " + theLocation, e); //$NON-NLS-1$
+ }
+ }
+ } else {
+ try {
+ FileReader file = new FileReader(theLocation);
+
+ //HERP
+ BufferedReader in = new BufferedReader(file);
+ StringBuilder writer = new StringBuilder();
+
+ for(PlayerStat p : ps)
+ {
+ if(p.name.equals("$mcMMO_DummyInfo")) //$NON-NLS-1$
+ continue;
+ if(p.statVal == 0)
+ continue;
+ writer.append(p.name + ":" + p.statVal); //$NON-NLS-1$
+ writer.append("\r\n"); //$NON-NLS-1$
+ }
+
+ in.close();
+ //Write the new file
+ FileWriter out = new FileWriter(theLocation);
+ out.write(writer.toString());
+ out.close();
+ } catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ //Create/open the file
+ //Loop through backward writing each player
+ //Close the file
+ }
+
+ public static String[] retrieveInfo(String skillName, int pagenumber)
+ {
+ String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
+ try {
+ FileReader file = new FileReader(theLocation);
+ BufferedReader in = new BufferedReader(file);
+
+ int destination = (pagenumber - 1) * 10; //How many lines to skip through
+ int x = 0; //how many lines we've gone through
+ int y = 0; //going through the lines
+ String line = ""; //$NON-NLS-1$
+ String[] info = new String[10]; //what to return
+ while((line = in.readLine()) != null && y < 10)
+ {
+ x++;
+ if(x >= destination && y < 10){
+ info[y] = line.toString();
+ y++;
+ }
+ }
+ in.close();
+ return info;
+ } catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
+ + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
+ }
+ return null; //Shouldn't get here
+ }
+ public static void updateLeaderboard(PlayerStat ps, SkillType skillType)
+ {
+ if(LoadProperties.useMySQL)
+ return;
+ String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillType + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
+ try {
+ //Open the file
+ FileReader file = new FileReader(theLocation);
+ BufferedReader in = new BufferedReader(file);
+ StringBuilder writer = new StringBuilder();
+ String line = ""; //$NON-NLS-1$
+ Boolean inserted = false;
+ //While not at the end of the file
+ while((line = in.readLine()) != null)
+ {
+ //Insert the player into the line before it finds a smaller one
+ if(Integer.valueOf(line.split(":")[1]) < ps.statVal && !inserted) //$NON-NLS-1$
+ {
+ writer.append(ps.name + ":" + ps.statVal).append("\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ inserted = true;
+ }
+ //Write anything that isn't the player already in the file so we remove the duplicate
+ if(!line.split(":")[0].equalsIgnoreCase(ps.name)) //$NON-NLS-1$
+ {
+ writer.append(line).append("\r\n"); //$NON-NLS-1$
+ }
+ }
+
+ if(!inserted)
+ {
+ writer.append(ps.name + ":" + ps.statVal).append("\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ in.close();
+ //Write the new file
+ FileWriter out = new FileWriter(theLocation);
+ out.write(writer.toString());
+ out.close();
+ } catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+}
diff --git a/src/com/gmail/nossr50/Users.java b/src/main/java/com/gmail/nossr50/Users.java
similarity index 96%
rename from src/com/gmail/nossr50/Users.java
rename to src/main/java/com/gmail/nossr50/Users.java
index 772798085..8ac66c642 100644
--- a/src/com/gmail/nossr50/Users.java
+++ b/src/main/java/com/gmail/nossr50/Users.java
@@ -1,112 +1,112 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50;
-
-import java.io.*;
-import java.util.Properties;
-import java.util.logging.Logger;
-import java.util.HashMap;
-
-import org.bukkit.entity.*;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-
-
-public class Users {
- private static volatile Users instance;
- protected static final Logger log = Logger.getLogger("Minecraft");
- String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users";
- String directory = "plugins/mcMMO/FlatFileStuff/";
- String directoryb = "plugins/mcMMO/FlatFileStuff/Leaderboards/";
-
- //public static ArrayList players;
- public static HashMap players = new HashMap();
- private Properties properties = new Properties();
-
- //To load
- public void load() throws IOException {
- properties.load(new FileInputStream(location));
- }
- //To save
- public void save()
- {
- try
- {
- properties.store(new FileOutputStream(location), null);
- }catch(IOException ex) {
- }
- }
-
- public void loadUsers()
- {
- new File(directory).mkdir();
- new File(directoryb).mkdir();
- File theDir = new File(location);
- if(!theDir.exists())
- {
- try {
- FileWriter writer = new FileWriter(theDir);
- writer.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
-
-
- public static void addUser(Player player)
- {
- players.put(player, new PlayerProfile(player));
- }
- public static void clearUsers()
- {
- players.clear();
- }
- public static HashMap getProfiles(){
- return players;
- }
-
- public static void removeUser(Player player)
- {
- PlayerProfile PP = Users.getProfile(player);
-
- if(PP != null)
- {
- PP.save();
- if(players.containsKey(player))
- players.remove(player);
- }
- }
-
- public static PlayerProfile getProfile(Player player){
- if(players.get(player) != null)
- return players.get(player);
- else
- {
- players.put(player, new PlayerProfile(player));
- return players.get(player);
- }
- }
-
- public static Users getInstance() {
- if (instance == null) {
- instance = new Users();
- }
- return instance;
- }
-
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50;
+
+import java.io.*;
+import java.util.Properties;
+import java.util.logging.Logger;
+import java.util.HashMap;
+
+import org.bukkit.entity.*;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+
+
+public class Users {
+ private static volatile Users instance;
+ protected static final Logger log = Logger.getLogger("Minecraft");
+ String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users";
+ String directory = "plugins/mcMMO/FlatFileStuff/";
+ String directoryb = "plugins/mcMMO/FlatFileStuff/Leaderboards/";
+
+ //public static ArrayList players;
+ public static HashMap players = new HashMap();
+ private Properties properties = new Properties();
+
+ //To load
+ public void load() throws IOException {
+ properties.load(new FileInputStream(location));
+ }
+ //To save
+ public void save()
+ {
+ try
+ {
+ properties.store(new FileOutputStream(location), null);
+ }catch(IOException ex) {
+ }
+ }
+
+ public void loadUsers()
+ {
+ new File(directory).mkdir();
+ new File(directoryb).mkdir();
+ File theDir = new File(location);
+ if(!theDir.exists())
+ {
+ try {
+ FileWriter writer = new FileWriter(theDir);
+ writer.close();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+ public static void addUser(Player player)
+ {
+ players.put(player, new PlayerProfile(player));
+ }
+ public static void clearUsers()
+ {
+ players.clear();
+ }
+ public static HashMap getProfiles(){
+ return players;
+ }
+
+ public static void removeUser(Player player)
+ {
+ PlayerProfile PP = Users.getProfile(player);
+
+ if(PP != null)
+ {
+ PP.save();
+ if(players.containsKey(player))
+ players.remove(player);
+ }
+ }
+
+ public static PlayerProfile getProfile(Player player){
+ if(players.get(player) != null)
+ return players.get(player);
+ else
+ {
+ players.put(player, new PlayerProfile(player));
+ return players.get(player);
+ }
+ }
+
+ public static Users getInstance() {
+ if (instance == null) {
+ instance = new Users();
+ }
+ return instance;
+ }
+
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/commands/general/AddxpCommand.java b/src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/general/AddxpCommand.java
rename to src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java
index 07be75230..77fd35ddb 100644
--- a/src/com/gmail/nossr50/commands/general/AddxpCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/general/AddxpCommand.java
@@ -1,86 +1,86 @@
-package com.gmail.nossr50.commands.general;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.Skills;
-
-public class AddxpCommand implements CommandExecutor {
- private final mcMMO plugin;
-
- public AddxpCommand(mcMMO instance) {
- this.plugin = instance;
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!mcPermissions.permissionsEnabled) {
- sender.sendMessage("This command requires permissions.");
- return true;
- }
-
- if (!LoadProperties.addxpEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- if (args.length < 2) {
- // No console aliasing yet
- // System.out.println("Usage is /"+LoadProperties.addxp+" playername skillname xp");
- System.out.println("Usage is /addxp playername skillname xp");
- return true;
- } else if (args.length == 3) {
- if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
- int newvalue = Integer.valueOf(args[2]);
- Users.getProfile(plugin.getServer().getPlayer(args[0])).addXP(Skills.getSkillType(args[1]), newvalue, plugin.getServer().getPlayer(args[0]));
- plugin.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "Experience granted!");
- System.out.println(args[1] + " has been modified for " + plugin.getServer().getPlayer(args[0]).getName() + ".");
- Skills.XpCheckAll(plugin.getServer().getPlayer(args[0]));
- }
- } else {
- // No console aliasing yet
- // System.out.println("Usage is /"+LoadProperties.addxp+" playername skillname xp");
- System.out.println("Usage is /addxp playername skillname xp");
- }
- return true;
- }
-
- Player player = (Player) sender;
-
- if (!mcPermissions.getInstance().mmoedit(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
- if (args.length < 2) {
- player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.addxp + " playername skillname xp");
- return true;
- }
- if (args.length == 3) {
- if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
- int newvalue = Integer.valueOf(args[2]);
- Users.getProfile(plugin.getServer().getPlayer(args[0])).addXP(Skills.getSkillType(args[1]), newvalue, plugin.getServer().getPlayer(args[0]));
- plugin.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "Experience granted!");
- player.sendMessage(ChatColor.RED + args[1] + " has been modified.");
- Skills.XpCheckAll(plugin.getServer().getPlayer(args[0]));
- }
- } else if (args.length == 2 && m.isInt(args[1]) && Skills.isSkill(args[0])) {
- int newvalue = Integer.valueOf(args[1]);
- Users.getProfile(player).addXP(Skills.getSkillType(args[0]), newvalue, player);
- player.sendMessage(ChatColor.RED + args[0] + " has been modified.");
- } else {
- player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.addxp + " playername skillname xp");
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class AddxpCommand implements CommandExecutor {
+ private final mcMMO plugin;
+
+ public AddxpCommand(mcMMO instance) {
+ this.plugin = instance;
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!mcPermissions.permissionsEnabled) {
+ sender.sendMessage("This command requires permissions.");
+ return true;
+ }
+
+ if (!LoadProperties.addxpEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ if (args.length < 2) {
+ // No console aliasing yet
+ // System.out.println("Usage is /"+LoadProperties.addxp+" playername skillname xp");
+ System.out.println("Usage is /addxp playername skillname xp");
+ return true;
+ } else if (args.length == 3) {
+ if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
+ int newvalue = Integer.valueOf(args[2]);
+ Users.getProfile(plugin.getServer().getPlayer(args[0])).addXP(Skills.getSkillType(args[1]), newvalue, plugin.getServer().getPlayer(args[0]));
+ plugin.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "Experience granted!");
+ System.out.println(args[1] + " has been modified for " + plugin.getServer().getPlayer(args[0]).getName() + ".");
+ Skills.XpCheckAll(plugin.getServer().getPlayer(args[0]));
+ }
+ } else {
+ // No console aliasing yet
+ // System.out.println("Usage is /"+LoadProperties.addxp+" playername skillname xp");
+ System.out.println("Usage is /addxp playername skillname xp");
+ }
+ return true;
+ }
+
+ Player player = (Player) sender;
+
+ if (!mcPermissions.getInstance().mmoedit(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+ if (args.length < 2) {
+ player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.addxp + " playername skillname xp");
+ return true;
+ }
+ if (args.length == 3) {
+ if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
+ int newvalue = Integer.valueOf(args[2]);
+ Users.getProfile(plugin.getServer().getPlayer(args[0])).addXP(Skills.getSkillType(args[1]), newvalue, plugin.getServer().getPlayer(args[0]));
+ plugin.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "Experience granted!");
+ player.sendMessage(ChatColor.RED + args[1] + " has been modified.");
+ Skills.XpCheckAll(plugin.getServer().getPlayer(args[0]));
+ }
+ } else if (args.length == 2 && m.isInt(args[1]) && Skills.isSkill(args[0])) {
+ int newvalue = Integer.valueOf(args[1]);
+ Users.getProfile(player).addXP(Skills.getSkillType(args[0]), newvalue, player);
+ player.sendMessage(ChatColor.RED + args[0] + " has been modified.");
+ } else {
+ player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.addxp + " playername skillname xp");
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/general/ClearmyspawnCommand.java b/src/main/java/com/gmail/nossr50/commands/general/ClearmyspawnCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/general/ClearmyspawnCommand.java
rename to src/main/java/com/gmail/nossr50/commands/general/ClearmyspawnCommand.java
index 49739c2f9..61100860a 100644
--- a/src/com/gmail/nossr50/commands/general/ClearmyspawnCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/general/ClearmyspawnCommand.java
@@ -1,46 +1,46 @@
-package com.gmail.nossr50.commands.general;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class ClearmyspawnCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.clearmyspawnEnable || !LoadProperties.enableMySpawn) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().mySpawn(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- double x = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getX();
- double y = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getY();
- double z = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getZ();
- String worldname = Bukkit.getServer().getWorlds().get(0).getName();
- PP.setMySpawn(x, y, z, worldname);
- player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnCleared"));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class ClearmyspawnCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.clearmyspawnEnable || !LoadProperties.enableMySpawn) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().mySpawn(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ double x = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getX();
+ double y = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getY();
+ double z = Bukkit.getServer().getWorlds().get(0).getSpawnLocation().getZ();
+ String worldname = Bukkit.getServer().getWorlds().get(0).getName();
+ PP.setMySpawn(x, y, z, worldname);
+ player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnCleared"));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/general/MmoeditCommand.java b/src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/general/MmoeditCommand.java
rename to src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java
index de8abca25..f715b93ff 100644
--- a/src/com/gmail/nossr50/commands/general/MmoeditCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/general/MmoeditCommand.java
@@ -1,83 +1,83 @@
-package com.gmail.nossr50.commands.general;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.Skills;
-
-public class MmoeditCommand implements CommandExecutor {
- private final mcMMO plugin;
-
- public MmoeditCommand(mcMMO instance) {
- this.plugin = instance;
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!mcPermissions.permissionsEnabled) {
- sender.sendMessage("This command requires permissions.");
- return true;
- }
-
- if (!LoadProperties.mmoeditEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- if (args.length < 2) {
- System.out.println("Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
- return true;
- } else if (args.length == 3) {
- if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
- int newvalue = Integer.valueOf(args[2]);
- Users.getProfile(plugin.getServer().getPlayer(args[0])).modifyskill(Skills.getSkillType(args[1]), newvalue);
- System.out.println(args[1] + " has been modified for " + plugin.getServer().getPlayer(args[0]).getName() + ".");
- }
- } else {
- System.out.println("Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
- }
-
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().mmoedit(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
- if (args.length < 2) {
- player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
- return true;
- }
- if (args.length == 3) {
- if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
- int newvalue = Integer.valueOf(args[2]);
- Users.getProfile(plugin.getServer().getPlayer(args[0])).modifyskill(Skills.getSkillType(args[1]), newvalue);
- player.sendMessage(ChatColor.RED + args[1] + " has been modified.");
- }
- } else if (args.length == 2) {
- if (m.isInt(args[1]) && Skills.isSkill(args[0])) {
- int newvalue = Integer.valueOf(args[1]);
- PP.modifyskill(Skills.getSkillType(args[0]), newvalue);
- player.sendMessage(ChatColor.RED + args[0] + " has been modified.");
- }
- } else {
- player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class MmoeditCommand implements CommandExecutor {
+ private final mcMMO plugin;
+
+ public MmoeditCommand(mcMMO instance) {
+ this.plugin = instance;
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!mcPermissions.permissionsEnabled) {
+ sender.sendMessage("This command requires permissions.");
+ return true;
+ }
+
+ if (!LoadProperties.mmoeditEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ if (args.length < 2) {
+ System.out.println("Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
+ return true;
+ } else if (args.length == 3) {
+ if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
+ int newvalue = Integer.valueOf(args[2]);
+ Users.getProfile(plugin.getServer().getPlayer(args[0])).modifyskill(Skills.getSkillType(args[1]), newvalue);
+ System.out.println(args[1] + " has been modified for " + plugin.getServer().getPlayer(args[0]).getName() + ".");
+ }
+ } else {
+ System.out.println("Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
+ }
+
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().mmoedit(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+ if (args.length < 2) {
+ player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
+ return true;
+ }
+ if (args.length == 3) {
+ if ((plugin.getServer().getPlayer(args[0]) != null) && m.isInt(args[2]) && Skills.isSkill(args[1])) {
+ int newvalue = Integer.valueOf(args[2]);
+ Users.getProfile(plugin.getServer().getPlayer(args[0])).modifyskill(Skills.getSkillType(args[1]), newvalue);
+ player.sendMessage(ChatColor.RED + args[1] + " has been modified.");
+ }
+ } else if (args.length == 2) {
+ if (m.isInt(args[1]) && Skills.isSkill(args[0])) {
+ int newvalue = Integer.valueOf(args[1]);
+ PP.modifyskill(Skills.getSkillType(args[0]), newvalue);
+ player.sendMessage(ChatColor.RED + args[0] + " has been modified.");
+ }
+ } else {
+ player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.mmoedit + " playername skillname newvalue");
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/general/MmoupdateCommand.java b/src/main/java/com/gmail/nossr50/commands/general/MmoupdateCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/general/MmoupdateCommand.java
rename to src/main/java/com/gmail/nossr50/commands/general/MmoupdateCommand.java
index ee92648e6..5685b8614 100644
--- a/src/com/gmail/nossr50/commands/general/MmoupdateCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/general/MmoupdateCommand.java
@@ -1,39 +1,39 @@
-package com.gmail.nossr50.commands.general;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class MmoupdateCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
-
- if (!mcPermissions.getInstance().admin(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
- player.sendMessage(ChatColor.GRAY + "Starting conversion...");
- Users.clearUsers();
- m.convertToMySQL();
- for (Player x : Bukkit.getServer().getOnlinePlayers()) {
- Users.addUser(x);
- }
- player.sendMessage(ChatColor.GREEN + "Conversion finished!");
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class MmoupdateCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+
+ if (!mcPermissions.getInstance().admin(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+ player.sendMessage(ChatColor.GRAY + "Starting conversion...");
+ Users.clearUsers();
+ m.convertToMySQL();
+ for (Player x : Bukkit.getServer().getOnlinePlayers()) {
+ Users.addUser(x);
+ }
+ player.sendMessage(ChatColor.GREEN + "Conversion finished!");
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/general/MyspawnCommand.java b/src/main/java/com/gmail/nossr50/commands/general/MyspawnCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/general/MyspawnCommand.java
rename to src/main/java/com/gmail/nossr50/commands/general/MyspawnCommand.java
index 6142e2fb1..9c5565ec8 100644
--- a/src/com/gmail/nossr50/commands/general/MyspawnCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/general/MyspawnCommand.java
@@ -1,58 +1,58 @@
-package com.gmail.nossr50.commands.general;
-
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class MyspawnCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.myspawnEnable || !LoadProperties.enableMySpawn) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().mySpawn(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
- if (System.currentTimeMillis() < (PP.getMySpawnATS() * 1000) + 3600000) {
- long x = (((PP.getMySpawnATS() * 1000) + 3600000) - System.currentTimeMillis());
- int y = (int) (x / 60000);
- int z = (int) ((x / 1000) - (y * 60));
- player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnTimeNotice", new Object[] { y, z }));
- return true;
- }
- PP.setMySpawnATS(System.currentTimeMillis());
- if (PP.getMySpawn(player) != null) {
- Location mySpawn = PP.getMySpawn(player);
-
- if (mySpawn != null) {
- // It's done twice because it acts oddly when you are in another world
- player.teleport(mySpawn);
- player.teleport(mySpawn);
- }
- } else {
- player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnNotExist"));
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class MyspawnCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.myspawnEnable || !LoadProperties.enableMySpawn) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().mySpawn(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+ if (System.currentTimeMillis() < (PP.getMySpawnATS() * 1000) + 3600000) {
+ long x = (((PP.getMySpawnATS() * 1000) + 3600000) - System.currentTimeMillis());
+ int y = (int) (x / 60000);
+ int z = (int) ((x / 1000) - (y * 60));
+ player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnTimeNotice", new Object[] { y, z }));
+ return true;
+ }
+ PP.setMySpawnATS(System.currentTimeMillis());
+ if (PP.getMySpawn(player) != null) {
+ Location mySpawn = PP.getMySpawn(player);
+
+ if (mySpawn != null) {
+ // It's done twice because it acts oddly when you are in another world
+ player.teleport(mySpawn);
+ player.teleport(mySpawn);
+ }
+ } else {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.MyspawnNotExist"));
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/general/StatsCommand.java b/src/main/java/com/gmail/nossr50/commands/general/StatsCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/general/StatsCommand.java
rename to src/main/java/com/gmail/nossr50/commands/general/StatsCommand.java
index 65b1f7e9e..9da733969 100644
--- a/src/com/gmail/nossr50/commands/general/StatsCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/general/StatsCommand.java
@@ -1,85 +1,85 @@
-package com.gmail.nossr50.commands.general;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.Skills;
-
-public class StatsCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.statsEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- player.sendMessage(mcLocale.getString("mcPlayerListener.YourStats"));
-
- if (mcPermissions.getEnabled())
- player.sendMessage(mcLocale.getString("mcPlayerListener.NoSkillNote"));
-
- ChatColor header = ChatColor.GOLD;
-
- if (Skills.hasGatheringSkills(player)) {
- player.sendMessage(header + "-=GATHERING SKILLS=-");
- if (mcPermissions.getInstance().excavation(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PP.getSkillLevel(SkillType.EXCAVATION), PP.getSkillXpLevel(SkillType.EXCAVATION), PP.getXpToLevel(SkillType.EXCAVATION)));
- if (mcPermissions.getInstance().fishing(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.FishingSkill"), PP.getSkillLevel(SkillType.FISHING), PP.getSkillXpLevel(SkillType.FISHING), PP.getXpToLevel(SkillType.FISHING)));
- if (mcPermissions.getInstance().herbalism(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM)));
- if (mcPermissions.getInstance().mining(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PP.getSkillLevel(SkillType.MINING), PP.getSkillXpLevel(SkillType.MINING), PP.getXpToLevel(SkillType.MINING)));
- if (mcPermissions.getInstance().woodcutting(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PP.getSkillLevel(SkillType.WOODCUTTING), PP.getSkillXpLevel(SkillType.WOODCUTTING), PP.getXpToLevel(SkillType.WOODCUTTING)));
- }
- if (Skills.hasCombatSkills(player)) {
- player.sendMessage(header + "-=COMBAT SKILLS=-");
- if (mcPermissions.getInstance().axes(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PP.getSkillLevel(SkillType.AXES), PP.getSkillXpLevel(SkillType.AXES), PP.getXpToLevel(SkillType.AXES)));
- if (mcPermissions.getInstance().archery(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PP.getSkillLevel(SkillType.ARCHERY), PP.getSkillXpLevel(SkillType.ARCHERY), PP.getXpToLevel(SkillType.ARCHERY)));
- // if(mcPermissions.getInstance().sorcery(player))
- // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PP.getSkill("sorcery"), PP.getSkill("sorceryXP"), PP.getXpToLevel("excavation")));
- if (mcPermissions.getInstance().swords(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PP.getSkillLevel(SkillType.SWORDS), PP.getSkillXpLevel(SkillType.SWORDS), PP.getXpToLevel(SkillType.SWORDS)));
- if (mcPermissions.getInstance().taming(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PP.getSkillLevel(SkillType.TAMING), PP.getSkillXpLevel(SkillType.TAMING), PP.getXpToLevel(SkillType.TAMING)));
- if (mcPermissions.getInstance().unarmed(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PP.getSkillLevel(SkillType.UNARMED), PP.getSkillXpLevel(SkillType.UNARMED), PP.getXpToLevel(SkillType.UNARMED)));
- }
-
- if (Skills.hasMiscSkills(player)) {
- player.sendMessage(header + "-=MISC SKILLS=-");
- if (mcPermissions.getInstance().acrobatics(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PP.getSkillLevel(SkillType.ACROBATICS), PP.getSkillXpLevel(SkillType.ACROBATICS), PP.getXpToLevel(SkillType.ACROBATICS)));
- // if(mcPermissions.getInstance().alchemy(player))
- // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AlchemySkill"), PP.getSkillLevel(SkillType.ALCHEMY), PP.getSkillXpLevel(SkillType.ALCHEMY), PP.getXpToLevel(SkillType.ALCHEMY)));
- // if(mcPermissions.getInstance().enchanting(player))
- // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.EnchantingSkill"), PP.getSkillLevel(SkillType.ENCHANTING), PP.getSkillXpLevel(SkillType.ENCHANTING), PP.getXpToLevel(SkillType.ENCHANTING)));
- if (mcPermissions.getInstance().repair(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PP.getSkillLevel(SkillType.REPAIR), PP.getSkillXpLevel(SkillType.REPAIR), PP.getXpToLevel(SkillType.REPAIR)));
- }
- player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") + ChatColor.GREEN + (m.getPowerLevel(player)));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class StatsCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.statsEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ player.sendMessage(mcLocale.getString("mcPlayerListener.YourStats"));
+
+ if (mcPermissions.getEnabled())
+ player.sendMessage(mcLocale.getString("mcPlayerListener.NoSkillNote"));
+
+ ChatColor header = ChatColor.GOLD;
+
+ if (Skills.hasGatheringSkills(player)) {
+ player.sendMessage(header + "-=GATHERING SKILLS=-");
+ if (mcPermissions.getInstance().excavation(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PP.getSkillLevel(SkillType.EXCAVATION), PP.getSkillXpLevel(SkillType.EXCAVATION), PP.getXpToLevel(SkillType.EXCAVATION)));
+ if (mcPermissions.getInstance().fishing(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.FishingSkill"), PP.getSkillLevel(SkillType.FISHING), PP.getSkillXpLevel(SkillType.FISHING), PP.getXpToLevel(SkillType.FISHING)));
+ if (mcPermissions.getInstance().herbalism(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM)));
+ if (mcPermissions.getInstance().mining(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PP.getSkillLevel(SkillType.MINING), PP.getSkillXpLevel(SkillType.MINING), PP.getXpToLevel(SkillType.MINING)));
+ if (mcPermissions.getInstance().woodcutting(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PP.getSkillLevel(SkillType.WOODCUTTING), PP.getSkillXpLevel(SkillType.WOODCUTTING), PP.getXpToLevel(SkillType.WOODCUTTING)));
+ }
+ if (Skills.hasCombatSkills(player)) {
+ player.sendMessage(header + "-=COMBAT SKILLS=-");
+ if (mcPermissions.getInstance().axes(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PP.getSkillLevel(SkillType.AXES), PP.getSkillXpLevel(SkillType.AXES), PP.getXpToLevel(SkillType.AXES)));
+ if (mcPermissions.getInstance().archery(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PP.getSkillLevel(SkillType.ARCHERY), PP.getSkillXpLevel(SkillType.ARCHERY), PP.getXpToLevel(SkillType.ARCHERY)));
+ // if(mcPermissions.getInstance().sorcery(player))
+ // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PP.getSkill("sorcery"), PP.getSkill("sorceryXP"), PP.getXpToLevel("excavation")));
+ if (mcPermissions.getInstance().swords(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PP.getSkillLevel(SkillType.SWORDS), PP.getSkillXpLevel(SkillType.SWORDS), PP.getXpToLevel(SkillType.SWORDS)));
+ if (mcPermissions.getInstance().taming(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PP.getSkillLevel(SkillType.TAMING), PP.getSkillXpLevel(SkillType.TAMING), PP.getXpToLevel(SkillType.TAMING)));
+ if (mcPermissions.getInstance().unarmed(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PP.getSkillLevel(SkillType.UNARMED), PP.getSkillXpLevel(SkillType.UNARMED), PP.getXpToLevel(SkillType.UNARMED)));
+ }
+
+ if (Skills.hasMiscSkills(player)) {
+ player.sendMessage(header + "-=MISC SKILLS=-");
+ if (mcPermissions.getInstance().acrobatics(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PP.getSkillLevel(SkillType.ACROBATICS), PP.getSkillXpLevel(SkillType.ACROBATICS), PP.getXpToLevel(SkillType.ACROBATICS)));
+ // if(mcPermissions.getInstance().alchemy(player))
+ // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AlchemySkill"), PP.getSkillLevel(SkillType.ALCHEMY), PP.getSkillXpLevel(SkillType.ALCHEMY), PP.getXpToLevel(SkillType.ALCHEMY)));
+ // if(mcPermissions.getInstance().enchanting(player))
+ // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.EnchantingSkill"), PP.getSkillLevel(SkillType.ENCHANTING), PP.getSkillXpLevel(SkillType.ENCHANTING), PP.getXpToLevel(SkillType.ENCHANTING)));
+ if (mcPermissions.getInstance().repair(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PP.getSkillLevel(SkillType.REPAIR), PP.getSkillXpLevel(SkillType.REPAIR), PP.getXpToLevel(SkillType.REPAIR)));
+ }
+ player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") + ChatColor.GREEN + (m.getPowerLevel(player)));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/general/WhoisCommand.java b/src/main/java/com/gmail/nossr50/commands/general/WhoisCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/general/WhoisCommand.java
rename to src/main/java/com/gmail/nossr50/commands/general/WhoisCommand.java
index 854125a60..413055beb 100644
--- a/src/com/gmail/nossr50/commands/general/WhoisCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/general/WhoisCommand.java
@@ -1,98 +1,98 @@
-package com.gmail.nossr50.commands.general;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.Skills;
-
-public class WhoisCommand implements CommandExecutor {
- private final mcMMO plugin;
-
- public WhoisCommand(mcMMO instance) {
- this.plugin = instance;
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.whoisEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- Player player = (Player) sender;
-
- if (!mcPermissions.getInstance().whois(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- if (args.length < 1) {
- player.sendMessage(ChatColor.RED + "Proper usage is /" + LoadProperties.whois + " ");
- return true;
- }
- // if split[1] is a player
- if (plugin.getServer().getPlayer(args[0]) != null) {
- Player target = plugin.getServer().getPlayer(args[0]);
- PlayerProfile PPt = Users.getProfile(target);
-
- player.sendMessage(ChatColor.GREEN + "~~WHOIS RESULTS~~");
- player.sendMessage(target.getName());
- if (PPt.inParty())
- player.sendMessage("Party: " + PPt.getParty());
- player.sendMessage("Health: " + target.getHealth() + ChatColor.GRAY + " (20 is full health)");
- player.sendMessage("OP: " + target.isOp());
- player.sendMessage(ChatColor.GREEN + "mcMMO Stats for " + ChatColor.YELLOW + target.getName());
-
- player.sendMessage(ChatColor.GOLD + "-=GATHERING SKILLS=-");
- if (mcPermissions.getInstance().excavation(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PPt.getSkillLevel(SkillType.EXCAVATION), PPt.getSkillXpLevel(SkillType.EXCAVATION), PPt.getXpToLevel(SkillType.EXCAVATION)));
- if (mcPermissions.getInstance().fishing(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.FishingSkill"), PPt.getSkillLevel(SkillType.FISHING), PPt.getSkillXpLevel(SkillType.FISHING), PPt.getXpToLevel(SkillType.FISHING)));
- if (mcPermissions.getInstance().herbalism(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PPt.getSkillLevel(SkillType.HERBALISM), PPt.getSkillXpLevel(SkillType.HERBALISM), PPt.getXpToLevel(SkillType.HERBALISM)));
- if (mcPermissions.getInstance().mining(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PPt.getSkillLevel(SkillType.MINING), PPt.getSkillXpLevel(SkillType.MINING), PPt.getXpToLevel(SkillType.MINING)));
- if (mcPermissions.getInstance().woodcutting(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PPt.getSkillLevel(SkillType.WOODCUTTING), PPt.getSkillXpLevel(SkillType.WOODCUTTING), PPt.getXpToLevel(SkillType.WOODCUTTING)));
-
- player.sendMessage(ChatColor.GOLD + "-=COMBAT SKILLS=-");
- if (mcPermissions.getInstance().axes(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PPt.getSkillLevel(SkillType.AXES), PPt.getSkillXpLevel(SkillType.AXES), PPt.getXpToLevel(SkillType.AXES)));
- if (mcPermissions.getInstance().archery(player))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PPt.getSkillLevel(SkillType.ARCHERY), PPt.getSkillXpLevel(SkillType.ARCHERY), PPt.getXpToLevel(SkillType.ARCHERY)));
- // if(mcPermissions.getInstance().sorcery(target))
- // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PPt.getSkill("sorcery"), PPt.getSkill("sorceryXP"), PPt.getXpToLevel("excavation")));
- if (mcPermissions.getInstance().swords(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PPt.getSkillLevel(SkillType.SWORDS), PPt.getSkillXpLevel(SkillType.SWORDS), PPt.getXpToLevel(SkillType.SWORDS)));
- if (mcPermissions.getInstance().taming(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PPt.getSkillLevel(SkillType.TAMING), PPt.getSkillXpLevel(SkillType.TAMING), PPt.getXpToLevel(SkillType.TAMING)));
- if (mcPermissions.getInstance().unarmed(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PPt.getSkillLevel(SkillType.UNARMED), PPt.getSkillXpLevel(SkillType.UNARMED), PPt.getXpToLevel(SkillType.UNARMED)));
-
- player.sendMessage(ChatColor.GOLD + "-=MISC SKILLS=-");
- if (mcPermissions.getInstance().acrobatics(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PPt.getSkillLevel(SkillType.ACROBATICS), PPt.getSkillXpLevel(SkillType.ACROBATICS), PPt.getXpToLevel(SkillType.ACROBATICS)));
- // if(mcPermissions.getInstance().alchemy(target))
- // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AlchemySkill"), PPt.getSkillLevel(SkillType.ALCHEMY), PPt.getSkillXpLevel(SkillType.ALCHEMY), PPt.getXpToLevel(SkillType.ALCHEMY)));
- // if(mcPermissions.getInstance().enchanting(target))
- // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.EnchantingSkill"), PPt.getSkillLevel(SkillType.ENCHANTING), PPt.getSkillXpLevel(SkillType.ENCHANTING), PPt.getXpToLevel(SkillType.ENCHANTING)));
- if (mcPermissions.getInstance().repair(target))
- player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PPt.getSkillLevel(SkillType.REPAIR), PPt.getSkillXpLevel(SkillType.REPAIR), PPt.getXpToLevel(SkillType.REPAIR)));
-
- player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") + ChatColor.GREEN + (m.getPowerLevel(target)));
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class WhoisCommand implements CommandExecutor {
+ private final mcMMO plugin;
+
+ public WhoisCommand(mcMMO instance) {
+ this.plugin = instance;
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.whoisEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+
+ if (!mcPermissions.getInstance().whois(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ if (args.length < 1) {
+ player.sendMessage(ChatColor.RED + "Proper usage is /" + LoadProperties.whois + " ");
+ return true;
+ }
+ // if split[1] is a player
+ if (plugin.getServer().getPlayer(args[0]) != null) {
+ Player target = plugin.getServer().getPlayer(args[0]);
+ PlayerProfile PPt = Users.getProfile(target);
+
+ player.sendMessage(ChatColor.GREEN + "~~WHOIS RESULTS~~");
+ player.sendMessage(target.getName());
+ if (PPt.inParty())
+ player.sendMessage("Party: " + PPt.getParty());
+ player.sendMessage("Health: " + target.getHealth() + ChatColor.GRAY + " (20 is full health)");
+ player.sendMessage("OP: " + target.isOp());
+ player.sendMessage(ChatColor.GREEN + "mcMMO Stats for " + ChatColor.YELLOW + target.getName());
+
+ player.sendMessage(ChatColor.GOLD + "-=GATHERING SKILLS=-");
+ if (mcPermissions.getInstance().excavation(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ExcavationSkill"), PPt.getSkillLevel(SkillType.EXCAVATION), PPt.getSkillXpLevel(SkillType.EXCAVATION), PPt.getXpToLevel(SkillType.EXCAVATION)));
+ if (mcPermissions.getInstance().fishing(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.FishingSkill"), PPt.getSkillLevel(SkillType.FISHING), PPt.getSkillXpLevel(SkillType.FISHING), PPt.getXpToLevel(SkillType.FISHING)));
+ if (mcPermissions.getInstance().herbalism(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.HerbalismSkill"), PPt.getSkillLevel(SkillType.HERBALISM), PPt.getSkillXpLevel(SkillType.HERBALISM), PPt.getXpToLevel(SkillType.HERBALISM)));
+ if (mcPermissions.getInstance().mining(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.MiningSkill"), PPt.getSkillLevel(SkillType.MINING), PPt.getSkillXpLevel(SkillType.MINING), PPt.getXpToLevel(SkillType.MINING)));
+ if (mcPermissions.getInstance().woodcutting(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.WoodcuttingSkill"), PPt.getSkillLevel(SkillType.WOODCUTTING), PPt.getSkillXpLevel(SkillType.WOODCUTTING), PPt.getXpToLevel(SkillType.WOODCUTTING)));
+
+ player.sendMessage(ChatColor.GOLD + "-=COMBAT SKILLS=-");
+ if (mcPermissions.getInstance().axes(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AxesSkill"), PPt.getSkillLevel(SkillType.AXES), PPt.getSkillXpLevel(SkillType.AXES), PPt.getXpToLevel(SkillType.AXES)));
+ if (mcPermissions.getInstance().archery(player))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.ArcherySkill"), PPt.getSkillLevel(SkillType.ARCHERY), PPt.getSkillXpLevel(SkillType.ARCHERY), PPt.getXpToLevel(SkillType.ARCHERY)));
+ // if(mcPermissions.getInstance().sorcery(target))
+ // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SorcerySkill"), PPt.getSkill("sorcery"), PPt.getSkill("sorceryXP"), PPt.getXpToLevel("excavation")));
+ if (mcPermissions.getInstance().swords(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.SwordsSkill"), PPt.getSkillLevel(SkillType.SWORDS), PPt.getSkillXpLevel(SkillType.SWORDS), PPt.getXpToLevel(SkillType.SWORDS)));
+ if (mcPermissions.getInstance().taming(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.TamingSkill"), PPt.getSkillLevel(SkillType.TAMING), PPt.getSkillXpLevel(SkillType.TAMING), PPt.getXpToLevel(SkillType.TAMING)));
+ if (mcPermissions.getInstance().unarmed(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.UnarmedSkill"), PPt.getSkillLevel(SkillType.UNARMED), PPt.getSkillXpLevel(SkillType.UNARMED), PPt.getXpToLevel(SkillType.UNARMED)));
+
+ player.sendMessage(ChatColor.GOLD + "-=MISC SKILLS=-");
+ if (mcPermissions.getInstance().acrobatics(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AcrobaticsSkill"), PPt.getSkillLevel(SkillType.ACROBATICS), PPt.getSkillXpLevel(SkillType.ACROBATICS), PPt.getXpToLevel(SkillType.ACROBATICS)));
+ // if(mcPermissions.getInstance().alchemy(target))
+ // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.AlchemySkill"), PPt.getSkillLevel(SkillType.ALCHEMY), PPt.getSkillXpLevel(SkillType.ALCHEMY), PPt.getXpToLevel(SkillType.ALCHEMY)));
+ // if(mcPermissions.getInstance().enchanting(target))
+ // player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.EnchantingSkill"), PPt.getSkillLevel(SkillType.ENCHANTING), PPt.getSkillXpLevel(SkillType.ENCHANTING), PPt.getXpToLevel(SkillType.ENCHANTING)));
+ if (mcPermissions.getInstance().repair(target))
+ player.sendMessage(Skills.getSkillStats(mcLocale.getString("mcPlayerListener.RepairSkill"), PPt.getSkillLevel(SkillType.REPAIR), PPt.getSkillXpLevel(SkillType.REPAIR), PPt.getXpToLevel(SkillType.REPAIR)));
+
+ player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevel") + ChatColor.GREEN + (m.getPowerLevel(target)));
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/general/XprateCommand.java b/src/main/java/com/gmail/nossr50/commands/general/XprateCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/general/XprateCommand.java
rename to src/main/java/com/gmail/nossr50/commands/general/XprateCommand.java
index 000576d7e..56f1f16c5 100644
--- a/src/com/gmail/nossr50/commands/general/XprateCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/general/XprateCommand.java
@@ -1,126 +1,126 @@
-package com.gmail.nossr50.commands.general;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class XprateCommand implements CommandExecutor {
- private static int oldrate = LoadProperties.xpGainMultiplier;
-
- public static boolean xpevent = false;
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.xprateEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- if(args.length <= 0)
- {
- System.out.println(mcLocale.getString("Commands.xprate.proper", new Object[] {LoadProperties.xprate}));
- System.out.println(mcLocale.getString("Commands.xprate.proper2", new Object[] {LoadProperties.xprate}));
- }
-
- if(args.length == 1 && args[0].equalsIgnoreCase("reset"))
- {
- if(xpevent)
- {
- for(Player x : Bukkit.getServer().getOnlinePlayers())
- x.sendMessage(mcLocale.getString("Commands.xprate.over"));
- xpevent = !xpevent;
- LoadProperties.xpGainMultiplier = oldrate;
- } else
- {
- LoadProperties.xpGainMultiplier = oldrate;
- }
- }
-
- if(args.length >= 1 && m.isInt(args[0]))
- {
- oldrate = LoadProperties.xpGainMultiplier;
-
- if(args.length >= 2 && (args[1].equalsIgnoreCase("true") || args[1].equalsIgnoreCase("false")))
- {
- if(args[1].equalsIgnoreCase("true"))
- xpevent = true;
- else
- xpevent = false;
- } else
- {
- System.out.println(mcLocale.getString("Commands.xprate.proper3"));
- return true;
- }
- LoadProperties.xpGainMultiplier = m.getInt(args[0]);
- if(xpevent = true)
- for(Player x : Bukkit.getServer().getOnlinePlayers())
- {
- x.sendMessage(ChatColor.GOLD+"XP EVENT FOR mcMMO HAS STARTED!");
- x.sendMessage(ChatColor.GOLD+"mcMMO XP RATE IS NOW "+LoadProperties.xpGainMultiplier+"x!!");
- }
- }
-
- return true;
- }
-
- Player player = (Player) sender;
-
- if(!mcPermissions.getInstance().admin(player))
- {
- player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
- if(args.length <= 0)
- {
- player.sendMessage(mcLocale.getString("Commands.xprate.proper", new Object[] {LoadProperties.xprate}));
- player.sendMessage(mcLocale.getString("Commands.xprate.proper2", new Object[] {LoadProperties.xprate}));
- }
- if(args.length == 1 && args[0].equalsIgnoreCase("reset"))
- {
- if(xpevent)
- {
- for(Player x : Bukkit.getServer().getOnlinePlayers())
- x.sendMessage(mcLocale.getString("Commands.xprate.over"));
- xpevent = !xpevent;
- LoadProperties.xpGainMultiplier = oldrate;
- } else
- {
- LoadProperties.xpGainMultiplier = oldrate;
- }
- }
- if(args.length >= 1 && m.isInt(args[0]))
- {
- oldrate = LoadProperties.xpGainMultiplier;
-
- if(args.length >= 2 && (args[1].equalsIgnoreCase("true") || args[1].equalsIgnoreCase("false")))
- {
- if(args[1].equalsIgnoreCase("true"))
- xpevent = true;
- else
- xpevent = false;
- } else
- {
- player.sendMessage(mcLocale.getString("Commands.xprate.proper3"));
- return true;
- }
- LoadProperties.xpGainMultiplier = m.getInt(args[0]);
- if(xpevent = true)
- for(Player x : Bukkit.getServer().getOnlinePlayers())
- {
- x.sendMessage(mcLocale.getString("Commands.xprate.started"));
- x.sendMessage(mcLocale.getString("Commands.xprate.started2", new Object[] {LoadProperties.xpGainMultiplier}));
- }
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.general;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class XprateCommand implements CommandExecutor {
+ private static int oldrate = LoadProperties.xpGainMultiplier;
+
+ public static boolean xpevent = false;
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.xprateEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ if(args.length <= 0)
+ {
+ System.out.println(mcLocale.getString("Commands.xprate.proper", new Object[] {LoadProperties.xprate}));
+ System.out.println(mcLocale.getString("Commands.xprate.proper2", new Object[] {LoadProperties.xprate}));
+ }
+
+ if(args.length == 1 && args[0].equalsIgnoreCase("reset"))
+ {
+ if(xpevent)
+ {
+ for(Player x : Bukkit.getServer().getOnlinePlayers())
+ x.sendMessage(mcLocale.getString("Commands.xprate.over"));
+ xpevent = !xpevent;
+ LoadProperties.xpGainMultiplier = oldrate;
+ } else
+ {
+ LoadProperties.xpGainMultiplier = oldrate;
+ }
+ }
+
+ if(args.length >= 1 && m.isInt(args[0]))
+ {
+ oldrate = LoadProperties.xpGainMultiplier;
+
+ if(args.length >= 2 && (args[1].equalsIgnoreCase("true") || args[1].equalsIgnoreCase("false")))
+ {
+ if(args[1].equalsIgnoreCase("true"))
+ xpevent = true;
+ else
+ xpevent = false;
+ } else
+ {
+ System.out.println(mcLocale.getString("Commands.xprate.proper3"));
+ return true;
+ }
+ LoadProperties.xpGainMultiplier = m.getInt(args[0]);
+ if(xpevent = true)
+ for(Player x : Bukkit.getServer().getOnlinePlayers())
+ {
+ x.sendMessage(ChatColor.GOLD+"XP EVENT FOR mcMMO HAS STARTED!");
+ x.sendMessage(ChatColor.GOLD+"mcMMO XP RATE IS NOW "+LoadProperties.xpGainMultiplier+"x!!");
+ }
+ }
+
+ return true;
+ }
+
+ Player player = (Player) sender;
+
+ if(!mcPermissions.getInstance().admin(player))
+ {
+ player.sendMessage(ChatColor.YELLOW+"[mcMMO] "+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+ if(args.length <= 0)
+ {
+ player.sendMessage(mcLocale.getString("Commands.xprate.proper", new Object[] {LoadProperties.xprate}));
+ player.sendMessage(mcLocale.getString("Commands.xprate.proper2", new Object[] {LoadProperties.xprate}));
+ }
+ if(args.length == 1 && args[0].equalsIgnoreCase("reset"))
+ {
+ if(xpevent)
+ {
+ for(Player x : Bukkit.getServer().getOnlinePlayers())
+ x.sendMessage(mcLocale.getString("Commands.xprate.over"));
+ xpevent = !xpevent;
+ LoadProperties.xpGainMultiplier = oldrate;
+ } else
+ {
+ LoadProperties.xpGainMultiplier = oldrate;
+ }
+ }
+ if(args.length >= 1 && m.isInt(args[0]))
+ {
+ oldrate = LoadProperties.xpGainMultiplier;
+
+ if(args.length >= 2 && (args[1].equalsIgnoreCase("true") || args[1].equalsIgnoreCase("false")))
+ {
+ if(args[1].equalsIgnoreCase("true"))
+ xpevent = true;
+ else
+ xpevent = false;
+ } else
+ {
+ player.sendMessage(mcLocale.getString("Commands.xprate.proper3"));
+ return true;
+ }
+ LoadProperties.xpGainMultiplier = m.getInt(args[0]);
+ if(xpevent = true)
+ for(Player x : Bukkit.getServer().getOnlinePlayers())
+ {
+ x.sendMessage(mcLocale.getString("Commands.xprate.started"));
+ x.sendMessage(mcLocale.getString("Commands.xprate.started2", new Object[] {LoadProperties.xpGainMultiplier}));
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/mc/McabilityCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/mc/McabilityCommand.java
rename to src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java
index f4acc72a2..75ddca13d 100644
--- a/src/com/gmail/nossr50/commands/mc/McabilityCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java
@@ -1,45 +1,45 @@
-package com.gmail.nossr50.commands.mc;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class McabilityCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!mcPermissions.permissionsEnabled) {
- sender.sendMessage("This command requires permissions.");
- return true;
- }
-
- if (!LoadProperties.mcabilityEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (PP.getAbilityUse()) {
- player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOff"));
- PP.toggleAbilityUse();
- } else {
- player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOn"));
- PP.toggleAbilityUse();
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class McabilityCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!mcPermissions.permissionsEnabled) {
+ sender.sendMessage("This command requires permissions.");
+ return true;
+ }
+
+ if (!LoadProperties.mcabilityEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (PP.getAbilityUse()) {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOff"));
+ PP.toggleAbilityUse();
+ } else {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesOn"));
+ PP.toggleAbilityUse();
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/mc/MccCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/MccCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/mc/MccCommand.java
rename to src/main/java/com/gmail/nossr50/commands/mc/MccCommand.java
index 6fa895720..2607445bc 100644
--- a/src/com/gmail/nossr50/commands/mc/MccCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/mc/MccCommand.java
@@ -1,73 +1,73 @@
-package com.gmail.nossr50.commands.mc;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class MccCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.mccEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
-
- player.sendMessage(ChatColor.RED + "---[]" + ChatColor.YELLOW + "mcMMO Commands" + ChatColor.RED + "[]---");
-
- if (mcPermissions.getInstance().party(player)) {
- player.sendMessage(mcLocale.getString("m.mccPartyCommands"));
- player.sendMessage(LoadProperties.party + " " + mcLocale.getString("m.mccParty"));
- player.sendMessage(LoadProperties.party + " q " + mcLocale.getString("m.mccPartyQ"));
-
- if (mcPermissions.getInstance().partyChat(player))
- player.sendMessage("/p " + mcLocale.getString("m.mccPartyToggle"));
-
- player.sendMessage(LoadProperties.invite + " " + mcLocale.getString("m.mccPartyInvite"));
- player.sendMessage(LoadProperties.accept + " " + mcLocale.getString("m.mccPartyAccept"));
-
- if (mcPermissions.getInstance().partyTeleport(player))
- player.sendMessage(LoadProperties.ptp + " " + mcLocale.getString("m.mccPartyTeleport"));
- }
- player.sendMessage(mcLocale.getString("m.mccOtherCommands"));
- player.sendMessage(LoadProperties.stats + ChatColor.RED + " " + mcLocale.getString("m.mccStats"));
- player.sendMessage("/mctop " + ChatColor.RED + mcLocale.getString("m.mccLeaderboards"));
-
- if (mcPermissions.getInstance().mySpawn(player)) {
- player.sendMessage(LoadProperties.myspawn + " " + ChatColor.RED + mcLocale.getString("m.mccMySpawn"));
- player.sendMessage(LoadProperties.clearmyspawn + " " + ChatColor.RED + mcLocale.getString("m.mccClearMySpawn"));
- }
-
- if (mcPermissions.getInstance().mcAbility(player))
- player.sendMessage(LoadProperties.mcability + ChatColor.RED + " " + mcLocale.getString("m.mccToggleAbility"));
-
- if (mcPermissions.getInstance().adminChat(player))
- player.sendMessage("/a " + ChatColor.RED + mcLocale.getString("m.mccAdminToggle"));
-
- if (mcPermissions.getInstance().whois(player))
- player.sendMessage(LoadProperties.whois + " " + mcLocale.getString("m.mccWhois"));
-
- if (mcPermissions.getInstance().mmoedit(player))
- player.sendMessage(LoadProperties.mmoedit + mcLocale.getString("m.mccMmoedit"));
-
- if (mcPermissions.getInstance().mcgod(player))
- player.sendMessage(LoadProperties.mcgod + ChatColor.RED + " " + mcLocale.getString("m.mccMcGod"));
-
- player.sendMessage(mcLocale.getString("m.mccSkillInfo"));
- player.sendMessage(LoadProperties.mcmmo + " " + mcLocale.getString("m.mccModDescription"));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class MccCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.mccEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+
+ player.sendMessage(ChatColor.RED + "---[]" + ChatColor.YELLOW + "mcMMO Commands" + ChatColor.RED + "[]---");
+
+ if (mcPermissions.getInstance().party(player)) {
+ player.sendMessage(mcLocale.getString("m.mccPartyCommands"));
+ player.sendMessage(LoadProperties.party + " " + mcLocale.getString("m.mccParty"));
+ player.sendMessage(LoadProperties.party + " q " + mcLocale.getString("m.mccPartyQ"));
+
+ if (mcPermissions.getInstance().partyChat(player))
+ player.sendMessage("/p " + mcLocale.getString("m.mccPartyToggle"));
+
+ player.sendMessage(LoadProperties.invite + " " + mcLocale.getString("m.mccPartyInvite"));
+ player.sendMessage(LoadProperties.accept + " " + mcLocale.getString("m.mccPartyAccept"));
+
+ if (mcPermissions.getInstance().partyTeleport(player))
+ player.sendMessage(LoadProperties.ptp + " " + mcLocale.getString("m.mccPartyTeleport"));
+ }
+ player.sendMessage(mcLocale.getString("m.mccOtherCommands"));
+ player.sendMessage(LoadProperties.stats + ChatColor.RED + " " + mcLocale.getString("m.mccStats"));
+ player.sendMessage("/mctop " + ChatColor.RED + mcLocale.getString("m.mccLeaderboards"));
+
+ if (mcPermissions.getInstance().mySpawn(player)) {
+ player.sendMessage(LoadProperties.myspawn + " " + ChatColor.RED + mcLocale.getString("m.mccMySpawn"));
+ player.sendMessage(LoadProperties.clearmyspawn + " " + ChatColor.RED + mcLocale.getString("m.mccClearMySpawn"));
+ }
+
+ if (mcPermissions.getInstance().mcAbility(player))
+ player.sendMessage(LoadProperties.mcability + ChatColor.RED + " " + mcLocale.getString("m.mccToggleAbility"));
+
+ if (mcPermissions.getInstance().adminChat(player))
+ player.sendMessage("/a " + ChatColor.RED + mcLocale.getString("m.mccAdminToggle"));
+
+ if (mcPermissions.getInstance().whois(player))
+ player.sendMessage(LoadProperties.whois + " " + mcLocale.getString("m.mccWhois"));
+
+ if (mcPermissions.getInstance().mmoedit(player))
+ player.sendMessage(LoadProperties.mmoedit + mcLocale.getString("m.mccMmoedit"));
+
+ if (mcPermissions.getInstance().mcgod(player))
+ player.sendMessage(LoadProperties.mcgod + ChatColor.RED + " " + mcLocale.getString("m.mccMcGod"));
+
+ player.sendMessage(mcLocale.getString("m.mccSkillInfo"));
+ player.sendMessage(LoadProperties.mcmmo + " " + mcLocale.getString("m.mccModDescription"));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/mc/McgodCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/mc/McgodCommand.java
rename to src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java
index 116fef919..135075547 100644
--- a/src/com/gmail/nossr50/commands/mc/McgodCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java
@@ -1,48 +1,48 @@
-package com.gmail.nossr50.commands.mc;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class McgodCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.mcgodEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (mcPermissions.permissionsEnabled) {
- if (!mcPermissions.getInstance().mcgod(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- if (PP.getGodMode()) {
- player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled"));
- PP.toggleGodMode();
- } else {
- player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled"));
- PP.toggleGodMode();
- }
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class McgodCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.mcgodEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (mcPermissions.permissionsEnabled) {
+ if (!mcPermissions.getInstance().mcgod(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ if (PP.getGodMode()) {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled"));
+ PP.toggleGodMode();
+ } else {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled"));
+ PP.toggleGodMode();
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/mc/McmmoCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McmmoCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/mc/McmmoCommand.java
rename to src/main/java/com/gmail/nossr50/commands/mc/McmmoCommand.java
index 0888ebac4..be1991725 100644
--- a/src/com/gmail/nossr50/commands/mc/McmmoCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/mc/McmmoCommand.java
@@ -1,48 +1,48 @@
-package com.gmail.nossr50.commands.mc;
-
-import org.bukkit.ChatColor;
-import org.bukkit.Material;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.getspout.spoutapi.player.SpoutPlayer;
-
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class McmmoCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.mcmmoEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
-
- player.sendMessage(ChatColor.RED + "-----[]" + ChatColor.GREEN + "mcMMO" + ChatColor.RED + "[]-----");
- String description = mcLocale.getString("mcMMO.Description", new Object[] { LoadProperties.mcc });
- String[] mcSplit = description.split(",");
-
- for (String x : mcSplit) {
- player.sendMessage(x);
- }
-
- if (LoadProperties.spoutEnabled && player instanceof SpoutPlayer) {
- SpoutPlayer sPlayer = (SpoutPlayer) player;
- if (LoadProperties.donateMessage)
- sPlayer.sendNotification("[mcMMO] Donate!", "Paypal nossr50@gmail.com", Material.CAKE);
- } else {
- if (LoadProperties.donateMessage)
- player.sendMessage(ChatColor.GREEN + "If you like my work you can donate via Paypal: nossr50@gmail.com");
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.ChatColor;
+import org.bukkit.Material;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.getspout.spoutapi.player.SpoutPlayer;
+
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class McmmoCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.mcmmoEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+
+ player.sendMessage(ChatColor.RED + "-----[]" + ChatColor.GREEN + "mcMMO" + ChatColor.RED + "[]-----");
+ String description = mcLocale.getString("mcMMO.Description", new Object[] { LoadProperties.mcc });
+ String[] mcSplit = description.split(",");
+
+ for (String x : mcSplit) {
+ player.sendMessage(x);
+ }
+
+ if (LoadProperties.spoutEnabled && player instanceof SpoutPlayer) {
+ SpoutPlayer sPlayer = (SpoutPlayer) player;
+ if (LoadProperties.donateMessage)
+ sPlayer.sendNotification("[mcMMO] Donate!", "Paypal nossr50@gmail.com", Material.CAKE);
+ } else {
+ if (LoadProperties.donateMessage)
+ player.sendMessage(ChatColor.GREEN + "If you like my work you can donate via Paypal: nossr50@gmail.com");
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/mc/McrefreshCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McrefreshCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/mc/McrefreshCommand.java
rename to src/main/java/com/gmail/nossr50/commands/mc/McrefreshCommand.java
index 41fa78077..67c31839e 100644
--- a/src/com/gmail/nossr50/commands/mc/McrefreshCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/mc/McrefreshCommand.java
@@ -1,93 +1,93 @@
-package com.gmail.nossr50.commands.mc;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class McrefreshCommand implements CommandExecutor {
- private final mcMMO plugin;
-
- public McrefreshCommand(mcMMO instance) {
- this.plugin = instance;
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.mcrefreshEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().mcrefresh(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
- if (args.length >= 1 && (plugin.getServer().getPlayer(args[0]) != null)) {
- player.sendMessage("You have refreshed " + args[0] + "'s cooldowns!");
- player = plugin.getServer().getPlayer(args[0]);
- }
-
- /*
- * PREP MODES
- */
- PP = Users.getProfile(player);
- PP.setRecentlyHurt((long) 0);
- PP.setHoePreparationMode(false);
- PP.setAxePreparationMode(false);
- PP.setFistsPreparationMode(false);
- PP.setSwordsPreparationMode(false);
- PP.setPickaxePreparationMode(false);
- /*
- * GREEN TERRA
- */
- PP.setGreenTerraMode(false);
- PP.setGreenTerraDeactivatedTimeStamp((long) 0);
-
- /*
- * GIGA DRILL BREAKER
- */
- PP.setGigaDrillBreakerMode(false);
- PP.setGigaDrillBreakerDeactivatedTimeStamp((long) 0);
- /*
- * SERRATED STRIKE
- */
- PP.setSerratedStrikesMode(false);
- PP.setSerratedStrikesDeactivatedTimeStamp((long) 0);
- /*
- * SUPER BREAKER
- */
- PP.setSuperBreakerMode(false);
- PP.setSuperBreakerDeactivatedTimeStamp((long) 0);
- /*
- * TREE FELLER
- */
- PP.setTreeFellerMode(false);
- PP.setTreeFellerDeactivatedTimeStamp((long) 0);
- /*
- * BERSERK
- */
- PP.setBerserkMode(false);
- PP.setBerserkDeactivatedTimeStamp((long) 0);
-
- player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesRefreshed"));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.mc;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class McrefreshCommand implements CommandExecutor {
+ private final mcMMO plugin;
+
+ public McrefreshCommand(mcMMO instance) {
+ this.plugin = instance;
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.mcrefreshEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().mcrefresh(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+ if (args.length >= 1 && (plugin.getServer().getPlayer(args[0]) != null)) {
+ player.sendMessage("You have refreshed " + args[0] + "'s cooldowns!");
+ player = plugin.getServer().getPlayer(args[0]);
+ }
+
+ /*
+ * PREP MODES
+ */
+ PP = Users.getProfile(player);
+ PP.setRecentlyHurt((long) 0);
+ PP.setHoePreparationMode(false);
+ PP.setAxePreparationMode(false);
+ PP.setFistsPreparationMode(false);
+ PP.setSwordsPreparationMode(false);
+ PP.setPickaxePreparationMode(false);
+ /*
+ * GREEN TERRA
+ */
+ PP.setGreenTerraMode(false);
+ PP.setGreenTerraDeactivatedTimeStamp((long) 0);
+
+ /*
+ * GIGA DRILL BREAKER
+ */
+ PP.setGigaDrillBreakerMode(false);
+ PP.setGigaDrillBreakerDeactivatedTimeStamp((long) 0);
+ /*
+ * SERRATED STRIKE
+ */
+ PP.setSerratedStrikesMode(false);
+ PP.setSerratedStrikesDeactivatedTimeStamp((long) 0);
+ /*
+ * SUPER BREAKER
+ */
+ PP.setSuperBreakerMode(false);
+ PP.setSuperBreakerDeactivatedTimeStamp((long) 0);
+ /*
+ * TREE FELLER
+ */
+ PP.setTreeFellerMode(false);
+ PP.setTreeFellerDeactivatedTimeStamp((long) 0);
+ /*
+ * BERSERK
+ */
+ PP.setBerserkMode(false);
+ PP.setBerserkDeactivatedTimeStamp((long) 0);
+
+ player.sendMessage(mcLocale.getString("mcPlayerListener.AbilitiesRefreshed"));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/mc/MctopCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/MctopCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/mc/MctopCommand.java
rename to src/main/java/com/gmail/nossr50/commands/mc/MctopCommand.java
index 5b6b30292..031c4f221 100644
--- a/src/com/gmail/nossr50/commands/mc/MctopCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/mc/MctopCommand.java
@@ -1,199 +1,199 @@
-package com.gmail.nossr50.commands.mc;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Leaderboard;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.Skills;
-
-public class MctopCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.mctopEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
-
- if (LoadProperties.useMySQL == false) {
- /*
- * POWER LEVEL INFO RETRIEVAL
- */
- if (args.length == 0) {
- int p = 1;
- String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p);
- player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
- int n = 1 * p; // Position
- for (String x : info) {
- if (x != null) {
- String digit = String.valueOf(n);
- if (n < 10)
- digit = "0" + String.valueOf(n);
- String[] splitx = x.split(":");
- // Format: 1. Playername - skill value
- player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
- n++;
- }
- }
- }
- if (args.length >= 1 && m.isInt(args[0])) {
- int p = 1;
- // Grab page value if specified
- if (args.length >= 1) {
- if (m.isInt(args[0])) {
- p = Integer.valueOf(args[0]);
- }
- }
- int pt = p;
- if (p > 1) {
- pt -= 1;
- pt += (pt * 10);
- pt = 10;
- }
- String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p);
- player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
- int n = 1 * pt; // Position
- for (String x : info) {
- if (x != null) {
- String digit = String.valueOf(n);
- if (n < 10)
- digit = "0" + String.valueOf(n);
- String[] splitx = x.split(":");
- // Format: 1. Playername - skill value
- player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
- n++;
- }
- }
- }
- /*
- * SKILL SPECIFIED INFO RETRIEVAL
- */
- if (args.length >= 1 && Skills.isSkill(args[0])) {
- int p = 1;
- // Grab page value if specified
- if (args.length >= 2) {
- if (m.isInt(args[1])) {
- p = Integer.valueOf(args[1]);
- }
- }
- int pt = p;
- if (p > 1) {
- pt -= 1;
- pt += (pt * 10);
- pt = 10;
- }
- String firstLetter = args[0].substring(0, 1); // Get first letter
- String remainder = args[0].substring(1); // Get remainder of word.
- String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
-
- String[] info = Leaderboard.retrieveInfo(args[0].toUpperCase(), p);
- player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] { capitalized }));
- int n = 1 * pt; // Position
- for (String x : info) {
- if (x != null) {
- String digit = String.valueOf(n);
- if (n < 10)
- digit = "0" + String.valueOf(n);
- String[] splitx = x.split(":");
- // Format: 1. Playername - skill value
- player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
- n++;
- }
- }
- }
- } else {
- /*
- * MYSQL LEADERBOARDS
- */
- String powerlevel = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing";
- if (args.length >= 1 && Skills.isSkill(args[0])) {
- /*
- * Create a nice consistent capitalized leaderboard name
- */
- String lowercase = args[0].toLowerCase(); // For the query
- String firstLetter = args[0].substring(0, 1); // Get first letter
- String remainder = args[0].substring(1); // Get remainder of word.
- String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
-
- player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] { capitalized }));
- if (args.length >= 2 && m.isInt(args[1])) {
- int n = 1; // For the page number
- int n2 = Integer.valueOf(args[1]);
- if (n2 > 1) {
- // Figure out the 'page' here
- n = 10;
- n = n * (n2 - 1);
- }
- // If a page number is specified
- HashMap> 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> 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> 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> username = mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
- player.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
- }
- return true;
- }
- if (args.length >= 0) {
- player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
- if (args.length >= 1 && m.isInt(args[0])) {
- int n = 1; // For the page number
- int n2 = Integer.valueOf(args[0]);
- if (n2 > 1) {
- // Figure out the 'page' here
- n = 10;
- n = n * (n2 - 1);
- }
- // If a page number is specified
- HashMap> userslist = mcMMO.database.Read("SELECT " + powerlevel + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + powerlevel + " > 0 ORDER BY " + powerlevel + " DESC ");
- for (int i = n; i <= n + 10; i++) {
- if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
- break;
- HashMap> 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> userslist = mcMMO.database.Read("SELECT " + powerlevel + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + powerlevel + " > 0 ORDER BY " + powerlevel + " DESC ");
- for (int i = 1; i <= 10; i++) {
- if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
- break;
- HashMap> username = mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
- player.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
- // System.out.println(username.get(1).get(0));
- // System.out.println("Mining : " + userslist.get(i).get(0) + ", User id : " + userslist.get(i).get(1));
- }
- }
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.mc;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Leaderboard;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+
+public class MctopCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.mctopEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+
+ if (LoadProperties.useMySQL == false) {
+ /*
+ * POWER LEVEL INFO RETRIEVAL
+ */
+ if (args.length == 0) {
+ int p = 1;
+ String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p);
+ player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
+ int n = 1 * p; // Position
+ for (String x : info) {
+ if (x != null) {
+ String digit = String.valueOf(n);
+ if (n < 10)
+ digit = "0" + String.valueOf(n);
+ String[] splitx = x.split(":");
+ // Format: 1. Playername - skill value
+ player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
+ n++;
+ }
+ }
+ }
+ if (args.length >= 1 && m.isInt(args[0])) {
+ int p = 1;
+ // Grab page value if specified
+ if (args.length >= 1) {
+ if (m.isInt(args[0])) {
+ p = Integer.valueOf(args[0]);
+ }
+ }
+ int pt = p;
+ if (p > 1) {
+ pt -= 1;
+ pt += (pt * 10);
+ pt = 10;
+ }
+ String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p);
+ player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
+ int n = 1 * pt; // Position
+ for (String x : info) {
+ if (x != null) {
+ String digit = String.valueOf(n);
+ if (n < 10)
+ digit = "0" + String.valueOf(n);
+ String[] splitx = x.split(":");
+ // Format: 1. Playername - skill value
+ player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
+ n++;
+ }
+ }
+ }
+ /*
+ * SKILL SPECIFIED INFO RETRIEVAL
+ */
+ if (args.length >= 1 && Skills.isSkill(args[0])) {
+ int p = 1;
+ // Grab page value if specified
+ if (args.length >= 2) {
+ if (m.isInt(args[1])) {
+ p = Integer.valueOf(args[1]);
+ }
+ }
+ int pt = p;
+ if (p > 1) {
+ pt -= 1;
+ pt += (pt * 10);
+ pt = 10;
+ }
+ String firstLetter = args[0].substring(0, 1); // Get first letter
+ String remainder = args[0].substring(1); // Get remainder of word.
+ String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
+
+ String[] info = Leaderboard.retrieveInfo(args[0].toUpperCase(), p);
+ player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] { capitalized }));
+ int n = 1 * pt; // Position
+ for (String x : info) {
+ if (x != null) {
+ String digit = String.valueOf(n);
+ if (n < 10)
+ digit = "0" + String.valueOf(n);
+ String[] splitx = x.split(":");
+ // Format: 1. Playername - skill value
+ player.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
+ n++;
+ }
+ }
+ }
+ } else {
+ /*
+ * MYSQL LEADERBOARDS
+ */
+ String powerlevel = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing";
+ if (args.length >= 1 && Skills.isSkill(args[0])) {
+ /*
+ * Create a nice consistent capitalized leaderboard name
+ */
+ String lowercase = args[0].toLowerCase(); // For the query
+ String firstLetter = args[0].substring(0, 1); // Get first letter
+ String remainder = args[0].substring(1); // Get remainder of word.
+ String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
+
+ player.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] { capitalized }));
+ if (args.length >= 2 && m.isInt(args[1])) {
+ int n = 1; // For the page number
+ int n2 = Integer.valueOf(args[1]);
+ if (n2 > 1) {
+ // Figure out the 'page' here
+ n = 10;
+ n = n * (n2 - 1);
+ }
+ // If a page number is specified
+ HashMap> 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> 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> 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> username = mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
+ player.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
+ }
+ return true;
+ }
+ if (args.length >= 0) {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
+ if (args.length >= 1 && m.isInt(args[0])) {
+ int n = 1; // For the page number
+ int n2 = Integer.valueOf(args[0]);
+ if (n2 > 1) {
+ // Figure out the 'page' here
+ n = 10;
+ n = n * (n2 - 1);
+ }
+ // If a page number is specified
+ HashMap> userslist = mcMMO.database.Read("SELECT " + powerlevel + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + powerlevel + " > 0 ORDER BY " + powerlevel + " DESC ");
+ for (int i = n; i <= n + 10; i++) {
+ if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
+ break;
+ HashMap> 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> userslist = mcMMO.database.Read("SELECT " + powerlevel + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + powerlevel + " > 0 ORDER BY " + powerlevel + " DESC ");
+ for (int i = 1; i <= 10; i++) {
+ if (i > userslist.size() || mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
+ break;
+ HashMap> username = mcMMO.database.Read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
+ player.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
+ // System.out.println(username.get(1).get(0));
+ // System.out.println("Mining : " + userslist.get(i).get(0) + ", User id : " + userslist.get(i).get(1));
+ }
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/party/ACommand.java b/src/main/java/com/gmail/nossr50/commands/party/ACommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/party/ACommand.java
rename to src/main/java/com/gmail/nossr50/commands/party/ACommand.java
index 25f1f7bd6..e01a676df 100644
--- a/src/com/gmail/nossr50/commands/party/ACommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/party/ACommand.java
@@ -1,86 +1,86 @@
-package com.gmail.nossr50.commands.party;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class ACommand implements CommandExecutor {
- private Logger log;
-
- public ACommand() {
- this.log = Logger.getLogger("Minecraft");
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
-
- // Console message?
- if (!(sender instanceof Player) && args.length >= 1) {
- String aMessage = args[0];
- for (int i = 1; i <= args.length - 1; i++) {
- aMessage = aMessage + " " + args[i];
- }
-
- String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE + "*Console*" + ChatColor.AQUA + "} ";
-
- log.log(Level.INFO, "[A]<*Console*> " + aMessage);
-
- for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
- if (mcPermissions.getInstance().adminChat(herp) || herp.isOp())
- herp.sendMessage(aPrefix + aMessage);
- }
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().adminChat(player) && !player.isOp()) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- // Not a toggle, a message
-
- if (args.length >= 1) {
- String aMessage = args[0];
- for (int i = 1; i <= args.length - 1; i++) {
- aMessage = aMessage + " " + args[i];
- }
-
- String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE + player.getDisplayName() + ChatColor.AQUA + "} ";
- log.log(Level.INFO, "[A]<" + player.getDisplayName() + "> " + aMessage);
- for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
- if (mcPermissions.getInstance().adminChat(herp) || herp.isOp())
- herp.sendMessage(aPrefix + aMessage);
- }
- return true;
- }
-
- if (PP.getPartyChatMode())
- PP.togglePartyChat();
-
- PP.toggleAdminChat();
-
- if (PP.getAdminChatMode()) {
- player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOn"));
- // player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.GREEN + "On");
- } else {
- player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOff"));
- // player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.RED + "Off");
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.party;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class ACommand implements CommandExecutor {
+ private Logger log;
+
+ public ACommand() {
+ this.log = Logger.getLogger("Minecraft");
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+
+ // Console message?
+ if (!(sender instanceof Player) && args.length >= 1) {
+ String aMessage = args[0];
+ for (int i = 1; i <= args.length - 1; i++) {
+ aMessage = aMessage + " " + args[i];
+ }
+
+ String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE + "*Console*" + ChatColor.AQUA + "} ";
+
+ log.log(Level.INFO, "[A]<*Console*> " + aMessage);
+
+ for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
+ if (mcPermissions.getInstance().adminChat(herp) || herp.isOp())
+ herp.sendMessage(aPrefix + aMessage);
+ }
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().adminChat(player) && !player.isOp()) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ // Not a toggle, a message
+
+ if (args.length >= 1) {
+ String aMessage = args[0];
+ for (int i = 1; i <= args.length - 1; i++) {
+ aMessage = aMessage + " " + args[i];
+ }
+
+ String aPrefix = ChatColor.AQUA + "{" + ChatColor.WHITE + player.getDisplayName() + ChatColor.AQUA + "} ";
+ log.log(Level.INFO, "[A]<" + player.getDisplayName() + "> " + aMessage);
+ for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
+ if (mcPermissions.getInstance().adminChat(herp) || herp.isOp())
+ herp.sendMessage(aPrefix + aMessage);
+ }
+ return true;
+ }
+
+ if (PP.getPartyChatMode())
+ PP.togglePartyChat();
+
+ PP.toggleAdminChat();
+
+ if (PP.getAdminChatMode()) {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOn"));
+ // player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.GREEN + "On");
+ } else {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.AdminChatOff"));
+ // player.sendMessage(ChatColor.AQUA + "Admin chat toggled " + ChatColor.RED + "Off");
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/party/AcceptCommand.java b/src/main/java/com/gmail/nossr50/commands/party/AcceptCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/party/AcceptCommand.java
rename to src/main/java/com/gmail/nossr50/commands/party/AcceptCommand.java
index 1cc73d060..5a2492f63 100644
--- a/src/com/gmail/nossr50/commands/party/AcceptCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/party/AcceptCommand.java
@@ -1,52 +1,52 @@
-package com.gmail.nossr50.commands.party;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.party.Party;
-
-public class AcceptCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.acceptEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().party(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- if (PP.hasPartyInvite()) {
- Party Pinstance = Party.getInstance();
-
- if (PP.inParty()) {
- Pinstance.removeFromParty(player, PP);
- }
- PP.acceptInvite();
- Pinstance.addToParty(player, PP, PP.getParty(), true);
-
- } else {
- player.sendMessage(mcLocale.getString("mcPlayerListener.NoInvites"));
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.party;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class AcceptCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.acceptEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().party(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ if (PP.hasPartyInvite()) {
+ Party Pinstance = Party.getInstance();
+
+ if (PP.inParty()) {
+ Pinstance.removeFromParty(player, PP);
+ }
+ PP.acceptInvite();
+ Pinstance.addToParty(player, PP, PP.getParty(), true);
+
+ } else {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.NoInvites"));
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/party/InviteCommand.java b/src/main/java/com/gmail/nossr50/commands/party/InviteCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/party/InviteCommand.java
rename to src/main/java/com/gmail/nossr50/commands/party/InviteCommand.java
index c432ce247..84f2514d3 100644
--- a/src/com/gmail/nossr50/commands/party/InviteCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/party/InviteCommand.java
@@ -1,73 +1,73 @@
-package com.gmail.nossr50.commands.party;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.party.Party;
-
-public class InviteCommand implements CommandExecutor {
- private final mcMMO plugin;
-
- public InviteCommand(mcMMO instance) {
- this.plugin = instance;
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.inviteEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().party(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- Party Pinstance = Party.getInstance();
-
- if (!PP.inParty()) {
- player.sendMessage(mcLocale.getString("mcPlayerListener.NotInParty"));
- return true;
- }
- if (args.length < 1) {
- player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.invite + " ");
- return true;
- }
- if (PP.inParty() && args.length >= 1 && (plugin.getServer().getPlayer(args[0]) != null)) {
- if (Pinstance.canInvite(player, PP)) {
- Player target = plugin.getServer().getPlayer(args[0]);
- PlayerProfile PPt = Users.getProfile(target);
- PPt.modifyInvite(PP.getParty());
-
- player.sendMessage(mcLocale.getString("mcPlayerListener.InviteSuccess"));
- // target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+PPt.getInvite()+" from "+player.getName());
- target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite1", new Object[] { PPt.getInvite(), player.getName() }));
- // target.sendMessage(ChatColor.YELLOW+"Type "+ChatColor.GREEN+LoadProperties.accept+ChatColor.YELLOW+" to accept the invite");
- target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite2", new Object[] { LoadProperties.accept }));
- } else {
- player.sendMessage(mcLocale.getString("Party.Locked"));
- return true;
- }
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.party;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class InviteCommand implements CommandExecutor {
+ private final mcMMO plugin;
+
+ public InviteCommand(mcMMO instance) {
+ this.plugin = instance;
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.inviteEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().party(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ Party Pinstance = Party.getInstance();
+
+ if (!PP.inParty()) {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.NotInParty"));
+ return true;
+ }
+ if (args.length < 1) {
+ player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.invite + " ");
+ return true;
+ }
+ if (PP.inParty() && args.length >= 1 && (plugin.getServer().getPlayer(args[0]) != null)) {
+ if (Pinstance.canInvite(player, PP)) {
+ Player target = plugin.getServer().getPlayer(args[0]);
+ PlayerProfile PPt = Users.getProfile(target);
+ PPt.modifyInvite(PP.getParty());
+
+ player.sendMessage(mcLocale.getString("mcPlayerListener.InviteSuccess"));
+ // target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+PPt.getInvite()+" from "+player.getName());
+ target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite1", new Object[] { PPt.getInvite(), player.getName() }));
+ // target.sendMessage(ChatColor.YELLOW+"Type "+ChatColor.GREEN+LoadProperties.accept+ChatColor.YELLOW+" to accept the invite");
+ target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite2", new Object[] { LoadProperties.accept }));
+ } else {
+ player.sendMessage(mcLocale.getString("Party.Locked"));
+ return true;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/party/PCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/party/PCommand.java
rename to src/main/java/com/gmail/nossr50/commands/party/PCommand.java
index e4dd624d2..48b8b9e01 100644
--- a/src/com/gmail/nossr50/commands/party/PCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/party/PCommand.java
@@ -1,101 +1,101 @@
-package com.gmail.nossr50.commands.party;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.party.Party;
-
-public class PCommand implements CommandExecutor {
- private Logger log;
-
- public PCommand() {
- this.log = Logger.getLogger("Minecraft");
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.partyEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- // Console message?
- if (!(sender instanceof Player)) {
- if (args.length < 2)
- return true;
- String pMessage = args[1];
- for (int i = 2; i <= args.length - 1; i++) {
- pMessage = pMessage + " " + args[i];
- }
-
- String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE + "*Console*" + ChatColor.GREEN + ") ";
-
- log.log(Level.INFO, "[P](" + args[0] + ")" + "<*Console*> " + pMessage);
-
- for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
- if (Users.getProfile(herp).inParty()) {
- if (Users.getProfile(herp).getParty().equalsIgnoreCase(args[0])) {
- herp.sendMessage(pPrefix + pMessage);
- }
- }
- }
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().party(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- // Not a toggle, a message
-
- if (args.length >= 1) {
- String pMessage = args[0];
- for (int i = 1; i <= args.length - 1; i++) {
- pMessage = pMessage + " " + args[i];
- }
- String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE + player.getDisplayName() + ChatColor.GREEN + ") ";
-
- log.log(Level.INFO, "[P](" + PP.getParty() + ")" + "<" + player.getDisplayName() + "> " + pMessage);
-
- for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
- if (Users.getProfile(herp).inParty()) {
- if (Party.getInstance().inSameParty(herp, player))
- herp.sendMessage(pPrefix + pMessage);
- }
- }
-
- return true;
- }
-
- if (PP.getAdminChatMode())
- PP.toggleAdminChat();
-
- PP.togglePartyChat();
-
- if (PP.getPartyChatMode()) {
- // player.sendMessage(ChatColor.GREEN + "Party Chat Toggled On");
- player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOn"));
- } else {
- // player.sendMessage(ChatColor.GREEN + "Party Chat Toggled " + ChatColor.RED + "Off");
- player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOff"));
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.party;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class PCommand implements CommandExecutor {
+ private Logger log;
+
+ public PCommand() {
+ this.log = Logger.getLogger("Minecraft");
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.partyEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ // Console message?
+ if (!(sender instanceof Player)) {
+ if (args.length < 2)
+ return true;
+ String pMessage = args[1];
+ for (int i = 2; i <= args.length - 1; i++) {
+ pMessage = pMessage + " " + args[i];
+ }
+
+ String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE + "*Console*" + ChatColor.GREEN + ") ";
+
+ log.log(Level.INFO, "[P](" + args[0] + ")" + "<*Console*> " + pMessage);
+
+ for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
+ if (Users.getProfile(herp).inParty()) {
+ if (Users.getProfile(herp).getParty().equalsIgnoreCase(args[0])) {
+ herp.sendMessage(pPrefix + pMessage);
+ }
+ }
+ }
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().party(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ // Not a toggle, a message
+
+ if (args.length >= 1) {
+ String pMessage = args[0];
+ for (int i = 1; i <= args.length - 1; i++) {
+ pMessage = pMessage + " " + args[i];
+ }
+ String pPrefix = ChatColor.GREEN + "(" + ChatColor.WHITE + player.getDisplayName() + ChatColor.GREEN + ") ";
+
+ log.log(Level.INFO, "[P](" + PP.getParty() + ")" + "<" + player.getDisplayName() + "> " + pMessage);
+
+ for (Player herp : Bukkit.getServer().getOnlinePlayers()) {
+ if (Users.getProfile(herp).inParty()) {
+ if (Party.getInstance().inSameParty(herp, player))
+ herp.sendMessage(pPrefix + pMessage);
+ }
+ }
+
+ return true;
+ }
+
+ if (PP.getAdminChatMode())
+ PP.toggleAdminChat();
+
+ PP.togglePartyChat();
+
+ if (PP.getPartyChatMode()) {
+ // player.sendMessage(ChatColor.GREEN + "Party Chat Toggled On");
+ player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOn"));
+ } else {
+ // player.sendMessage(ChatColor.GREEN + "Party Chat Toggled " + ChatColor.RED + "Off");
+ player.sendMessage(mcLocale.getString("mcPlayerListener.PartyChatOff"));
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/party/PartyCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/party/PartyCommand.java
rename to src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java
index 2972b630f..9832b0a88 100644
--- a/src/com/gmail/nossr50/commands/party/PartyCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java
@@ -1,192 +1,192 @@
-package com.gmail.nossr50.commands.party;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.party.Party;
-
-public class PartyCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.partyEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().party(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- Party Pinstance = Party.getInstance();
-
- if (PP.inParty() && (!Pinstance.isParty(PP.getParty()) || !Pinstance.isInParty(player, PP))) {
- Pinstance.addToParty(player, PP, PP.getParty(), false);
- }
-
- if (args.length == 0 && !PP.inParty()) {
- player.sendMessage(mcLocale.getString("Party.Help1", new Object[] { LoadProperties.party }));
- player.sendMessage(mcLocale.getString("Party.Help2", new Object[] { LoadProperties.party }));
- player.sendMessage(mcLocale.getString("Party.Help3", new Object[] { LoadProperties.party }));
- return true;
- } else if (args.length == 0 && PP.inParty()) {
- String tempList = "";
- int x = 0;
- for (Player p : Bukkit.getServer().getOnlinePlayers()) {
- if (PP.getParty().equals(Users.getProfile(p).getParty())) {
- if (p != null && x + 1 >= Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers())) {
- if (Pinstance.isPartyLeader(p.getName(), PP.getParty())) {
- tempList += ChatColor.GOLD + p.getName();
- x++;
- } else {
- tempList += ChatColor.WHITE + p.getName();
- x++;
- }
- }
- if (p != null && x < Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers())) {
- if (Pinstance.isPartyLeader(p.getName(), PP.getParty())) {
- tempList += ChatColor.GOLD + p.getName() + ", ";
- x++;
- } else {
- tempList += ChatColor.WHITE + p.getName() + ", ";
- x++;
- }
- }
- }
- }
- player.sendMessage(mcLocale.getString("mcPlayerListener.YouAreInParty", new Object[] { PP.getParty() }));
- player.sendMessage(mcLocale.getString("mcPlayerListener.PartyMembers") + " (" + tempList + ChatColor.GREEN + ")");
- return true;
- } else if (args.length == 1) {
- if (args[0].equals("q") && PP.inParty()) {
- Pinstance.removeFromParty(player, PP);
-
- player.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
- return true;
- } else if (args[0].equalsIgnoreCase("?")) {
- player.sendMessage(mcLocale.getString("Party.Help4", new Object[] { LoadProperties.party }));
- player.sendMessage(mcLocale.getString("Party.Help2", new Object[] { LoadProperties.party }));
- player.sendMessage(mcLocale.getString("Party.Help5", new Object[] { LoadProperties.party }));
- player.sendMessage(mcLocale.getString("Party.Help6", new Object[] { LoadProperties.party }));
- player.sendMessage(mcLocale.getString("Party.Help7", new Object[] { LoadProperties.party }));
- player.sendMessage(mcLocale.getString("Party.Help8", new Object[] { LoadProperties.party }));
- player.sendMessage(mcLocale.getString("Party.Help9", new Object[] { LoadProperties.party }));
- } else if (args[0].equalsIgnoreCase("lock")) {
- if (PP.inParty()) {
- if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
- Pinstance.lockParty(PP.getParty());
- player.sendMessage(mcLocale.getString("Party.Locked"));
- } else {
- player.sendMessage(mcLocale.getString("Party.NotOwner"));
- }
- } else {
- player.sendMessage(mcLocale.getString("Party.InvalidName"));
- }
- } else if (args[0].equalsIgnoreCase("unlock")) {
- if (PP.inParty()) {
- if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
- Pinstance.unlockParty(PP.getParty());
- player.sendMessage(mcLocale.getString("Party.Unlocked"));
- } else {
- player.sendMessage(mcLocale.getString("Party.NotOwner"));
- }
- } else {
- player.sendMessage(mcLocale.getString("Party.InvalidName"));
- }
- // Party debugging command.
- // } else if (args[0].equalsIgnoreCase("dump")) {
- // Pinstance.dump(player);
- } else {
- if (PP.inParty()) {
- Pinstance.removeFromParty(player, PP);
- }
- Pinstance.addToParty(player, PP, args[0], false);
- return true;
- }
- } else if (args.length == 2 && PP.inParty()) {
- if (args[0].equalsIgnoreCase("password")) {
- if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
- if (Pinstance.isPartyLocked(PP.getParty())) {
- Pinstance.setPartyPassword(PP.getParty(), args[1]);
- player.sendMessage(mcLocale.getString("Party.PasswordSet", new Object[] { args[1] }));
- } else {
- player.sendMessage(mcLocale.getString("Party.IsntLocked"));
- }
- } else {
- player.sendMessage(mcLocale.getString("Party.NotOwner"));
- }
- } else if (args[0].equalsIgnoreCase("kick")) {
- if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
- if (Pinstance.isPartyLocked(PP.getParty())) {
- Player tPlayer = null;
- if (Bukkit.getServer().getPlayer(args[1]) != null)
- tPlayer = Bukkit.getServer().getPlayer(args[1]);
- if (tPlayer == null) {
- player.sendMessage(mcLocale.getString("Party.CouldNotKick", new Object[] { args[1] }));
- }
- if (!Pinstance.inSameParty(player, tPlayer)) {
- player.sendMessage(mcLocale.getString("Party.NotInYourParty", new Object[] { tPlayer.getName() }));
- } else {
- // Not an admin
- if (!mcPermissions.getInstance().admin(player)) {
- // Can't kick an admin
- if (mcPermissions.getInstance().admin(tPlayer)) {
- player.sendMessage(mcLocale.getString("Party.CouldNotKick", new Object[] { tPlayer.getName() }));
- }
- }
- PlayerProfile tPP = Users.getProfile(tPlayer);
-
- Pinstance.removeFromParty(tPlayer, tPP);
-
- tPlayer.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
- }
- } else {
- player.sendMessage(mcLocale.getString("Party.IsntLocked"));
- }
- } else {
- player.sendMessage(mcLocale.getString("Party.NotOwner"));
- }
- } else if (args[0].equalsIgnoreCase("owner")) {
- if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
- Player tPlayer = null;
- if (Bukkit.getServer().getPlayer(args[1]) != null)
- tPlayer = Bukkit.getServer().getPlayer(args[1]);
- if (tPlayer == null) {
- player.sendMessage(mcLocale.getString("Party.CouldNotSetOwner", new Object[] { args[1] }));
- }
- if (!Pinstance.inSameParty(player, tPlayer)) {
- player.sendMessage(mcLocale.getString("Party.CouldNotSetOwner", new Object[] { tPlayer.getName() }));
- } else {
- Pinstance.setPartyLeader(PP.getParty(), tPlayer.getName());
- }
- } else {
- player.sendMessage(mcLocale.getString("Party.NotOwner"));
- }
- } else {
- Pinstance.removeFromParty(player, PP);
- Pinstance.addToParty(player, PP, args[0], false, args[1]);
- }
- } else if (args.length == 2 && !PP.inParty()) {
- Pinstance.addToParty(player, PP, args[0], false, args[1]);
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.party;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+
+public class PartyCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.partyEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().party(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ Party Pinstance = Party.getInstance();
+
+ if (PP.inParty() && (!Pinstance.isParty(PP.getParty()) || !Pinstance.isInParty(player, PP))) {
+ Pinstance.addToParty(player, PP, PP.getParty(), false);
+ }
+
+ if (args.length == 0 && !PP.inParty()) {
+ player.sendMessage(mcLocale.getString("Party.Help1", new Object[] { LoadProperties.party }));
+ player.sendMessage(mcLocale.getString("Party.Help2", new Object[] { LoadProperties.party }));
+ player.sendMessage(mcLocale.getString("Party.Help3", new Object[] { LoadProperties.party }));
+ return true;
+ } else if (args.length == 0 && PP.inParty()) {
+ String tempList = "";
+ int x = 0;
+ for (Player p : Bukkit.getServer().getOnlinePlayers()) {
+ if (PP.getParty().equals(Users.getProfile(p).getParty())) {
+ if (p != null && x + 1 >= Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers())) {
+ if (Pinstance.isPartyLeader(p.getName(), PP.getParty())) {
+ tempList += ChatColor.GOLD + p.getName();
+ x++;
+ } else {
+ tempList += ChatColor.WHITE + p.getName();
+ x++;
+ }
+ }
+ if (p != null && x < Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers())) {
+ if (Pinstance.isPartyLeader(p.getName(), PP.getParty())) {
+ tempList += ChatColor.GOLD + p.getName() + ", ";
+ x++;
+ } else {
+ tempList += ChatColor.WHITE + p.getName() + ", ";
+ x++;
+ }
+ }
+ }
+ }
+ player.sendMessage(mcLocale.getString("mcPlayerListener.YouAreInParty", new Object[] { PP.getParty() }));
+ player.sendMessage(mcLocale.getString("mcPlayerListener.PartyMembers") + " (" + tempList + ChatColor.GREEN + ")");
+ return true;
+ } else if (args.length == 1) {
+ if (args[0].equals("q") && PP.inParty()) {
+ Pinstance.removeFromParty(player, PP);
+
+ player.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
+ return true;
+ } else if (args[0].equalsIgnoreCase("?")) {
+ player.sendMessage(mcLocale.getString("Party.Help4", new Object[] { LoadProperties.party }));
+ player.sendMessage(mcLocale.getString("Party.Help2", new Object[] { LoadProperties.party }));
+ player.sendMessage(mcLocale.getString("Party.Help5", new Object[] { LoadProperties.party }));
+ player.sendMessage(mcLocale.getString("Party.Help6", new Object[] { LoadProperties.party }));
+ player.sendMessage(mcLocale.getString("Party.Help7", new Object[] { LoadProperties.party }));
+ player.sendMessage(mcLocale.getString("Party.Help8", new Object[] { LoadProperties.party }));
+ player.sendMessage(mcLocale.getString("Party.Help9", new Object[] { LoadProperties.party }));
+ } else if (args[0].equalsIgnoreCase("lock")) {
+ if (PP.inParty()) {
+ if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+ Pinstance.lockParty(PP.getParty());
+ player.sendMessage(mcLocale.getString("Party.Locked"));
+ } else {
+ player.sendMessage(mcLocale.getString("Party.NotOwner"));
+ }
+ } else {
+ player.sendMessage(mcLocale.getString("Party.InvalidName"));
+ }
+ } else if (args[0].equalsIgnoreCase("unlock")) {
+ if (PP.inParty()) {
+ if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+ Pinstance.unlockParty(PP.getParty());
+ player.sendMessage(mcLocale.getString("Party.Unlocked"));
+ } else {
+ player.sendMessage(mcLocale.getString("Party.NotOwner"));
+ }
+ } else {
+ player.sendMessage(mcLocale.getString("Party.InvalidName"));
+ }
+ // Party debugging command.
+ // } else if (args[0].equalsIgnoreCase("dump")) {
+ // Pinstance.dump(player);
+ } else {
+ if (PP.inParty()) {
+ Pinstance.removeFromParty(player, PP);
+ }
+ Pinstance.addToParty(player, PP, args[0], false);
+ return true;
+ }
+ } else if (args.length == 2 && PP.inParty()) {
+ if (args[0].equalsIgnoreCase("password")) {
+ if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+ if (Pinstance.isPartyLocked(PP.getParty())) {
+ Pinstance.setPartyPassword(PP.getParty(), args[1]);
+ player.sendMessage(mcLocale.getString("Party.PasswordSet", new Object[] { args[1] }));
+ } else {
+ player.sendMessage(mcLocale.getString("Party.IsntLocked"));
+ }
+ } else {
+ player.sendMessage(mcLocale.getString("Party.NotOwner"));
+ }
+ } else if (args[0].equalsIgnoreCase("kick")) {
+ if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+ if (Pinstance.isPartyLocked(PP.getParty())) {
+ Player tPlayer = null;
+ if (Bukkit.getServer().getPlayer(args[1]) != null)
+ tPlayer = Bukkit.getServer().getPlayer(args[1]);
+ if (tPlayer == null) {
+ player.sendMessage(mcLocale.getString("Party.CouldNotKick", new Object[] { args[1] }));
+ }
+ if (!Pinstance.inSameParty(player, tPlayer)) {
+ player.sendMessage(mcLocale.getString("Party.NotInYourParty", new Object[] { tPlayer.getName() }));
+ } else {
+ // Not an admin
+ if (!mcPermissions.getInstance().admin(player)) {
+ // Can't kick an admin
+ if (mcPermissions.getInstance().admin(tPlayer)) {
+ player.sendMessage(mcLocale.getString("Party.CouldNotKick", new Object[] { tPlayer.getName() }));
+ }
+ }
+ PlayerProfile tPP = Users.getProfile(tPlayer);
+
+ Pinstance.removeFromParty(tPlayer, tPP);
+
+ tPlayer.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
+ }
+ } else {
+ player.sendMessage(mcLocale.getString("Party.IsntLocked"));
+ }
+ } else {
+ player.sendMessage(mcLocale.getString("Party.NotOwner"));
+ }
+ } else if (args[0].equalsIgnoreCase("owner")) {
+ if (Pinstance.isPartyLeader(player.getName(), PP.getParty())) {
+ Player tPlayer = null;
+ if (Bukkit.getServer().getPlayer(args[1]) != null)
+ tPlayer = Bukkit.getServer().getPlayer(args[1]);
+ if (tPlayer == null) {
+ player.sendMessage(mcLocale.getString("Party.CouldNotSetOwner", new Object[] { args[1] }));
+ }
+ if (!Pinstance.inSameParty(player, tPlayer)) {
+ player.sendMessage(mcLocale.getString("Party.CouldNotSetOwner", new Object[] { tPlayer.getName() }));
+ } else {
+ Pinstance.setPartyLeader(PP.getParty(), tPlayer.getName());
+ }
+ } else {
+ player.sendMessage(mcLocale.getString("Party.NotOwner"));
+ }
+ } else {
+ Pinstance.removeFromParty(player, PP);
+ Pinstance.addToParty(player, PP, args[0], false, args[1]);
+ }
+ } else if (args.length == 2 && !PP.inParty()) {
+ Pinstance.addToParty(player, PP, args[0], false, args[1]);
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/party/PtpCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PtpCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/party/PtpCommand.java
rename to src/main/java/com/gmail/nossr50/commands/party/PtpCommand.java
index 5a2d47c80..cada2df24 100644
--- a/src/com/gmail/nossr50/commands/party/PtpCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/party/PtpCommand.java
@@ -1,62 +1,62 @@
-package com.gmail.nossr50.commands.party;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class PtpCommand implements CommandExecutor {
- private final mcMMO plugin;
-
- public PtpCommand(mcMMO instance) {
- this.plugin = instance;
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.ptpEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (!mcPermissions.getInstance().partyTeleport(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
- if (args.length < 1) {
- player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.ptp + " ");
- return true;
- }
- if (plugin.getServer().getPlayer(args[0]) == null) {
- player.sendMessage("That is not a valid player");
- }
-
- if (plugin.getServer().getPlayer(args[0]) != null) {
- Player target = plugin.getServer().getPlayer(args[0]);
- PlayerProfile PPt = Users.getProfile(target);
- if (PP.getParty().equals(PPt.getParty())) {
- player.teleport(target);
- player.sendMessage(ChatColor.GREEN + "You have teleported to " + target.getName());
- target.sendMessage(ChatColor.GREEN + player.getName() + " has teleported to you.");
- }
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.party;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class PtpCommand implements CommandExecutor {
+ private final mcMMO plugin;
+
+ public PtpCommand(mcMMO instance) {
+ this.plugin = instance;
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.ptpEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (!mcPermissions.getInstance().partyTeleport(player)) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+ if (args.length < 1) {
+ player.sendMessage(ChatColor.RED + "Usage is /" + LoadProperties.ptp + " ");
+ return true;
+ }
+ if (plugin.getServer().getPlayer(args[0]) == null) {
+ player.sendMessage("That is not a valid player");
+ }
+
+ if (plugin.getServer().getPlayer(args[0]) != null) {
+ Player target = plugin.getServer().getPlayer(args[0]);
+ PlayerProfile PPt = Users.getProfile(target);
+ if (PP.getParty().equals(PPt.getParty())) {
+ player.teleport(target);
+ player.sendMessage(ChatColor.GREEN + "You have teleported to " + target.getName());
+ target.sendMessage(ChatColor.GREEN + player.getName() + " has teleported to you.");
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java
index c22c19e59..ca2272364 100644
--- a/src/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java
@@ -1,52 +1,52 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class AcrobaticsCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- String dodgepercentage;
- float skillvalue = (float) PP.getSkillLevel(SkillType.ACROBATICS);
- String percentage = String.valueOf((skillvalue / 1000) * 100);
- String gracepercentage = String.valueOf(((skillvalue / 1000) * 100) * 2);
-
- if (PP.getSkillLevel(SkillType.ACROBATICS) <= 800)
- dodgepercentage = String.valueOf((skillvalue / 4000 * 100));
- else
- dodgepercentage = "20";
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillAcrobatics") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainAcrobatics") }));
-
- if (mcPermissions.getInstance().acrobatics(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.ACROBATICS), PP.getSkillXpLevel(SkillType.ACROBATICS), PP.getXpToLevel(SkillType.ACROBATICS) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics1_0"), mcLocale.getString("m.EffectsAcrobatics1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics2_0"), mcLocale.getString("m.EffectsAcrobatics2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics3_0"), mcLocale.getString("m.EffectsAcrobatics3_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.AcrobaticsRollChance", new Object[] { percentage }));
- player.sendMessage(mcLocale.getString("m.AcrobaticsGracefulRollChance", new Object[] { gracepercentage }));
- player.sendMessage(mcLocale.getString("m.AcrobaticsDodgeChance", new Object[] { dodgepercentage }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class AcrobaticsCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ String dodgepercentage;
+ float skillvalue = (float) PP.getSkillLevel(SkillType.ACROBATICS);
+ String percentage = String.valueOf((skillvalue / 1000) * 100);
+ String gracepercentage = String.valueOf(((skillvalue / 1000) * 100) * 2);
+
+ if (PP.getSkillLevel(SkillType.ACROBATICS) <= 800)
+ dodgepercentage = String.valueOf((skillvalue / 4000 * 100));
+ else
+ dodgepercentage = "20";
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillAcrobatics") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainAcrobatics") }));
+
+ if (mcPermissions.getInstance().acrobatics(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.ACROBATICS), PP.getSkillXpLevel(SkillType.ACROBATICS), PP.getXpToLevel(SkillType.ACROBATICS) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics1_0"), mcLocale.getString("m.EffectsAcrobatics1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics2_0"), mcLocale.getString("m.EffectsAcrobatics2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAcrobatics3_0"), mcLocale.getString("m.EffectsAcrobatics3_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.AcrobaticsRollChance", new Object[] { percentage }));
+ player.sendMessage(mcLocale.getString("m.AcrobaticsGracefulRollChance", new Object[] { gracepercentage }));
+ player.sendMessage(mcLocale.getString("m.AcrobaticsDodgeChance", new Object[] { dodgepercentage }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/ArcheryCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/skills/ArcheryCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java
index a2a34c644..b7853d3ec 100644
--- a/src/com/gmail/nossr50/commands/skills/ArcheryCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java
@@ -1,63 +1,63 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class ArcheryCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- float skillvalue = (float) PP.getSkillLevel(SkillType.ARCHERY);
- String percentage = String.valueOf((skillvalue / 1000) * 100);
-
- int ignition = 20;
- if (PP.getSkillLevel(SkillType.ARCHERY) >= 200)
- ignition += 20;
- if (PP.getSkillLevel(SkillType.ARCHERY) >= 400)
- ignition += 20;
- if (PP.getSkillLevel(SkillType.ARCHERY) >= 600)
- ignition += 20;
- if (PP.getSkillLevel(SkillType.ARCHERY) >= 800)
- ignition += 20;
- if (PP.getSkillLevel(SkillType.ARCHERY) >= 1000)
- ignition += 20;
-
- String percentagedaze;
- if (PP.getSkillLevel(SkillType.ARCHERY) < 1000)
- percentagedaze = String.valueOf((skillvalue / 2000) * 100);
- else
- percentagedaze = "50";
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillArchery") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainArchery") }));
-
- if (mcPermissions.getInstance().archery(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.ARCHERY), PP.getSkillXpLevel(SkillType.ARCHERY), PP.getXpToLevel(SkillType.ARCHERY) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery1_0"), mcLocale.getString("m.EffectsArchery1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery2_0"), mcLocale.getString("m.EffectsArchery2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery4_0"), mcLocale.getString("m.EffectsArchery4_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.ArcheryDazeChance", new Object[] { percentagedaze }));
- player.sendMessage(mcLocale.getString("m.ArcheryRetrieveChance", new Object[] { percentage }));
- player.sendMessage(mcLocale.getString("m.ArcheryIgnitionLength", new Object[] { (ignition / 20) }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class ArcheryCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ float skillvalue = (float) PP.getSkillLevel(SkillType.ARCHERY);
+ String percentage = String.valueOf((skillvalue / 1000) * 100);
+
+ int ignition = 20;
+ if (PP.getSkillLevel(SkillType.ARCHERY) >= 200)
+ ignition += 20;
+ if (PP.getSkillLevel(SkillType.ARCHERY) >= 400)
+ ignition += 20;
+ if (PP.getSkillLevel(SkillType.ARCHERY) >= 600)
+ ignition += 20;
+ if (PP.getSkillLevel(SkillType.ARCHERY) >= 800)
+ ignition += 20;
+ if (PP.getSkillLevel(SkillType.ARCHERY) >= 1000)
+ ignition += 20;
+
+ String percentagedaze;
+ if (PP.getSkillLevel(SkillType.ARCHERY) < 1000)
+ percentagedaze = String.valueOf((skillvalue / 2000) * 100);
+ else
+ percentagedaze = "50";
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillArchery") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainArchery") }));
+
+ if (mcPermissions.getInstance().archery(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.ARCHERY), PP.getSkillXpLevel(SkillType.ARCHERY), PP.getXpToLevel(SkillType.ARCHERY) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery1_0"), mcLocale.getString("m.EffectsArchery1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery2_0"), mcLocale.getString("m.EffectsArchery2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsArchery4_0"), mcLocale.getString("m.EffectsArchery4_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.ArcheryDazeChance", new Object[] { percentagedaze }));
+ player.sendMessage(mcLocale.getString("m.ArcheryRetrieveChance", new Object[] { percentage }));
+ player.sendMessage(mcLocale.getString("m.ArcheryIgnitionLength", new Object[] { (ignition / 20) }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/AxesCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/skills/AxesCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java
index 1b14df8f9..d94543672 100644
--- a/src/com/gmail/nossr50/commands/skills/AxesCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java
@@ -1,62 +1,62 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class AxesCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- String percentage;
-
- float skillvalue = (float) PP.getSkillLevel(SkillType.AXES);
- if (PP.getSkillLevel(SkillType.AXES) < 750)
- percentage = String.valueOf((skillvalue / 1000) * 100);
- else
- percentage = "75";
-
- int ticks = 2;
- int x = PP.getSkillLevel(SkillType.AXES);
- while (x >= 50) {
- x -= 50;
- ticks++;
- }
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillAxes") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainAxes") }));
-
- if (mcPermissions.getInstance().axes(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.AXES), PP.getSkillXpLevel(SkillType.AXES), PP.getXpToLevel(SkillType.AXES) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes1_0"), mcLocale.getString("m.EffectsAxes1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes2_0"), mcLocale.getString("m.EffectsAxes2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes3_0"), mcLocale.getString("m.EffectsAxes3_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.AxesCritChance", new Object[] { percentage }));
-
- if (PP.getSkillLevel(SkillType.AXES) < 500)
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockAxes1") }));
- else
- player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusAxes1_0"), mcLocale.getString("m.AbilBonusAxes1_1") }));
-
- player.sendMessage(mcLocale.getString("m.AxesSkullLength", new Object[] { ticks }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class AxesCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ String percentage;
+
+ float skillvalue = (float) PP.getSkillLevel(SkillType.AXES);
+ if (PP.getSkillLevel(SkillType.AXES) < 750)
+ percentage = String.valueOf((skillvalue / 1000) * 100);
+ else
+ percentage = "75";
+
+ int ticks = 2;
+ int x = PP.getSkillLevel(SkillType.AXES);
+ while (x >= 50) {
+ x -= 50;
+ ticks++;
+ }
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillAxes") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainAxes") }));
+
+ if (mcPermissions.getInstance().axes(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.AXES), PP.getSkillXpLevel(SkillType.AXES), PP.getXpToLevel(SkillType.AXES) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes1_0"), mcLocale.getString("m.EffectsAxes1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes2_0"), mcLocale.getString("m.EffectsAxes2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsAxes3_0"), mcLocale.getString("m.EffectsAxes3_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.AxesCritChance", new Object[] { percentage }));
+
+ if (PP.getSkillLevel(SkillType.AXES) < 500)
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockAxes1") }));
+ else
+ player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusAxes1_0"), mcLocale.getString("m.AbilBonusAxes1_1") }));
+
+ player.sendMessage(mcLocale.getString("m.AxesSkullLength", new Object[] { ticks }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/ExcavationCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/skills/ExcavationCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java
index 14e424db0..8578faef1 100644
--- a/src/com/gmail/nossr50/commands/skills/ExcavationCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java
@@ -1,46 +1,46 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class ExcavationCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- int ticks = 2;
- int x = PP.getSkillLevel(SkillType.EXCAVATION);
- while (x >= 50) {
- x -= 50;
- ticks++;
- }
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillExcavation") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainExcavation") }));
-
- if (mcPermissions.getInstance().excavation(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.EXCAVATION), PP.getSkillXpLevel(SkillType.EXCAVATION), PP.getXpToLevel(SkillType.EXCAVATION) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsExcavation1_0"), mcLocale.getString("m.EffectsExcavation1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsExcavation2_0"), mcLocale.getString("m.EffectsExcavation2_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.ExcavationGreenTerraLength", new Object[] { ticks }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class ExcavationCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ int ticks = 2;
+ int x = PP.getSkillLevel(SkillType.EXCAVATION);
+ while (x >= 50) {
+ x -= 50;
+ ticks++;
+ }
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillExcavation") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainExcavation") }));
+
+ if (mcPermissions.getInstance().excavation(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.EXCAVATION), PP.getSkillXpLevel(SkillType.EXCAVATION), PP.getXpToLevel(SkillType.EXCAVATION) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsExcavation1_0"), mcLocale.getString("m.EffectsExcavation1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsExcavation2_0"), mcLocale.getString("m.EffectsExcavation2_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.ExcavationGreenTerraLength", new Object[] { ticks }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/FishingCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/skills/FishingCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java
index 9d920300c..fa9475453 100644
--- a/src/com/gmail/nossr50/commands/skills/FishingCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java
@@ -1,47 +1,47 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.Fishing;
-
-public class FishingCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillFishing") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainFishing") }));
-
- if (mcPermissions.getInstance().fishing(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.FISHING), PP.getSkillXpLevel(SkillType.FISHING), PP.getXpToLevel(SkillType.FISHING) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing1_0"), mcLocale.getString("m.EffectsFishing1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing2_0"), mcLocale.getString("m.EffectsFishing2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing3_0"), mcLocale.getString("m.EffectsFishing3_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.FishingRank", new Object[] { Fishing.getFishingLootTier(PP) }));
- player.sendMessage(mcLocale.getString("m.FishingMagicInfo"));
-
- if (PP.getSkillLevel(SkillType.FISHING) < 150)
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockFishing1") }));
- else
- player.sendMessage(mcLocale.getString("m.ShakeInfo", new Object[] { Fishing.getFishingLootTier(PP) }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Fishing;
+
+public class FishingCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillFishing") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainFishing") }));
+
+ if (mcPermissions.getInstance().fishing(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.FISHING), PP.getSkillXpLevel(SkillType.FISHING), PP.getXpToLevel(SkillType.FISHING) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing1_0"), mcLocale.getString("m.EffectsFishing1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing2_0"), mcLocale.getString("m.EffectsFishing2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsFishing3_0"), mcLocale.getString("m.EffectsFishing3_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.FishingRank", new Object[] { Fishing.getFishingLootTier(PP) }));
+ player.sendMessage(mcLocale.getString("m.FishingMagicInfo"));
+
+ if (PP.getSkillLevel(SkillType.FISHING) < 150)
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockFishing1") }));
+ else
+ player.sendMessage(mcLocale.getString("m.ShakeInfo", new Object[] { Fishing.getFishingLootTier(PP) }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/HerbalismCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/skills/HerbalismCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java
index d43d7c2a9..93572cd38 100644
--- a/src/com/gmail/nossr50/commands/skills/HerbalismCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java
@@ -1,63 +1,63 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class HerbalismCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- int bonus = 0;
- if (PP.getSkillLevel(SkillType.HERBALISM) >= 200)
- bonus++;
- if (PP.getSkillLevel(SkillType.HERBALISM) >= 400)
- bonus++;
- if (PP.getSkillLevel(SkillType.HERBALISM) >= 600)
- bonus++;
-
- int ticks = 2;
- int x = PP.getSkillLevel(SkillType.HERBALISM);
- while (x >= 50) {
- x -= 50;
- ticks++;
- }
-
- float skillvalue = (float) PP.getSkillLevel(SkillType.HERBALISM);
-
- String percentage = String.valueOf((skillvalue / 1000) * 100);
- String gpercentage = String.valueOf((skillvalue / 1500) * 100);
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillHerbalism") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainHerbalism") }));
-
- if (mcPermissions.getInstance().herbalism(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism1_0"), mcLocale.getString("m.EffectsHerbalism1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism2_0"), mcLocale.getString("m.EffectsHerbalism2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism3_0"), mcLocale.getString("m.EffectsHerbalism3_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism5_0"), mcLocale.getString("m.EffectsHerbalism5_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.HerbalismGreenTerraLength", new Object[] { ticks }));
- player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbChance", new Object[] { gpercentage }));
- player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbStage", new Object[] { bonus }));
- player.sendMessage(mcLocale.getString("m.HerbalismDoubleDropChance", new Object[] { percentage }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class HerbalismCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ int bonus = 0;
+ if (PP.getSkillLevel(SkillType.HERBALISM) >= 200)
+ bonus++;
+ if (PP.getSkillLevel(SkillType.HERBALISM) >= 400)
+ bonus++;
+ if (PP.getSkillLevel(SkillType.HERBALISM) >= 600)
+ bonus++;
+
+ int ticks = 2;
+ int x = PP.getSkillLevel(SkillType.HERBALISM);
+ while (x >= 50) {
+ x -= 50;
+ ticks++;
+ }
+
+ float skillvalue = (float) PP.getSkillLevel(SkillType.HERBALISM);
+
+ String percentage = String.valueOf((skillvalue / 1000) * 100);
+ String gpercentage = String.valueOf((skillvalue / 1500) * 100);
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillHerbalism") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainHerbalism") }));
+
+ if (mcPermissions.getInstance().herbalism(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism1_0"), mcLocale.getString("m.EffectsHerbalism1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism2_0"), mcLocale.getString("m.EffectsHerbalism2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism3_0"), mcLocale.getString("m.EffectsHerbalism3_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsHerbalism5_0"), mcLocale.getString("m.EffectsHerbalism5_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.HerbalismGreenTerraLength", new Object[] { ticks }));
+ player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbChance", new Object[] { gpercentage }));
+ player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbStage", new Object[] { bonus }));
+ player.sendMessage(mcLocale.getString("m.HerbalismDoubleDropChance", new Object[] { percentage }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/MiningCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/skills/MiningCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java
index 9256eb047..f8e3bb3a2 100644
--- a/src/com/gmail/nossr50/commands/skills/MiningCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java
@@ -1,48 +1,48 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class MiningCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- float skillvalue = (float) PP.getSkillLevel(SkillType.MINING);
- String percentage = String.valueOf((skillvalue / 1000) * 100);
- int ticks = 2;
- int x = PP.getSkillLevel(SkillType.MINING);
- while (x >= 50) {
- x -= 50;
- ticks++;
- }
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillMining") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainMining") }));
-
- if (mcPermissions.getInstance().mining(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.MINING), PP.getSkillXpLevel(SkillType.MINING), PP.getXpToLevel(SkillType.MINING) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsMining1_0"), mcLocale.getString("m.EffectsMining1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsMining2_0"), mcLocale.getString("m.EffectsMining2_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.MiningDoubleDropChance", new Object[] { percentage }));
- player.sendMessage(mcLocale.getString("m.MiningSuperBreakerLength", new Object[] { ticks }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class MiningCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ float skillvalue = (float) PP.getSkillLevel(SkillType.MINING);
+ String percentage = String.valueOf((skillvalue / 1000) * 100);
+ int ticks = 2;
+ int x = PP.getSkillLevel(SkillType.MINING);
+ while (x >= 50) {
+ x -= 50;
+ ticks++;
+ }
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillMining") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainMining") }));
+
+ if (mcPermissions.getInstance().mining(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.MINING), PP.getSkillXpLevel(SkillType.MINING), PP.getXpToLevel(SkillType.MINING) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsMining1_0"), mcLocale.getString("m.EffectsMining1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsMining2_0"), mcLocale.getString("m.EffectsMining2_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.MiningDoubleDropChance", new Object[] { percentage }));
+ player.sendMessage(mcLocale.getString("m.MiningSuperBreakerLength", new Object[] { ticks }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/RepairCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/skills/RepairCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java
index fad3291fd..6d68d1298 100644
--- a/src/com/gmail/nossr50/commands/skills/RepairCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java
@@ -1,53 +1,53 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.Repair;
-
-public class RepairCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- float skillvalue = (float) PP.getSkillLevel(SkillType.REPAIR);
- String percentage = String.valueOf((skillvalue / 1000) * 100);
- String repairmastery = String.valueOf((skillvalue / 500) * 100);
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillRepair") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainRepair") }));
-
- if (mcPermissions.getInstance().repair(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.REPAIR), PP.getSkillXpLevel(SkillType.REPAIR), PP.getXpToLevel(SkillType.REPAIR) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair1_0"), mcLocale.getString("m.EffectsRepair1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair2_0"), mcLocale.getString("m.EffectsRepair2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair3_0"), mcLocale.getString("m.EffectsRepair3_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair4_0", new Object[] { LoadProperties.repairdiamondlevel }), mcLocale.getString("m.EffectsRepair4_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair5_0"), mcLocale.getString("m.EffectsRepair5_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.RepairRepairMastery", new Object[] { repairmastery }));
- player.sendMessage(mcLocale.getString("m.RepairSuperRepairChance", new Object[] { percentage }));
- player.sendMessage(mcLocale.getString("m.ArcaneForgingRank", new Object[] { Repair.getArcaneForgingRank(PP) }));
- player.sendMessage(mcLocale.getString("m.ArcaneEnchantKeepChance", new Object[] { Repair.getEnchantChance(Repair.getArcaneForgingRank(PP)) }));
- player.sendMessage(mcLocale.getString("m.ArcaneEnchantDowngradeChance", new Object[] { Repair.getDowngradeChance(Repair.getArcaneForgingRank(PP)) }));
- player.sendMessage(mcLocale.getString("m.ArcaneForgingMilestones"));
- player.sendMessage(mcLocale.getString("m.ArcaneForgingMilestones2"));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Repair;
+
+public class RepairCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ float skillvalue = (float) PP.getSkillLevel(SkillType.REPAIR);
+ String percentage = String.valueOf((skillvalue / 1000) * 100);
+ String repairmastery = String.valueOf((skillvalue / 500) * 100);
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillRepair") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainRepair") }));
+
+ if (mcPermissions.getInstance().repair(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.REPAIR), PP.getSkillXpLevel(SkillType.REPAIR), PP.getXpToLevel(SkillType.REPAIR) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair1_0"), mcLocale.getString("m.EffectsRepair1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair2_0"), mcLocale.getString("m.EffectsRepair2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair3_0"), mcLocale.getString("m.EffectsRepair3_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair4_0", new Object[] { LoadProperties.repairdiamondlevel }), mcLocale.getString("m.EffectsRepair4_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsRepair5_0"), mcLocale.getString("m.EffectsRepair5_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.RepairRepairMastery", new Object[] { repairmastery }));
+ player.sendMessage(mcLocale.getString("m.RepairSuperRepairChance", new Object[] { percentage }));
+ player.sendMessage(mcLocale.getString("m.ArcaneForgingRank", new Object[] { Repair.getArcaneForgingRank(PP) }));
+ player.sendMessage(mcLocale.getString("m.ArcaneEnchantKeepChance", new Object[] { Repair.getEnchantChance(Repair.getArcaneForgingRank(PP)) }));
+ player.sendMessage(mcLocale.getString("m.ArcaneEnchantDowngradeChance", new Object[] { Repair.getDowngradeChance(Repair.getArcaneForgingRank(PP)) }));
+ player.sendMessage(mcLocale.getString("m.ArcaneForgingMilestones"));
+ player.sendMessage(mcLocale.getString("m.ArcaneForgingMilestones2"));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/SwordsCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/skills/SwordsCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java
index 41b30f45a..0e6a43672 100644
--- a/src/com/gmail/nossr50/commands/skills/SwordsCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java
@@ -1,69 +1,69 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class SwordsCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- int bleedrank = 2;
- String percentage, counterattackpercentage;
-
- float skillvalue = (float) PP.getSkillLevel(SkillType.SWORDS);
- if (PP.getSkillLevel(SkillType.SWORDS) < 750)
- percentage = String.valueOf((skillvalue / 1000) * 100);
- else
- percentage = "75";
-
- if (skillvalue >= 750)
- bleedrank += 1;
-
- if (PP.getSkillLevel(SkillType.SWORDS) <= 600)
- counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
- else
- counterattackpercentage = "30";
-
- int ticks = 2;
- int x = PP.getSkillLevel(SkillType.SWORDS);
- while (x >= 50) {
- x -= 50;
- ticks++;
- }
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillSwords") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainSwords") }));
-
- if (mcPermissions.getInstance().swords(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.SWORDS), PP.getSkillXpLevel(SkillType.SWORDS), PP.getXpToLevel(SkillType.SWORDS) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords1_0"), mcLocale.getString("m.EffectsSwords1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords2_0"), mcLocale.getString("m.EffectsSwords2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords3_0"), mcLocale.getString("m.EffectsSwords3_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords5_0"), mcLocale.getString("m.EffectsSwords5_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.SwordsCounterAttChance", new Object[] { counterattackpercentage }));
- player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] { bleedrank }));
- player.sendMessage(mcLocale.getString("m.SwordsTickNote"));
- player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] { percentage }));
- player.sendMessage(mcLocale.getString("m.SwordsSSLength", new Object[] { ticks }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class SwordsCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ int bleedrank = 2;
+ String percentage, counterattackpercentage;
+
+ float skillvalue = (float) PP.getSkillLevel(SkillType.SWORDS);
+ if (PP.getSkillLevel(SkillType.SWORDS) < 750)
+ percentage = String.valueOf((skillvalue / 1000) * 100);
+ else
+ percentage = "75";
+
+ if (skillvalue >= 750)
+ bleedrank += 1;
+
+ if (PP.getSkillLevel(SkillType.SWORDS) <= 600)
+ counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
+ else
+ counterattackpercentage = "30";
+
+ int ticks = 2;
+ int x = PP.getSkillLevel(SkillType.SWORDS);
+ while (x >= 50) {
+ x -= 50;
+ ticks++;
+ }
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillSwords") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainSwords") }));
+
+ if (mcPermissions.getInstance().swords(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.SWORDS), PP.getSkillXpLevel(SkillType.SWORDS), PP.getXpToLevel(SkillType.SWORDS) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords1_0"), mcLocale.getString("m.EffectsSwords1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords2_0"), mcLocale.getString("m.EffectsSwords2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords3_0"), mcLocale.getString("m.EffectsSwords3_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsSwords5_0"), mcLocale.getString("m.EffectsSwords5_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.SwordsCounterAttChance", new Object[] { counterattackpercentage }));
+ player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] { bleedrank }));
+ player.sendMessage(mcLocale.getString("m.SwordsTickNote"));
+ player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] { percentage }));
+ player.sendMessage(mcLocale.getString("m.SwordsSSLength", new Object[] { ticks }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/TamingCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/skills/TamingCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java
index ee1b11e94..de8f65a86 100644
--- a/src/com/gmail/nossr50/commands/skills/TamingCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java
@@ -1,70 +1,70 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class TamingCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- float skillvalue = (float) PP.getSkillLevel(SkillType.TAMING);
- String percentage = String.valueOf((skillvalue / 1000) * 100);
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillTaming") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainTaming") }));
-
- if (mcPermissions.getInstance().taming(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.TAMING), PP.getSkillXpLevel(SkillType.TAMING), PP.getXpToLevel(SkillType.TAMING) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming1_0"), mcLocale.getString("m.EffectsTaming1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming2_0"), mcLocale.getString("m.EffectsTaming2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming3_0"), mcLocale.getString("m.EffectsTaming3_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming4_0"), mcLocale.getString("m.EffectsTaming4_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming5_0"), mcLocale.getString("m.EffectsTaming5_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming6_0"), mcLocale.getString("m.EffectsTaming6_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming7_0"), mcLocale.getString("m.EffectsTaming7_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTaming7_2", new Object[] { LoadProperties.bonesConsumedByCOTW }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
-
- if (PP.getSkillLevel(SkillType.TAMING) < 100)
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming1") }));
- else
- player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming1_0"), mcLocale.getString("m.AbilBonusTaming1_1") }));
-
- if (PP.getSkillLevel(SkillType.TAMING) < 250)
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming2") }));
- else
- player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming2_0"), mcLocale.getString("m.AbilBonusTaming2_1") }));
-
- if (PP.getSkillLevel(SkillType.TAMING) < 500)
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming3") }));
- else
- player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming3_0"), mcLocale.getString("m.AbilBonusTaming3_1") }));
-
- if (PP.getSkillLevel(SkillType.TAMING) < 750)
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming4") }));
- else
- player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming4_0"), mcLocale.getString("m.AbilBonusTaming4_1") }));
-
- player.sendMessage(mcLocale.getString("m.TamingGoreChance", new Object[] { percentage }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class TamingCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ float skillvalue = (float) PP.getSkillLevel(SkillType.TAMING);
+ String percentage = String.valueOf((skillvalue / 1000) * 100);
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillTaming") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainTaming") }));
+
+ if (mcPermissions.getInstance().taming(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.TAMING), PP.getSkillXpLevel(SkillType.TAMING), PP.getXpToLevel(SkillType.TAMING) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming1_0"), mcLocale.getString("m.EffectsTaming1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming2_0"), mcLocale.getString("m.EffectsTaming2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming3_0"), mcLocale.getString("m.EffectsTaming3_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming4_0"), mcLocale.getString("m.EffectsTaming4_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming5_0"), mcLocale.getString("m.EffectsTaming5_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming6_0"), mcLocale.getString("m.EffectsTaming6_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsTaming7_0"), mcLocale.getString("m.EffectsTaming7_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTaming7_2", new Object[] { LoadProperties.bonesConsumedByCOTW }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+
+ if (PP.getSkillLevel(SkillType.TAMING) < 100)
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming1") }));
+ else
+ player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming1_0"), mcLocale.getString("m.AbilBonusTaming1_1") }));
+
+ if (PP.getSkillLevel(SkillType.TAMING) < 250)
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming2") }));
+ else
+ player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming2_0"), mcLocale.getString("m.AbilBonusTaming2_1") }));
+
+ if (PP.getSkillLevel(SkillType.TAMING) < 500)
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming3") }));
+ else
+ player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming3_0"), mcLocale.getString("m.AbilBonusTaming3_1") }));
+
+ if (PP.getSkillLevel(SkillType.TAMING) < 750)
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockTaming4") }));
+ else
+ player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusTaming4_0"), mcLocale.getString("m.AbilBonusTaming4_1") }));
+
+ player.sendMessage(mcLocale.getString("m.TamingGoreChance", new Object[] { percentage }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/UnarmedCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/skills/UnarmedCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java
index 4e6b4931e..21a08f4e4 100644
--- a/src/com/gmail/nossr50/commands/skills/UnarmedCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java
@@ -1,74 +1,74 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class UnarmedCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- String percentage, arrowpercentage;
- float skillvalue = (float) PP.getSkillLevel(SkillType.UNARMED);
-
- if (PP.getSkillLevel(SkillType.UNARMED) < 1000)
- percentage = String.valueOf((skillvalue / 4000) * 100);
- else
- percentage = "25";
-
- if (PP.getSkillLevel(SkillType.UNARMED) < 1000)
- arrowpercentage = String.valueOf(((skillvalue / 1000) * 100) / 2);
- else
- arrowpercentage = "50";
-
- int ticks = 2;
- int x = PP.getSkillLevel(SkillType.UNARMED);
- while (x >= 50) {
- x -= 50;
- ticks++;
- }
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillUnarmed") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainUnarmed") }));
-
- if (mcPermissions.getInstance().unarmed(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.UNARMED), PP.getSkillXpLevel(SkillType.UNARMED), PP.getXpToLevel(SkillType.UNARMED) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed1_0"), mcLocale.getString("m.EffectsUnarmed1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed2_0"), mcLocale.getString("m.EffectsUnarmed2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed3_0"), mcLocale.getString("m.EffectsUnarmed3_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed4_0"), mcLocale.getString("m.EffectsUnarmed4_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed5_0"), mcLocale.getString("m.EffectsUnarmed5_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
- player.sendMessage(mcLocale.getString("m.UnarmedArrowDeflectChance", new Object[] { arrowpercentage }));
- player.sendMessage(mcLocale.getString("m.UnarmedDisarmChance", new Object[] { percentage }));
-
- if (PP.getSkillLevel(SkillType.UNARMED) < 250) {
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockUnarmed1") }));
- } else if (PP.getSkillLevel(SkillType.UNARMED) >= 250 && PP.getSkillLevel(SkillType.UNARMED) < 500) {
- player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusUnarmed1_0"), mcLocale.getString("m.AbilBonusUnarmed1_1") }));
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockUnarmed2") }));
- } else {
- player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusUnarmed2_0"), mcLocale.getString("m.AbilBonusUnarmed2_1") }));
- }
-
- player.sendMessage(mcLocale.getString("m.UnarmedBerserkLength", new Object[] { ticks }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class UnarmedCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ String percentage, arrowpercentage;
+ float skillvalue = (float) PP.getSkillLevel(SkillType.UNARMED);
+
+ if (PP.getSkillLevel(SkillType.UNARMED) < 1000)
+ percentage = String.valueOf((skillvalue / 4000) * 100);
+ else
+ percentage = "25";
+
+ if (PP.getSkillLevel(SkillType.UNARMED) < 1000)
+ arrowpercentage = String.valueOf(((skillvalue / 1000) * 100) / 2);
+ else
+ arrowpercentage = "50";
+
+ int ticks = 2;
+ int x = PP.getSkillLevel(SkillType.UNARMED);
+ while (x >= 50) {
+ x -= 50;
+ ticks++;
+ }
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillUnarmed") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainUnarmed") }));
+
+ if (mcPermissions.getInstance().unarmed(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.UNARMED), PP.getSkillXpLevel(SkillType.UNARMED), PP.getXpToLevel(SkillType.UNARMED) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed1_0"), mcLocale.getString("m.EffectsUnarmed1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed2_0"), mcLocale.getString("m.EffectsUnarmed2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed3_0"), mcLocale.getString("m.EffectsUnarmed3_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed4_0"), mcLocale.getString("m.EffectsUnarmed4_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsUnarmed5_0"), mcLocale.getString("m.EffectsUnarmed5_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+ player.sendMessage(mcLocale.getString("m.UnarmedArrowDeflectChance", new Object[] { arrowpercentage }));
+ player.sendMessage(mcLocale.getString("m.UnarmedDisarmChance", new Object[] { percentage }));
+
+ if (PP.getSkillLevel(SkillType.UNARMED) < 250) {
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockUnarmed1") }));
+ } else if (PP.getSkillLevel(SkillType.UNARMED) >= 250 && PP.getSkillLevel(SkillType.UNARMED) < 500) {
+ player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusUnarmed1_0"), mcLocale.getString("m.AbilBonusUnarmed1_1") }));
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockUnarmed2") }));
+ } else {
+ player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusUnarmed2_0"), mcLocale.getString("m.AbilBonusUnarmed2_1") }));
+ }
+
+ player.sendMessage(mcLocale.getString("m.UnarmedBerserkLength", new Object[] { ticks }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java
similarity index 98%
rename from src/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java
rename to src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java
index 466d8b3d8..90a79fa31 100644
--- a/src/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java
@@ -1,56 +1,56 @@
-package com.gmail.nossr50.commands.skills;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-
-public class WoodcuttingCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- float skillvalue = (float) PP.getSkillLevel(SkillType.WOODCUTTING);
- int ticks = 2;
- int x = PP.getSkillLevel(SkillType.WOODCUTTING);
- while (x >= 50) {
- x -= 50;
- ticks++;
- }
- String percentage = String.valueOf((skillvalue / 1000) * 100);
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillWoodCutting") }));
- player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainWoodCutting") }));
-
- if (mcPermissions.getInstance().woodcutting(player))
- player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.WOODCUTTING), PP.getSkillXpLevel(SkillType.WOODCUTTING), PP.getXpToLevel(SkillType.WOODCUTTING) }));
-
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting1_0"), mcLocale.getString("m.EffectsWoodCutting1_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting2_0"), mcLocale.getString("m.EffectsWoodCutting2_1") }));
- player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting3_0"), mcLocale.getString("m.EffectsWoodCutting3_1") }));
- player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
-
- if (PP.getSkillLevel(SkillType.WOODCUTTING) < 100)
- player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockWoodCutting1") }));
- else
- player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusWoodCutting1_0"), mcLocale.getString("m.AbilBonusWoodCutting1_1") }));
-
- player.sendMessage(mcLocale.getString("m.WoodCuttingDoubleDropChance", new Object[] { percentage }));
- player.sendMessage(mcLocale.getString("m.WoodCuttingTreeFellerLength", new Object[] { ticks }));
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.skills;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+
+public class WoodcuttingCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ float skillvalue = (float) PP.getSkillLevel(SkillType.WOODCUTTING);
+ int ticks = 2;
+ int x = PP.getSkillLevel(SkillType.WOODCUTTING);
+ while (x >= 50) {
+ x -= 50;
+ ticks++;
+ }
+ String percentage = String.valueOf((skillvalue / 1000) * 100);
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.SkillWoodCutting") }));
+ player.sendMessage(mcLocale.getString("m.XPGain", new Object[] { mcLocale.getString("m.XPGainWoodCutting") }));
+
+ if (mcPermissions.getInstance().woodcutting(player))
+ player.sendMessage(mcLocale.getString("m.LVL", new Object[] { PP.getSkillLevel(SkillType.WOODCUTTING), PP.getSkillXpLevel(SkillType.WOODCUTTING), PP.getXpToLevel(SkillType.WOODCUTTING) }));
+
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.Effects") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting1_0"), mcLocale.getString("m.EffectsWoodCutting1_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting2_0"), mcLocale.getString("m.EffectsWoodCutting2_1") }));
+ player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] { mcLocale.getString("m.EffectsWoodCutting3_0"), mcLocale.getString("m.EffectsWoodCutting3_1") }));
+ player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] { mcLocale.getString("m.YourStats") }));
+
+ if (PP.getSkillLevel(SkillType.WOODCUTTING) < 100)
+ player.sendMessage(mcLocale.getString("m.AbilityLockTemplate", new Object[] { mcLocale.getString("m.AbilLockWoodCutting1") }));
+ else
+ player.sendMessage(mcLocale.getString("m.AbilityBonusTemplate", new Object[] { mcLocale.getString("m.AbilBonusWoodCutting1_0"), mcLocale.getString("m.AbilBonusWoodCutting1_1") }));
+
+ player.sendMessage(mcLocale.getString("m.WoodCuttingDoubleDropChance", new Object[] { percentage }));
+ player.sendMessage(mcLocale.getString("m.WoodCuttingTreeFellerLength", new Object[] { ticks }));
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/spout/MchudCommand.java b/src/main/java/com/gmail/nossr50/commands/spout/MchudCommand.java
similarity index 96%
rename from src/com/gmail/nossr50/commands/spout/MchudCommand.java
rename to src/main/java/com/gmail/nossr50/commands/spout/MchudCommand.java
index a0f56bb9a..00b35e099 100644
--- a/src/com/gmail/nossr50/commands/spout/MchudCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/spout/MchudCommand.java
@@ -1,50 +1,50 @@
-package com.gmail.nossr50.commands.spout;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.HUDType;
-import com.gmail.nossr50.datatypes.HUDmmo;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.spout.SpoutStuff;
-
-public class MchudCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.spoutEnabled) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if(args.length >= 1)
- {
- for(HUDType x : HUDType.values())
- {
- if(x.toString().toLowerCase().equals(args[0].toLowerCase()))
- {
- if(SpoutStuff.playerHUDs.containsKey(player))
- {
- SpoutStuff.playerHUDs.get(player).resetHUD();
- SpoutStuff.playerHUDs.remove(player);
- PP.setHUDType(x);
- SpoutStuff.playerHUDs.put(player, new HUDmmo(player));
- }
- }
- }
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.spout;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.HUDType;
+import com.gmail.nossr50.datatypes.HUDmmo;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.spout.SpoutStuff;
+
+public class MchudCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.spoutEnabled) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if(args.length >= 1)
+ {
+ for(HUDType x : HUDType.values())
+ {
+ if(x.toString().toLowerCase().equals(args[0].toLowerCase()))
+ {
+ if(SpoutStuff.playerHUDs.containsKey(player))
+ {
+ SpoutStuff.playerHUDs.get(player).resetHUD();
+ SpoutStuff.playerHUDs.remove(player);
+ PP.setHUDType(x);
+ SpoutStuff.playerHUDs.put(player, new HUDmmo(player));
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/commands/spout/XplockCommand.java b/src/main/java/com/gmail/nossr50/commands/spout/XplockCommand.java
similarity index 97%
rename from src/com/gmail/nossr50/commands/spout/XplockCommand.java
rename to src/main/java/com/gmail/nossr50/commands/spout/XplockCommand.java
index 90f7c6107..8d0d1ee95 100644
--- a/src/com/gmail/nossr50/commands/spout/XplockCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/spout/XplockCommand.java
@@ -1,62 +1,62 @@
-package com.gmail.nossr50.commands.spout;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcPermissions;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.skills.Skills;
-import com.gmail.nossr50.spout.SpoutStuff;
-
-public class XplockCommand implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (!LoadProperties.spoutEnabled || !LoadProperties.xpbar || !LoadProperties.xplockEnable) {
- sender.sendMessage("This command is not enabled.");
- return true;
- }
-
- if (!(sender instanceof Player)) {
- sender.sendMessage("This command does not support console useage.");
- return true;
- }
-
- Player player = (Player) sender;
- PlayerProfile PP = Users.getProfile(player);
-
- if (args.length >= 1 && Skills.isSkill(args[0]) && mcPermissions.permission(player, "mcmmo.skills." + Skills.getSkillType(args[0]).toString().toLowerCase())) {
- if (PP.getXpBarLocked()) {
- PP.setSkillLock(Skills.getSkillType(args[0]));
- player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
- } else {
- PP.setSkillLock(Skills.getSkillType(args[0]));
- PP.toggleXpBarLocked();
- player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
- }
- SpoutStuff.updateXpBar(player);
- } else if (args.length < 1) {
- if (PP.getXpBarLocked()) {
- PP.toggleXpBarLocked();
- player.sendMessage(mcLocale.getString("Commands.xplock.unlocked"));
- } else if (PP.getLastGained() != null) {
- PP.toggleXpBarLocked();
- PP.setSkillLock(PP.getLastGained());
- player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
- }
- } else if (args.length >= 1 && !Skills.isSkill(args[0])) {
- player.sendMessage("Commands.xplock.invalid");
- } else if (args.length >= 2 && Skills.isSkill(args[0]) && !mcPermissions.permission(player, "mcmmo.skills." + Skills.getSkillType(args[0]).toString().toLowerCase())) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- return true;
- }
-}
+package com.gmail.nossr50.commands.spout;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcPermissions;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.skills.Skills;
+import com.gmail.nossr50.spout.SpoutStuff;
+
+public class XplockCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if (!LoadProperties.spoutEnabled || !LoadProperties.xpbar || !LoadProperties.xplockEnable) {
+ sender.sendMessage("This command is not enabled.");
+ return true;
+ }
+
+ if (!(sender instanceof Player)) {
+ sender.sendMessage("This command does not support console useage.");
+ return true;
+ }
+
+ Player player = (Player) sender;
+ PlayerProfile PP = Users.getProfile(player);
+
+ if (args.length >= 1 && Skills.isSkill(args[0]) && mcPermissions.permission(player, "mcmmo.skills." + Skills.getSkillType(args[0]).toString().toLowerCase())) {
+ if (PP.getXpBarLocked()) {
+ PP.setSkillLock(Skills.getSkillType(args[0]));
+ player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
+ } else {
+ PP.setSkillLock(Skills.getSkillType(args[0]));
+ PP.toggleXpBarLocked();
+ player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
+ }
+ SpoutStuff.updateXpBar(player);
+ } else if (args.length < 1) {
+ if (PP.getXpBarLocked()) {
+ PP.toggleXpBarLocked();
+ player.sendMessage(mcLocale.getString("Commands.xplock.unlocked"));
+ } else if (PP.getLastGained() != null) {
+ PP.toggleXpBarLocked();
+ PP.setSkillLock(PP.getLastGained());
+ player.sendMessage(mcLocale.getString("Commands.xplock.locked", new Object[] { m.getCapitalized(PP.getSkillLock().toString()) }));
+ }
+ } else if (args.length >= 1 && !Skills.isSkill(args[0])) {
+ player.sendMessage("Commands.xplock.invalid");
+ } else if (args.length >= 2 && Skills.isSkill(args[0]) && !mcPermissions.permission(player, "mcmmo.skills." + Skills.getSkillType(args[0]).toString().toLowerCase())) {
+ player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
+ return true;
+ }
+
+ return true;
+ }
+}
diff --git a/src/com/gmail/nossr50/config/LoadProperties.java b/src/main/java/com/gmail/nossr50/config/LoadProperties.java
similarity index 98%
rename from src/com/gmail/nossr50/config/LoadProperties.java
rename to src/main/java/com/gmail/nossr50/config/LoadProperties.java
index 7b5402f72..d53576fa7 100644
--- a/src/com/gmail/nossr50/config/LoadProperties.java
+++ b/src/main/java/com/gmail/nossr50/config/LoadProperties.java
@@ -1,617 +1,617 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.config;
-
-import java.io.File;
-import org.bukkit.util.config.Configuration;
-
-import com.gmail.nossr50.datatypes.HUDType;
-
-public class LoadProperties
-{
- public static Boolean enableOnlyActivateWhenSneaking, enableAbilityMessages, enableAbilities, showDisplayName, showFaces, watch, xplockEnable, xpbar, xpicon, partybar, string, bucket, web, xprateEnable, slimeballs, spoutEnabled,
- donateMessage, chimaeraWingEnable, xpGainsMobSpawners, myspawnEnable, mccEnable, mcmmoEnable, partyEnable, inviteEnable, acceptEnable,
- whoisEnable, statsEnable, addxpEnable, ptpEnable, mmoeditEnable, clearmyspawnEnable, mcgodEnable, mcabilityEnable, mctopEnable,
- mcrefreshEnable, enableMotd, enableMySpawn, enableRegen, enableCobbleToMossy, useMySQL, cocoabeans, mushrooms,
- toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, excavationRequiresShovel, woodcuttingrequiresaxe, eggs, apples, cake, music, diamond, glowstone,
- slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages;
-
- public static String xplock, MySQLtablePrefix, MySQLuserName, MySQLserverName, MySQLdbName, MySQLdbPass, mctop, addxp,
- xprate, mcability, mcmmo, mcc, mcrefresh, mcgod, stats, mmoedit, ptp, party, myspawn, whois, invite, accept, clearmyspawn, nWood,
- nStone, nIron, nGold, nDiamond, locale;
-
- public static int mfishing, mwatch, xpbar_x, xpbar_y, xpicon_x, xpicon_y, mstring, mbucket, mweb,
- chimaeraId, msandstone, mcocoa, water_thunder, cure_self, cure_other, mslimeballs, mbones, msulphur, mslowsand,
- mmushroom2, mglowstone2, mmelon, mmusic, mdiamond2, mbase, mapple, meggs, mcake, mpine, mbirch, mspruce, mcactus, mmushroom, mflower,
- msugar, mpumpkin, mwheat, mgold, mdiamond, miron, mredstone, mlapis, mobsidian, mnetherrack, mglowstone, mcoal, mstone, MySQLport,
- xpGainMultiplier, superBreakerCooldown, greenTerraCooldown, gigaDrillBreakerCooldown, treeFellerCooldown,
- berserkCooldown, serratedStrikeCooldown, skullSplitterCooldown, abilityDurabilityLoss,
- feathersConsumedByChimaeraWing, bonesConsumedByCOTW, repairdiamondlevel, rWood, rStone, rIron, rGold, rDiamond;
-
- public static double xpbackground_r, xpbackground_g, xpbackground_b, xpborder_r, xpborder_g, xpborder_b, fishing_r, fishing_g, fishing_b, acrobatics_r, acrobatics_g, acrobatics_b, archery_r, archery_g, archery_b, axes_r, axes_g, axes_b,
- excavation_r, excavation_g, excavation_b, herbalism_r, herbalism_g, herbalism_b, mining_r, mining_g, mining_b,
- repair_r, repair_g, repair_b, swords_r, swords_g, swords_b, taming_r, taming_g, taming_b, unarmed_r, unarmed_g, unarmed_b,
- woodcutting_r, woodcutting_g, woodcutting_b, pvpxprewardmodifier, tamingxpmodifier, miningxpmodifier,
- repairxpmodifier, woodcuttingxpmodifier, sorceryxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier,
- archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier;
-
- public static HUDType defaulthud;
-
- public String directory = "plugins/mcMMO/";
-
- File file = new File(directory + File.separator + "config.yml");
- static Configuration config = null;
-
- public void configCheck()
- {
- new File(directory).mkdir();
- config = load();
- if(!file.exists())
- {
- try
- {
- file.createNewFile();
- addDefaults();
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
- else
- {
- loadkeys();
- }
- }
- private void write(String root, Object x)
- {
- //Configuration config = load();
- config.setProperty(root, x);
- config.save();
- }
- private Boolean readBoolean(String root, Boolean def)
- {
- //Configuration config = load();
- Boolean result = config.getBoolean(root, def);
- config.save();
- return result;
- }
- private Double readDouble(String root, Double def)
- {
- Double result = config.getDouble(root, def);
- config.save();
- return result;
- }
- private Integer readInteger(String root, Integer def)
- {
- //Configuration config = load();
- Integer result = config.getInt(root, def);
- config.save();
- return result;
- }
-
- public static String readString(String root, String def)
- {
- //Configuration config = load();
- String result = config.getString(root, def);
- config.save();
- return result;
- }
-
- private Configuration load()
- {
- try {
- Configuration configx = new Configuration(file);
- configx.load();
- return configx;
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- private void addDefaults()
- {
- System.out.println("Generating Config File...");
-
- //Put in defaults
- write("Spout.HUD.Default", "STANDARD");
- write("Spout.XP.Bar.Enabled", true);
- write("Spout.Images.URL_DIR", "http://mcmmo.rycochet.net/mcmmo/");
- write("Spout.XP.Icon.Enabled", true);
- write("Spout.XP.Bar.X_POS", 95);
- write("Spout.XP.Bar.Y_POS", 6);
- write("Spout.XP.Icon.X_POS", 78);
- write("Spout.XP.Icon.Y_POS", 2);
- write("Spout.Party.HUD.Enabled", true);
- write("Spout.Party.HUD.Show_Faces", true);
- write("Spout.Party.HUD.Show_Display_Name", false);
- write("Spout.Menu.Key", "KEY_M");
- write("Spout.HUD.Retro.Colors.Acrobatics.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Acrobatics.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Acrobatics.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Archery.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Archery.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Archery.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Axes.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Axes.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Axes.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Excavation.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Excavation.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Excavation.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Herbalism.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Herbalism.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Herbalism.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Mining.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Mining.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Mining.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Repair.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Repair.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Repair.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Swords.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Swords.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Swords.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Taming.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Taming.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Taming.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Unarmed.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Unarmed.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Unarmed.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Woodcutting.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Woodcutting.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Woodcutting.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Fishing.RED", 0.3);
- write("Spout.HUD.Retro.Colors.Fishing.GREEN", 0.3);
- write("Spout.HUD.Retro.Colors.Fishing.BLUE", 0.75);
- write("Spout.HUD.Retro.Colors.Border.RED", 0.0);
- write("Spout.HUD.Retro.Colors.Border.GREEN", 0.0);
- write("Spout.HUD.Retro.Colors.Border.BLUE", 0.0);
- write("Spout.HUD.Retro.Colors.Background.RED", 0.75);
- write("Spout.HUD.Retro.Colors.Background.GREEN", 0.75);
- write("Spout.HUD.Retro.Colors.Background.BLUE", 0.75);
-
- write("MySQL.Enabled", false);
- write("MySQL.Server.Address", "localhost");
- write("MySQL.Server.Port", 3306);
- write("MySQL.Database.Name", "DataBaseName");
- write("MySQL.Database.User.Name", "UserName");
- write("MySQL.Database.TablePrefix", "mcmmo_");
- write("MySQL.Database.User.Password", "UserPassword");
-
- write("General.Locale", "en_us");
- write("General.MOTD.Enabled", true);
- write("General.MySpawn.Enabled", true);
- write("General.HP_Regeneration.Enabled", true);
-
- write("Items.Chimaera_Wing.Enabled", true);
- write("Items.Chimaera_Wing.Feather_Cost", 10);
- write("Items.Chimaera_Wing.Item_ID", 288);
-
- write("Experience.PVP.Rewards", true);
- write("Experience.Gains.Multiplier.PVP", 1);
- write("Experience.Gains.Mobspawners.Enabled", false);
- write("Experience.Gains.Multiplier.Global", 1.0);
- write("Experience.Formula.Multiplier.Taming", 1.0);
- write("Experience.Formula.Multiplier.Mining", 1.0);
- write("Experience.Formula.Multiplier.Repair", 1.0);
- write("Experience.Formula.Multiplier.Woodcutting", 1.0);
- write("Experience.Formula.Multiplier.Unarmed", 1.0);
- write("Experience.Formula.Multiplier.Herbalism", 1.0);
- write("Experience.Formula.Multiplier.Excavation", 1.0);
- write("Experience.Formula.Multiplier.Swords", 1.0);
- write("Experience.Formula.Multiplier.Archery", 1.0);
- write("Experience.Formula.Multiplier.Axes", 1.0);
- write("Experience.Formula.Multiplier.Sorcery", 1.0);
- write("Experience.Formula.Multiplier.Acrobatics", 1.0);
- write("Experience.Mining.Gold", 350);
- write("Experience.Mining.Diamond", 750);
- write("Experience.Mining.Iron", 250);
- write("Experience.Mining.Redstone", 150);
- write("Experience.Mining.lapis", 400);
- write("Experience.Mining.Obsidian", 150);
- write("Experience.Mining.Netherrack", 30);
- write("Experience.Mining.Glowstone", 30);
- write("Experience.Mining.Coal", 100);
- write("Experience.Mining.Stone", 30);
- write("Experience.Mining.Sandstone", 30);
- write("Experience.Herbalism.Sugar_Cane", 30);
- write("Experience.Herbalism.Cactus", 30);
- write("Experience.Herbalism.Pumpkin", 550);
- write("Experience.Herbalism.Flowers", 100);
- write("Experience.Herbalism.Wheat", 50);
- write("Experience.Herbalism.Mushrooms", 150);
- write("Experience.Herbalism.Melon", 40);
- write("Experience.Woodcutting.Pine", 90);
- write("Experience.Woodcutting.Birch", 70);
- write("Experience.Woodcutting.Spruce", 80);
- write("Experience.Excavation.Base", 40);
- write("Experience.Excavation.Mushroom", 80);
- write("Experience.Excavation.Sulphur", 30);
- write("Experience.Excavation.Slowsand", 80);
- write("Experience.Excavation.Glowstone", 80);
- write("Experience.Excavation.Music", 3000);
- write("Experience.Excavation.Bones", 30);
- write("Experience.Excavation.Diamond", 1000);
- write("Experience.Excavation.Apple", 100);
- write("Experience.Excavation.Eggs", 100);
- write("Experience.Excavation.Cake", 3000);
- write("Experience.Excavation.Slimeballs", 100);
- write("Experience.Excavation.Cocoa_Beans", 100);
- write("Experience.Excavation.Map", 200);
- write("Experience.Excavation.String", 200);
- write("Experience.Excavation.Bucket", 100);
- write("Experience.Excavation.Web", 150);
- write("Experience.Fishing.Base", 800);
-
- //write("Sorcery.Spells.Water.Thunder", 75);
- //write("Sorcery.Spells.Curative.Cure_Self.Mana_Cost", 5);
- //write("Sorcery.Spells.Curative.Cure_Other.Mana_Cost", 5);
-
- write("Excavation.Drops.Cocoa_Beans", true);
- write("Excavation.Drops.Mushrooms", true);
- write("Excavation.Drops.Glowstone", true);
- write("Excavation.Drops.Eggs", true);
- write("Excavation.Drops.Apples", true);
- write("Excavation.Drops.Cake", true);
- write("Excavation.Drops.Music", true);
- write("Excavation.Drops.Diamond", true);
- write("Excavation.Drops.Slowsand", true);
- write("Excavation.Drops.Sulphur", true);
- write("Excavation.Drops.Netherrack", true);
- write("Excavation.Drops.Bones", true);
- write("Excavation.Drops.Slimeballs", true);
- write("Excavation.Drops.Map", true);
- write("Excavation.Drops.String", true);
- write("Excavation.Drops.Bucket", true);
- write("Excavation.Drops.Web", true);
-
- write("Commands.xprate.Name", "xprate");
- write("Commands.xprate.Enabled", true);
- write("Commands.mctop.Name", "mctop");
- write("Commands.mctop.Enabled", true);
- write("Commands.addxp.Name", "addxp");
- write("Commands.addxp.Enabled", true);
- write("Commands.mcability.Name", "mcability");
- write("Commands.mcability.Enabled", true);
- write("Commands.mcrefresh.Name", "mcrefresh");
- write("Commands.mcrefresh.Enabled", true);
- write("Commands.mcmmo.Name", "mcmmo");
- write("Commands.mcmmo.Donate_Message", true);
- write("Commands.mcmmo.Enabled", true);
- write("Commands.mcc.Name", "mcc");
- write("Commands.mcc.Enabled", true);
- write("Commands.mcgod.Name", "mcgod");
- write("Commands.mcgod.Enabled", true);
- write("Commands.stats.Name", "stats");
- write("Commands.stats.Enabled", true);
- write("Commands.mmoedit.Name", "mmoedit");
- write("Commands.mmoedit.Enabled", true);
- write("Commands.ptp.Name", "ptp");
- write("Commands.ptp.Enabled", true);
- write("Commands.party.Name", "party");
- write("Commands.party.Enabled", true);
- write("Commands.myspawn.Name", "myspawn");
- write("Commands.myspawn.Enabled", true);
- write("Commands.whois.Name", "whois");
- write("Commands.whois.Enabled", true);
- write("Commands.invite.Name", "invite");
- write("Commands.invite.Enabled", true);
- write("Commands.accept.Name", "accept");
- write("Commands.accept.Enabled", true);
- write("Commands.clearmyspawn.Name", "clearmyspawn");
- write("Commands.clearmyspawn.Enabled", true);
- write("Commands.xplock.Enabled", true);
- write("Commands.xplock.Name", "xplock");
-
- write("Abilities.Tools.Durability_Loss_Enabled", true);
- write("Abilities.Tools.Durability_Loss", 2);
- write("Abilities.Activation.Only_Activate_When_Sneaking", false);
- write("Abilities.Cooldowns.Green_Terra", 240);
- write("Abilities.Cooldowns.Super_Breaker", 240);
- write("Abilities.Cooldowns.Giga_Drill_Breaker", 240);
- write("Abilities.Cooldowns.Tree_Feller", 240);
- write("Abilities.Cooldowns.Berserk", 240);
- write("Abilities.Cooldowns.Serrated_Strikes", 240);
- write("Abilities.Cooldowns.Skull_Splitter", 240);
- write("Abilities.Messages", true);
- write("Abilities.Enabled", true);
-
- write("Skills.Repair.Anvil_Messages", true);
- write("Skills.Repair.Gold.ID", 266);
- write("Skills.Repair.Gold.Name", "Gold Bars");
- write("Skills.Repair.Stone.ID", 4);
- write("Skills.Repair.Stone.Name", "Cobblestone");
- write("Skills.Repair.Wood.ID", 5);
- write("Skills.Repair.Wood.Name", "Wood Planks");
- write("Skills.Repair.Diamond.ID", 264);
- write("Skills.Repair.Diamond.Name", "Diamond");
- write("Skills.Repair.Diamond.Level_Required", 50);
- write("Skills.Repair.Iron.ID", 265);
- write("Skills.Repair.Iron.Name", "Iron Bars");
- write("Skills.Herbalism.Green_Thumb.Cobble_To_Mossy", true);
- write("Skills.Excavation.Requires_Shovel", true);
- write("Skills.Mining.Requires_Pickaxe", true);
- write("Skills.Woodcutting.Requires_Axe", true);
- write("Skills.Taming.Call_Of_The_Wild.Bones_Required", 10);
-
- loadkeys();
- }
- private void loadkeys()
- {
- System.out.println("Loading Config File...");
-
- //Setup default HUD
- String temp = readString("Spout.HUD.Default", "STANDARD");
- for(HUDType x : HUDType.values())
- {
- if(x.toString().equalsIgnoreCase(temp))
- {
- defaulthud = x;
- }
- }
-
- enableAbilityMessages = readBoolean("Abilities.Messages", true);
- enableAbilities = readBoolean("Abilities.Enabled", true);
-
- donateMessage = readBoolean("Commands.mcmmo.Donate_Message", true);
- xpGainsMobSpawners = readBoolean("XP.Gains.Mobspawners.Enabled", false);
-
- bonesConsumedByCOTW = readInteger("Skills.Taming.Call_Of_The_Wild.Bones_Required", 10);
-
- xpbar = readBoolean("Spout.XP.Bar.Enabled", true);
- //web_url = readString("Spout.Images.URL_DIR", "http://mcmmo.rycochet.net/mcmmo/");
- xpicon = readBoolean("Spout.XP.Icon.Enabled", true);
- xpbar_x = readInteger("Spout.XP.Bar.X_POS", 95);
- xpbar_y = readInteger("Spout.XP.Bar.Y_POS", 6);
- xpicon_x = readInteger("Spout.XP.Icon.X_POS", 78);
- xpicon_y = readInteger("Spout.XP.Icon.Y_POS", 2);
-
- showFaces = readBoolean("Spout.Party.HUD.Show_Faces", true);
- showDisplayName = readBoolean("Spout.Party.HUD.Show_Display_Name", false);
- partybar = readBoolean("Spout.Party.HUD.Enabled", true);
-
- acrobatics_r = readDouble("Spout.HUD.Retro.Colors.Acrobatics.RED", 0.3);
- acrobatics_g = readDouble("Spout.HUD.Retro.Colors.Acrobatics.GREEN", 0.3);
- acrobatics_b = readDouble("Spout.HUD.Retro.Colors.Acrobatics.BLUE", 0.75);
- archery_r = readDouble("Spout.HUD.Retro.Colors.Archery.RED", 0.3);
- archery_g = readDouble("Spout.HUD.Retro.Colors.Archery.GREEN", 0.3);
- archery_b = readDouble("Spout.HUD.Retro.Colors.Archery.BLUE", 0.75);
- axes_r = readDouble("Spout.HUD.Retro.Colors.Axes.RED", 0.3);
- axes_g = readDouble("Spout.HUD.Retro.Colors.Axes.GREEN", 0.3);
- axes_b = readDouble("Spout.HUD.Retro.Colors.Axes.BLUE", 0.75);
- excavation_r = readDouble("Spout.HUD.Retro.Colors.Excavation.RED", 0.3);
- excavation_g = readDouble("Spout.HUD.Retro.Colors.Excavation.GREEN", 0.3);
- excavation_b = readDouble("Spout.HUD.Retro.Colors.Excavation.BLUE", 0.75);
- herbalism_r = readDouble("Spout.HUD.Retro.Colors.Herbalism.RED", 0.3);
- herbalism_g = readDouble("Spout.HUD.Retro.Colors.Herbalism.GREEN", 0.3);
- herbalism_b = readDouble("Spout.HUD.Retro.Colors.Herbalism.BLUE", 0.75);
- mining_r = readDouble("Spout.HUD.Retro.Colors.Mining.RED", 0.3);
- mining_g = readDouble("Spout.HUD.Retro.Colors.Mining.GREEN", 0.3);
- mining_b = readDouble("Spout.HUD.Retro.Colors.Mining.BLUE", 0.75);
- repair_r = readDouble("Spout.HUD.Retro.Colors.Repair.RED", 0.3);
- repair_g = readDouble("Spout.HUD.Retro.Colors.Repair.GREEN", 0.3);
- repair_b = readDouble("Spout.HUD.Retro.Colors.Repair.BLUE", 0.75);
- swords_r = readDouble("Spout.HUD.Retro.Colors.Swords.RED", 0.3);
- swords_g = readDouble("Spout.HUD.Retro.Colors.Swords.GREEN", 0.3);
- swords_b = readDouble("Spout.HUD.Retro.Colors.Swords.BLUE", 0.75);
- taming_r = readDouble("Spout.HUD.Retro.Colors.Taming.RED", 0.3);
- taming_g = readDouble("Spout.HUD.Retro.Colors.Taming.GREEN", 0.3);
- taming_b = readDouble("Spout.HUD.Retro.Colors.Taming.BLUE", 0.75);
- unarmed_r = readDouble("Spout.HUD.Retro.Colors.Unarmed.RED", 0.3);
- unarmed_g = readDouble("Spout.HUD.Retro.Colors.Unarmed.GREEN", 0.3);
- unarmed_b = readDouble("Spout.HUD.Retro.Colors.Unarmed.BLUE", 0.75);
- woodcutting_r = readDouble("Spout.HUD.Retro.Colors.Woodcutting.RED", 0.3);
- woodcutting_g = readDouble("Spout.HUD.Retro.Colors.Woodcutting.GREEN", 0.3);
- woodcutting_b = readDouble("Spout.HUD.Retro.Colors.Woodcutting.BLUE", 0.75);
- fishing_r = readDouble("Spout.HUD.Retro.Colors.Fishing.RED", 0.3);
- fishing_g = readDouble("Spout.HUD.Retro.Colors.Fishing.GREEN", 0.3);
- fishing_b = readDouble("Spout.HUD.Retro.Colors.Fishing.BLUE", 0.75);
-
- xpborder_r = readDouble("Spout.HUD.Retro.Colors.Border.RED", 0.0);
- xpborder_g = readDouble("Spout.HUD.Retro.Colors.Border.GREEN", 0.0);
- xpborder_b = readDouble("Spout.HUD.Retro.Colors.Border.BLUE", 0.0);
- xpbackground_r = readDouble("Spout.HUD.Retro.Colors.Background.RED", 0.75);
- xpbackground_g = readDouble("Spout.HUD.Retro.Colors.Background.GREEN", 0.75);
- xpbackground_b = readDouble("Spout.HUD.Retro.Colors.Background.BLUE", 0.75);
-
- msulphur = readInteger("Experience.Excavation.Sulphur", 30);
- mbones = readInteger("Experience.Excavation.Bones", 30);
- mbase = readInteger("Experience.Excavation.Base", 40);
- mmushroom2 = readInteger("Experience.Excavation.Mushroom", 80);
- mslowsand = readInteger("Experience.Excavation.Slowsand", 80);
- mglowstone2 = readInteger("Experience.Excavation.Glowstone", 80);
- mmusic = readInteger("Experience.Excavation.Music", 3000);
- mdiamond2 = readInteger("Experience.Excavation.Diamond", 1000);
- mapple = readInteger("Experience.Excavation.Apple", 100);
- meggs = readInteger("Experience.Excavation.Eggs", 100);
- mcake = readInteger("Experience.Excavation.Cake", 3000);
- mcocoa = readInteger("Experience.Excavation.Cocoa_Beans", 100);
- mslimeballs = readInteger("Experience.Excavation.Slimeballs", 100);
- mstring = readInteger("Experience.Excavation.String", 200);
- mbucket = readInteger("Experience.Excavation.Bucket", 100);
- mweb = readInteger("Experience.Excavation.Web", 150);
- mwatch = readInteger("Experience.Excavation.Watch", 200);
-
- msugar = readInteger("Experience.Herbalism.Sugar_Cane", 30);
- mwheat = readInteger("Experience.Herbalism.Wheat", 50);
- mcactus = readInteger("Experience.Herbalism.Cactus", 30);
- mpumpkin = readInteger("Experience.Herbalism.Pumpkin", 550);
- mflower = readInteger("Experience.Herbalism.Flowers", 100);
- mmushroom = readInteger("Experience.Herbalism.Mushrooms", 150);
- mmelon = readInteger("Experience.Herbalism.Melon", 20);
-
- mpine = readInteger("Experience.Woodcutting.Pine", 70);
- mbirch = readInteger("Experience.Woodcutting.Birch", 80);
- mspruce = readInteger("Experience.Woodcutting.Spruce", 90);
-
- mgold = readInteger("Experience.Mining.Gold", 250);
- mdiamond = readInteger("Experience.Mining.Diamond", 750);
- miron = readInteger("Experience.Mining.Iron", 250);
- mredstone = readInteger("Experience.Mining.Redstone", 150);
- mlapis = readInteger("Experience.Mining.lapis", 400);
- mobsidian = readInteger("Experience.Mining.Obsidian", 150);
- mnetherrack = readInteger("Experience.Mining.Netherrack", 30);
- mglowstone = readInteger("Experience.Mining.Glowstone", 30);
- mcoal = readInteger("Experience.Mining.Coal", 100);
- mstone = readInteger("Experience.Mining.Stone", 30);
- msandstone = readInteger("Experience.Mining.Sandstone", 30);
-
- mfishing = readInteger("Experience.Fishing.Base", 800);
-
- enableOnlyActivateWhenSneaking = readBoolean("Abilities.Activation.Only_Activate_When_Sneaking", false);
-
- greenTerraCooldown = readInteger("Abilities.Cooldowns.Green_Terra", 240);
- superBreakerCooldown = readInteger("Abilities.Cooldowns.Super_Breaker", 240);
- gigaDrillBreakerCooldown = readInteger("Abilities.Cooldowns.Giga_Drill_Breaker", 240);
- treeFellerCooldown = readInteger("Abilities.Cooldowns.Tree_Feller", 240);
- berserkCooldown = readInteger("Abilities.Cooldowns.Berserk", 240);
- serratedStrikeCooldown = readInteger("Abilities.Cooldowns.Serrated_Strikes", 240);
- skullSplitterCooldown = readInteger("Abilities.Cooldowns.Skull_Splitter", 240);
-
- MySQLserverName = readString("MySQL.Server.Address", "localhost");
- if(readString("MySQL.Database.User.Password", null) != null)
- MySQLdbPass = readString("MySQL.Database.User.Password", null);
- else
- MySQLdbPass = "";
-
- MySQLdbName = readString("MySQL.Database.Name", "DatabaseName");
- MySQLuserName = readString("MySQL.Database.User.Name", "UserName");
- MySQLtablePrefix = readString("MySQL.Database.TablePrefix", "mcmmo_");
- MySQLport = readInteger("MySQL.Server.Port", 3306);
- useMySQL = readBoolean("MySQL.Enabled", false);
-
- locale = readString("General.Locale", "en_us");
- enableMotd = readBoolean("General.MOTD.Enabled", true);
- enableMySpawn = readBoolean("General.MySpawn.Enabled", true);
- enableRegen = readBoolean("General.HP_Regeneration.Enabled", true);
-
- enableCobbleToMossy = readBoolean("Skills.Herbalism.Green_Thumb.Cobble_To_Mossy", true);
-
- xpGainMultiplier = readInteger("Experience.Gains.Multiplier.Global", 1);
- toolsLoseDurabilityFromAbilities = readBoolean("Abilities.Tools.Durability_Loss_Enabled", true);
- abilityDurabilityLoss = readInteger("Abilities.Tools.Durability_Loss", 2);
-
- feathersConsumedByChimaeraWing = readInteger("Items.Chimaera_Wing.Feather_Cost", 10);
- chimaeraId = readInteger("Items.Chimaera_Wing.Item_ID", 288);
- chimaeraWingEnable = readBoolean("Items.Chimaera_Wing.Enabled", true);
-
- pvpxp = readBoolean("XP.PVP.Rewards", true);
- pvpxprewardmodifier = readDouble("Experience.Gains.Multiplier.PVP", 1.0);
- miningrequirespickaxe = readBoolean("Skills.Mining.Requires_Pickaxe", true);
- excavationRequiresShovel = readBoolean("Skills.Excavation.Requires_Shovel", true);
- woodcuttingrequiresaxe = readBoolean("Skills.Woodcutting.Requires_Axe", true);
- repairdiamondlevel = readInteger("Skills.Repair.Diamond.Level_Required", 50);
-
- sorceryxpmodifier = readDouble("Experience.Formula.Multiplier.Sorcery", 1.0);
- tamingxpmodifier = readDouble("Experience.Formula.Multiplier.Taming", 1.0);
- miningxpmodifier = readDouble("Experience.Formula.Multiplier.Mining", 1.0);
- repairxpmodifier = readDouble("Experience.Formula.Multiplier.Repair", 1.0);
- woodcuttingxpmodifier = readDouble("Experience.Formula.Multiplier.Woodcutting", 1.0);
- unarmedxpmodifier = readDouble("Experience.Formula.Multiplier.Unarmed", 1.0);
- herbalismxpmodifier = readDouble("Experience.Formula.Multiplier.Herbalism", 1.0);
- excavationxpmodifier = readDouble("Experience.Formula.Multiplier.Excavation", 1.0);
- archeryxpmodifier = readDouble("Experience.Formula.Multiplier.Archery", 1.0);
- swordsxpmodifier = readDouble("Experience.Formula.Multiplier.Swords", 1.0);
- axesxpmodifier = readDouble("Experience.Formula.Multiplier.Axes", 1.0);
- acrobaticsxpmodifier = readDouble("Experience.Formula.Multiplier.Acrobatics", 1.0);
-
- anvilmessages = readBoolean("Skills.Repair.Anvil_Messages", true);
-
- rGold = readInteger("Skills.Repair.Gold.ID", 266);
- nGold = readString("Skills.Repair.Gold.Name", "Gold Bars");
- rStone = readInteger("Skills.Repair.Stone.ID", 4);
- nStone = readString("Skills.Repair.Stone.Name", "Cobblestone");
- rWood = readInteger("Skills.Repair.Wood.ID", 5);
- nWood = readString("Skills.Repair.Wood.Name", "Wood Planks");
- rDiamond = readInteger("Skills.Repair.Diamond.ID", 264);
- nDiamond = readString("Skills.Repair.Diamond.Name", "Diamond");
- rIron = readInteger("Skills.Repair.Iron.ID", 265);
- nIron = readString("Skills.Repair.Iron.Name", "Iron Bars");
-
- cocoabeans = readBoolean("Excavation.Drops.Cocoa_Beans", true);
- mushrooms = readBoolean("Excavation.Drops.Mushrooms", true);
- glowstone = readBoolean("Excavation.Drops.Glowstone", true);
- eggs = readBoolean("Excavation.Drops.Eggs", true);
- apples = readBoolean("Excavation.Drops.Apples", true);
- cake = readBoolean("Excavation.Drops.Cake", true);
- music = readBoolean("Excavation.Drops.Music", true);
- diamond = readBoolean("Excavation.Drops.Diamond", true);
- slowsand = readBoolean("Excavation.Drops.Slowsand", true);
- sulphur = readBoolean("Excavation.Drops.Sulphur", true);
- netherrack = readBoolean("Excavation.Drops.Netherrack", true);
- bones = readBoolean("Excavation.Drops.Bones", true);
- slimeballs = readBoolean("Excavation.Drops.Slimeballs", true);
- watch = readBoolean("Excavation.Drops.Watch", true);
- string = readBoolean("Excavation.Drops.String", true);
- bucket = readBoolean("Excavation.Drops.Bucket", true);
- web = readBoolean("Excavation.Drops.Web", true);
-
- xprate = readString("Commands.xprate.Name", "xprate");
- xprateEnable = readBoolean("Commands.xprate.Enabled", true);
-
- mctop = readString("Commands.mctop.Name", "mctop");
- mctopEnable = readBoolean("Commands.mctop.Enabled", true);
-
- addxp = readString("Commands.addxp.Name", "addxp");
- addxpEnable = readBoolean("Commands.addxp.Enabled", true);
-
- mcability = readString("Commands.mcability.Name", "mcability");
- mcabilityEnable = readBoolean("Commands.mcability.Enabled", true);
-
- mcrefresh = readString("Commands.mcrefresh.Name", "mcrefresh");
- mcrefreshEnable = readBoolean("Commands.mcrefresh.Enabled", true);
-
- mcmmo = readString("Commands.mcmmo.Name", "mcmmo");
- mcmmoEnable = readBoolean("Commands.mcmmo.Enabled", true);
-
- mcc = readString("Commands.mcc.Name", "mcc");
- mccEnable = readBoolean("Commands.mcc.Enabled", true);
-
- mcgod = readString("Commands.mcgod.Name", "mcgod");
- mcgodEnable = readBoolean("Commands.mcgod.Enabled", true);
-
- stats = readString("Commands.stats.Name", "stats");
- statsEnable = readBoolean("Commands.stats.Enabled", true);
-
- mmoedit = readString("Commands.mmoedit.Name", "mmoedit");
- mmoeditEnable = readBoolean("Commands.mmoedit.Enabled", true);
-
- ptp = readString("Commands.ptp.Name", "ptp");
- ptpEnable = readBoolean("Commands.ptp.Enabled", true);
-
- party = readString("Commands.party.Name", "party");
- partyEnable = readBoolean("Commands.party.Enabled", true);
-
- myspawn = readString("Commands.myspawn.Name", "myspawn");
- myspawnEnable = readBoolean("Commands.myspawn.Enabled", true);
-
- whois = readString("Commands.whois.Name", "whois");
- whoisEnable = readBoolean("Commands.whois.Enabled", true);
-
- invite = readString("Commands.invite.Name", "invite");
- inviteEnable = readBoolean("Commands.invite.Enabled", true);
-
- accept = readString("Commands.accept.Name", "accept");
- acceptEnable = readBoolean("Commands.accept.Enabled", true);
-
- clearmyspawn = readString("Commands.clearmyspawn.Name", "clearmyspawn");
- clearmyspawnEnable = readBoolean("Commands.clearmyspawn.Enabled", true);
-
- xplockEnable = readBoolean("Commands.xplock.Enabled", true);
- xplock = readString("Commands.xplock.Name", "xplock");
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.config;
+
+import java.io.File;
+import org.bukkit.util.config.Configuration;
+
+import com.gmail.nossr50.datatypes.HUDType;
+
+public class LoadProperties
+{
+ public static Boolean enableOnlyActivateWhenSneaking, enableAbilityMessages, enableAbilities, showDisplayName, showFaces, watch, xplockEnable, xpbar, xpicon, partybar, string, bucket, web, xprateEnable, slimeballs, spoutEnabled,
+ donateMessage, chimaeraWingEnable, xpGainsMobSpawners, myspawnEnable, mccEnable, mcmmoEnable, partyEnable, inviteEnable, acceptEnable,
+ whoisEnable, statsEnable, addxpEnable, ptpEnable, mmoeditEnable, clearmyspawnEnable, mcgodEnable, mcabilityEnable, mctopEnable,
+ mcrefreshEnable, enableMotd, enableMySpawn, enableRegen, enableCobbleToMossy, useMySQL, cocoabeans, mushrooms,
+ toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, excavationRequiresShovel, woodcuttingrequiresaxe, eggs, apples, cake, music, diamond, glowstone,
+ slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages;
+
+ public static String xplock, MySQLtablePrefix, MySQLuserName, MySQLserverName, MySQLdbName, MySQLdbPass, mctop, addxp,
+ xprate, mcability, mcmmo, mcc, mcrefresh, mcgod, stats, mmoedit, ptp, party, myspawn, whois, invite, accept, clearmyspawn, nWood,
+ nStone, nIron, nGold, nDiamond, locale;
+
+ public static int mfishing, mwatch, xpbar_x, xpbar_y, xpicon_x, xpicon_y, mstring, mbucket, mweb,
+ chimaeraId, msandstone, mcocoa, water_thunder, cure_self, cure_other, mslimeballs, mbones, msulphur, mslowsand,
+ mmushroom2, mglowstone2, mmelon, mmusic, mdiamond2, mbase, mapple, meggs, mcake, mpine, mbirch, mspruce, mcactus, mmushroom, mflower,
+ msugar, mpumpkin, mwheat, mgold, mdiamond, miron, mredstone, mlapis, mobsidian, mnetherrack, mglowstone, mcoal, mstone, MySQLport,
+ xpGainMultiplier, superBreakerCooldown, greenTerraCooldown, gigaDrillBreakerCooldown, treeFellerCooldown,
+ berserkCooldown, serratedStrikeCooldown, skullSplitterCooldown, abilityDurabilityLoss,
+ feathersConsumedByChimaeraWing, bonesConsumedByCOTW, repairdiamondlevel, rWood, rStone, rIron, rGold, rDiamond;
+
+ public static double xpbackground_r, xpbackground_g, xpbackground_b, xpborder_r, xpborder_g, xpborder_b, fishing_r, fishing_g, fishing_b, acrobatics_r, acrobatics_g, acrobatics_b, archery_r, archery_g, archery_b, axes_r, axes_g, axes_b,
+ excavation_r, excavation_g, excavation_b, herbalism_r, herbalism_g, herbalism_b, mining_r, mining_g, mining_b,
+ repair_r, repair_g, repair_b, swords_r, swords_g, swords_b, taming_r, taming_g, taming_b, unarmed_r, unarmed_g, unarmed_b,
+ woodcutting_r, woodcutting_g, woodcutting_b, pvpxprewardmodifier, tamingxpmodifier, miningxpmodifier,
+ repairxpmodifier, woodcuttingxpmodifier, sorceryxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier,
+ archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier;
+
+ public static HUDType defaulthud;
+
+ public String directory = "plugins/mcMMO/";
+
+ File file = new File(directory + File.separator + "config.yml");
+ static Configuration config = null;
+
+ public void configCheck()
+ {
+ new File(directory).mkdir();
+ config = load();
+ if(!file.exists())
+ {
+ try
+ {
+ file.createNewFile();
+ addDefaults();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ else
+ {
+ loadkeys();
+ }
+ }
+ private void write(String root, Object x)
+ {
+ //Configuration config = load();
+ config.setProperty(root, x);
+ config.save();
+ }
+ private Boolean readBoolean(String root, Boolean def)
+ {
+ //Configuration config = load();
+ Boolean result = config.getBoolean(root, def);
+ config.save();
+ return result;
+ }
+ private Double readDouble(String root, Double def)
+ {
+ Double result = config.getDouble(root, def);
+ config.save();
+ return result;
+ }
+ private Integer readInteger(String root, Integer def)
+ {
+ //Configuration config = load();
+ Integer result = config.getInt(root, def);
+ config.save();
+ return result;
+ }
+
+ public static String readString(String root, String def)
+ {
+ //Configuration config = load();
+ String result = config.getString(root, def);
+ config.save();
+ return result;
+ }
+
+ private Configuration load()
+ {
+ try {
+ Configuration configx = new Configuration(file);
+ configx.load();
+ return configx;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ private void addDefaults()
+ {
+ System.out.println("Generating Config File...");
+
+ //Put in defaults
+ write("Spout.HUD.Default", "STANDARD");
+ write("Spout.XP.Bar.Enabled", true);
+ write("Spout.Images.URL_DIR", "http://mcmmo.rycochet.net/mcmmo/");
+ write("Spout.XP.Icon.Enabled", true);
+ write("Spout.XP.Bar.X_POS", 95);
+ write("Spout.XP.Bar.Y_POS", 6);
+ write("Spout.XP.Icon.X_POS", 78);
+ write("Spout.XP.Icon.Y_POS", 2);
+ write("Spout.Party.HUD.Enabled", true);
+ write("Spout.Party.HUD.Show_Faces", true);
+ write("Spout.Party.HUD.Show_Display_Name", false);
+ write("Spout.Menu.Key", "KEY_M");
+ write("Spout.HUD.Retro.Colors.Acrobatics.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Acrobatics.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Acrobatics.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Archery.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Archery.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Archery.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Axes.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Axes.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Axes.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Excavation.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Excavation.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Excavation.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Herbalism.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Herbalism.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Herbalism.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Mining.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Mining.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Mining.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Repair.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Repair.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Repair.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Swords.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Swords.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Swords.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Taming.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Taming.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Taming.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Unarmed.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Unarmed.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Unarmed.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Woodcutting.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Woodcutting.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Woodcutting.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Fishing.RED", 0.3);
+ write("Spout.HUD.Retro.Colors.Fishing.GREEN", 0.3);
+ write("Spout.HUD.Retro.Colors.Fishing.BLUE", 0.75);
+ write("Spout.HUD.Retro.Colors.Border.RED", 0.0);
+ write("Spout.HUD.Retro.Colors.Border.GREEN", 0.0);
+ write("Spout.HUD.Retro.Colors.Border.BLUE", 0.0);
+ write("Spout.HUD.Retro.Colors.Background.RED", 0.75);
+ write("Spout.HUD.Retro.Colors.Background.GREEN", 0.75);
+ write("Spout.HUD.Retro.Colors.Background.BLUE", 0.75);
+
+ write("MySQL.Enabled", false);
+ write("MySQL.Server.Address", "localhost");
+ write("MySQL.Server.Port", 3306);
+ write("MySQL.Database.Name", "DataBaseName");
+ write("MySQL.Database.User.Name", "UserName");
+ write("MySQL.Database.TablePrefix", "mcmmo_");
+ write("MySQL.Database.User.Password", "UserPassword");
+
+ write("General.Locale", "en_us");
+ write("General.MOTD.Enabled", true);
+ write("General.MySpawn.Enabled", true);
+ write("General.HP_Regeneration.Enabled", true);
+
+ write("Items.Chimaera_Wing.Enabled", true);
+ write("Items.Chimaera_Wing.Feather_Cost", 10);
+ write("Items.Chimaera_Wing.Item_ID", 288);
+
+ write("Experience.PVP.Rewards", true);
+ write("Experience.Gains.Multiplier.PVP", 1);
+ write("Experience.Gains.Mobspawners.Enabled", false);
+ write("Experience.Gains.Multiplier.Global", 1.0);
+ write("Experience.Formula.Multiplier.Taming", 1.0);
+ write("Experience.Formula.Multiplier.Mining", 1.0);
+ write("Experience.Formula.Multiplier.Repair", 1.0);
+ write("Experience.Formula.Multiplier.Woodcutting", 1.0);
+ write("Experience.Formula.Multiplier.Unarmed", 1.0);
+ write("Experience.Formula.Multiplier.Herbalism", 1.0);
+ write("Experience.Formula.Multiplier.Excavation", 1.0);
+ write("Experience.Formula.Multiplier.Swords", 1.0);
+ write("Experience.Formula.Multiplier.Archery", 1.0);
+ write("Experience.Formula.Multiplier.Axes", 1.0);
+ write("Experience.Formula.Multiplier.Sorcery", 1.0);
+ write("Experience.Formula.Multiplier.Acrobatics", 1.0);
+ write("Experience.Mining.Gold", 350);
+ write("Experience.Mining.Diamond", 750);
+ write("Experience.Mining.Iron", 250);
+ write("Experience.Mining.Redstone", 150);
+ write("Experience.Mining.lapis", 400);
+ write("Experience.Mining.Obsidian", 150);
+ write("Experience.Mining.Netherrack", 30);
+ write("Experience.Mining.Glowstone", 30);
+ write("Experience.Mining.Coal", 100);
+ write("Experience.Mining.Stone", 30);
+ write("Experience.Mining.Sandstone", 30);
+ write("Experience.Herbalism.Sugar_Cane", 30);
+ write("Experience.Herbalism.Cactus", 30);
+ write("Experience.Herbalism.Pumpkin", 550);
+ write("Experience.Herbalism.Flowers", 100);
+ write("Experience.Herbalism.Wheat", 50);
+ write("Experience.Herbalism.Mushrooms", 150);
+ write("Experience.Herbalism.Melon", 40);
+ write("Experience.Woodcutting.Pine", 90);
+ write("Experience.Woodcutting.Birch", 70);
+ write("Experience.Woodcutting.Spruce", 80);
+ write("Experience.Excavation.Base", 40);
+ write("Experience.Excavation.Mushroom", 80);
+ write("Experience.Excavation.Sulphur", 30);
+ write("Experience.Excavation.Slowsand", 80);
+ write("Experience.Excavation.Glowstone", 80);
+ write("Experience.Excavation.Music", 3000);
+ write("Experience.Excavation.Bones", 30);
+ write("Experience.Excavation.Diamond", 1000);
+ write("Experience.Excavation.Apple", 100);
+ write("Experience.Excavation.Eggs", 100);
+ write("Experience.Excavation.Cake", 3000);
+ write("Experience.Excavation.Slimeballs", 100);
+ write("Experience.Excavation.Cocoa_Beans", 100);
+ write("Experience.Excavation.Map", 200);
+ write("Experience.Excavation.String", 200);
+ write("Experience.Excavation.Bucket", 100);
+ write("Experience.Excavation.Web", 150);
+ write("Experience.Fishing.Base", 800);
+
+ //write("Sorcery.Spells.Water.Thunder", 75);
+ //write("Sorcery.Spells.Curative.Cure_Self.Mana_Cost", 5);
+ //write("Sorcery.Spells.Curative.Cure_Other.Mana_Cost", 5);
+
+ write("Excavation.Drops.Cocoa_Beans", true);
+ write("Excavation.Drops.Mushrooms", true);
+ write("Excavation.Drops.Glowstone", true);
+ write("Excavation.Drops.Eggs", true);
+ write("Excavation.Drops.Apples", true);
+ write("Excavation.Drops.Cake", true);
+ write("Excavation.Drops.Music", true);
+ write("Excavation.Drops.Diamond", true);
+ write("Excavation.Drops.Slowsand", true);
+ write("Excavation.Drops.Sulphur", true);
+ write("Excavation.Drops.Netherrack", true);
+ write("Excavation.Drops.Bones", true);
+ write("Excavation.Drops.Slimeballs", true);
+ write("Excavation.Drops.Map", true);
+ write("Excavation.Drops.String", true);
+ write("Excavation.Drops.Bucket", true);
+ write("Excavation.Drops.Web", true);
+
+ write("Commands.xprate.Name", "xprate");
+ write("Commands.xprate.Enabled", true);
+ write("Commands.mctop.Name", "mctop");
+ write("Commands.mctop.Enabled", true);
+ write("Commands.addxp.Name", "addxp");
+ write("Commands.addxp.Enabled", true);
+ write("Commands.mcability.Name", "mcability");
+ write("Commands.mcability.Enabled", true);
+ write("Commands.mcrefresh.Name", "mcrefresh");
+ write("Commands.mcrefresh.Enabled", true);
+ write("Commands.mcmmo.Name", "mcmmo");
+ write("Commands.mcmmo.Donate_Message", true);
+ write("Commands.mcmmo.Enabled", true);
+ write("Commands.mcc.Name", "mcc");
+ write("Commands.mcc.Enabled", true);
+ write("Commands.mcgod.Name", "mcgod");
+ write("Commands.mcgod.Enabled", true);
+ write("Commands.stats.Name", "stats");
+ write("Commands.stats.Enabled", true);
+ write("Commands.mmoedit.Name", "mmoedit");
+ write("Commands.mmoedit.Enabled", true);
+ write("Commands.ptp.Name", "ptp");
+ write("Commands.ptp.Enabled", true);
+ write("Commands.party.Name", "party");
+ write("Commands.party.Enabled", true);
+ write("Commands.myspawn.Name", "myspawn");
+ write("Commands.myspawn.Enabled", true);
+ write("Commands.whois.Name", "whois");
+ write("Commands.whois.Enabled", true);
+ write("Commands.invite.Name", "invite");
+ write("Commands.invite.Enabled", true);
+ write("Commands.accept.Name", "accept");
+ write("Commands.accept.Enabled", true);
+ write("Commands.clearmyspawn.Name", "clearmyspawn");
+ write("Commands.clearmyspawn.Enabled", true);
+ write("Commands.xplock.Enabled", true);
+ write("Commands.xplock.Name", "xplock");
+
+ write("Abilities.Tools.Durability_Loss_Enabled", true);
+ write("Abilities.Tools.Durability_Loss", 2);
+ write("Abilities.Activation.Only_Activate_When_Sneaking", false);
+ write("Abilities.Cooldowns.Green_Terra", 240);
+ write("Abilities.Cooldowns.Super_Breaker", 240);
+ write("Abilities.Cooldowns.Giga_Drill_Breaker", 240);
+ write("Abilities.Cooldowns.Tree_Feller", 240);
+ write("Abilities.Cooldowns.Berserk", 240);
+ write("Abilities.Cooldowns.Serrated_Strikes", 240);
+ write("Abilities.Cooldowns.Skull_Splitter", 240);
+ write("Abilities.Messages", true);
+ write("Abilities.Enabled", true);
+
+ write("Skills.Repair.Anvil_Messages", true);
+ write("Skills.Repair.Gold.ID", 266);
+ write("Skills.Repair.Gold.Name", "Gold Bars");
+ write("Skills.Repair.Stone.ID", 4);
+ write("Skills.Repair.Stone.Name", "Cobblestone");
+ write("Skills.Repair.Wood.ID", 5);
+ write("Skills.Repair.Wood.Name", "Wood Planks");
+ write("Skills.Repair.Diamond.ID", 264);
+ write("Skills.Repair.Diamond.Name", "Diamond");
+ write("Skills.Repair.Diamond.Level_Required", 50);
+ write("Skills.Repair.Iron.ID", 265);
+ write("Skills.Repair.Iron.Name", "Iron Bars");
+ write("Skills.Herbalism.Green_Thumb.Cobble_To_Mossy", true);
+ write("Skills.Excavation.Requires_Shovel", true);
+ write("Skills.Mining.Requires_Pickaxe", true);
+ write("Skills.Woodcutting.Requires_Axe", true);
+ write("Skills.Taming.Call_Of_The_Wild.Bones_Required", 10);
+
+ loadkeys();
+ }
+ private void loadkeys()
+ {
+ System.out.println("Loading Config File...");
+
+ //Setup default HUD
+ String temp = readString("Spout.HUD.Default", "STANDARD");
+ for(HUDType x : HUDType.values())
+ {
+ if(x.toString().equalsIgnoreCase(temp))
+ {
+ defaulthud = x;
+ }
+ }
+
+ enableAbilityMessages = readBoolean("Abilities.Messages", true);
+ enableAbilities = readBoolean("Abilities.Enabled", true);
+
+ donateMessage = readBoolean("Commands.mcmmo.Donate_Message", true);
+ xpGainsMobSpawners = readBoolean("XP.Gains.Mobspawners.Enabled", false);
+
+ bonesConsumedByCOTW = readInteger("Skills.Taming.Call_Of_The_Wild.Bones_Required", 10);
+
+ xpbar = readBoolean("Spout.XP.Bar.Enabled", true);
+ //web_url = readString("Spout.Images.URL_DIR", "http://mcmmo.rycochet.net/mcmmo/");
+ xpicon = readBoolean("Spout.XP.Icon.Enabled", true);
+ xpbar_x = readInteger("Spout.XP.Bar.X_POS", 95);
+ xpbar_y = readInteger("Spout.XP.Bar.Y_POS", 6);
+ xpicon_x = readInteger("Spout.XP.Icon.X_POS", 78);
+ xpicon_y = readInteger("Spout.XP.Icon.Y_POS", 2);
+
+ showFaces = readBoolean("Spout.Party.HUD.Show_Faces", true);
+ showDisplayName = readBoolean("Spout.Party.HUD.Show_Display_Name", false);
+ partybar = readBoolean("Spout.Party.HUD.Enabled", true);
+
+ acrobatics_r = readDouble("Spout.HUD.Retro.Colors.Acrobatics.RED", 0.3);
+ acrobatics_g = readDouble("Spout.HUD.Retro.Colors.Acrobatics.GREEN", 0.3);
+ acrobatics_b = readDouble("Spout.HUD.Retro.Colors.Acrobatics.BLUE", 0.75);
+ archery_r = readDouble("Spout.HUD.Retro.Colors.Archery.RED", 0.3);
+ archery_g = readDouble("Spout.HUD.Retro.Colors.Archery.GREEN", 0.3);
+ archery_b = readDouble("Spout.HUD.Retro.Colors.Archery.BLUE", 0.75);
+ axes_r = readDouble("Spout.HUD.Retro.Colors.Axes.RED", 0.3);
+ axes_g = readDouble("Spout.HUD.Retro.Colors.Axes.GREEN", 0.3);
+ axes_b = readDouble("Spout.HUD.Retro.Colors.Axes.BLUE", 0.75);
+ excavation_r = readDouble("Spout.HUD.Retro.Colors.Excavation.RED", 0.3);
+ excavation_g = readDouble("Spout.HUD.Retro.Colors.Excavation.GREEN", 0.3);
+ excavation_b = readDouble("Spout.HUD.Retro.Colors.Excavation.BLUE", 0.75);
+ herbalism_r = readDouble("Spout.HUD.Retro.Colors.Herbalism.RED", 0.3);
+ herbalism_g = readDouble("Spout.HUD.Retro.Colors.Herbalism.GREEN", 0.3);
+ herbalism_b = readDouble("Spout.HUD.Retro.Colors.Herbalism.BLUE", 0.75);
+ mining_r = readDouble("Spout.HUD.Retro.Colors.Mining.RED", 0.3);
+ mining_g = readDouble("Spout.HUD.Retro.Colors.Mining.GREEN", 0.3);
+ mining_b = readDouble("Spout.HUD.Retro.Colors.Mining.BLUE", 0.75);
+ repair_r = readDouble("Spout.HUD.Retro.Colors.Repair.RED", 0.3);
+ repair_g = readDouble("Spout.HUD.Retro.Colors.Repair.GREEN", 0.3);
+ repair_b = readDouble("Spout.HUD.Retro.Colors.Repair.BLUE", 0.75);
+ swords_r = readDouble("Spout.HUD.Retro.Colors.Swords.RED", 0.3);
+ swords_g = readDouble("Spout.HUD.Retro.Colors.Swords.GREEN", 0.3);
+ swords_b = readDouble("Spout.HUD.Retro.Colors.Swords.BLUE", 0.75);
+ taming_r = readDouble("Spout.HUD.Retro.Colors.Taming.RED", 0.3);
+ taming_g = readDouble("Spout.HUD.Retro.Colors.Taming.GREEN", 0.3);
+ taming_b = readDouble("Spout.HUD.Retro.Colors.Taming.BLUE", 0.75);
+ unarmed_r = readDouble("Spout.HUD.Retro.Colors.Unarmed.RED", 0.3);
+ unarmed_g = readDouble("Spout.HUD.Retro.Colors.Unarmed.GREEN", 0.3);
+ unarmed_b = readDouble("Spout.HUD.Retro.Colors.Unarmed.BLUE", 0.75);
+ woodcutting_r = readDouble("Spout.HUD.Retro.Colors.Woodcutting.RED", 0.3);
+ woodcutting_g = readDouble("Spout.HUD.Retro.Colors.Woodcutting.GREEN", 0.3);
+ woodcutting_b = readDouble("Spout.HUD.Retro.Colors.Woodcutting.BLUE", 0.75);
+ fishing_r = readDouble("Spout.HUD.Retro.Colors.Fishing.RED", 0.3);
+ fishing_g = readDouble("Spout.HUD.Retro.Colors.Fishing.GREEN", 0.3);
+ fishing_b = readDouble("Spout.HUD.Retro.Colors.Fishing.BLUE", 0.75);
+
+ xpborder_r = readDouble("Spout.HUD.Retro.Colors.Border.RED", 0.0);
+ xpborder_g = readDouble("Spout.HUD.Retro.Colors.Border.GREEN", 0.0);
+ xpborder_b = readDouble("Spout.HUD.Retro.Colors.Border.BLUE", 0.0);
+ xpbackground_r = readDouble("Spout.HUD.Retro.Colors.Background.RED", 0.75);
+ xpbackground_g = readDouble("Spout.HUD.Retro.Colors.Background.GREEN", 0.75);
+ xpbackground_b = readDouble("Spout.HUD.Retro.Colors.Background.BLUE", 0.75);
+
+ msulphur = readInteger("Experience.Excavation.Sulphur", 30);
+ mbones = readInteger("Experience.Excavation.Bones", 30);
+ mbase = readInteger("Experience.Excavation.Base", 40);
+ mmushroom2 = readInteger("Experience.Excavation.Mushroom", 80);
+ mslowsand = readInteger("Experience.Excavation.Slowsand", 80);
+ mglowstone2 = readInteger("Experience.Excavation.Glowstone", 80);
+ mmusic = readInteger("Experience.Excavation.Music", 3000);
+ mdiamond2 = readInteger("Experience.Excavation.Diamond", 1000);
+ mapple = readInteger("Experience.Excavation.Apple", 100);
+ meggs = readInteger("Experience.Excavation.Eggs", 100);
+ mcake = readInteger("Experience.Excavation.Cake", 3000);
+ mcocoa = readInteger("Experience.Excavation.Cocoa_Beans", 100);
+ mslimeballs = readInteger("Experience.Excavation.Slimeballs", 100);
+ mstring = readInteger("Experience.Excavation.String", 200);
+ mbucket = readInteger("Experience.Excavation.Bucket", 100);
+ mweb = readInteger("Experience.Excavation.Web", 150);
+ mwatch = readInteger("Experience.Excavation.Watch", 200);
+
+ msugar = readInteger("Experience.Herbalism.Sugar_Cane", 30);
+ mwheat = readInteger("Experience.Herbalism.Wheat", 50);
+ mcactus = readInteger("Experience.Herbalism.Cactus", 30);
+ mpumpkin = readInteger("Experience.Herbalism.Pumpkin", 550);
+ mflower = readInteger("Experience.Herbalism.Flowers", 100);
+ mmushroom = readInteger("Experience.Herbalism.Mushrooms", 150);
+ mmelon = readInteger("Experience.Herbalism.Melon", 20);
+
+ mpine = readInteger("Experience.Woodcutting.Pine", 70);
+ mbirch = readInteger("Experience.Woodcutting.Birch", 80);
+ mspruce = readInteger("Experience.Woodcutting.Spruce", 90);
+
+ mgold = readInteger("Experience.Mining.Gold", 250);
+ mdiamond = readInteger("Experience.Mining.Diamond", 750);
+ miron = readInteger("Experience.Mining.Iron", 250);
+ mredstone = readInteger("Experience.Mining.Redstone", 150);
+ mlapis = readInteger("Experience.Mining.lapis", 400);
+ mobsidian = readInteger("Experience.Mining.Obsidian", 150);
+ mnetherrack = readInteger("Experience.Mining.Netherrack", 30);
+ mglowstone = readInteger("Experience.Mining.Glowstone", 30);
+ mcoal = readInteger("Experience.Mining.Coal", 100);
+ mstone = readInteger("Experience.Mining.Stone", 30);
+ msandstone = readInteger("Experience.Mining.Sandstone", 30);
+
+ mfishing = readInteger("Experience.Fishing.Base", 800);
+
+ enableOnlyActivateWhenSneaking = readBoolean("Abilities.Activation.Only_Activate_When_Sneaking", false);
+
+ greenTerraCooldown = readInteger("Abilities.Cooldowns.Green_Terra", 240);
+ superBreakerCooldown = readInteger("Abilities.Cooldowns.Super_Breaker", 240);
+ gigaDrillBreakerCooldown = readInteger("Abilities.Cooldowns.Giga_Drill_Breaker", 240);
+ treeFellerCooldown = readInteger("Abilities.Cooldowns.Tree_Feller", 240);
+ berserkCooldown = readInteger("Abilities.Cooldowns.Berserk", 240);
+ serratedStrikeCooldown = readInteger("Abilities.Cooldowns.Serrated_Strikes", 240);
+ skullSplitterCooldown = readInteger("Abilities.Cooldowns.Skull_Splitter", 240);
+
+ MySQLserverName = readString("MySQL.Server.Address", "localhost");
+ if(readString("MySQL.Database.User.Password", null) != null)
+ MySQLdbPass = readString("MySQL.Database.User.Password", null);
+ else
+ MySQLdbPass = "";
+
+ MySQLdbName = readString("MySQL.Database.Name", "DatabaseName");
+ MySQLuserName = readString("MySQL.Database.User.Name", "UserName");
+ MySQLtablePrefix = readString("MySQL.Database.TablePrefix", "mcmmo_");
+ MySQLport = readInteger("MySQL.Server.Port", 3306);
+ useMySQL = readBoolean("MySQL.Enabled", false);
+
+ locale = readString("General.Locale", "en_us");
+ enableMotd = readBoolean("General.MOTD.Enabled", true);
+ enableMySpawn = readBoolean("General.MySpawn.Enabled", true);
+ enableRegen = readBoolean("General.HP_Regeneration.Enabled", true);
+
+ enableCobbleToMossy = readBoolean("Skills.Herbalism.Green_Thumb.Cobble_To_Mossy", true);
+
+ xpGainMultiplier = readInteger("Experience.Gains.Multiplier.Global", 1);
+ toolsLoseDurabilityFromAbilities = readBoolean("Abilities.Tools.Durability_Loss_Enabled", true);
+ abilityDurabilityLoss = readInteger("Abilities.Tools.Durability_Loss", 2);
+
+ feathersConsumedByChimaeraWing = readInteger("Items.Chimaera_Wing.Feather_Cost", 10);
+ chimaeraId = readInteger("Items.Chimaera_Wing.Item_ID", 288);
+ chimaeraWingEnable = readBoolean("Items.Chimaera_Wing.Enabled", true);
+
+ pvpxp = readBoolean("XP.PVP.Rewards", true);
+ pvpxprewardmodifier = readDouble("Experience.Gains.Multiplier.PVP", 1.0);
+ miningrequirespickaxe = readBoolean("Skills.Mining.Requires_Pickaxe", true);
+ excavationRequiresShovel = readBoolean("Skills.Excavation.Requires_Shovel", true);
+ woodcuttingrequiresaxe = readBoolean("Skills.Woodcutting.Requires_Axe", true);
+ repairdiamondlevel = readInteger("Skills.Repair.Diamond.Level_Required", 50);
+
+ sorceryxpmodifier = readDouble("Experience.Formula.Multiplier.Sorcery", 1.0);
+ tamingxpmodifier = readDouble("Experience.Formula.Multiplier.Taming", 1.0);
+ miningxpmodifier = readDouble("Experience.Formula.Multiplier.Mining", 1.0);
+ repairxpmodifier = readDouble("Experience.Formula.Multiplier.Repair", 1.0);
+ woodcuttingxpmodifier = readDouble("Experience.Formula.Multiplier.Woodcutting", 1.0);
+ unarmedxpmodifier = readDouble("Experience.Formula.Multiplier.Unarmed", 1.0);
+ herbalismxpmodifier = readDouble("Experience.Formula.Multiplier.Herbalism", 1.0);
+ excavationxpmodifier = readDouble("Experience.Formula.Multiplier.Excavation", 1.0);
+ archeryxpmodifier = readDouble("Experience.Formula.Multiplier.Archery", 1.0);
+ swordsxpmodifier = readDouble("Experience.Formula.Multiplier.Swords", 1.0);
+ axesxpmodifier = readDouble("Experience.Formula.Multiplier.Axes", 1.0);
+ acrobaticsxpmodifier = readDouble("Experience.Formula.Multiplier.Acrobatics", 1.0);
+
+ anvilmessages = readBoolean("Skills.Repair.Anvil_Messages", true);
+
+ rGold = readInteger("Skills.Repair.Gold.ID", 266);
+ nGold = readString("Skills.Repair.Gold.Name", "Gold Bars");
+ rStone = readInteger("Skills.Repair.Stone.ID", 4);
+ nStone = readString("Skills.Repair.Stone.Name", "Cobblestone");
+ rWood = readInteger("Skills.Repair.Wood.ID", 5);
+ nWood = readString("Skills.Repair.Wood.Name", "Wood Planks");
+ rDiamond = readInteger("Skills.Repair.Diamond.ID", 264);
+ nDiamond = readString("Skills.Repair.Diamond.Name", "Diamond");
+ rIron = readInteger("Skills.Repair.Iron.ID", 265);
+ nIron = readString("Skills.Repair.Iron.Name", "Iron Bars");
+
+ cocoabeans = readBoolean("Excavation.Drops.Cocoa_Beans", true);
+ mushrooms = readBoolean("Excavation.Drops.Mushrooms", true);
+ glowstone = readBoolean("Excavation.Drops.Glowstone", true);
+ eggs = readBoolean("Excavation.Drops.Eggs", true);
+ apples = readBoolean("Excavation.Drops.Apples", true);
+ cake = readBoolean("Excavation.Drops.Cake", true);
+ music = readBoolean("Excavation.Drops.Music", true);
+ diamond = readBoolean("Excavation.Drops.Diamond", true);
+ slowsand = readBoolean("Excavation.Drops.Slowsand", true);
+ sulphur = readBoolean("Excavation.Drops.Sulphur", true);
+ netherrack = readBoolean("Excavation.Drops.Netherrack", true);
+ bones = readBoolean("Excavation.Drops.Bones", true);
+ slimeballs = readBoolean("Excavation.Drops.Slimeballs", true);
+ watch = readBoolean("Excavation.Drops.Watch", true);
+ string = readBoolean("Excavation.Drops.String", true);
+ bucket = readBoolean("Excavation.Drops.Bucket", true);
+ web = readBoolean("Excavation.Drops.Web", true);
+
+ xprate = readString("Commands.xprate.Name", "xprate");
+ xprateEnable = readBoolean("Commands.xprate.Enabled", true);
+
+ mctop = readString("Commands.mctop.Name", "mctop");
+ mctopEnable = readBoolean("Commands.mctop.Enabled", true);
+
+ addxp = readString("Commands.addxp.Name", "addxp");
+ addxpEnable = readBoolean("Commands.addxp.Enabled", true);
+
+ mcability = readString("Commands.mcability.Name", "mcability");
+ mcabilityEnable = readBoolean("Commands.mcability.Enabled", true);
+
+ mcrefresh = readString("Commands.mcrefresh.Name", "mcrefresh");
+ mcrefreshEnable = readBoolean("Commands.mcrefresh.Enabled", true);
+
+ mcmmo = readString("Commands.mcmmo.Name", "mcmmo");
+ mcmmoEnable = readBoolean("Commands.mcmmo.Enabled", true);
+
+ mcc = readString("Commands.mcc.Name", "mcc");
+ mccEnable = readBoolean("Commands.mcc.Enabled", true);
+
+ mcgod = readString("Commands.mcgod.Name", "mcgod");
+ mcgodEnable = readBoolean("Commands.mcgod.Enabled", true);
+
+ stats = readString("Commands.stats.Name", "stats");
+ statsEnable = readBoolean("Commands.stats.Enabled", true);
+
+ mmoedit = readString("Commands.mmoedit.Name", "mmoedit");
+ mmoeditEnable = readBoolean("Commands.mmoedit.Enabled", true);
+
+ ptp = readString("Commands.ptp.Name", "ptp");
+ ptpEnable = readBoolean("Commands.ptp.Enabled", true);
+
+ party = readString("Commands.party.Name", "party");
+ partyEnable = readBoolean("Commands.party.Enabled", true);
+
+ myspawn = readString("Commands.myspawn.Name", "myspawn");
+ myspawnEnable = readBoolean("Commands.myspawn.Enabled", true);
+
+ whois = readString("Commands.whois.Name", "whois");
+ whoisEnable = readBoolean("Commands.whois.Enabled", true);
+
+ invite = readString("Commands.invite.Name", "invite");
+ inviteEnable = readBoolean("Commands.invite.Enabled", true);
+
+ accept = readString("Commands.accept.Name", "accept");
+ acceptEnable = readBoolean("Commands.accept.Enabled", true);
+
+ clearmyspawn = readString("Commands.clearmyspawn.Name", "clearmyspawn");
+ clearmyspawnEnable = readBoolean("Commands.clearmyspawn.Enabled", true);
+
+ xplockEnable = readBoolean("Commands.xplock.Enabled", true);
+ xplock = readString("Commands.xplock.Name", "xplock");
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/config/Misc.java b/src/main/java/com/gmail/nossr50/config/Misc.java
similarity index 97%
rename from src/com/gmail/nossr50/config/Misc.java
rename to src/main/java/com/gmail/nossr50/config/Misc.java
index b66e514ed..c703f72fc 100644
--- a/src/com/gmail/nossr50/config/Misc.java
+++ b/src/main/java/com/gmail/nossr50/config/Misc.java
@@ -1,90 +1,90 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.config;
-
-import java.util.*;
-import java.util.logging.Logger;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Entity;
-import org.bukkit.entity.LivingEntity;
-
-import com.gmail.nossr50.mcMMO;
-
-public class Misc
-{
- String location = "mcmmo.properties";
-
- protected static final Logger log = Logger.getLogger("Minecraft");
-
- public ArrayList mobSpawnerList = new ArrayList();
- public ArrayList blockWatchList = new ArrayList();
- public ArrayList treeFeller = new ArrayList();
- public HashMap arrowTracker = new HashMap();
- public ArrayList bleedTracker = new ArrayList();
- mcMMO plugin = null;
-
- //BLEED QUE STUFF
- public LivingEntity[] bleedQue = new LivingEntity[20];
- public int bleedQuePos = 0;
- public LivingEntity[] bleedRemovalQue = new LivingEntity[20];
- public int bleedRemovalQuePos = 0;
-
- public Misc(mcMMO mcMMO)
- {
- plugin = mcMMO;
- }
-
- public void addToBleedQue(LivingEntity entity)
- {
- //Assign entity to empty position
- bleedQue[bleedQuePos] = entity;
-
- //Move position up by 1 increment
- bleedQuePos++;
-
- //Check if array is full
- if(bleedQuePos >= bleedQue.length)
- {
- //Create new temporary array
- LivingEntity[] temp = new LivingEntity[bleedQue.length*2];
- //Copy data from bleedQue to temporary array
- System.arraycopy(bleedQue, 0, temp, 0, bleedQue.length);
- //Point bleedQue to new array
- bleedQue = temp;
- }
- }
-
- public void addToBleedRemovalQue(LivingEntity entity)
- {
- //Assign entity to empty position
- bleedRemovalQue[bleedRemovalQuePos] = entity;
-
- //Move position up by 1 increment
- bleedRemovalQuePos++;
-
- //Check if array is full
- if(bleedRemovalQuePos >= bleedRemovalQue.length)
- {
- //Create new temporary array
- LivingEntity[] temp = new LivingEntity[bleedRemovalQue.length*2];
- //Copy data from bleedRemovalQue to temporary array
- System.arraycopy(bleedRemovalQue, 0, temp, 0, bleedRemovalQue.length);
- //Point bleedRemovalQue to new array
- bleedRemovalQue = temp;
- }
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.config;
+
+import java.util.*;
+import java.util.logging.Logger;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
+
+import com.gmail.nossr50.mcMMO;
+
+public class Misc
+{
+ String location = "mcmmo.properties";
+
+ protected static final Logger log = Logger.getLogger("Minecraft");
+
+ public ArrayList mobSpawnerList = new ArrayList();
+ public ArrayList blockWatchList = new ArrayList();
+ public ArrayList treeFeller = new ArrayList();
+ public HashMap arrowTracker = new HashMap();
+ public ArrayList bleedTracker = new ArrayList();
+ mcMMO plugin = null;
+
+ //BLEED QUE STUFF
+ public LivingEntity[] bleedQue = new LivingEntity[20];
+ public int bleedQuePos = 0;
+ public LivingEntity[] bleedRemovalQue = new LivingEntity[20];
+ public int bleedRemovalQuePos = 0;
+
+ public Misc(mcMMO mcMMO)
+ {
+ plugin = mcMMO;
+ }
+
+ public void addToBleedQue(LivingEntity entity)
+ {
+ //Assign entity to empty position
+ bleedQue[bleedQuePos] = entity;
+
+ //Move position up by 1 increment
+ bleedQuePos++;
+
+ //Check if array is full
+ if(bleedQuePos >= bleedQue.length)
+ {
+ //Create new temporary array
+ LivingEntity[] temp = new LivingEntity[bleedQue.length*2];
+ //Copy data from bleedQue to temporary array
+ System.arraycopy(bleedQue, 0, temp, 0, bleedQue.length);
+ //Point bleedQue to new array
+ bleedQue = temp;
+ }
+ }
+
+ public void addToBleedRemovalQue(LivingEntity entity)
+ {
+ //Assign entity to empty position
+ bleedRemovalQue[bleedRemovalQuePos] = entity;
+
+ //Move position up by 1 increment
+ bleedRemovalQuePos++;
+
+ //Check if array is full
+ if(bleedRemovalQuePos >= bleedRemovalQue.length)
+ {
+ //Create new temporary array
+ LivingEntity[] temp = new LivingEntity[bleedRemovalQue.length*2];
+ //Copy data from bleedRemovalQue to temporary array
+ System.arraycopy(bleedRemovalQue, 0, temp, 0, bleedRemovalQue.length);
+ //Point bleedRemovalQue to new array
+ bleedRemovalQue = temp;
+ }
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java b/src/main/java/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java
similarity index 97%
rename from src/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java
rename to src/main/java/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java
index 29d2497e7..d9d4595b0 100644
--- a/src/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/FakeBlockBreakEvent.java
@@ -1,29 +1,29 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes;
-
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-import org.bukkit.event.block.BlockBreakEvent;
-
-public class FakeBlockBreakEvent extends BlockBreakEvent {
- private static final long serialVersionUID = 1L;
-
- public FakeBlockBreakEvent(Block theBlock, Player player) {
- super(theBlock, player);
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes;
+
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+import org.bukkit.event.block.BlockBreakEvent;
+
+public class FakeBlockBreakEvent extends BlockBreakEvent {
+ private static final long serialVersionUID = 1L;
+
+ public FakeBlockBreakEvent(Block theBlock, Player player) {
+ super(theBlock, player);
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/datatypes/HUDType.java b/src/main/java/com/gmail/nossr50/datatypes/HUDType.java
similarity index 96%
rename from src/com/gmail/nossr50/datatypes/HUDType.java
rename to src/main/java/com/gmail/nossr50/datatypes/HUDType.java
index 2037dc1e6..2bd660e70 100644
--- a/src/com/gmail/nossr50/datatypes/HUDType.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/HUDType.java
@@ -1,25 +1,25 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes;
-
-public enum HUDType
-{
- DISABLED,
- STANDARD,
- SMALL,
- RETRO;
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes;
+
+public enum HUDType
+{
+ DISABLED,
+ STANDARD,
+ SMALL,
+ RETRO;
+}
diff --git a/src/com/gmail/nossr50/datatypes/HUDmmo.java b/src/main/java/com/gmail/nossr50/datatypes/HUDmmo.java
similarity index 96%
rename from src/com/gmail/nossr50/datatypes/HUDmmo.java
rename to src/main/java/com/gmail/nossr50/datatypes/HUDmmo.java
index 65eabd95f..e54df7d47 100644
--- a/src/com/gmail/nossr50/datatypes/HUDmmo.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/HUDmmo.java
@@ -1,287 +1,287 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes;
-
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-import org.getspout.spoutapi.SpoutManager;
-import org.getspout.spoutapi.gui.Color;
-import org.getspout.spoutapi.gui.GenericGradient;
-import org.getspout.spoutapi.gui.GenericTexture;
-import org.getspout.spoutapi.gui.RenderPriority;
-import org.getspout.spoutapi.gui.Widget;
-import org.getspout.spoutapi.player.SpoutPlayer;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.spout.SpoutStuff;
-
-public class HUDmmo
-{
- int center_x = 427/2;
- int center_y = 240/2;
-
- String playerName = null;
- Widget xpbar = null;
- GenericGradient xpfill = null;
- GenericGradient xpbg = null;
- GenericGradient xpicon_bg = null;
- GenericGradient xpicon_border = null;
- GenericTexture xpicon = null;
- mcMMO plugin = (mcMMO) Bukkit.getServer().getPluginManager().getPlugin("mcMMO");
-
- public HUDmmo(Player player)
- {
- playerName = player.getName();
- initializeHUD(player);
- }
-
- public void initializeHUD(Player player)
- {
- //PlayerProfile PP = Users.getProfile(player);
- HUDType type = Users.getProfile(player).getHUDType();
-
- //if(LoadProperties.partybar && PP.getPartyHUD())
- //mmoHelper.initialize(SpoutManager.getPlayer(player), plugin); //PARTY HUD
-
- switch(type)
- {
- case RETRO:
- {
- initializeXpBarDisplayRetro(SpoutManager.getPlayer(player));
- break;
- }
- case STANDARD:
- {
- initializeXpBarDisplayStandard(SpoutManager.getPlayer(player));
- break;
- }
- case SMALL:
- {
- initializeXpBarDisplaySmall(SpoutManager.getPlayer(player));
- break;
- }
- case DISABLED:
- {
- //Do nothing.. :)
- }
- }
- }
-
- public void updateXpBarDisplay(HUDType type, Player player)
- {
- switch(type)
- {
- case RETRO:
- {
- updateXpBarRetro(player, Users.getProfile(player));
- break;
- }
- case STANDARD:
- {
- updateXpBarStandard(player, Users.getProfile(player));
- break;
- }
- case SMALL:
- {
- updateXpBarStandard(player, Users.getProfile(player));
- break;
- }
- case DISABLED:
- {
- //Do nothing.. :)
- }
- }
- }
-
- public void resetHUD()
- {
- SpoutPlayer sPlayer = SpoutStuff.getSpoutPlayer(playerName);
- //PlayerProfile PP = Users.getProfile(sPlayer);
- if(sPlayer != null)
- {
- sPlayer.getMainScreen().removeWidgets(plugin);
-
- //Reset the objects
- xpbar = null;
- xpfill = null;
- xpbg = null;
- xpicon = null;
-
- //if(LoadProperties.partybar && PP.getPartyHUD())
- //mmoHelper.initialize(sPlayer, plugin);
-
- sPlayer.getMainScreen().setDirty(true);
- }
- }
-
- private void initializeXpBarDisplayRetro(SpoutPlayer sPlayer)
- {
- Color border = new Color((float)LoadProperties.xpborder_r, (float)LoadProperties.xpborder_g, (float)LoadProperties.xpborder_b, 1f);
- Color green = new Color(0, 1f, 0, 1f);
- Color background = new Color((float)LoadProperties.xpbackground_r, (float)LoadProperties.xpbackground_g, (float)LoadProperties.xpbackground_b, 1f);
- Color darkbg = new Color(0.2f, 0.2f, 0.2f, 1f);
-
- xpicon = new GenericTexture();
- xpbar = new GenericGradient();
- xpfill = new GenericGradient();
- xpbg = new GenericGradient();
-
- xpicon_bg = new GenericGradient();
- xpicon_border = new GenericGradient();
-
- xpicon_bg.setBottomColor(darkbg).setTopColor(darkbg).setWidth(4).setHeight(4).setPriority(RenderPriority.High).setX(142).setY(10).setDirty(true);
- xpicon_border.setBottomColor(border).setTopColor(border).setWidth(6).setHeight(6).setPriority(RenderPriority.Highest).setX(141).setY(9).setDirty(true);
-
- xpicon.setWidth(6).setHeight(6).setX(141).setY(9).setPriority(RenderPriority.Normal).setDirty(true);
- xpicon.setUrl("Icon_r.png");
-
- xpbar.setWidth(128).setHeight(4).setX(149).setY(10);
- ((GenericGradient) xpbar).setBottomColor(border).setTopColor(border).setPriority(RenderPriority.Highest).setDirty(true);
-
- xpfill.setWidth(0).setHeight(2).setX(150).setY(11);
- xpfill.setBottomColor(green).setTopColor(green).setPriority(RenderPriority.Lowest).setDirty(true);
-
- xpbg.setWidth(126).setHeight(2).setX(150).setY(11);
- xpbg.setBottomColor(background).setTopColor(background).setPriority(RenderPriority.Low).setDirty(true);
-
- if(LoadProperties.xpbar)
- {
- sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpbar);
- sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpfill);
- sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpbg);
- if(LoadProperties.xpicon)
- {
- sPlayer.getMainScreen().attachWidget(plugin, (GenericTexture)xpicon);
- sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpicon_bg);
- }
- sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpicon_border);
- }
-
- sPlayer.getMainScreen().setDirty(true);
- }
-
- private void initializeXpBarDisplayStandard(SpoutPlayer sPlayer)
- {
- //Setup xp bar
- xpbar = new GenericTexture();
-
- if(LoadProperties.xpbar && LoadProperties.xpicon)
- {
- xpicon = new GenericTexture();
-
- xpicon.setUrl("Icon.png");
-
- xpicon.setHeight(16).setWidth(32).setX(LoadProperties.xpicon_x).setY(LoadProperties.xpicon_y);
-
- xpicon.setDirty(true);
-
- sPlayer.getMainScreen().attachWidget(plugin, xpicon);
- }
-
- if(LoadProperties.xpbar)
- {
- ((GenericTexture)xpbar).setUrl("xpbar_inc000.png");
- xpbar.setX(LoadProperties.xpbar_x).setY(LoadProperties.xpbar_y).setHeight(8).setWidth(256);
-
- sPlayer.getMainScreen().attachWidget(plugin, xpbar);
- }
- sPlayer.getMainScreen().setDirty(true);
- }
-
- private void initializeXpBarDisplaySmall(SpoutPlayer sPlayer)
- {
- //Setup xp bar
- xpbar = new GenericTexture();
-
- if(LoadProperties.xpbar && LoadProperties.xpicon)
- {
- xpicon = new GenericTexture();
-
- xpicon.setUrl("Icon.png");
-
- xpicon.setHeight(8).setWidth(16).setX(center_x-(8+64)).setY(LoadProperties.xpicon_y+2);
-
- xpicon.setDirty(true);
-
- sPlayer.getMainScreen().attachWidget(plugin, xpicon);
- }
-
- if(LoadProperties.xpbar)
- {
- ((GenericTexture)xpbar).setUrl("xpbar_inc000.png");
- xpbar.setX(center_x-64).setY(LoadProperties.xpbar_y).setHeight(4).setWidth(128);
-
- sPlayer.getMainScreen().attachWidget(plugin, xpbar);
- }
-
- sPlayer.getMainScreen().setDirty(true);
- }
-
- private void updateXpBarStandard(Player player, PlayerProfile PP)
- {
- if(!LoadProperties.xpbar)
- return;
-
- SkillType theType = null;
-
- if(PP.getXpBarLocked())
- theType=PP.getSkillLock();
- else
- theType=PP.getLastGained();
-
- if(theType == null)
- return;
-
- ((GenericTexture) xpicon).setUrl(m.getCapitalized(theType.toString())+".png");
- xpicon.setDirty(true);
-
- ((GenericTexture) xpbar).setUrl(SpoutStuff.getUrlBar(SpoutStuff.getXpInc(PP.getSkillXpLevel(theType), PP.getXpToLevel(theType), HUDType.STANDARD)));
- xpbar.setDirty(true);
-
- SpoutManager.getPlayer(player).getMainScreen().setDirty(true);
- }
-
- private void updateXpBarRetro(Player player, PlayerProfile PP)
- {
- if(!LoadProperties.xpbar)
- return;
- SkillType theType = null;
-
- if(PP.getXpBarLocked() && PP.getSkillLock() != null)
- theType=PP.getSkillLock();
- else
- theType=PP.getLastGained();
-
- if(theType == null)
- return;
-
- Color color = SpoutStuff.getRetroColor(theType);
-
- if(xpicon != null && theType != null)
- xpicon.setUrl(m.getCapitalized(theType.toString())+"_r.png");
-
- if(theType != null)
- xpfill.setBottomColor(color).setTopColor(color).setWidth(SpoutStuff.getXpInc(PP.getSkillXpLevel(theType), PP.getXpToLevel(theType), HUDType.RETRO)).setDirty(true);
- else
- System.out.println("theType was null!");
-
- SpoutManager.getPlayer(player).getMainScreen().setDirty(true);
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes;
+
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.getspout.spoutapi.SpoutManager;
+import org.getspout.spoutapi.gui.Color;
+import org.getspout.spoutapi.gui.GenericGradient;
+import org.getspout.spoutapi.gui.GenericTexture;
+import org.getspout.spoutapi.gui.RenderPriority;
+import org.getspout.spoutapi.gui.Widget;
+import org.getspout.spoutapi.player.SpoutPlayer;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.spout.SpoutStuff;
+
+public class HUDmmo
+{
+ int center_x = 427/2;
+ int center_y = 240/2;
+
+ String playerName = null;
+ Widget xpbar = null;
+ GenericGradient xpfill = null;
+ GenericGradient xpbg = null;
+ GenericGradient xpicon_bg = null;
+ GenericGradient xpicon_border = null;
+ GenericTexture xpicon = null;
+ mcMMO plugin = (mcMMO) Bukkit.getServer().getPluginManager().getPlugin("mcMMO");
+
+ public HUDmmo(Player player)
+ {
+ playerName = player.getName();
+ initializeHUD(player);
+ }
+
+ public void initializeHUD(Player player)
+ {
+ //PlayerProfile PP = Users.getProfile(player);
+ HUDType type = Users.getProfile(player).getHUDType();
+
+ //if(LoadProperties.partybar && PP.getPartyHUD())
+ //mmoHelper.initialize(SpoutManager.getPlayer(player), plugin); //PARTY HUD
+
+ switch(type)
+ {
+ case RETRO:
+ {
+ initializeXpBarDisplayRetro(SpoutManager.getPlayer(player));
+ break;
+ }
+ case STANDARD:
+ {
+ initializeXpBarDisplayStandard(SpoutManager.getPlayer(player));
+ break;
+ }
+ case SMALL:
+ {
+ initializeXpBarDisplaySmall(SpoutManager.getPlayer(player));
+ break;
+ }
+ case DISABLED:
+ {
+ //Do nothing.. :)
+ }
+ }
+ }
+
+ public void updateXpBarDisplay(HUDType type, Player player)
+ {
+ switch(type)
+ {
+ case RETRO:
+ {
+ updateXpBarRetro(player, Users.getProfile(player));
+ break;
+ }
+ case STANDARD:
+ {
+ updateXpBarStandard(player, Users.getProfile(player));
+ break;
+ }
+ case SMALL:
+ {
+ updateXpBarStandard(player, Users.getProfile(player));
+ break;
+ }
+ case DISABLED:
+ {
+ //Do nothing.. :)
+ }
+ }
+ }
+
+ public void resetHUD()
+ {
+ SpoutPlayer sPlayer = SpoutStuff.getSpoutPlayer(playerName);
+ //PlayerProfile PP = Users.getProfile(sPlayer);
+ if(sPlayer != null)
+ {
+ sPlayer.getMainScreen().removeWidgets(plugin);
+
+ //Reset the objects
+ xpbar = null;
+ xpfill = null;
+ xpbg = null;
+ xpicon = null;
+
+ //if(LoadProperties.partybar && PP.getPartyHUD())
+ //mmoHelper.initialize(sPlayer, plugin);
+
+ sPlayer.getMainScreen().setDirty(true);
+ }
+ }
+
+ private void initializeXpBarDisplayRetro(SpoutPlayer sPlayer)
+ {
+ Color border = new Color((float)LoadProperties.xpborder_r, (float)LoadProperties.xpborder_g, (float)LoadProperties.xpborder_b, 1f);
+ Color green = new Color(0, 1f, 0, 1f);
+ Color background = new Color((float)LoadProperties.xpbackground_r, (float)LoadProperties.xpbackground_g, (float)LoadProperties.xpbackground_b, 1f);
+ Color darkbg = new Color(0.2f, 0.2f, 0.2f, 1f);
+
+ xpicon = new GenericTexture();
+ xpbar = new GenericGradient();
+ xpfill = new GenericGradient();
+ xpbg = new GenericGradient();
+
+ xpicon_bg = new GenericGradient();
+ xpicon_border = new GenericGradient();
+
+ xpicon_bg.setBottomColor(darkbg).setTopColor(darkbg).setWidth(4).setHeight(4).setPriority(RenderPriority.High).setX(142).setY(10).setDirty(true);
+ xpicon_border.setBottomColor(border).setTopColor(border).setWidth(6).setHeight(6).setPriority(RenderPriority.Highest).setX(141).setY(9).setDirty(true);
+
+ xpicon.setWidth(6).setHeight(6).setX(141).setY(9).setPriority(RenderPriority.Normal).setDirty(true);
+ xpicon.setUrl("Icon_r.png");
+
+ xpbar.setWidth(128).setHeight(4).setX(149).setY(10);
+ ((GenericGradient) xpbar).setBottomColor(border).setTopColor(border).setPriority(RenderPriority.Highest).setDirty(true);
+
+ xpfill.setWidth(0).setHeight(2).setX(150).setY(11);
+ xpfill.setBottomColor(green).setTopColor(green).setPriority(RenderPriority.Lowest).setDirty(true);
+
+ xpbg.setWidth(126).setHeight(2).setX(150).setY(11);
+ xpbg.setBottomColor(background).setTopColor(background).setPriority(RenderPriority.Low).setDirty(true);
+
+ if(LoadProperties.xpbar)
+ {
+ sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpbar);
+ sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpfill);
+ sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpbg);
+ if(LoadProperties.xpicon)
+ {
+ sPlayer.getMainScreen().attachWidget(plugin, (GenericTexture)xpicon);
+ sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpicon_bg);
+ }
+ sPlayer.getMainScreen().attachWidget(plugin, (GenericGradient)xpicon_border);
+ }
+
+ sPlayer.getMainScreen().setDirty(true);
+ }
+
+ private void initializeXpBarDisplayStandard(SpoutPlayer sPlayer)
+ {
+ //Setup xp bar
+ xpbar = new GenericTexture();
+
+ if(LoadProperties.xpbar && LoadProperties.xpicon)
+ {
+ xpicon = new GenericTexture();
+
+ xpicon.setUrl("Icon.png");
+
+ xpicon.setHeight(16).setWidth(32).setX(LoadProperties.xpicon_x).setY(LoadProperties.xpicon_y);
+
+ xpicon.setDirty(true);
+
+ sPlayer.getMainScreen().attachWidget(plugin, xpicon);
+ }
+
+ if(LoadProperties.xpbar)
+ {
+ ((GenericTexture)xpbar).setUrl("xpbar_inc000.png");
+ xpbar.setX(LoadProperties.xpbar_x).setY(LoadProperties.xpbar_y).setHeight(8).setWidth(256);
+
+ sPlayer.getMainScreen().attachWidget(plugin, xpbar);
+ }
+ sPlayer.getMainScreen().setDirty(true);
+ }
+
+ private void initializeXpBarDisplaySmall(SpoutPlayer sPlayer)
+ {
+ //Setup xp bar
+ xpbar = new GenericTexture();
+
+ if(LoadProperties.xpbar && LoadProperties.xpicon)
+ {
+ xpicon = new GenericTexture();
+
+ xpicon.setUrl("Icon.png");
+
+ xpicon.setHeight(8).setWidth(16).setX(center_x-(8+64)).setY(LoadProperties.xpicon_y+2);
+
+ xpicon.setDirty(true);
+
+ sPlayer.getMainScreen().attachWidget(plugin, xpicon);
+ }
+
+ if(LoadProperties.xpbar)
+ {
+ ((GenericTexture)xpbar).setUrl("xpbar_inc000.png");
+ xpbar.setX(center_x-64).setY(LoadProperties.xpbar_y).setHeight(4).setWidth(128);
+
+ sPlayer.getMainScreen().attachWidget(plugin, xpbar);
+ }
+
+ sPlayer.getMainScreen().setDirty(true);
+ }
+
+ private void updateXpBarStandard(Player player, PlayerProfile PP)
+ {
+ if(!LoadProperties.xpbar)
+ return;
+
+ SkillType theType = null;
+
+ if(PP.getXpBarLocked())
+ theType=PP.getSkillLock();
+ else
+ theType=PP.getLastGained();
+
+ if(theType == null)
+ return;
+
+ ((GenericTexture) xpicon).setUrl(m.getCapitalized(theType.toString())+".png");
+ xpicon.setDirty(true);
+
+ ((GenericTexture) xpbar).setUrl(SpoutStuff.getUrlBar(SpoutStuff.getXpInc(PP.getSkillXpLevel(theType), PP.getXpToLevel(theType), HUDType.STANDARD)));
+ xpbar.setDirty(true);
+
+ SpoutManager.getPlayer(player).getMainScreen().setDirty(true);
+ }
+
+ private void updateXpBarRetro(Player player, PlayerProfile PP)
+ {
+ if(!LoadProperties.xpbar)
+ return;
+ SkillType theType = null;
+
+ if(PP.getXpBarLocked() && PP.getSkillLock() != null)
+ theType=PP.getSkillLock();
+ else
+ theType=PP.getLastGained();
+
+ if(theType == null)
+ return;
+
+ Color color = SpoutStuff.getRetroColor(theType);
+
+ if(xpicon != null && theType != null)
+ xpicon.setUrl(m.getCapitalized(theType.toString())+"_r.png");
+
+ if(theType != null)
+ xpfill.setBottomColor(color).setTopColor(color).setWidth(SpoutStuff.getXpInc(PP.getSkillXpLevel(theType), PP.getXpToLevel(theType), HUDType.RETRO)).setDirty(true);
+ else
+ System.out.println("theType was null!");
+
+ SpoutManager.getPlayer(player).getMainScreen().setDirty(true);
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/datatypes/PlayerProfile.java b/src/main/java/com/gmail/nossr50/datatypes/PlayerProfile.java
similarity index 97%
rename from src/com/gmail/nossr50/datatypes/PlayerProfile.java
rename to src/main/java/com/gmail/nossr50/datatypes/PlayerProfile.java
index 00370b5cf..234c80c9d 100644
--- a/src/com/gmail/nossr50/datatypes/PlayerProfile.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/PlayerProfile.java
@@ -1,1236 +1,1236 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.GameMode;
-import org.bukkit.Location;
-import org.bukkit.entity.Player;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.party.Party;
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.m;
-import com.gmail.nossr50.mcMMO;
-
-
-
-public class PlayerProfile
-{
- protected final Logger log = Logger.getLogger("Minecraft");
-
- //HUD
- private HUDType hud;
-
- //MISC
- private String party, myspawn, myspawnworld, invite;
-
- //TOGGLES
- private boolean partyhud = true, spoutcraft = false, filling = false, xpbarlocked = false, placedAnvil = false, partyChatMode = false, adminChatMode = false, godMode = false, greenTerraMode, partyChatOnly = false, greenTerraInformed = true, berserkInformed = true, skullSplitterInformed = true, gigaDrillBreakerInformed = true,
- superBreakerInformed = true, serratedStrikesInformed = true, treeFellerInformed = true, dead, abilityuse = true, treeFellerMode, superBreakerMode, gigaDrillBreakerMode,
- serratedStrikesMode, hoePreparationMode = false, shovelPreparationMode = false, swordsPreparationMode = false, fistsPreparationMode = false, pickaxePreparationMode = false, axePreparationMode = false, skullSplitterMode, berserkMode;
-
- //TIMESTAMPS
- //ATS = (Time of) Activation Time Stamp
- //DATS = (Time of) Deactivation Time Stamp
- private int xpGainATS = 0, recentlyHurt = 0, berserkATS = 0, berserkDATS = 0, gigaDrillBreakerATS = 0, gigaDrillBreakerDATS = 0,
- respawnATS = 0, mySpawnATS = 0, greenTerraATS = 0, greenTerraDATS = 0, superBreakerATS = 0, superBreakerDATS = 0, serratedStrikesATS = 0, serratedStrikesDATS = 0, treeFellerATS = 0, treeFellerDATS = 0,
- skullSplitterATS = 0, skullSplitterDATS = 0, hoePreparationATS = 0, axePreparationATS = 0, pickaxePreparationATS = 0, fistsPreparationATS = 0, shovelPreparationATS = 0, swordsPreparationATS = 0;
-
- private SkillType lastgained = null, skillLock = null;
-
- //MySQL STUFF
- private int xpbarinc=0, lastlogin=0, userid = 0, bleedticks = 0;
-
- //MAGIC STUFF
- private int mana = 0;
- private int greenDyeCycleSel = 0, greenDyeCycle = 0, blueDyeCycle = 0, blueDyeCycleSel = 0;
- public boolean dyeChanged = false;
-
- private String playername;
-
- //Time to HashMap this shiz
- HashMap skills = new HashMap(); //Skills and XP
- HashMap skillsXp = new HashMap(); //Skills and XP
-
- String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users";
-
- public PlayerProfile(Player player)
- {
- hud = LoadProperties.defaulthud;
- //Setup the HashMap for the skills
- for(SkillType skillType : SkillType.values())
- {
- if(skillType != SkillType.ALL)
- {
- skills.put(skillType, 0);
- skillsXp.put(skillType, 0);
- }
- }
-
- playername = player.getName();
- if (LoadProperties.useMySQL)
- {
- if(!loadMySQL(player)) {
- addMySQLPlayer(player);
- loadMySQL(player);//This is probably not needed anymore, could just delete
- }
- } else {
- if(!load()) { addPlayer(); }
- }
- lastlogin = ((Long) (System.currentTimeMillis()/1000)).intValue();
- }
- public int getLastLogin()
- {
- return lastlogin;
- }
- public int getMySQLuserId()
- {
- return userid;
- }
-
- public boolean loadMySQL(Player p)
- {
- Integer id = 0;
- id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + p.getName() + "'");
- if(id == 0)
- return false;
- this.userid = id;
- if (id > 0) {
- HashMap> huds = mcMMO.database.Read("SELECT hudtype FROM "+LoadProperties.MySQLtablePrefix+"huds WHERE user_id = " + id);
- if(huds.get(1) == null)
- {
- mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"huds (user_id) VALUES ("+id+")");
- } else {
- if(huds.get(1).get(0) != null)
- {
- for(HUDType x : HUDType.values())
- {
- if(x.toString().equals(huds.get(1).get(0)))
- {
- hud = x;
- }
- }
- } else {
- hud = LoadProperties.defaulthud;
- }
- }
- HashMap> users = mcMMO.database.Read("SELECT lastlogin, party FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = " + id);
- //lastlogin = Integer.parseInt(users.get(1).get(0));
- party = users.get(1).get(1);
- HashMap> spawn = mcMMO.database.Read("SELECT world, x, y, z FROM "+LoadProperties.MySQLtablePrefix+"spawn WHERE user_id = " + id);
- myspawnworld = spawn.get(1).get(0);
- myspawn = spawn.get(1).get(1) + "," + spawn.get(1).get(2) + "," + spawn.get(1).get(3);
- HashMap> cooldowns = mcMMO.database.Read("SELECT mining, woodcutting, unarmed, herbalism, excavation, swords, axes FROM "+LoadProperties.MySQLtablePrefix+"cooldowns WHERE user_id = " + id);
- /*
- * I'm still learning MySQL, this is a fix for adding a new table
- * its not pretty but it works
- */
- if(cooldowns.get(1) == null)
- {
- mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"cooldowns (user_id) VALUES ("+id+")");
- }
- else
- {
- superBreakerDATS = Integer.valueOf(cooldowns.get(1).get(0));
- treeFellerDATS = Integer.valueOf(cooldowns.get(1).get(1));
- berserkDATS = Integer.valueOf(cooldowns.get(1).get(2));
- greenTerraDATS = Integer.valueOf(cooldowns.get(1).get(3));
- gigaDrillBreakerDATS = Integer.valueOf(cooldowns.get(1).get(4));
- serratedStrikesDATS = Integer.valueOf(cooldowns.get(1).get(5));
- skullSplitterDATS = Integer.valueOf(cooldowns.get(1).get(6));
- }
- HashMap> stats = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM "+LoadProperties.MySQLtablePrefix+"skills WHERE user_id = " + id);
- skills.put(SkillType.TAMING, Integer.valueOf(stats.get(1).get(0)));
- skills.put(SkillType.MINING, Integer.valueOf(stats.get(1).get(1)));
- skills.put(SkillType.REPAIR, Integer.valueOf(stats.get(1).get(2)));
- skills.put(SkillType.WOODCUTTING, Integer.valueOf(stats.get(1).get(3)));
- skills.put(SkillType.UNARMED, Integer.valueOf(stats.get(1).get(4)));
- skills.put(SkillType.HERBALISM, Integer.valueOf(stats.get(1).get(5)));
- skills.put(SkillType.EXCAVATION, Integer.valueOf(stats.get(1).get(6)));
- skills.put(SkillType.ARCHERY, Integer.valueOf(stats.get(1).get(7)));
- skills.put(SkillType.SWORDS, Integer.valueOf(stats.get(1).get(8)));
- skills.put(SkillType.AXES, Integer.valueOf(stats.get(1).get(9)));
- skills.put(SkillType.ACROBATICS, Integer.valueOf(stats.get(1).get(10)));
- skills.put(SkillType.FISHING, Integer.valueOf(stats.get(1).get(11)));
- HashMap> experience = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM "+LoadProperties.MySQLtablePrefix+"experience WHERE user_id = " + id);
- skillsXp.put(SkillType.TAMING, Integer.valueOf(experience.get(1).get(0)));
- skillsXp.put(SkillType.MINING, Integer.valueOf(experience.get(1).get(1)));
- skillsXp.put(SkillType.REPAIR, Integer.valueOf(experience.get(1).get(2)));
- skillsXp.put(SkillType.WOODCUTTING, Integer.valueOf(experience.get(1).get(3)));
- skillsXp.put(SkillType.UNARMED, Integer.valueOf(experience.get(1).get(4)));
- skillsXp.put(SkillType.HERBALISM, Integer.valueOf(experience.get(1).get(5)));
- skillsXp.put(SkillType.EXCAVATION, Integer.valueOf(experience.get(1).get(6)));
- skillsXp.put(SkillType.ARCHERY, Integer.valueOf(experience.get(1).get(7)));
- skillsXp.put(SkillType.SWORDS, Integer.valueOf(experience.get(1).get(8)));
- skillsXp.put(SkillType.AXES, Integer.valueOf(experience.get(1).get(9)));
- skillsXp.put(SkillType.ACROBATICS, Integer.valueOf(experience.get(1).get(10)));
- skillsXp.put(SkillType.FISHING, Integer.valueOf(experience.get(1).get(11)));
- return true;
- }
- else {
- return false;
- }
- }
- public void addMySQLPlayer(Player p) {
- Integer id = 0;
- mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"users (user, lastlogin) VALUES ('" + p.getName() + "'," + System.currentTimeMillis() / 1000 +")");
- id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + p.getName() + "'");
- mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"cooldowns (user_id) VALUES ("+id+")");
- 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+")");
- this.userid = id;
- }
-
- public boolean load()
- {
- try {
- //Open the user file
- FileReader file = new FileReader(location);
- BufferedReader in = new BufferedReader(file);
- String line = "";
- while((line = in.readLine()) != null)
- {
- //Find if the line contains the player we want.
- String[] character = line.split(":");
-
- if(!character[0].equals(playername)){continue;}
-
- //Get Mining
- if(character.length > 1 && m.isInt(character[1]))
- skills.put(SkillType.MINING, Integer.valueOf(character[1]));
- //Myspawn
- if(character.length > 2)
- myspawn = character[2];
- //Party
- if(character.length > 3)
- party = character[3];
- //Mining XP
- if(character.length > 4 && m.isInt(character[4]))
- skillsXp.put(SkillType.MINING, Integer.valueOf(character[4]));
- if(character.length > 5 && m.isInt(character[5]))
- skills.put(SkillType.WOODCUTTING, Integer.valueOf(character[5]));
- if(character.length > 6 && m.isInt(character[6]))
- skillsXp.put(SkillType.WOODCUTTING, Integer.valueOf(character[6]));
- if(character.length > 7 && m.isInt(character[7]))
- skills.put(SkillType.REPAIR, Integer.valueOf(character[7]));
- if(character.length > 8 && m.isInt(character[8]))
- skills.put(SkillType.UNARMED, Integer.valueOf(character[8]));
- if(character.length > 9 && m.isInt(character[9]))
- skills.put(SkillType.HERBALISM, Integer.valueOf(character[9]));
- if(character.length > 10 && m.isInt(character[10]))
- skills.put(SkillType.EXCAVATION, Integer.valueOf(character[10]));
- if(character.length > 11 && m.isInt(character[11]))
- skills.put(SkillType.ARCHERY, Integer.valueOf(character[11]));
- if(character.length > 12 && m.isInt(character[12]))
- skills.put(SkillType.SWORDS, Integer.valueOf(character[12]));
- if(character.length > 13 && m.isInt(character[13]))
- skills.put(SkillType.AXES, Integer.valueOf(character[13]));
- if(character.length > 14 && m.isInt(character[14]))
- skills.put(SkillType.ACROBATICS, Integer.valueOf(character[14]));
- if(character.length > 15 && m.isInt(character[15]))
- skillsXp.put(SkillType.REPAIR, Integer.valueOf(character[15]));
- if(character.length > 16 && m.isInt(character[16]))
- skillsXp.put(SkillType.UNARMED, Integer.valueOf(character[16]));
- if(character.length > 17 && m.isInt(character[17]))
- skillsXp.put(SkillType.HERBALISM, Integer.valueOf(character[17]));
- if(character.length > 18 && m.isInt(character[18]))
- skillsXp.put(SkillType.EXCAVATION, Integer.valueOf(character[18]));
- if(character.length > 19 && m.isInt(character[19]))
- skillsXp.put(SkillType.ARCHERY, Integer.valueOf(character[19]));
- if(character.length > 20 && m.isInt(character[20]))
- skillsXp.put(SkillType.SWORDS, Integer.valueOf(character[20]));
- if(character.length > 21 && m.isInt(character[21]))
- skillsXp.put(SkillType.AXES, Integer.valueOf(character[21]));
- if(character.length > 22 && m.isInt(character[22]))
- skillsXp.put(SkillType.ACROBATICS, Integer.valueOf(character[22]));
- if(character.length > 23 && m.isInt(character[23]))
- myspawnworld = character[23];
- if(character.length > 24 && m.isInt(character[24]))
- skills.put(SkillType.TAMING, Integer.valueOf(character[24]));
- if(character.length > 25 && m.isInt(character[25]))
- skillsXp.put(SkillType.TAMING, Integer.valueOf(character[25]));
- if(character.length > 26)
- berserkDATS = Integer.valueOf(character[26]);
- if(character.length > 27)
- gigaDrillBreakerDATS = Integer.valueOf(character[27]);
- if(character.length > 28)
- treeFellerDATS = Integer.valueOf(character[28]);
- if(character.length > 29)
- greenTerraDATS = Integer.valueOf(character[29]);
- if(character.length > 30)
- serratedStrikesDATS = Integer.valueOf(character[30]);
- if(character.length > 31)
- skullSplitterDATS = Integer.valueOf(character[31]);
- if(character.length > 32)
- superBreakerDATS = Integer.valueOf(character[32]);
- if(character.length > 33)
- {
- for(HUDType x : HUDType.values())
- {
- if(x.toString().equalsIgnoreCase(character[33]))
- {
- hud = x;
- }
- }
- }
- if(character.length > 34)
- skills.put(SkillType.FISHING, Integer.valueOf(character[34]));
- if(character.length > 35)
- skillsXp.put(SkillType.FISHING, Integer.valueOf(character[35]));
- in.close();
- return true;
- }
- in.close();
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while reading "
- + location + " (Are you sure you formatted it correctly?)", e);
- }
- return false;
- }
-
- public void save()
- {
- Long timestamp = System.currentTimeMillis()/1000; //Convert to seconds
- // if we are using mysql save to database
- if (LoadProperties.useMySQL)
- {
- mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"huds SET "
- +" hudtype = '"+hud.toString()+"' WHERE user_id = "+this.userid);
- mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET lastlogin = " + timestamp.intValue() + " WHERE id = " + this.userid);
- mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET party = '"+this.party+"' WHERE id = " +this.userid);
- mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + this.myspawnworld + "', x = " +getX()+", y = "+getY()+", z = "+getZ()+" WHERE user_id = "+this.userid);
- mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"cooldowns SET "
- +" mining = "+(superBreakerDATS)
- +", woodcutting = "+(treeFellerDATS)
- +", unarmed = "+(berserkDATS)
- +", herbalism = "+(greenTerraDATS)
- +", excavation = "+(gigaDrillBreakerDATS)
- +", swords = " +(serratedStrikesDATS)
- +", axes = "+(skullSplitterDATS)
- +" WHERE user_id = "+this.userid);
- mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"skills SET "
- +" taming = "+skills.get(SkillType.TAMING)
- +", mining = "+skills.get(SkillType.MINING)
- +", repair = "+skills.get(SkillType.REPAIR)
- +", woodcutting = "+skills.get(SkillType.WOODCUTTING)
- +", unarmed = "+skills.get(SkillType.UNARMED)
- +", herbalism = "+skills.get(SkillType.HERBALISM)
- +", excavation = "+skills.get(SkillType.EXCAVATION)
- +", archery = " +skills.get(SkillType.ARCHERY)
- +", swords = " +skills.get(SkillType.SWORDS)
- +", axes = "+skills.get(SkillType.AXES)
- +", acrobatics = "+skills.get(SkillType.ACROBATICS)
- +", fishing = "+skills.get(SkillType.FISHING)
- +" WHERE user_id = "+this.userid);
- mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"experience SET "
- +" taming = "+skillsXp.get(SkillType.TAMING)
- +", mining = "+skillsXp.get(SkillType.MINING)
- +", repair = "+skillsXp.get(SkillType.REPAIR)
- +", woodcutting = "+skillsXp.get(SkillType.WOODCUTTING)
- +", unarmed = "+skillsXp.get(SkillType.UNARMED)
- +", herbalism = "+skillsXp.get(SkillType.HERBALISM)
- +", excavation = "+skillsXp.get(SkillType.EXCAVATION)
- +", archery = " +skillsXp.get(SkillType.ARCHERY)
- +", swords = " +skillsXp.get(SkillType.SWORDS)
- +", axes = "+skillsXp.get(SkillType.AXES)
- +", acrobatics = "+skillsXp.get(SkillType.ACROBATICS)
- +", fishing = "+skillsXp.get(SkillType.FISHING)
- +" WHERE user_id = "+this.userid);
- } else
- {
- // otherwise save to flatfile
- try {
- //Open the file
- FileReader file = new FileReader(location);
- BufferedReader in = new BufferedReader(file);
- StringBuilder writer = new StringBuilder();
- String line = "";
-
- //While not at the end of the file
- while((line = in.readLine()) != null)
- {
- //Read the line in and copy it to the output it's not the player
- //we want to edit
- if(!line.split(":")[0].equalsIgnoreCase(playername))
- {
- writer.append(line).append("\r\n");
-
- //Otherwise write the new player information
- } else {
- writer.append(playername + ":");
- writer.append(skills.get(SkillType.MINING) + ":");
- writer.append(myspawn + ":");
- writer.append(party+":");
- writer.append(skillsXp.get(SkillType.MINING) + ":");
- writer.append(skills.get(SkillType.WOODCUTTING) + ":");
- writer.append(skillsXp.get(SkillType.WOODCUTTING) + ":");
- writer.append(skills.get(SkillType.REPAIR) + ":");
- writer.append(skills.get(SkillType.UNARMED) + ":");
- writer.append(skills.get(SkillType.HERBALISM) + ":");
- writer.append(skills.get(SkillType.EXCAVATION) + ":");
- writer.append(skills.get(SkillType.ARCHERY) + ":");
- writer.append(skills.get(SkillType.SWORDS) + ":");
- writer.append(skills.get(SkillType.AXES) + ":");
- writer.append(skills.get(SkillType.ACROBATICS) + ":");
- writer.append(skillsXp.get(SkillType.REPAIR) + ":");
- writer.append(skillsXp.get(SkillType.UNARMED) + ":");
- writer.append(skillsXp.get(SkillType.HERBALISM) + ":");
- writer.append(skillsXp.get(SkillType.EXCAVATION) + ":");
- writer.append(skillsXp.get(SkillType.ARCHERY) + ":");
- writer.append(skillsXp.get(SkillType.SWORDS) + ":");
- writer.append(skillsXp.get(SkillType.AXES) + ":");
- writer.append(skillsXp.get(SkillType.ACROBATICS) + ":");
- writer.append(myspawnworld+":");
- writer.append(skills.get(SkillType.TAMING) + ":");
- writer.append(skillsXp.get(SkillType.TAMING) + ":");
- //Need to store the DATS of abilities nao
- //Berserk, Gigadrillbreaker, Tree Feller, Green Terra, Serrated Strikes, Skull Splitter, Super Breaker
- writer.append(String.valueOf(berserkDATS)+":");
- writer.append(String.valueOf(gigaDrillBreakerDATS)+":");
- writer.append(String.valueOf(treeFellerDATS)+":");
- writer.append(String.valueOf(greenTerraDATS)+":");
- writer.append(String.valueOf(serratedStrikesDATS)+":");
- writer.append(String.valueOf(skullSplitterDATS)+":");
- writer.append(String.valueOf(superBreakerDATS)+":");
- writer.append(hud.toString()+":");
- writer.append(skills.get(SkillType.FISHING) + ":");
- writer.append(skillsXp.get(SkillType.FISHING) + ":");
- writer.append("\r\n");
- }
- }
- in.close();
- //Write the new file
- FileWriter out = new FileWriter(location);
- out.write(writer.toString());
- out.close();
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while writing to " + location + " (Are you sure you formatted it correctly?)", e);
- }
- }
- }
- public void addPlayer()
- {
- try {
- //Open the file to write the player
- FileWriter file = new FileWriter(location, true);
- BufferedWriter out = new BufferedWriter(file);
-
- //Add the player to the end
- out.append(playername + ":");
- out.append(0 + ":"); //mining
- out.append(myspawn+":");
- out.append(party+":");
- out.append(0+":"); //XP
- out.append(0+":"); //woodcutting
- out.append(0+":"); //woodCuttingXP
- out.append(0+":"); //repair
- out.append(0+":"); //unarmed
- out.append(0+":"); //herbalism
- out.append(0+":"); //excavation
- out.append(0+":"); //archery
- out.append(0+":"); //swords
- out.append(0+":"); //axes
- out.append(0+":"); //acrobatics
- out.append(0+":"); //repairXP
- out.append(0+":"); //unarmedXP
- out.append(0+":"); //herbalismXP
- out.append(0+":"); //excavationXP
- out.append(0+":"); //archeryXP
- out.append(0+":"); //swordsXP
- out.append(0+":"); //axesXP
- out.append(0+":"); //acrobaticsXP
- out.append(myspawnworld+":");
- out.append(0+":"); //taming
- out.append(0+":"); //tamingXP
- out.append(0+":"); //DATS
- out.append(0+":"); //DATS
- out.append(0+":"); //DATS
- out.append(0+":"); //DATS
- out.append(0+":"); //DATS
- out.append(0+":"); //DATS
- out.append(0+":"); //DATS
- out.append(LoadProperties.defaulthud.toString()+":");//HUD
- out.append(0+":"); //Fishing
- out.append(0+":"); //FishingXP
-
- //Add more in the same format as the line above
-
- out.newLine();
- out.close();
- } catch (Exception e) {
- log.log(Level.SEVERE, "Exception while writing to " + location + " (Are you sure you formatted it correctly?)", e);
- }
- }
- public void togglePartyHUD()
- {
- partyhud = !partyhud;
- }
- public boolean getPartyHUD()
- {
- return partyhud;
- }
- public void toggleSpoutEnabled()
- {
- spoutcraft = !spoutcraft;
- }
-
- public boolean isFilling()
- {
- return filling;
- }
- public void toggleFilling()
- {
- filling = !filling;
- }
- public HUDType getHUDType()
- {
- return hud;
- }
- public void setHUDType(HUDType type)
- {
- hud = type;
- save();
- }
- public boolean getXpBarLocked()
- {
- return xpbarlocked;
- }
- public void toggleXpBarLocked()
- {
- xpbarlocked = !xpbarlocked;
- }
- public int getXpBarInc()
- {
- return xpbarinc;
- }
- public void setXpBarInc(int newvalue)
- {
- xpbarinc = newvalue;
- }
- public void setSkillLock(SkillType newvalue)
- {
- skillLock = newvalue;
- }
- public SkillType getSkillLock()
- {
- return skillLock;
- }
- public void setLastGained(SkillType newvalue)
- {
- lastgained = newvalue;
- }
- public SkillType getLastGained()
- {
- return lastgained;
- }
-
- public boolean getAdminChatMode() {return adminChatMode;}
- public boolean getPartyChatMode() {return partyChatMode;}
-
- public boolean getGodMode() {return godMode;}
-
- public void togglePlacedAnvil()
- {
- placedAnvil = !placedAnvil;
- }
- public Boolean getPlacedAnvil()
- {
- return placedAnvil;
- }
- public void toggleAdminChat()
- {
- adminChatMode = !adminChatMode;
- }
-
- public void toggleGodMode()
- {
- godMode = !godMode;
- }
-
- public void togglePartyChat()
- {
- partyChatMode = !partyChatMode;
- }
-
- public void setMana(int newvalue)
- {
- mana = newvalue;
- }
-
- public int getCurrentMana()
- {
- return mana;
- }
- public void setDyeChanged(Boolean bool)
- {
- dyeChanged = bool;
- }
- public boolean getDyeChanged()
- {
- return dyeChanged;
- }
- public void setBlueDyeCycle(int newvalue)
- {
- blueDyeCycle = newvalue;
- }
- public int getBlueDyeCycle()
- {
- return blueDyeCycle;
- }
- public void setBlueDyeCycleSel(int newvalue)
- {
- blueDyeCycleSel = newvalue;
- }
- public int getBlueDyeCycleSel()
- {
- return blueDyeCycleSel;
- }
- public void setGreenDyeCycle(int newvalue)
- {
- greenDyeCycle = newvalue;
- }
- public int getGreenDyeCycle()
- {
- return greenDyeCycle;
- }
- public void setGreenDyeCycleSel(int newvalue)
- {
- greenDyeCycleSel = newvalue;
- }
- public int getGreenDyeCycleSel()
- {
- return greenDyeCycleSel;
- }
-
- public boolean isPlayer(String player)
- {
- return player.equals(playername);
- }
- public boolean getPartyChatOnlyToggle(){return partyChatOnly;}
- public void togglePartyChatOnly(){partyChatOnly = !partyChatOnly;}
- public boolean getAbilityUse(){
- return abilityuse;
- }
- public void toggleAbilityUse()
- {
- abilityuse = !abilityuse;
- }
- public long getMySpawnATS(){
- return mySpawnATS;
- }
- public void setMySpawnATS(long newvalue)
- {
- mySpawnATS = (int) (newvalue/1000);
- }
- public void decreaseBleedTicks()
- {
- bleedticks--;
- }
- public Integer getBleedTicks(){
- return bleedticks;
- }
- public void setBleedTicks(Integer newvalue){
- bleedticks = newvalue;
- }
- public void addBleedTicks(Integer newvalue){
- bleedticks+=newvalue;
- }
- /*
- * EXPLOIT PREVENTION
- */
- public long getRespawnATS() {return respawnATS;}
- public void setRespawnATS(long newvalue) {respawnATS = (int) (newvalue/1000);}
-
- /*
- * HOE PREPARATION
- */
- public boolean getHoePreparationMode(){
- return hoePreparationMode;
- }
- public void setHoePreparationMode(Boolean bool){
- hoePreparationMode = bool;
- }
- public long getHoePreparationATS(){
- return hoePreparationATS;
- }
- public void setHoePreparationATS(long newvalue){
- hoePreparationATS = (int) (newvalue/1000);
- }
-
- /*
- * SWORDS PREPARATION
- */
- public boolean getSwordsPreparationMode(){
- return swordsPreparationMode;
- }
- public void setSwordsPreparationMode(Boolean bool){
- swordsPreparationMode = bool;
- }
- public long getSwordsPreparationATS(){
- return swordsPreparationATS;
- }
- public void setSwordsPreparationATS(long newvalue){
- swordsPreparationATS = (int) (newvalue/1000);
- }
- /*
- * SHOVEL PREPARATION
- */
- public boolean getShovelPreparationMode(){
- return shovelPreparationMode;
- }
- public void setShovelPreparationMode(Boolean bool){
- shovelPreparationMode = bool;
- }
- public long getShovelPreparationATS(){
- return shovelPreparationATS;
- }
- public void setShovelPreparationATS(long newvalue){
- shovelPreparationATS = (int) (newvalue/1000);
- }
- /*
- * FISTS PREPARATION
- */
- public boolean getFistsPreparationMode(){
- return fistsPreparationMode;
- }
- public void setFistsPreparationMode(Boolean bool){
- fistsPreparationMode = bool;
- }
- public long getFistsPreparationATS(){
- return fistsPreparationATS;
- }
- public void setFistsPreparationATS(long newvalue){
- fistsPreparationATS = (int) (newvalue/1000);
- }
- /*
- * AXE PREPARATION
- */
- public boolean getAxePreparationMode(){
- return axePreparationMode;
- }
- public void setAxePreparationMode(Boolean bool){
- axePreparationMode = bool;
- }
- public long getAxePreparationATS(){
- return axePreparationATS;
- }
- public void setAxePreparationATS(long newvalue){
- axePreparationATS = (int) (newvalue/1000);
- }
- /*
- * PICKAXE PREPARATION
- */
- public boolean getPickaxePreparationMode(){
- return pickaxePreparationMode;
- }
- public void setPickaxePreparationMode(Boolean bool){
- pickaxePreparationMode = bool;
- }
- public long getPickaxePreparationATS(){
- return pickaxePreparationATS;
- }
- public void setPickaxePreparationATS(long newvalue){
- pickaxePreparationATS = (int) (newvalue/1000);
- }
- /*
- * GREEN TERRA MODE
- */
- public boolean getGreenTerraInformed() {return greenTerraInformed;}
- public void setGreenTerraInformed(Boolean bool){
- greenTerraInformed = bool;
- }
- public boolean getGreenTerraMode(){
- return greenTerraMode;
- }
- public void setGreenTerraMode(Boolean bool){
- greenTerraMode = bool;
- }
- public long getGreenTerraActivatedTimeStamp() {return greenTerraATS;}
- public void setGreenTerraActivatedTimeStamp(Long newvalue){
- greenTerraATS = (int) (newvalue/1000);
- }
- public long getGreenTerraDeactivatedTimeStamp() {return greenTerraDATS;}
- public void setGreenTerraDeactivatedTimeStamp(Long newvalue){
- greenTerraDATS = (int) (newvalue/1000);
- save();
- }
- /*
- * BERSERK MODE
- */
- public boolean getBerserkInformed() {return berserkInformed;}
- public void setBerserkInformed(Boolean bool){
- berserkInformed = bool;
- }
- public boolean getBerserkMode(){
- return berserkMode;
- }
- public void setBerserkMode(Boolean bool){
- berserkMode = bool;
- }
- public long getBerserkActivatedTimeStamp() {return berserkATS;}
- public void setBerserkActivatedTimeStamp(Long newvalue){
- berserkATS = (int) (newvalue/1000);
- }
- public long getBerserkDeactivatedTimeStamp() {return berserkDATS;}
- public void setBerserkDeactivatedTimeStamp(Long newvalue){
- berserkDATS = (int) (newvalue/1000);
- save();
- }
- /*
- * SKULL SPLITTER
- */
- public boolean getSkullSplitterInformed() {return skullSplitterInformed;}
- public void setSkullSplitterInformed(Boolean bool){
- skullSplitterInformed = bool;
- }
- public boolean getSkullSplitterMode(){
- return skullSplitterMode;
- }
- public void setSkullSplitterMode(Boolean bool){
- skullSplitterMode = bool;
- }
- public long getSkullSplitterActivatedTimeStamp() {return skullSplitterATS;}
- public void setSkullSplitterActivatedTimeStamp(Long newvalue){
- skullSplitterATS = (int) (newvalue/1000);
- }
- public long getSkullSplitterDeactivatedTimeStamp() {return skullSplitterDATS;}
- public void setSkullSplitterDeactivatedTimeStamp(Long newvalue){
- skullSplitterDATS = (int) (newvalue/1000);
- save();
- }
- /*
- * SERRATED STRIKES
- */
- public boolean getSerratedStrikesInformed() {return serratedStrikesInformed;}
- public void setSerratedStrikesInformed(Boolean bool){
- serratedStrikesInformed = bool;
- }
- public boolean getSerratedStrikesMode(){
- return serratedStrikesMode;
- }
- public void setSerratedStrikesMode(Boolean bool){
- serratedStrikesMode = bool;
- }
- public long getSerratedStrikesActivatedTimeStamp() {return serratedStrikesATS;}
- public void setSerratedStrikesActivatedTimeStamp(Long newvalue){
- serratedStrikesATS = (int) (newvalue/1000);
- }
- public long getSerratedStrikesDeactivatedTimeStamp() {return serratedStrikesDATS;}
- public void setSerratedStrikesDeactivatedTimeStamp(Long newvalue){
- serratedStrikesDATS = (int) (newvalue/1000);
- save();
- }
- /*
- * GIGA DRILL BREAKER
- */
- public boolean getGigaDrillBreakerInformed() {return gigaDrillBreakerInformed;}
- public void setGigaDrillBreakerInformed(Boolean bool){
- gigaDrillBreakerInformed = bool;
- }
- public boolean getGigaDrillBreakerMode(){
- return gigaDrillBreakerMode;
- }
- public void setGigaDrillBreakerMode(Boolean bool){
- gigaDrillBreakerMode = bool;
- }
- public long getGigaDrillBreakerActivatedTimeStamp() {return gigaDrillBreakerATS;}
- public void setGigaDrillBreakerActivatedTimeStamp(Long newvalue){
- gigaDrillBreakerATS = (int) (newvalue/1000);
- }
- public long getGigaDrillBreakerDeactivatedTimeStamp() {return gigaDrillBreakerDATS;}
- public void setGigaDrillBreakerDeactivatedTimeStamp(Long newvalue){
- gigaDrillBreakerDATS = (int) (newvalue/1000);
- save();
- }
- /*
- * TREE FELLER STUFF
- */
- public boolean getTreeFellerInformed() {return treeFellerInformed;}
- public void setTreeFellerInformed(Boolean bool){
- treeFellerInformed = bool;
- }
- public boolean getTreeFellerMode(){
- return treeFellerMode;
- }
- public void setTreeFellerMode(Boolean bool){
- treeFellerMode = bool;
- }
- public long getTreeFellerActivatedTimeStamp() {return treeFellerATS;}
- public void setTreeFellerActivatedTimeStamp(Long newvalue){
- treeFellerATS = (int) (newvalue/1000);
- }
- public long getTreeFellerDeactivatedTimeStamp() {return treeFellerDATS;}
- public void setTreeFellerDeactivatedTimeStamp(Long newvalue){
- treeFellerDATS = (int) (newvalue/1000);
- save();
- }
- /*
- * MINING
- */
- public boolean getSuperBreakerInformed() {return superBreakerInformed;}
- public void setSuperBreakerInformed(Boolean bool){
- superBreakerInformed = bool;
- }
- public boolean getSuperBreakerMode(){
- return superBreakerMode;
- }
- public void setSuperBreakerMode(Boolean bool){
- superBreakerMode = bool;
- }
- public long getSuperBreakerActivatedTimeStamp() {return superBreakerATS;}
- public void setSuperBreakerActivatedTimeStamp(Long newvalue){
- superBreakerATS = (int) (newvalue/1000);
- }
- public long getSuperBreakerDeactivatedTimeStamp() {return superBreakerDATS;}
- public void setSuperBreakerDeactivatedTimeStamp(Long newvalue){
- superBreakerDATS = (int) (newvalue/1000);
- save();
- }
- public long getRecentlyHurt(){
- return recentlyHurt;
- }
- public void setRecentlyHurt(long newvalue){
- recentlyHurt = (int) (newvalue/1000);
- }
- public void skillUp(SkillType skillType, int newvalue)
- {
- skills.put(skillType, skills.get(skillType)+newvalue);
- save();
- }
- public Integer getSkillLevel(SkillType skillType)
- {
- return skills.get(skillType);
- }
- public Integer getSkillXpLevel(SkillType skillType)
- {
- return skillsXp.get(skillType);
- }
- public void resetSkillXp(SkillType skillType)
- {
- skills.put(skillType, 0);
- }
-
- /**
- * Adds XP to the player, this ignores skill modifiers
- * @param skillType The skill to add XP to
- * @param newvalue The amount of XP to add
- */
- public void addXPOverride(SkillType skillType, int newvalue)
- {
- if(skillType == SkillType.ALL)
- {
- for(SkillType x : SkillType.values())
- {
- if(x == SkillType.ALL)
- continue;
- skillsXp.put(x, skillsXp.get(x)+newvalue);
- }
- } else {
- int xp = newvalue;
-
- xp=xp*LoadProperties.xpGainMultiplier;
- skillsXp.put(skillType, skillsXp.get(skillType)+xp);
- lastgained = skillType;
- }
- }
- /**
- * Adds XP to the player, this is affected by skill modifiers
- * @param skillType The skill to add XP to
- * @param newvalue The amount of XP to add
- */
- public void addXP(SkillType skillType, int newvalue, Player thisplayer)
- {
- if(System.currentTimeMillis() < ((xpGainATS*1000)+250) || thisplayer.getGameMode() == GameMode.CREATIVE)
- return;
-
- //Setup a timestamp of when xp was given
- xpGainATS = (int) (System.currentTimeMillis()/1000);
-
- double bonusModifier = 0;
- String leaderName = "";
-
- if(inParty())
- {
- for(Player x : Party.getInstance().getPartyMembers(thisplayer))
- {
- if(x.isOnline() && !x.getName().equals(thisplayer.getName()) && Party.getInstance().isPartyLeader(x.getName(), this.getParty()))
- {
- leaderName = x.getName();
- if(m.getDistance(thisplayer.getLocation(), x.getLocation()) < 25)
- {
- PlayerProfile PartyLeader = Users.getProfile(x);
- if(PartyLeader.getSkillLevel(skillType) >= this.getSkillLevel(skillType))
- {
- int leaderLevel = PartyLeader.getSkillLevel(skillType);
- int difference = leaderLevel - this.getSkillLevel(skillType);
- bonusModifier = (difference*0.75D)/100D;
- }
- }
- }
- }
- }
- if(skillType == SkillType.ALL)
- {
- for(SkillType x : SkillType.values())
- {
- if(x == SkillType.ALL)
- continue;
- skillsXp.put(x, skillsXp.get(x)+newvalue);
- }
- } else {
- int xp = newvalue;
-
- switch(skillType)
- {
- case TAMING:
- xp=(int) (xp/LoadProperties.tamingxpmodifier);
- break;
- case MINING:
- xp=(int) (xp/LoadProperties.miningxpmodifier);
- break;
- case WOODCUTTING:
- xp=(int) (xp/LoadProperties.woodcuttingxpmodifier);
- break;
- case REPAIR:
- xp=(int) (xp/LoadProperties.repairxpmodifier);
- break;
- case HERBALISM:
- xp=(int) (xp/LoadProperties.herbalismxpmodifier);
- break;
- case ACROBATICS:
- xp=(int) (xp/LoadProperties.acrobaticsxpmodifier);
- break;
- case SWORDS:
- xp=(int) (xp/LoadProperties.swordsxpmodifier);
- break;
- case ARCHERY:
- xp=(int) (xp/LoadProperties.archeryxpmodifier);
- break;
- case UNARMED:
- xp=(int) (xp/LoadProperties.unarmedxpmodifier);
- break;
- case EXCAVATION:
- xp=(int) (xp/LoadProperties.excavationxpmodifier);
- break;
- case AXES:
- xp=(int) (xp/LoadProperties.axesxpmodifier);
- break;
- }
- xp=xp*LoadProperties.xpGainMultiplier;
-
- if(bonusModifier > 0)
- {
- if(bonusModifier >= 2)
- bonusModifier = 2;
-
- double trueBonus = bonusModifier * xp;
- double oldxp = xp;
- xp+=trueBonus;
- double percent = (trueBonus/oldxp)*100;
- thisplayer.sendMessage(ChatColor.GREEN+"XP: "+oldxp+" Bonus XP: "+trueBonus+" Total: "+xp+ChatColor.GOLD+" [Master: "+leaderName+" " +" +"+(int)percent+"%]");
- }
- skillsXp.put(skillType, skillsXp.get(skillType)+xp);
- lastgained = skillType;
- }
- //save();
- }
-
- public void removeXP(SkillType skillType, int newvalue)
- {
- if(skillType == SkillType.ALL)
- {
- skillsXp.put(SkillType.TAMING, skillsXp.get(SkillType.TAMING)-newvalue);
- skillsXp.put(SkillType.MINING, skillsXp.get(SkillType.MINING)-newvalue);
- skillsXp.put(SkillType.WOODCUTTING, skillsXp.get(SkillType.WOODCUTTING)-newvalue);
- skillsXp.put(SkillType.REPAIR, skillsXp.get(SkillType.REPAIR)-newvalue);
- skillsXp.put(SkillType.HERBALISM, skillsXp.get(SkillType.HERBALISM)-newvalue);
- skillsXp.put(SkillType.ACROBATICS, skillsXp.get(SkillType.ACROBATICS)-newvalue);
- skillsXp.put(SkillType.SWORDS, skillsXp.get(SkillType.SWORDS)-newvalue);
- skillsXp.put(SkillType.ARCHERY, skillsXp.get(SkillType.ARCHERY)-newvalue);
- skillsXp.put(SkillType.UNARMED, skillsXp.get(SkillType.UNARMED)-newvalue);
- skillsXp.put(SkillType.EXCAVATION, skillsXp.get(SkillType.EXCAVATION)-newvalue);
- skillsXp.put(SkillType.AXES, skillsXp.get(SkillType.AXES)-newvalue);
- skillsXp.put(SkillType.FISHING, skillsXp.get(SkillType.FISHING)-newvalue);
- } else {
- skillsXp.put(skillType, skillsXp.get(skillType)-newvalue);
- }
- //save();
- }
- public void acceptInvite()
- {
- party = invite;
- invite = "";
- }
- public void modifyInvite(String invitename)
- {
- invite = invitename;
- }
- public String getInvite() { return invite; }
-
- public void modifyskill(SkillType skillType, int newvalue)
- {
- if(skillType == SkillType.ALL)
- {
- skills.put(SkillType.TAMING, newvalue);
- skills.put(SkillType.MINING, newvalue);
- skills.put(SkillType.WOODCUTTING, newvalue);
- skills.put(SkillType.REPAIR, newvalue);
- skills.put(SkillType.HERBALISM, newvalue);
- skills.put(SkillType.ACROBATICS, newvalue);
- skills.put(SkillType.SWORDS, newvalue);
- skills.put(SkillType.ARCHERY, newvalue);
- skills.put(SkillType.UNARMED, newvalue);
- skills.put(SkillType.EXCAVATION, newvalue);
- skills.put(SkillType.AXES, newvalue);
- skills.put(SkillType.FISHING, newvalue);
-
- skillsXp.put(SkillType.TAMING, 0);
- skillsXp.put(SkillType.MINING, 0);
- skillsXp.put(SkillType.WOODCUTTING, 0);
- skillsXp.put(SkillType.REPAIR, 0);
- skillsXp.put(SkillType.HERBALISM, 0);
- skillsXp.put(SkillType.ACROBATICS, 0);
- skillsXp.put(SkillType.SWORDS, 0);
- skillsXp.put(SkillType.ARCHERY, 0);
- skillsXp.put(SkillType.UNARMED, 0);
- skillsXp.put(SkillType.EXCAVATION, 0);
- skillsXp.put(SkillType.AXES, 0);
- skillsXp.put(SkillType.FISHING, 0);
- } else {
- skills.put(skillType, newvalue);
- skillsXp.put(skillType, newvalue);
- }
- save();
- }
- public Integer getXpToLevel(SkillType skillType)
- {
- return (int) ((1020+(skills.get(skillType) * 20)));
- }
-
- //Store the player's party
- public void setParty(String newParty)
- {
- party = newParty;
- save();
- }
- //Retrieve the player's party
- public String getParty() {return party;}
- //Remove party
- public void removeParty() {
- party = null;
- save();
- }
- //Retrieve whether or not the player is in a party
- public boolean inParty()
- {
- if(party != null && !party.equals("") && !party.equals("null")){
- return true;
- } else {
- return false;
- }
- }
-
- //Retrieve whether or not the player has an invite
- public boolean hasPartyInvite() {
- if(invite != null && !invite.equals("") && !invite.equals("null")){
- return true;
- } else {
- return false;
- }
- }
- public String getMySpawnWorld()
- {
- if(myspawnworld != null && !myspawnworld.equals("") && !myspawnworld.equals("null")){
- return myspawnworld;
- } else {
- return Bukkit.getServer().getWorlds().get(0).toString();
- }
- }
- //Save a users spawn location
- public void setMySpawn(double x, double y, double z, String myspawnworldlocation){
- myspawn = x+","+y+","+z;
- myspawnworld = myspawnworldlocation;
- save();
- }
- public String getX(){
- if(myspawn != null)
- {
- String[] split = myspawn.split(",");
- return split[0];
- }
- else
- return null;
- }
- public String getY(){
- if(myspawn != null)
- {
- String[] split = myspawn.split(",");
- return split[1];
- }
- else
- return null;
- }
- public String getZ(){
- if(myspawn != null)
- {
- String[] split = myspawn.split(",");
- return split[2];
- }
- else
- return null;
- }
- public boolean isDead(){
- return dead;
- }
- public Location getMySpawn(Player player)
- {
- Location loc = null;
- if(myspawn != null)
- {
- if(m.isDouble(getX()) && m.isDouble(getY()) && m.isDouble(getZ()))
- loc = new Location(player.getWorld(),(Double.parseDouble(getX())), Double.parseDouble(getY()), Double.parseDouble(getZ()));
- else
- return null;
- } else
- return null;
-
- loc.setYaw(0);
- loc.setPitch(0);
- if(loc.getX() != 0 && loc.getY() != 0 && loc.getZ() != 0 && loc.getWorld() != null)
- {
- if(Bukkit.getServer().getWorld(this.getMySpawnWorld()) != null)
- loc.setWorld(Bukkit.getServer().getWorld(this.getMySpawnWorld()));
- else
- loc.setWorld(Bukkit.getServer().getWorlds().get(0));
- return loc;
- } else {
- return null;
- }
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.GameMode;
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.party.Party;
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.m;
+import com.gmail.nossr50.mcMMO;
+
+
+
+public class PlayerProfile
+{
+ protected final Logger log = Logger.getLogger("Minecraft");
+
+ //HUD
+ private HUDType hud;
+
+ //MISC
+ private String party, myspawn, myspawnworld, invite;
+
+ //TOGGLES
+ private boolean partyhud = true, spoutcraft = false, filling = false, xpbarlocked = false, placedAnvil = false, partyChatMode = false, adminChatMode = false, godMode = false, greenTerraMode, partyChatOnly = false, greenTerraInformed = true, berserkInformed = true, skullSplitterInformed = true, gigaDrillBreakerInformed = true,
+ superBreakerInformed = true, serratedStrikesInformed = true, treeFellerInformed = true, dead, abilityuse = true, treeFellerMode, superBreakerMode, gigaDrillBreakerMode,
+ serratedStrikesMode, hoePreparationMode = false, shovelPreparationMode = false, swordsPreparationMode = false, fistsPreparationMode = false, pickaxePreparationMode = false, axePreparationMode = false, skullSplitterMode, berserkMode;
+
+ //TIMESTAMPS
+ //ATS = (Time of) Activation Time Stamp
+ //DATS = (Time of) Deactivation Time Stamp
+ private int xpGainATS = 0, recentlyHurt = 0, berserkATS = 0, berserkDATS = 0, gigaDrillBreakerATS = 0, gigaDrillBreakerDATS = 0,
+ respawnATS = 0, mySpawnATS = 0, greenTerraATS = 0, greenTerraDATS = 0, superBreakerATS = 0, superBreakerDATS = 0, serratedStrikesATS = 0, serratedStrikesDATS = 0, treeFellerATS = 0, treeFellerDATS = 0,
+ skullSplitterATS = 0, skullSplitterDATS = 0, hoePreparationATS = 0, axePreparationATS = 0, pickaxePreparationATS = 0, fistsPreparationATS = 0, shovelPreparationATS = 0, swordsPreparationATS = 0;
+
+ private SkillType lastgained = null, skillLock = null;
+
+ //MySQL STUFF
+ private int xpbarinc=0, lastlogin=0, userid = 0, bleedticks = 0;
+
+ //MAGIC STUFF
+ private int mana = 0;
+ private int greenDyeCycleSel = 0, greenDyeCycle = 0, blueDyeCycle = 0, blueDyeCycleSel = 0;
+ public boolean dyeChanged = false;
+
+ private String playername;
+
+ //Time to HashMap this shiz
+ HashMap skills = new HashMap(); //Skills and XP
+ HashMap skillsXp = new HashMap(); //Skills and XP
+
+ String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users";
+
+ public PlayerProfile(Player player)
+ {
+ hud = LoadProperties.defaulthud;
+ //Setup the HashMap for the skills
+ for(SkillType skillType : SkillType.values())
+ {
+ if(skillType != SkillType.ALL)
+ {
+ skills.put(skillType, 0);
+ skillsXp.put(skillType, 0);
+ }
+ }
+
+ playername = player.getName();
+ if (LoadProperties.useMySQL)
+ {
+ if(!loadMySQL(player)) {
+ addMySQLPlayer(player);
+ loadMySQL(player);//This is probably not needed anymore, could just delete
+ }
+ } else {
+ if(!load()) { addPlayer(); }
+ }
+ lastlogin = ((Long) (System.currentTimeMillis()/1000)).intValue();
+ }
+ public int getLastLogin()
+ {
+ return lastlogin;
+ }
+ public int getMySQLuserId()
+ {
+ return userid;
+ }
+
+ public boolean loadMySQL(Player p)
+ {
+ Integer id = 0;
+ id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + p.getName() + "'");
+ if(id == 0)
+ return false;
+ this.userid = id;
+ if (id > 0) {
+ HashMap> huds = mcMMO.database.Read("SELECT hudtype FROM "+LoadProperties.MySQLtablePrefix+"huds WHERE user_id = " + id);
+ if(huds.get(1) == null)
+ {
+ mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"huds (user_id) VALUES ("+id+")");
+ } else {
+ if(huds.get(1).get(0) != null)
+ {
+ for(HUDType x : HUDType.values())
+ {
+ if(x.toString().equals(huds.get(1).get(0)))
+ {
+ hud = x;
+ }
+ }
+ } else {
+ hud = LoadProperties.defaulthud;
+ }
+ }
+ HashMap> users = mcMMO.database.Read("SELECT lastlogin, party FROM "+LoadProperties.MySQLtablePrefix+"users WHERE id = " + id);
+ //lastlogin = Integer.parseInt(users.get(1).get(0));
+ party = users.get(1).get(1);
+ HashMap> spawn = mcMMO.database.Read("SELECT world, x, y, z FROM "+LoadProperties.MySQLtablePrefix+"spawn WHERE user_id = " + id);
+ myspawnworld = spawn.get(1).get(0);
+ myspawn = spawn.get(1).get(1) + "," + spawn.get(1).get(2) + "," + spawn.get(1).get(3);
+ HashMap> cooldowns = mcMMO.database.Read("SELECT mining, woodcutting, unarmed, herbalism, excavation, swords, axes FROM "+LoadProperties.MySQLtablePrefix+"cooldowns WHERE user_id = " + id);
+ /*
+ * I'm still learning MySQL, this is a fix for adding a new table
+ * its not pretty but it works
+ */
+ if(cooldowns.get(1) == null)
+ {
+ mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"cooldowns (user_id) VALUES ("+id+")");
+ }
+ else
+ {
+ superBreakerDATS = Integer.valueOf(cooldowns.get(1).get(0));
+ treeFellerDATS = Integer.valueOf(cooldowns.get(1).get(1));
+ berserkDATS = Integer.valueOf(cooldowns.get(1).get(2));
+ greenTerraDATS = Integer.valueOf(cooldowns.get(1).get(3));
+ gigaDrillBreakerDATS = Integer.valueOf(cooldowns.get(1).get(4));
+ serratedStrikesDATS = Integer.valueOf(cooldowns.get(1).get(5));
+ skullSplitterDATS = Integer.valueOf(cooldowns.get(1).get(6));
+ }
+ HashMap> stats = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM "+LoadProperties.MySQLtablePrefix+"skills WHERE user_id = " + id);
+ skills.put(SkillType.TAMING, Integer.valueOf(stats.get(1).get(0)));
+ skills.put(SkillType.MINING, Integer.valueOf(stats.get(1).get(1)));
+ skills.put(SkillType.REPAIR, Integer.valueOf(stats.get(1).get(2)));
+ skills.put(SkillType.WOODCUTTING, Integer.valueOf(stats.get(1).get(3)));
+ skills.put(SkillType.UNARMED, Integer.valueOf(stats.get(1).get(4)));
+ skills.put(SkillType.HERBALISM, Integer.valueOf(stats.get(1).get(5)));
+ skills.put(SkillType.EXCAVATION, Integer.valueOf(stats.get(1).get(6)));
+ skills.put(SkillType.ARCHERY, Integer.valueOf(stats.get(1).get(7)));
+ skills.put(SkillType.SWORDS, Integer.valueOf(stats.get(1).get(8)));
+ skills.put(SkillType.AXES, Integer.valueOf(stats.get(1).get(9)));
+ skills.put(SkillType.ACROBATICS, Integer.valueOf(stats.get(1).get(10)));
+ skills.put(SkillType.FISHING, Integer.valueOf(stats.get(1).get(11)));
+ HashMap> experience = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM "+LoadProperties.MySQLtablePrefix+"experience WHERE user_id = " + id);
+ skillsXp.put(SkillType.TAMING, Integer.valueOf(experience.get(1).get(0)));
+ skillsXp.put(SkillType.MINING, Integer.valueOf(experience.get(1).get(1)));
+ skillsXp.put(SkillType.REPAIR, Integer.valueOf(experience.get(1).get(2)));
+ skillsXp.put(SkillType.WOODCUTTING, Integer.valueOf(experience.get(1).get(3)));
+ skillsXp.put(SkillType.UNARMED, Integer.valueOf(experience.get(1).get(4)));
+ skillsXp.put(SkillType.HERBALISM, Integer.valueOf(experience.get(1).get(5)));
+ skillsXp.put(SkillType.EXCAVATION, Integer.valueOf(experience.get(1).get(6)));
+ skillsXp.put(SkillType.ARCHERY, Integer.valueOf(experience.get(1).get(7)));
+ skillsXp.put(SkillType.SWORDS, Integer.valueOf(experience.get(1).get(8)));
+ skillsXp.put(SkillType.AXES, Integer.valueOf(experience.get(1).get(9)));
+ skillsXp.put(SkillType.ACROBATICS, Integer.valueOf(experience.get(1).get(10)));
+ skillsXp.put(SkillType.FISHING, Integer.valueOf(experience.get(1).get(11)));
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ public void addMySQLPlayer(Player p) {
+ Integer id = 0;
+ mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"users (user, lastlogin) VALUES ('" + p.getName() + "'," + System.currentTimeMillis() / 1000 +")");
+ id = mcMMO.database.GetInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + p.getName() + "'");
+ mcMMO.database.Write("INSERT INTO "+LoadProperties.MySQLtablePrefix+"cooldowns (user_id) VALUES ("+id+")");
+ 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+")");
+ this.userid = id;
+ }
+
+ public boolean load()
+ {
+ try {
+ //Open the user file
+ FileReader file = new FileReader(location);
+ BufferedReader in = new BufferedReader(file);
+ String line = "";
+ while((line = in.readLine()) != null)
+ {
+ //Find if the line contains the player we want.
+ String[] character = line.split(":");
+
+ if(!character[0].equals(playername)){continue;}
+
+ //Get Mining
+ if(character.length > 1 && m.isInt(character[1]))
+ skills.put(SkillType.MINING, Integer.valueOf(character[1]));
+ //Myspawn
+ if(character.length > 2)
+ myspawn = character[2];
+ //Party
+ if(character.length > 3)
+ party = character[3];
+ //Mining XP
+ if(character.length > 4 && m.isInt(character[4]))
+ skillsXp.put(SkillType.MINING, Integer.valueOf(character[4]));
+ if(character.length > 5 && m.isInt(character[5]))
+ skills.put(SkillType.WOODCUTTING, Integer.valueOf(character[5]));
+ if(character.length > 6 && m.isInt(character[6]))
+ skillsXp.put(SkillType.WOODCUTTING, Integer.valueOf(character[6]));
+ if(character.length > 7 && m.isInt(character[7]))
+ skills.put(SkillType.REPAIR, Integer.valueOf(character[7]));
+ if(character.length > 8 && m.isInt(character[8]))
+ skills.put(SkillType.UNARMED, Integer.valueOf(character[8]));
+ if(character.length > 9 && m.isInt(character[9]))
+ skills.put(SkillType.HERBALISM, Integer.valueOf(character[9]));
+ if(character.length > 10 && m.isInt(character[10]))
+ skills.put(SkillType.EXCAVATION, Integer.valueOf(character[10]));
+ if(character.length > 11 && m.isInt(character[11]))
+ skills.put(SkillType.ARCHERY, Integer.valueOf(character[11]));
+ if(character.length > 12 && m.isInt(character[12]))
+ skills.put(SkillType.SWORDS, Integer.valueOf(character[12]));
+ if(character.length > 13 && m.isInt(character[13]))
+ skills.put(SkillType.AXES, Integer.valueOf(character[13]));
+ if(character.length > 14 && m.isInt(character[14]))
+ skills.put(SkillType.ACROBATICS, Integer.valueOf(character[14]));
+ if(character.length > 15 && m.isInt(character[15]))
+ skillsXp.put(SkillType.REPAIR, Integer.valueOf(character[15]));
+ if(character.length > 16 && m.isInt(character[16]))
+ skillsXp.put(SkillType.UNARMED, Integer.valueOf(character[16]));
+ if(character.length > 17 && m.isInt(character[17]))
+ skillsXp.put(SkillType.HERBALISM, Integer.valueOf(character[17]));
+ if(character.length > 18 && m.isInt(character[18]))
+ skillsXp.put(SkillType.EXCAVATION, Integer.valueOf(character[18]));
+ if(character.length > 19 && m.isInt(character[19]))
+ skillsXp.put(SkillType.ARCHERY, Integer.valueOf(character[19]));
+ if(character.length > 20 && m.isInt(character[20]))
+ skillsXp.put(SkillType.SWORDS, Integer.valueOf(character[20]));
+ if(character.length > 21 && m.isInt(character[21]))
+ skillsXp.put(SkillType.AXES, Integer.valueOf(character[21]));
+ if(character.length > 22 && m.isInt(character[22]))
+ skillsXp.put(SkillType.ACROBATICS, Integer.valueOf(character[22]));
+ if(character.length > 23 && m.isInt(character[23]))
+ myspawnworld = character[23];
+ if(character.length > 24 && m.isInt(character[24]))
+ skills.put(SkillType.TAMING, Integer.valueOf(character[24]));
+ if(character.length > 25 && m.isInt(character[25]))
+ skillsXp.put(SkillType.TAMING, Integer.valueOf(character[25]));
+ if(character.length > 26)
+ berserkDATS = Integer.valueOf(character[26]);
+ if(character.length > 27)
+ gigaDrillBreakerDATS = Integer.valueOf(character[27]);
+ if(character.length > 28)
+ treeFellerDATS = Integer.valueOf(character[28]);
+ if(character.length > 29)
+ greenTerraDATS = Integer.valueOf(character[29]);
+ if(character.length > 30)
+ serratedStrikesDATS = Integer.valueOf(character[30]);
+ if(character.length > 31)
+ skullSplitterDATS = Integer.valueOf(character[31]);
+ if(character.length > 32)
+ superBreakerDATS = Integer.valueOf(character[32]);
+ if(character.length > 33)
+ {
+ for(HUDType x : HUDType.values())
+ {
+ if(x.toString().equalsIgnoreCase(character[33]))
+ {
+ hud = x;
+ }
+ }
+ }
+ if(character.length > 34)
+ skills.put(SkillType.FISHING, Integer.valueOf(character[34]));
+ if(character.length > 35)
+ skillsXp.put(SkillType.FISHING, Integer.valueOf(character[35]));
+ in.close();
+ return true;
+ }
+ in.close();
+ } catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while reading "
+ + location + " (Are you sure you formatted it correctly?)", e);
+ }
+ return false;
+ }
+
+ public void save()
+ {
+ Long timestamp = System.currentTimeMillis()/1000; //Convert to seconds
+ // if we are using mysql save to database
+ if (LoadProperties.useMySQL)
+ {
+ mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"huds SET "
+ +" hudtype = '"+hud.toString()+"' WHERE user_id = "+this.userid);
+ mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET lastlogin = " + timestamp.intValue() + " WHERE id = " + this.userid);
+ mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET party = '"+this.party+"' WHERE id = " +this.userid);
+ mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + this.myspawnworld + "', x = " +getX()+", y = "+getY()+", z = "+getZ()+" WHERE user_id = "+this.userid);
+ mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"cooldowns SET "
+ +" mining = "+(superBreakerDATS)
+ +", woodcutting = "+(treeFellerDATS)
+ +", unarmed = "+(berserkDATS)
+ +", herbalism = "+(greenTerraDATS)
+ +", excavation = "+(gigaDrillBreakerDATS)
+ +", swords = " +(serratedStrikesDATS)
+ +", axes = "+(skullSplitterDATS)
+ +" WHERE user_id = "+this.userid);
+ mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"skills SET "
+ +" taming = "+skills.get(SkillType.TAMING)
+ +", mining = "+skills.get(SkillType.MINING)
+ +", repair = "+skills.get(SkillType.REPAIR)
+ +", woodcutting = "+skills.get(SkillType.WOODCUTTING)
+ +", unarmed = "+skills.get(SkillType.UNARMED)
+ +", herbalism = "+skills.get(SkillType.HERBALISM)
+ +", excavation = "+skills.get(SkillType.EXCAVATION)
+ +", archery = " +skills.get(SkillType.ARCHERY)
+ +", swords = " +skills.get(SkillType.SWORDS)
+ +", axes = "+skills.get(SkillType.AXES)
+ +", acrobatics = "+skills.get(SkillType.ACROBATICS)
+ +", fishing = "+skills.get(SkillType.FISHING)
+ +" WHERE user_id = "+this.userid);
+ mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"experience SET "
+ +" taming = "+skillsXp.get(SkillType.TAMING)
+ +", mining = "+skillsXp.get(SkillType.MINING)
+ +", repair = "+skillsXp.get(SkillType.REPAIR)
+ +", woodcutting = "+skillsXp.get(SkillType.WOODCUTTING)
+ +", unarmed = "+skillsXp.get(SkillType.UNARMED)
+ +", herbalism = "+skillsXp.get(SkillType.HERBALISM)
+ +", excavation = "+skillsXp.get(SkillType.EXCAVATION)
+ +", archery = " +skillsXp.get(SkillType.ARCHERY)
+ +", swords = " +skillsXp.get(SkillType.SWORDS)
+ +", axes = "+skillsXp.get(SkillType.AXES)
+ +", acrobatics = "+skillsXp.get(SkillType.ACROBATICS)
+ +", fishing = "+skillsXp.get(SkillType.FISHING)
+ +" WHERE user_id = "+this.userid);
+ } else
+ {
+ // otherwise save to flatfile
+ try {
+ //Open the file
+ FileReader file = new FileReader(location);
+ BufferedReader in = new BufferedReader(file);
+ StringBuilder writer = new StringBuilder();
+ String line = "";
+
+ //While not at the end of the file
+ while((line = in.readLine()) != null)
+ {
+ //Read the line in and copy it to the output it's not the player
+ //we want to edit
+ if(!line.split(":")[0].equalsIgnoreCase(playername))
+ {
+ writer.append(line).append("\r\n");
+
+ //Otherwise write the new player information
+ } else {
+ writer.append(playername + ":");
+ writer.append(skills.get(SkillType.MINING) + ":");
+ writer.append(myspawn + ":");
+ writer.append(party+":");
+ writer.append(skillsXp.get(SkillType.MINING) + ":");
+ writer.append(skills.get(SkillType.WOODCUTTING) + ":");
+ writer.append(skillsXp.get(SkillType.WOODCUTTING) + ":");
+ writer.append(skills.get(SkillType.REPAIR) + ":");
+ writer.append(skills.get(SkillType.UNARMED) + ":");
+ writer.append(skills.get(SkillType.HERBALISM) + ":");
+ writer.append(skills.get(SkillType.EXCAVATION) + ":");
+ writer.append(skills.get(SkillType.ARCHERY) + ":");
+ writer.append(skills.get(SkillType.SWORDS) + ":");
+ writer.append(skills.get(SkillType.AXES) + ":");
+ writer.append(skills.get(SkillType.ACROBATICS) + ":");
+ writer.append(skillsXp.get(SkillType.REPAIR) + ":");
+ writer.append(skillsXp.get(SkillType.UNARMED) + ":");
+ writer.append(skillsXp.get(SkillType.HERBALISM) + ":");
+ writer.append(skillsXp.get(SkillType.EXCAVATION) + ":");
+ writer.append(skillsXp.get(SkillType.ARCHERY) + ":");
+ writer.append(skillsXp.get(SkillType.SWORDS) + ":");
+ writer.append(skillsXp.get(SkillType.AXES) + ":");
+ writer.append(skillsXp.get(SkillType.ACROBATICS) + ":");
+ writer.append(myspawnworld+":");
+ writer.append(skills.get(SkillType.TAMING) + ":");
+ writer.append(skillsXp.get(SkillType.TAMING) + ":");
+ //Need to store the DATS of abilities nao
+ //Berserk, Gigadrillbreaker, Tree Feller, Green Terra, Serrated Strikes, Skull Splitter, Super Breaker
+ writer.append(String.valueOf(berserkDATS)+":");
+ writer.append(String.valueOf(gigaDrillBreakerDATS)+":");
+ writer.append(String.valueOf(treeFellerDATS)+":");
+ writer.append(String.valueOf(greenTerraDATS)+":");
+ writer.append(String.valueOf(serratedStrikesDATS)+":");
+ writer.append(String.valueOf(skullSplitterDATS)+":");
+ writer.append(String.valueOf(superBreakerDATS)+":");
+ writer.append(hud.toString()+":");
+ writer.append(skills.get(SkillType.FISHING) + ":");
+ writer.append(skillsXp.get(SkillType.FISHING) + ":");
+ writer.append("\r\n");
+ }
+ }
+ in.close();
+ //Write the new file
+ FileWriter out = new FileWriter(location);
+ out.write(writer.toString());
+ out.close();
+ } catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while writing to " + location + " (Are you sure you formatted it correctly?)", e);
+ }
+ }
+ }
+ public void addPlayer()
+ {
+ try {
+ //Open the file to write the player
+ FileWriter file = new FileWriter(location, true);
+ BufferedWriter out = new BufferedWriter(file);
+
+ //Add the player to the end
+ out.append(playername + ":");
+ out.append(0 + ":"); //mining
+ out.append(myspawn+":");
+ out.append(party+":");
+ out.append(0+":"); //XP
+ out.append(0+":"); //woodcutting
+ out.append(0+":"); //woodCuttingXP
+ out.append(0+":"); //repair
+ out.append(0+":"); //unarmed
+ out.append(0+":"); //herbalism
+ out.append(0+":"); //excavation
+ out.append(0+":"); //archery
+ out.append(0+":"); //swords
+ out.append(0+":"); //axes
+ out.append(0+":"); //acrobatics
+ out.append(0+":"); //repairXP
+ out.append(0+":"); //unarmedXP
+ out.append(0+":"); //herbalismXP
+ out.append(0+":"); //excavationXP
+ out.append(0+":"); //archeryXP
+ out.append(0+":"); //swordsXP
+ out.append(0+":"); //axesXP
+ out.append(0+":"); //acrobaticsXP
+ out.append(myspawnworld+":");
+ out.append(0+":"); //taming
+ out.append(0+":"); //tamingXP
+ out.append(0+":"); //DATS
+ out.append(0+":"); //DATS
+ out.append(0+":"); //DATS
+ out.append(0+":"); //DATS
+ out.append(0+":"); //DATS
+ out.append(0+":"); //DATS
+ out.append(0+":"); //DATS
+ out.append(LoadProperties.defaulthud.toString()+":");//HUD
+ out.append(0+":"); //Fishing
+ out.append(0+":"); //FishingXP
+
+ //Add more in the same format as the line above
+
+ out.newLine();
+ out.close();
+ } catch (Exception e) {
+ log.log(Level.SEVERE, "Exception while writing to " + location + " (Are you sure you formatted it correctly?)", e);
+ }
+ }
+ public void togglePartyHUD()
+ {
+ partyhud = !partyhud;
+ }
+ public boolean getPartyHUD()
+ {
+ return partyhud;
+ }
+ public void toggleSpoutEnabled()
+ {
+ spoutcraft = !spoutcraft;
+ }
+
+ public boolean isFilling()
+ {
+ return filling;
+ }
+ public void toggleFilling()
+ {
+ filling = !filling;
+ }
+ public HUDType getHUDType()
+ {
+ return hud;
+ }
+ public void setHUDType(HUDType type)
+ {
+ hud = type;
+ save();
+ }
+ public boolean getXpBarLocked()
+ {
+ return xpbarlocked;
+ }
+ public void toggleXpBarLocked()
+ {
+ xpbarlocked = !xpbarlocked;
+ }
+ public int getXpBarInc()
+ {
+ return xpbarinc;
+ }
+ public void setXpBarInc(int newvalue)
+ {
+ xpbarinc = newvalue;
+ }
+ public void setSkillLock(SkillType newvalue)
+ {
+ skillLock = newvalue;
+ }
+ public SkillType getSkillLock()
+ {
+ return skillLock;
+ }
+ public void setLastGained(SkillType newvalue)
+ {
+ lastgained = newvalue;
+ }
+ public SkillType getLastGained()
+ {
+ return lastgained;
+ }
+
+ public boolean getAdminChatMode() {return adminChatMode;}
+ public boolean getPartyChatMode() {return partyChatMode;}
+
+ public boolean getGodMode() {return godMode;}
+
+ public void togglePlacedAnvil()
+ {
+ placedAnvil = !placedAnvil;
+ }
+ public Boolean getPlacedAnvil()
+ {
+ return placedAnvil;
+ }
+ public void toggleAdminChat()
+ {
+ adminChatMode = !adminChatMode;
+ }
+
+ public void toggleGodMode()
+ {
+ godMode = !godMode;
+ }
+
+ public void togglePartyChat()
+ {
+ partyChatMode = !partyChatMode;
+ }
+
+ public void setMana(int newvalue)
+ {
+ mana = newvalue;
+ }
+
+ public int getCurrentMana()
+ {
+ return mana;
+ }
+ public void setDyeChanged(Boolean bool)
+ {
+ dyeChanged = bool;
+ }
+ public boolean getDyeChanged()
+ {
+ return dyeChanged;
+ }
+ public void setBlueDyeCycle(int newvalue)
+ {
+ blueDyeCycle = newvalue;
+ }
+ public int getBlueDyeCycle()
+ {
+ return blueDyeCycle;
+ }
+ public void setBlueDyeCycleSel(int newvalue)
+ {
+ blueDyeCycleSel = newvalue;
+ }
+ public int getBlueDyeCycleSel()
+ {
+ return blueDyeCycleSel;
+ }
+ public void setGreenDyeCycle(int newvalue)
+ {
+ greenDyeCycle = newvalue;
+ }
+ public int getGreenDyeCycle()
+ {
+ return greenDyeCycle;
+ }
+ public void setGreenDyeCycleSel(int newvalue)
+ {
+ greenDyeCycleSel = newvalue;
+ }
+ public int getGreenDyeCycleSel()
+ {
+ return greenDyeCycleSel;
+ }
+
+ public boolean isPlayer(String player)
+ {
+ return player.equals(playername);
+ }
+ public boolean getPartyChatOnlyToggle(){return partyChatOnly;}
+ public void togglePartyChatOnly(){partyChatOnly = !partyChatOnly;}
+ public boolean getAbilityUse(){
+ return abilityuse;
+ }
+ public void toggleAbilityUse()
+ {
+ abilityuse = !abilityuse;
+ }
+ public long getMySpawnATS(){
+ return mySpawnATS;
+ }
+ public void setMySpawnATS(long newvalue)
+ {
+ mySpawnATS = (int) (newvalue/1000);
+ }
+ public void decreaseBleedTicks()
+ {
+ bleedticks--;
+ }
+ public Integer getBleedTicks(){
+ return bleedticks;
+ }
+ public void setBleedTicks(Integer newvalue){
+ bleedticks = newvalue;
+ }
+ public void addBleedTicks(Integer newvalue){
+ bleedticks+=newvalue;
+ }
+ /*
+ * EXPLOIT PREVENTION
+ */
+ public long getRespawnATS() {return respawnATS;}
+ public void setRespawnATS(long newvalue) {respawnATS = (int) (newvalue/1000);}
+
+ /*
+ * HOE PREPARATION
+ */
+ public boolean getHoePreparationMode(){
+ return hoePreparationMode;
+ }
+ public void setHoePreparationMode(Boolean bool){
+ hoePreparationMode = bool;
+ }
+ public long getHoePreparationATS(){
+ return hoePreparationATS;
+ }
+ public void setHoePreparationATS(long newvalue){
+ hoePreparationATS = (int) (newvalue/1000);
+ }
+
+ /*
+ * SWORDS PREPARATION
+ */
+ public boolean getSwordsPreparationMode(){
+ return swordsPreparationMode;
+ }
+ public void setSwordsPreparationMode(Boolean bool){
+ swordsPreparationMode = bool;
+ }
+ public long getSwordsPreparationATS(){
+ return swordsPreparationATS;
+ }
+ public void setSwordsPreparationATS(long newvalue){
+ swordsPreparationATS = (int) (newvalue/1000);
+ }
+ /*
+ * SHOVEL PREPARATION
+ */
+ public boolean getShovelPreparationMode(){
+ return shovelPreparationMode;
+ }
+ public void setShovelPreparationMode(Boolean bool){
+ shovelPreparationMode = bool;
+ }
+ public long getShovelPreparationATS(){
+ return shovelPreparationATS;
+ }
+ public void setShovelPreparationATS(long newvalue){
+ shovelPreparationATS = (int) (newvalue/1000);
+ }
+ /*
+ * FISTS PREPARATION
+ */
+ public boolean getFistsPreparationMode(){
+ return fistsPreparationMode;
+ }
+ public void setFistsPreparationMode(Boolean bool){
+ fistsPreparationMode = bool;
+ }
+ public long getFistsPreparationATS(){
+ return fistsPreparationATS;
+ }
+ public void setFistsPreparationATS(long newvalue){
+ fistsPreparationATS = (int) (newvalue/1000);
+ }
+ /*
+ * AXE PREPARATION
+ */
+ public boolean getAxePreparationMode(){
+ return axePreparationMode;
+ }
+ public void setAxePreparationMode(Boolean bool){
+ axePreparationMode = bool;
+ }
+ public long getAxePreparationATS(){
+ return axePreparationATS;
+ }
+ public void setAxePreparationATS(long newvalue){
+ axePreparationATS = (int) (newvalue/1000);
+ }
+ /*
+ * PICKAXE PREPARATION
+ */
+ public boolean getPickaxePreparationMode(){
+ return pickaxePreparationMode;
+ }
+ public void setPickaxePreparationMode(Boolean bool){
+ pickaxePreparationMode = bool;
+ }
+ public long getPickaxePreparationATS(){
+ return pickaxePreparationATS;
+ }
+ public void setPickaxePreparationATS(long newvalue){
+ pickaxePreparationATS = (int) (newvalue/1000);
+ }
+ /*
+ * GREEN TERRA MODE
+ */
+ public boolean getGreenTerraInformed() {return greenTerraInformed;}
+ public void setGreenTerraInformed(Boolean bool){
+ greenTerraInformed = bool;
+ }
+ public boolean getGreenTerraMode(){
+ return greenTerraMode;
+ }
+ public void setGreenTerraMode(Boolean bool){
+ greenTerraMode = bool;
+ }
+ public long getGreenTerraActivatedTimeStamp() {return greenTerraATS;}
+ public void setGreenTerraActivatedTimeStamp(Long newvalue){
+ greenTerraATS = (int) (newvalue/1000);
+ }
+ public long getGreenTerraDeactivatedTimeStamp() {return greenTerraDATS;}
+ public void setGreenTerraDeactivatedTimeStamp(Long newvalue){
+ greenTerraDATS = (int) (newvalue/1000);
+ save();
+ }
+ /*
+ * BERSERK MODE
+ */
+ public boolean getBerserkInformed() {return berserkInformed;}
+ public void setBerserkInformed(Boolean bool){
+ berserkInformed = bool;
+ }
+ public boolean getBerserkMode(){
+ return berserkMode;
+ }
+ public void setBerserkMode(Boolean bool){
+ berserkMode = bool;
+ }
+ public long getBerserkActivatedTimeStamp() {return berserkATS;}
+ public void setBerserkActivatedTimeStamp(Long newvalue){
+ berserkATS = (int) (newvalue/1000);
+ }
+ public long getBerserkDeactivatedTimeStamp() {return berserkDATS;}
+ public void setBerserkDeactivatedTimeStamp(Long newvalue){
+ berserkDATS = (int) (newvalue/1000);
+ save();
+ }
+ /*
+ * SKULL SPLITTER
+ */
+ public boolean getSkullSplitterInformed() {return skullSplitterInformed;}
+ public void setSkullSplitterInformed(Boolean bool){
+ skullSplitterInformed = bool;
+ }
+ public boolean getSkullSplitterMode(){
+ return skullSplitterMode;
+ }
+ public void setSkullSplitterMode(Boolean bool){
+ skullSplitterMode = bool;
+ }
+ public long getSkullSplitterActivatedTimeStamp() {return skullSplitterATS;}
+ public void setSkullSplitterActivatedTimeStamp(Long newvalue){
+ skullSplitterATS = (int) (newvalue/1000);
+ }
+ public long getSkullSplitterDeactivatedTimeStamp() {return skullSplitterDATS;}
+ public void setSkullSplitterDeactivatedTimeStamp(Long newvalue){
+ skullSplitterDATS = (int) (newvalue/1000);
+ save();
+ }
+ /*
+ * SERRATED STRIKES
+ */
+ public boolean getSerratedStrikesInformed() {return serratedStrikesInformed;}
+ public void setSerratedStrikesInformed(Boolean bool){
+ serratedStrikesInformed = bool;
+ }
+ public boolean getSerratedStrikesMode(){
+ return serratedStrikesMode;
+ }
+ public void setSerratedStrikesMode(Boolean bool){
+ serratedStrikesMode = bool;
+ }
+ public long getSerratedStrikesActivatedTimeStamp() {return serratedStrikesATS;}
+ public void setSerratedStrikesActivatedTimeStamp(Long newvalue){
+ serratedStrikesATS = (int) (newvalue/1000);
+ }
+ public long getSerratedStrikesDeactivatedTimeStamp() {return serratedStrikesDATS;}
+ public void setSerratedStrikesDeactivatedTimeStamp(Long newvalue){
+ serratedStrikesDATS = (int) (newvalue/1000);
+ save();
+ }
+ /*
+ * GIGA DRILL BREAKER
+ */
+ public boolean getGigaDrillBreakerInformed() {return gigaDrillBreakerInformed;}
+ public void setGigaDrillBreakerInformed(Boolean bool){
+ gigaDrillBreakerInformed = bool;
+ }
+ public boolean getGigaDrillBreakerMode(){
+ return gigaDrillBreakerMode;
+ }
+ public void setGigaDrillBreakerMode(Boolean bool){
+ gigaDrillBreakerMode = bool;
+ }
+ public long getGigaDrillBreakerActivatedTimeStamp() {return gigaDrillBreakerATS;}
+ public void setGigaDrillBreakerActivatedTimeStamp(Long newvalue){
+ gigaDrillBreakerATS = (int) (newvalue/1000);
+ }
+ public long getGigaDrillBreakerDeactivatedTimeStamp() {return gigaDrillBreakerDATS;}
+ public void setGigaDrillBreakerDeactivatedTimeStamp(Long newvalue){
+ gigaDrillBreakerDATS = (int) (newvalue/1000);
+ save();
+ }
+ /*
+ * TREE FELLER STUFF
+ */
+ public boolean getTreeFellerInformed() {return treeFellerInformed;}
+ public void setTreeFellerInformed(Boolean bool){
+ treeFellerInformed = bool;
+ }
+ public boolean getTreeFellerMode(){
+ return treeFellerMode;
+ }
+ public void setTreeFellerMode(Boolean bool){
+ treeFellerMode = bool;
+ }
+ public long getTreeFellerActivatedTimeStamp() {return treeFellerATS;}
+ public void setTreeFellerActivatedTimeStamp(Long newvalue){
+ treeFellerATS = (int) (newvalue/1000);
+ }
+ public long getTreeFellerDeactivatedTimeStamp() {return treeFellerDATS;}
+ public void setTreeFellerDeactivatedTimeStamp(Long newvalue){
+ treeFellerDATS = (int) (newvalue/1000);
+ save();
+ }
+ /*
+ * MINING
+ */
+ public boolean getSuperBreakerInformed() {return superBreakerInformed;}
+ public void setSuperBreakerInformed(Boolean bool){
+ superBreakerInformed = bool;
+ }
+ public boolean getSuperBreakerMode(){
+ return superBreakerMode;
+ }
+ public void setSuperBreakerMode(Boolean bool){
+ superBreakerMode = bool;
+ }
+ public long getSuperBreakerActivatedTimeStamp() {return superBreakerATS;}
+ public void setSuperBreakerActivatedTimeStamp(Long newvalue){
+ superBreakerATS = (int) (newvalue/1000);
+ }
+ public long getSuperBreakerDeactivatedTimeStamp() {return superBreakerDATS;}
+ public void setSuperBreakerDeactivatedTimeStamp(Long newvalue){
+ superBreakerDATS = (int) (newvalue/1000);
+ save();
+ }
+ public long getRecentlyHurt(){
+ return recentlyHurt;
+ }
+ public void setRecentlyHurt(long newvalue){
+ recentlyHurt = (int) (newvalue/1000);
+ }
+ public void skillUp(SkillType skillType, int newvalue)
+ {
+ skills.put(skillType, skills.get(skillType)+newvalue);
+ save();
+ }
+ public Integer getSkillLevel(SkillType skillType)
+ {
+ return skills.get(skillType);
+ }
+ public Integer getSkillXpLevel(SkillType skillType)
+ {
+ return skillsXp.get(skillType);
+ }
+ public void resetSkillXp(SkillType skillType)
+ {
+ skills.put(skillType, 0);
+ }
+
+ /**
+ * Adds XP to the player, this ignores skill modifiers
+ * @param skillType The skill to add XP to
+ * @param newvalue The amount of XP to add
+ */
+ public void addXPOverride(SkillType skillType, int newvalue)
+ {
+ if(skillType == SkillType.ALL)
+ {
+ for(SkillType x : SkillType.values())
+ {
+ if(x == SkillType.ALL)
+ continue;
+ skillsXp.put(x, skillsXp.get(x)+newvalue);
+ }
+ } else {
+ int xp = newvalue;
+
+ xp=xp*LoadProperties.xpGainMultiplier;
+ skillsXp.put(skillType, skillsXp.get(skillType)+xp);
+ lastgained = skillType;
+ }
+ }
+ /**
+ * Adds XP to the player, this is affected by skill modifiers
+ * @param skillType The skill to add XP to
+ * @param newvalue The amount of XP to add
+ */
+ public void addXP(SkillType skillType, int newvalue, Player thisplayer)
+ {
+ if(System.currentTimeMillis() < ((xpGainATS*1000)+250) || thisplayer.getGameMode() == GameMode.CREATIVE)
+ return;
+
+ //Setup a timestamp of when xp was given
+ xpGainATS = (int) (System.currentTimeMillis()/1000);
+
+ double bonusModifier = 0;
+ String leaderName = "";
+
+ if(inParty())
+ {
+ for(Player x : Party.getInstance().getPartyMembers(thisplayer))
+ {
+ if(x.isOnline() && !x.getName().equals(thisplayer.getName()) && Party.getInstance().isPartyLeader(x.getName(), this.getParty()))
+ {
+ leaderName = x.getName();
+ if(m.getDistance(thisplayer.getLocation(), x.getLocation()) < 25)
+ {
+ PlayerProfile PartyLeader = Users.getProfile(x);
+ if(PartyLeader.getSkillLevel(skillType) >= this.getSkillLevel(skillType))
+ {
+ int leaderLevel = PartyLeader.getSkillLevel(skillType);
+ int difference = leaderLevel - this.getSkillLevel(skillType);
+ bonusModifier = (difference*0.75D)/100D;
+ }
+ }
+ }
+ }
+ }
+ if(skillType == SkillType.ALL)
+ {
+ for(SkillType x : SkillType.values())
+ {
+ if(x == SkillType.ALL)
+ continue;
+ skillsXp.put(x, skillsXp.get(x)+newvalue);
+ }
+ } else {
+ int xp = newvalue;
+
+ switch(skillType)
+ {
+ case TAMING:
+ xp=(int) (xp/LoadProperties.tamingxpmodifier);
+ break;
+ case MINING:
+ xp=(int) (xp/LoadProperties.miningxpmodifier);
+ break;
+ case WOODCUTTING:
+ xp=(int) (xp/LoadProperties.woodcuttingxpmodifier);
+ break;
+ case REPAIR:
+ xp=(int) (xp/LoadProperties.repairxpmodifier);
+ break;
+ case HERBALISM:
+ xp=(int) (xp/LoadProperties.herbalismxpmodifier);
+ break;
+ case ACROBATICS:
+ xp=(int) (xp/LoadProperties.acrobaticsxpmodifier);
+ break;
+ case SWORDS:
+ xp=(int) (xp/LoadProperties.swordsxpmodifier);
+ break;
+ case ARCHERY:
+ xp=(int) (xp/LoadProperties.archeryxpmodifier);
+ break;
+ case UNARMED:
+ xp=(int) (xp/LoadProperties.unarmedxpmodifier);
+ break;
+ case EXCAVATION:
+ xp=(int) (xp/LoadProperties.excavationxpmodifier);
+ break;
+ case AXES:
+ xp=(int) (xp/LoadProperties.axesxpmodifier);
+ break;
+ }
+ xp=xp*LoadProperties.xpGainMultiplier;
+
+ if(bonusModifier > 0)
+ {
+ if(bonusModifier >= 2)
+ bonusModifier = 2;
+
+ double trueBonus = bonusModifier * xp;
+ double oldxp = xp;
+ xp+=trueBonus;
+ double percent = (trueBonus/oldxp)*100;
+ thisplayer.sendMessage(ChatColor.GREEN+"XP: "+oldxp+" Bonus XP: "+trueBonus+" Total: "+xp+ChatColor.GOLD+" [Master: "+leaderName+" " +" +"+(int)percent+"%]");
+ }
+ skillsXp.put(skillType, skillsXp.get(skillType)+xp);
+ lastgained = skillType;
+ }
+ //save();
+ }
+
+ public void removeXP(SkillType skillType, int newvalue)
+ {
+ if(skillType == SkillType.ALL)
+ {
+ skillsXp.put(SkillType.TAMING, skillsXp.get(SkillType.TAMING)-newvalue);
+ skillsXp.put(SkillType.MINING, skillsXp.get(SkillType.MINING)-newvalue);
+ skillsXp.put(SkillType.WOODCUTTING, skillsXp.get(SkillType.WOODCUTTING)-newvalue);
+ skillsXp.put(SkillType.REPAIR, skillsXp.get(SkillType.REPAIR)-newvalue);
+ skillsXp.put(SkillType.HERBALISM, skillsXp.get(SkillType.HERBALISM)-newvalue);
+ skillsXp.put(SkillType.ACROBATICS, skillsXp.get(SkillType.ACROBATICS)-newvalue);
+ skillsXp.put(SkillType.SWORDS, skillsXp.get(SkillType.SWORDS)-newvalue);
+ skillsXp.put(SkillType.ARCHERY, skillsXp.get(SkillType.ARCHERY)-newvalue);
+ skillsXp.put(SkillType.UNARMED, skillsXp.get(SkillType.UNARMED)-newvalue);
+ skillsXp.put(SkillType.EXCAVATION, skillsXp.get(SkillType.EXCAVATION)-newvalue);
+ skillsXp.put(SkillType.AXES, skillsXp.get(SkillType.AXES)-newvalue);
+ skillsXp.put(SkillType.FISHING, skillsXp.get(SkillType.FISHING)-newvalue);
+ } else {
+ skillsXp.put(skillType, skillsXp.get(skillType)-newvalue);
+ }
+ //save();
+ }
+ public void acceptInvite()
+ {
+ party = invite;
+ invite = "";
+ }
+ public void modifyInvite(String invitename)
+ {
+ invite = invitename;
+ }
+ public String getInvite() { return invite; }
+
+ public void modifyskill(SkillType skillType, int newvalue)
+ {
+ if(skillType == SkillType.ALL)
+ {
+ skills.put(SkillType.TAMING, newvalue);
+ skills.put(SkillType.MINING, newvalue);
+ skills.put(SkillType.WOODCUTTING, newvalue);
+ skills.put(SkillType.REPAIR, newvalue);
+ skills.put(SkillType.HERBALISM, newvalue);
+ skills.put(SkillType.ACROBATICS, newvalue);
+ skills.put(SkillType.SWORDS, newvalue);
+ skills.put(SkillType.ARCHERY, newvalue);
+ skills.put(SkillType.UNARMED, newvalue);
+ skills.put(SkillType.EXCAVATION, newvalue);
+ skills.put(SkillType.AXES, newvalue);
+ skills.put(SkillType.FISHING, newvalue);
+
+ skillsXp.put(SkillType.TAMING, 0);
+ skillsXp.put(SkillType.MINING, 0);
+ skillsXp.put(SkillType.WOODCUTTING, 0);
+ skillsXp.put(SkillType.REPAIR, 0);
+ skillsXp.put(SkillType.HERBALISM, 0);
+ skillsXp.put(SkillType.ACROBATICS, 0);
+ skillsXp.put(SkillType.SWORDS, 0);
+ skillsXp.put(SkillType.ARCHERY, 0);
+ skillsXp.put(SkillType.UNARMED, 0);
+ skillsXp.put(SkillType.EXCAVATION, 0);
+ skillsXp.put(SkillType.AXES, 0);
+ skillsXp.put(SkillType.FISHING, 0);
+ } else {
+ skills.put(skillType, newvalue);
+ skillsXp.put(skillType, newvalue);
+ }
+ save();
+ }
+ public Integer getXpToLevel(SkillType skillType)
+ {
+ return (int) ((1020+(skills.get(skillType) * 20)));
+ }
+
+ //Store the player's party
+ public void setParty(String newParty)
+ {
+ party = newParty;
+ save();
+ }
+ //Retrieve the player's party
+ public String getParty() {return party;}
+ //Remove party
+ public void removeParty() {
+ party = null;
+ save();
+ }
+ //Retrieve whether or not the player is in a party
+ public boolean inParty()
+ {
+ if(party != null && !party.equals("") && !party.equals("null")){
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ //Retrieve whether or not the player has an invite
+ public boolean hasPartyInvite() {
+ if(invite != null && !invite.equals("") && !invite.equals("null")){
+ return true;
+ } else {
+ return false;
+ }
+ }
+ public String getMySpawnWorld()
+ {
+ if(myspawnworld != null && !myspawnworld.equals("") && !myspawnworld.equals("null")){
+ return myspawnworld;
+ } else {
+ return Bukkit.getServer().getWorlds().get(0).toString();
+ }
+ }
+ //Save a users spawn location
+ public void setMySpawn(double x, double y, double z, String myspawnworldlocation){
+ myspawn = x+","+y+","+z;
+ myspawnworld = myspawnworldlocation;
+ save();
+ }
+ public String getX(){
+ if(myspawn != null)
+ {
+ String[] split = myspawn.split(",");
+ return split[0];
+ }
+ else
+ return null;
+ }
+ public String getY(){
+ if(myspawn != null)
+ {
+ String[] split = myspawn.split(",");
+ return split[1];
+ }
+ else
+ return null;
+ }
+ public String getZ(){
+ if(myspawn != null)
+ {
+ String[] split = myspawn.split(",");
+ return split[2];
+ }
+ else
+ return null;
+ }
+ public boolean isDead(){
+ return dead;
+ }
+ public Location getMySpawn(Player player)
+ {
+ Location loc = null;
+ if(myspawn != null)
+ {
+ if(m.isDouble(getX()) && m.isDouble(getY()) && m.isDouble(getZ()))
+ loc = new Location(player.getWorld(),(Double.parseDouble(getX())), Double.parseDouble(getY()), Double.parseDouble(getZ()));
+ else
+ return null;
+ } else
+ return null;
+
+ loc.setYaw(0);
+ loc.setPitch(0);
+ if(loc.getX() != 0 && loc.getY() != 0 && loc.getZ() != 0 && loc.getWorld() != null)
+ {
+ if(Bukkit.getServer().getWorld(this.getMySpawnWorld()) != null)
+ loc.setWorld(Bukkit.getServer().getWorld(this.getMySpawnWorld()));
+ else
+ loc.setWorld(Bukkit.getServer().getWorlds().get(0));
+ return loc;
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/src/com/gmail/nossr50/datatypes/PlayerStat.java b/src/main/java/com/gmail/nossr50/datatypes/PlayerStat.java
similarity index 97%
rename from src/com/gmail/nossr50/datatypes/PlayerStat.java
rename to src/main/java/com/gmail/nossr50/datatypes/PlayerStat.java
index 423dc62b3..3ae0afbd5 100644
--- a/src/com/gmail/nossr50/datatypes/PlayerStat.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/PlayerStat.java
@@ -1,23 +1,23 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes;
-
-public class PlayerStat
-{
- public String name;
- public int statVal = 0;
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes;
+
+public class PlayerStat
+{
+ public String name;
+ public int statVal = 0;
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/datatypes/SkillType.java b/src/main/java/com/gmail/nossr50/datatypes/SkillType.java
similarity index 96%
rename from src/com/gmail/nossr50/datatypes/SkillType.java
rename to src/main/java/com/gmail/nossr50/datatypes/SkillType.java
index c6d6d175a..71b86e96c 100644
--- a/src/com/gmail/nossr50/datatypes/SkillType.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/SkillType.java
@@ -1,36 +1,36 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes;
-
-public enum SkillType
-{
- ACROBATICS,
- ALCHEMY,
- ALL, //This one is just for convenience
- ARCHERY,
- AXES,
- EXCAVATION,
- ENCHANTING,
- FISHING,
- HERBALISM,
- MINING,
- REPAIR,
- SWORDS,
- TAMING,
- UNARMED,
- WOODCUTTING;
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes;
+
+public enum SkillType
+{
+ ACROBATICS,
+ ALCHEMY,
+ ALL, //This one is just for convenience
+ ARCHERY,
+ AXES,
+ EXCAVATION,
+ ENCHANTING,
+ FISHING,
+ HERBALISM,
+ MINING,
+ REPAIR,
+ SWORDS,
+ TAMING,
+ UNARMED,
+ WOODCUTTING;
+}
diff --git a/src/com/gmail/nossr50/datatypes/Tree.java b/src/main/java/com/gmail/nossr50/datatypes/Tree.java
similarity index 96%
rename from src/com/gmail/nossr50/datatypes/Tree.java
rename to src/main/java/com/gmail/nossr50/datatypes/Tree.java
index dcfc9dbf7..fcb88a055 100644
--- a/src/com/gmail/nossr50/datatypes/Tree.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/Tree.java
@@ -1,55 +1,55 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes;
-
-import java.util.ArrayList;
-
-import com.gmail.nossr50.datatypes.PlayerStat;
-
-public class Tree {
-
- TreeNode root = null;
-
- public Tree(){}
-
- public void add(String p, int in)
- {
- if(root == null){
- root = new TreeNode(p, in);
- }
- else
- root.add(p,in);
- }
-
- public PlayerStat[] inOrder()
- {
- if(root != null){
- ArrayList order = root.inOrder(new ArrayList());
- return order.toArray(new PlayerStat[order.size()]);
- } else {
- //Throw some dummy info in case the users file is empty
- //It's not a good fix but its better than rewriting the whole system
- ArrayList x = new ArrayList();
- PlayerStat y = new PlayerStat();
- y.name = "$mcMMO_DummyInfo";
- y.statVal = 0;
- x.add(y);
- return x.toArray(new PlayerStat[x.size()]);
- }
- }
-
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes;
+
+import java.util.ArrayList;
+
+import com.gmail.nossr50.datatypes.PlayerStat;
+
+public class Tree {
+
+ TreeNode root = null;
+
+ public Tree(){}
+
+ public void add(String p, int in)
+ {
+ if(root == null){
+ root = new TreeNode(p, in);
+ }
+ else
+ root.add(p,in);
+ }
+
+ public PlayerStat[] inOrder()
+ {
+ if(root != null){
+ ArrayList order = root.inOrder(new ArrayList());
+ return order.toArray(new PlayerStat[order.size()]);
+ } else {
+ //Throw some dummy info in case the users file is empty
+ //It's not a good fix but its better than rewriting the whole system
+ ArrayList x = new ArrayList();
+ PlayerStat y = new PlayerStat();
+ y.name = "$mcMMO_DummyInfo";
+ y.statVal = 0;
+ x.add(y);
+ return x.toArray(new PlayerStat[x.size()]);
+ }
+ }
+
+}
diff --git a/src/com/gmail/nossr50/datatypes/TreeNode.java b/src/main/java/com/gmail/nossr50/datatypes/TreeNode.java
similarity index 96%
rename from src/com/gmail/nossr50/datatypes/TreeNode.java
rename to src/main/java/com/gmail/nossr50/datatypes/TreeNode.java
index 3a95899e1..8e547dda2 100644
--- a/src/com/gmail/nossr50/datatypes/TreeNode.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/TreeNode.java
@@ -1,65 +1,65 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes;
-
-import java.util.ArrayList;
-
-import com.gmail.nossr50.datatypes.PlayerStat;
-
-public class TreeNode
-{
- TreeNode left = null
- , right = null;
- PlayerStat ps = new PlayerStat();
-
- public TreeNode(String p, int in) {ps.statVal = in; ps.name = p;}
-
- public void add (String p, int in)
- {
- if (in >= ps.statVal)
- {
- if (left == null)
- left = new TreeNode(p,in);
- else
- left.add(p, in);
- }
- else if(in < ps.statVal)
- {
- if (right == null)
- right = new TreeNode(p,in);
- else
- right.add(p, in);
- }
- }
-
- public ArrayList inOrder(ArrayList a)
- {
- //if left node is not null than assign arrayList(a) to left.inOrder()
-
- //GOES THROUGH THE ENTIRE LEFT BRANCH AND GRABS THE GREATEST NUMBER
-
- if(left != null)
- a = left.inOrder(a);
-
- a.add(ps);
-
- if(right != null)
- a = right.inOrder(a);
-
- return a;
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes;
+
+import java.util.ArrayList;
+
+import com.gmail.nossr50.datatypes.PlayerStat;
+
+public class TreeNode
+{
+ TreeNode left = null
+ , right = null;
+ PlayerStat ps = new PlayerStat();
+
+ public TreeNode(String p, int in) {ps.statVal = in; ps.name = p;}
+
+ public void add (String p, int in)
+ {
+ if (in >= ps.statVal)
+ {
+ if (left == null)
+ left = new TreeNode(p,in);
+ else
+ left.add(p, in);
+ }
+ else if(in < ps.statVal)
+ {
+ if (right == null)
+ right = new TreeNode(p,in);
+ else
+ right.add(p, in);
+ }
+ }
+
+ public ArrayList inOrder(ArrayList a)
+ {
+ //if left node is not null than assign arrayList(a) to left.inOrder()
+
+ //GOES THROUGH THE ENTIRE LEFT BRANCH AND GRABS THE GREATEST NUMBER
+
+ if(left != null)
+ a = left.inOrder(a);
+
+ a.add(ps);
+
+ if(right != null)
+ a = right.inOrder(a);
+
+ return a;
+ }
+}
diff --git a/src/com/gmail/nossr50/datatypes/buttons/ButtonEscape.java b/src/main/java/com/gmail/nossr50/datatypes/buttons/ButtonEscape.java
similarity index 96%
rename from src/com/gmail/nossr50/datatypes/buttons/ButtonEscape.java
rename to src/main/java/com/gmail/nossr50/datatypes/buttons/ButtonEscape.java
index 1b716443e..ecc829080 100644
--- a/src/com/gmail/nossr50/datatypes/buttons/ButtonEscape.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/buttons/ButtonEscape.java
@@ -1,29 +1,29 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes.buttons;
-
-import org.getspout.spoutapi.gui.GenericButton;
-
-public class ButtonEscape extends GenericButton
-{
- public ButtonEscape()
- {
- this.setText("EXIT");
- this.setWidth(60).setHeight(20);
- this.setDirty(true);
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes.buttons;
+
+import org.getspout.spoutapi.gui.GenericButton;
+
+public class ButtonEscape extends GenericButton
+{
+ public ButtonEscape()
+ {
+ this.setText("EXIT");
+ this.setWidth(60).setHeight(20);
+ this.setDirty(true);
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/datatypes/buttons/ButtonHUDStyle.java b/src/main/java/com/gmail/nossr50/datatypes/buttons/ButtonHUDStyle.java
similarity index 97%
rename from src/com/gmail/nossr50/datatypes/buttons/ButtonHUDStyle.java
rename to src/main/java/com/gmail/nossr50/datatypes/buttons/ButtonHUDStyle.java
index d89a4a0ac..431f8e4de 100644
--- a/src/com/gmail/nossr50/datatypes/buttons/ButtonHUDStyle.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/buttons/ButtonHUDStyle.java
@@ -1,37 +1,37 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes.buttons;
-
-import org.getspout.spoutapi.gui.GenericButton;
-
-import com.gmail.nossr50.datatypes.PlayerProfile;
-
-public class ButtonHUDStyle extends GenericButton
-{
- public ButtonHUDStyle(PlayerProfile PP)
- {
- this.setText("HUD Type: "+PP.getHUDType().toString());
- this.setTooltip("Change your HUD style!");
- this.setWidth(120).setHeight(20);
- this.setDirty(true);
- }
- public void updateText(PlayerProfile PP)
- {
- this.setText("HUD Type: "+PP.getHUDType().toString());
- this.setDirty(true);
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes.buttons;
+
+import org.getspout.spoutapi.gui.GenericButton;
+
+import com.gmail.nossr50.datatypes.PlayerProfile;
+
+public class ButtonHUDStyle extends GenericButton
+{
+ public ButtonHUDStyle(PlayerProfile PP)
+ {
+ this.setText("HUD Type: "+PP.getHUDType().toString());
+ this.setTooltip("Change your HUD style!");
+ this.setWidth(120).setHeight(20);
+ this.setDirty(true);
+ }
+ public void updateText(PlayerProfile PP)
+ {
+ this.setText("HUD Type: "+PP.getHUDType().toString());
+ this.setDirty(true);
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/datatypes/buttons/ButtonPartyToggle.java b/src/main/java/com/gmail/nossr50/datatypes/buttons/ButtonPartyToggle.java
similarity index 100%
rename from src/com/gmail/nossr50/datatypes/buttons/ButtonPartyToggle.java
rename to src/main/java/com/gmail/nossr50/datatypes/buttons/ButtonPartyToggle.java
diff --git a/src/com/gmail/nossr50/datatypes/popups/PopupMMO.java b/src/main/java/com/gmail/nossr50/datatypes/popups/PopupMMO.java
similarity index 97%
rename from src/com/gmail/nossr50/datatypes/popups/PopupMMO.java
rename to src/main/java/com/gmail/nossr50/datatypes/popups/PopupMMO.java
index 1aa3cf52a..75c375ec5 100644
--- a/src/com/gmail/nossr50/datatypes/popups/PopupMMO.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/popups/PopupMMO.java
@@ -1,75 +1,75 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.datatypes.popups;
-
-import org.bukkit.ChatColor;
-import org.bukkit.entity.Player;
-import org.getspout.spoutapi.gui.GenericLabel;
-import org.getspout.spoutapi.gui.GenericPopup;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.buttons.ButtonEscape;
-import com.gmail.nossr50.datatypes.buttons.ButtonHUDStyle;
-import com.gmail.nossr50.datatypes.buttons.ButtonPartyToggle;
-
-public class PopupMMO extends GenericPopup
-{
- ButtonHUDStyle HUDButton = null;
- ButtonPartyToggle PartyButton = null;
- ButtonEscape EscapeButton = null;
- GenericLabel mcMMO_label = new GenericLabel();
- GenericLabel tip_escape = new GenericLabel();
- int center_x = 427/2;
- int center_y = 240/2;
-
- public PopupMMO(Player player, PlayerProfile PP, mcMMO plugin)
- {
- //240, 427 are the bottom right
- mcMMO_label.setText(ChatColor.GOLD+"~mcMMO Menu~");
- mcMMO_label.setX(center_x-35).setY((center_y/2)-20).setDirty(true);
-
- tip_escape.setText(ChatColor.GRAY+"Press ESCAPE to exit!");
- tip_escape.setX(mcMMO_label.getX()-15).setY(mcMMO_label.getY()+10).setDirty(true);
-
- HUDButton = new ButtonHUDStyle(PP);
- HUDButton.setX(center_x-(HUDButton.getWidth()/2)).setY(center_y/2).setDirty(true);
-
- if(LoadProperties.partybar)
- {
- PartyButton = new ButtonPartyToggle(PP);
- PartyButton.setX(center_x-(PartyButton.getWidth()/2)).setY(center_y/2+PartyButton.getHeight()).setDirty(true);
- this.attachWidget(plugin, PartyButton);
- }
-
- EscapeButton = new ButtonEscape();
- EscapeButton.setX(center_x-(EscapeButton.getWidth()/2)).setY((center_y/2)+(HUDButton.getHeight()*2)+5).setDirty(true);
-
- this.attachWidget(plugin, HUDButton);
- this.attachWidget(plugin, mcMMO_label);
- this.attachWidget(plugin, tip_escape);
- this.attachWidget(plugin, EscapeButton);
-
- this.setDirty(true);
- }
-
- public void updateButtons(PlayerProfile PP)
- {
- HUDButton.updateText(PP);
- this.setDirty(true);
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.datatypes.popups;
+
+import org.bukkit.ChatColor;
+import org.bukkit.entity.Player;
+import org.getspout.spoutapi.gui.GenericLabel;
+import org.getspout.spoutapi.gui.GenericPopup;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.buttons.ButtonEscape;
+import com.gmail.nossr50.datatypes.buttons.ButtonHUDStyle;
+import com.gmail.nossr50.datatypes.buttons.ButtonPartyToggle;
+
+public class PopupMMO extends GenericPopup
+{
+ ButtonHUDStyle HUDButton = null;
+ ButtonPartyToggle PartyButton = null;
+ ButtonEscape EscapeButton = null;
+ GenericLabel mcMMO_label = new GenericLabel();
+ GenericLabel tip_escape = new GenericLabel();
+ int center_x = 427/2;
+ int center_y = 240/2;
+
+ public PopupMMO(Player player, PlayerProfile PP, mcMMO plugin)
+ {
+ //240, 427 are the bottom right
+ mcMMO_label.setText(ChatColor.GOLD+"~mcMMO Menu~");
+ mcMMO_label.setX(center_x-35).setY((center_y/2)-20).setDirty(true);
+
+ tip_escape.setText(ChatColor.GRAY+"Press ESCAPE to exit!");
+ tip_escape.setX(mcMMO_label.getX()-15).setY(mcMMO_label.getY()+10).setDirty(true);
+
+ HUDButton = new ButtonHUDStyle(PP);
+ HUDButton.setX(center_x-(HUDButton.getWidth()/2)).setY(center_y/2).setDirty(true);
+
+ if(LoadProperties.partybar)
+ {
+ PartyButton = new ButtonPartyToggle(PP);
+ PartyButton.setX(center_x-(PartyButton.getWidth()/2)).setY(center_y/2+PartyButton.getHeight()).setDirty(true);
+ this.attachWidget(plugin, PartyButton);
+ }
+
+ EscapeButton = new ButtonEscape();
+ EscapeButton.setX(center_x-(EscapeButton.getWidth()/2)).setY((center_y/2)+(HUDButton.getHeight()*2)+5).setDirty(true);
+
+ this.attachWidget(plugin, HUDButton);
+ this.attachWidget(plugin, mcMMO_label);
+ this.attachWidget(plugin, tip_escape);
+ this.attachWidget(plugin, EscapeButton);
+
+ this.setDirty(true);
+ }
+
+ public void updateButtons(PlayerProfile PP)
+ {
+ HUDButton.updateText(PP);
+ this.setDirty(true);
+ }
+}
diff --git a/src/com/gmail/nossr50/listeners/mcBlockListener.java b/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java
similarity index 97%
rename from src/com/gmail/nossr50/listeners/mcBlockListener.java
rename to src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java
index 22fbb2d69..b082a93ed 100644
--- a/src/com/gmail/nossr50/listeners/mcBlockListener.java
+++ b/src/main/java/com/gmail/nossr50/listeners/mcBlockListener.java
@@ -1,451 +1,451 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-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.spout.SpoutStuff;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-
-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 org.getspout.spoutapi.SpoutManager;
-import org.getspout.spoutapi.player.SpoutPlayer;
-import org.getspout.spoutapi.sound.SoundEffect;
-
-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)
- {
- //Setup some basic vars
- Block block;
- Player player = event.getPlayer();
-
- //When blocks are placed on snow this event reports the wrong block.
- if (event.getBlockReplacedState() != null && event.getBlockReplacedState().getTypeId() == 78)
- {
- block = event.getBlockAgainst();
- }
- else
- {
- block = event.getBlock();
- }
-
- //Check if the blocks placed should be monitored so they do not give out XP in the future
- if(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
- else 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)
- {
- PlayerProfile PP = Users.getProfile(player);
- if(LoadProperties.spoutEnabled)
- {
- SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
- if(sPlayer.isSpoutCraftEnabled())
- {
- if(!PP.getPlacedAnvil())
- {
- sPlayer.sendNotification("[mcMMO] Anvil Placed", "Right click to repair!", Material.IRON_BLOCK);
- PP.togglePlacedAnvil();
- }
- }
- else
- {
- if(!PP.getPlacedAnvil())
- {
- event.getPlayer().sendMessage(mcLocale.getString("mcBlockListener.PlacedAnvil")); //$NON-NLS-1$
- PP.togglePlacedAnvil();
- }
- }
- }
- else
- {
- if(!PP.getPlacedAnvil())
- {
- event.getPlayer().sendMessage(mcLocale.getString("mcBlockListener.PlacedAnvil")); //$NON-NLS-1$
- PP.togglePlacedAnvil();
- }
- }
- }
- }
-
- 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
- */
-
- //Green Terra
- if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalismAbility(player) && block.getTypeId() == 59 && block.getData() == (byte) 0x07)
- {
- Herbalism.greenTerraCheck(player, block);
- }
-
- //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(false, player, block, plugin);
- }
- } else
- {
- Mining.miningBlockCheck(false, 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.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
- //Spruce
- if(block.getData() == (byte)1)
- PP.addXP(SkillType.WOODCUTTING, LoadProperties.mspruce, player);
- //Birch
- if(block.getData() == (byte)2)
- PP.addXP(SkillType.WOODCUTTING, LoadProperties.mbirch, player);
- }
- }
- } else
- {
- if(!plugin.misc.blockWatchList.contains(block))
- {
- WoodCutting.woodCuttingProcCheck(player, block);
- //Default
- if(block.getData() == (byte)0)
- PP.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
- //Spruce
- if(block.getData() == (byte)1)
- PP.addXP(SkillType.WOODCUTTING, LoadProperties.mspruce, player);
- //Birch
- if(block.getData() == (byte)2)
- PP.addXP(SkillType.WOODCUTTING, LoadProperties.mbirch, player);
- }
- }
- Skills.XpCheckSkill(SkillType.WOODCUTTING, player);
-
- /*
- * IF PLAYER IS USING TREEFELLER
- */
- if(mcPermissions.getInstance().woodCuttingAbility(player)
- && PP.getTreeFellerMode()
- && block.getTypeId() == 17
- && m.blockBreakSimulate(block, player))
- {
- if(LoadProperties.spoutEnabled)
- SpoutStuff.playSoundForPlayer(SoundEffect.EXPLODE, player, block.getLocation());
-
- 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.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
- }
- }
- 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(Excavation.canBeGigaDrillBroken(block) && mcPermissions.getInstance().excavation(player) && block.getData() != (byte) 5)
- Excavation.excavationProcCheck(block.getData(), block.getType(), block.getLocation(), player);
- /*
- * HERBALISM
- */
- if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalism(player) && Herbalism.canBeGreenTerra(block))
- {
- Herbalism.greenTerraCheck(player, block);
- }
- 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);
- if(PP.getAxePreparationMode() && block.getTypeId() == 17)
- WoodCutting.treeFellerCheck(player, block);
- if(PP.getPickaxePreparationMode() && Mining.canBeSuperBroken(block))
- Mining.superBreakerCheck(player, block);
- if(PP.getShovelPreparationMode() && Excavation.canBeGigaDrillBroken(block))
- Excavation.gigaDrillBreakerActivationCheck(player, block);
- if(PP.getFistsPreparationMode() && (Excavation.canBeGigaDrillBroken(block) || block.getTypeId() == 78))
- Unarmed.berserkActivationCheck(player);
-
- /*
- * TREE FELLAN STUFF
- */
- if(LoadProperties.spoutEnabled && block.getTypeId() == 17 && Users.getProfile(player).getTreeFellerMode())
- SpoutStuff.playSoundForPlayer(SoundEffect.FIZZ, player, block.getLocation());
-
- /*
- * 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)
- && Excavation.canBeGigaDrillBroken(block) && m.isShovel(inhand))
- {
- int x = 0;
-
- while(x < 3)
- {
- if(block.getData() != (byte)5)
- Excavation.excavationProcCheck(block.getData(), block.getType(), block.getLocation(), player);
- x++;
- }
-
- Material mat = Material.getMaterial(block.getTypeId());
-
- if(block.getType() == Material.GRASS)
- mat = Material.DIRT;
- if(block.getType() == Material.CLAY)
- mat = Material.CLAY_BALL;
-
- 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);
-
- if(item.getType() == Material.CLAY_BALL)
- {
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- } else
- {
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- }
-
- //Spout stuff
- if(LoadProperties.spoutEnabled)
- SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
- }
- /*
- * BERSERK MODE CHECKS
- */
- if(PP.getBerserkMode()
- && m.blockBreakSimulate(block, player)
- && 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;
- if(block.getTypeId() == 82)
- mat = Material.CLAY_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);
-
- if(item.getType() == Material.CLAY_BALL)
- {
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- } else
- {
- block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
- }
-
- if(LoadProperties.spoutEnabled)
- SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
- }
-
- /*
- * SUPER BREAKER CHECKS
- */
- if(PP.getSuperBreakerMode()
- && Mining.canBeSuperBroken(block)
- && m.blockBreakSimulate(block, player))
- {
-
- 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.getSkillLevel(SkillType.WOODCUTTING) >= 100 && m.isAxes(player.getItemInHand()) && m.blockBreakSimulate(block, player))
- {
- 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(LoadProperties.spoutEnabled)
- SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
- }
- 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);
- }
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+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.spout.SpoutStuff;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+
+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 org.getspout.spoutapi.SpoutManager;
+import org.getspout.spoutapi.player.SpoutPlayer;
+import org.getspout.spoutapi.sound.SoundEffect;
+
+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)
+ {
+ //Setup some basic vars
+ Block block;
+ Player player = event.getPlayer();
+
+ //When blocks are placed on snow this event reports the wrong block.
+ if (event.getBlockReplacedState() != null && event.getBlockReplacedState().getTypeId() == 78)
+ {
+ block = event.getBlockAgainst();
+ }
+ else
+ {
+ block = event.getBlock();
+ }
+
+ //Check if the blocks placed should be monitored so they do not give out XP in the future
+ if(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
+ else 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)
+ {
+ PlayerProfile PP = Users.getProfile(player);
+ if(LoadProperties.spoutEnabled)
+ {
+ SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
+ if(sPlayer.isSpoutCraftEnabled())
+ {
+ if(!PP.getPlacedAnvil())
+ {
+ sPlayer.sendNotification("[mcMMO] Anvil Placed", "Right click to repair!", Material.IRON_BLOCK);
+ PP.togglePlacedAnvil();
+ }
+ }
+ else
+ {
+ if(!PP.getPlacedAnvil())
+ {
+ event.getPlayer().sendMessage(mcLocale.getString("mcBlockListener.PlacedAnvil")); //$NON-NLS-1$
+ PP.togglePlacedAnvil();
+ }
+ }
+ }
+ else
+ {
+ if(!PP.getPlacedAnvil())
+ {
+ event.getPlayer().sendMessage(mcLocale.getString("mcBlockListener.PlacedAnvil")); //$NON-NLS-1$
+ PP.togglePlacedAnvil();
+ }
+ }
+ }
+ }
+
+ 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
+ */
+
+ //Green Terra
+ if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalismAbility(player) && block.getTypeId() == 59 && block.getData() == (byte) 0x07)
+ {
+ Herbalism.greenTerraCheck(player, block);
+ }
+
+ //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(false, player, block, plugin);
+ }
+ } else
+ {
+ Mining.miningBlockCheck(false, 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.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
+ //Spruce
+ if(block.getData() == (byte)1)
+ PP.addXP(SkillType.WOODCUTTING, LoadProperties.mspruce, player);
+ //Birch
+ if(block.getData() == (byte)2)
+ PP.addXP(SkillType.WOODCUTTING, LoadProperties.mbirch, player);
+ }
+ }
+ } else
+ {
+ if(!plugin.misc.blockWatchList.contains(block))
+ {
+ WoodCutting.woodCuttingProcCheck(player, block);
+ //Default
+ if(block.getData() == (byte)0)
+ PP.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
+ //Spruce
+ if(block.getData() == (byte)1)
+ PP.addXP(SkillType.WOODCUTTING, LoadProperties.mspruce, player);
+ //Birch
+ if(block.getData() == (byte)2)
+ PP.addXP(SkillType.WOODCUTTING, LoadProperties.mbirch, player);
+ }
+ }
+ Skills.XpCheckSkill(SkillType.WOODCUTTING, player);
+
+ /*
+ * IF PLAYER IS USING TREEFELLER
+ */
+ if(mcPermissions.getInstance().woodCuttingAbility(player)
+ && PP.getTreeFellerMode()
+ && block.getTypeId() == 17
+ && m.blockBreakSimulate(block, player))
+ {
+ if(LoadProperties.spoutEnabled)
+ SpoutStuff.playSoundForPlayer(SoundEffect.EXPLODE, player, block.getLocation());
+
+ 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.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
+ }
+ }
+ 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(Excavation.canBeGigaDrillBroken(block) && mcPermissions.getInstance().excavation(player) && block.getData() != (byte) 5)
+ Excavation.excavationProcCheck(block.getData(), block.getType(), block.getLocation(), player);
+ /*
+ * HERBALISM
+ */
+ if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalism(player) && Herbalism.canBeGreenTerra(block))
+ {
+ Herbalism.greenTerraCheck(player, block);
+ }
+ 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);
+ if(PP.getAxePreparationMode() && block.getTypeId() == 17)
+ WoodCutting.treeFellerCheck(player, block);
+ if(PP.getPickaxePreparationMode() && Mining.canBeSuperBroken(block))
+ Mining.superBreakerCheck(player, block);
+ if(PP.getShovelPreparationMode() && Excavation.canBeGigaDrillBroken(block))
+ Excavation.gigaDrillBreakerActivationCheck(player, block);
+ if(PP.getFistsPreparationMode() && (Excavation.canBeGigaDrillBroken(block) || block.getTypeId() == 78))
+ Unarmed.berserkActivationCheck(player);
+
+ /*
+ * TREE FELLAN STUFF
+ */
+ if(LoadProperties.spoutEnabled && block.getTypeId() == 17 && Users.getProfile(player).getTreeFellerMode())
+ SpoutStuff.playSoundForPlayer(SoundEffect.FIZZ, player, block.getLocation());
+
+ /*
+ * 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)
+ && Excavation.canBeGigaDrillBroken(block) && m.isShovel(inhand))
+ {
+ int x = 0;
+
+ while(x < 3)
+ {
+ if(block.getData() != (byte)5)
+ Excavation.excavationProcCheck(block.getData(), block.getType(), block.getLocation(), player);
+ x++;
+ }
+
+ Material mat = Material.getMaterial(block.getTypeId());
+
+ if(block.getType() == Material.GRASS)
+ mat = Material.DIRT;
+ if(block.getType() == Material.CLAY)
+ mat = Material.CLAY_BALL;
+
+ 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);
+
+ if(item.getType() == Material.CLAY_BALL)
+ {
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ } else
+ {
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ }
+
+ //Spout stuff
+ if(LoadProperties.spoutEnabled)
+ SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
+ }
+ /*
+ * BERSERK MODE CHECKS
+ */
+ if(PP.getBerserkMode()
+ && m.blockBreakSimulate(block, player)
+ && 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;
+ if(block.getTypeId() == 82)
+ mat = Material.CLAY_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);
+
+ if(item.getType() == Material.CLAY_BALL)
+ {
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ } else
+ {
+ block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+ }
+
+ if(LoadProperties.spoutEnabled)
+ SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
+ }
+
+ /*
+ * SUPER BREAKER CHECKS
+ */
+ if(PP.getSuperBreakerMode()
+ && Mining.canBeSuperBroken(block)
+ && m.blockBreakSimulate(block, player))
+ {
+
+ 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.getSkillLevel(SkillType.WOODCUTTING) >= 100 && m.isAxes(player.getItemInHand()) && m.blockBreakSimulate(block, player))
+ {
+ 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(LoadProperties.spoutEnabled)
+ SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
+ }
+ 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);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/listeners/mcEntityListener.java b/src/main/java/com/gmail/nossr50/listeners/mcEntityListener.java
similarity index 97%
rename from src/com/gmail/nossr50/listeners/mcEntityListener.java
rename to src/main/java/com/gmail/nossr50/listeners/mcEntityListener.java
index 4f9ad9177..4788b1f8a 100644
--- a/src/com/gmail/nossr50/listeners/mcEntityListener.java
+++ b/src/main/java/com/gmail/nossr50/listeners/mcEntityListener.java
@@ -1,208 +1,208 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.listeners;
-
-import org.bukkit.entity.Entity;
-import org.bukkit.entity.LivingEntity;
-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.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.datatypes.SkillType;
-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.getSkillLevel(SkillType.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.getSkillLevel(SkillType.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)
- {
- Player herpderp = (Player)event.getEntity();
- if(!event.isCancelled() && event.getDamage() >= 1)
- {
- Users.getProfile(herpderp).setRecentlyHurt(System.currentTimeMillis());
- }
- }
- }
- }
- }
- }
-
- public void onEntityDeath(EntityDeathEvent event)
- {
- Entity x = event.getEntity();
- x.setFireTicks(0);
-
- //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());
- }
- }
-
- 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;
- }
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.listeners;
+
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
+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.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.datatypes.SkillType;
+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.getSkillLevel(SkillType.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.getSkillLevel(SkillType.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)
+ {
+ Player herpderp = (Player)event.getEntity();
+ if(!event.isCancelled() && event.getDamage() >= 1)
+ {
+ Users.getProfile(herpderp).setRecentlyHurt(System.currentTimeMillis());
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void onEntityDeath(EntityDeathEvent event)
+ {
+ Entity x = event.getEntity();
+ x.setFireTicks(0);
+
+ //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());
+ }
+ }
+
+ 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;
+ }
+ }
+}
diff --git a/src/com/gmail/nossr50/listeners/mcPlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java
similarity index 97%
rename from src/com/gmail/nossr50/listeners/mcPlayerListener.java
rename to src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java
index 14f8c7621..770b13331 100644
--- a/src/com/gmail/nossr50/listeners/mcPlayerListener.java
+++ b/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java
@@ -1,346 +1,346 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.listeners;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.World;
-import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.command.ColouredConsoleSender;
-import org.bukkit.craftbukkit.entity.CraftItem;
-import org.bukkit.entity.CreatureType;
-import org.bukkit.entity.Entity;
-import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Player;
-import org.bukkit.entity.Wolf;
-import org.bukkit.event.block.Action;
-import org.bukkit.event.player.PlayerChatEvent;
-import org.bukkit.event.player.PlayerCommandPreprocessEvent;
-import org.bukkit.event.player.PlayerFishEvent;
-import org.bukkit.event.player.PlayerFishEvent.State;
-import org.bukkit.event.player.PlayerInteractEvent;
-import org.bukkit.event.player.PlayerJoinEvent;
-import org.bukkit.event.player.PlayerListener;
-import org.bukkit.event.player.PlayerLoginEvent;
-import org.bukkit.event.player.PlayerPickupItemEvent;
-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.commands.general.XprateCommand;
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.spout.SpoutStuff;
-import com.gmail.nossr50.spout.mmoHelper;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.party.Party;
-import com.gmail.nossr50.skills.Fishing;
-import com.gmail.nossr50.skills.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 onPlayerFish(PlayerFishEvent event)
- {
- if(mcPermissions.getInstance().fishing(event.getPlayer()))
- {
- if(event.getState() == State.CAUGHT_FISH)
- {
- if(event.getCaught() instanceof CraftItem)
- {
- Fishing.processResults(event);
- }
- } else if (event.getState() == State.CAUGHT_ENTITY)
- {
- if(Users.getProfile(event.getPlayer()).getSkillLevel(SkillType.FISHING) >= 150 && event.getCaught() instanceof LivingEntity)
- {
- Fishing.shakeMob(event);
- }
- }
- }
- }
-
- public void onPlayerPickupItem(PlayerPickupItemEvent event)
- {
- if(Users.getProfile(event.getPlayer()).getBerserkMode())
- {
- event.setCancelled(true);
- }
- }
-
- public void onPlayerRespawn(PlayerRespawnEvent event)
- {
-
- Player player = event.getPlayer();
- PlayerProfile PP = Users.getProfile(player);
- if(LoadProperties.enableMySpawn && mcPermissions.getInstance().mySpawn(player))
- {
- if(player != null && PP != null)
- {
- PP.setRespawnATS(System.currentTimeMillis());
-
- Location mySpawn = PP.getMySpawn(player);
-
- 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
- Player player = event.getPlayer();
-
- if(LoadProperties.spoutEnabled)
- {
- if(SpoutStuff.playerHUDs.containsKey(player))
- SpoutStuff.playerHUDs.remove(player);
- if(mmoHelper.containers.containsKey(player))
- mmoHelper.containers.remove(player);
- }
-
- Users.removeUser(event.getPlayer());
- }
-
- public void onPlayerJoin(PlayerJoinEvent event)
- {
- Player player = event.getPlayer();
- if(mcPermissions.getInstance().motd(player) && LoadProperties.enableMotd)
- {
- player.sendMessage(mcLocale.getString("mcPlayerListener.MOTD", new Object[] {plugin.getDescription().getVersion(), LoadProperties.mcmmo}));
- player.sendMessage(mcLocale.getString("mcPlayerListener.WIKI"));
- }
- //THIS IS VERY BAD WAY TO DO THINGS, NEED BETTER WAY
- if(XprateCommand.xpevent)
- player.sendMessage(ChatColor.GOLD+"mcMMO is currently in an XP rate event! XP rate is "+LoadProperties.xpGainMultiplier+"x!");
- }
-
- public void onPlayerInteract(PlayerInteractEvent event)
- {
- Player player = event.getPlayer();
- PlayerProfile PP = Users.getProfile(player);
- Action action = event.getAction();
- Block block = event.getClickedBlock();
-
- /*
- * 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.isTools(player.getItemInHand()) || Repair.isArmor(player.getItemInHand())))
- {
- Repair.repairCheck(player, is, event.getClickedBlock());
- event.setCancelled(true);
- player.updateInventory();
- }
-
- if(LoadProperties.enableAbilities && 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 && mcPermissions.getInstance().herbalism(player) && (block.getType() == Material.COBBLESTONE || block.getType() == Material.DIRT || block.getType() == Material.SMOOTH_BRICK) && player.getItemInHand().getType() == Material.SEEDS)
- {
- boolean pass = false;
- if(Herbalism.hasSeeds(player))
- {
- Herbalism.removeSeeds(player);
-
- if(block.getType() == Material.DIRT || block.getType() == Material.COBBLESTONE || block.getType() == Material.SMOOTH_BRICK)
- {
- if(Math.random() * 1500 <= PP.getSkillLevel(SkillType.HERBALISM) && m.blockBreakSimulate(block, player))
- {
- switch(block.getType())
- {
- case COBBLESTONE:
- if(LoadProperties.enableCobbleToMossy)
- {
- block.setType(Material.MOSSY_COBBLESTONE);
- pass = true;
- }
- break;
- case DIRT:
- pass = true;
- block.setType(Material.GRASS);
- break;
- case SMOOTH_BRICK:
- pass = true;
- block.setData((byte)1);
- break;
- }
- if(pass == false)
- player.sendMessage(mcLocale.getString("mcPlayerListener.GreenThumbFail"));
- }
- }
- }
- return;
- }
- }
- if(LoadProperties.enableAbilities && action == Action.RIGHT_CLICK_AIR)
- {
- Skills.hoeReadinessCheck(player);
- Skills.abilityActivationCheck(player);
- }
-
- /*
- * ITEM CHECKS
- */
- if(action == Action.RIGHT_CLICK_AIR)
- Item.itemchecks(player, plugin);
- if(action == Action.RIGHT_CLICK_BLOCK)
- {
- if(m.abilityBlockCheck(event.getClickedBlock()))
- Item.itemchecks(player, plugin);
- }
-
- if(player.isSneaking() && mcPermissions.getInstance().taming(player) && (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK))
- {
- if(player.getItemInHand().getType() == Material.BONE && player.getItemInHand().getAmount() > 9)
- {
- for(Entity x : player.getNearbyEntities(40, 40, 40))
- {
- if(x instanceof Wolf)
- {
- player.sendMessage(mcLocale.getString("m.TamingSummonFailed"));
- return;
- }
- }
- World world = player.getWorld();
- world.spawnCreature(player.getLocation(), CreatureType.WOLF);
-
- ItemStack[] inventory = player.getInventory().getContents();
- for(ItemStack x : inventory){
- if(x != null && x.getAmount() > LoadProperties.bonesConsumedByCOTW-1 && x.getType() == Material.BONE){
- if(x.getAmount() >= LoadProperties.bonesConsumedByCOTW)
- {
- x.setAmount(x.getAmount() - LoadProperties.bonesConsumedByCOTW);
- player.getInventory().setContents(inventory);
- player.updateInventory();
- break;
- } else {
- x.setAmount(0);
- x.setTypeId(0);
- player.getInventory().setContents(inventory);
- player.updateInventory();
- break;
- }
- }
- }
- player.sendMessage(mcLocale.getString("m.TamingSummon"));
- }
- }
- }
-
- public void onPlayerChat(PlayerChatEvent event)
- {
- Player player = event.getPlayer();
- PlayerProfile PP = Users.getProfile(player);
- if(PP.getPartyChatMode())
- {
- event.setCancelled(true);
- String format = ChatColor.GREEN + "(" + ChatColor.WHITE + player.getDisplayName() + ChatColor.GREEN + ") "+event.getMessage();
- for(Player x : Bukkit.getServer().getOnlinePlayers())
- {
- if(Party.getInstance().inSameParty(player, x))
- x.sendMessage(format);
- }
- if(Bukkit.getServer() instanceof ColouredConsoleSender)
- {
- ColouredConsoleSender ccs = (ColouredConsoleSender) Bukkit.getServer();
- ccs.sendMessage(ChatColor.GREEN+"[P]"+format); //Colors, woot!
- }
- } else if (PP.getAdminChatMode()) {
- event.setCancelled(true);
- String format = ChatColor.AQUA + "{" + ChatColor.WHITE + player.getDisplayName() + ChatColor.AQUA + "} "+event.getMessage();
- for(Player x : Bukkit.getServer().getOnlinePlayers())
- {
- if(x.isOp() || mcPermissions.getInstance().adminChat(x))
- x.sendMessage(format);
- }
- if(Bukkit.getServer() instanceof ColouredConsoleSender)
- {
- ColouredConsoleSender ccs = (ColouredConsoleSender) Bukkit.getServer();
- ccs.sendMessage(ChatColor.AQUA+"[A]"+format); //Colors, woot!
- } else {
- log.log(Level.INFO, "[A]"+format);
- }
- }
- }
-
- public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
- String message = event.getMessage();
- if(!message.startsWith("/")) return;
- String command = message.substring(1).split(" ")[0];
- if(plugin.aliasMap.containsKey(command)) {
- event.setCancelled(true);
- event.getPlayer().chat(message.replaceFirst(command, plugin.aliasMap.get(command)));
- }
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.listeners;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.block.Block;
+import org.bukkit.craftbukkit.command.ColouredConsoleSender;
+import org.bukkit.craftbukkit.entity.CraftItem;
+import org.bukkit.entity.CreatureType;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Player;
+import org.bukkit.entity.Wolf;
+import org.bukkit.event.block.Action;
+import org.bukkit.event.player.PlayerChatEvent;
+import org.bukkit.event.player.PlayerCommandPreprocessEvent;
+import org.bukkit.event.player.PlayerFishEvent;
+import org.bukkit.event.player.PlayerFishEvent.State;
+import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerListener;
+import org.bukkit.event.player.PlayerLoginEvent;
+import org.bukkit.event.player.PlayerPickupItemEvent;
+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.commands.general.XprateCommand;
+import com.gmail.nossr50.config.LoadProperties;
+import com.gmail.nossr50.spout.SpoutStuff;
+import com.gmail.nossr50.spout.mmoHelper;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+import com.gmail.nossr50.skills.Fishing;
+import com.gmail.nossr50.skills.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 onPlayerFish(PlayerFishEvent event)
+ {
+ if(mcPermissions.getInstance().fishing(event.getPlayer()))
+ {
+ if(event.getState() == State.CAUGHT_FISH)
+ {
+ if(event.getCaught() instanceof CraftItem)
+ {
+ Fishing.processResults(event);
+ }
+ } else if (event.getState() == State.CAUGHT_ENTITY)
+ {
+ if(Users.getProfile(event.getPlayer()).getSkillLevel(SkillType.FISHING) >= 150 && event.getCaught() instanceof LivingEntity)
+ {
+ Fishing.shakeMob(event);
+ }
+ }
+ }
+ }
+
+ public void onPlayerPickupItem(PlayerPickupItemEvent event)
+ {
+ if(Users.getProfile(event.getPlayer()).getBerserkMode())
+ {
+ event.setCancelled(true);
+ }
+ }
+
+ public void onPlayerRespawn(PlayerRespawnEvent event)
+ {
+
+ Player player = event.getPlayer();
+ PlayerProfile PP = Users.getProfile(player);
+ if(LoadProperties.enableMySpawn && mcPermissions.getInstance().mySpawn(player))
+ {
+ if(player != null && PP != null)
+ {
+ PP.setRespawnATS(System.currentTimeMillis());
+
+ Location mySpawn = PP.getMySpawn(player);
+
+ 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
+ Player player = event.getPlayer();
+
+ if(LoadProperties.spoutEnabled)
+ {
+ if(SpoutStuff.playerHUDs.containsKey(player))
+ SpoutStuff.playerHUDs.remove(player);
+ if(mmoHelper.containers.containsKey(player))
+ mmoHelper.containers.remove(player);
+ }
+
+ Users.removeUser(event.getPlayer());
+ }
+
+ public void onPlayerJoin(PlayerJoinEvent event)
+ {
+ Player player = event.getPlayer();
+ if(mcPermissions.getInstance().motd(player) && LoadProperties.enableMotd)
+ {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.MOTD", new Object[] {plugin.getDescription().getVersion(), LoadProperties.mcmmo}));
+ player.sendMessage(mcLocale.getString("mcPlayerListener.WIKI"));
+ }
+ //THIS IS VERY BAD WAY TO DO THINGS, NEED BETTER WAY
+ if(XprateCommand.xpevent)
+ player.sendMessage(ChatColor.GOLD+"mcMMO is currently in an XP rate event! XP rate is "+LoadProperties.xpGainMultiplier+"x!");
+ }
+
+ public void onPlayerInteract(PlayerInteractEvent event)
+ {
+ Player player = event.getPlayer();
+ PlayerProfile PP = Users.getProfile(player);
+ Action action = event.getAction();
+ Block block = event.getClickedBlock();
+
+ /*
+ * 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.isTools(player.getItemInHand()) || Repair.isArmor(player.getItemInHand())))
+ {
+ Repair.repairCheck(player, is, event.getClickedBlock());
+ event.setCancelled(true);
+ player.updateInventory();
+ }
+
+ if(LoadProperties.enableAbilities && 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 && mcPermissions.getInstance().herbalism(player) && (block.getType() == Material.COBBLESTONE || block.getType() == Material.DIRT || block.getType() == Material.SMOOTH_BRICK) && player.getItemInHand().getType() == Material.SEEDS)
+ {
+ boolean pass = false;
+ if(Herbalism.hasSeeds(player))
+ {
+ Herbalism.removeSeeds(player);
+
+ if(block.getType() == Material.DIRT || block.getType() == Material.COBBLESTONE || block.getType() == Material.SMOOTH_BRICK)
+ {
+ if(Math.random() * 1500 <= PP.getSkillLevel(SkillType.HERBALISM) && m.blockBreakSimulate(block, player))
+ {
+ switch(block.getType())
+ {
+ case COBBLESTONE:
+ if(LoadProperties.enableCobbleToMossy)
+ {
+ block.setType(Material.MOSSY_COBBLESTONE);
+ pass = true;
+ }
+ break;
+ case DIRT:
+ pass = true;
+ block.setType(Material.GRASS);
+ break;
+ case SMOOTH_BRICK:
+ pass = true;
+ block.setData((byte)1);
+ break;
+ }
+ if(pass == false)
+ player.sendMessage(mcLocale.getString("mcPlayerListener.GreenThumbFail"));
+ }
+ }
+ }
+ return;
+ }
+ }
+ if(LoadProperties.enableAbilities && action == Action.RIGHT_CLICK_AIR)
+ {
+ Skills.hoeReadinessCheck(player);
+ Skills.abilityActivationCheck(player);
+ }
+
+ /*
+ * ITEM CHECKS
+ */
+ if(action == Action.RIGHT_CLICK_AIR)
+ Item.itemchecks(player, plugin);
+ if(action == Action.RIGHT_CLICK_BLOCK)
+ {
+ if(m.abilityBlockCheck(event.getClickedBlock()))
+ Item.itemchecks(player, plugin);
+ }
+
+ if(player.isSneaking() && mcPermissions.getInstance().taming(player) && (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK))
+ {
+ if(player.getItemInHand().getType() == Material.BONE && player.getItemInHand().getAmount() > 9)
+ {
+ for(Entity x : player.getNearbyEntities(40, 40, 40))
+ {
+ if(x instanceof Wolf)
+ {
+ player.sendMessage(mcLocale.getString("m.TamingSummonFailed"));
+ return;
+ }
+ }
+ World world = player.getWorld();
+ world.spawnCreature(player.getLocation(), CreatureType.WOLF);
+
+ ItemStack[] inventory = player.getInventory().getContents();
+ for(ItemStack x : inventory){
+ if(x != null && x.getAmount() > LoadProperties.bonesConsumedByCOTW-1 && x.getType() == Material.BONE){
+ if(x.getAmount() >= LoadProperties.bonesConsumedByCOTW)
+ {
+ x.setAmount(x.getAmount() - LoadProperties.bonesConsumedByCOTW);
+ player.getInventory().setContents(inventory);
+ player.updateInventory();
+ break;
+ } else {
+ x.setAmount(0);
+ x.setTypeId(0);
+ player.getInventory().setContents(inventory);
+ player.updateInventory();
+ break;
+ }
+ }
+ }
+ player.sendMessage(mcLocale.getString("m.TamingSummon"));
+ }
+ }
+ }
+
+ public void onPlayerChat(PlayerChatEvent event)
+ {
+ Player player = event.getPlayer();
+ PlayerProfile PP = Users.getProfile(player);
+ if(PP.getPartyChatMode())
+ {
+ event.setCancelled(true);
+ String format = ChatColor.GREEN + "(" + ChatColor.WHITE + player.getDisplayName() + ChatColor.GREEN + ") "+event.getMessage();
+ for(Player x : Bukkit.getServer().getOnlinePlayers())
+ {
+ if(Party.getInstance().inSameParty(player, x))
+ x.sendMessage(format);
+ }
+ if(Bukkit.getServer() instanceof ColouredConsoleSender)
+ {
+ ColouredConsoleSender ccs = (ColouredConsoleSender) Bukkit.getServer();
+ ccs.sendMessage(ChatColor.GREEN+"[P]"+format); //Colors, woot!
+ }
+ } else if (PP.getAdminChatMode()) {
+ event.setCancelled(true);
+ String format = ChatColor.AQUA + "{" + ChatColor.WHITE + player.getDisplayName() + ChatColor.AQUA + "} "+event.getMessage();
+ for(Player x : Bukkit.getServer().getOnlinePlayers())
+ {
+ if(x.isOp() || mcPermissions.getInstance().adminChat(x))
+ x.sendMessage(format);
+ }
+ if(Bukkit.getServer() instanceof ColouredConsoleSender)
+ {
+ ColouredConsoleSender ccs = (ColouredConsoleSender) Bukkit.getServer();
+ ccs.sendMessage(ChatColor.AQUA+"[A]"+format); //Colors, woot!
+ } else {
+ log.log(Level.INFO, "[A]"+format);
+ }
+ }
+ }
+
+ public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
+ String message = event.getMessage();
+ if(!message.startsWith("/")) return;
+ String command = message.substring(1).split(" ")[0];
+ if(plugin.aliasMap.containsKey(command)) {
+ event.setCancelled(true);
+ event.getPlayer().chat(message.replaceFirst(command, plugin.aliasMap.get(command)));
+ }
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/listeners/mcSpoutInputListener.java b/src/main/java/com/gmail/nossr50/listeners/mcSpoutInputListener.java
similarity index 97%
rename from src/com/gmail/nossr50/listeners/mcSpoutInputListener.java
rename to src/main/java/com/gmail/nossr50/listeners/mcSpoutInputListener.java
index d7f8adf18..0d1e7c9c7 100644
--- a/src/com/gmail/nossr50/listeners/mcSpoutInputListener.java
+++ b/src/main/java/com/gmail/nossr50/listeners/mcSpoutInputListener.java
@@ -1,61 +1,61 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.listeners;
-
-import org.getspout.spoutapi.event.input.InputListener;
-import org.getspout.spoutapi.event.input.KeyPressedEvent;
-import org.getspout.spoutapi.gui.ScreenType;
-import org.getspout.spoutapi.player.SpoutPlayer;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.datatypes.popups.PopupMMO;
-import com.gmail.nossr50.spout.SpoutStuff;
-
-public class mcSpoutInputListener extends InputListener
-{
- mcMMO plugin = null;
-
- public mcSpoutInputListener(mcMMO pluginx)
- {
- plugin = pluginx;
- }
-
- public void onKeyPressedEvent(KeyPressedEvent event)
- {
- if(!event.getPlayer().isSpoutCraftEnabled() || event.getPlayer().getMainScreen().getActivePopup() != null)
- return;
- if(event.getScreenType() != ScreenType.GAME_SCREEN)
- return;
-
- SpoutPlayer sPlayer = event.getPlayer();
-
- if(event.getKey() == SpoutStuff.keypress)
- {
- if(!SpoutStuff.playerScreens.containsKey(sPlayer))
- {
- PopupMMO mmoPop = new PopupMMO(sPlayer, Users.getProfile(sPlayer), plugin);
- SpoutStuff.playerScreens.put(sPlayer, mmoPop);
- sPlayer.getMainScreen().attachPopupScreen(SpoutStuff.playerScreens.get(sPlayer));
- sPlayer.getMainScreen().setDirty(true);
- } else {
- sPlayer.getMainScreen().attachPopupScreen(SpoutStuff.playerScreens.get(sPlayer));
- sPlayer.getMainScreen().setDirty(true);
- }
- }
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.listeners;
+
+import org.getspout.spoutapi.event.input.InputListener;
+import org.getspout.spoutapi.event.input.KeyPressedEvent;
+import org.getspout.spoutapi.gui.ScreenType;
+import org.getspout.spoutapi.player.SpoutPlayer;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.datatypes.popups.PopupMMO;
+import com.gmail.nossr50.spout.SpoutStuff;
+
+public class mcSpoutInputListener extends InputListener
+{
+ mcMMO plugin = null;
+
+ public mcSpoutInputListener(mcMMO pluginx)
+ {
+ plugin = pluginx;
+ }
+
+ public void onKeyPressedEvent(KeyPressedEvent event)
+ {
+ if(!event.getPlayer().isSpoutCraftEnabled() || event.getPlayer().getMainScreen().getActivePopup() != null)
+ return;
+ if(event.getScreenType() != ScreenType.GAME_SCREEN)
+ return;
+
+ SpoutPlayer sPlayer = event.getPlayer();
+
+ if(event.getKey() == SpoutStuff.keypress)
+ {
+ if(!SpoutStuff.playerScreens.containsKey(sPlayer))
+ {
+ PopupMMO mmoPop = new PopupMMO(sPlayer, Users.getProfile(sPlayer), plugin);
+ SpoutStuff.playerScreens.put(sPlayer, mmoPop);
+ sPlayer.getMainScreen().attachPopupScreen(SpoutStuff.playerScreens.get(sPlayer));
+ sPlayer.getMainScreen().setDirty(true);
+ } else {
+ sPlayer.getMainScreen().attachPopupScreen(SpoutStuff.playerScreens.get(sPlayer));
+ sPlayer.getMainScreen().setDirty(true);
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/listeners/mcSpoutListener.java b/src/main/java/com/gmail/nossr50/listeners/mcSpoutListener.java
similarity index 96%
rename from src/com/gmail/nossr50/listeners/mcSpoutListener.java
rename to src/main/java/com/gmail/nossr50/listeners/mcSpoutListener.java
index 0019ab9f8..fc79ff7a2 100644
--- a/src/com/gmail/nossr50/listeners/mcSpoutListener.java
+++ b/src/main/java/com/gmail/nossr50/listeners/mcSpoutListener.java
@@ -1,49 +1,49 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.listeners;
-
-import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent;
-import org.getspout.spoutapi.event.spout.SpoutListener;
-import org.getspout.spoutapi.player.SpoutPlayer;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.datatypes.HUDmmo;
-import com.gmail.nossr50.spout.SpoutStuff;
-
-public class mcSpoutListener extends SpoutListener
-{
- mcMMO plugin = null;
-
- public mcSpoutListener(mcMMO pluginx)
- {
- plugin = pluginx;
- }
-
- public void onSpoutCraftEnable(SpoutCraftEnableEvent event)
- {
- SpoutPlayer sPlayer = event.getPlayer();
- if(sPlayer.isSpoutCraftEnabled())
- {
- //Setup Party HUD stuff
- SpoutStuff.playerHUDs.put(sPlayer, new HUDmmo(sPlayer));
-
- //Party.update(sPlayer);
- Users.getProfile(sPlayer).toggleSpoutEnabled();
- }
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.listeners;
+
+import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent;
+import org.getspout.spoutapi.event.spout.SpoutListener;
+import org.getspout.spoutapi.player.SpoutPlayer;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.datatypes.HUDmmo;
+import com.gmail.nossr50.spout.SpoutStuff;
+
+public class mcSpoutListener extends SpoutListener
+{
+ mcMMO plugin = null;
+
+ public mcSpoutListener(mcMMO pluginx)
+ {
+ plugin = pluginx;
+ }
+
+ public void onSpoutCraftEnable(SpoutCraftEnableEvent event)
+ {
+ SpoutPlayer sPlayer = event.getPlayer();
+ if(sPlayer.isSpoutCraftEnabled())
+ {
+ //Setup Party HUD stuff
+ SpoutStuff.playerHUDs.put(sPlayer, new HUDmmo(sPlayer));
+
+ //Party.update(sPlayer);
+ Users.getProfile(sPlayer).toggleSpoutEnabled();
+ }
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/listeners/mcSpoutScreenListener.java b/src/main/java/com/gmail/nossr50/listeners/mcSpoutScreenListener.java
similarity index 96%
rename from src/com/gmail/nossr50/listeners/mcSpoutScreenListener.java
rename to src/main/java/com/gmail/nossr50/listeners/mcSpoutScreenListener.java
index d0eca95eb..86df87ccd 100644
--- a/src/com/gmail/nossr50/listeners/mcSpoutScreenListener.java
+++ b/src/main/java/com/gmail/nossr50/listeners/mcSpoutScreenListener.java
@@ -1,93 +1,93 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.listeners;
-
-import org.getspout.spoutapi.event.screen.ButtonClickEvent;
-import org.getspout.spoutapi.event.screen.ScreenCloseEvent;
-import org.getspout.spoutapi.event.screen.ScreenListener;
-import org.getspout.spoutapi.player.SpoutPlayer;
-
-import com.gmail.nossr50.Users;
-import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.datatypes.HUDType;
-import com.gmail.nossr50.datatypes.HUDmmo;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.buttons.ButtonEscape;
-import com.gmail.nossr50.datatypes.buttons.ButtonHUDStyle;
-import com.gmail.nossr50.datatypes.buttons.ButtonPartyToggle;
-import com.gmail.nossr50.datatypes.popups.PopupMMO;
-import com.gmail.nossr50.spout.SpoutStuff;
-
-public class mcSpoutScreenListener extends ScreenListener
-{
- mcMMO plugin = null;
- public mcSpoutScreenListener(mcMMO pluginx)
- {
- plugin = pluginx;
- }
- public void onButtonClick(ButtonClickEvent event)
- {
- SpoutPlayer sPlayer = event.getPlayer();
- PlayerProfile PP = Users.getProfile(sPlayer);
-
- if(event.getButton() instanceof ButtonHUDStyle)
- {
- if(SpoutStuff.playerHUDs.containsKey(sPlayer))
- {
- SpoutStuff.playerHUDs.get(sPlayer).resetHUD();
- SpoutStuff.playerHUDs.remove(sPlayer);
-
- switch(PP.getHUDType())
- {
- case RETRO:
- PP.setHUDType(HUDType.STANDARD);
- break;
- case STANDARD:
- PP.setHUDType(HUDType.SMALL);
- break;
- case SMALL:
- PP.setHUDType(HUDType.DISABLED);
- break;
- case DISABLED:
- PP.setHUDType(HUDType.RETRO);
- }
-
- SpoutStuff.playerHUDs.put(sPlayer, new HUDmmo(sPlayer));
-
- SpoutStuff.playerScreens.get(sPlayer).updateButtons(PP);
- }
- } else if (event.getButton() instanceof ButtonEscape)
- {
- sPlayer.getMainScreen().closePopup();
- } else if (event.getButton() instanceof ButtonPartyToggle)
- {
- PP.togglePartyHUD();
- ButtonPartyToggle bpt = (ButtonPartyToggle)event.getButton();
- bpt.updateText(PP);
- SpoutStuff.playerHUDs.get(sPlayer).resetHUD();
- SpoutStuff.playerHUDs.get(sPlayer).initializeHUD(sPlayer);
- }
- }
-
- public void onScreenClose(ScreenCloseEvent event)
- {
- if(event.getScreen() instanceof PopupMMO)
- {
- SpoutStuff.playerScreens.remove(event.getPlayer());
- }
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.listeners;
+
+import org.getspout.spoutapi.event.screen.ButtonClickEvent;
+import org.getspout.spoutapi.event.screen.ScreenCloseEvent;
+import org.getspout.spoutapi.event.screen.ScreenListener;
+import org.getspout.spoutapi.player.SpoutPlayer;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.datatypes.HUDType;
+import com.gmail.nossr50.datatypes.HUDmmo;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.buttons.ButtonEscape;
+import com.gmail.nossr50.datatypes.buttons.ButtonHUDStyle;
+import com.gmail.nossr50.datatypes.buttons.ButtonPartyToggle;
+import com.gmail.nossr50.datatypes.popups.PopupMMO;
+import com.gmail.nossr50.spout.SpoutStuff;
+
+public class mcSpoutScreenListener extends ScreenListener
+{
+ mcMMO plugin = null;
+ public mcSpoutScreenListener(mcMMO pluginx)
+ {
+ plugin = pluginx;
+ }
+ public void onButtonClick(ButtonClickEvent event)
+ {
+ SpoutPlayer sPlayer = event.getPlayer();
+ PlayerProfile PP = Users.getProfile(sPlayer);
+
+ if(event.getButton() instanceof ButtonHUDStyle)
+ {
+ if(SpoutStuff.playerHUDs.containsKey(sPlayer))
+ {
+ SpoutStuff.playerHUDs.get(sPlayer).resetHUD();
+ SpoutStuff.playerHUDs.remove(sPlayer);
+
+ switch(PP.getHUDType())
+ {
+ case RETRO:
+ PP.setHUDType(HUDType.STANDARD);
+ break;
+ case STANDARD:
+ PP.setHUDType(HUDType.SMALL);
+ break;
+ case SMALL:
+ PP.setHUDType(HUDType.DISABLED);
+ break;
+ case DISABLED:
+ PP.setHUDType(HUDType.RETRO);
+ }
+
+ SpoutStuff.playerHUDs.put(sPlayer, new HUDmmo(sPlayer));
+
+ SpoutStuff.playerScreens.get(sPlayer).updateButtons(PP);
+ }
+ } else if (event.getButton() instanceof ButtonEscape)
+ {
+ sPlayer.getMainScreen().closePopup();
+ } else if (event.getButton() instanceof ButtonPartyToggle)
+ {
+ PP.togglePartyHUD();
+ ButtonPartyToggle bpt = (ButtonPartyToggle)event.getButton();
+ bpt.updateText(PP);
+ SpoutStuff.playerHUDs.get(sPlayer).resetHUD();
+ SpoutStuff.playerHUDs.get(sPlayer).initializeHUD(sPlayer);
+ }
+ }
+
+ public void onScreenClose(ScreenCloseEvent event)
+ {
+ if(event.getScreen() instanceof PopupMMO)
+ {
+ SpoutStuff.playerScreens.remove(event.getPlayer());
+ }
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/locale_de.properties b/src/main/java/com/gmail/nossr50/locale/locale_de.properties
similarity index 100%
rename from src/com/gmail/nossr50/locale/locale_de.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_de.properties
diff --git a/src/com/gmail/nossr50/locale/locale_en_us.properties b/src/main/java/com/gmail/nossr50/locale/locale_en_us.properties
similarity index 98%
rename from src/com/gmail/nossr50/locale/locale_en_us.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_en_us.properties
index 5fdb5bed2..05bb59d70 100644
--- a/src/com/gmail/nossr50/locale/locale_en_us.properties
+++ b/src/main/java/com/gmail/nossr50/locale/locale_en_us.properties
@@ -1,390 +1,390 @@
-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
-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)
-mcMMO.Description=[[DARK_AQUA]]Q: WHAT IS IT?,[[GOLD]]mcMMO is an [[RED]]OPEN SOURCE[[GOLD]] RPG mod for Bukkit by [[BLUE]]nossr50,[[GOLD]]There are many skills added by mcMMO to Minecraft.,[[GOLD]]You can gain experience in many different ways,[[GOLD]]You will want to type [[GREEN]]/SKILLNAME[[GOLD]] to find out more about a skill.,[[DARK_AQUA]]Q: WHAT DOES IT DO?,[[GOLD]]As an example... in [[DARK_AQUA]]Mining[[GOLD]] you will receive benefits like,[[RED]]Double Drops[[GOLD]] or the ability [[RED]]Super Breaker[[GOLD]] which when,[[GOLD]]activated by right-click allows fast Mining during its duration,[[GOLD]]which is related to your skill level. Leveling [[BLUE]]Mining,[[GOLD]]is as simple as mining precious materials!,[[DARK_AQUA]]Q: WHAT DOES THIS MEAN?,[[GOLD]]Almost all of the skills in [[GREEN]]mcMMO[[GOLD]] add cool new things!.,[[GOLD]]You can also type [[GREEN]]/{0}[[GOLD]] to find out commands,[[GOLD]]The goal of mcMMO is to provide a quality RPG experience.,[[DARK_AQUA]]Q: WHERE DO I SUGGEST NEW STUFF!?,[[GOLD]]On the mcMMO thread in the bukkit forums!,[[DARK_AQUA]]Q: HOW DO I DO THIS AND THAT?,[[RED]]PLEASE [[GOLD]]checkout the wiki! [[DARK_AQUA]]mcmmo.wikia.com
-Party.Locked=[[RED]]Party is locked, only party leader may invite.
-Party.IsntLocked=[[GRAY]]Party is not locked
-Party.Unlocked=[[GRAY]]Party is unlocked
-Party.Help1=[[RED]]Proper usage is [[YELLOW]]/{0} [[WHITE]][[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
-Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]
-Party.Help3=[[RED]]Consult /{0} ? for more information
-Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]to join a party or [[WHITE]]'q' [[YELLOW]]to quit
-Party.Help5=[[RED]]To lock your party use [[YELLOW]]/{0} [[WHITE]]lock
-Party.Help6=[[RED]]To unlock your party use [[YELLOW]]/{0} [[WHITE]]unlock
-Party.Help7=[[RED]]To password protect your party use [[YELLOW]]/{0} [[WHITE]]password
-Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick
-Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner
-Party.NotOwner=[[DARK_RED]]You are not the party owner
-Party.InvalidName=[[DARK_RED]]That is not a valid party name
-Party.PasswordSet=[[GREEN]]Party password set to {0}
-Party.CouldNotKick=[[DARK_RED]]Could not kick player {0}
-Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
-Party.CouldNotSetOwner=[[DARK_RED]]Could not set owner to {0}
-Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
-Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
-Commands.xprate.proper3=[[RED]]Enter true or false for the second value
-Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
-Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
-Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
-Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
-Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
-Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
-m.SkillAlchemy=ALCHEMY
-m.SkillEnchanting=ENCHANTING
-m.SkillFishing=FISHING
-mcPlayerListener.AlchemySkill=Alchemy:
-mcPlayerListener.EnchantingSkill=Enchanting:
-mcPlayerListener.FishingSkill=Fishing:
-Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
-Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
-Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
-Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
-Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
-Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
-Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
-m.EffectsRepair5_0=Arcane Forging
-m.EffectsRepair5_1=Repair magic items
-m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
-m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
-m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
-m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
-m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
-Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
-Fishing.ItemFound=[[GRAY]]Treasure found!
-m.SkillFishing=FISHING
-m.XPGainFishing=Fishing (Go figure!)
-m.EffectsFishing1_0=Treasure Hunter (Passive)
-m.EffectsFishing1_1=Fish up misc objects
-m.EffectsFishing2_0=Magic Hunter
-m.EffectsFishing2_1=Find Enchanted Items
-m.EffectsFishing3_0=Shake (vs. Entities)
-m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
-m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
-m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
-m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
-m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
-m.TamingSummon=[[GREEN]]Summoning complete
-m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
-m.EffectsTaming7_0=Call of the Wild
-m.EffectsTaming7_1=Summon a wolf to your side
+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
+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)
+mcMMO.Description=[[DARK_AQUA]]Q: WHAT IS IT?,[[GOLD]]mcMMO is an [[RED]]OPEN SOURCE[[GOLD]] RPG mod for Bukkit by [[BLUE]]nossr50,[[GOLD]]There are many skills added by mcMMO to Minecraft.,[[GOLD]]You can gain experience in many different ways,[[GOLD]]You will want to type [[GREEN]]/SKILLNAME[[GOLD]] to find out more about a skill.,[[DARK_AQUA]]Q: WHAT DOES IT DO?,[[GOLD]]As an example... in [[DARK_AQUA]]Mining[[GOLD]] you will receive benefits like,[[RED]]Double Drops[[GOLD]] or the ability [[RED]]Super Breaker[[GOLD]] which when,[[GOLD]]activated by right-click allows fast Mining during its duration,[[GOLD]]which is related to your skill level. Leveling [[BLUE]]Mining,[[GOLD]]is as simple as mining precious materials!,[[DARK_AQUA]]Q: WHAT DOES THIS MEAN?,[[GOLD]]Almost all of the skills in [[GREEN]]mcMMO[[GOLD]] add cool new things!.,[[GOLD]]You can also type [[GREEN]]/{0}[[GOLD]] to find out commands,[[GOLD]]The goal of mcMMO is to provide a quality RPG experience.,[[DARK_AQUA]]Q: WHERE DO I SUGGEST NEW STUFF!?,[[GOLD]]On the mcMMO thread in the bukkit forums!,[[DARK_AQUA]]Q: HOW DO I DO THIS AND THAT?,[[RED]]PLEASE [[GOLD]]checkout the wiki! [[DARK_AQUA]]mcmmo.wikia.com
+Party.Locked=[[RED]]Party is locked, only party leader may invite.
+Party.IsntLocked=[[GRAY]]Party is not locked
+Party.Unlocked=[[GRAY]]Party is unlocked
+Party.Help1=[[RED]]Proper usage is [[YELLOW]]/{0} [[WHITE]][[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
+Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]
+Party.Help3=[[RED]]Consult /{0} ? for more information
+Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]to join a party or [[WHITE]]'q' [[YELLOW]]to quit
+Party.Help5=[[RED]]To lock your party use [[YELLOW]]/{0} [[WHITE]]lock
+Party.Help6=[[RED]]To unlock your party use [[YELLOW]]/{0} [[WHITE]]unlock
+Party.Help7=[[RED]]To password protect your party use [[YELLOW]]/{0} [[WHITE]]password
+Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick
+Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner
+Party.NotOwner=[[DARK_RED]]You are not the party owner
+Party.InvalidName=[[DARK_RED]]That is not a valid party name
+Party.PasswordSet=[[GREEN]]Party password set to {0}
+Party.CouldNotKick=[[DARK_RED]]Could not kick player {0}
+Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
+Party.CouldNotSetOwner=[[DARK_RED]]Could not set owner to {0}
+Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
+Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
+Commands.xprate.proper3=[[RED]]Enter true or false for the second value
+Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
+Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
+Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
+Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
+Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
+Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
+m.SkillAlchemy=ALCHEMY
+m.SkillEnchanting=ENCHANTING
+m.SkillFishing=FISHING
+mcPlayerListener.AlchemySkill=Alchemy:
+mcPlayerListener.EnchantingSkill=Enchanting:
+mcPlayerListener.FishingSkill=Fishing:
+Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
+Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
+Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
+Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
+Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
+Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
+Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
+m.EffectsRepair5_0=Arcane Forging
+m.EffectsRepair5_1=Repair magic items
+m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
+m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
+m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
+m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
+m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
+Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
+Fishing.ItemFound=[[GRAY]]Treasure found!
+m.SkillFishing=FISHING
+m.XPGainFishing=Fishing (Go figure!)
+m.EffectsFishing1_0=Treasure Hunter (Passive)
+m.EffectsFishing1_1=Fish up misc objects
+m.EffectsFishing2_0=Magic Hunter
+m.EffectsFishing2_1=Find Enchanted Items
+m.EffectsFishing3_0=Shake (vs. Entities)
+m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
+m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
+m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
+m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
+m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
+m.TamingSummon=[[GREEN]]Summoning complete
+m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
+m.EffectsTaming7_0=Call of the Wild
+m.EffectsTaming7_1=Summon a wolf to your side
m.EffectsTaming7_2=[[GRAY]]COTW HOW-TO: Crouch and right click with {0} Bones in hand
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/locale_es_es.properties b/src/main/java/com/gmail/nossr50/locale/locale_es_es.properties
similarity index 98%
rename from src/com/gmail/nossr50/locale/locale_es_es.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_es_es.properties
index 077fa87bc..f83ec12b4 100644
--- a/src/com/gmail/nossr50/locale/locale_es_es.properties
+++ b/src/main/java/com/gmail/nossr50/locale/locale_es_es.properties
@@ -1,390 +1,390 @@
-Combat.WolfExamine=[[GREEN]]**Has examinado a un lobo usando tu conocimiento de fieras**
-Combat.WolfShowMaster=[[DARK_GREEN]]El maestro de las fieras \: {0}
-Combat.Ignition=[[RED]]**IGNICION**
-Combat.BurningArrowHit=[[DARK_RED]]Has sido golpeado por una flecha ardiendo\!
-Combat.TouchedFuzzy=[[DARK_RED]]Estas confuso. Te sientes mareado...
-Combat.TargetDazed=El objetivo fue [[DARK_RED]]aturdido
-Combat.WolfNoMaster=[[GRAY]]Esta bestia no tiene maestro...
-Combat.WolfHealth=[[GREEN]]Esta bestia tiene {0} de salud
-Combat.StruckByGore=[[RED]]**GOLPEADO POR MORDISCO**
-Combat.Gore=[[GREEN]]**MORDISCO**
-Combat.ArrowDeflect=[[WHITE]]**FLECHA DESVIADA**
-Item.ChimaeraWingFail=**FLECHA QUIMERA FALLADA\!**
-Item.ChimaeraWingPass=**FLECHA QUIMERA**
-Item.InjuredWait=Has sido herido recientemente y tienes que esperar para usar esto. [[YELLOW]]({0}s)
-Item.NeedFeathers=[[GRAY]]Necesitas mas plumas.
-m.mccPartyCommands=[[GREEN]]--COMANDOS DE FIESTA--
-m.mccParty=[party name] [[RED]]- Crea/Entra a una fiesta especifica
-m.mccPartyQ=[[RED]]- Abandona tu fiesta actual
-m.mccPartyToggle=[[RED]] - Activa/Desactiva el chat de fiesta
-m.mccPartyInvite=[player name] [[RED]]- Envia una invitacion para la fiesta
-m.mccPartyAccept=[[RED]]- Acepta una invitacion para la fiesta
-m.mccPartyTeleport=[party member name] [[RED]]- Teletransportate a un miembro de la fiesta
-m.mccOtherCommands=[[GREEN]]--OTROS COMANDOS--
-m.mccStats=- Mira tus estadisticas de McMMO
-m.mccLeaderboards=- Ranking de lideres
-m.mccMySpawn=- Teletransportate a tu lugar de nacimiento
-m.mccClearMySpawn=- Limpia tu lugar de nacimiento
-m.mccToggleAbility=- Activa/Desactiva la activacion de la habilidad con el click derecho
-m.mccAdminToggle=- Activa/Desactiva el chat de admins
-m.mccWhois=[playername] [[RED]]- Mira informacion detallada del jugador
-m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Modifica el objetivo
-m.mccMcGod=- Modo dios
-m.mccSkillInfo=[skillname] [[RED]]- Mira informacion detallada sobre una habilidad
-m.mccModDescription=[[RED]]- Lee la descripcion del MOD
-m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
-m.XPGain=[[DARK_GRAY]]GANANCIA DE EXP: [[WHITE]]{0}
-m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
-m.AbilityLockTemplate=[[GRAY]]{0}
-m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
-m.Effects=EFECTOS
-m.YourStats=TUS ESTADISTICAS
-m.SkillTaming=DOMADURA
-m.XPGainTaming=Lobos siendo lastimados
-m.EffectsTaming1_0=Leyenda de bestias
-m.EffectsTaming1_1=Golpear con huesos examina a los lobos
-m.EffectsTaming2_0=Sangre
-m.EffectsTaming2_1=Golpe critico que hace sangrar
-m.EffectsTaming3_0=Garras afiladas
-m.EffectsTaming3_1=Bonus de daño
-m.EffectsTaming4_0=Consciente del medio ambiente
-m.EffectsTaming4_1=Inmunidad a heridas por caidas, Cactus/Lava fobia
-m.EffectsTaming5_0=Piel gruesa
-m.EffectsTaming5_1=Reduccion de daño, Resistencia al fuego
-m.EffectsTaming6_0=A prueba de golpes
-m.EffectsTaming6_1=Reduccion del daño con explosivos
-m.AbilLockTaming1=BLOQUEADO HASTA TENER HABILIDAD +100 (CONSCIENTE DEL MEDIO AMBIENTE)
-m.AbilLockTaming2=BLOQUEADO HASTA TENER HABILIDAD +250 (PIEL GRUESA)
-m.AbilLockTaming3=BLOQUEADO HASTA TENER HABILIDAD +500 (A PRUEBA DE GOLPES)
-m.AbilLockTaming4=BLOQUEADO HASTA TENER HABILIDAD +750 (GARRAS AFILADAS)
-m.AbilBonusTaming1_0=Consciente del medio ambiente
-m.AbilBonusTaming1_1=Los lobos evitan el peligro
-m.AbilBonusTaming2_0=Piel gruesa
-m.AbilBonusTaming2_1=Daño reducido a la mitad, Resistencia al fuego
-m.AbilBonusTaming3_0=A prueba de golpes
-m.AbilBonusTaming3_1=Los explosivos hacen 1/6 del daño normal
-m.AbilBonusTaming4_0=Garras afiladas
-m.AbilBonusTaming4_1=+2 de Daño
-m.TamingGoreChance=[[RED]]Oportunidad de sangre: [[YELLOW]]{0}%
-m.SkillWoodCutting=TALA DE ARBOLES
-m.XPGainWoodCutting=Cortando arboles
-m.EffectsWoodCutting1_0=Cortador de arboles (HABILIDAD)
-m.EffectsWoodCutting1_1=Haz que los arboles exploten
-m.EffectsWoodCutting2_0=Soplador de hojas
-m.EffectsWoodCutting2_1=Aparta las hojas
-m.EffectsWoodCutting3_0=Doble de gotas
-m.EffectsWoodCutting3_1=Doble del botin habitual
-m.AbilLockWoodCutting1=BLOQUEADO HASTA TENER HABILIDAD +100 (SOPLADOR DE HOJAS)
-m.AbilBonusWoodCutting1_0=Soplador de hojas
-m.AbilBonusWoodCutting1_1=Aparta las ojas
-m.WoodCuttingDoubleDropChance=[[RED]]Posibilidad de Doble de gotas: [[YELLOW]]{0}%
-m.WoodCuttingTreeFellerLength=[[RED]]Duracion de tala de arboles: [[YELLOW]]{0}s
-m.SkillArchery=Tiro con Arco
-m.XPGainArchery=Ataque a monstruos
-m.EffectsArchery1_0=Ignicion
-m.EffectsArchery1_1=25% de posibilidades de que un enemigo arda en llamas
-m.EffectsArchery2_0=Aturdir (Jugadores)
-m.EffectsArchery2_1=Desorienta a los enemigos
-m.EffectsArchery3_0=+ Daño
-m.EffectsArchery3_1=Modifica el daño
-m.EffectsArchery4_0=Recuperación de flecha
-m.EffectsArchery4_1=Posibilidad de obtener flechas de cadaveres
-m.ArcheryDazeChance=[[RED]]Posibilidad de aturdir: [[YELLOW]]{0}%
-m.ArcheryRetrieveChance=[[RED]]Posibilidad de obtener flechas: [[YELLOW]]{0}%
-m.ArcheryIgnitionLength=[[RED]]Duracion de la ignicion: [[YELLOW]]{0} seconds
-m.ArcheryDamagePlus=[[RED]]+ Daño (Rank{0}): [[YELLOW]] {0} de bonus de daño
-m.SkillAxes=HACHAS
-m.XPGainAxes=Ataque a monstruos
-m.EffectsAxes1_0=Cortador de cabecas (HABILIDAD)
-m.EffectsAxes1_1=Causa daños en arena
-m.EffectsAxes2_0=Golpes criticos
-m.EffectsAxes2_1=Doble de daño
-m.EffectsAxes3_0=Maestria de hacha
-m.EffectsAxes3_1=Modifica el daño
-m.AbilLockAxes1=BLOQUEADO HASTA TENER HABILIDAD +500 (MAESTRIA DE HACHA)
-m.AbilBonusAxes1_0=Maestria de hacha
-m.AbilBonusAxes1_1=4 de daño de bonus
-m.AxesCritChance=[[RED]]Posibilad de golpe critico: [[YELLOW]]{0}%
-m.AxesSkullLength=[[RED]]Longitud de Cortador de cabezas: [[YELLOW]]{0}s
-m.SkillSwords=ESPADAS
-m.XPGainSwords=Ataque a monstruos
-m.EffectsSwords1_0=Contraataque
-m.EffectsSwords1_1=Desviar el 50% del daño obtenido
-m.EffectsSwords2_0=Golpes dentados (HABILIDAD)
-m.EffectsSwords2_1=25% de daño en Arena, y efecto de hemorragia
-m.EffectsSwords3_0=Ataque cortante con efecto de hemorragia
-m.EffectsSwords3_1=5 sangramientos
-m.EffectsSwords4_0=Desviar
-m.EffectsSwords4_1=Anula el daño
-m.EffectsSwords5_0=Hemorragia
-m.EffectsSwords5_1=Causa sangramientos repetidos a lo largo del tiempo
-m.SwordsCounterAttChance=[[RED]]Posibilidad de contraataque: [[YELLOW]]{0}%
-m.SwordsBleedLength=[[RED]]Duracion del sangrado: [[YELLOW]]{0} ticks
-m.SwordsBleedChance=[[RED]]Posibilidad de hemorragia: [[YELLOW]]{0} %
-m.SwordsParryChance=[[RED]]Posibilidad de desviacion: [[YELLOW]]{0} %
-m.SwordsSSLength=[[RED]]Duracion de los golpes dentados: [[YELLOW]]{0}s
-m.SwordsTickNote=[[GRAY]]NOTA: [[YELLOW]]1 Tick ocurre cada 2 segundos
-m.SkillAcrobatics=ACROBACIAS
-m.XPGainAcrobatics=Caida
-m.EffectsAcrobatics1_0=Rodar
-m.EffectsAcrobatics1_1=Reduce o evita daño
-m.EffectsAcrobatics2_0=Rodar con estilo
-m.EffectsAcrobatics2_1=Dos veces mas efectivos que Rodar
-m.EffectsAcrobatics3_0=Esquivar
-m.EffectsAcrobatics3_1=Reduce el daño a la mitad
-m.AcrobaticsRollChance=[[RED]]Posibilidad de Rodar: [[YELLOW]]{0}%
-m.AcrobaticsGracefulRollChance=[[RED]]Posibilidad de Rodar con estilo: [[YELLOW]]{0}%
-m.AcrobaticsDodgeChance=[[RED]]Posibilidad de Esquivar: [[YELLOW]]{0}%
-m.SkillMining=MINAR
-m.XPGainMining=Minar Piedra & Oro
-m.EffectsMining1_0=Super rompedor (HABILIDAD)
-m.EffectsMining1_1=+ Velocidad, Posibilidad de obtener triple beneficio
-m.EffectsMining2_0=Beneficio doble
-m.EffectsMining2_1=Dobla el botin normal
-m.MiningDoubleDropChance=[[RED]]Posibilidad de Beneficio doble: [[YELLOW]]{0}%
-m.MiningSuperBreakerLength=[[RED]]Duracion de Super Rompedor: [[YELLOW]]{0}s
-m.SkillRepair=REPARAR
-m.XPGainRepair=Reparacion
-m.EffectsRepair1_0=Reparar
-m.EffectsRepair1_1=Reparar Herramientas y armadura de Hierro
-m.EffectsRepair2_0=Maestro de reparacion
-m.EffectsRepair2_1=Crecimiento de la cantidad de reparacion
-m.EffectsRepair3_0=Super Reparacion
-m.EffectsRepair3_1=Doble efectividad
-m.EffectsRepair4_0=Reparar diamantes (+{0} HABILIDAD)
-m.EffectsRepair4_1=Reparar Herramientas y armadura de Diamantes
-m.RepairRepairMastery=[[RED]]Maestro de reparacion: [[YELLOW]]{0}% extra de duracion obtenido
-m.RepairSuperRepairChance=[[RED]]Posibilidad de Super Reparacion: [[YELLOW]]{0}%
-m.SkillUnarmed=DESARMADO
-m.XPGainUnarmed=Ataque a monstruos
-m.EffectsUnarmed1_0=Enloquecer (HABILIDAD)
-m.EffectsUnarmed1_1=+50% daño, Romper materiales fragiles
-m.EffectsUnarmed2_0=Desarmar (Jugadores)
-m.EffectsUnarmed2_1=Caida del objeto de mano del enemigo
-m.EffectsUnarmed3_0=Maestro desarmado
-m.EffectsUnarmed3_1=Mejora de grandes daños
-m.EffectsUnarmed4_0=Aprendiz desarmado
-m.EffectsUnarmed4_1=Mejora de daños
-m.EffectsUnarmed5_0=Desviar flechas
-m.EffectsUnarmed5_1=Desviar flechas
-m.AbilLockUnarmed1=BLOQUEADO HASTA TENER HABILIDAD +250 (APRENDIZ DESARMADO)
-m.AbilLockUnarmed2=BLOQUEADO HASTA TENER HABILIDAD +500 (MAESTRO DESARMADO)
-m.AbilBonusUnarmed1_0=Aprendiz desarmado
-m.AbilBonusUnarmed1_1=Mejora de +2 de daño
-m.AbilBonusUnarmed2_0=Maestro desarmado
-m.AbilBonusUnarmed2_1=Mejora de +4 de daño
-m.UnarmedArrowDeflectChance=[[RED]]Posibilidad de Desviar flechas: [[YELLOW]]{0}%
-m.UnarmedDisarmChance=[[RED]]Posibilidad de Desarmar: [[YELLOW]]{0}%
-m.UnarmedBerserkLength=[[RED]]Posibilidad de Enloquecer: [[YELLOW]]{0}s
-m.SkillHerbalism=HERBORISTERIA
-m.XPGainHerbalism=Cosecha de hierbas
-m.EffectsHerbalism1_0=Tierra verde (HABILIDAD)
-m.EffectsHerbalism1_1=Triple experiencia, Triple beneficio
-m.EffectsHerbalism2_0=Dedos verdes (Trigo)
-m.EffectsHerbalism2_1=Autoplanta el trigo al recolectarlo
-m.EffectsHerbalism3_0=Dedos verdes (Piedras)
-m.EffectsHerbalism3_1=Transorma Cobblestone en Moss Stone (usa semillas)
-m.EffectsHerbalism4_0=+ Comida
-m.EffectsHerbalism4_1=Modifica la vida recivida por el pan/guiso
-m.EffectsHerbalism5_0=Doble beneficio (Todas las hierbas)
-m.EffectsHerbalism5_1=Dobla el botin normal
-m.HerbalismGreenTerraLength=[[RED]]Duracion de Tierra verde: [[YELLOW]]{0}s
-m.HerbalismGreenThumbChance=[[RED]]Posibilidad de Dedos verdes: [[YELLOW]]{0}%
-m.HerbalismGreenThumbStage=[[RED]]Etapa de Dedos verdes: [[YELLOW]] El Trigo crece en la etapa {0}
-m.HerbalismDoubleDropChance=[[RED]]Posibilidad de Doble beneficio: [[YELLOW]]{0}%
-m.HerbalismFoodPlus=[[RED]]+ Comida (Rank{0}): [[YELLOW]]{0} de Bonus de Curacion
-m.SkillExcavation=EXCAVACION
-m.XPGainExcavation=Excavar y encontrar tesoros
-m.EffectsExcavation1_0=Ultra perforador (HABILIDAD)
-m.EffectsExcavation1_1=Triple beneficio, Triple EXP, + Velocidad
-m.EffectsExcavation2_0=Cazatesoros
-m.EffectsExcavation2_1=Habilidad para excavar y obtener tesoros
-m.ExcavationGreenTerraLength=[[RED]]Duracion de Ultra perforador: [[YELLOW]]{0}s
-mcBlockListener.PlacedAnvil=[[DARK_RED]]Has establecido un yunque, Los yunques pueden reparar herramientas y armadura.
-mcEntityListener.WolfComesBack=[[DARK_GRAY]]El lobo se escabuye hacia ti...
-mcPlayerListener.AbilitiesOff=Uso de habilidad desactivada
-mcPlayerListener.AbilitiesOn=Uso de habilidad activada
-mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**HABILIDADES ACTUALIZADAS\!**
-mcPlayerListener.AcrobaticsSkill=Acrobacias:
-mcPlayerListener.ArcherySkill=Tiro con Arco:
-mcPlayerListener.AxesSkill=Hachas:
-mcPlayerListener.ExcavationSkill=Excavacion:
-mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO Modo Dios Desactivado
-mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Modo Dios Activado
-mcPlayerListener.GreenThumb=[[GREEN]]**DEDOS VERDES**
-mcPlayerListener.GreenThumbFail=[[RED]]**DEDOS VERDES FALLIDO**
-mcPlayerListener.HerbalismSkill=Herboristeria:
-mcPlayerListener.MiningSkill=Minar:
-mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn esta ahora limpio.
-mcPlayerListener.MyspawnNotExist=[[RED]]Configura tu myspawn primero con una cama.
-mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn ha sido establecido hacia tu localizacion actual.
-mcPlayerListener.MyspawnTimeNotice=Tienes que esperar {0}min {1}seg para usar myspawn
-mcPlayerListener.NoPermission=mcPermisos insuficientes
-mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Si no tienes acceso a una habilidad no seras mostrado aqui.
-mcPlayerListener.NotInParty=[[RED]]No estas en una fiesta.
-mcPlayerListener.InviteSuccess=[[GREEN]]Invitacion enviada satisfactoriamente.
-mcPlayerListener.ReceivedInvite1=[[RED]]ALERT: [[GREEN]]Has recivido una invitacion a la fiesta para {0} de {1}
-mcPlayerListener.ReceivedInvite2=[[YELLOW]]Escribe [[GREEN]]/{0}[[YELLOW]] para aceptar la invitacion
-mcPlayerListener.InviteAccepted=[[GREEN]]Invitacion aceptada. Has entrado a la fiesta {0}
-mcPlayerListener.NoInvites=[[RED]]No tienes invitaciones ahora mismo
-mcPlayerListener.YouAreInParty=[[GREEN]]Estas en la fiesta {0}
-mcPlayerListener.PartyMembers=[[GREEN]]Miembros de la fiesta
-mcPlayerListener.LeftParty=[[RED]]Has abandonado esta fiesta
-mcPlayerListener.JoinedParty=Ha entrado a la fiesta: {0}
-mcPlayerListener.PartyChatOn=Solo Chat de fiesta [[GREEN]]Activado
-mcPlayerListener.PartyChatOff=Solo Chat de fiesta [[RED]]Desactivado
-mcPlayerListener.AdminChatOn=Solo Chat de Admins [[GREEN]]Activado
-mcPlayerListener.AdminChatOff=Solo Chat de Admins [[RED]]Desactivado
-mcPlayerListener.MOTD=[[BLUE]]Este server esta ejecutando mcMMO {0} escribe [[YELLOW]]/{1}[[BLUE]] para obtener ayuda.
-mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Wiki
-mcPlayerListener.PowerLevel=[[DARK_RED]]NIVEL DE PODER:
-mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Nivel de Poder [[YELLOW]]Ranking de lideres--
-mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Ranking de lideres--
-mcPlayerListener.RepairSkill=Reparar:
-mcPlayerListener.SwordsSkill=Espadas:
-mcPlayerListener.TamingSkill=Domar:
-mcPlayerListener.UnarmedSkill=Desarmado:
-mcPlayerListener.WoodcuttingSkill=Tala de arboles:
-mcPlayerListener.YourStats=[[GREEN]][mcMMO] Estadisticas
-Party.InformedOnJoin={0} [[GREEN]] ha entrado a tu fiesta
-Party.InformedOnQuit={0} [[GREEN]] ha salido de tu fiesta
-Skills.YourGreenTerra=[[GREEN]]Tu habilidad [[YELLOW]]Tierra Verde [[GREEN]] ha sido actualizada!
-Skills.YourTreeFeller=[[GREEN]]Tu habilidad [[YELLOW]]Cortador de Arboles [[GREEN]] ha sido actualizada!
-Skills.YourSuperBreaker=[[GREEN]]Tu habilidad [[YELLOW]]Super Rompedor [[GREEN]]ha sido actualizada!
-Skills.YourSerratedStrikes=[[GREEN]]Tu habilidad [[YELLOW]]Golpes dentados [[GREEN]]ha sido actualizada!
-Skills.YourBerserk=[[GREEN]]Tu habilidad [[YELLOW]]Enloquecer [[GREEN]]ha sido actualizada!
-Skills.YourSkullSplitter=[[GREEN]]Tu habilidad [[YELLOW]]Cortador de cabezas [[GREEN]]ha sido actualizada!
-Skills.YourGigaDrillBreaker=[[GREEN]]Tu habilidad [[YELLOW]]Super Perforador [[GREEN]]ha sido actualizada!
-Skills.TooTired=[[RED]]Estas demasiado cansado para usar esta habilidad de nuevo.
-Skills.ReadyHoe=[[GREEN]]**SACHO LISTO PARA USAR TIERRA VERDE**
-Skills.LowerHoe=[[GRAY]]**TU SACHO HA SIDO DESCARGADO**
-Skills.ReadyAxe=[[GREEN]]**HACHA LISTA PARA USAR CORTADOR DE ARBOLES**
-Skills.LowerAxe=[[GRAY]]**TU HACHA HA SIDO DESCARGADA**
-Skills.ReadyFists=[[GREEN]]**TUS PUÑOS ESTAN LISTOS PARA USAR ENLOQUECER**
-Skills.LowerFists=[[GRAY]]**TUS PUÑOS HAN SIDO DESCARGADOS**
-Skills.ReadyPickAxe=[[GREEN]]**TU PICO ESTA LISTO PARA USAR SUPER ROMPEDOR**
-Skills.LowerPickAxe=[[GRAY]]**TU PICO HA SIDO DESCARGADO**
-Skills.ReadyShovel=[[GREEN]]**TU PALA ESTA PREPARADA PARA USAR ULTRA PERFORADOR**
-Skills.LowerShovel=[[GRAY]]**TU PALA HA SIDO DESCARGADA**
-Skills.ReadySword=[[GREEN]]**TU ESPADA ESTA PREPARADA PARA USAR GOLPES DENTADOS**
-Skills.LowerSword=[[GRAY]]**TU PALA HA SIDO DESCARGADA**
-Skills.BerserkOn=[[GREEN]]**ENLOQUECER ACTIVADO**
-Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Enloquecer!
-Skills.GreenTerraOn=[[GREEN]]**TIERRA VERDE ACTIVADO**
-Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Tierra Verde!
-Skills.TreeFellerOn=[[GREEN]]**CORTADOR DE ARBOLES ACTIVADO**
-Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Cortador de arboles!
-Skills.SuperBreakerOn=[[GREEN]]**SUPER ROMPEDOR ACTIVADO**
-Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Super Rompedor!
-Skills.SerratedStrikesOn=[[GREEN]]**GOLPES DENTADOS ACTIVADOS**
-Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Golpes Dentados!
-Skills.SkullSplitterOn=[[GREEN]]**CORTADOR DE CABEZAS ACTIVADO**
-Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Cortador de Cabezas!
-Skills.GigaDrillBreakerOn=[[GREEN]]**ULTRA PERFORADOR ACTIVADO**
-Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Ultra Perforador!
-Skills.GreenTerraOff=[[RED]]**Tierra Verde se ha agotado**
-Skills.TreeFellerOff=[[RED]]**Tree Feller se ha agotado**
-Skills.SuperBreakerOff=[[RED]]**Super Rompedor se ha agotado**
-Skills.SerratedStrikesOff=[[RED]]**Golpes Dentados se ha agotado**
-Skills.BerserkOff=[[RED]]**Enloquecer se ha agotado**
-Skills.SkullSplitterOff=[[RED]]**Cortador de Cabezas se ha agotado**
-Skills.GigaDrillBreakerOff=[[RED]]**Ultra Perforador se ha agotado**
-Skills.TamingUp=[[YELLOW]]Habilidades de domar aumentaron en un {0}. En total: ({1})
-Skills.AcrobaticsUp=[[YELLOW]]Habilidades acrobaticas aumentaron en un {0}. En Total: ({1})
-Skills.ArcheryUp=[[YELLOW]]Habilidades de Tiro con arco aumentadas en un {0}. En Total: ({1})
-Skills.SwordsUp=[[YELLOW]]Habilidades de espada aumentadas en un {0}. En total: ({1})
-Skills.AxesUp=[[YELLOW]]Habilidades de hacha aumentadas en un {0}. En total: ({1})
-Skills.UnarmedUp=[[YELLOW]]Habilidades sin arma aumentadas en un {0}. En total: ({1})
-Skills.HerbalismUp=[[YELLOW]]Habilidades de herboristeria aumentadas en un {0}. En total: ({1})
-Skills.MiningUp=[[YELLOW]]Habilidades de mineria aumentadas en un {0}. En total: ({1})
-Skills.WoodcuttingUp=[[YELLOW]]Habilidades de tala de arboles aumentadas en un {0}. En total: ({1})
-Skills.RepairUp=[[YELLOW]]Habilidades de reparacion aumentadas en un {0}. En total: ({1})
-Skills.ExcavationUp=[[YELLOW]]Habilidades de exvacacion aumentadas en un {0}. En total: ({1})
-Skills.FeltEasy=[[GRAY]]Esa fue facil.
-Skills.StackedItems=[[DARK_RED]]No puedes reparar objetos apilados.
-Skills.NeedMore=[[DARK_RED]]Necesitas mas
-Skills.AdeptDiamond=[[DARK_RED]]No tienes habilidades suficientes para reparar Diamante
-Skills.FullDurability=[[GRAY]]Esto esta a su maxima duracion
-Skills.Disarmed=[[DARK_RED]]Has sido desarmado!
-mcPlayerListener.SorcerySkill=Hechiceria:
-m.SkillSorcery=HECHICERIA
-Sorcery.HasCast=[[GREEN]]**FUNDICION**[[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]] Sin Mana [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
-Sorcery.Water.Thunder=TRUENO
-Sorcery.Curative.Self=CURARSE A SI MISMO
-Sorcery.Curative.Other=CURAR A OTRO
-m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]EXP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
-Combat.BeastLore=[[GREEN]]**LEYENDA DE BESTIAS**
-Combat.BeastLoreOwner=[[DARK_AQUA]]Dueño ([[RED]]{0}[[DARK_AQUA]])
-Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Salud ([[GREEN]]{0}[[DARK_AQUA]]/20)
-Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Salud ([[GREEN]]{0}[[DARK_AQUA]]/8)
-mcMMO.Description=[[DARK_AQUA]]Q: QUE ES ESTO?,[[GOLD]]mcMMO es un MOD de [[RED]]CODIGO LIBRE[[GOLD]] para Bukkit por [[BLUE]]nossr50,[[GOLD]]Hay muchas habilidades añadidas por mcMMO para Minecraft.,[[GOLD]]Puedes ganar experiencia de muchas formas diferentes,[[GOLD]]Tu querras escribir [[GREEN]]/SKILLNAME[[GOLD]] para saber mas sobre una habilidad.,[[DARK_AQUA]]Q: QUE HACE?,[[GOLD]]Por ejemplo... en [[DARK_AQUA]]Mineria[[GOLD]] recibiras recompensas como,[[RED]]Doble beneficio[[GOLD]] o la habilidad [[RED]]Super Rompedor[[GOLD]] que cuando[[GOLD]] se activa con el click derecho permite la Mineria durante su duracion,[[GOLD]]que esta relacionado con tu nivel de habilidad. Subiendo de nivel en [[BLUE]]Mineria,[[GOLD]]es tan sencillo como minar simples materiales!
-Party.Locked=[[RED]]La fiesta esta bloqueda, solo el lider puede invitarte
-Party.IsntLocked=[[GRAY]]La fiesta no esta bloqueada
-Party.Unlocked=[[GRAY]]La fiesta esta desbloqueada
-Party.Help1=[[RED]]El uso correcto es [[YELLOW]]/{0} [[WHITE]][[YELLOW]] o [[WHITE]]'q' [[YELLOW]]para salir
-Party.Help2=[[RED]]Para entrar a una fiesta con contraseña usa [[YELLOW]]/{0} [[WHITE]]
-Party.Help3=[[RED]]Consulta /{0} ? para mas informacion
-Party.Help4=[[RED]]Usa [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]para entrar a una fiesta o [[WHITE]]'q' [[YELLOW]]para salir
-Party.Help5=[[RED]]Para bloquear tu fiesta usa [[YELLOW]]/{0} [[WHITE]]lock
-Party.Help6=[[RED]]Para desbloquear tu fiesta usa [[YELLOW]]/{0} [[WHITE]]unlock
-Party.Help7=[[RED]]Para proteger tu fiesta con contraseña usa [[YELLOW]]/{0} [[WHITE]]password
-Party.Help8=[[RED]]Para kickear a un jugador de tu fiesta usa [[YELLOW]]/{0} [[WHITE]]kick
-Party.Help9=[[RED]]Para transferir el liderazgo de una fiesta usa [[YELLOW]]/{0} [[WHITE]]owner
-Party.NotOwner=[[DARK_RED]]No eres el lider de la fiesta
-Party.InvalidName=[[DARK_RED]]Este no es un nombre valido para la fiesta
-Party.PasswordSet=[[GREEN]]Contraseña de la fiesta puesta a {0}
-Party.CouldNotKick=[[DARK_RED]]No se puede kickear al jugador {0}
-Party.NotInYourParty=[[DARK_RED]]{0} no esta en tu fiesta
-Party.CouldNotSetOwner=[[DARK_RED]]No se puede poner de lider a {0}
-Commands.xprate.proper=[[DARK_AQUA]]El uso correcto es /{0} [integer] [true:false]
-Commands.xprate.proper2=[[DARK_AQUA]]Tambien puedes escribir /{0} reset para hacer que todo vuelva a la normalidad
-Commands.xprate.proper3=[[RED]]Introduzca true o false en el segundo valor
-Commands.xprate.over=[[RED]]mcMMO EXP Rate Event TERMINO!!
-Commands.xprate.started=[[GOLD]]mcMMO XP EVENT COMENZO!
-Commands.xprate.started2=[[GOLD]]mcMMO XP RATE ES AHORA {0}x!!
-Commands.xplock.locked=[[GOLD]]Tu BARRA DE EXP esta bloqueada a {0}!
-Commands.xplock.unlocked=[[GOLD]]Tu BARRA DE EXP esta ahora [[GREEN]]DESBLOQUEADA[[GOLD]]!
-Commands.xplock.invalid=[[RED]]Ese no es un nombre de habilidad valido! Try /xplock mining
-m.SkillAlchemy=ALCHEMY
-m.SkillEnchanting=ENCHANTING
-m.SkillFishing=FISHING
-mcPlayerListener.AlchemySkill=Alchemy:
-mcPlayerListener.EnchantingSkill=Enchanting:
-mcPlayerListener.FishingSkill=Fishing:
-Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
-Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
-Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
-Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
-Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
-Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
-Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
-m.EffectsRepair5_0=Arcane Forging
-m.EffectsRepair5_1=Repair magic items
-m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
-m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
-m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
-m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
-m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
-Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
-Fishing.ItemFound=[[GRAY]]Treasure found!
-m.SkillFishing=FISHING
-m.XPGainFishing=Fishing (Go figure!)
-m.EffectsFishing1_0=Treasure Hunter (Passive)
-m.EffectsFishing1_1=Fish up misc objects
-m.EffectsFishing2_0=Magic Hunter
-m.EffectsFishing2_1=Find Enchanted Items
-m.EffectsFishing3_0=Shake (vs. Entities)
-m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
-m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
-m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
-m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
-m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
-m.TamingSummon=[[GREEN]]Summoning complete
-m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
-m.EffectsTaming7_0=Call of the Wild
-m.EffectsTaming7_1=Summon a wolf to your side
+Combat.WolfExamine=[[GREEN]]**Has examinado a un lobo usando tu conocimiento de fieras**
+Combat.WolfShowMaster=[[DARK_GREEN]]El maestro de las fieras \: {0}
+Combat.Ignition=[[RED]]**IGNICION**
+Combat.BurningArrowHit=[[DARK_RED]]Has sido golpeado por una flecha ardiendo\!
+Combat.TouchedFuzzy=[[DARK_RED]]Estas confuso. Te sientes mareado...
+Combat.TargetDazed=El objetivo fue [[DARK_RED]]aturdido
+Combat.WolfNoMaster=[[GRAY]]Esta bestia no tiene maestro...
+Combat.WolfHealth=[[GREEN]]Esta bestia tiene {0} de salud
+Combat.StruckByGore=[[RED]]**GOLPEADO POR MORDISCO**
+Combat.Gore=[[GREEN]]**MORDISCO**
+Combat.ArrowDeflect=[[WHITE]]**FLECHA DESVIADA**
+Item.ChimaeraWingFail=**FLECHA QUIMERA FALLADA\!**
+Item.ChimaeraWingPass=**FLECHA QUIMERA**
+Item.InjuredWait=Has sido herido recientemente y tienes que esperar para usar esto. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]Necesitas mas plumas.
+m.mccPartyCommands=[[GREEN]]--COMANDOS DE FIESTA--
+m.mccParty=[party name] [[RED]]- Crea/Entra a una fiesta especifica
+m.mccPartyQ=[[RED]]- Abandona tu fiesta actual
+m.mccPartyToggle=[[RED]] - Activa/Desactiva el chat de fiesta
+m.mccPartyInvite=[player name] [[RED]]- Envia una invitacion para la fiesta
+m.mccPartyAccept=[[RED]]- Acepta una invitacion para la fiesta
+m.mccPartyTeleport=[party member name] [[RED]]- Teletransportate a un miembro de la fiesta
+m.mccOtherCommands=[[GREEN]]--OTROS COMANDOS--
+m.mccStats=- Mira tus estadisticas de McMMO
+m.mccLeaderboards=- Ranking de lideres
+m.mccMySpawn=- Teletransportate a tu lugar de nacimiento
+m.mccClearMySpawn=- Limpia tu lugar de nacimiento
+m.mccToggleAbility=- Activa/Desactiva la activacion de la habilidad con el click derecho
+m.mccAdminToggle=- Activa/Desactiva el chat de admins
+m.mccWhois=[playername] [[RED]]- Mira informacion detallada del jugador
+m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Modifica el objetivo
+m.mccMcGod=- Modo dios
+m.mccSkillInfo=[skillname] [[RED]]- Mira informacion detallada sobre una habilidad
+m.mccModDescription=[[RED]]- Lee la descripcion del MOD
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]GANANCIA DE EXP: [[WHITE]]{0}
+m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
+m.AbilityLockTemplate=[[GRAY]]{0}
+m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
+m.Effects=EFECTOS
+m.YourStats=TUS ESTADISTICAS
+m.SkillTaming=DOMADURA
+m.XPGainTaming=Lobos siendo lastimados
+m.EffectsTaming1_0=Leyenda de bestias
+m.EffectsTaming1_1=Golpear con huesos examina a los lobos
+m.EffectsTaming2_0=Sangre
+m.EffectsTaming2_1=Golpe critico que hace sangrar
+m.EffectsTaming3_0=Garras afiladas
+m.EffectsTaming3_1=Bonus de daño
+m.EffectsTaming4_0=Consciente del medio ambiente
+m.EffectsTaming4_1=Inmunidad a heridas por caidas, Cactus/Lava fobia
+m.EffectsTaming5_0=Piel gruesa
+m.EffectsTaming5_1=Reduccion de daño, Resistencia al fuego
+m.EffectsTaming6_0=A prueba de golpes
+m.EffectsTaming6_1=Reduccion del daño con explosivos
+m.AbilLockTaming1=BLOQUEADO HASTA TENER HABILIDAD +100 (CONSCIENTE DEL MEDIO AMBIENTE)
+m.AbilLockTaming2=BLOQUEADO HASTA TENER HABILIDAD +250 (PIEL GRUESA)
+m.AbilLockTaming3=BLOQUEADO HASTA TENER HABILIDAD +500 (A PRUEBA DE GOLPES)
+m.AbilLockTaming4=BLOQUEADO HASTA TENER HABILIDAD +750 (GARRAS AFILADAS)
+m.AbilBonusTaming1_0=Consciente del medio ambiente
+m.AbilBonusTaming1_1=Los lobos evitan el peligro
+m.AbilBonusTaming2_0=Piel gruesa
+m.AbilBonusTaming2_1=Daño reducido a la mitad, Resistencia al fuego
+m.AbilBonusTaming3_0=A prueba de golpes
+m.AbilBonusTaming3_1=Los explosivos hacen 1/6 del daño normal
+m.AbilBonusTaming4_0=Garras afiladas
+m.AbilBonusTaming4_1=+2 de Daño
+m.TamingGoreChance=[[RED]]Oportunidad de sangre: [[YELLOW]]{0}%
+m.SkillWoodCutting=TALA DE ARBOLES
+m.XPGainWoodCutting=Cortando arboles
+m.EffectsWoodCutting1_0=Cortador de arboles (HABILIDAD)
+m.EffectsWoodCutting1_1=Haz que los arboles exploten
+m.EffectsWoodCutting2_0=Soplador de hojas
+m.EffectsWoodCutting2_1=Aparta las hojas
+m.EffectsWoodCutting3_0=Doble de gotas
+m.EffectsWoodCutting3_1=Doble del botin habitual
+m.AbilLockWoodCutting1=BLOQUEADO HASTA TENER HABILIDAD +100 (SOPLADOR DE HOJAS)
+m.AbilBonusWoodCutting1_0=Soplador de hojas
+m.AbilBonusWoodCutting1_1=Aparta las ojas
+m.WoodCuttingDoubleDropChance=[[RED]]Posibilidad de Doble de gotas: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Duracion de tala de arboles: [[YELLOW]]{0}s
+m.SkillArchery=Tiro con Arco
+m.XPGainArchery=Ataque a monstruos
+m.EffectsArchery1_0=Ignicion
+m.EffectsArchery1_1=25% de posibilidades de que un enemigo arda en llamas
+m.EffectsArchery2_0=Aturdir (Jugadores)
+m.EffectsArchery2_1=Desorienta a los enemigos
+m.EffectsArchery3_0=+ Daño
+m.EffectsArchery3_1=Modifica el daño
+m.EffectsArchery4_0=Recuperación de flecha
+m.EffectsArchery4_1=Posibilidad de obtener flechas de cadaveres
+m.ArcheryDazeChance=[[RED]]Posibilidad de aturdir: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Posibilidad de obtener flechas: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Duracion de la ignicion: [[YELLOW]]{0} seconds
+m.ArcheryDamagePlus=[[RED]]+ Daño (Rank{0}): [[YELLOW]] {0} de bonus de daño
+m.SkillAxes=HACHAS
+m.XPGainAxes=Ataque a monstruos
+m.EffectsAxes1_0=Cortador de cabecas (HABILIDAD)
+m.EffectsAxes1_1=Causa daños en arena
+m.EffectsAxes2_0=Golpes criticos
+m.EffectsAxes2_1=Doble de daño
+m.EffectsAxes3_0=Maestria de hacha
+m.EffectsAxes3_1=Modifica el daño
+m.AbilLockAxes1=BLOQUEADO HASTA TENER HABILIDAD +500 (MAESTRIA DE HACHA)
+m.AbilBonusAxes1_0=Maestria de hacha
+m.AbilBonusAxes1_1=4 de daño de bonus
+m.AxesCritChance=[[RED]]Posibilad de golpe critico: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Longitud de Cortador de cabezas: [[YELLOW]]{0}s
+m.SkillSwords=ESPADAS
+m.XPGainSwords=Ataque a monstruos
+m.EffectsSwords1_0=Contraataque
+m.EffectsSwords1_1=Desviar el 50% del daño obtenido
+m.EffectsSwords2_0=Golpes dentados (HABILIDAD)
+m.EffectsSwords2_1=25% de daño en Arena, y efecto de hemorragia
+m.EffectsSwords3_0=Ataque cortante con efecto de hemorragia
+m.EffectsSwords3_1=5 sangramientos
+m.EffectsSwords4_0=Desviar
+m.EffectsSwords4_1=Anula el daño
+m.EffectsSwords5_0=Hemorragia
+m.EffectsSwords5_1=Causa sangramientos repetidos a lo largo del tiempo
+m.SwordsCounterAttChance=[[RED]]Posibilidad de contraataque: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Duracion del sangrado: [[YELLOW]]{0} ticks
+m.SwordsBleedChance=[[RED]]Posibilidad de hemorragia: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Posibilidad de desviacion: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Duracion de los golpes dentados: [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]NOTA: [[YELLOW]]1 Tick ocurre cada 2 segundos
+m.SkillAcrobatics=ACROBACIAS
+m.XPGainAcrobatics=Caida
+m.EffectsAcrobatics1_0=Rodar
+m.EffectsAcrobatics1_1=Reduce o evita daño
+m.EffectsAcrobatics2_0=Rodar con estilo
+m.EffectsAcrobatics2_1=Dos veces mas efectivos que Rodar
+m.EffectsAcrobatics3_0=Esquivar
+m.EffectsAcrobatics3_1=Reduce el daño a la mitad
+m.AcrobaticsRollChance=[[RED]]Posibilidad de Rodar: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Posibilidad de Rodar con estilo: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Posibilidad de Esquivar: [[YELLOW]]{0}%
+m.SkillMining=MINAR
+m.XPGainMining=Minar Piedra & Oro
+m.EffectsMining1_0=Super rompedor (HABILIDAD)
+m.EffectsMining1_1=+ Velocidad, Posibilidad de obtener triple beneficio
+m.EffectsMining2_0=Beneficio doble
+m.EffectsMining2_1=Dobla el botin normal
+m.MiningDoubleDropChance=[[RED]]Posibilidad de Beneficio doble: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Duracion de Super Rompedor: [[YELLOW]]{0}s
+m.SkillRepair=REPARAR
+m.XPGainRepair=Reparacion
+m.EffectsRepair1_0=Reparar
+m.EffectsRepair1_1=Reparar Herramientas y armadura de Hierro
+m.EffectsRepair2_0=Maestro de reparacion
+m.EffectsRepair2_1=Crecimiento de la cantidad de reparacion
+m.EffectsRepair3_0=Super Reparacion
+m.EffectsRepair3_1=Doble efectividad
+m.EffectsRepair4_0=Reparar diamantes (+{0} HABILIDAD)
+m.EffectsRepair4_1=Reparar Herramientas y armadura de Diamantes
+m.RepairRepairMastery=[[RED]]Maestro de reparacion: [[YELLOW]]{0}% extra de duracion obtenido
+m.RepairSuperRepairChance=[[RED]]Posibilidad de Super Reparacion: [[YELLOW]]{0}%
+m.SkillUnarmed=DESARMADO
+m.XPGainUnarmed=Ataque a monstruos
+m.EffectsUnarmed1_0=Enloquecer (HABILIDAD)
+m.EffectsUnarmed1_1=+50% daño, Romper materiales fragiles
+m.EffectsUnarmed2_0=Desarmar (Jugadores)
+m.EffectsUnarmed2_1=Caida del objeto de mano del enemigo
+m.EffectsUnarmed3_0=Maestro desarmado
+m.EffectsUnarmed3_1=Mejora de grandes daños
+m.EffectsUnarmed4_0=Aprendiz desarmado
+m.EffectsUnarmed4_1=Mejora de daños
+m.EffectsUnarmed5_0=Desviar flechas
+m.EffectsUnarmed5_1=Desviar flechas
+m.AbilLockUnarmed1=BLOQUEADO HASTA TENER HABILIDAD +250 (APRENDIZ DESARMADO)
+m.AbilLockUnarmed2=BLOQUEADO HASTA TENER HABILIDAD +500 (MAESTRO DESARMADO)
+m.AbilBonusUnarmed1_0=Aprendiz desarmado
+m.AbilBonusUnarmed1_1=Mejora de +2 de daño
+m.AbilBonusUnarmed2_0=Maestro desarmado
+m.AbilBonusUnarmed2_1=Mejora de +4 de daño
+m.UnarmedArrowDeflectChance=[[RED]]Posibilidad de Desviar flechas: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Posibilidad de Desarmar: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Posibilidad de Enloquecer: [[YELLOW]]{0}s
+m.SkillHerbalism=HERBORISTERIA
+m.XPGainHerbalism=Cosecha de hierbas
+m.EffectsHerbalism1_0=Tierra verde (HABILIDAD)
+m.EffectsHerbalism1_1=Triple experiencia, Triple beneficio
+m.EffectsHerbalism2_0=Dedos verdes (Trigo)
+m.EffectsHerbalism2_1=Autoplanta el trigo al recolectarlo
+m.EffectsHerbalism3_0=Dedos verdes (Piedras)
+m.EffectsHerbalism3_1=Transorma Cobblestone en Moss Stone (usa semillas)
+m.EffectsHerbalism4_0=+ Comida
+m.EffectsHerbalism4_1=Modifica la vida recivida por el pan/guiso
+m.EffectsHerbalism5_0=Doble beneficio (Todas las hierbas)
+m.EffectsHerbalism5_1=Dobla el botin normal
+m.HerbalismGreenTerraLength=[[RED]]Duracion de Tierra verde: [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Posibilidad de Dedos verdes: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Etapa de Dedos verdes: [[YELLOW]] El Trigo crece en la etapa {0}
+m.HerbalismDoubleDropChance=[[RED]]Posibilidad de Doble beneficio: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]+ Comida (Rank{0}): [[YELLOW]]{0} de Bonus de Curacion
+m.SkillExcavation=EXCAVACION
+m.XPGainExcavation=Excavar y encontrar tesoros
+m.EffectsExcavation1_0=Ultra perforador (HABILIDAD)
+m.EffectsExcavation1_1=Triple beneficio, Triple EXP, + Velocidad
+m.EffectsExcavation2_0=Cazatesoros
+m.EffectsExcavation2_1=Habilidad para excavar y obtener tesoros
+m.ExcavationGreenTerraLength=[[RED]]Duracion de Ultra perforador: [[YELLOW]]{0}s
+mcBlockListener.PlacedAnvil=[[DARK_RED]]Has establecido un yunque, Los yunques pueden reparar herramientas y armadura.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]El lobo se escabuye hacia ti...
+mcPlayerListener.AbilitiesOff=Uso de habilidad desactivada
+mcPlayerListener.AbilitiesOn=Uso de habilidad activada
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**HABILIDADES ACTUALIZADAS\!**
+mcPlayerListener.AcrobaticsSkill=Acrobacias:
+mcPlayerListener.ArcherySkill=Tiro con Arco:
+mcPlayerListener.AxesSkill=Hachas:
+mcPlayerListener.ExcavationSkill=Excavacion:
+mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO Modo Dios Desactivado
+mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Modo Dios Activado
+mcPlayerListener.GreenThumb=[[GREEN]]**DEDOS VERDES**
+mcPlayerListener.GreenThumbFail=[[RED]]**DEDOS VERDES FALLIDO**
+mcPlayerListener.HerbalismSkill=Herboristeria:
+mcPlayerListener.MiningSkill=Minar:
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn esta ahora limpio.
+mcPlayerListener.MyspawnNotExist=[[RED]]Configura tu myspawn primero con una cama.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn ha sido establecido hacia tu localizacion actual.
+mcPlayerListener.MyspawnTimeNotice=Tienes que esperar {0}min {1}seg para usar myspawn
+mcPlayerListener.NoPermission=mcPermisos insuficientes
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Si no tienes acceso a una habilidad no seras mostrado aqui.
+mcPlayerListener.NotInParty=[[RED]]No estas en una fiesta.
+mcPlayerListener.InviteSuccess=[[GREEN]]Invitacion enviada satisfactoriamente.
+mcPlayerListener.ReceivedInvite1=[[RED]]ALERT: [[GREEN]]Has recivido una invitacion a la fiesta para {0} de {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Escribe [[GREEN]]/{0}[[YELLOW]] para aceptar la invitacion
+mcPlayerListener.InviteAccepted=[[GREEN]]Invitacion aceptada. Has entrado a la fiesta {0}
+mcPlayerListener.NoInvites=[[RED]]No tienes invitaciones ahora mismo
+mcPlayerListener.YouAreInParty=[[GREEN]]Estas en la fiesta {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Miembros de la fiesta
+mcPlayerListener.LeftParty=[[RED]]Has abandonado esta fiesta
+mcPlayerListener.JoinedParty=Ha entrado a la fiesta: {0}
+mcPlayerListener.PartyChatOn=Solo Chat de fiesta [[GREEN]]Activado
+mcPlayerListener.PartyChatOff=Solo Chat de fiesta [[RED]]Desactivado
+mcPlayerListener.AdminChatOn=Solo Chat de Admins [[GREEN]]Activado
+mcPlayerListener.AdminChatOff=Solo Chat de Admins [[RED]]Desactivado
+mcPlayerListener.MOTD=[[BLUE]]Este server esta ejecutando mcMMO {0} escribe [[YELLOW]]/{1}[[BLUE]] para obtener ayuda.
+mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Wiki
+mcPlayerListener.PowerLevel=[[DARK_RED]]NIVEL DE PODER:
+mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Nivel de Poder [[YELLOW]]Ranking de lideres--
+mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Ranking de lideres--
+mcPlayerListener.RepairSkill=Reparar:
+mcPlayerListener.SwordsSkill=Espadas:
+mcPlayerListener.TamingSkill=Domar:
+mcPlayerListener.UnarmedSkill=Desarmado:
+mcPlayerListener.WoodcuttingSkill=Tala de arboles:
+mcPlayerListener.YourStats=[[GREEN]][mcMMO] Estadisticas
+Party.InformedOnJoin={0} [[GREEN]] ha entrado a tu fiesta
+Party.InformedOnQuit={0} [[GREEN]] ha salido de tu fiesta
+Skills.YourGreenTerra=[[GREEN]]Tu habilidad [[YELLOW]]Tierra Verde [[GREEN]] ha sido actualizada!
+Skills.YourTreeFeller=[[GREEN]]Tu habilidad [[YELLOW]]Cortador de Arboles [[GREEN]] ha sido actualizada!
+Skills.YourSuperBreaker=[[GREEN]]Tu habilidad [[YELLOW]]Super Rompedor [[GREEN]]ha sido actualizada!
+Skills.YourSerratedStrikes=[[GREEN]]Tu habilidad [[YELLOW]]Golpes dentados [[GREEN]]ha sido actualizada!
+Skills.YourBerserk=[[GREEN]]Tu habilidad [[YELLOW]]Enloquecer [[GREEN]]ha sido actualizada!
+Skills.YourSkullSplitter=[[GREEN]]Tu habilidad [[YELLOW]]Cortador de cabezas [[GREEN]]ha sido actualizada!
+Skills.YourGigaDrillBreaker=[[GREEN]]Tu habilidad [[YELLOW]]Super Perforador [[GREEN]]ha sido actualizada!
+Skills.TooTired=[[RED]]Estas demasiado cansado para usar esta habilidad de nuevo.
+Skills.ReadyHoe=[[GREEN]]**SACHO LISTO PARA USAR TIERRA VERDE**
+Skills.LowerHoe=[[GRAY]]**TU SACHO HA SIDO DESCARGADO**
+Skills.ReadyAxe=[[GREEN]]**HACHA LISTA PARA USAR CORTADOR DE ARBOLES**
+Skills.LowerAxe=[[GRAY]]**TU HACHA HA SIDO DESCARGADA**
+Skills.ReadyFists=[[GREEN]]**TUS PUÑOS ESTAN LISTOS PARA USAR ENLOQUECER**
+Skills.LowerFists=[[GRAY]]**TUS PUÑOS HAN SIDO DESCARGADOS**
+Skills.ReadyPickAxe=[[GREEN]]**TU PICO ESTA LISTO PARA USAR SUPER ROMPEDOR**
+Skills.LowerPickAxe=[[GRAY]]**TU PICO HA SIDO DESCARGADO**
+Skills.ReadyShovel=[[GREEN]]**TU PALA ESTA PREPARADA PARA USAR ULTRA PERFORADOR**
+Skills.LowerShovel=[[GRAY]]**TU PALA HA SIDO DESCARGADA**
+Skills.ReadySword=[[GREEN]]**TU ESPADA ESTA PREPARADA PARA USAR GOLPES DENTADOS**
+Skills.LowerSword=[[GRAY]]**TU PALA HA SIDO DESCARGADA**
+Skills.BerserkOn=[[GREEN]]**ENLOQUECER ACTIVADO**
+Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Enloquecer!
+Skills.GreenTerraOn=[[GREEN]]**TIERRA VERDE ACTIVADO**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Tierra Verde!
+Skills.TreeFellerOn=[[GREEN]]**CORTADOR DE ARBOLES ACTIVADO**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Cortador de arboles!
+Skills.SuperBreakerOn=[[GREEN]]**SUPER ROMPEDOR ACTIVADO**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Super Rompedor!
+Skills.SerratedStrikesOn=[[GREEN]]**GOLPES DENTADOS ACTIVADOS**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Golpes Dentados!
+Skills.SkullSplitterOn=[[GREEN]]**CORTADOR DE CABEZAS ACTIVADO**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Cortador de Cabezas!
+Skills.GigaDrillBreakerOn=[[GREEN]]**ULTRA PERFORADOR ACTIVADO**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] ha usado [[RED]]Ultra Perforador!
+Skills.GreenTerraOff=[[RED]]**Tierra Verde se ha agotado**
+Skills.TreeFellerOff=[[RED]]**Tree Feller se ha agotado**
+Skills.SuperBreakerOff=[[RED]]**Super Rompedor se ha agotado**
+Skills.SerratedStrikesOff=[[RED]]**Golpes Dentados se ha agotado**
+Skills.BerserkOff=[[RED]]**Enloquecer se ha agotado**
+Skills.SkullSplitterOff=[[RED]]**Cortador de Cabezas se ha agotado**
+Skills.GigaDrillBreakerOff=[[RED]]**Ultra Perforador se ha agotado**
+Skills.TamingUp=[[YELLOW]]Habilidades de domar aumentaron en un {0}. En total: ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Habilidades acrobaticas aumentaron en un {0}. En Total: ({1})
+Skills.ArcheryUp=[[YELLOW]]Habilidades de Tiro con arco aumentadas en un {0}. En Total: ({1})
+Skills.SwordsUp=[[YELLOW]]Habilidades de espada aumentadas en un {0}. En total: ({1})
+Skills.AxesUp=[[YELLOW]]Habilidades de hacha aumentadas en un {0}. En total: ({1})
+Skills.UnarmedUp=[[YELLOW]]Habilidades sin arma aumentadas en un {0}. En total: ({1})
+Skills.HerbalismUp=[[YELLOW]]Habilidades de herboristeria aumentadas en un {0}. En total: ({1})
+Skills.MiningUp=[[YELLOW]]Habilidades de mineria aumentadas en un {0}. En total: ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Habilidades de tala de arboles aumentadas en un {0}. En total: ({1})
+Skills.RepairUp=[[YELLOW]]Habilidades de reparacion aumentadas en un {0}. En total: ({1})
+Skills.ExcavationUp=[[YELLOW]]Habilidades de exvacacion aumentadas en un {0}. En total: ({1})
+Skills.FeltEasy=[[GRAY]]Esa fue facil.
+Skills.StackedItems=[[DARK_RED]]No puedes reparar objetos apilados.
+Skills.NeedMore=[[DARK_RED]]Necesitas mas
+Skills.AdeptDiamond=[[DARK_RED]]No tienes habilidades suficientes para reparar Diamante
+Skills.FullDurability=[[GRAY]]Esto esta a su maxima duracion
+Skills.Disarmed=[[DARK_RED]]Has sido desarmado!
+mcPlayerListener.SorcerySkill=Hechiceria:
+m.SkillSorcery=HECHICERIA
+Sorcery.HasCast=[[GREEN]]**FUNDICION**[[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]] Sin Mana [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=TRUENO
+Sorcery.Curative.Self=CURARSE A SI MISMO
+Sorcery.Curative.Other=CURAR A OTRO
+m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]EXP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]**LEYENDA DE BESTIAS**
+Combat.BeastLoreOwner=[[DARK_AQUA]]Dueño ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Salud ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Salud ([[GREEN]]{0}[[DARK_AQUA]]/8)
+mcMMO.Description=[[DARK_AQUA]]Q: QUE ES ESTO?,[[GOLD]]mcMMO es un MOD de [[RED]]CODIGO LIBRE[[GOLD]] para Bukkit por [[BLUE]]nossr50,[[GOLD]]Hay muchas habilidades añadidas por mcMMO para Minecraft.,[[GOLD]]Puedes ganar experiencia de muchas formas diferentes,[[GOLD]]Tu querras escribir [[GREEN]]/SKILLNAME[[GOLD]] para saber mas sobre una habilidad.,[[DARK_AQUA]]Q: QUE HACE?,[[GOLD]]Por ejemplo... en [[DARK_AQUA]]Mineria[[GOLD]] recibiras recompensas como,[[RED]]Doble beneficio[[GOLD]] o la habilidad [[RED]]Super Rompedor[[GOLD]] que cuando[[GOLD]] se activa con el click derecho permite la Mineria durante su duracion,[[GOLD]]que esta relacionado con tu nivel de habilidad. Subiendo de nivel en [[BLUE]]Mineria,[[GOLD]]es tan sencillo como minar simples materiales!
+Party.Locked=[[RED]]La fiesta esta bloqueda, solo el lider puede invitarte
+Party.IsntLocked=[[GRAY]]La fiesta no esta bloqueada
+Party.Unlocked=[[GRAY]]La fiesta esta desbloqueada
+Party.Help1=[[RED]]El uso correcto es [[YELLOW]]/{0} [[WHITE]][[YELLOW]] o [[WHITE]]'q' [[YELLOW]]para salir
+Party.Help2=[[RED]]Para entrar a una fiesta con contraseña usa [[YELLOW]]/{0} [[WHITE]]
+Party.Help3=[[RED]]Consulta /{0} ? para mas informacion
+Party.Help4=[[RED]]Usa [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]para entrar a una fiesta o [[WHITE]]'q' [[YELLOW]]para salir
+Party.Help5=[[RED]]Para bloquear tu fiesta usa [[YELLOW]]/{0} [[WHITE]]lock
+Party.Help6=[[RED]]Para desbloquear tu fiesta usa [[YELLOW]]/{0} [[WHITE]]unlock
+Party.Help7=[[RED]]Para proteger tu fiesta con contraseña usa [[YELLOW]]/{0} [[WHITE]]password
+Party.Help8=[[RED]]Para kickear a un jugador de tu fiesta usa [[YELLOW]]/{0} [[WHITE]]kick
+Party.Help9=[[RED]]Para transferir el liderazgo de una fiesta usa [[YELLOW]]/{0} [[WHITE]]owner
+Party.NotOwner=[[DARK_RED]]No eres el lider de la fiesta
+Party.InvalidName=[[DARK_RED]]Este no es un nombre valido para la fiesta
+Party.PasswordSet=[[GREEN]]Contraseña de la fiesta puesta a {0}
+Party.CouldNotKick=[[DARK_RED]]No se puede kickear al jugador {0}
+Party.NotInYourParty=[[DARK_RED]]{0} no esta en tu fiesta
+Party.CouldNotSetOwner=[[DARK_RED]]No se puede poner de lider a {0}
+Commands.xprate.proper=[[DARK_AQUA]]El uso correcto es /{0} [integer] [true:false]
+Commands.xprate.proper2=[[DARK_AQUA]]Tambien puedes escribir /{0} reset para hacer que todo vuelva a la normalidad
+Commands.xprate.proper3=[[RED]]Introduzca true o false en el segundo valor
+Commands.xprate.over=[[RED]]mcMMO EXP Rate Event TERMINO!!
+Commands.xprate.started=[[GOLD]]mcMMO XP EVENT COMENZO!
+Commands.xprate.started2=[[GOLD]]mcMMO XP RATE ES AHORA {0}x!!
+Commands.xplock.locked=[[GOLD]]Tu BARRA DE EXP esta bloqueada a {0}!
+Commands.xplock.unlocked=[[GOLD]]Tu BARRA DE EXP esta ahora [[GREEN]]DESBLOQUEADA[[GOLD]]!
+Commands.xplock.invalid=[[RED]]Ese no es un nombre de habilidad valido! Try /xplock mining
+m.SkillAlchemy=ALCHEMY
+m.SkillEnchanting=ENCHANTING
+m.SkillFishing=FISHING
+mcPlayerListener.AlchemySkill=Alchemy:
+mcPlayerListener.EnchantingSkill=Enchanting:
+mcPlayerListener.FishingSkill=Fishing:
+Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
+Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
+Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
+Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
+Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
+Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
+Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
+m.EffectsRepair5_0=Arcane Forging
+m.EffectsRepair5_1=Repair magic items
+m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
+m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
+m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
+m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
+m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
+Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
+Fishing.ItemFound=[[GRAY]]Treasure found!
+m.SkillFishing=FISHING
+m.XPGainFishing=Fishing (Go figure!)
+m.EffectsFishing1_0=Treasure Hunter (Passive)
+m.EffectsFishing1_1=Fish up misc objects
+m.EffectsFishing2_0=Magic Hunter
+m.EffectsFishing2_1=Find Enchanted Items
+m.EffectsFishing3_0=Shake (vs. Entities)
+m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
+m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
+m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
+m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
+m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
+m.TamingSummon=[[GREEN]]Summoning complete
+m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
+m.EffectsTaming7_0=Call of the Wild
+m.EffectsTaming7_1=Summon a wolf to your side
m.EffectsTaming7_2=[[GRAY]]COTW HOW-TO: Crouch and right click with {0} Bones in hand
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/locale_fi.properties b/src/main/java/com/gmail/nossr50/locale/locale_fi.properties
similarity index 98%
rename from src/com/gmail/nossr50/locale/locale_fi.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_fi.properties
index 290f0afd3..609adf7c1 100644
--- a/src/com/gmail/nossr50/locale/locale_fi.properties
+++ b/src/main/java/com/gmail/nossr50/locale/locale_fi.properties
@@ -1,369 +1,369 @@
-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.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})
-mcMMO.Description=[[DARK_AQUA]]Q: WHAT IS IT?,[[GOLD]]mcMMO is an [[RED]]OPEN SOURCE[[GOLD]] RPG mod for Bukkit by [[BLUE]]nossr50,[[GOLD]]There are many skills added by mcMMO to Minecraft.,[[GOLD]]You can gain experience in many different ways,[[GOLD]]You will want to type [[GREEN]]/SKILLNAME[[GOLD]] to find out more about a skill.,[[DARK_AQUA]]Q: WHAT DOES IT DO?,[[GOLD]]As an example... in [[DARK_AQUA]]Mining[[GOLD]] you will receive benefits like,[[RED]]Double Drops[[GOLD]] or the ability [[RED]]Super Breaker[[GOLD]] which when,[[GOLD]]activated by right-click allows fast Mining during its duration,[[GOLD]]which is related to your skill level. Leveling [[BLUE]]Mining,[[GOLD]]is as simple as mining precious materials!,[[DARK_AQUA]]Q: WHAT DOES THIS MEAN?,[[GOLD]]Almost all of the skills in [[GREEN]]mcMMO[[GOLD]] add cool new things!.,[[GOLD]]You can also type [[GREEN]]/{0}[[GOLD]] to find out commands,[[GOLD]]The goal of mcMMO is to provide a quality RPG experience.,[[DARK_AQUA]]Q: WHERE DO I SUGGEST NEW STUFF!?,[[GOLD]]On the mcMMO thread in the bukkit forums!,[[DARK_AQUA]]Q: HOW DO I DO THIS AND THAT?,[[RED]]PLEASE [[GOLD]]checkout the wiki! [[DARK_AQUA]]mcmmo.wikia.com
-Party.Locked=[[RED]]Party is locked, only party leader may invite.
-Party.IsntLocked=[[GRAY]]Party is not locked
-Party.Unlocked=[[GRAY]]Party is unlocked
-Party.Help1=[[RED]]Proper usage is [[YELLOW]]/{0} [[WHITE]][[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
-Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]
-Party.Help3=[[RED]]Consult /{0} ? for more information
-Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]to join a party or [[WHITE]]'q' [[YELLOW]]to quit
-Party.Help5=[[RED]]To lock your party use [[YELLOW]]/{0} [[WHITE]]lock
-Party.Help6=[[RED]]To unlock your party use [[YELLOW]]/{0} [[WHITE]]unlock
-Party.Help7=[[RED]]To password protect your party use [[YELLOW]]/{0} [[WHITE]]password
-Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick
-Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner
-Party.NotOwner=[[DARK_RED]]You are not the party owner
-Party.InvalidName=[[DARK_RED]]That is not a valid party name
-Party.PasswordSet=[[GREEN]]Party password set to {0}
-Party.CouldNotKick=[[DARK_RED]]Could not kick player {0}
-Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
-Party.CouldNotSetOwner=[[DARK_RED]]Could not set owner to {0}
-Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
-Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
-Commands.xprate.proper3=[[RED]]Enter true or false for the second value
-Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
-Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
-Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
-Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
-Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
-Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
-m.SkillAlchemy=ALCHEMY
-m.SkillEnchanting=ENCHANTING
-m.SkillFishing=FISHING
-mcPlayerListener.AlchemySkill=Alchemy:
-mcPlayerListener.EnchantingSkill=Enchanting:
-mcPlayerListener.FishingSkill=Fishing:
-Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
-Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
-Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
-Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
-Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
-Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
-Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
-m.EffectsRepair5_0=Arcane Forging
-m.EffectsRepair5_1=Repair magic items
-m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
-m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
-m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
-m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
-m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
-Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
-Fishing.ItemFound=[[GRAY]]Treasure found!
-m.SkillFishing=FISHING
-m.XPGainFishing=Fishing (Go figure!)
-m.EffectsFishing1_0=Treasure Hunter (Passive)
-m.EffectsFishing1_1=Fish up misc objects
-m.EffectsFishing2_0=Magic Hunter
-m.EffectsFishing2_1=Find Enchanted Items
-m.EffectsFishing3_0=Shake (vs. Entities)
-m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
-m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
-m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
-m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
-m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
-m.TamingSummon=[[GREEN]]Summoning complete
-m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
-m.EffectsTaming7_0=Call of the Wild
-m.EffectsTaming7_1=Summon a wolf to your side
+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.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})
+mcMMO.Description=[[DARK_AQUA]]Q: WHAT IS IT?,[[GOLD]]mcMMO is an [[RED]]OPEN SOURCE[[GOLD]] RPG mod for Bukkit by [[BLUE]]nossr50,[[GOLD]]There are many skills added by mcMMO to Minecraft.,[[GOLD]]You can gain experience in many different ways,[[GOLD]]You will want to type [[GREEN]]/SKILLNAME[[GOLD]] to find out more about a skill.,[[DARK_AQUA]]Q: WHAT DOES IT DO?,[[GOLD]]As an example... in [[DARK_AQUA]]Mining[[GOLD]] you will receive benefits like,[[RED]]Double Drops[[GOLD]] or the ability [[RED]]Super Breaker[[GOLD]] which when,[[GOLD]]activated by right-click allows fast Mining during its duration,[[GOLD]]which is related to your skill level. Leveling [[BLUE]]Mining,[[GOLD]]is as simple as mining precious materials!,[[DARK_AQUA]]Q: WHAT DOES THIS MEAN?,[[GOLD]]Almost all of the skills in [[GREEN]]mcMMO[[GOLD]] add cool new things!.,[[GOLD]]You can also type [[GREEN]]/{0}[[GOLD]] to find out commands,[[GOLD]]The goal of mcMMO is to provide a quality RPG experience.,[[DARK_AQUA]]Q: WHERE DO I SUGGEST NEW STUFF!?,[[GOLD]]On the mcMMO thread in the bukkit forums!,[[DARK_AQUA]]Q: HOW DO I DO THIS AND THAT?,[[RED]]PLEASE [[GOLD]]checkout the wiki! [[DARK_AQUA]]mcmmo.wikia.com
+Party.Locked=[[RED]]Party is locked, only party leader may invite.
+Party.IsntLocked=[[GRAY]]Party is not locked
+Party.Unlocked=[[GRAY]]Party is unlocked
+Party.Help1=[[RED]]Proper usage is [[YELLOW]]/{0} [[WHITE]][[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
+Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]
+Party.Help3=[[RED]]Consult /{0} ? for more information
+Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]to join a party or [[WHITE]]'q' [[YELLOW]]to quit
+Party.Help5=[[RED]]To lock your party use [[YELLOW]]/{0} [[WHITE]]lock
+Party.Help6=[[RED]]To unlock your party use [[YELLOW]]/{0} [[WHITE]]unlock
+Party.Help7=[[RED]]To password protect your party use [[YELLOW]]/{0} [[WHITE]]password
+Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick
+Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner
+Party.NotOwner=[[DARK_RED]]You are not the party owner
+Party.InvalidName=[[DARK_RED]]That is not a valid party name
+Party.PasswordSet=[[GREEN]]Party password set to {0}
+Party.CouldNotKick=[[DARK_RED]]Could not kick player {0}
+Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
+Party.CouldNotSetOwner=[[DARK_RED]]Could not set owner to {0}
+Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
+Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
+Commands.xprate.proper3=[[RED]]Enter true or false for the second value
+Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
+Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
+Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
+Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
+Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
+Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
+m.SkillAlchemy=ALCHEMY
+m.SkillEnchanting=ENCHANTING
+m.SkillFishing=FISHING
+mcPlayerListener.AlchemySkill=Alchemy:
+mcPlayerListener.EnchantingSkill=Enchanting:
+mcPlayerListener.FishingSkill=Fishing:
+Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
+Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
+Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
+Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
+Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
+Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
+Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
+m.EffectsRepair5_0=Arcane Forging
+m.EffectsRepair5_1=Repair magic items
+m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
+m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
+m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
+m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
+m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
+Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
+Fishing.ItemFound=[[GRAY]]Treasure found!
+m.SkillFishing=FISHING
+m.XPGainFishing=Fishing (Go figure!)
+m.EffectsFishing1_0=Treasure Hunter (Passive)
+m.EffectsFishing1_1=Fish up misc objects
+m.EffectsFishing2_0=Magic Hunter
+m.EffectsFishing2_1=Find Enchanted Items
+m.EffectsFishing3_0=Shake (vs. Entities)
+m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
+m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
+m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
+m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
+m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
+m.TamingSummon=[[GREEN]]Summoning complete
+m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
+m.EffectsTaming7_0=Call of the Wild
+m.EffectsTaming7_1=Summon a wolf to your side
m.EffectsTaming7_2=[[GRAY]]COTW HOW-TO: Crouch and right click with {0} Bones in hand
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/locale_fr.properties b/src/main/java/com/gmail/nossr50/locale/locale_fr.properties
similarity index 98%
rename from src/com/gmail/nossr50/locale/locale_fr.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_fr.properties
index 2ab284cf0..31f3a2c3f 100644
--- a/src/com/gmail/nossr50/locale/locale_fr.properties
+++ b/src/main/java/com/gmail/nossr50/locale/locale_fr.properties
@@ -1,390 +1,390 @@
-Combat.WolfExamine=[[GREEN]]**Vous examinez le loup avec le Beast Lore**
-Combat.WolfShowMaster=[[DARK_GREEN]]Le Maître des bêtes \: {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 flou. Vous vous sentez étourdi.
-Combat.TargetDazed=La cible a été [[DARK_RED]]Étourdi
-Combat.WolfNoMaster=[[GRAY]]Cette bête n'a pas de maître...
-Combat.WolfHealth=[[GREEN]]Cette bête a {0} points de vie
-Combat.StruckByGore=[[RED]]**FRAPPÉ JUSQU'AU SANG**
-Combat.Gore=[[GREEN]]**SANG**
-Combat.ArrowDeflect=[[WHITE]]**FLÈCHE DEVIÉE**
-Item.ChimaeraWingFail=**CHIMAERA WING a échoué \!**
-Item.ChimaeraWingPass=**CHIMAERA WING**
-Item.InjuredWait=Vous avez été blessé récemment et vous devez attendre pour utiliser ça. [[YELLOW]]({0}s)
-Item.NeedFeathers=[[GRAY]]Vous avez besoin de plus de plumes..
-m.mccPartyCommands=[[GREEN]]--COMMANDES GROUPE--
-m.mccParty=[party name] [[RED]]- Créer / Rejoindre un groupe
-m.mccPartyQ=[[RED]]- Vous quitter la partie en cours
-m.mccPartyToggle=[[RED]] - Active le Chat de groupe
-m.mccPartyInvite=[player name] [[RED]]- Envoyer une invitation
-m.mccPartyAccept=[[RED]]- Accepter l'invitation
-m.mccPartyTeleport=[party member name] [[RED]]- Vous téléporte à un membre du groupe
-m.mccOtherCommands=[[GREEN]]--AUTRES COMMANDES--
-m.mccStats=- Voir vos statistiques
-m.mccLeaderboards=- Classements
-m.mccMySpawn=- Vous téléporte à votre spawn
-m.mccClearMySpawn=- Éfface votre point de spawn
-m.mccToggleAbility=- Active les capacités spéciales avec 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=- Mode dieu
-m.mccSkillInfo=[skillname] [[RED]]- Afficher des informations détaillées d'une compétence
-m.mccModDescription=[[RED]]- Affiche la description de mcMMO
-m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
-m.XPGain=[[DARK_GRAY]]POUR GAGNER DE l'XP: [[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 STATS
-m.SkillTaming=DRESSAGE
-m.XPGainTaming=Attaquer avec un loup
-m.EffectsTaming1_0=Connaissance des bêtes
-m.EffectsTaming1_1=Inspecte un loup avec un os
-m.EffectsTaming2_0=Morsures
-m.EffectsTaming2_1=Des coups critiques lors d'une morsure
-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 aux Cactus, à la lave et aux chutes.
-m.EffectsTaming5_0=Epaisse fourrure
-m.EffectsTaming5_1=Réduction dégâts, Résistance au feu
-m.EffectsTaming6_0=Résistance aux chocs
-m.EffectsTaming6_1=Réduction des dommages explosifs
-m.AbilLockTaming1=Débloqué au niveau 100 (Conscient de l'environnement)
-m.AbilLockTaming2=Débloqué au niveau 250 (Épaisse fourrure)
-m.AbilLockTaming3=Débloqué au niveau 500 (Résistance aux chocs)
-m.AbilLockTaming4=Débloqué au niveau 750 (Griffes aiguisées)
-m.AbilBonusTaming1_0=Conscient de l'environnement
-m.AbilBonusTaming1_1=Le loup évite le danger
-m.AbilBonusTaming2_0=Epaisse fourrure
-m.AbilBonusTaming2_1=Réduit de moitié les dommages \+ résistance au feu
-m.AbilBonusTaming3_0=Résistance aux chocs
-m.AbilBonusTaming3_1=divise par 6 les dégats d'explosions
-m.AbilBonusTaming4_0=Griffes aiguisées
-m.AbilBonusTaming4_1=+2 Dommages
-m.TamingGoreChance=[[RED]]Chances de Morsure: [[YELLOW]]{0}%
-m.SkillWoodCutting=BÛCHERONNAGE
-m.XPGainWoodCutting=Abattre des arbres
-m.EffectsWoodCutting1_0=L'abatteur d'arbres (capacité spéciale)
-m.EffectsWoodCutting1_1=Faire exploser les arbres
-m.EffectsWoodCutting2_0=Souffleur de feuilles
-m.EffectsWoodCutting2_1=Détruire plus de feuilles
-m.EffectsWoodCutting3_0=Double Butin
-m.EffectsWoodCutting3_1=Double le butin normal
-m.AbilLockWoodCutting1=Débloqué au niveau 100 (Souffleur de feuilles)
-m.AbilBonusWoodCutting1_0=Soufler les feuilles
-m.AbilBonusWoodCutting1_1=Détruire plus de feuilles
-m.WoodCuttingDoubleDropChance=[[RED]]Chance de double butin: [[YELLOW]]{0}%
-m.WoodCuttingTreeFellerLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
-m.SkillArchery=TIR À L'ARC
-m.XPGainArchery=Attaquer les monstres
-m.EffectsArchery1_0=Allumage
-m.EffectsArchery1_1=25% de chances que l'ennemi s'enflamme
-m.EffectsArchery2_0=Étourdir (les joueurs)
-m.EffectsArchery2_1=Étourdi les joueurs
-m.EffectsArchery3_0=Dégâts+
-m.EffectsArchery3_1=Augmente les dégâts
-m.EffectsArchery4_0=Récupération de flèches
-m.EffectsArchery4_1=Chances de récupérer vos flèches sur un cadavre
-m.ArcheryDazeChance=[[RED]]Chances d'étourdir : [[YELLOW]]{0}%
-m.ArcheryRetrieveChance=[[RED]]Chances de récupération des flèches : [[YELLOW]]{0}%
-m.ArcheryIgnitionLength=[[RED]]Durée du feu : [[YELLOW]]{0} secondes
-m.ArcheryDamagePlus=[[RED]]Dégâts+ (Rang {0}): [[YELLOW]]Bonus de {0} dommages
-m.SkillAxes=HACHE
-m.XPGainAxes=Attaquer des monstres
-m.EffectsAxes1_0=Fendeur de crânes (capacité spéciale)
-m.EffectsAxes1_1=provoque des dégâts de zone
-m.EffectsAxes2_0=Coup critiques
-m.EffectsAxes2_1=double les dégâts
-m.EffectsAxes3_0=Maîtrise de la hache (niveau 500)
-m.EffectsAxes3_1=Augmente les dégâts
-m.AbilLockAxes1=Débloqué au niveau 500 (Maîtrise de la hache)
-m.AbilBonusAxes1_0=Maîtrise de la hache
-m.AbilBonusAxes1_1=4 Blessures en bonus
-m.AxesCritChance=[[RED]]Chances de coup critique : [[YELLOW]]{0}%
-m.AxesSkullLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
-m.SkillSwords=ÉPÉE
-m.XPGainSwords=Attaque des monstres
-m.EffectsSwords1_0=Contre-Attaque
-m.EffectsSwords1_1=Renvoie 50% des degats subis
-m.EffectsSwords2_0=Lame crantée (capacité spéciale)
-m.EffectsSwords2_1=25% de dégâts et saignements succesifs.
-m.EffectsSwords3_0=Lame crantée avec saignement+
-m.EffectsSwords3_1=5 saignements
-m.EffectsSwords4_0=Parer
-m.EffectsSwords4_1=Annule les dommages
-m.EffectsSwords5_0=Saignement
-m.EffectsSwords5_1=provoque un saignement répété
-m.SwordsCounterAttChance=[[RED]]Chances de Contre-Attaque : [[YELLOW]]{0}%
-m.SwordsBleedLength=[[RED]]Nombre de saignements : [[YELLOW]]{0}
-m.SwordsBleedChance=[[RED]]Chances de provoquer des saignements : [[YELLOW]]{0} %
-m.SwordsParryChance=[[RED]]Chances de parer : [[YELLOW]]{0} %
-m.SwordsSSLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
-m.SwordsTickNote=[[GRAY]]NOTE: [[YELLOW]]1 saignement va durer 2 secondes
-m.SkillAcrobatics=ACROBATIE
-m.XPGainAcrobatics=Chuter
-m.EffectsAcrobatics1_0=Roulade
-m.EffectsAcrobatics1_1=Réduit ou annule les dommages
-m.EffectsAcrobatics2_0=Super roulade
-m.EffectsAcrobatics2_1=Roulade deux fois plus efficace
-m.EffectsAcrobatics3_0=Esquive
-m.EffectsAcrobatics3_1=Dommages reduits de moitié
-m.AcrobaticsRollChance=[[RED]]Chances de roulade : [[YELLOW]]{0}%
-m.AcrobaticsGracefulRollChance=[[RED]]Chances de super roulade: [[YELLOW]]{0}%
-m.AcrobaticsDodgeChance=[[RED]]Chances d'esquiver : [[YELLOW]]{0}%
-m.SkillMining=MINAGE
-m.XPGainMining=Miner de la roche et des minerais
-m.EffectsMining1_0=Super Breaker (capacité spéciale)
-m.EffectsMining1_1=Augmente la vitesse et triple les chances de trouver un butin
-m.EffectsMining2_0=Double Butin
-m.EffectsMining2_1=Double le butin normal
-m.MiningDoubleDropChance=[[RED]]Chances de Double Butin: [[YELLOW]]{0}%
-m.MiningSuperBreakerLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
-m.SkillRepair=RÉPARATION
-m.XPGainRepair=Réparer des objets
-m.EffectsRepair1_0=Réparer
-m.EffectsRepair1_1=Réparation d'outils & Armures en Fer
-m.EffectsRepair2_0=Maître en réparation
-m.EffectsRepair2_1=Augmente le nombre de réparations possibles
-m.EffectsRepair3_0=Super Réparation
-m.EffectsRepair3_1=Double l'efficacité
-m.EffectsRepair4_0=Réparation du Diamant (requiert niveau {0})
-m.EffectsRepair4_1=Réparation des outils & armures en diamant
-m.RepairRepairMastery=[[RED]]Maître en réparation : [[YELLOW]]{0}% de durabilité restaurée
-m.RepairSuperRepairChance=[[RED]]Chances de Super Réparation : [[YELLOW]]{0}%
-m.SkillUnarmed=MAINS NUES
-m.XPGainUnarmed=Attaquer des monstres sans armes
-m.EffectsUnarmed1_0=Berserk (capacité spéciale)
-m.EffectsUnarmed1_1=+50% de dégâts, brise les matériaux faibles
-m.EffectsUnarmed2_0=Désarmer (les joueurs)
-m.EffectsUnarmed2_1=Vole l'objet que l'ennemi a dans la main
-m.EffectsUnarmed3_0=Apprenti du désarmement
-m.EffectsUnarmed3_1=Plus de dégâts
-m.EffectsUnarmed4_0=Maîtrise du désarmement
-m.EffectsUnarmed4_1=Beaucoup plus de dégâts
-m.EffectsUnarmed5_0=Déviation des flèches
-m.EffectsUnarmed5_1=Dévie les flèches qui vous foncent dessus
-m.AbilLockUnarmed1=Débloqué au niveau 250 (Apprenti du désarmement)
-m.AbilLockUnarmed2=Débloqué au niveau 500 (Maîtrise du désarmement)
-m.AbilBonusUnarmed1_0=Apprenti du désarmement
-m.AbilBonusUnarmed1_1=+2 dégâts
-m.AbilBonusUnarmed2_0=Maîtrise du désarmement
-m.AbilBonusUnarmed2_1=+4 dégâts
-m.UnarmedArrowDeflectChance=[[RED]]Chances dévier les flèches : [[YELLOW]]{0}%
-m.UnarmedDisarmChance=[[RED]]Chances de Désarmer : [[YELLOW]]{0}%
-m.UnarmedBerserkLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
-m.SkillHerbalism=Herboristerie
-m.XPGainHerbalism=Récoler des herbes
-m.EffectsHerbalism1_0=Main verte (capacité spéciale)
-m.EffectsHerbalism1_1=répand la main verte, 3x Butin
-m.EffectsHerbalism2_0=Main verte (Blé)
-m.EffectsHerbalism2_1=Auto-plantes du blé lors de la récolte
-m.EffectsHerbalism3_0=Main verte (Cobblestone)
-m.EffectsHerbalism3_1=Transforme la Cobble en Mossy avec des graines
-m.EffectsHerbalism4_0=Nouriture+
-m.EffectsHerbalism4_1=Modifie la santé reçue via le pain / ragoût
-m.EffectsHerbalism5_0=Double butin (Toutes cultures)
-m.EffectsHerbalism5_1=Double les récoltes
-m.HerbalismGreenTerraLength=[[RED]]Durée de la capacité spéciale : [[YELLOW]]{0}s
-m.HerbalismGreenThumbChance=[[RED]]Cances d'obtenir la main verte : [[YELLOW]]{0}%
-m.HerbalismGreenThumbStage=[[RED]]Main verte par niveaux : [[YELLOW]] Wheat grows in stage {0}
-m.HerbalismDoubleDropChance=[[RED]]Chances du Double Butin : [[YELLOW]]{0}%
-m.HerbalismFoodPlus=[[RED]]Nourriture+ (Rang {0}): [[YELLOW]]{0} plus nourissant
-m.SkillExcavation=EXCAVATION
-m.XPGainExcavation=Creuser et trouver des trésors
-m.EffectsExcavation1_0=Super broyeur (capacité spéciale)
-m.EffectsExcavation1_1=3x Butin, 3x XP, +Vitesse
-m.EffectsExcavation2_0=Chercheur de trésors
-m.EffectsExcavation2_1=Capacité de trouver un trésor
-m.ExcavationGreenTerraLength=[[RED]]Durée de la capacité spéciale : [[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 revient vers vous...
-mcPlayerListener.AbilitiesOff=Capacité spéciale désactivée
-mcPlayerListener.AbilitiesOn=Capacité spéciale activée
-mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**CAPACITÉ RECHARGÉE**
-mcPlayerListener.AcrobaticsSkill=[[YELLOW]]Acrobatie (/Acrobatics) :
-mcPlayerListener.ArcherySkill=[[YELLOW]]Tir a l'arc (/Archery) :
-mcPlayerListener.AxesSkill=[[YELLOW]]Hache (/Axes) :
-mcPlayerListener.ExcavationSkill=[[YELLOW]]Excavation (/Excavation):
-mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO godMode désactivé
-mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO godMode activé
-mcPlayerListener.GreenThumb=[[GREEN]]**MAIN VERTE**
-mcPlayerListener.GreenThumbFail=[[RED]]**MAIN VERTE A ECHOUÉ**
-mcPlayerListener.HerbalismSkill=[[YELLOW]]Herboriste (/Herbalism) :
-mcPlayerListener.MiningSkill=[[YELLOW]]Minage (/Mining):
-mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Votre point de spawn a été éffacé.
-mcPlayerListener.MyspawnNotExist=[[RED]]Dormez dans un lit pour définir votre point de spawn.
-mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Votre point de spawn a été enregistré ici.
-mcPlayerListener.MyspawnTimeNotice=Vous devez attendre {0}m {1}s avant d'utiliser votre spawn
-mcPlayerListener.NoPermission=Vous n'avez pas les permissions nécessaires.
-mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Si vous n'avez pas accès à une compé, elle ne sera pas affichée ici.
-mcPlayerListener.NotInParty=[[RED]]Vous n'êtes pas dans un groupe.
-mcPlayerListener.InviteSuccess=[[GREEN]]L'invitation a été envoyée avec succès.
-mcPlayerListener.ReceivedInvite1=[[RED]]ALERTE: [[GREEN]]Vous avez reçu une invitation pour le groupe {0} de la part de {1}
-mcPlayerListener.ReceivedInvite2=[[YELLOW]]Tapez [[GREEN]]/{0}[[YELLOW]] pour accepter l'invitation
-mcPlayerListener.InviteAccepted=[[GREEN]]Invite acceptée. Vous avez rejoint le groupe {0}
-mcPlayerListener.NoInvites=[[RED]]Vous n'avez pas d'invitation pour le moment
-mcPlayerListener.YouAreInParty=[[GREEN]]Vous êtes dans le groupe {0}
-mcPlayerListener.PartyMembers=[[GREEN]]Membres du groupe
-mcPlayerListener.LeftParty=[[RED]]Vous avez quitté le groupe
-mcPlayerListener.JoinedParty=Votre groupe: {0}
-mcPlayerListener.PartyChatOn=Chat de Groupe uniquement [[GREEN]]On
-mcPlayerListener.PartyChatOff=Chat de Groupe 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 & Misa
-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 (/Repair) :
-mcPlayerListener.SwordsSkill=[[YELLOW]]Epee (/Swords) :
-mcPlayerListener.TamingSkill=[[YELLOW]]Dressage (/Taming) :
-mcPlayerListener.UnarmedSkill=[[YELLOW]]Mains nues (/Unarmed) :
-mcPlayerListener.WoodcuttingSkill=[[YELLOW]]Bucheron (/Woodcutting):
-mcPlayerListener.YourStats=[[GREEN]]Vos statistiques
-Party.InformedOnJoin={0} [[GREEN]] a rejoint votre groupe
-Party.InformedOnQuit={0} [[GREEN]] a quitté votre groupe
-Skills.YourGreenTerra=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Main verte [[GREEN]]est rechargée
-Skills.YourTreeFeller=[[GREEN]]Votre capacitée spéciale [[YELLOW]]L'abatteur d'arbres [[GREEN]]est rechargée
-Skills.YourSuperBreaker=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Super Breaker[[GREEN]]est rechargée
-Skills.YourSerratedStrikes=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Epee cranté [[GREEN]]est rechargée
-Skills.YourBerserk=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Berserk [[GREEN]]est rechargée
-Skills.YourSkullSplitter=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Fendeur de crânes [[GREEN]]est rechargée
-Skills.YourGigaDrillBreaker=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Super broyeur [[GREEN]]est rechargée
-Skills.TooTired=[[RED]]Vous êtes trop fatigué pour utiliser cette capacité pour l'instant.
-Skills.ReadyHoe=[[GREEN]]**Votre bêche est chargée**
-Skills.LowerHoe=[[GRAY]]Votre bêche s'est déchargée..
-Skills.ReadyAxe=[[GREEN]]**Votre hache est chargée**
-Skills.LowerAxe=[[GRAY]]Votre hache s'est déchargée..
-Skills.ReadyFists=[[GREEN]]**Vos poings sont chargés**
-Skills.LowerFists=[[GRAY]]Vos poings se sont déchargés..
-Skills.ReadyPickAxe=[[GREEN]]**Votre pioche est chargée**
-Skills.LowerPickAxe=[[GRAY]]Votre pioche s'est déchargée..
-Skills.ReadyShovel=[[GREEN]]**Votre pelle est chargée**
-Skills.LowerShovel=[[GRAY]]Votre pelle s'est déchargée..
-Skills.ReadySword=[[GREEN]]**Votre épée est chargée**
-Skills.LowerSword=[[GRAY]]Votre épée s'est déchargée..
-Skills.BerserkOn=[[GREEN]]**BERSERK ACTIVATED**
-Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Berserk!
-Skills.GreenTerraOn=[[GREEN]]**Compétence [[YELLOW]]Main Verte [[GREEN]]activée**
-Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Main verte !
-Skills.TreeFellerOn=[[GREEN]]**Compétence [[YELLOW]]L'abatteur d'Arbres [[GREEN]]activée**
-Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Abatteur d'Arbres !
-Skills.SuperBreakerOn=[[GREEN]]**Compétence [[YELLOW]]Super Breaker [[GREEN]]activée**
-Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Super Breaker !
-Skills.SerratedStrikesOn=[[GREEN]]**Compétence [[YELLOW]]Lame Crantée [[GREEN]]activée**
-Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Lame crantée !
-Skills.SkullSplitterOn=[[GREEN]]**Compétence [[YELLOW]]Fendeur de crânes [[GREEN]]activée**
-Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Fendeur de crânes !
-Skills.GigaDrillBreakerOn=[[GREEN]]**Compétence [[YELLOW]]Super Broyeur [[GREEN]]activée**
-Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Super broyeur !
-Skills.GreenTerraOff=[[RED]]**Compétence [[YELLOW]]Main Verte [[GREEN]]terminée**
-Skills.TreeFellerOff=[[RED]]**Compétence [[YELLOW]]L'abatteur d'Arbres [[GREEN]]terminée**
-Skills.SuperBreakerOff=[[RED]]**Compétence [[YELLOW]]Super Breaker [[GREEN]]terminée**
-Skills.SerratedStrikesOff=[[RED]]**Compétence [[YELLOW]]Lame Crantée [[GREEN]]terminée**
-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 acrobatie 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 épée 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 bucherônage a augmenté de {0}. Total ({1})
-Skills.RepairUp=[[YELLOW]]La competence réparation a augmenté de {0}. Total ({1})
-Skills.ExcavationUp=[[YELLOW]]La competence excavation a augmenté de {0}. Total ({1})
-Skills.FeltEasy=[[GRAY]]That felt easy.
-Skills.StackedItems=[[DARK_RED]]Vous ne pouvez pas réparer les objets empilés
-Skills.NeedMore=[[DARK_RED]]Vous devez en avoir plus
-Skills.AdeptDiamond=[[DARK_RED]]Vous n'avez pas encore le niveau nécessaire pour réparer du diamant
-Skills.FullDurability=[[GRAY]]Cet objet est déjà en bonne état.
-Skills.Disarmed=[[DARK_RED]]Vous avez été désarmé !
-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=NIVEAU [[GREEN]]{0} - [[DARK_AQUA]]XP : [[YELLOW]][[[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]]]
-Combat.BeastLore=[[GREEN]]**Connaissances des bêtes**
-Combat.BeastLoreOwner=[[DARK_AQUA]]Propriétaire ([[RED]]{0}[[DARK_AQUA]])
-Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Vie ([[GREEN]]{0}[[DARK_AQUA]]/20)
-Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Vie ([[GREEN]]{0}[[DARK_AQUA]]/8)
-mcMMO.Description=[[DARK_AQUA]]Q: QU'EST-CE QUE C'EST ?,[[GOLD]]mcMMO est un plugin RPG [[RED]]OPEN SOURCE[[GOLD]] pour Bukkit créé par [[BLUE]]nossr50,[[GOLD]]mcMMO ajoute beaucoup de compétences dans Minecraft,[[GOLD]]Vous pouvez gagner de l'expérience de différentes façons,[[GOLD]]Vous devriez taper [[GREEN]]/NOM_COMPETENCE[[GOLD]] pour en savoir plus.,[[DARK_AQUA]]Q: QU'EST-CE QUE ÇA FAIT?,[[GOLD]]Par exemple... en [[DARK_AQUA]]Minant[[GOLD]] Vous allez recevoir des bénéfices comme,[[RED]]le Double Butin[[GOLD]] ou la compétence [[RED]]Super Breaker[[GOLD]] qui lorsqu'elle est,[[GOLD]]activée avec clique droit permet de miner vite, sa durée,[[GOLD]]dépend du niveau de votre compétence. Améliorer [[BLUE]]Le Minage,[[GOLD]]Est aussi simple que de mine des ressources précieuses !,[[DARK_AQUA]]Q: QU'EST-CE QUE ÇA VEUT DIRE ?,[[GOLD]]Presque toutes les compétences dans [[GREEN]]mcMMO[[GOLD]] Sont des nouveaux trucs cools!.,[[GOLD]]Tapez [[GREEN]]/{0}[[GOLD]] pour trouver les commandes,[[GOLD]]Le but de mcMMO est de créer une expérience RPG de qualité.,[[DARK_AQUA]]Q: OÙ JE PEUX SUGGÉRER DES IDÉES !?,[[DARK_AQUA]]bit.ly/MCmmoIDEA,[[DARK_AQUA]]Q: COMMENT JE FAIS CI ET ÇA?,[[RED]]MERCI [[GOLD]]d'aller voir le wiki ! [[DARK_AQUA]]mcmmo.wikia.com
-Party.Locked=[[RED]]Party is locked, only party leader may invite.
-Party.IsntLocked=[[GRAY]]Party is not locked
-Party.Unlocked=[[GRAY]]Party is unlocked
-Party.Help1=[[RED]]Proper usage is [[YELLOW]]/{0} [[WHITE]][[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
-Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]
-Party.Help3=[[RED]]Consult /{0} ? for more information
-Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]to join a party or [[WHITE]]'q' [[YELLOW]]to quit
-Party.Help5=[[RED]]To lock your party use [[YELLOW]]/{0} [[WHITE]]lock
-Party.Help6=[[RED]]To unlock your party use [[YELLOW]]/{0} [[WHITE]]unlock
-Party.Help7=[[RED]]To password protect your party use [[YELLOW]]/{0} [[WHITE]]password
-Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick
-Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner
-Party.NotOwner=[[DARK_RED]]You are not the party owner
-Party.InvalidName=[[DARK_RED]]That is not a valid party name
-Party.PasswordSet=[[GREEN]]Party password set to {0}
-Party.CouldNotKick=[[DARK_RED]]Could not kick player {0}
-Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
-Party.CouldNotSetOwner=[[DARK_RED]]Could not set owner to {0}
-Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
-Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
-Commands.xprate.proper3=[[RED]]Enter true or false for the second value
-Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
-Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
-Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
-Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
-Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
-Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
-m.SkillAlchemy=ALCHEMY
-m.SkillEnchanting=ENCHANTING
-m.SkillFishing=FISHING
-mcPlayerListener.AlchemySkill=Alchemy:
-mcPlayerListener.EnchantingSkill=Enchanting:
-mcPlayerListener.FishingSkill=Fishing:
-Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
-Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
-Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
-Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
-Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
-Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
-Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
-m.EffectsRepair5_0=Arcane Forging
-m.EffectsRepair5_1=Repair magic items
-m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
-m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
-m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
-m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
-m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
-Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
-Fishing.ItemFound=[[GRAY]]Treasure found!
-m.SkillFishing=FISHING
-m.XPGainFishing=Fishing (Go figure!)
-m.EffectsFishing1_0=Treasure Hunter (Passive)
-m.EffectsFishing1_1=Fish up misc objects
-m.EffectsFishing2_0=Magic Hunter
-m.EffectsFishing2_1=Find Enchanted Items
-m.EffectsFishing3_0=Shake (vs. Entities)
-m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
-m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
-m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
-m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
-m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
-m.TamingSummon=[[GREEN]]Summoning complete
-m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
-m.EffectsTaming7_0=Call of the Wild
-m.EffectsTaming7_1=Summon a wolf to your side
+Combat.WolfExamine=[[GREEN]]**Vous examinez le loup avec le Beast Lore**
+Combat.WolfShowMaster=[[DARK_GREEN]]Le Maître des bêtes \: {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 flou. Vous vous sentez étourdi.
+Combat.TargetDazed=La cible a été [[DARK_RED]]Étourdi
+Combat.WolfNoMaster=[[GRAY]]Cette bête n'a pas de maître...
+Combat.WolfHealth=[[GREEN]]Cette bête a {0} points de vie
+Combat.StruckByGore=[[RED]]**FRAPPÉ JUSQU'AU SANG**
+Combat.Gore=[[GREEN]]**SANG**
+Combat.ArrowDeflect=[[WHITE]]**FLÈCHE DEVIÉE**
+Item.ChimaeraWingFail=**CHIMAERA WING a échoué \!**
+Item.ChimaeraWingPass=**CHIMAERA WING**
+Item.InjuredWait=Vous avez été blessé récemment et vous devez attendre pour utiliser ça. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]Vous avez besoin de plus de plumes..
+m.mccPartyCommands=[[GREEN]]--COMMANDES GROUPE--
+m.mccParty=[party name] [[RED]]- Créer / Rejoindre un groupe
+m.mccPartyQ=[[RED]]- Vous quitter la partie en cours
+m.mccPartyToggle=[[RED]] - Active le Chat de groupe
+m.mccPartyInvite=[player name] [[RED]]- Envoyer une invitation
+m.mccPartyAccept=[[RED]]- Accepter l'invitation
+m.mccPartyTeleport=[party member name] [[RED]]- Vous téléporte à un membre du groupe
+m.mccOtherCommands=[[GREEN]]--AUTRES COMMANDES--
+m.mccStats=- Voir vos statistiques
+m.mccLeaderboards=- Classements
+m.mccMySpawn=- Vous téléporte à votre spawn
+m.mccClearMySpawn=- Éfface votre point de spawn
+m.mccToggleAbility=- Active les capacités spéciales avec 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=- Mode dieu
+m.mccSkillInfo=[skillname] [[RED]]- Afficher des informations détaillées d'une compétence
+m.mccModDescription=[[RED]]- Affiche la description de mcMMO
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]POUR GAGNER DE l'XP: [[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 STATS
+m.SkillTaming=DRESSAGE
+m.XPGainTaming=Attaquer avec un loup
+m.EffectsTaming1_0=Connaissance des bêtes
+m.EffectsTaming1_1=Inspecte un loup avec un os
+m.EffectsTaming2_0=Morsures
+m.EffectsTaming2_1=Des coups critiques lors d'une morsure
+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 aux Cactus, à la lave et aux chutes.
+m.EffectsTaming5_0=Epaisse fourrure
+m.EffectsTaming5_1=Réduction dégâts, Résistance au feu
+m.EffectsTaming6_0=Résistance aux chocs
+m.EffectsTaming6_1=Réduction des dommages explosifs
+m.AbilLockTaming1=Débloqué au niveau 100 (Conscient de l'environnement)
+m.AbilLockTaming2=Débloqué au niveau 250 (Épaisse fourrure)
+m.AbilLockTaming3=Débloqué au niveau 500 (Résistance aux chocs)
+m.AbilLockTaming4=Débloqué au niveau 750 (Griffes aiguisées)
+m.AbilBonusTaming1_0=Conscient de l'environnement
+m.AbilBonusTaming1_1=Le loup évite le danger
+m.AbilBonusTaming2_0=Epaisse fourrure
+m.AbilBonusTaming2_1=Réduit de moitié les dommages \+ résistance au feu
+m.AbilBonusTaming3_0=Résistance aux chocs
+m.AbilBonusTaming3_1=divise par 6 les dégats d'explosions
+m.AbilBonusTaming4_0=Griffes aiguisées
+m.AbilBonusTaming4_1=+2 Dommages
+m.TamingGoreChance=[[RED]]Chances de Morsure: [[YELLOW]]{0}%
+m.SkillWoodCutting=BÛCHERONNAGE
+m.XPGainWoodCutting=Abattre des arbres
+m.EffectsWoodCutting1_0=L'abatteur d'arbres (capacité spéciale)
+m.EffectsWoodCutting1_1=Faire exploser les arbres
+m.EffectsWoodCutting2_0=Souffleur de feuilles
+m.EffectsWoodCutting2_1=Détruire plus de feuilles
+m.EffectsWoodCutting3_0=Double Butin
+m.EffectsWoodCutting3_1=Double le butin normal
+m.AbilLockWoodCutting1=Débloqué au niveau 100 (Souffleur de feuilles)
+m.AbilBonusWoodCutting1_0=Soufler les feuilles
+m.AbilBonusWoodCutting1_1=Détruire plus de feuilles
+m.WoodCuttingDoubleDropChance=[[RED]]Chance de double butin: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
+m.SkillArchery=TIR À L'ARC
+m.XPGainArchery=Attaquer les monstres
+m.EffectsArchery1_0=Allumage
+m.EffectsArchery1_1=25% de chances que l'ennemi s'enflamme
+m.EffectsArchery2_0=Étourdir (les joueurs)
+m.EffectsArchery2_1=Étourdi les joueurs
+m.EffectsArchery3_0=Dégâts+
+m.EffectsArchery3_1=Augmente les dégâts
+m.EffectsArchery4_0=Récupération de flèches
+m.EffectsArchery4_1=Chances de récupérer vos flèches sur un cadavre
+m.ArcheryDazeChance=[[RED]]Chances d'étourdir : [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Chances de récupération des flèches : [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Durée du feu : [[YELLOW]]{0} secondes
+m.ArcheryDamagePlus=[[RED]]Dégâts+ (Rang {0}): [[YELLOW]]Bonus de {0} dommages
+m.SkillAxes=HACHE
+m.XPGainAxes=Attaquer des monstres
+m.EffectsAxes1_0=Fendeur de crânes (capacité spéciale)
+m.EffectsAxes1_1=provoque des dégâts de zone
+m.EffectsAxes2_0=Coup critiques
+m.EffectsAxes2_1=double les dégâts
+m.EffectsAxes3_0=Maîtrise de la hache (niveau 500)
+m.EffectsAxes3_1=Augmente les dégâts
+m.AbilLockAxes1=Débloqué au niveau 500 (Maîtrise de la hache)
+m.AbilBonusAxes1_0=Maîtrise de la hache
+m.AbilBonusAxes1_1=4 Blessures en bonus
+m.AxesCritChance=[[RED]]Chances de coup critique : [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
+m.SkillSwords=ÉPÉE
+m.XPGainSwords=Attaque des monstres
+m.EffectsSwords1_0=Contre-Attaque
+m.EffectsSwords1_1=Renvoie 50% des degats subis
+m.EffectsSwords2_0=Lame crantée (capacité spéciale)
+m.EffectsSwords2_1=25% de dégâts et saignements succesifs.
+m.EffectsSwords3_0=Lame crantée avec saignement+
+m.EffectsSwords3_1=5 saignements
+m.EffectsSwords4_0=Parer
+m.EffectsSwords4_1=Annule les dommages
+m.EffectsSwords5_0=Saignement
+m.EffectsSwords5_1=provoque un saignement répété
+m.SwordsCounterAttChance=[[RED]]Chances de Contre-Attaque : [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Nombre de saignements : [[YELLOW]]{0}
+m.SwordsBleedChance=[[RED]]Chances de provoquer des saignements : [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Chances de parer : [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]NOTE: [[YELLOW]]1 saignement va durer 2 secondes
+m.SkillAcrobatics=ACROBATIE
+m.XPGainAcrobatics=Chuter
+m.EffectsAcrobatics1_0=Roulade
+m.EffectsAcrobatics1_1=Réduit ou annule les dommages
+m.EffectsAcrobatics2_0=Super roulade
+m.EffectsAcrobatics2_1=Roulade deux fois plus efficace
+m.EffectsAcrobatics3_0=Esquive
+m.EffectsAcrobatics3_1=Dommages reduits de moitié
+m.AcrobaticsRollChance=[[RED]]Chances de roulade : [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Chances de super roulade: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Chances d'esquiver : [[YELLOW]]{0}%
+m.SkillMining=MINAGE
+m.XPGainMining=Miner de la roche et des minerais
+m.EffectsMining1_0=Super Breaker (capacité spéciale)
+m.EffectsMining1_1=Augmente la vitesse et triple les chances de trouver un butin
+m.EffectsMining2_0=Double Butin
+m.EffectsMining2_1=Double le butin normal
+m.MiningDoubleDropChance=[[RED]]Chances de Double Butin: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
+m.SkillRepair=RÉPARATION
+m.XPGainRepair=Réparer des objets
+m.EffectsRepair1_0=Réparer
+m.EffectsRepair1_1=Réparation d'outils & Armures en Fer
+m.EffectsRepair2_0=Maître en réparation
+m.EffectsRepair2_1=Augmente le nombre de réparations possibles
+m.EffectsRepair3_0=Super Réparation
+m.EffectsRepair3_1=Double l'efficacité
+m.EffectsRepair4_0=Réparation du Diamant (requiert niveau {0})
+m.EffectsRepair4_1=Réparation des outils & armures en diamant
+m.RepairRepairMastery=[[RED]]Maître en réparation : [[YELLOW]]{0}% de durabilité restaurée
+m.RepairSuperRepairChance=[[RED]]Chances de Super Réparation : [[YELLOW]]{0}%
+m.SkillUnarmed=MAINS NUES
+m.XPGainUnarmed=Attaquer des monstres sans armes
+m.EffectsUnarmed1_0=Berserk (capacité spéciale)
+m.EffectsUnarmed1_1=+50% de dégâts, brise les matériaux faibles
+m.EffectsUnarmed2_0=Désarmer (les joueurs)
+m.EffectsUnarmed2_1=Vole l'objet que l'ennemi a dans la main
+m.EffectsUnarmed3_0=Apprenti du désarmement
+m.EffectsUnarmed3_1=Plus de dégâts
+m.EffectsUnarmed4_0=Maîtrise du désarmement
+m.EffectsUnarmed4_1=Beaucoup plus de dégâts
+m.EffectsUnarmed5_0=Déviation des flèches
+m.EffectsUnarmed5_1=Dévie les flèches qui vous foncent dessus
+m.AbilLockUnarmed1=Débloqué au niveau 250 (Apprenti du désarmement)
+m.AbilLockUnarmed2=Débloqué au niveau 500 (Maîtrise du désarmement)
+m.AbilBonusUnarmed1_0=Apprenti du désarmement
+m.AbilBonusUnarmed1_1=+2 dégâts
+m.AbilBonusUnarmed2_0=Maîtrise du désarmement
+m.AbilBonusUnarmed2_1=+4 dégâts
+m.UnarmedArrowDeflectChance=[[RED]]Chances dévier les flèches : [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Chances de Désarmer : [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Durée de votre capacité spéciale : [[YELLOW]]{0}s
+m.SkillHerbalism=Herboristerie
+m.XPGainHerbalism=Récoler des herbes
+m.EffectsHerbalism1_0=Main verte (capacité spéciale)
+m.EffectsHerbalism1_1=répand la main verte, 3x Butin
+m.EffectsHerbalism2_0=Main verte (Blé)
+m.EffectsHerbalism2_1=Auto-plantes du blé lors de la récolte
+m.EffectsHerbalism3_0=Main verte (Cobblestone)
+m.EffectsHerbalism3_1=Transforme la Cobble en Mossy avec des graines
+m.EffectsHerbalism4_0=Nouriture+
+m.EffectsHerbalism4_1=Modifie la santé reçue via le pain / ragoût
+m.EffectsHerbalism5_0=Double butin (Toutes cultures)
+m.EffectsHerbalism5_1=Double les récoltes
+m.HerbalismGreenTerraLength=[[RED]]Durée de la capacité spéciale : [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Cances d'obtenir la main verte : [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Main verte par niveaux : [[YELLOW]] Wheat grows in stage {0}
+m.HerbalismDoubleDropChance=[[RED]]Chances du Double Butin : [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Nourriture+ (Rang {0}): [[YELLOW]]{0} plus nourissant
+m.SkillExcavation=EXCAVATION
+m.XPGainExcavation=Creuser et trouver des trésors
+m.EffectsExcavation1_0=Super broyeur (capacité spéciale)
+m.EffectsExcavation1_1=3x Butin, 3x XP, +Vitesse
+m.EffectsExcavation2_0=Chercheur de trésors
+m.EffectsExcavation2_1=Capacité de trouver un trésor
+m.ExcavationGreenTerraLength=[[RED]]Durée de la capacité spéciale : [[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 revient vers vous...
+mcPlayerListener.AbilitiesOff=Capacité spéciale désactivée
+mcPlayerListener.AbilitiesOn=Capacité spéciale activée
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**CAPACITÉ RECHARGÉE**
+mcPlayerListener.AcrobaticsSkill=[[YELLOW]]Acrobatie (/Acrobatics) :
+mcPlayerListener.ArcherySkill=[[YELLOW]]Tir a l'arc (/Archery) :
+mcPlayerListener.AxesSkill=[[YELLOW]]Hache (/Axes) :
+mcPlayerListener.ExcavationSkill=[[YELLOW]]Excavation (/Excavation):
+mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO godMode désactivé
+mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO godMode activé
+mcPlayerListener.GreenThumb=[[GREEN]]**MAIN VERTE**
+mcPlayerListener.GreenThumbFail=[[RED]]**MAIN VERTE A ECHOUÉ**
+mcPlayerListener.HerbalismSkill=[[YELLOW]]Herboriste (/Herbalism) :
+mcPlayerListener.MiningSkill=[[YELLOW]]Minage (/Mining):
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Votre point de spawn a été éffacé.
+mcPlayerListener.MyspawnNotExist=[[RED]]Dormez dans un lit pour définir votre point de spawn.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Votre point de spawn a été enregistré ici.
+mcPlayerListener.MyspawnTimeNotice=Vous devez attendre {0}m {1}s avant d'utiliser votre spawn
+mcPlayerListener.NoPermission=Vous n'avez pas les permissions nécessaires.
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Si vous n'avez pas accès à une compé, elle ne sera pas affichée ici.
+mcPlayerListener.NotInParty=[[RED]]Vous n'êtes pas dans un groupe.
+mcPlayerListener.InviteSuccess=[[GREEN]]L'invitation a été envoyée avec succès.
+mcPlayerListener.ReceivedInvite1=[[RED]]ALERTE: [[GREEN]]Vous avez reçu une invitation pour le groupe {0} de la part de {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Tapez [[GREEN]]/{0}[[YELLOW]] pour accepter l'invitation
+mcPlayerListener.InviteAccepted=[[GREEN]]Invite acceptée. Vous avez rejoint le groupe {0}
+mcPlayerListener.NoInvites=[[RED]]Vous n'avez pas d'invitation pour le moment
+mcPlayerListener.YouAreInParty=[[GREEN]]Vous êtes dans le groupe {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Membres du groupe
+mcPlayerListener.LeftParty=[[RED]]Vous avez quitté le groupe
+mcPlayerListener.JoinedParty=Votre groupe: {0}
+mcPlayerListener.PartyChatOn=Chat de Groupe uniquement [[GREEN]]On
+mcPlayerListener.PartyChatOff=Chat de Groupe 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 & Misa
+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 (/Repair) :
+mcPlayerListener.SwordsSkill=[[YELLOW]]Epee (/Swords) :
+mcPlayerListener.TamingSkill=[[YELLOW]]Dressage (/Taming) :
+mcPlayerListener.UnarmedSkill=[[YELLOW]]Mains nues (/Unarmed) :
+mcPlayerListener.WoodcuttingSkill=[[YELLOW]]Bucheron (/Woodcutting):
+mcPlayerListener.YourStats=[[GREEN]]Vos statistiques
+Party.InformedOnJoin={0} [[GREEN]] a rejoint votre groupe
+Party.InformedOnQuit={0} [[GREEN]] a quitté votre groupe
+Skills.YourGreenTerra=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Main verte [[GREEN]]est rechargée
+Skills.YourTreeFeller=[[GREEN]]Votre capacitée spéciale [[YELLOW]]L'abatteur d'arbres [[GREEN]]est rechargée
+Skills.YourSuperBreaker=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Super Breaker[[GREEN]]est rechargée
+Skills.YourSerratedStrikes=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Epee cranté [[GREEN]]est rechargée
+Skills.YourBerserk=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Berserk [[GREEN]]est rechargée
+Skills.YourSkullSplitter=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Fendeur de crânes [[GREEN]]est rechargée
+Skills.YourGigaDrillBreaker=[[GREEN]]Votre capacitée spéciale [[YELLOW]]Super broyeur [[GREEN]]est rechargée
+Skills.TooTired=[[RED]]Vous êtes trop fatigué pour utiliser cette capacité pour l'instant.
+Skills.ReadyHoe=[[GREEN]]**Votre bêche est chargée**
+Skills.LowerHoe=[[GRAY]]Votre bêche s'est déchargée..
+Skills.ReadyAxe=[[GREEN]]**Votre hache est chargée**
+Skills.LowerAxe=[[GRAY]]Votre hache s'est déchargée..
+Skills.ReadyFists=[[GREEN]]**Vos poings sont chargés**
+Skills.LowerFists=[[GRAY]]Vos poings se sont déchargés..
+Skills.ReadyPickAxe=[[GREEN]]**Votre pioche est chargée**
+Skills.LowerPickAxe=[[GRAY]]Votre pioche s'est déchargée..
+Skills.ReadyShovel=[[GREEN]]**Votre pelle est chargée**
+Skills.LowerShovel=[[GRAY]]Votre pelle s'est déchargée..
+Skills.ReadySword=[[GREEN]]**Votre épée est chargée**
+Skills.LowerSword=[[GRAY]]Votre épée s'est déchargée..
+Skills.BerserkOn=[[GREEN]]**BERSERK ACTIVATED**
+Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Berserk!
+Skills.GreenTerraOn=[[GREEN]]**Compétence [[YELLOW]]Main Verte [[GREEN]]activée**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Main verte !
+Skills.TreeFellerOn=[[GREEN]]**Compétence [[YELLOW]]L'abatteur d'Arbres [[GREEN]]activée**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Abatteur d'Arbres !
+Skills.SuperBreakerOn=[[GREEN]]**Compétence [[YELLOW]]Super Breaker [[GREEN]]activée**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Super Breaker !
+Skills.SerratedStrikesOn=[[GREEN]]**Compétence [[YELLOW]]Lame Crantée [[GREEN]]activée**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Lame crantée !
+Skills.SkullSplitterOn=[[GREEN]]**Compétence [[YELLOW]]Fendeur de crânes [[GREEN]]activée**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Fendeur de crânes !
+Skills.GigaDrillBreakerOn=[[GREEN]]**Compétence [[YELLOW]]Super Broyeur [[GREEN]]activée**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilisé la compétence spéciale [[RED]]Super broyeur !
+Skills.GreenTerraOff=[[RED]]**Compétence [[YELLOW]]Main Verte [[GREEN]]terminée**
+Skills.TreeFellerOff=[[RED]]**Compétence [[YELLOW]]L'abatteur d'Arbres [[GREEN]]terminée**
+Skills.SuperBreakerOff=[[RED]]**Compétence [[YELLOW]]Super Breaker [[GREEN]]terminée**
+Skills.SerratedStrikesOff=[[RED]]**Compétence [[YELLOW]]Lame Crantée [[GREEN]]terminée**
+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 acrobatie 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 épée 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 bucherônage a augmenté de {0}. Total ({1})
+Skills.RepairUp=[[YELLOW]]La competence réparation a augmenté de {0}. Total ({1})
+Skills.ExcavationUp=[[YELLOW]]La competence excavation a augmenté de {0}. Total ({1})
+Skills.FeltEasy=[[GRAY]]That felt easy.
+Skills.StackedItems=[[DARK_RED]]Vous ne pouvez pas réparer les objets empilés
+Skills.NeedMore=[[DARK_RED]]Vous devez en avoir plus
+Skills.AdeptDiamond=[[DARK_RED]]Vous n'avez pas encore le niveau nécessaire pour réparer du diamant
+Skills.FullDurability=[[GRAY]]Cet objet est déjà en bonne état.
+Skills.Disarmed=[[DARK_RED]]Vous avez été désarmé !
+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=NIVEAU [[GREEN]]{0} - [[DARK_AQUA]]XP : [[YELLOW]][[[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]]]
+Combat.BeastLore=[[GREEN]]**Connaissances des bêtes**
+Combat.BeastLoreOwner=[[DARK_AQUA]]Propriétaire ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Vie ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Vie ([[GREEN]]{0}[[DARK_AQUA]]/8)
+mcMMO.Description=[[DARK_AQUA]]Q: QU'EST-CE QUE C'EST ?,[[GOLD]]mcMMO est un plugin RPG [[RED]]OPEN SOURCE[[GOLD]] pour Bukkit créé par [[BLUE]]nossr50,[[GOLD]]mcMMO ajoute beaucoup de compétences dans Minecraft,[[GOLD]]Vous pouvez gagner de l'expérience de différentes façons,[[GOLD]]Vous devriez taper [[GREEN]]/NOM_COMPETENCE[[GOLD]] pour en savoir plus.,[[DARK_AQUA]]Q: QU'EST-CE QUE ÇA FAIT?,[[GOLD]]Par exemple... en [[DARK_AQUA]]Minant[[GOLD]] Vous allez recevoir des bénéfices comme,[[RED]]le Double Butin[[GOLD]] ou la compétence [[RED]]Super Breaker[[GOLD]] qui lorsqu'elle est,[[GOLD]]activée avec clique droit permet de miner vite, sa durée,[[GOLD]]dépend du niveau de votre compétence. Améliorer [[BLUE]]Le Minage,[[GOLD]]Est aussi simple que de mine des ressources précieuses !,[[DARK_AQUA]]Q: QU'EST-CE QUE ÇA VEUT DIRE ?,[[GOLD]]Presque toutes les compétences dans [[GREEN]]mcMMO[[GOLD]] Sont des nouveaux trucs cools!.,[[GOLD]]Tapez [[GREEN]]/{0}[[GOLD]] pour trouver les commandes,[[GOLD]]Le but de mcMMO est de créer une expérience RPG de qualité.,[[DARK_AQUA]]Q: OÙ JE PEUX SUGGÉRER DES IDÉES !?,[[DARK_AQUA]]bit.ly/MCmmoIDEA,[[DARK_AQUA]]Q: COMMENT JE FAIS CI ET ÇA?,[[RED]]MERCI [[GOLD]]d'aller voir le wiki ! [[DARK_AQUA]]mcmmo.wikia.com
+Party.Locked=[[RED]]Party is locked, only party leader may invite.
+Party.IsntLocked=[[GRAY]]Party is not locked
+Party.Unlocked=[[GRAY]]Party is unlocked
+Party.Help1=[[RED]]Proper usage is [[YELLOW]]/{0} [[WHITE]][[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
+Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]
+Party.Help3=[[RED]]Consult /{0} ? for more information
+Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]to join a party or [[WHITE]]'q' [[YELLOW]]to quit
+Party.Help5=[[RED]]To lock your party use [[YELLOW]]/{0} [[WHITE]]lock
+Party.Help6=[[RED]]To unlock your party use [[YELLOW]]/{0} [[WHITE]]unlock
+Party.Help7=[[RED]]To password protect your party use [[YELLOW]]/{0} [[WHITE]]password
+Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick
+Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner
+Party.NotOwner=[[DARK_RED]]You are not the party owner
+Party.InvalidName=[[DARK_RED]]That is not a valid party name
+Party.PasswordSet=[[GREEN]]Party password set to {0}
+Party.CouldNotKick=[[DARK_RED]]Could not kick player {0}
+Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
+Party.CouldNotSetOwner=[[DARK_RED]]Could not set owner to {0}
+Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
+Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
+Commands.xprate.proper3=[[RED]]Enter true or false for the second value
+Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
+Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
+Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
+Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
+Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
+Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
+m.SkillAlchemy=ALCHEMY
+m.SkillEnchanting=ENCHANTING
+m.SkillFishing=FISHING
+mcPlayerListener.AlchemySkill=Alchemy:
+mcPlayerListener.EnchantingSkill=Enchanting:
+mcPlayerListener.FishingSkill=Fishing:
+Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
+Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
+Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
+Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
+Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
+Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
+Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
+m.EffectsRepair5_0=Arcane Forging
+m.EffectsRepair5_1=Repair magic items
+m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
+m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
+m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
+m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
+m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
+Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
+Fishing.ItemFound=[[GRAY]]Treasure found!
+m.SkillFishing=FISHING
+m.XPGainFishing=Fishing (Go figure!)
+m.EffectsFishing1_0=Treasure Hunter (Passive)
+m.EffectsFishing1_1=Fish up misc objects
+m.EffectsFishing2_0=Magic Hunter
+m.EffectsFishing2_1=Find Enchanted Items
+m.EffectsFishing3_0=Shake (vs. Entities)
+m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
+m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
+m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
+m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
+m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
+m.TamingSummon=[[GREEN]]Summoning complete
+m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
+m.EffectsTaming7_0=Call of the Wild
+m.EffectsTaming7_1=Summon a wolf to your side
m.EffectsTaming7_2=[[GRAY]]COTW HOW-TO: Crouch and right click with {0} Bones in hand
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/locale_nl.properties b/src/main/java/com/gmail/nossr50/locale/locale_nl.properties
similarity index 98%
rename from src/com/gmail/nossr50/locale/locale_nl.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_nl.properties
index e88df5a39..1af8c2798 100644
--- a/src/com/gmail/nossr50/locale/locale_nl.properties
+++ b/src/main/java/com/gmail/nossr50/locale/locale_nl.properties
@@ -1,396 +1,396 @@
-# 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)
-mcMMO.Description=[[DARK_AQUA]]Q: WHAT IS IT?,[[GOLD]]mcMMO is an [[RED]]OPEN SOURCE[[GOLD]] RPG mod for Bukkit by [[BLUE]]nossr50,[[GOLD]]There are many skills added by mcMMO to Minecraft.,[[GOLD]]You can gain experience in many different ways,[[GOLD]]You will want to type [[GREEN]]/SKILLNAME[[GOLD]] to find out more about a skill.,[[DARK_AQUA]]Q: WHAT DOES IT DO?,[[GOLD]]As an example... in [[DARK_AQUA]]Mining[[GOLD]] you will receive benefits like,[[RED]]Double Drops[[GOLD]] or the ability [[RED]]Super Breaker[[GOLD]] which when,[[GOLD]]activated by right-click allows fast Mining during its duration,[[GOLD]]which is related to your skill level. Leveling [[BLUE]]Mining,[[GOLD]]is as simple as mining precious materials!,[[DARK_AQUA]]Q: WHAT DOES THIS MEAN?,[[GOLD]]Almost all of the skills in [[GREEN]]mcMMO[[GOLD]] add cool new things!.,[[GOLD]]You can also type [[GREEN]]/{0}[[GOLD]] to find out commands,[[GOLD]]The goal of mcMMO is to provide a quality RPG experience.,[[DARK_AQUA]]Q: WHERE DO I SUGGEST NEW STUFF!?,[[GOLD]]On the mcMMO thread in the bukkit forums!,[[DARK_AQUA]]Q: HOW DO I DO THIS AND THAT?,[[RED]]PLEASE [[GOLD]]checkout the wiki! [[DARK_AQUA]]mcmmo.wikia.com
-Party.Locked=[[RED]]Party is locked, only party leader may invite.
-Party.IsntLocked=[[GRAY]]Party is not locked
-Party.Unlocked=[[GRAY]]Party is unlocked
-Party.Help1=[[RED]]Proper usage is [[YELLOW]]/{0} [[WHITE]][[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
-Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]
-Party.Help3=[[RED]]Consult /{0} ? for more information
-Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]to join a party or [[WHITE]]'q' [[YELLOW]]to quit
-Party.Help5=[[RED]]To lock your party use [[YELLOW]]/{0} [[WHITE]]lock
-Party.Help6=[[RED]]To unlock your party use [[YELLOW]]/{0} [[WHITE]]unlock
-Party.Help7=[[RED]]To password protect your party use [[YELLOW]]/{0} [[WHITE]]password
-Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick
-Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner
-Party.NotOwner=[[DARK_RED]]You are not the party owner
-Party.InvalidName=[[DARK_RED]]That is not a valid party name
-Party.PasswordSet=[[GREEN]]Party password set to {0}
-Party.CouldNotKick=[[DARK_RED]]Could not kick player {0}
-Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
-Party.CouldNotSetOwner=[[DARK_RED]]Could not set owner to {0}
-Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
-Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
-Commands.xprate.proper3=[[RED]]Enter true or false for the second value
-Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
-Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
-Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
-Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
-Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
-Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
-m.SkillAlchemy=ALCHEMY
-m.SkillEnchanting=ENCHANTING
-m.SkillFishing=FISHING
-mcPlayerListener.AlchemySkill=Alchemy:
-mcPlayerListener.EnchantingSkill=Enchanting:
-mcPlayerListener.FishingSkill=Fishing:
-Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
-Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
-Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
-Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
-Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
-Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
-Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
-m.EffectsRepair5_0=Arcane Forging
-m.EffectsRepair5_1=Repair magic items
-m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
-m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
-m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
-m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
-m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
-Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
-Fishing.ItemFound=[[GRAY]]Treasure found!
-m.SkillFishing=FISHING
-m.XPGainFishing=Fishing (Go figure!)
-m.EffectsFishing1_0=Treasure Hunter (Passive)
-m.EffectsFishing1_1=Fish up misc objects
-m.EffectsFishing2_0=Magic Hunter
-m.EffectsFishing2_1=Find Enchanted Items
-m.EffectsFishing3_0=Shake (vs. Entities)
-m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
-m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
-m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
-m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
-m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
-m.TamingSummon=[[GREEN]]Summoning complete
-m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
-m.EffectsTaming7_0=Call of the Wild
-m.EffectsTaming7_1=Summon a wolf to your side
+# 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)
+mcMMO.Description=[[DARK_AQUA]]Q: WHAT IS IT?,[[GOLD]]mcMMO is an [[RED]]OPEN SOURCE[[GOLD]] RPG mod for Bukkit by [[BLUE]]nossr50,[[GOLD]]There are many skills added by mcMMO to Minecraft.,[[GOLD]]You can gain experience in many different ways,[[GOLD]]You will want to type [[GREEN]]/SKILLNAME[[GOLD]] to find out more about a skill.,[[DARK_AQUA]]Q: WHAT DOES IT DO?,[[GOLD]]As an example... in [[DARK_AQUA]]Mining[[GOLD]] you will receive benefits like,[[RED]]Double Drops[[GOLD]] or the ability [[RED]]Super Breaker[[GOLD]] which when,[[GOLD]]activated by right-click allows fast Mining during its duration,[[GOLD]]which is related to your skill level. Leveling [[BLUE]]Mining,[[GOLD]]is as simple as mining precious materials!,[[DARK_AQUA]]Q: WHAT DOES THIS MEAN?,[[GOLD]]Almost all of the skills in [[GREEN]]mcMMO[[GOLD]] add cool new things!.,[[GOLD]]You can also type [[GREEN]]/{0}[[GOLD]] to find out commands,[[GOLD]]The goal of mcMMO is to provide a quality RPG experience.,[[DARK_AQUA]]Q: WHERE DO I SUGGEST NEW STUFF!?,[[GOLD]]On the mcMMO thread in the bukkit forums!,[[DARK_AQUA]]Q: HOW DO I DO THIS AND THAT?,[[RED]]PLEASE [[GOLD]]checkout the wiki! [[DARK_AQUA]]mcmmo.wikia.com
+Party.Locked=[[RED]]Party is locked, only party leader may invite.
+Party.IsntLocked=[[GRAY]]Party is not locked
+Party.Unlocked=[[GRAY]]Party is unlocked
+Party.Help1=[[RED]]Proper usage is [[YELLOW]]/{0} [[WHITE]][[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
+Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]
+Party.Help3=[[RED]]Consult /{0} ? for more information
+Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]to join a party or [[WHITE]]'q' [[YELLOW]]to quit
+Party.Help5=[[RED]]To lock your party use [[YELLOW]]/{0} [[WHITE]]lock
+Party.Help6=[[RED]]To unlock your party use [[YELLOW]]/{0} [[WHITE]]unlock
+Party.Help7=[[RED]]To password protect your party use [[YELLOW]]/{0} [[WHITE]]password
+Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick
+Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner
+Party.NotOwner=[[DARK_RED]]You are not the party owner
+Party.InvalidName=[[DARK_RED]]That is not a valid party name
+Party.PasswordSet=[[GREEN]]Party password set to {0}
+Party.CouldNotKick=[[DARK_RED]]Could not kick player {0}
+Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
+Party.CouldNotSetOwner=[[DARK_RED]]Could not set owner to {0}
+Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
+Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
+Commands.xprate.proper3=[[RED]]Enter true or false for the second value
+Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
+Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
+Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
+Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
+Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
+Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
+m.SkillAlchemy=ALCHEMY
+m.SkillEnchanting=ENCHANTING
+m.SkillFishing=FISHING
+mcPlayerListener.AlchemySkill=Alchemy:
+mcPlayerListener.EnchantingSkill=Enchanting:
+mcPlayerListener.FishingSkill=Fishing:
+Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
+Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
+Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
+Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
+Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
+Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
+Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
+m.EffectsRepair5_0=Arcane Forging
+m.EffectsRepair5_1=Repair magic items
+m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
+m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
+m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
+m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
+m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
+Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
+Fishing.ItemFound=[[GRAY]]Treasure found!
+m.SkillFishing=FISHING
+m.XPGainFishing=Fishing (Go figure!)
+m.EffectsFishing1_0=Treasure Hunter (Passive)
+m.EffectsFishing1_1=Fish up misc objects
+m.EffectsFishing2_0=Magic Hunter
+m.EffectsFishing2_1=Find Enchanted Items
+m.EffectsFishing3_0=Shake (vs. Entities)
+m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
+m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
+m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
+m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
+m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
+m.TamingSummon=[[GREEN]]Summoning complete
+m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
+m.EffectsTaming7_0=Call of the Wild
+m.EffectsTaming7_1=Summon a wolf to your side
m.EffectsTaming7_2=[[GRAY]]COTW HOW-TO: Crouch and right click with {0} Bones in hand
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/locale_pl.properties b/src/main/java/com/gmail/nossr50/locale/locale_pl.properties
similarity index 98%
rename from src/com/gmail/nossr50/locale/locale_pl.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_pl.properties
index d4cafca5e..d54dc7cad 100644
--- a/src/com/gmail/nossr50/locale/locale_pl.properties
+++ b/src/main/java/com/gmail/nossr50/locale/locale_pl.properties
@@ -1,390 +1,390 @@
-Combat.WolfExamine=[[GREEN]]**Zbadales wilka uzywajac wiedzy o zwierzetach**
-Combat.WolfShowMaster=[[DARK_GREEN]]Wlascicielem wilka jest \: {0}
-Combat.Ignition=[[RED]]**PODPALENIE**
-Combat.BurningArrowHit=[[DARK_RED]]Zostales trafiony plonaca strzala\!
-Combat.TouchedFuzzy=[[DARK_RED]]Zostales oszolomiony.
-Combat.TargetDazed=Cel zostal [[DARK_RED]]oszolomiony.
-Combat.WolfNoMaster=[[GRAY]]Ten wilk nie ma wlasciciela...
-Combat.WolfHealth=[[GREEN]]Ten wilk ma {0} zycia.
-Combat.StruckByGore=[[RED]]**WYKRWAWIENIE**
-Combat.Gore=[[GREEN]]**KRWOTOK**
-Combat.ArrowDeflect=[[WHITE]]**ODBICIE STRZALY**
-Item.ChimaeraWingFail=**UZYCIE SKRZYDLA CHIMERY NIE POWIODLO SIE\!**
-Item.ChimaeraWingPass=**UZYLES SKRZYDLA CHIMERY**
-Item.InjuredWait=Zostales ranny. Musisz poczekac [[YELLOW]]{0}[[WHITE]] sekund przed uzyciem.
-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 druzynowy.
-m.mccPartyInvite=[player name] [[RED]]- Wysyla zaproszenie do druzyny.
-m.mccPartyAccept=[[RED]]- Akceptuje zaproszenie do druzyny.
-m.mccPartyTeleport=[imie czlonka druzyny] [[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 twojego 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 szczegolowe informacje o graczu.
-m.mccMmoedit=[nazwa gracza] [umiejetnosc] [nowa wartosc] [[RED]]- Modyfikuje cel.
-m.mccMcGod=- Niesmiertelnosc.
-m.mccSkillInfo=/[nazwa umiejetnosci (np. Mining)] [[RED]]- Wyswietla informacje na temat 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=Utrate zdrowia wilkow.
-m.EffectsTaming1_0=Wiedza o zwierzetach
-m.EffectsTaming1_1=Uderz koscia aby sprawdzic wilka.
-m.EffectsTaming2_0=Krwotok
-m.EffectsTaming2_1=Atak krytyczny powodujacy silny krwotok.
-m.EffectsTaming3_0=Ostre pazury
-m.EffectsTaming3_1=Zwiekszenie obrazen.
-m.EffectsTaming4_0=Sztuka przetrwania
-m.EffectsTaming4_1=Unikanie kaktusow i lawy. Zawsze spada na 4 lapy.
-m.EffectsTaming5_0=Grube futro
-m.EffectsTaming5_1=Wieksza odpornosc na obrazenia i ogien.
-m.EffectsTaming6_0=Odpornosc na eksplozje
-m.EffectsTaming6_1=Wieksza odpornosc na obrazenia od wybuchow.
-m.AbilLockTaming1=Aby odblokowac sztuke przetrwania, zdobadz 100 poziom.
-m.AbilLockTaming2=Aby odblokowac grube futro, zdobadz 250 poziom.
-m.AbilLockTaming3=Aby odblokowac odpornosc na eksplozje, zdobadz 500 poziom.
-m.AbilLockTaming4=Aby odblokowac ostre pazury, zdobadz 750 poziom.
-m.AbilBonusTaming1_0=Sztuka przetrwania
-m.AbilBonusTaming1_1=Wilki unikaja zagrozen.
-m.AbilBonusTaming2_0=Grube futro
-m.AbilBonusTaming2_1=Obrazenia ogolne i od ognia zmniejszone do polowy.
-m.AbilBonusTaming3_0=Odpornosc na eksplozje
-m.AbilBonusTaming3_1=Wybuchy zadaja 1/6 obrazen.
-m.AbilBonusTaming4_0=Ostre pazury
-m.AbilBonusTaming4_1=+2 do obrazen
-m.TamingGoreChance=[[RED]]Szansa na spowodowanie krwotoku: [[YELLOW]]{0}%
-m.SkillWoodCutting=DRWALNICTWO
-m.XPGainWoodCutting=Scinanie drzew
-m.EffectsWoodCutting1_0=Powalacz drzew (UMIEJETNOSC)
-m.EffectsWoodCutting1_1=Blyskawicznie scina drzewa.
-m.EffectsWoodCutting2_0=Zdmuchiwacz lisci
-m.EffectsWoodCutting2_1=Zdmuchuje wszystkie liscie.
-m.EffectsWoodCutting3_0=Fachowa wycinka
-m.EffectsWoodCutting3_1=Pozyskujesz dwa razy wiecej drewna z jednego drzewa. Nic sie nie zmarnuje.
-m.AbilLockWoodCutting1=Aby odblokowac zdmuchiwacza lisci, zdobadz 100 poziom.
-m.AbilBonusWoodCutting1_0=Zdmuchiwacz lisci
-m.AbilBonusWoodCutting1_1=Zdmuchuje wszystkie liscie.
-m.WoodCuttingDoubleDropChance=[[RED]]Szansa na fachowa wycinke: [[YELLOW]]{0}%
-m.WoodCuttingTreeFellerLength=[[RED]]Czas trwania powalacza drzew: [[YELLOW]]{0} sekund
-m.SkillArchery=LUCZNICTWO
-m.XPGainArchery=Atakowanie potworow przy uzyciu luku.
-m.EffectsArchery1_0=Podpalenie
-m.EffectsArchery1_1=25% szansa na podpalenie wroga.
-m.EffectsArchery2_0=Oszolomienie(Tylko na graczy)
-m.EffectsArchery2_1=Dezorientuje przeciwnika.
-m.EffectsArchery3_0=Wieksze obrazenia
-m.EffectsArchery3_1=Zwieksza obrazenia zadawane lukiem.
-m.EffectsArchery4_0=Odzyskiwanie strzal
-m.EffectsArchery4_1=Szansa na odzyskanie strzal z cial wrogow.
-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]]Wieksze obrazenia (Rank{0}): [[YELLOW]]Obrazenia zwiekszone o {0}
-m.SkillAxes=TOPORY
-m.XPGainAxes=Atakowanie potworow przy uzyciu toporow.
-m.EffectsAxes1_0=Berserk (UMIEJETNOSC)
-m.EffectsAxes1_1=Zadaje obrazenia wszystkiemu dookola.
-m.EffectsAxes2_0=Krytyczne uderzenie
-m.EffectsAxes2_1=Potrafisz trafic wroga tam gdzie boli, zadajac podwojne obrazenia.
-m.EffectsAxes3_0=Doswiadczony wojownik
-m.EffectsAxes3_1=Mordowanie setek potworow zwiekszylo twoja sile i celnosc. Zadajesz wiecej obrazen.
-m.AbilLockAxes1=Aby odblokowac doswiadczonego wojownika, zdobadz 500 poziom.
-m.AbilBonusAxes1_0=Doswiadczony wojownik
-m.AbilBonusAxes1_1=Zadajesz dodatkowe 4 punkty obrazen.
-m.AxesCritChance=[[RED]]Szansa na krytyczne uderzenie: [[YELLOW]]{0}%
-m.AxesSkullLength=[[RED]]Dlugosc berserku: [[YELLOW]]{0} sekund
-m.SkillSwords=MIECZE
-m.XPGainSwords=Atakowanie potworow przy uzyciu mieczy.
-m.EffectsSwords1_0=Kontratak
-m.EffectsSwords1_1=Nikt bezkarnie cie nie zrani. Oddajesz przeciwnikowi 50% otrzymanych obrazen.
-m.EffectsSwords2_0=Furia ostrzy (UMIEJETNOSC)
-m.EffectsSwords2_1=25% obrazen obszarowych powodujacych krwotok.
-m.EffectsSwords3_0=Krwawa furia ostrzy
-m.EffectsSwords3_1=Celujesz w zyly i tetnice, pododujac jak najwiecej ran.
-m.EffectsSwords4_0=Blok
-m.EffectsSwords4_1=Calkowicie blokujesz cios.
-m.EffectsSwords5_0=Krwotok
-m.EffectsSwords5_1=Powoduje krwawiace otwarte rany.
-m.SwordsCounterAttChance=[[RED]]Szansa na kontratak: [[YELLOW]]{0}%
-m.SwordsBleedLength=[[RED]]Rany zadawane krwotokiem: [[YELLOW]]{0} ran.
-m.SwordsBleedChance=[[RED]]Szansa na spowodowanie krwotoku: [[YELLOW]]{0} %
-m.SwordsParryChance=[[RED]]Szansa na blok: [[YELLOW]]{0} %
-m.SwordsSSLength=[[RED]]Dlugosc furii ostrzy: [[YELLOW]]{0} sekund
-m.SwordsTickNote=[[GRAY]]UWAGA: [[YELLOW]]1 rana goi sie co 2 sekundy.
-m.SkillAcrobatics=AKROBATYKA
-m.XPGainAcrobatics=Spadanie
-m.EffectsAcrobatics1_0=Przewrot
-m.EffectsAcrobatics1_1=Zmniejsza badz niweluje obrazenia.
-m.EffectsAcrobatics2_0=Idealny przewrot
-m.EffectsAcrobatics2_1=Dwa razy skuteczniejszy od normalnego.
-m.EffectsAcrobatics3_0=Unik
-m.EffectsAcrobatics3_1=Redukuje obrazenia o polowe.
-m.AcrobaticsRollChance=[[RED]]Szansa na przewrot: [[YELLOW]]{0}%
-m.AcrobaticsGracefulRollChance=[[RED]]Szansa na idealny przewrot: [[YELLOW]]{0}%
-m.AcrobaticsDodgeChance=[[RED]]Szansa na unik: [[YELLOW]]{0}%
-m.SkillMining=GORNICTWO
-m.XPGainMining=Wykopywanie kamienia i roznych rud.
-m.EffectsMining1_0=Super kopacz (UMIEJETNOSC)
-m.EffectsMining1_1=Kopiesz sybciej i marnujesz trzy razy mniej rudy.
-m.EffectsMining2_0=Fachowy wykop
-m.EffectsMining2_1=Pozyskujesz dwa razy wiecej rudy. Nic sie nie marnuje.
-m.MiningDoubleDropChance=[[RED]]Szansa na fachowy wykop: [[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=Zwiekszona liczba napraw.
-m.EffectsRepair3_0=Fachowa naprawa
-m.EffectsRepair3_1=Naprawiles przedmiot dwa razy lepiej niz zwykle.
-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 fachowa naprawe: [[YELLOW]]{0}%
-m.SkillUnarmed=KUNG-FU
-m.XPGainUnarmed=Atakowanie potworow bez broni.
-m.EffectsUnarmed1_0=Wejscie Smoka (UMIEJETNOSC)
-m.EffectsUnarmed1_1=Polowe wieksze obrazenia, niszczy slabe przedmioty.
-m.EffectsUnarmed2_0=Rozbrojenie (Tylko graczy)
-m.EffectsUnarmed2_1=Przeciwnik upuszcza trzymany w reku przedmiot.
-m.EffectsUnarmed3_0=Wsciekle Piesci
-m.EffectsUnarmed3_1=Znaczne zwiekszenie zadawanych obrazen.
-m.EffectsUnarmed4_0=Droga Smoka
-m.EffectsUnarmed4_1=Zwiekszenie zadawanych obrazen.
-m.EffectsUnarmed5_0=Odbicie strzaly
-m.EffectsUnarmed5_1=Golymi rekoma potrafisz odbic nadlatujaca strzale.
-m.AbilLockUnarmed1=Aby odblokowac Droge Smoka, zdobadz 250 poziom.
-m.AbilLockUnarmed2=Aby odblokowac Wsciekle Piesci, zdobadz 500 poziom.
-m.AbilBonusUnarmed1_0=Droga Smoka
-m.AbilBonusUnarmed1_1=Zadawane obrazenia zwiekszone o 2.
-m.AbilBonusUnarmed2_0=Wsciekle Piesci
-m.AbilBonusUnarmed2_1=Zadawane obrazenia zwiekszone o 4.
-m.UnarmedArrowDeflectChance=[[RED]]Szansa na odbicie strzaly: [[YELLOW]]{0}%
-m.UnarmedDisarmChance=[[RED]]Szansa na rozbrojenie: [[YELLOW]]{0}%
-m.UnarmedBerserkLength=[[RED]]Dlugosc Wejscia Smoka: [[YELLOW]]{0} sekund.
-m.SkillHerbalism=ZIELARSTWO
-m.XPGainHerbalism=Zbieranie ziol.
-m.EffectsHerbalism1_0=Zielona ziemia (UMIEJETNOSC)
-m.EffectsHerbalism1_1=Rozprzestrzenia ziemie, potraja plony.
-m.EffectsHerbalism2_0=Wprawne rece (zboze)
-m.EffectsHerbalism2_1=Zbierajac zboze, od razu sadzisz nasiona.
-m.EffectsHerbalism3_0=Wprawne rece (bruk)
-m.EffectsHerbalism3_1=Zamienia bruk w porosniety mchem kamien z nasionami.
-m.EffectsHerbalism4_0=Lepsze jedzenie
-m.EffectsHerbalism4_1=Modyfikowana genetycznie zywnosc jest zdrowsza. Chleb i zupa chlebowa regeneruja wiecej zdrowia.
-m.EffectsHerbalism5_0=Udane zbiory
-m.EffectsHerbalism5_1=Dwa razy wieksze plony wszystkich roslin.
-m.HerbalismGreenTerraLength=[[RED]]Czas trwania zielonej ziemi: [[YELLOW]]{0} sekund
-m.HerbalismGreenThumbChance=[[RED]]Szansa na wprawne rece: [[YELLOW]]{0}%
-m.HerbalismGreenThumbStage=[[RED]]Poziom wprawnych rak: [[YELLOW]] Zboze rosnie na poziomie {0}
-m.HerbalismDoubleDropChance=[[RED]]Szansa na udane zbiory: [[YELLOW]]{0}%
-m.HerbalismFoodPlus=[[RED]]Lepsze jedzenie (Ranga{0}): [[YELLOW]]Dodatkowe {0} zdrowia
-m.SkillExcavation=WYKOPALISKA
-m.XPGainExcavation=Kopanie i odnajdywanie skarbow.
-m.EffectsExcavation1_0=Super Szybka Saperka (UMIEJETNOSC)
-m.EffectsExcavation1_1=Zwiekszona szybkosc kopania i trzykrotnie wiekszy urobek i zdobyte doswiadczenie.
-m.EffectsExcavation2_0=Lowca Skarbow
-m.EffectsExcavation2_1=Umiejetnosc znajdywania skarbow
-m.ExcavationGreenTerraLength=[[RED]]Czas trwania Super Szybkiej Saperki: [[YELLOW]]{0} sekund.
-mcBlockListener.PlacedAnvil=[[DARK_RED]]Polozyles kowadlo, ktore pozwala na naprawe przedmiotow.
-mcEntityListener.WolfComesBack=[[DARK_GRAY]]Twoj wilk przybiega z powrotem.
-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=Wykopaliska:
-mcPlayerListener.GodModeDisabled=[[YELLOW]]Niesmiertelnosc wylaczona
-mcPlayerListener.GodModeEnabled=[[YELLOW]]Niesmiertelnosc wlaczona
-mcPlayerListener.GreenThumb=[[GREEN]]**UZYLES ZIELONEJ ZIEMI**
-mcPlayerListener.GreenThumbFail=[[RED]]**UZYWANIE ZIELONEJ ZIEMI NIE POWIODLO SIE**
-mcPlayerListener.HerbalismSkill=Zielarstwo:
-mcPlayerListener.MiningSkill=Gornictwo:
-mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Twoj spawn zostal usuniety.
-mcPlayerListener.MyspawnNotExist=[[RED]]Musisz ustawic 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]]Umiejetnosci, ktorych nie mozesz uzyc nie sa wyswietlane.
-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 zaproszen do zadnej 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=Kung-fu:
-mcPlayerListener.WoodcuttingSkill=Drwalnictwo:
-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]]furia ostrzy [[GREEN]]zostala naladowana!
-Skills.YourBerserk=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Wejscie Smoka [[GREEN]]zostala naladowana!
-Skills.YourSkullSplitter=[[GREEN]]Twoja umiejetnosc [[YELLOW]]berserk [[GREEN]]zostala naladowana!
-Skills.YourGigaDrillBreaker=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Super Szybka Saperka [[GREEN]]zostala naladowana!
-Skills.TooTired=[[RED]]Musisz odpoczac zanim ponownie uzyjesz tej umiejetnosci.
-Skills.ReadyHoe=[[GREEN]]**PODNOSISZ SWOJA MOTYKE**
-Skills.LowerHoe=[[GRAY]]**OPUSZCZASZ SWOJA MOTYKE**
-Skills.ReadyAxe=[[GREEN]]**PODNOSISZ SWOJ TOPOR**
-Skills.LowerAxe=[[GRAY]]**OPUSZCZASZ SWOJ TOPOR**
-Skills.ReadyFists=[[GREEN]]**PODNOSISZ SWOJE PIESCI**
-Skills.LowerFists=[[GRAY]]**OPUSZCZASZ SWOJE PIESCI**
-Skills.ReadyPickAxe=[[GREEN]]**PODNOSISZ SWOJ KILOF**
-Skills.LowerPickAxe=[[GRAY]]**OPUSZCZASZ SWOJ KILOF**
-Skills.ReadyShovel=[[GREEN]]**PODNOSISZ SWOJA LOPATE**
-Skills.LowerShovel=[[GRAY]]**OPUSZCZASZ SWOJA LOPATE**
-Skills.ReadySword=[[GREEN]]**PODNOSISZ SWOJ MIECZ**
-Skills.LowerSword=[[GRAY]]**OPUSZCZASZ SWOJ MIECZ**
-Skills.BerserkOn=[[GREEN]]**ROBISZ WEJSCIE SMOKA**
-Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] zrobil [[RED]]Wejscie Smoka!
-Skills.GreenTerraOn=[[GREEN]]**ZIELONA ZIEMIA**
-Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]zielonej ziemi!
-Skills.TreeFellerOn=[[GREEN]]**POWALACZ DRZEW**
-Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]powalacza drzew!
-Skills.SuperBreakerOn=[[GREEN]]**SUPER KOPACZ**
-Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Super Kopacza!
-Skills.SerratedStrikesOn=[[GREEN]]**FURIA OSTRZY**
-Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]furii ostrzy!
-Skills.SkullSplitterOn=[[GREEN]]**BERSERK**
-Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] wpadl w [[RED]]berserk!
-Skills.GigaDrillBreakerOn=[[GREEN]]**SUPER SZYBKA SAPERKA**
-Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Super Szybkiej Saperki!
-Skills.GreenTerraOff=[[RED]]**Zielona ziemia zostala zuzyta**
-Skills.TreeFellerOff=[[RED]]**Powalacz drzew zostal zuzyty**
-Skills.SuperBreakerOff=[[RED]]**Super Kopacz zostal zuzyty**
-Skills.SerratedStrikesOff=[[RED]]**Furia ostrzy zostala zuzyta**
-Skills.BerserkOff=[[RED]]**Wejscie Smoka zostalo zuzyte**
-Skills.SkullSplitterOff=[[RED]]**Berserk zostal zuzyty**
-Skills.GigaDrillBreakerOff=[[RED]]**Super Szybka Saperka zostala zuzyta**
-Skills.TamingUp=[[YELLOW]]Umiejetnosc oswajania wzrosla o {0}. Razem ({1})
-Skills.AcrobaticsUp=[[YELLOW]]Umiejetnosci akrobatyczne wzrosly o {0}. Razem ({1})
-Skills.ArcheryUp=[[YELLOW]]Umiejetnosci lucznicze wzrosly o {0}. Razem ({1})
-Skills.SwordsUp=[[YELLOW]]Umiejetnosc uzywania mieczy wzrosla o {0}. Razem ({1})
-Skills.AxesUp=[[YELLOW]]Umiejetnosc uzywania toporow wzrosla o {0}. Razem ({1})
-Skills.UnarmedUp=[[YELLOW]]Znajomosc Kung-Fu wzrosla o {0}. Razem ({1})
-Skills.HerbalismUp=[[YELLOW]]Znajomosc zielarstwa wzrosla o {0}. Razem ({1})
-Skills.MiningUp=[[YELLOW]]Umiejetnosci gornicze wzrosly o {0}. Razem ({1})
-Skills.WoodcuttingUp=[[YELLOW]]Umiejetnosci drwalnicze wzrosly o {0}. Razem ({1})
-Skills.RepairUp=[[YELLOW]]Umiejetnosc naprawy wzrosla o {0}. Razem ({1})
-Skills.ExcavationUp=[[YELLOW]]Umiejetnosci wykopaliskowe wzrosly o {0}. Razem ({1})
-Skills.FeltEasy=[[GRAY]]To bylo proste.
-Skills.StackedItems=[[DARK_RED]]Nie mozesz naprawiac grup przedmiotow.
-Skills.NeedMore=[[DARK_RED]]Potrzebujesz wiecej
-Skills.AdeptDiamond=[[DARK_RED]]Nie potrafisz jeszcze naprawiac diamentow
-Skills.FullDurability=[[GRAY]]Ten przedmiot nie wymaga naprawy.
-Skills.Disarmed=[[DARK_RED]]Zostales rozbrojony!
-mcPlayerListener.SorcerySkill=Magia:
-m.SkillSorcery=MAGIA
-Sorcery.HasCast=[[GREEN]]**RZUCANIE ZAKLECIA**[[GOLD]]
-Sorcery.Current_Mana=[[DARK_AQUA]]Mana
-Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
-Sorcery.Cost=[[RED]][COST] {0} Many
-Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Brak Many [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
-Sorcery.Water.Thunder=PIORUN
-Sorcery.Curative.Self=ULECZ SIEBIE
-Sorcery.Curative.Other=ULECZ INNYCH
-m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]Doswiadczenia[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
-Combat.BeastLore=[[GREEN]]**WIEDZA O ZWIERZETACH**
-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)
-mcMMO.Description=[[DARK_AQUA]]P: Czym jest mcMMO?,[[GOLD]]mcMMO jest [[RED]]open source'owym[[GOLD]] RPG modem korzystajacym z Bukkita, autorstwa [[BLUE]]nossr50,[[GOLD]]mcMMO dodaje wiele umiejetnosci do Minecrafta.,[[GOLD]]Mozna rowniez zbierac doswiadczenie na rozne sposoby,[[GOLD]]Najlepiej wpisac [[GREEN]]/nazwaumiejetnosci[[GOLD]] aby dowiedziec sie wiecej o niej.,[[DARK_AQUA]]P: A co robi mcMMO?,[[GOLD]]Dla przykladu, [[DARK_AQUA]]gornictwo[[GOLD]] pozwala na [[RED]]zwiekszone zyski[[GOLD]] oraz daje mozliwosc [[RED]]szybszego kopania[[GOLD]], ktore mozna [[GOLD]]aktywowac prawym przyciskiem myszy i trwa dluzej [[GOLD]]im wyzszy masz poziom. Zdobywanie poziomow w [[BLUE]]gornictwie[[GOLD]] odbywa sie przez zwyczajne wykopywanie roznych mineralow.,[[DARK_AQUA]]P: Co to wszystko daje?,[[GOLD]]Prawie wszystkie umiejetnosci w [[GREEN]]mcMMO[[GOLD]] dodaja nowe fajne rzeczy!.,[[GOLD]]Wpisujac [[GREEN]]/{0}[[GOLD]] poznasz wszystkie dostepne polecenia,[[GOLD]]Celem mcMMO jest sprawienie aby Minecraft stal sie prawie eRPeGiem.,[[DARK_AQUA]]P: Mam genialny pomysl, dodasz to!?,[[GOLD]]Napisz w temacie mcMMO na forum bukkit i zobaczymy!,[[DARK_AQUA]]Q: A jak zrobic to albo tamto?,[[RED]]CZYTAJ [[GOLD]]strone wiki moda! [[DARK_AQUA]]mcmmo.wikia.com
-Party.Locked=[[RED]]Grupa jest zamknieta, tylko wlasciciel moze dodac graczy.
-Party.IsntLocked=[[GRAY]]Grupa jest otwarta dla wszystkich.
-Party.Unlocked=[[GRAY]]Grupa jest otwarta dla wszystkich.
-Party.Help1=[[RED]]Prawidlowe polecenie to [[YELLOW]]/{0} [[WHITE]][[YELLOW]] lub [[WHITE]]'q' [[YELLOW]]aby wyjsc.
-Party.Help2=[[RED]]Aby dolaczyc do grupy zabezpieczonej haslem wpisz[[YELLOW]]/{0} [[WHITE]]
-Party.Help3=[[RED]]Sprawdz /{0} ? aby dowiedziec sie wiecej.
-Party.Help4=[[RED]]Wpisz [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]aby dolaczyc do grupy lub [[WHITE]]'q' [[YELLOW]]aby z niej wyjsc.
-Party.Help5=[[RED]]Aby zamknac grupe wpisz [[YELLOW]]/{0} [[WHITE]]lock
-Party.Help6=[[RED]]Aby otworzyc zamknieta grupe wpisz [[YELLOW]]/{0} [[WHITE]]unlock
-Party.Help7=[[RED]]Aby zabezpieczyc grupe haslem wpisz [[YELLOW]]/{0} [[WHITE]]password
-Party.Help8=[[RED]]Aby wyrzucic gracza z grupy wpisz [[YELLOW]]/{0} [[WHITE]]kick
-Party.Help9=[[RED]]Aby przekazac wladze w grupie innej osobie wpisz [[YELLOW]]/{0} [[WHITE]]owner
-Party.NotOwner=[[DARK_RED]]Nie jestes wlascicielem tej grupy.
-Party.InvalidName=[[DARK_RED]]To nie jest dozwolona nazwa grupy.
-Party.PasswordSet=[[GREEN]]Haslo grupy zmienione na: {0}
-Party.CouldNotKick=[[DARK_RED]]Nie mozna wyrzucic gracza {0}
-Party.NotInYourParty=[[DARK_RED]]{0} nie jest czlonkiem twojej grupy.
-Party.CouldNotSetOwner=[[DARK_RED]]Nie mozna przekazac grupy do {0}
-Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
-Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
-Commands.xprate.proper3=[[RED]]Enter true or false for the second value
-Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
-Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
-Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
-Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
-Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
-Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
-m.SkillAlchemy=ALCHEMY
-m.SkillEnchanting=ENCHANTING
-m.SkillFishing=FISHING
-mcPlayerListener.AlchemySkill=Alchemy:
-mcPlayerListener.EnchantingSkill=Enchanting:
-mcPlayerListener.FishingSkill=Fishing:
-Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
-Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
-Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
-Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
-Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
-Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
-Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
-m.EffectsRepair5_0=Arcane Forging
-m.EffectsRepair5_1=Repair magic items
-m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
-m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
-m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
-m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
-m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
-Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
-Fishing.ItemFound=[[GRAY]]Treasure found!
-m.SkillFishing=FISHING
-m.XPGainFishing=Fishing (Go figure!)
-m.EffectsFishing1_0=Treasure Hunter (Passive)
-m.EffectsFishing1_1=Fish up misc objects
-m.EffectsFishing2_0=Magic Hunter
-m.EffectsFishing2_1=Find Enchanted Items
-m.EffectsFishing3_0=Shake (vs. Entities)
-m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
-m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
-m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
-m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
-m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
-m.TamingSummon=[[GREEN]]Summoning complete
-m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
-m.EffectsTaming7_0=Call of the Wild
-m.EffectsTaming7_1=Summon a wolf to your side
+Combat.WolfExamine=[[GREEN]]**Zbadales wilka uzywajac wiedzy o zwierzetach**
+Combat.WolfShowMaster=[[DARK_GREEN]]Wlascicielem wilka jest \: {0}
+Combat.Ignition=[[RED]]**PODPALENIE**
+Combat.BurningArrowHit=[[DARK_RED]]Zostales trafiony plonaca strzala\!
+Combat.TouchedFuzzy=[[DARK_RED]]Zostales oszolomiony.
+Combat.TargetDazed=Cel zostal [[DARK_RED]]oszolomiony.
+Combat.WolfNoMaster=[[GRAY]]Ten wilk nie ma wlasciciela...
+Combat.WolfHealth=[[GREEN]]Ten wilk ma {0} zycia.
+Combat.StruckByGore=[[RED]]**WYKRWAWIENIE**
+Combat.Gore=[[GREEN]]**KRWOTOK**
+Combat.ArrowDeflect=[[WHITE]]**ODBICIE STRZALY**
+Item.ChimaeraWingFail=**UZYCIE SKRZYDLA CHIMERY NIE POWIODLO SIE\!**
+Item.ChimaeraWingPass=**UZYLES SKRZYDLA CHIMERY**
+Item.InjuredWait=Zostales ranny. Musisz poczekac [[YELLOW]]{0}[[WHITE]] sekund przed uzyciem.
+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 druzynowy.
+m.mccPartyInvite=[player name] [[RED]]- Wysyla zaproszenie do druzyny.
+m.mccPartyAccept=[[RED]]- Akceptuje zaproszenie do druzyny.
+m.mccPartyTeleport=[imie czlonka druzyny] [[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 twojego 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 szczegolowe informacje o graczu.
+m.mccMmoedit=[nazwa gracza] [umiejetnosc] [nowa wartosc] [[RED]]- Modyfikuje cel.
+m.mccMcGod=- Niesmiertelnosc.
+m.mccSkillInfo=/[nazwa umiejetnosci (np. Mining)] [[RED]]- Wyswietla informacje na temat 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=Utrate zdrowia wilkow.
+m.EffectsTaming1_0=Wiedza o zwierzetach
+m.EffectsTaming1_1=Uderz koscia aby sprawdzic wilka.
+m.EffectsTaming2_0=Krwotok
+m.EffectsTaming2_1=Atak krytyczny powodujacy silny krwotok.
+m.EffectsTaming3_0=Ostre pazury
+m.EffectsTaming3_1=Zwiekszenie obrazen.
+m.EffectsTaming4_0=Sztuka przetrwania
+m.EffectsTaming4_1=Unikanie kaktusow i lawy. Zawsze spada na 4 lapy.
+m.EffectsTaming5_0=Grube futro
+m.EffectsTaming5_1=Wieksza odpornosc na obrazenia i ogien.
+m.EffectsTaming6_0=Odpornosc na eksplozje
+m.EffectsTaming6_1=Wieksza odpornosc na obrazenia od wybuchow.
+m.AbilLockTaming1=Aby odblokowac sztuke przetrwania, zdobadz 100 poziom.
+m.AbilLockTaming2=Aby odblokowac grube futro, zdobadz 250 poziom.
+m.AbilLockTaming3=Aby odblokowac odpornosc na eksplozje, zdobadz 500 poziom.
+m.AbilLockTaming4=Aby odblokowac ostre pazury, zdobadz 750 poziom.
+m.AbilBonusTaming1_0=Sztuka przetrwania
+m.AbilBonusTaming1_1=Wilki unikaja zagrozen.
+m.AbilBonusTaming2_0=Grube futro
+m.AbilBonusTaming2_1=Obrazenia ogolne i od ognia zmniejszone do polowy.
+m.AbilBonusTaming3_0=Odpornosc na eksplozje
+m.AbilBonusTaming3_1=Wybuchy zadaja 1/6 obrazen.
+m.AbilBonusTaming4_0=Ostre pazury
+m.AbilBonusTaming4_1=+2 do obrazen
+m.TamingGoreChance=[[RED]]Szansa na spowodowanie krwotoku: [[YELLOW]]{0}%
+m.SkillWoodCutting=DRWALNICTWO
+m.XPGainWoodCutting=Scinanie drzew
+m.EffectsWoodCutting1_0=Powalacz drzew (UMIEJETNOSC)
+m.EffectsWoodCutting1_1=Blyskawicznie scina drzewa.
+m.EffectsWoodCutting2_0=Zdmuchiwacz lisci
+m.EffectsWoodCutting2_1=Zdmuchuje wszystkie liscie.
+m.EffectsWoodCutting3_0=Fachowa wycinka
+m.EffectsWoodCutting3_1=Pozyskujesz dwa razy wiecej drewna z jednego drzewa. Nic sie nie zmarnuje.
+m.AbilLockWoodCutting1=Aby odblokowac zdmuchiwacza lisci, zdobadz 100 poziom.
+m.AbilBonusWoodCutting1_0=Zdmuchiwacz lisci
+m.AbilBonusWoodCutting1_1=Zdmuchuje wszystkie liscie.
+m.WoodCuttingDoubleDropChance=[[RED]]Szansa na fachowa wycinke: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Czas trwania powalacza drzew: [[YELLOW]]{0} sekund
+m.SkillArchery=LUCZNICTWO
+m.XPGainArchery=Atakowanie potworow przy uzyciu luku.
+m.EffectsArchery1_0=Podpalenie
+m.EffectsArchery1_1=25% szansa na podpalenie wroga.
+m.EffectsArchery2_0=Oszolomienie(Tylko na graczy)
+m.EffectsArchery2_1=Dezorientuje przeciwnika.
+m.EffectsArchery3_0=Wieksze obrazenia
+m.EffectsArchery3_1=Zwieksza obrazenia zadawane lukiem.
+m.EffectsArchery4_0=Odzyskiwanie strzal
+m.EffectsArchery4_1=Szansa na odzyskanie strzal z cial wrogow.
+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]]Wieksze obrazenia (Rank{0}): [[YELLOW]]Obrazenia zwiekszone o {0}
+m.SkillAxes=TOPORY
+m.XPGainAxes=Atakowanie potworow przy uzyciu toporow.
+m.EffectsAxes1_0=Berserk (UMIEJETNOSC)
+m.EffectsAxes1_1=Zadaje obrazenia wszystkiemu dookola.
+m.EffectsAxes2_0=Krytyczne uderzenie
+m.EffectsAxes2_1=Potrafisz trafic wroga tam gdzie boli, zadajac podwojne obrazenia.
+m.EffectsAxes3_0=Doswiadczony wojownik
+m.EffectsAxes3_1=Mordowanie setek potworow zwiekszylo twoja sile i celnosc. Zadajesz wiecej obrazen.
+m.AbilLockAxes1=Aby odblokowac doswiadczonego wojownika, zdobadz 500 poziom.
+m.AbilBonusAxes1_0=Doswiadczony wojownik
+m.AbilBonusAxes1_1=Zadajesz dodatkowe 4 punkty obrazen.
+m.AxesCritChance=[[RED]]Szansa na krytyczne uderzenie: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Dlugosc berserku: [[YELLOW]]{0} sekund
+m.SkillSwords=MIECZE
+m.XPGainSwords=Atakowanie potworow przy uzyciu mieczy.
+m.EffectsSwords1_0=Kontratak
+m.EffectsSwords1_1=Nikt bezkarnie cie nie zrani. Oddajesz przeciwnikowi 50% otrzymanych obrazen.
+m.EffectsSwords2_0=Furia ostrzy (UMIEJETNOSC)
+m.EffectsSwords2_1=25% obrazen obszarowych powodujacych krwotok.
+m.EffectsSwords3_0=Krwawa furia ostrzy
+m.EffectsSwords3_1=Celujesz w zyly i tetnice, pododujac jak najwiecej ran.
+m.EffectsSwords4_0=Blok
+m.EffectsSwords4_1=Calkowicie blokujesz cios.
+m.EffectsSwords5_0=Krwotok
+m.EffectsSwords5_1=Powoduje krwawiace otwarte rany.
+m.SwordsCounterAttChance=[[RED]]Szansa na kontratak: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Rany zadawane krwotokiem: [[YELLOW]]{0} ran.
+m.SwordsBleedChance=[[RED]]Szansa na spowodowanie krwotoku: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Szansa na blok: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Dlugosc furii ostrzy: [[YELLOW]]{0} sekund
+m.SwordsTickNote=[[GRAY]]UWAGA: [[YELLOW]]1 rana goi sie co 2 sekundy.
+m.SkillAcrobatics=AKROBATYKA
+m.XPGainAcrobatics=Spadanie
+m.EffectsAcrobatics1_0=Przewrot
+m.EffectsAcrobatics1_1=Zmniejsza badz niweluje obrazenia.
+m.EffectsAcrobatics2_0=Idealny przewrot
+m.EffectsAcrobatics2_1=Dwa razy skuteczniejszy od normalnego.
+m.EffectsAcrobatics3_0=Unik
+m.EffectsAcrobatics3_1=Redukuje obrazenia o polowe.
+m.AcrobaticsRollChance=[[RED]]Szansa na przewrot: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Szansa na idealny przewrot: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Szansa na unik: [[YELLOW]]{0}%
+m.SkillMining=GORNICTWO
+m.XPGainMining=Wykopywanie kamienia i roznych rud.
+m.EffectsMining1_0=Super kopacz (UMIEJETNOSC)
+m.EffectsMining1_1=Kopiesz sybciej i marnujesz trzy razy mniej rudy.
+m.EffectsMining2_0=Fachowy wykop
+m.EffectsMining2_1=Pozyskujesz dwa razy wiecej rudy. Nic sie nie marnuje.
+m.MiningDoubleDropChance=[[RED]]Szansa na fachowy wykop: [[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=Zwiekszona liczba napraw.
+m.EffectsRepair3_0=Fachowa naprawa
+m.EffectsRepair3_1=Naprawiles przedmiot dwa razy lepiej niz zwykle.
+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 fachowa naprawe: [[YELLOW]]{0}%
+m.SkillUnarmed=KUNG-FU
+m.XPGainUnarmed=Atakowanie potworow bez broni.
+m.EffectsUnarmed1_0=Wejscie Smoka (UMIEJETNOSC)
+m.EffectsUnarmed1_1=Polowe wieksze obrazenia, niszczy slabe przedmioty.
+m.EffectsUnarmed2_0=Rozbrojenie (Tylko graczy)
+m.EffectsUnarmed2_1=Przeciwnik upuszcza trzymany w reku przedmiot.
+m.EffectsUnarmed3_0=Wsciekle Piesci
+m.EffectsUnarmed3_1=Znaczne zwiekszenie zadawanych obrazen.
+m.EffectsUnarmed4_0=Droga Smoka
+m.EffectsUnarmed4_1=Zwiekszenie zadawanych obrazen.
+m.EffectsUnarmed5_0=Odbicie strzaly
+m.EffectsUnarmed5_1=Golymi rekoma potrafisz odbic nadlatujaca strzale.
+m.AbilLockUnarmed1=Aby odblokowac Droge Smoka, zdobadz 250 poziom.
+m.AbilLockUnarmed2=Aby odblokowac Wsciekle Piesci, zdobadz 500 poziom.
+m.AbilBonusUnarmed1_0=Droga Smoka
+m.AbilBonusUnarmed1_1=Zadawane obrazenia zwiekszone o 2.
+m.AbilBonusUnarmed2_0=Wsciekle Piesci
+m.AbilBonusUnarmed2_1=Zadawane obrazenia zwiekszone o 4.
+m.UnarmedArrowDeflectChance=[[RED]]Szansa na odbicie strzaly: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Szansa na rozbrojenie: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Dlugosc Wejscia Smoka: [[YELLOW]]{0} sekund.
+m.SkillHerbalism=ZIELARSTWO
+m.XPGainHerbalism=Zbieranie ziol.
+m.EffectsHerbalism1_0=Zielona ziemia (UMIEJETNOSC)
+m.EffectsHerbalism1_1=Rozprzestrzenia ziemie, potraja plony.
+m.EffectsHerbalism2_0=Wprawne rece (zboze)
+m.EffectsHerbalism2_1=Zbierajac zboze, od razu sadzisz nasiona.
+m.EffectsHerbalism3_0=Wprawne rece (bruk)
+m.EffectsHerbalism3_1=Zamienia bruk w porosniety mchem kamien z nasionami.
+m.EffectsHerbalism4_0=Lepsze jedzenie
+m.EffectsHerbalism4_1=Modyfikowana genetycznie zywnosc jest zdrowsza. Chleb i zupa chlebowa regeneruja wiecej zdrowia.
+m.EffectsHerbalism5_0=Udane zbiory
+m.EffectsHerbalism5_1=Dwa razy wieksze plony wszystkich roslin.
+m.HerbalismGreenTerraLength=[[RED]]Czas trwania zielonej ziemi: [[YELLOW]]{0} sekund
+m.HerbalismGreenThumbChance=[[RED]]Szansa na wprawne rece: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Poziom wprawnych rak: [[YELLOW]] Zboze rosnie na poziomie {0}
+m.HerbalismDoubleDropChance=[[RED]]Szansa na udane zbiory: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Lepsze jedzenie (Ranga{0}): [[YELLOW]]Dodatkowe {0} zdrowia
+m.SkillExcavation=WYKOPALISKA
+m.XPGainExcavation=Kopanie i odnajdywanie skarbow.
+m.EffectsExcavation1_0=Super Szybka Saperka (UMIEJETNOSC)
+m.EffectsExcavation1_1=Zwiekszona szybkosc kopania i trzykrotnie wiekszy urobek i zdobyte doswiadczenie.
+m.EffectsExcavation2_0=Lowca Skarbow
+m.EffectsExcavation2_1=Umiejetnosc znajdywania skarbow
+m.ExcavationGreenTerraLength=[[RED]]Czas trwania Super Szybkiej Saperki: [[YELLOW]]{0} sekund.
+mcBlockListener.PlacedAnvil=[[DARK_RED]]Polozyles kowadlo, ktore pozwala na naprawe przedmiotow.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Twoj wilk przybiega z powrotem.
+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=Wykopaliska:
+mcPlayerListener.GodModeDisabled=[[YELLOW]]Niesmiertelnosc wylaczona
+mcPlayerListener.GodModeEnabled=[[YELLOW]]Niesmiertelnosc wlaczona
+mcPlayerListener.GreenThumb=[[GREEN]]**UZYLES ZIELONEJ ZIEMI**
+mcPlayerListener.GreenThumbFail=[[RED]]**UZYWANIE ZIELONEJ ZIEMI NIE POWIODLO SIE**
+mcPlayerListener.HerbalismSkill=Zielarstwo:
+mcPlayerListener.MiningSkill=Gornictwo:
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Twoj spawn zostal usuniety.
+mcPlayerListener.MyspawnNotExist=[[RED]]Musisz ustawic 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]]Umiejetnosci, ktorych nie mozesz uzyc nie sa wyswietlane.
+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 zaproszen do zadnej 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=Kung-fu:
+mcPlayerListener.WoodcuttingSkill=Drwalnictwo:
+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]]furia ostrzy [[GREEN]]zostala naladowana!
+Skills.YourBerserk=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Wejscie Smoka [[GREEN]]zostala naladowana!
+Skills.YourSkullSplitter=[[GREEN]]Twoja umiejetnosc [[YELLOW]]berserk [[GREEN]]zostala naladowana!
+Skills.YourGigaDrillBreaker=[[GREEN]]Twoja umiejetnosc [[YELLOW]]Super Szybka Saperka [[GREEN]]zostala naladowana!
+Skills.TooTired=[[RED]]Musisz odpoczac zanim ponownie uzyjesz tej umiejetnosci.
+Skills.ReadyHoe=[[GREEN]]**PODNOSISZ SWOJA MOTYKE**
+Skills.LowerHoe=[[GRAY]]**OPUSZCZASZ SWOJA MOTYKE**
+Skills.ReadyAxe=[[GREEN]]**PODNOSISZ SWOJ TOPOR**
+Skills.LowerAxe=[[GRAY]]**OPUSZCZASZ SWOJ TOPOR**
+Skills.ReadyFists=[[GREEN]]**PODNOSISZ SWOJE PIESCI**
+Skills.LowerFists=[[GRAY]]**OPUSZCZASZ SWOJE PIESCI**
+Skills.ReadyPickAxe=[[GREEN]]**PODNOSISZ SWOJ KILOF**
+Skills.LowerPickAxe=[[GRAY]]**OPUSZCZASZ SWOJ KILOF**
+Skills.ReadyShovel=[[GREEN]]**PODNOSISZ SWOJA LOPATE**
+Skills.LowerShovel=[[GRAY]]**OPUSZCZASZ SWOJA LOPATE**
+Skills.ReadySword=[[GREEN]]**PODNOSISZ SWOJ MIECZ**
+Skills.LowerSword=[[GRAY]]**OPUSZCZASZ SWOJ MIECZ**
+Skills.BerserkOn=[[GREEN]]**ROBISZ WEJSCIE SMOKA**
+Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] zrobil [[RED]]Wejscie Smoka!
+Skills.GreenTerraOn=[[GREEN]]**ZIELONA ZIEMIA**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]zielonej ziemi!
+Skills.TreeFellerOn=[[GREEN]]**POWALACZ DRZEW**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]powalacza drzew!
+Skills.SuperBreakerOn=[[GREEN]]**SUPER KOPACZ**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Super Kopacza!
+Skills.SerratedStrikesOn=[[GREEN]]**FURIA OSTRZY**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]furii ostrzy!
+Skills.SkullSplitterOn=[[GREEN]]**BERSERK**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] wpadl w [[RED]]berserk!
+Skills.GigaDrillBreakerOn=[[GREEN]]**SUPER SZYBKA SAPERKA**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] uzyl [[RED]]Super Szybkiej Saperki!
+Skills.GreenTerraOff=[[RED]]**Zielona ziemia zostala zuzyta**
+Skills.TreeFellerOff=[[RED]]**Powalacz drzew zostal zuzyty**
+Skills.SuperBreakerOff=[[RED]]**Super Kopacz zostal zuzyty**
+Skills.SerratedStrikesOff=[[RED]]**Furia ostrzy zostala zuzyta**
+Skills.BerserkOff=[[RED]]**Wejscie Smoka zostalo zuzyte**
+Skills.SkullSplitterOff=[[RED]]**Berserk zostal zuzyty**
+Skills.GigaDrillBreakerOff=[[RED]]**Super Szybka Saperka zostala zuzyta**
+Skills.TamingUp=[[YELLOW]]Umiejetnosc oswajania wzrosla o {0}. Razem ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Umiejetnosci akrobatyczne wzrosly o {0}. Razem ({1})
+Skills.ArcheryUp=[[YELLOW]]Umiejetnosci lucznicze wzrosly o {0}. Razem ({1})
+Skills.SwordsUp=[[YELLOW]]Umiejetnosc uzywania mieczy wzrosla o {0}. Razem ({1})
+Skills.AxesUp=[[YELLOW]]Umiejetnosc uzywania toporow wzrosla o {0}. Razem ({1})
+Skills.UnarmedUp=[[YELLOW]]Znajomosc Kung-Fu wzrosla o {0}. Razem ({1})
+Skills.HerbalismUp=[[YELLOW]]Znajomosc zielarstwa wzrosla o {0}. Razem ({1})
+Skills.MiningUp=[[YELLOW]]Umiejetnosci gornicze wzrosly o {0}. Razem ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Umiejetnosci drwalnicze wzrosly o {0}. Razem ({1})
+Skills.RepairUp=[[YELLOW]]Umiejetnosc naprawy wzrosla o {0}. Razem ({1})
+Skills.ExcavationUp=[[YELLOW]]Umiejetnosci wykopaliskowe wzrosly o {0}. Razem ({1})
+Skills.FeltEasy=[[GRAY]]To bylo proste.
+Skills.StackedItems=[[DARK_RED]]Nie mozesz naprawiac grup przedmiotow.
+Skills.NeedMore=[[DARK_RED]]Potrzebujesz wiecej
+Skills.AdeptDiamond=[[DARK_RED]]Nie potrafisz jeszcze naprawiac diamentow
+Skills.FullDurability=[[GRAY]]Ten przedmiot nie wymaga naprawy.
+Skills.Disarmed=[[DARK_RED]]Zostales rozbrojony!
+mcPlayerListener.SorcerySkill=Magia:
+m.SkillSorcery=MAGIA
+Sorcery.HasCast=[[GREEN]]**RZUCANIE ZAKLECIA**[[GOLD]]
+Sorcery.Current_Mana=[[DARK_AQUA]]Mana
+Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
+Sorcery.Cost=[[RED]][COST] {0} Many
+Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Brak Many [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=PIORUN
+Sorcery.Curative.Self=ULECZ SIEBIE
+Sorcery.Curative.Other=ULECZ INNYCH
+m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]Doswiadczenia[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]**WIEDZA O ZWIERZETACH**
+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)
+mcMMO.Description=[[DARK_AQUA]]P: Czym jest mcMMO?,[[GOLD]]mcMMO jest [[RED]]open source'owym[[GOLD]] RPG modem korzystajacym z Bukkita, autorstwa [[BLUE]]nossr50,[[GOLD]]mcMMO dodaje wiele umiejetnosci do Minecrafta.,[[GOLD]]Mozna rowniez zbierac doswiadczenie na rozne sposoby,[[GOLD]]Najlepiej wpisac [[GREEN]]/nazwaumiejetnosci[[GOLD]] aby dowiedziec sie wiecej o niej.,[[DARK_AQUA]]P: A co robi mcMMO?,[[GOLD]]Dla przykladu, [[DARK_AQUA]]gornictwo[[GOLD]] pozwala na [[RED]]zwiekszone zyski[[GOLD]] oraz daje mozliwosc [[RED]]szybszego kopania[[GOLD]], ktore mozna [[GOLD]]aktywowac prawym przyciskiem myszy i trwa dluzej [[GOLD]]im wyzszy masz poziom. Zdobywanie poziomow w [[BLUE]]gornictwie[[GOLD]] odbywa sie przez zwyczajne wykopywanie roznych mineralow.,[[DARK_AQUA]]P: Co to wszystko daje?,[[GOLD]]Prawie wszystkie umiejetnosci w [[GREEN]]mcMMO[[GOLD]] dodaja nowe fajne rzeczy!.,[[GOLD]]Wpisujac [[GREEN]]/{0}[[GOLD]] poznasz wszystkie dostepne polecenia,[[GOLD]]Celem mcMMO jest sprawienie aby Minecraft stal sie prawie eRPeGiem.,[[DARK_AQUA]]P: Mam genialny pomysl, dodasz to!?,[[GOLD]]Napisz w temacie mcMMO na forum bukkit i zobaczymy!,[[DARK_AQUA]]Q: A jak zrobic to albo tamto?,[[RED]]CZYTAJ [[GOLD]]strone wiki moda! [[DARK_AQUA]]mcmmo.wikia.com
+Party.Locked=[[RED]]Grupa jest zamknieta, tylko wlasciciel moze dodac graczy.
+Party.IsntLocked=[[GRAY]]Grupa jest otwarta dla wszystkich.
+Party.Unlocked=[[GRAY]]Grupa jest otwarta dla wszystkich.
+Party.Help1=[[RED]]Prawidlowe polecenie to [[YELLOW]]/{0} [[WHITE]][[YELLOW]] lub [[WHITE]]'q' [[YELLOW]]aby wyjsc.
+Party.Help2=[[RED]]Aby dolaczyc do grupy zabezpieczonej haslem wpisz[[YELLOW]]/{0} [[WHITE]]
+Party.Help3=[[RED]]Sprawdz /{0} ? aby dowiedziec sie wiecej.
+Party.Help4=[[RED]]Wpisz [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]aby dolaczyc do grupy lub [[WHITE]]'q' [[YELLOW]]aby z niej wyjsc.
+Party.Help5=[[RED]]Aby zamknac grupe wpisz [[YELLOW]]/{0} [[WHITE]]lock
+Party.Help6=[[RED]]Aby otworzyc zamknieta grupe wpisz [[YELLOW]]/{0} [[WHITE]]unlock
+Party.Help7=[[RED]]Aby zabezpieczyc grupe haslem wpisz [[YELLOW]]/{0} [[WHITE]]password
+Party.Help8=[[RED]]Aby wyrzucic gracza z grupy wpisz [[YELLOW]]/{0} [[WHITE]]kick
+Party.Help9=[[RED]]Aby przekazac wladze w grupie innej osobie wpisz [[YELLOW]]/{0} [[WHITE]]owner
+Party.NotOwner=[[DARK_RED]]Nie jestes wlascicielem tej grupy.
+Party.InvalidName=[[DARK_RED]]To nie jest dozwolona nazwa grupy.
+Party.PasswordSet=[[GREEN]]Haslo grupy zmienione na: {0}
+Party.CouldNotKick=[[DARK_RED]]Nie mozna wyrzucic gracza {0}
+Party.NotInYourParty=[[DARK_RED]]{0} nie jest czlonkiem twojej grupy.
+Party.CouldNotSetOwner=[[DARK_RED]]Nie mozna przekazac grupy do {0}
+Commands.xprate.proper=[[DARK_AQUA]]Proper usage is /{0} [integer] [true:false]
+Commands.xprate.proper2=[[DARK_AQUA]]Also you can type /{0} reset to turn everything back to normal
+Commands.xprate.proper3=[[RED]]Enter true or false for the second value
+Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
+Commands.xprate.started=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
+Commands.xprate.started2=[[GOLD]]mcMMO XP RATE IS NOW {0}x!!
+Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
+Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
+Commands.xplock.invalid=[[RED]]That is not a valid skillname! Try /xplock mining
+m.SkillAlchemy=ALCHEMY
+m.SkillEnchanting=ENCHANTING
+m.SkillFishing=FISHING
+mcPlayerListener.AlchemySkill=Alchemy:
+mcPlayerListener.EnchantingSkill=Enchanting:
+mcPlayerListener.FishingSkill=Fishing:
+Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
+Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
+Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
+Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
+Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
+Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
+Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
+m.EffectsRepair5_0=Arcane Forging
+m.EffectsRepair5_1=Repair magic items
+m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
+m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
+m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
+m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
+m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
+Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
+Fishing.ItemFound=[[GRAY]]Treasure found!
+m.SkillFishing=FISHING
+m.XPGainFishing=Fishing (Go figure!)
+m.EffectsFishing1_0=Treasure Hunter (Passive)
+m.EffectsFishing1_1=Fish up misc objects
+m.EffectsFishing2_0=Magic Hunter
+m.EffectsFishing2_1=Find Enchanted Items
+m.EffectsFishing3_0=Shake (vs. Entities)
+m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
+m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
+m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
+m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
+m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
+m.TamingSummon=[[GREEN]]Summoning complete
+m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
+m.EffectsTaming7_0=Call of the Wild
+m.EffectsTaming7_1=Summon a wolf to your side
m.EffectsTaming7_2=[[GRAY]]COTW HOW-TO: Crouch and right click with {0} Bones in hand
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/locale_pt_br.properties b/src/main/java/com/gmail/nossr50/locale/locale_pt_br.properties
similarity index 98%
rename from src/com/gmail/nossr50/locale/locale_pt_br.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_pt_br.properties
index 3e84442fe..7b5bae22a 100644
--- a/src/com/gmail/nossr50/locale/locale_pt_br.properties
+++ b/src/main/java/com/gmail/nossr50/locale/locale_pt_br.properties
@@ -1,404 +1,404 @@
-Combat.WolfExamine=[[GREEN]]*Você examinou um lobo usando Conhecimento de Feras*
-Combat.WolfShowMaster=[[DARK_GREEN]]O Mestre das Feras \: {0}
-Combat.Ignition=[[RED]]*IGNIÇAO*
-Combat.BurningArrowHit=[[DARK_RED]]Você foi atingido por uma flecha flamejante\!
-Combat.TouchedFuzzy=[[DARK_RED]]Visao turva. Sente Tonturas.
-Combat.TargetDazed=Alvo foi [[DARK_RED]]Atordoado
-Combat.WolfNoMaster=[[GRAY]]Esse Animal nao tem um mestre...
-Combat.WolfHealth=[[GREEN]]Esse animal tem {0} de vida
-Combat.StruckByGore=[[RED]]*ATINGIDO POR MORDIDA*
-Combat.Gore=[[GREEN]]*MORDIDA*
-Combat.ArrowDeflect=[[WHITE]]*DESVIOU A FLECHA*
-Item.ChimaeraWingFail=*ASA QUIMERA FALHOU\!*
-Item.ChimaeraWingPass=*ASA QUIMERA*
-Item.InjuredWait=Você foi ferido recentemente e tem que esperar para usar isto. [[YELLOW]]({0}s)
-Item.NeedFeathers=[[GRAY]]Você precisa de mais penas...
-m.mccPartyCommands=[[GREEN]]--COMANDOS DE EQUIPES--
-m.mccParty=[party name] [[RED]]- Criar/Juntar-se a uma equipe
-m.mccPartyQ=[[RED]]- Sair da equipe atual
-m.mccPartyToggle=[[RED]] - Ligar/Desligar chat da equipe
-m.mccPartyInvite=[player name] [[RED]]- Enviar um convite
-m.mccPartyAccept=[[RED]]- Aceitar convite
-m.mccPartyTeleport=[party member name] [[RED]]- Teleportar para um membro de equipe
-m.mccOtherCommands=[[GREEN]]--OUTROS COMANDOS--
-m.mccStats=- Ver seus status
-m.mccLeaderboards=- Classificaçao
-m.mccMySpawn=- Teleportar para o spawn
-m.mccClearMySpawn=- Remove o Ponto de Spawn
-m.mccToggleAbility=- Ativa habilidades especiais com botao direito
-m.mccAdminToggle=- Ativa o chat dos admin
-m.mccWhois=[playername] [[RED]]- Ver informaçoes do jogador
-m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Modificar atributos do jogador
-m.mccMcGod=- Modo Deus
-m.mccSkillInfo=[skillname] [[RED]]- Ver informaçoes sobre a habilidade
-m.mccModDescription=[[RED]]- Breve descriçao do Mod
-m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
-m.XPGain=[[DARK_GRAY]]COMO GANHA XP: [[WHITE]]{0}
-m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
-m.AbilityLockTemplate=[[GRAY]]{0}
-m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
-m.Effects=EFEITOS
-m.YourStats=SUAS ESTATISTICAS
-m.SkillTaming=DOMESTICAR
-m.XPGainTaming=Ataque com um lobo
-m.EffectsTaming1_0=Conhecimento de Feras
-m.EffectsTaming1_1=Inspeciona um lobo com um osso
-m.EffectsTaming2_0=Mordida
-m.EffectsTaming2_1=Ataque crítico que causa hemorragia
-m.EffectsTaming3_0=Garras afiadas
-m.EffectsTaming3_1=Bônus de Dano
-m.EffectsTaming4_0=Consciência do Ambiente
-m.EffectsTaming4_1=Medo de Cactos e Lava, Imune a Dano por queda
-m.EffectsTaming5_0=Pele Grossa
-m.EffectsTaming5_1=Reduçao nos Danos, Resistência ao fogo
-m.EffectsTaming6_0=A Prova de Choque
-m.EffectsTaming6_1=Reduz danos tomados com explosivos
-m.AbilLockTaming1=DESBLOQUEIE NO NIVEL 100 (Conciência do ambiente)
-m.AbilLockTaming2=DESBLOQUEIE NO NIVEL 250 (Pele grossa)
-m.AbilLockTaming3=DESBLOQUEIE NO NIVEL 500 (A prova de choque)
-m.AbilLockTaming4=DESBLOQUEIE NO NIVEL 750 (Garras afiadas)
-m.AbilBonusTaming1_0=Conciência do ambiente
-m.AbilBonusTaming1_1=Lobos evitam perigo
-m.AbilBonusTaming2_0=Pele grossa
-m.AbilBonusTaming2_1=Danos pela metade, Resistência ao fogo
-m.AbilBonusTaming3_0=A prova de choque
-m.AbilBonusTaming3_1=Explosivos causam 1/6 do dano normal
-m.AbilBonusTaming4_0=Garras afiadas
-m.AbilBonusTaming4_1=+2 Dano
-m.TamingGoreChance=[[RED]]Chance de Mordida: [[YELLOW]]{0}%
-
-m.SkillWoodCutting=LENHADOR
-m.XPGainWoodCutting=Cortando árvores
-m.EffectsWoodCutting1_0=Derrubador de árvores (HABILIDADE ESPECIAL)
-m.EffectsWoodCutting1_1=Explode árvores
-m.EffectsWoodCutting2_0=Soprador de Folhas
-m.EffectsWoodCutting2_1=Destrói folhas rapidamente
-m.EffectsWoodCutting3_0=Drop x2
-m.EffectsWoodCutting3_1=Dobra a quantidade de item dropados
-m.AbilLockWoodCutting1=DESBLOQUEIE NO NIVEL 100 (SOPRADOR DE FOLHAS)
-m.AbilBonusWoodCutting1_0=Soprador de Folhas
-m.AbilBonusWoodCutting1_1=Destrói folhas rapidamente
-m.WoodCuttingDoubleDropChance=[[RED]]Chance de Drop x2: [[YELLOW]]{0}%
-m.WoodCuttingTreeFellerLength=[[RED]]Duraçao do Derrubador de árvores: [[YELLOW]]{0}s
-
-m.SkillArchery=ARCO E FLECHA
-m.XPGainArchery=Atacando monstros/
-m.EffectsArchery1_0=Igniçao
-m.EffectsArchery1_1=25% de chance dos inimigos pegarem fogo
-m.EffectsArchery2_0=Atordoar (Jogadores)
-m.EffectsArchery2_1=Desorienta os adversários
-m.EffectsArchery3_0=+Dano
-m.EffectsArchery3_1=Aumenta o Dano
-m.EffectsArchery4_0=Recuperar Flechas
-m.EffectsArchery4_1=Chance de recuperar flechas de corpos
-m.ArcheryDazeChance=[[RED]]Chance de atordoar: [[YELLOW]]{0}%
-m.ArcheryRetrieveChance=[[RED]]Chance de recuperar flechas: [[YELLOW]]{0}%
-m.ArcheryIgnitionLength=[[RED]]Duraçao da Igniçao: [[YELLOW]]{0}s
-m.ArcheryDamagePlus=[[RED]]+Dano (Rank{0}): [[YELLOW]]Bonus de {0} dano
-
-m.SkillAxes=MACHADOS
-m.XPGainAxes=Atacando monstros
-m.EffectsAxes1_0=Rachador de Crânios (HABILIDADE ESPECIAL)
-m.EffectsAxes1_1=Causa Danos em Area
-m.EffectsAxes2_0=Ataques Críticos
-m.EffectsAxes2_1=Dobra o Dano
-m.EffectsAxes3_0=Mestre com Machados (NIVEL 500)
-m.EffectsAxes3_1=Aumenta o Dano
-m.AbilLockAxes1=DESBLOQUEIE NO NIVEL 500 (Mestre com Machados)
-m.AbilBonusAxes1_0=Mestre com Machados/
-m.AbilBonusAxes1_1=Bônus de 4 de dano
-m.AxesCritChance=[[RED]]Chance ataque crítico: [[YELLOW]]{0}%
-m.AxesSkullLength=[[RED]]Duraçao do Rachador de Crânios: [[YELLOW]]{0}s
-
-m.SkillSwords=ESPADAS
-m.XPGainSwords=Atacando monstros
-m.EffectsSwords1_0=Contra-Ataque
-m.EffectsSwords1_1=Retorna 50% do dano tomado
-m.EffectsSwords2_0=Ataques Cortantes (HABILIDADE ESPECIAL)
-m.EffectsSwords2_1=25% de Danos em Area, e Efeito de Hemorraria
-m.EffectsSwords3_0=Ataque Cortante com Hemorragia
-m.EffectsSwords3_1=5 Sangramentos
-m.EffectsSwords4_0=Desviar
-m.EffectsSwords4_1=Anula o Dano
-m.EffectsSwords5_0=Hemorragia
-m.EffectsSwords5_1=Causa sangramentos repetidos ao longo do tempo
-m.SwordsCounterAttChance=[[RED]]Chance de Contra-Ataque: [[YELLOW]]{0}%
-m.SwordsBleedLength=[[RED]]Duraçao da Hemorragia: [[YELLOW]]{0} ticks
-m.SwordsBleedChance=[[RED]]Chance de Hemorragia: [[YELLOW]]{0} %
-m.SwordsParryChance=[[RED]]Chance de Desviar: [[YELLOW]]{0} %
-m.SwordsSSLength=[[RED]]Duraçao do Ataques Cortantes: [[YELLOW]]{0}s
-m.SwordsTickNote=[[GRAY]]NOTA: [[YELLOW]]1 sangramento a cada 2 segundos
-
-m.SkillAcrobatics=ACROBACIA
-m.XPGainAcrobatics=Caindo
-m.EffectsAcrobatics1_0=Rolar
-m.EffectsAcrobatics1_1=Reduz ou anula o dano
-m.EffectsAcrobatics2_0=Rolar com estilo
-m.EffectsAcrobatics2_1=2 vezes mais efetivo de que "Rolar"
-m.EffectsAcrobatics3_0=Esquivar
-m.EffectsAcrobatics3_1=Reduz o dano pela metade
-m.AcrobaticsRollChance=[[RED]]Chance de Rolar: [[YELLOW]]{0}%
-m.AcrobaticsGracefulRollChance=[[RED]]Chance de Rolar com estilo: [[YELLOW]]{0}%
-m.AcrobaticsDodgeChance=[[RED]]Chance de Esquivar: [[YELLOW]]{0}%
-
-m.SkillMining=MINERAÇAO
-m.XPGainMining=Minerando Pedras e Minérios
-m.EffectsMining1_0=Super Britadeira (HABILIDADE ESPECIAL)
-m.EffectsMining1_1=+ Velocidade, Chance de Drop x3
-m.EffectsMining2_0=Drop x2
-m.EffectsMining2_1=Dobra a quantia de itens obtidos minerando
-m.MiningDoubleDropChance=[[RED]]Chance de D/rop x2: [[YELLOW]]{0}%
-m.MiningSuperBreakerLength=[[RED]]Duraçao da Super Britadeira: [[YELLOW]]{0}s
-
-m.SkillRepair=REPARAÇAO
-m.XPGainRepair=Reparando itens
-m.EffectsRepair1_0=Reparar
-m.EffectsRepair1_1=Reparando Ferramentas e Armaduras de Ferro
-m.EffectsRepair2_0=Mestre em Raparaçao
-m.EffectsRepair2_1=Aumenta a quantia reparada
-m.EffectsRepair3_0=Super Reparaçao
-m.EffectsRepair3_1=Dobra a efetividade da Reparaçao
-m.EffectsRepair4_0=Reparaçao de diamantes (Nível {0})
-m.EffectsRepair4_1=Rapara Ferramentas e Armaduras de Diamante
-m.RepairRepairMastery=[[RED]]Mestre em Raparaçao: [[YELLOW]]{0}% extra restaurado
-m.RepairSuperRepairChance=[[RED]]Chance de Super Reparaçao: [[YELLOW]]{0}%
-
-m.SkillUnarmed=DESARMADO
-m.XPGainUnarmed=Atacando monstros
-m.EffectsUnarmed1_0=Fúria (HABILIDADE ESPECIAL)
-m.EffectsUnarmed1_1=+50% de Dano, Quebra materiais frágeis
-m.EffectsUnarmed2_0=Desarmar (Jogadores)
-m.EffectsUnarmed2_1=Derruba a arma que o adversário está segurando
-m.EffectsUnarmed3_0=Mestre do Desarmamento
-m.EffectsUnarmed3_1=Aumenta muito o Dano
-m.EffectsUnarmed4_0=Aprendiz do Desarmamento
-m.EffectsUnarmed4_1=Aumenta o Dano
-m.EffectsUnarmed5_0=Desviar Flechas
-m.EffectsUnarmed5_1=Desvia Flechas jogadas em você
-m.AbilLockUnarmed1=DESBLOQUEIE NO NIVEL 250 (APRENDIZ DE DESARMAMENTO)
-m.AbilLockUnarmed2=DESBLOQUEIE NO NIVEL 500 (MESTRE DE DESARMAMENTO)
-m.AbilBonusUnarmed1_0=Aprendiz do Desarmamento
-m.AbilBonusUnarmed1_1=+2 de Danos
-m.AbilBonusUnarmed2_0=Mestre do Desarmamento
-m.AbilBonusUnarmed2_1=+4 de Danos
-m.UnarmedArrowDeflectChance=[[RED]]Chance de Desviar Flechas: [[YELLOW]]{0}%
-m.UnarmedDisarmChance=[[RED]]Chance de Desarmar: [[YELLOW]]{0}%
-m.UnarmedBerserkLength=[[RED]]Duraçao da Fúria: [[YELLOW]]{0}s
-
-m.SkillHerbalism=HERBALISMO
-m.XPGainHerbalism=Colhendo Ervas
-m.EffectsHerbalism1_0=Green Terra (HABILIDADE ESPECIAL)
-m.EffectsHerbalism1_1=EXP x3, Drop x3
-m.EffectsHerbalism2_0=Dedos Verdes (Trigo)
-m.EffectsHerbalism2_1=Planta automaticamente, ao colher trigo
-m.EffectsHerbalism3_0=Dedos Verdes (Pedras)
-m.EffectsHerbalism3_1=Transforma Cobblestone em Moss Stone (usa sementes)
-m.EffectsHerbalism4_0=Comida+
-m.EffectsHerbalism4_1=Aumenta a vida recebida comendo pao ou sopa
-m.EffectsHerbalism5_0=Drop x2 (Todas Ervas)
-m.EffectsHerbalism5_1=Dobra a quantia de itens obtidos colhendo
-m.HerbalismGreenTerraLength=[[RED]]Duraçao do Green Terra: [[YELLOW]]{0}s
-m.HerbalismGreenThumbChance=[[RED]]Chance do Dedos Verdes: [[YELLOW]]{0}%
-m.HerbalismGreenThumbStage=[[RED]]Nível do Dedos Verdes: [[YELLOW]] Trigo Cresce no Nível {0}
-m.HerbalismDoubleDropChance=[[RED]]Chance de Drop x2: [[YELLOW]]{0}%
-m.HerbalismFoodPlus=[[RED]]Comida+ (Rank{0}): [[YELLOW]]Bônus de {0} de vida
-
-m.SkillExcavation=ESCAVAÇAO
-m.XPGainExcavation=Cavando e encontrando tesouros
-m.EffectsExcavation1_0=Super Broca (HABILIDADE ESPECIAL)
-m.EffectsExcavation1_1=Drop x3, EXP x3, mais velocidade
-m.EffectsExcavation2_0=Caçad/or de Tesouros
-m.EffectsExcavation2_1=Encontra itens raros enquanto cava
-m.ExcavationGreenTerraLength=[[RED]]Duraçao da Super Broca: [[YELLOW]]{0}s
-
-mcBlockListener.PlacedAnvil=[[DARK_RED]] Você colocou uma bigorna, a bigorna pode reparar ferramentas e armaduras.
-mcEntityListener.WolfComesBack=[[DARK_GRAY]]Seu lobo voltou para você...
-mcPlayerListener.AbilitiesOff=Habilidade especial desabilitada
-mcPlayerListener.AbilitiesOn=Habilidade especial ativada
-mcPlayerListener.AbilitiesRefreshed=[[GREEN]]*HABILIDAE DISPONIVEL\!*
-mcPlayerListener.AcrobaticsSkill=Acrobacia (Acrobatics):
-mcPlayerListener.ArcherySkill=Arqueiro (Archery):
-mcPlayerListener.AxesSkill=Machado (Axes):
-mcPlayerListener.ExcavationSkill=Escavaçao (Excavation):
-mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO Modo Deus Desabilitado
-mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Modo Deus Ativo
-mcPlayerListener.GreenThumb=[[GREEN]]*DEDOS VERDES*
-mcPlayerListener.GreenThumbFail=[[RED]]*DEDOS VERDES FALHOU*
-mcPlayerListener.HerbalismSkill=Herbalismo (Herbalism):
-mcPlayerListener.MiningSkill=Mineraçao (Mining):
-mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Ponto de Spawn foi apagado.
-mcPlayerListener.MyspawnNotExist=[[RED]]Primeiro crie um spawn durmindo na cama.
-mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Spawn foi gravado neste local.
-mcPlayerListener.MyspawnTimeNotice=Você precisa esperar {0}m {1}s para usar "myspawn"
-mcPlayerListener.NoPermission=Nao tem permissao para realizar esta açao.
-mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Se você nao tem acesso a uma habilidade, ela nao será exibida aqui.
-mcPlayerListener.NotInParty=[[RED]]Você nao está em nenhuma equipe.
-mcPlayerListener.InviteSuccess=[[GREEN]]Convite enviado.
-mcPlayerListener.ReceivedInvite1=[[RED]]ALERTA: [[GREEN]]Você recebeu um convite do {1} para a equipe {0}.
-mcPlayerListener.ReceivedInvite2=[[YELLOW]]Digite [[GREEN]]/{0}[[YELLOW]] para aceitar o convite
-mcPlayerListener.InviteAccepted=[[GREEN]]Convite aceito. Você se juntou a equipe {0}
-mcPlayerListener.NoInvites=[[RED]]Você nao tem convites pendentes.
-mcPlayerListener.YouAreInParty=[[GREEN]]Você está na equipe {0}
-mcPlayerListener.PartyMembers=[[GREEN]]Membros da Equipe
-mcPlayerListener.LeftParty=[[RED]]Você saiu da equipe
-mcPlayerListener.JoinedParty=Sua Equipe: {0}
-mcPlayerListener.PartyChatOn=Chat da Equipe [[GREEN]]On
-mcPlayerListener.PartyChatOff=Chat da Equipe [[RED]]Off
-mcPlayerListener.AdminChatOn=Chat do Admin [[GREEN]]On
-mcPlayerListener.AdminChatOff=Chat do Admin [[RED]]Off
-mcPlayerListener.MOTD=[[BLUE]]Esse Server está rodando o mcMMO {0} digite [[YELLOW]]/{1}[[BLUE]] para obter ajuda.
-mcPlayerListener.WIKI=[[BLUE]]Para mais informaçoes - [[GREEN]]http://mcmmo.wikia.com
-mcPlayerListener.PowerLevel=[[RED]]NIVEL TOTAL:
-mcPlayerListener.PowerLevelLeaderboard=[[BLUE]]-Classificaçao - [[GREEN]]Nível - [[WHITE]]Jogador-
-mcPlayerListener.SkillLeaderboard=[[BLUE]]-Classificaçao em [[GREEN]]{0}
-mcPlayerListener.RepairSkill=Reparaçao (Repair):
-mcPlayerListener.SwordsSkill=Espadas (Swords):
-mcPlayerListener.TamingSkill=Domar (Taming):
-mcPlayerListener.UnarmedSkill=Desarmado (Unarmed):
-mcPlayerListener.WoodcuttingSkill=Lenhador (Woodcutting):
-mcPlayerListener.YourStats=[[GREEN]][mcMMO] Estatísticas
-Party.InformedOnJoin={0} [[GREEN]] entrou na equipe
-Party.InformedOnQuit={0} [[GREEN]] saiu da equipe
-
-Skills.YourGreenTerra=[[GREEN]]Sua habilidade [[YELLOW]]Green Terra [[GREEN]]está disponível!
-Skills.YourTreeFeller=[[GREEN]]Sua habilidade [[YELLOW]]Derrubador de Arvores [[GREEN]]está disponível!
-Skills.YourSuperBreaker=[[GREEN]]Sua habilidade [[YELLOW]]Super Britadeira [[GREEN]]está disponível!
-Skills.YourSerratedStrikes=[[GREEN]]Sua habilidade [[YELLOW]]Ataques Cortantes [[GREEN]]está disponível!
-Skills.YourBerserk=[[GREEN]]Sua habilidade [[YELLOW]]Fúria [[GREEN]]está disponível!
-Skills.YourSkullSplitter=[[GREEN]]Sua habilidade [[YELLOW]]Rachador de Crânios [[GREEN]]está disponível!
-Skills.YourGigaDrillBreaker=[[GREEN]]Sua habilidade [[YELLOW]]Super Broca [[GREEN]]está disponível!
-Skills.TooTired=[[RED]]Você está cansado pra usar essa habilidade.
-Skills.ReadyHoe=[[GREEN]]*ENXADA PRONTA PARA USAR GREEN TERRA*
-Skills.LowerHoe=[[GRAY]]*DESCARREGOU A ENXADA*
-Skills.ReadyAxe=[[GREEN]]*MACHADO PRONTO PARA USAR DERRUBADOR DE ARVORES*
-Skills.LowerAxe=[[GRAY]]*DESCARREGOU O MACHADO*
-Skills.ReadyFists=[[GREEN]]*PUNHO PRONTO PARA USAR FURIA*
-Skills.LowerFists=[[GRAY]]*DESCARREGOU O PUNHO*
-Skills.ReadyPickAxe=[[GREEN]]*PICARETA PRONTA PARA USAR SUPER BRITADEIRA*
-Skills.LowerPickAxe=[[GRAY]]*DESCARREGOU A PICARETA*
-Skills.ReadyShovel=[[GREEN]]*PA PRONTA PARA USAR SUPER BROCA*
-Skills.LowerShovel=[[GRAY]]*DESCARREGOU A PA*
-Skills.ReadySword=[[GREEN]]*ESPADA PRONTA PARA USAR ATAQUES CORTANTES*
-Skills.LowerSword=[[GRAY]]*DESCARREGOU A ESPADA*
-Skills.BerserkOn=[[GREEN]]*FURIA ATIVADA*
-Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] Usou a [[RED]]Fúria!
-Skills.GreenTerraOn=[[GREEN]]*GREEN TERRA ATIVADO*
-Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Green Terra!
-Skills.TreeFellerOn=[[GREEN]]*DERRUBADOR E ARVORES ATIVADO*
-Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Tree Feller!
-Skills.SuperBreakerOn=[[GREEN]]*SUPER BRITADEIRA ATIVADA*
-Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Super Britadeira!
-Skills.SerratedStrikesOn=[[GREEN]]*ATAQUES CORTANTES ATIVADO*
-Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Ataques Cortantes!
-Skills.SkullSplitterOn=[[GREEN]]*RACHADOR DE CRANIOS ATIVADO*
-Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Rachador de Crânios!
-Skills.GigaDrillBreakerOn=[[GREEN]]*SUPER BROCA ATIVADO*
-Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Super Broca!
-Skills.GreenTerraOff=[[RED]]*Green Terra acabou*
-Skills.TreeFellerOff=[[RED]]*Derrubador de Arvores acabou*
-Skills.SuperBreakerOff=[[RED]]*Super Britadeira acabou*
-Skills.SerratedStrikesOff=[[RED]]*Ataques Cortantes acabou*
-Skills.BerserkOff=[[RED]]*Fúria acabou*
-Skills.SkullSplitterOff=[[RED]]*Rachador de Crânios acabou*
-Skills.GigaDrillBreakerOff=[[RED]]*Super Broca acabou*
-Skills.TamingUp=[[YELLOW]]Habilidade de Domar aumentada em {0}. Total ({1})
-Skills.AcrobaticsUp=[[YELLOW]]Habilidade Acrobacia aumentada em {0}. Total ({1})
-Skills.ArcheryUp=[[YELLOW]]Habilidade de Arqueiro aumentada em {0}. Total ({1})
-Skills.SwordsUp=[[YELLOW]]Habilidade com Espadas aumentada em {0}. Total ({1})
-Skills.AxesUp=[[YELLOW]]Habilidade com Machados aumentada em {0}. Total ({1})
-Skills.UnarmedUp=[[YELLOW]]Habilidade Desarmado aumentada em {0}. Total ({1})
-Skills.HerbalismUp=[[YELLOW]]Habilidade Herbalismo aumentada em {0}. Total ({1})
-Skills.MiningUp=[[YELLOW]]Habilidade de Mineraçao aumentada em {0}. Total ({1})
-Skills.WoodcuttingUp=[[YELLOW]]Habilidade de Lenhador aumentada em {0}. Total ({1})
-Skills.RepairUp=[[YELLOW]]Habilidade de Reparaçao aumentada em {0}. Total ({1})
-Skills.ExcavationUp=[[YELLOW]]Habilidade de Escavaçao aumentada em {0}. Total ({1})
-Skills.FeltEasy=[[GRAY]]Essa foi fácil.
-Skills.StackedItems=[[DARK_RED]]Nao pode reparar itens empilhados juntos.
-Skills.NeedMore=[[DARK_RED]]Você precisa de mais
-Skills.AdeptDiamond=[[DARK_RED]]Você nao tem o nível necessário para reparar Diamante
-Skills.FullDurability=[[GRAY]]Já está com Durabilidade cheia.
-Skills.Disarmed=[[DARK_RED]]Você foi Desarmado!
-mcPlayerListener.SorcerySkill=Feitiçaria (Sorcery):
-
-m.SkillSorcery=FEITIÇARIA
-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]] Sem Mana [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
-Sorcery.Water.Thunder=TROVAO
-Sorcery.Curative.Self=CURAR-SE
-Sorcery.Curative.Other=CURAR AMIGOS
-
-m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
-Combat.BeastLore=[[GREEN]]*CONHECIMENTO DE FERAS*
-Combat.BeastLoreOwner=[[DARK_AQUA]]Dono ([[RED]]{0}[[DARK_AQUA]])
-Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/20)
-Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Vida ([[GREEN]]{0}[[DARK_AQUA]]/8)
-mcMMO.Description=[[DARK_AQUA]]Q: O QUE E? [[GOLD]]mcMMO é um mod [[RED]]OPEN SOURCE[[GOLD]] de RPG para a plataforma "Bukkit" feito por [[BLUE]]nossr50.[[GOLD]] Ele acresenta uma série de habilidades ao Minecraft. [[GOLD]]Você pode ganhar experiência de muitas maneiras.,[[GOLD]]Digite [[GREEN]]/NOME_DA_HABILIDADE[[GOLD]] para obter informaçoes sobre a habilidade.,[[DARK_AQUA]]Q: O QUE ELE FAZ? [[GOLD]]Por exemplo... em [[DARK_AQUA]]Mineraçao[[GOLD]] você receberá benefícios tais como [[RED]]Drop x2[[GOLD]] ou a habilidade [[RED]]Super Esmagador.[[GOLD]] que quando ativada com o clique direito permite minerar rapidamente durante sua duraçao. [[GOLD]]que depende do nível da sua habilidade. Aumentar o nível de [[BLUE]]Mineraçao[[GOLD]] é simples. basta minerar pedras ou minérios!,[[GOLD]]O objetivo do mcMMO é criar uma experiência de RPG de qualidade.,[[GOLD]]Digite [[GREEN]]/{0}[[GOLD]] para uma lista de comandos possíveis.,[[DARK_AQUA]]Q: ONDE POSSO SUGERIR IDEIAS!?,[[GOLD]]No tópico do mcMMO no fórum bukkit! (www.bit.ly/MCmmoIDEA),[[DARK_AQUA]]Q: Para mais informaçoes. leia a wiki do McMMO: [[RED]]mcmmo.wikia.com
-Party.Locked=[[RED]]Equipe está trancada, só o líder pode convidar.
-Party.IsntLocked=[[GRAY]]Equipe nao está trancada
-Party.Unlocked=[[GRAY]]Equipe foi Destrancada
-Party.Help1=[[RED]]O uso certo é [[YELLOW]]/{0} [[WHITE]][[YELLOW]] ou [[WHITE]]'q' [[YELLOW]]para sair
-Party.Help2=[[RED]]Para entrar em uma equipe com senha use [[YELLOW]]/{0} [[WHITE]]
-Party.Help3=[[RED]]Consulte /{0} ? para mais informaçoes
-Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]para entrar em uma equipe ou [[WHITE]]'q' [[YELLOW]]para sair
-Party.Help5=[[RED]]Para trancar sua equipe use [[YELLOW]]/{0} [[WHITE]]lock
-Party.Help6=[[RED]]Para destrancar sua equipe use [[YELLOW]]/{0} [[WHITE]]unlock
-Party.Help7=[[RED]]Para colocar senha na sua equipe use [[YELLOW]]/{0} [[WHITE]]password
-Party.Help8=[[RED]]Para excluir um jogador da equipe use [[YELLOW]]/{0} [[WHITE]]kick
-Party.Help9=[[RED]]Para transferir a liderança da equipe use [[YELLOW]]/{0} [[WHITE]]owner
-Party.NotOwner=[[DARK_RED]]Você nao é o líder da equipe
-Party.InvalidName=[[DARK_RED]]Este nome nao é valido
-Party.PasswordSet=[[GREEN]]Senha da equipe: {0}
-Party.CouldNotKick=[[DARK_RED]]Nao foi possível excluir o jogador {0}
-Party.NotInYourParty=[[DARK_RED]]{0} nao está na sua equipe
-Party.CouldNotSetOwner=[[DARK_RED]]Nao foi possível passar a liderança para {0}
-Commands.xprate.proper=[[DARK_AQUA]]Uso certo é /{0} [integer] [true:false]
-Commands.xprate.proper2=[[DARK_AQUA]]Também pode digitar /{0} reset para voltar tudo ao padrao
-Commands.xprate.proper3=[[RED]]Enter true or false for the second value
-Commands.xprate.over=[[RED]]Evento de XP Rate acabou!!
-Commands.xprate.started=[[GOLD]]EVENTO DE XP COMEÇOU!
-Commands.xprate.started2=[[GOLD]]XP RATE AGORA é {0}x!!
-Commands.xplock.locked=[[GOLD]]Sua barra de XP BAR está travada em {0}!
-Commands.xplock.unlocked=[[GOLD]]Sua barra de XP foi [[GREEN]]DESTRAVADA[[GOLD]]!
-Commands.xplock.invalid=[[RED]]Nao existe habilidade com esse nome! Tente /xplock mining
-m.SkillAlchemy=ALCHEMY
-m.SkillEnchanting=ENCHANTING
-m.SkillFishing=FISHING
-mcPlayerListener.AlchemySkill=Alchemy:
-mcPlayerListener.EnchantingSkill=Enchanting:
-mcPlayerListener.FishingSkill=Fishing:
-Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
-Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
-Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
-Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
-Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
-Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
-Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
-m.EffectsRepair5_0=Arcane Forging
-m.EffectsRepair5_1=Repair magic items
-m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
-m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
-m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
-m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
-m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
-Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
-Fishing.ItemFound=[[GRAY]]Treasure found!
-m.SkillFishing=FISHING
-m.XPGainFishing=Fishing (Go figure!)
-m.EffectsFishing1_0=Treasure Hunter (Passive)
-m.EffectsFishing1_1=Fish up misc objects
-m.EffectsFishing2_0=Magic Hunter
-m.EffectsFishing2_1=Find Enchanted Items
-m.EffectsFishing3_0=Shake (vs. Entities)
-m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
-m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
-m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
-m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
-m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
-m.TamingSummon=[[GREEN]]Summoning complete
-m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
-m.EffectsTaming7_0=Call of the Wild
-m.EffectsTaming7_1=Summon a wolf to your side
+Combat.WolfExamine=[[GREEN]]*Você examinou um lobo usando Conhecimento de Feras*
+Combat.WolfShowMaster=[[DARK_GREEN]]O Mestre das Feras \: {0}
+Combat.Ignition=[[RED]]*IGNIÇAO*
+Combat.BurningArrowHit=[[DARK_RED]]Você foi atingido por uma flecha flamejante\!
+Combat.TouchedFuzzy=[[DARK_RED]]Visao turva. Sente Tonturas.
+Combat.TargetDazed=Alvo foi [[DARK_RED]]Atordoado
+Combat.WolfNoMaster=[[GRAY]]Esse Animal nao tem um mestre...
+Combat.WolfHealth=[[GREEN]]Esse animal tem {0} de vida
+Combat.StruckByGore=[[RED]]*ATINGIDO POR MORDIDA*
+Combat.Gore=[[GREEN]]*MORDIDA*
+Combat.ArrowDeflect=[[WHITE]]*DESVIOU A FLECHA*
+Item.ChimaeraWingFail=*ASA QUIMERA FALHOU\!*
+Item.ChimaeraWingPass=*ASA QUIMERA*
+Item.InjuredWait=Você foi ferido recentemente e tem que esperar para usar isto. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]Você precisa de mais penas...
+m.mccPartyCommands=[[GREEN]]--COMANDOS DE EQUIPES--
+m.mccParty=[party name] [[RED]]- Criar/Juntar-se a uma equipe
+m.mccPartyQ=[[RED]]- Sair da equipe atual
+m.mccPartyToggle=[[RED]] - Ligar/Desligar chat da equipe
+m.mccPartyInvite=[player name] [[RED]]- Enviar um convite
+m.mccPartyAccept=[[RED]]- Aceitar convite
+m.mccPartyTeleport=[party member name] [[RED]]- Teleportar para um membro de equipe
+m.mccOtherCommands=[[GREEN]]--OUTROS COMANDOS--
+m.mccStats=- Ver seus status
+m.mccLeaderboards=- Classificaçao
+m.mccMySpawn=- Teleportar para o spawn
+m.mccClearMySpawn=- Remove o Ponto de Spawn
+m.mccToggleAbility=- Ativa habilidades especiais com botao direito
+m.mccAdminToggle=- Ativa o chat dos admin
+m.mccWhois=[playername] [[RED]]- Ver informaçoes do jogador
+m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Modificar atributos do jogador
+m.mccMcGod=- Modo Deus
+m.mccSkillInfo=[skillname] [[RED]]- Ver informaçoes sobre a habilidade
+m.mccModDescription=[[RED]]- Breve descriçao do Mod
+m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
+m.XPGain=[[DARK_GRAY]]COMO GANHA XP: [[WHITE]]{0}
+m.EffectsTemplate=[[DARK_AQUA]]{0}: [[GREEN]]{1}
+m.AbilityLockTemplate=[[GRAY]]{0}
+m.AbilityBonusTemplate=[[RED]]{0}: [[YELLOW]]{1}
+m.Effects=EFEITOS
+m.YourStats=SUAS ESTATISTICAS
+m.SkillTaming=DOMESTICAR
+m.XPGainTaming=Ataque com um lobo
+m.EffectsTaming1_0=Conhecimento de Feras
+m.EffectsTaming1_1=Inspeciona um lobo com um osso
+m.EffectsTaming2_0=Mordida
+m.EffectsTaming2_1=Ataque crítico que causa hemorragia
+m.EffectsTaming3_0=Garras afiadas
+m.EffectsTaming3_1=Bônus de Dano
+m.EffectsTaming4_0=Consciência do Ambiente
+m.EffectsTaming4_1=Medo de Cactos e Lava, Imune a Dano por queda
+m.EffectsTaming5_0=Pele Grossa
+m.EffectsTaming5_1=Reduçao nos Danos, Resistência ao fogo
+m.EffectsTaming6_0=A Prova de Choque
+m.EffectsTaming6_1=Reduz danos tomados com explosivos
+m.AbilLockTaming1=DESBLOQUEIE NO NIVEL 100 (Conciência do ambiente)
+m.AbilLockTaming2=DESBLOQUEIE NO NIVEL 250 (Pele grossa)
+m.AbilLockTaming3=DESBLOQUEIE NO NIVEL 500 (A prova de choque)
+m.AbilLockTaming4=DESBLOQUEIE NO NIVEL 750 (Garras afiadas)
+m.AbilBonusTaming1_0=Conciência do ambiente
+m.AbilBonusTaming1_1=Lobos evitam perigo
+m.AbilBonusTaming2_0=Pele grossa
+m.AbilBonusTaming2_1=Danos pela metade, Resistência ao fogo
+m.AbilBonusTaming3_0=A prova de choque
+m.AbilBonusTaming3_1=Explosivos causam 1/6 do dano normal
+m.AbilBonusTaming4_0=Garras afiadas
+m.AbilBonusTaming4_1=+2 Dano
+m.TamingGoreChance=[[RED]]Chance de Mordida: [[YELLOW]]{0}%
+
+m.SkillWoodCutting=LENHADOR
+m.XPGainWoodCutting=Cortando árvores
+m.EffectsWoodCutting1_0=Derrubador de árvores (HABILIDADE ESPECIAL)
+m.EffectsWoodCutting1_1=Explode árvores
+m.EffectsWoodCutting2_0=Soprador de Folhas
+m.EffectsWoodCutting2_1=Destrói folhas rapidamente
+m.EffectsWoodCutting3_0=Drop x2
+m.EffectsWoodCutting3_1=Dobra a quantidade de item dropados
+m.AbilLockWoodCutting1=DESBLOQUEIE NO NIVEL 100 (SOPRADOR DE FOLHAS)
+m.AbilBonusWoodCutting1_0=Soprador de Folhas
+m.AbilBonusWoodCutting1_1=Destrói folhas rapidamente
+m.WoodCuttingDoubleDropChance=[[RED]]Chance de Drop x2: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Duraçao do Derrubador de árvores: [[YELLOW]]{0}s
+
+m.SkillArchery=ARCO E FLECHA
+m.XPGainArchery=Atacando monstros/
+m.EffectsArchery1_0=Igniçao
+m.EffectsArchery1_1=25% de chance dos inimigos pegarem fogo
+m.EffectsArchery2_0=Atordoar (Jogadores)
+m.EffectsArchery2_1=Desorienta os adversários
+m.EffectsArchery3_0=+Dano
+m.EffectsArchery3_1=Aumenta o Dano
+m.EffectsArchery4_0=Recuperar Flechas
+m.EffectsArchery4_1=Chance de recuperar flechas de corpos
+m.ArcheryDazeChance=[[RED]]Chance de atordoar: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Chance de recuperar flechas: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Duraçao da Igniçao: [[YELLOW]]{0}s
+m.ArcheryDamagePlus=[[RED]]+Dano (Rank{0}): [[YELLOW]]Bonus de {0} dano
+
+m.SkillAxes=MACHADOS
+m.XPGainAxes=Atacando monstros
+m.EffectsAxes1_0=Rachador de Crânios (HABILIDADE ESPECIAL)
+m.EffectsAxes1_1=Causa Danos em Area
+m.EffectsAxes2_0=Ataques Críticos
+m.EffectsAxes2_1=Dobra o Dano
+m.EffectsAxes3_0=Mestre com Machados (NIVEL 500)
+m.EffectsAxes3_1=Aumenta o Dano
+m.AbilLockAxes1=DESBLOQUEIE NO NIVEL 500 (Mestre com Machados)
+m.AbilBonusAxes1_0=Mestre com Machados/
+m.AbilBonusAxes1_1=Bônus de 4 de dano
+m.AxesCritChance=[[RED]]Chance ataque crítico: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Duraçao do Rachador de Crânios: [[YELLOW]]{0}s
+
+m.SkillSwords=ESPADAS
+m.XPGainSwords=Atacando monstros
+m.EffectsSwords1_0=Contra-Ataque
+m.EffectsSwords1_1=Retorna 50% do dano tomado
+m.EffectsSwords2_0=Ataques Cortantes (HABILIDADE ESPECIAL)
+m.EffectsSwords2_1=25% de Danos em Area, e Efeito de Hemorraria
+m.EffectsSwords3_0=Ataque Cortante com Hemorragia
+m.EffectsSwords3_1=5 Sangramentos
+m.EffectsSwords4_0=Desviar
+m.EffectsSwords4_1=Anula o Dano
+m.EffectsSwords5_0=Hemorragia
+m.EffectsSwords5_1=Causa sangramentos repetidos ao longo do tempo
+m.SwordsCounterAttChance=[[RED]]Chance de Contra-Ataque: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Duraçao da Hemorragia: [[YELLOW]]{0} ticks
+m.SwordsBleedChance=[[RED]]Chance de Hemorragia: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Chance de Desviar: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Duraçao do Ataques Cortantes: [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]NOTA: [[YELLOW]]1 sangramento a cada 2 segundos
+
+m.SkillAcrobatics=ACROBACIA
+m.XPGainAcrobatics=Caindo
+m.EffectsAcrobatics1_0=Rolar
+m.EffectsAcrobatics1_1=Reduz ou anula o dano
+m.EffectsAcrobatics2_0=Rolar com estilo
+m.EffectsAcrobatics2_1=2 vezes mais efetivo de que "Rolar"
+m.EffectsAcrobatics3_0=Esquivar
+m.EffectsAcrobatics3_1=Reduz o dano pela metade
+m.AcrobaticsRollChance=[[RED]]Chance de Rolar: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Chance de Rolar com estilo: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Chance de Esquivar: [[YELLOW]]{0}%
+
+m.SkillMining=MINERAÇAO
+m.XPGainMining=Minerando Pedras e Minérios
+m.EffectsMining1_0=Super Britadeira (HABILIDADE ESPECIAL)
+m.EffectsMining1_1=+ Velocidade, Chance de Drop x3
+m.EffectsMining2_0=Drop x2
+m.EffectsMining2_1=Dobra a quantia de itens obtidos minerando
+m.MiningDoubleDropChance=[[RED]]Chance de D/rop x2: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Duraçao da Super Britadeira: [[YELLOW]]{0}s
+
+m.SkillRepair=REPARAÇAO
+m.XPGainRepair=Reparando itens
+m.EffectsRepair1_0=Reparar
+m.EffectsRepair1_1=Reparando Ferramentas e Armaduras de Ferro
+m.EffectsRepair2_0=Mestre em Raparaçao
+m.EffectsRepair2_1=Aumenta a quantia reparada
+m.EffectsRepair3_0=Super Reparaçao
+m.EffectsRepair3_1=Dobra a efetividade da Reparaçao
+m.EffectsRepair4_0=Reparaçao de diamantes (Nível {0})
+m.EffectsRepair4_1=Rapara Ferramentas e Armaduras de Diamante
+m.RepairRepairMastery=[[RED]]Mestre em Raparaçao: [[YELLOW]]{0}% extra restaurado
+m.RepairSuperRepairChance=[[RED]]Chance de Super Reparaçao: [[YELLOW]]{0}%
+
+m.SkillUnarmed=DESARMADO
+m.XPGainUnarmed=Atacando monstros
+m.EffectsUnarmed1_0=Fúria (HABILIDADE ESPECIAL)
+m.EffectsUnarmed1_1=+50% de Dano, Quebra materiais frágeis
+m.EffectsUnarmed2_0=Desarmar (Jogadores)
+m.EffectsUnarmed2_1=Derruba a arma que o adversário está segurando
+m.EffectsUnarmed3_0=Mestre do Desarmamento
+m.EffectsUnarmed3_1=Aumenta muito o Dano
+m.EffectsUnarmed4_0=Aprendiz do Desarmamento
+m.EffectsUnarmed4_1=Aumenta o Dano
+m.EffectsUnarmed5_0=Desviar Flechas
+m.EffectsUnarmed5_1=Desvia Flechas jogadas em você
+m.AbilLockUnarmed1=DESBLOQUEIE NO NIVEL 250 (APRENDIZ DE DESARMAMENTO)
+m.AbilLockUnarmed2=DESBLOQUEIE NO NIVEL 500 (MESTRE DE DESARMAMENTO)
+m.AbilBonusUnarmed1_0=Aprendiz do Desarmamento
+m.AbilBonusUnarmed1_1=+2 de Danos
+m.AbilBonusUnarmed2_0=Mestre do Desarmamento
+m.AbilBonusUnarmed2_1=+4 de Danos
+m.UnarmedArrowDeflectChance=[[RED]]Chance de Desviar Flechas: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Chance de Desarmar: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Duraçao da Fúria: [[YELLOW]]{0}s
+
+m.SkillHerbalism=HERBALISMO
+m.XPGainHerbalism=Colhendo Ervas
+m.EffectsHerbalism1_0=Green Terra (HABILIDADE ESPECIAL)
+m.EffectsHerbalism1_1=EXP x3, Drop x3
+m.EffectsHerbalism2_0=Dedos Verdes (Trigo)
+m.EffectsHerbalism2_1=Planta automaticamente, ao colher trigo
+m.EffectsHerbalism3_0=Dedos Verdes (Pedras)
+m.EffectsHerbalism3_1=Transforma Cobblestone em Moss Stone (usa sementes)
+m.EffectsHerbalism4_0=Comida+
+m.EffectsHerbalism4_1=Aumenta a vida recebida comendo pao ou sopa
+m.EffectsHerbalism5_0=Drop x2 (Todas Ervas)
+m.EffectsHerbalism5_1=Dobra a quantia de itens obtidos colhendo
+m.HerbalismGreenTerraLength=[[RED]]Duraçao do Green Terra: [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Chance do Dedos Verdes: [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Nível do Dedos Verdes: [[YELLOW]] Trigo Cresce no Nível {0}
+m.HerbalismDoubleDropChance=[[RED]]Chance de Drop x2: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Comida+ (Rank{0}): [[YELLOW]]Bônus de {0} de vida
+
+m.SkillExcavation=ESCAVAÇAO
+m.XPGainExcavation=Cavando e encontrando tesouros
+m.EffectsExcavation1_0=Super Broca (HABILIDADE ESPECIAL)
+m.EffectsExcavation1_1=Drop x3, EXP x3, mais velocidade
+m.EffectsExcavation2_0=Caçad/or de Tesouros
+m.EffectsExcavation2_1=Encontra itens raros enquanto cava
+m.ExcavationGreenTerraLength=[[RED]]Duraçao da Super Broca: [[YELLOW]]{0}s
+
+mcBlockListener.PlacedAnvil=[[DARK_RED]] Você colocou uma bigorna, a bigorna pode reparar ferramentas e armaduras.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Seu lobo voltou para você...
+mcPlayerListener.AbilitiesOff=Habilidade especial desabilitada
+mcPlayerListener.AbilitiesOn=Habilidade especial ativada
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]*HABILIDAE DISPONIVEL\!*
+mcPlayerListener.AcrobaticsSkill=Acrobacia (Acrobatics):
+mcPlayerListener.ArcherySkill=Arqueiro (Archery):
+mcPlayerListener.AxesSkill=Machado (Axes):
+mcPlayerListener.ExcavationSkill=Escavaçao (Excavation):
+mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO Modo Deus Desabilitado
+mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Modo Deus Ativo
+mcPlayerListener.GreenThumb=[[GREEN]]*DEDOS VERDES*
+mcPlayerListener.GreenThumbFail=[[RED]]*DEDOS VERDES FALHOU*
+mcPlayerListener.HerbalismSkill=Herbalismo (Herbalism):
+mcPlayerListener.MiningSkill=Mineraçao (Mining):
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Ponto de Spawn foi apagado.
+mcPlayerListener.MyspawnNotExist=[[RED]]Primeiro crie um spawn durmindo na cama.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Spawn foi gravado neste local.
+mcPlayerListener.MyspawnTimeNotice=Você precisa esperar {0}m {1}s para usar "myspawn"
+mcPlayerListener.NoPermission=Nao tem permissao para realizar esta açao.
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Se você nao tem acesso a uma habilidade, ela nao será exibida aqui.
+mcPlayerListener.NotInParty=[[RED]]Você nao está em nenhuma equipe.
+mcPlayerListener.InviteSuccess=[[GREEN]]Convite enviado.
+mcPlayerListener.ReceivedInvite1=[[RED]]ALERTA: [[GREEN]]Você recebeu um convite do {1} para a equipe {0}.
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Digite [[GREEN]]/{0}[[YELLOW]] para aceitar o convite
+mcPlayerListener.InviteAccepted=[[GREEN]]Convite aceito. Você se juntou a equipe {0}
+mcPlayerListener.NoInvites=[[RED]]Você nao tem convites pendentes.
+mcPlayerListener.YouAreInParty=[[GREEN]]Você está na equipe {0}
+mcPlayerListener.PartyMembers=[[GREEN]]Membros da Equipe
+mcPlayerListener.LeftParty=[[RED]]Você saiu da equipe
+mcPlayerListener.JoinedParty=Sua Equipe: {0}
+mcPlayerListener.PartyChatOn=Chat da Equipe [[GREEN]]On
+mcPlayerListener.PartyChatOff=Chat da Equipe [[RED]]Off
+mcPlayerListener.AdminChatOn=Chat do Admin [[GREEN]]On
+mcPlayerListener.AdminChatOff=Chat do Admin [[RED]]Off
+mcPlayerListener.MOTD=[[BLUE]]Esse Server está rodando o mcMMO {0} digite [[YELLOW]]/{1}[[BLUE]] para obter ajuda.
+mcPlayerListener.WIKI=[[BLUE]]Para mais informaçoes - [[GREEN]]http://mcmmo.wikia.com
+mcPlayerListener.PowerLevel=[[RED]]NIVEL TOTAL:
+mcPlayerListener.PowerLevelLeaderboard=[[BLUE]]-Classificaçao - [[GREEN]]Nível - [[WHITE]]Jogador-
+mcPlayerListener.SkillLeaderboard=[[BLUE]]-Classificaçao em [[GREEN]]{0}
+mcPlayerListener.RepairSkill=Reparaçao (Repair):
+mcPlayerListener.SwordsSkill=Espadas (Swords):
+mcPlayerListener.TamingSkill=Domar (Taming):
+mcPlayerListener.UnarmedSkill=Desarmado (Unarmed):
+mcPlayerListener.WoodcuttingSkill=Lenhador (Woodcutting):
+mcPlayerListener.YourStats=[[GREEN]][mcMMO] Estatísticas
+Party.InformedOnJoin={0} [[GREEN]] entrou na equipe
+Party.InformedOnQuit={0} [[GREEN]] saiu da equipe
+
+Skills.YourGreenTerra=[[GREEN]]Sua habilidade [[YELLOW]]Green Terra [[GREEN]]está disponível!
+Skills.YourTreeFeller=[[GREEN]]Sua habilidade [[YELLOW]]Derrubador de Arvores [[GREEN]]está disponível!
+Skills.YourSuperBreaker=[[GREEN]]Sua habilidade [[YELLOW]]Super Britadeira [[GREEN]]está disponível!
+Skills.YourSerratedStrikes=[[GREEN]]Sua habilidade [[YELLOW]]Ataques Cortantes [[GREEN]]está disponível!
+Skills.YourBerserk=[[GREEN]]Sua habilidade [[YELLOW]]Fúria [[GREEN]]está disponível!
+Skills.YourSkullSplitter=[[GREEN]]Sua habilidade [[YELLOW]]Rachador de Crânios [[GREEN]]está disponível!
+Skills.YourGigaDrillBreaker=[[GREEN]]Sua habilidade [[YELLOW]]Super Broca [[GREEN]]está disponível!
+Skills.TooTired=[[RED]]Você está cansado pra usar essa habilidade.
+Skills.ReadyHoe=[[GREEN]]*ENXADA PRONTA PARA USAR GREEN TERRA*
+Skills.LowerHoe=[[GRAY]]*DESCARREGOU A ENXADA*
+Skills.ReadyAxe=[[GREEN]]*MACHADO PRONTO PARA USAR DERRUBADOR DE ARVORES*
+Skills.LowerAxe=[[GRAY]]*DESCARREGOU O MACHADO*
+Skills.ReadyFists=[[GREEN]]*PUNHO PRONTO PARA USAR FURIA*
+Skills.LowerFists=[[GRAY]]*DESCARREGOU O PUNHO*
+Skills.ReadyPickAxe=[[GREEN]]*PICARETA PRONTA PARA USAR SUPER BRITADEIRA*
+Skills.LowerPickAxe=[[GRAY]]*DESCARREGOU A PICARETA*
+Skills.ReadyShovel=[[GREEN]]*PA PRONTA PARA USAR SUPER BROCA*
+Skills.LowerShovel=[[GRAY]]*DESCARREGOU A PA*
+Skills.ReadySword=[[GREEN]]*ESPADA PRONTA PARA USAR ATAQUES CORTANTES*
+Skills.LowerSword=[[GRAY]]*DESCARREGOU A ESPADA*
+Skills.BerserkOn=[[GREEN]]*FURIA ATIVADA*
+Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] Usou a [[RED]]Fúria!
+Skills.GreenTerraOn=[[GREEN]]*GREEN TERRA ATIVADO*
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Green Terra!
+Skills.TreeFellerOn=[[GREEN]]*DERRUBADOR E ARVORES ATIVADO*
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Tree Feller!
+Skills.SuperBreakerOn=[[GREEN]]*SUPER BRITADEIRA ATIVADA*
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Super Britadeira!
+Skills.SerratedStrikesOn=[[GREEN]]*ATAQUES CORTANTES ATIVADO*
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Ataques Cortantes!
+Skills.SkullSplitterOn=[[GREEN]]*RACHADOR DE CRANIOS ATIVADO*
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Rachador de Crânios!
+Skills.GigaDrillBreakerOn=[[GREEN]]*SUPER BROCA ATIVADO*
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Super Broca!
+Skills.GreenTerraOff=[[RED]]*Green Terra acabou*
+Skills.TreeFellerOff=[[RED]]*Derrubador de Arvores acabou*
+Skills.SuperBreakerOff=[[RED]]*Super Britadeira acabou*
+Skills.SerratedStrikesOff=[[RED]]*Ataques Cortantes acabou*
+Skills.BerserkOff=[[RED]]*Fúria acabou*
+Skills.SkullSplitterOff=[[RED]]*Rachador de Crânios acabou*
+Skills.GigaDrillBreakerOff=[[RED]]*Super Broca acabou*
+Skills.TamingUp=[[YELLOW]]Habilidade de Domar aumentada em {0}. Total ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Habilidade Acrobacia aumentada em {0}. Total ({1})
+Skills.ArcheryUp=[[YELLOW]]Habilidade de Arqueiro aumentada em {0}. Total ({1})
+Skills.SwordsUp=[[YELLOW]]Habilidade com Espadas aumentada em {0}. Total ({1})
+Skills.AxesUp=[[YELLOW]]Habilidade com Machados aumentada em {0}. Total ({1})
+Skills.UnarmedUp=[[YELLOW]]Habilidade Desarmado aumentada em {0}. Total ({1})
+Skills.HerbalismUp=[[YELLOW]]Habilidade Herbalismo aumentada em {0}. Total ({1})
+Skills.MiningUp=[[YELLOW]]Habilidade de Mineraçao aumentada em {0}. Total ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Habilidade de Lenhador aumentada em {0}. Total ({1})
+Skills.RepairUp=[[YELLOW]]Habilidade de Reparaçao aumentada em {0}. Total ({1})
+Skills.ExcavationUp=[[YELLOW]]Habilidade de Escavaçao aumentada em {0}. Total ({1})
+Skills.FeltEasy=[[GRAY]]Essa foi fácil.
+Skills.StackedItems=[[DARK_RED]]Nao pode reparar itens empilhados juntos.
+Skills.NeedMore=[[DARK_RED]]Você precisa de mais
+Skills.AdeptDiamond=[[DARK_RED]]Você nao tem o nível necessário para reparar Diamante
+Skills.FullDurability=[[GRAY]]Já está com Durabilidade cheia.
+Skills.Disarmed=[[DARK_RED]]Você foi Desarmado!
+mcPlayerListener.SorcerySkill=Feitiçaria (Sorcery):
+
+m.SkillSorcery=FEITIÇARIA
+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]] Sem Mana [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=TROVAO
+Sorcery.Curative.Self=CURAR-SE
+Sorcery.Curative.Other=CURAR AMIGOS
+
+m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]*CONHECIMENTO DE FERAS*
+Combat.BeastLoreOwner=[[DARK_AQUA]]Dono ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Vida ([[GREEN]]{0}[[DARK_AQUA]]/8)
+mcMMO.Description=[[DARK_AQUA]]Q: O QUE E? [[GOLD]]mcMMO é um mod [[RED]]OPEN SOURCE[[GOLD]] de RPG para a plataforma "Bukkit" feito por [[BLUE]]nossr50.[[GOLD]] Ele acresenta uma série de habilidades ao Minecraft. [[GOLD]]Você pode ganhar experiência de muitas maneiras.,[[GOLD]]Digite [[GREEN]]/NOME_DA_HABILIDADE[[GOLD]] para obter informaçoes sobre a habilidade.,[[DARK_AQUA]]Q: O QUE ELE FAZ? [[GOLD]]Por exemplo... em [[DARK_AQUA]]Mineraçao[[GOLD]] você receberá benefícios tais como [[RED]]Drop x2[[GOLD]] ou a habilidade [[RED]]Super Esmagador.[[GOLD]] que quando ativada com o clique direito permite minerar rapidamente durante sua duraçao. [[GOLD]]que depende do nível da sua habilidade. Aumentar o nível de [[BLUE]]Mineraçao[[GOLD]] é simples. basta minerar pedras ou minérios!,[[GOLD]]O objetivo do mcMMO é criar uma experiência de RPG de qualidade.,[[GOLD]]Digite [[GREEN]]/{0}[[GOLD]] para uma lista de comandos possíveis.,[[DARK_AQUA]]Q: ONDE POSSO SUGERIR IDEIAS!?,[[GOLD]]No tópico do mcMMO no fórum bukkit! (www.bit.ly/MCmmoIDEA),[[DARK_AQUA]]Q: Para mais informaçoes. leia a wiki do McMMO: [[RED]]mcmmo.wikia.com
+Party.Locked=[[RED]]Equipe está trancada, só o líder pode convidar.
+Party.IsntLocked=[[GRAY]]Equipe nao está trancada
+Party.Unlocked=[[GRAY]]Equipe foi Destrancada
+Party.Help1=[[RED]]O uso certo é [[YELLOW]]/{0} [[WHITE]][[YELLOW]] ou [[WHITE]]'q' [[YELLOW]]para sair
+Party.Help2=[[RED]]Para entrar em uma equipe com senha use [[YELLOW]]/{0} [[WHITE]]
+Party.Help3=[[RED]]Consulte /{0} ? para mais informaçoes
+Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]] [[YELLOW]]para entrar em uma equipe ou [[WHITE]]'q' [[YELLOW]]para sair
+Party.Help5=[[RED]]Para trancar sua equipe use [[YELLOW]]/{0} [[WHITE]]lock
+Party.Help6=[[RED]]Para destrancar sua equipe use [[YELLOW]]/{0} [[WHITE]]unlock
+Party.Help7=[[RED]]Para colocar senha na sua equipe use [[YELLOW]]/{0} [[WHITE]]password
+Party.Help8=[[RED]]Para excluir um jogador da equipe use [[YELLOW]]/{0} [[WHITE]]kick
+Party.Help9=[[RED]]Para transferir a liderança da equipe use [[YELLOW]]/{0} [[WHITE]]owner
+Party.NotOwner=[[DARK_RED]]Você nao é o líder da equipe
+Party.InvalidName=[[DARK_RED]]Este nome nao é valido
+Party.PasswordSet=[[GREEN]]Senha da equipe: {0}
+Party.CouldNotKick=[[DARK_RED]]Nao foi possível excluir o jogador {0}
+Party.NotInYourParty=[[DARK_RED]]{0} nao está na sua equipe
+Party.CouldNotSetOwner=[[DARK_RED]]Nao foi possível passar a liderança para {0}
+Commands.xprate.proper=[[DARK_AQUA]]Uso certo é /{0} [integer] [true:false]
+Commands.xprate.proper2=[[DARK_AQUA]]Também pode digitar /{0} reset para voltar tudo ao padrao
+Commands.xprate.proper3=[[RED]]Enter true or false for the second value
+Commands.xprate.over=[[RED]]Evento de XP Rate acabou!!
+Commands.xprate.started=[[GOLD]]EVENTO DE XP COMEÇOU!
+Commands.xprate.started2=[[GOLD]]XP RATE AGORA é {0}x!!
+Commands.xplock.locked=[[GOLD]]Sua barra de XP BAR está travada em {0}!
+Commands.xplock.unlocked=[[GOLD]]Sua barra de XP foi [[GREEN]]DESTRAVADA[[GOLD]]!
+Commands.xplock.invalid=[[RED]]Nao existe habilidade com esse nome! Tente /xplock mining
+m.SkillAlchemy=ALCHEMY
+m.SkillEnchanting=ENCHANTING
+m.SkillFishing=FISHING
+mcPlayerListener.AlchemySkill=Alchemy:
+mcPlayerListener.EnchantingSkill=Enchanting:
+mcPlayerListener.FishingSkill=Fishing:
+Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
+Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
+Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
+Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
+Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
+Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
+Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
+m.EffectsRepair5_0=Arcane Forging
+m.EffectsRepair5_1=Repair magic items
+m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
+m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
+m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
+m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
+m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
+Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
+Fishing.ItemFound=[[GRAY]]Treasure found!
+m.SkillFishing=FISHING
+m.XPGainFishing=Fishing (Go figure!)
+m.EffectsFishing1_0=Treasure Hunter (Passive)
+m.EffectsFishing1_1=Fish up misc objects
+m.EffectsFishing2_0=Magic Hunter
+m.EffectsFishing2_1=Find Enchanted Items
+m.EffectsFishing3_0=Shake (vs. Entities)
+m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
+m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
+m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
+m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
+m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
+m.TamingSummon=[[GREEN]]Summoning complete
+m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
+m.EffectsTaming7_0=Call of the Wild
+m.EffectsTaming7_1=Summon a wolf to your side
m.EffectsTaming7_2=[[GRAY]]COTW HOW-TO: Crouch and right click with {0} Bones in hand
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/locale_ru.properties b/src/main/java/com/gmail/nossr50/locale/locale_ru.properties
similarity index 98%
rename from src/com/gmail/nossr50/locale/locale_ru.properties
rename to src/main/java/com/gmail/nossr50/locale/locale_ru.properties
index 842e64821..676f518a3 100644
--- a/src/com/gmail/nossr50/locale/locale_ru.properties
+++ b/src/main/java/com/gmail/nossr50/locale/locale_ru.properties
@@ -1,382 +1,382 @@
-Combat.WolfExamine=[[GREEN]]**Âû íàó÷èëè Âîëêà èñïîëüçîâàíèþ "Óäàðà âîëêà"**
-Combat.WolfExamine=[[GREEN]]**Âû íàó÷èëè Âîëêà èñïîëüçîâàíèþ "Óäàðà âîëêà"**
-Combat.WolfShowMaster=[[DARK_GREEN]]Ìàñòåð ïî ïðèðó÷åíèþ Âîëêîâ \: {0}
-Combat.Ignition=[[RED]]**Âû ïîäîæãëè ïðîòèâíèêà ñòðåëîé!!**
-Combat.BurningArrowHit=[[DARK_RED]]Âû áûëè ïîðàæåíû ãîðÿùåé ñòðåëîé\!
-Combat.TouchedFuzzy=[[DARK_RED]]Âû èñòåêàåòå êðîâüþ. Êðóæèòñÿ ãîëîâà.
-Combat.TargetDazed=Âàøà öåëü [[DARK_RED]]Øîêèðîâàíà
-Combat.WolfNoMaster=[[GRAY]]Ó ýòîãî Âîëêà íåò õîçÿèíà
-Combat.WolfHealth=[[GREEN]]Ó ýòîãî Âîëêà {0} Çäîðîâüÿ
-Combat.StruckByGore=[[RED]]**Îêðàâëåíèå íåóäà÷íî**
-Combat.Gore=[[GREEN]]**Îêðàâëåíèå**
-Combat.ArrowDeflect=[[WHITE]]**Ñòðåëà îòñêî÷èëà**
-Item.ChimaeraWingFail=**Êðûëüÿ Õèìåðû íå ñìîãëè âàñ óíåñòè\!**
-Item.ChimaeraWingPass=**Êðûëüÿ Õèìåðû óíîñÿò âàñ...**
-Item.InjuredWait=Âû ðàíåíû è íå ñìîæåòå ïîêà èñïîëüçîâàòü ýòî. [[YELLOW]]({0}s)
-Item.NeedFeathers=[[GRAY]]Âàì íóæíî áîëüøå ïåðüåâ..
-m.mccPartyCommands=[[GREEN]]--Ãðóïïîâûå êîìàíäû--
-m.mccParty=[party name] [[RED]]- Ñîçäàíèå ãðóïïû
-m.mccPartyQ=[[RED]]- Ïîêèíüòå òåêóùóþ ãðóïïó
-m.mccPartyToggle=[[RED]] - Âêëþ÷èòü ãðóïïîâîé ÷àò
-m.mccPartyInvite=[player name] [[RED]]- Ïðèñëàòü ïðèãëàøåíèå â ãðóïïó
-m.mccPartyAccept=[[RED]]- Ïîäòâåðäèòü ïðèãëàøåíèå â ãðóïïó
-m.mccPartyTeleport=[party member name] [[RED]]- Òåëåïîðòèðîâàòüñÿ ê ÷ëåíó ãðóïïû
-m.mccOtherCommands=[[GREEN]]--Äðóãèå êîìàíäû--
-m.mccStats=- Ïîñìîòðåòü âàøè McMMo õàðàêòåðèñòèêè
-m.mccLeaderboards=- Äîñêà Ëèäåðîâ
-m.mccMySpawn=- Òåëåïîðòèðóåò ê âàøåé êðîâàòè
-m.mccClearMySpawn=- Óáèðàåò âàøó êðîâàòü
-m.mccToggleAbility=- Àêòèâèðîâàòü âîçìîæíîñòü ïðàâûì êëèêîì ìûøè
-m.mccAdminToggle=- Âêëþ÷èòü àäìèíñêèé ÷àò
-m.mccWhois=[playername] [[RED]]- Ïîñìîòðåòü äåòàëüíóþ èíôîðìàöèþ
-m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Èçìåíèòü öåëü
-m.mccMcGod=- Ðåæèì Áîãà
-m.mccSkillInfo=[skillname] [[RED]]- Ïîñìîòðåòü äåòàëüíóþ èíôîðìàöèþ î óìåíèè
-m.mccModDescription=[[RED]]- Ïðî÷èòàòü èíôîðìàöèþ î ìîäå McMMo
-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=ÝÔÔÅÊÒÛ
-m.YourStats=ÂÀØÈ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ
-m.SkillTaming=Ïðèðó÷åíèå
-m.XPGainTaming=Âîëêè ïðè÷èíÿþò óùåðá
-m.EffectsTaming1_0=Óäàð Âîëêà
-m.EffectsTaming1_1=Óìåíüøåíèå êîëè÷åñòâà êîñòåé
-m.EffectsTaming2_0=Îêðàâëåíèå
-m.EffectsTaming2_1=Êðèòè÷åñêèé óäàð âî âðåìÿ èñòåêàíèÿ êðîâüþ
-m.EffectsTaming3_0=Îñòðûå Êîãòè
-m.EffectsTaming3_1=Áîíóñ ê óðîíó
-m.EffectsTaming4_0=Íåçàâèñèìîñòü îò ýêîëîãèè
-m.EffectsTaming4_1=Èìóíèòåò ê ïàäåíèþ, áîÿçíü ëàâû/êàêòóñîâ
-m.EffectsTaming5_0=Ãóñòîé ìåõ
-m.EffectsTaming5_1=Ñîêðàùåíèå óðîíà, îãíåóñòîé÷èâîñòü
-m.EffectsTaming6_0=Íàäåæíàÿ çàùèòà îò ïîâðåæäåíèé
-m.EffectsTaming6_1=Ñíèæåíèå óðîíà îò âçðûâîâ
-m.AbilLockTaming1=Áëîêèðóåòñÿ äî 100+ óðîâíÿ(Íåçàâèñèìîñòü îò ýêîëîãèè)
-m.AbilLockTaming2=Áëîêèðóåòñÿ äî 250+ óðîâíÿ (Ãóñòîé ìåõ)
-m.AbilLockTaming3=Áëîêèðóåòñÿ äî 500+ óðîâíÿ (Íàäåæíàÿ çàùèòà îò ïîâðåæäåíèé)
-m.AbilLockTaming4=Áëîêèðóåòñÿ äî 700+ óðîâíÿ (Îñòðûå Êîãòè)
-m.AbilBonusTaming1_0=Íåçàâèñèìîñòü îò ýêîëîãèè
-m.AbilBonusTaming1_1=Âîëêè èçáåãàþò îïàñíîñòåé
-m.AbilBonusTaming2_0=Ãóñòîé ìåõ
-m.AbilBonusTaming2_1=Óðîí íàïîëîâèíó, Îãíåóñòîé÷èâîñòü
-m.AbilBonusTaming3_0=Íàäåæíàÿ çàùèòà îò ïîâðåæäåíèé
-m.AbilBonusTaming3_1=Âçðûâû ïðè÷èíÿþò 1/6 íîðìàëüíîãî óðîíà
-m.AbilBonusTaming4_0=Îñòðûå Êîãòè
-m.AbilBonusTaming4_1=+2 Óðîíà
-m.TamingGoreChance=[[RED]]Øàíñ îêðàâëåíèÿ: [[YELLOW]]{0}%
-m.SkillWoodCutting=Äåðåâîîáðàáîòêà
-m.XPGainWoodCutting=Ðóáèòü äåðåâüÿ
-m.EffectsWoodCutting1_0=Ëþáèòåëü äåðåâüåâ(ñïîñîáíîñòü)
-m.EffectsWoodCutting1_1=Äåëàòü âçðûâû äåðåâüåâ
-m.EffectsWoodCutting2_0=Áûñòðîå ñðåçàíèå ëèñòüåâ
-m.EffectsWoodCutting2_1=Ñäóâàòü ëèñòüÿ
-m.EffectsWoodCutting3_0=Äâîéíîé äðîï
-m.EffectsWoodCutting3_1=Íîðìàëüíûé äâîéíîé äðîï
-m.AbilLockWoodCutting1=Áëîêèðóåòñÿ äî 100+ óðîâíÿ(Áûñòðîå ñðåçàíèå ëèñòüåâ)
-m.AbilBonusWoodCutting1_0=Áûñòðîå ñðåçàíèå ëèñòüåâ
-m.AbilBonusWoodCutting1_1=Ñäóâàòü ëèñòüÿ
-m.WoodCuttingDoubleDropChance=[[RED]]Øàíñ äâîéíîãî äðîïà: [[YELLOW]]{0}%
-m.WoodCuttingTreeFellerLength=[[RED]]Ïðîäîëæèòåëüíîñòü Ëþáèòåëÿ äåðåâüåâ: [[YELLOW]]{0}s
-m.SkillArchery=Ñòðåëüáà èç ëóêà
-m.XPGainArchery=Àòàêîâàòü ìîíñòðîâ èç ëóêà
-m.EffectsArchery1_0=Ïîäæ¸ã
-m.EffectsArchery1_1=25% øàíñ, ÷òî öåëü ïîäîæã¸òñÿ
-m.EffectsArchery2_0=Øîêèðîâàíèå(Èãðîêîâ)
-m.EffectsArchery2_1=Äåçîðèåíòèðóåò âðàãîâ
-m.EffectsArchery3_0=Óðîí+
-m.EffectsArchery3_1=Óëó÷øàåò Óðîí
-m.EffectsArchery4_0=Ïîëó÷åíèå ñòðåë
-m.EffectsArchery4_1=Øàíñ ïîëó÷èòü ñòðåëû èç òðóïîâ
-m.ArcheryDazeChance=[[RED]]Øàíñ øîêèðîâàòü: [[YELLOW]]{0}%
-m.ArcheryRetrieveChance=[[RED]]Øàíñ ïîëó÷èòü ñòðåëû: [[YELLOW]]{0}%
-m.ArcheryIgnitionLength=[[RED]]Äëèòåëüíîñòü ïîäæ¸ãà: [[YELLOW]]{0} ñåêóíä
-m.ArcheryDamagePlus=[[RED]]Óðîí+ (Rank{0}): [[YELLOW]]Bonus {0} damage
-m.SkillAxes=Òîïîðû
-m.XPGainAxes=Àòàêîâàòü ìîíñòðîâ òîïîðîì
-m.EffectsAxes1_0=Ðàçðóøèòåëü ÷åðåïîâ(ñïîñîáíîñòü)
-m.EffectsAxes1_1=Óâåëè÷åíèå óðîíà îò òîïîðà
-m.EffectsAxes2_0=Êðèòè÷åñêèå óäàðû
-m.EffectsAxes2_1=Äâîéíîé óðîí
-m.EffectsAxes3_0=Ìàñòåðñòâî òîïîðà(500 óðîâåíü)
-m.EffectsAxes3_1=Óëó÷øåíèå óðîíà
-m.AbilLockAxes1=Áëîêèðóåòñÿ äî 500+ óðîâíÿ(Ìàñòåðñòâî òîïîðà)
-m.AbilBonusAxes1_0=Ìàñòåðñòâî òîïîðà
-m.AbilBonusAxes1_1=Äàåò áîíóñ â 4 óðîíà
-m.AxesCritChance=[[RED]]Øàíñ êðèòè÷åñêîãî óäàðà: [[YELLOW]]{0}%
-m.AxesSkullLength=[[RED]]Ïðîäîëæèòåëüíîñòü Ðàçðóøèòåëÿ ×åðåïîâ: [[YELLOW]]{0}s
-m.SkillSwords=Ìå÷è
-m.XPGainSwords=Àòàêîâàòü ìîíñòðîâ ìå÷îì
-m.EffectsSwords1_0=Êîíòð-Àòàêà
-m.EffectsSwords1_1=Îòðàæàåò 50% ïîëó÷åííîãî óðîíà
-m.EffectsSwords2_0=Çàçóáðåííûå ìå÷è(ñïîñîáíîñòü)
-m.EffectsSwords2_1=25% Óðîíà+ è êðîâîòå÷åíèå îò óäàðà
-m.EffectsSwords3_0=Óâåëå÷åíèå äëèòåëüíîñòè ñïîñîáíîñòè "Çàçóáðåííûå ìå÷è"
-m.EffectsSwords3_1=Êðîâîòå÷åíèå 5 ðàç
-m.EffectsSwords4_0=Ïàðèðîâàíèå
-m.EffectsSwords4_1=Îòðèöàòåëüíûé óðîí
-m.EffectsSwords5_0=Êðîâîòå÷åíèå
-m.EffectsSwords5_1=Çàñòàâëÿåò âðàãà êðîâîòî÷èòü
-m.SwordsCounterAttChance=[[RED]]Øàíñ Êîíòð-Àòàêè: [[YELLOW]]{0}%
-m.SwordsBleedLength=[[RED]]Äëèòåëüíîñòü êðîâîòå÷åíèÿ: [[YELLOW]]{0} ðàç
-m.SwordsBleedChance=[[RED]]Øàíñ êðîâîòå÷åíèÿ: [[YELLOW]]{0} %
-m.SwordsParryChance=[[RED]]Øàíñ ïàðèðîâàíèÿ: [[YELLOW]]{0} %
-m.SwordsSSLength=[[RED]]Äëèòåëüíîñòü "Çàçóáðåííûx ìå÷åé": [[YELLOW]]{0}s
-m.SwordsTickNote=[[GRAY]]Çàìåòêà: [[YELLOW]]1 ðàç äëèòüñÿ 2 ñåêóíäû
-m.SkillAcrobatics=Àêðîáàòèêà
-m.XPGainAcrobatics=Íóæíî Ïàäàòü ñ ãîð
-m.EffectsAcrobatics1_0=Ïåðåâîðîò
-m.EffectsAcrobatics1_1=Ïîãëîùàåò èëè óìåíüøàåò óðîí
-m.EffectsAcrobatics2_0=Ïðåâîñõîäíûé ïåðåâîðîò
-m.EffectsAcrobatics2_1=Äâàæäû ýôôåêòèâíåå ïåðåâîðîòà
-m.EffectsAcrobatics3_0=Óâîðîò
-m.EffectsAcrobatics3_1=Óìåíüøàåò óðîí íàïîëîâèíó îò ñòðåëû
-m.AcrobaticsRollChance=[[RED]]Øàíñ ïåðåâîðîòà: [[YELLOW]]{0}%
-m.AcrobaticsGracefulRollChance=[[RED]]Øàíñ ïðåâîñõîäíîãî ïåðåâîðîòà: [[YELLOW]]{0}%
-m.AcrobaticsDodgeChance=[[RED]]Øàíñ óâîðîòà: [[YELLOW]]{0}%
-m.SkillMining=Øàõò¸ðñòâî
-m.XPGainMining=Äîáûâàòü ðóäó è êàìíè â øàõòàõ
-m.EffectsMining1_0=Ñóïåð ðàçðóøèòåëü(ñïîñîáíîñòü)
-m.EffectsMining1_1=Óâåëè÷åíèå ñêîðîñòè, Øàíñ òðîéíîãî äðîïà
-m.EffectsMining2_0=Äâîéíîé äðîï
-m.EffectsMining2_1=Äâîéíîé äðîï ñòàíîâèòñÿ íîðìàëüíûì
-m.MiningDoubleDropChance=[[RED]]Øàíñ äâîéíîãî äðîïà: [[YELLOW]]{0}%
-m.MiningSuperBreakerLength=[[RED]]Äëèòåëüíîñòü ñïîñîáíîñòè "Ñóïåð Ðàçðóøèòåëü": [[YELLOW]]{0}s
-m.SkillRepair=Ïî÷èíêà
-m.XPGainRepair=×èíèòü âåùè
-m.EffectsRepair1_0=Ïî÷èíêà
-m.EffectsRepair1_1=×èíèò Æåëåçíûå èíñòðóìåíòû è áðîíþ
-m.EffectsRepair2_0=Ìàñòåðñòâî ïî÷èíêè
-m.EffectsRepair2_1=Óâåëè÷èâàåò êà÷åñòâî ðåìîíòà
-m.EffectsRepair3_0=Ñóïåð ïî÷èíêà
-m.EffectsRepair3_1=Äâîéíàÿ ýôôåêòèâíîñòü âåùåé
-m.EffectsRepair4_0=Ïî÷èíêà Àëìàçíûõ âåùåé ({0}+ óðîâåíü)
-m.EffectsRepair4_1=×èíèòü Àëìàçíûå èíñòðóìåíòû è áðîíþ
-m.RepairRepairMastery=[[RED]]Ìàñòåðñòâî ïî÷èíêè: [[YELLOW]]Äîïîëíèòåëüíî {0}% äîëãîâå÷íîñòè âîññòàíîâëåíî
-m.RepairSuperRepairChance=[[RED]]Øàíñ Ñóïåð ïî÷èíêè: [[YELLOW]]{0}%
-m.SkillUnarmed=Ðóêîïàøíûé áîé
-m.XPGainUnarmed=Àòàêîâàòü ìîíñòðîâ ãîëûìè ðóêàìè
-m.EffectsUnarmed1_0=Áåðñåðê(ñïîñîáíîñòü)
-m.EffectsUnarmed1_1=+50% Óðîíà, Ëîìàòü ñëàáûå ìàòåðèàëû
-m.EffectsUnarmed2_0=Îáåçîðóæåíèå(Èãðîêè)
-m.EffectsUnarmed2_1=Ïàäàåò îðóæèå ïðîòèâíèêà íà çåìëþ, êîòîðîå íàõîäèòñÿ â ðóêàõ ó íåãî.
-m.EffectsUnarmed3_0=Ìàñòåð Ðóêîïàøíîãî áîÿ
-m.EffectsUnarmed3_1=Óëó÷øåíèå óðîíà îò êóëàêîâ
-m.EffectsUnarmed4_0=Ó÷åíèê ðóêîïàøíîãî áîÿ
-m.EffectsUnarmed4_1=Óâåëè÷åíèå óðîíà îò êóëàêîâ
-m.EffectsUnarmed5_0=Îòðàæåíèå ñòðåë
-m.EffectsUnarmed5_1=Ñòðåëû îòðàæàþòñÿ
-m.AbilLockUnarmed1=Áëîêèðóåòñÿ äî 250+ óðîâíÿ(Ó÷åíèê ðóêîïàøíîãî áîÿ)
-m.AbilLockUnarmed2=Áëîêèðóåòñÿ äî 500+ óðîâíÿ(Ìàñòåð Ðóêîïàøíîãî áîÿ)
-m.AbilBonusUnarmed1_0=Ó÷åíèê ðóêîïàøíîãî áîÿ
-m.AbilBonusUnarmed1_1=+2 áîíóñ ê óðîíó
-m.AbilBonusUnarmed2_0=Ìàñòåð Ðóêîïàøíîãî áîÿ
-m.AbilBonusUnarmed2_1=+4 áîíóñ ê óðîíó
-m.UnarmedArrowDeflectChance=[[RED]]Øàíñ îòðàçèòü ñòðåëû: [[YELLOW]]{0}%
-m.UnarmedDisarmChance=[[RED]]Øàíñ îáåçîðóæèòü: [[YELLOW]]{0}%
-m.UnarmedBerserkLength=[[RED]]Äëèòåëüíîñòü "Áåðñåðêà": [[YELLOW]]{0}s
-m.SkillHerbalism=Òðàâîâåäåíèå
-m.XPGainHerbalism=Âûðàùèâàòü ðàñòåíèÿ
-m.EffectsHerbalism1_0=Îçåëåíèòåëü(ñïîñîáíîñòü)
-m.EffectsHerbalism1_1=Ðàñïðîñòðîíåíèå îçåëåíåíèé, 3-îé äðîï
-m.EffectsHerbalism2_0="Çåëåíûé ôåðìåð"(Ïùåíèöà)
-m.EffectsHerbalism2_1=Àâòî âûðàùèâàíèå ïùåíèöû ïîñëå ïîñàäêè
-m.EffectsHerbalism3_0="Çåëåíûé ôåðìåð"(Ìîõ)
-m.EffectsHerbalism3_1=Êàìåíü -> Çàìøåëûé êàìåíü + ñåìåíà
-m.EffectsHerbalism4_0=Óëó÷øåíèå åäû
-m.EffectsHerbalism4_1=Óëó÷øàåò êîëè÷åñòâî çäîðîâüÿ îò õëåáà è ãðèáíîãî ñóïà
-m.EffectsHerbalism5_0=Äðîéíîé äðîï(Âñå ðàñòåíèÿ)
-m.EffectsHerbalism5_1=Äâîéíîé äðîï ñòàíîâèòñÿ íîðìàëüíûì
-m.HerbalismGreenTerraLength=[[RED]]Ïðîäîëæèòåëüíîñòü "Îçåëåíèòåëÿ": [[YELLOW]]{0}s
-m.HerbalismGreenThumbChance=[[RED]]Øàíñ "Çåëåíîãî ôåðìåðà": [[YELLOW]]{0}%
-m.HerbalismGreenThumbStage=[[RED]]Óðîâåíü "Çåëåíîãî ôåðìåðà": [[YELLOW]] Ïùåíèöà ðàñòåò ïî-óðîâíåâî {0}
-m.HerbalismDoubleDropChance=[[RED]]Øàíñ äâîéíîãî äðîïà: [[YELLOW]]{0}%
-m.HerbalismFoodPlus=[[RED]]Åäà+ (Rank{0}): [[YELLOW]]Áîíóñ {0} ëå÷åíèÿ
-m.SkillExcavation=Ðàñêîïêà
-m.XPGainExcavation=Ðàñêàïûâàòü è èñêàòü ñîêðîâèùà
-m.EffectsExcavation1_0=Ìåãà äðåëü(ñïîñîáíîñòü)
-m.EffectsExcavation1_1=3-îé äðîï, 3-îé îïûò, Óâåëè÷åíèå ñêîðîñòè
-m.EffectsExcavation2_0=Îõîòíèê çà ñîêðîâèùàìè
-m.EffectsExcavation2_1=Ñïîñîáíîñòü êîïàòü ñîêðîâèùà
-m.ExcavationGreenTerraLength=[[RED]]Ïðîäîëæèòåëüíîñòü "Ìåãà äðåëè": [[YELLOW]]{0}s
-mcBlockListener.PlacedAnvil=[[DARK_RED]]Âû ðàçìåñòèëè íàêîâàëüíè è òåïåðü ìîæåòå ÷èíèòü âåùè.
-mcEntityListener.WolfComesBack=[[DARK_GRAY]]Âàø âîëê õî÷åò âåðíóòüñÿ ê âàì
-mcPlayerListener.AbilitiesOff=Èñïîëüçîâàíèå ñïîñîáíîñòåé âûêëþ÷åíî
-mcPlayerListener.AbilitiesOn=Èñïîëüçîâàíèå ñïîñîáíîñòåé âêëþ÷åíî
-mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**Ñïîñîáíîñòè âîññòàíîâëåíû\!**
-mcPlayerListener.AcrobaticsSkill=Àêðîáàòèêà:
-mcPlayerListener.ArcherySkill=Ñòðåëüáà èç ëóêà:
-mcPlayerListener.AxesSkill=Òîïîðû:
-mcPlayerListener.ExcavationSkill=Ðàñêîïêà:
-mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO ðåæèì áîãà âûêëþ÷åí
-mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO ðåæèì áîãà âêëþ÷¸í
-mcPlayerListener.GreenThumb=[[GREEN]]**"Çåëåíûé ôåðìåð"**
-mcPlayerListener.GreenThumbFail=[[RED]]**"Çåëåíûé ôåðìåð" íåóäàëñÿ**
-mcPlayerListener.HerbalismSkill=Òðàâîâåäåíèå:
-mcPlayerListener.MiningSkill=Øàõò¸ðñòâî:
-mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Âàøà êðîâàòü óáðàíà.
-mcPlayerListener.MyspawnNotExist=[[RED]]Ñäåëàéòå âàøó òî÷êó ïîÿâëåíèÿ âîçëå êðîâàòè, ïîñïàâ íà êðîâàòè.
-mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Ìîÿ òî÷êà ïîÿâëåíèÿ ñîõðàíåíà â ýòîé ëîêàöèè.
-mcPlayerListener.MyspawnTimeNotice=Âû äîëæíû ïîäîæäàòü {0}m {1}s ÷òîáû èñïîëüçîâàòü ïîÿâëåíèå îêîëî êðîâàòè
-mcPlayerListener.NoPermission=Íåäîñòàòî÷íûå ïðàâà.
-mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Åñëè ó âàñ íåò äîñòóïà ê óìåíèþ, òî îíî çäåñü íå îòîáðàçèòñÿ.
-mcPlayerListener.NotInParty=[[RED]]Âû íå â ãðóïïå!
-mcPlayerListener.InviteSuccess=[[GREEN]]Ïðèãëàøåíèå óñïåøíî ïîñëàíî.
-mcPlayerListener.ReceivedInvite1=[[RED]]ÒÐÅÂÎÃÀ: [[GREEN]]Âû ïîëó÷èëè ïðèãëàøåíèå íà âñòóïëåíèå â ãðóïïó {0} îò {1}
-mcPlayerListener.ReceivedInvite2=[[YELLOW]]Type [[GREEN]]/{0}[[YELLOW]] ÷òîáû îäîáðèòü âñòóïëåíèå
-mcPlayerListener.InviteAccepted=[[GREEN]]Ïðèãëàøåíèå îäîáðåíî. Âû âñòóïèëè â ãðóïïó {0}
-mcPlayerListener.NoInvites=[[RED]]Ó âàñ íåò ïðèãëàøåíèé â ãðóïïó ñåé÷àñ
-mcPlayerListener.YouAreInParty=[[GREEN]]Âû óæå â ãðóïïå {0}
-mcPlayerListener.PartyMembers=[[GREEN]]×ëåíû ãðóïïû
-mcPlayerListener.LeftParty=[[RED]]Âû âûøëè èç ãðóïïû
-mcPlayerListener.JoinedParty=Ïðèñîåäèííûå ãðóïïû: {0}
-mcPlayerListener.PartyChatOn=Òîëüêî ÷àò ãðóïïû [[GREEN]]Âêëþ÷åíî
-mcPlayerListener.PartyChatOff=Òîëüêî ÷àò ãðóïïû [[RED]]Âûêëþ÷åíî
-mcPlayerListener.AdminChatOn=Òîëüêî àäìèí ÷àò [[GREEN]]Âêëþ÷åíî
-mcPlayerListener.AdminChatOff=Òîëüêî àäìèí ÷àò [[RED]]Âûêëþ÷åíî
-mcPlayerListener.MOTD=[[BLUE]]Íà ýòîì ñåðâåðå óñòàíîâëåí ïëàãèí McMMO {0} type [[YELLOW]]/{1}[[BLUE]] äëÿ ïîìîùè.
-mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Âèêèïåäèÿ
-mcPlayerListener.PowerLevel=[[DARK_RED]]Óðîâåíü óìåíèé:
-mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Óðîâåíü óìåíèé [[YELLOW]]Äîñêà Ëèäåðîâ--
-mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Äîñêà Ëèäåðîâ--
-mcPlayerListener.RepairSkill=Ïî÷èíêà:
-mcPlayerListener.SwordsSkill=Ìå÷è:
-mcPlayerListener.TamingSkill=Ïðèðó÷åíèå âîëêîâ:
-mcPlayerListener.UnarmedSkill=Ðóêîïàøíûé áîé:
-mcPlayerListener.WoodcuttingSkill=Äåðåâîîáðàáîòêà:
-mcPlayerListener.YourStats=[[GREEN]][mcMMO] Õàðàêòåðèñòèêè
-Party.InformedOnJoin={0} [[GREEN]] ïðèñîåäèíèëñÿ ê ãðóïïå
-Party.InformedOnQuit={0} [[GREEN]] óø¸ë èç ãðóïïû
-Skills.YourGreenTerra=[[GREEN]]Âàøà ñïîñîáíîñòü[[YELLOW]]"Îçåëåíåíèå" [[GREEN]]âîññòàíîâëåíà!
-Skills.YourTreeFeller=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Ëþáèòåëü äåðåâüåâ" [[GREEN]]âîññòàíîâëåíà!
-Skills.YourSuperBreaker=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Ñóïåð ðàçðóøèòåëü" [[GREEN]]âîññòàíîâëåíà!
-Skills.YourSerratedStrikes=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Çàçóáðåííûå ìå÷è" [[GREEN]]âîññòàíîâëåíà!
-Skills.YourBerserk=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Áåðñåðê" [[GREEN]]âîññòàíîâëåíà!
-Skills.YourSkullSplitter=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Ðàçðóøèòåëü ÷åðåïîâ" [[GREEN]]âîññòàíîâëåíà!
-Skills.YourGigaDrillBreaker=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Ìåãà äðåëü" [[GREEN]]âîññòàíîâëåíà!
-Skills.TooTired=[[RED]]Âû ñëèøêîì óñòàëè, ÷òîáû èñïîëüçîâàòü ñïîñîáíîñòü åù¸ ðàç.
-Skills.ReadyHoe=[[GREEN]]**Ïðèãîòîâüòå âàøó Ìîòûãó**
-Skills.LowerHoe=[[GRAY]]**Îïóñòèòå âàøó Ìîòûãó**
-Skills.ReadyAxe=[[GREEN]]**Ïðèãîòîâüòå âàø Òîïîð**
-Skills.LowerAxe=[[GRAY]]**Îïóñòèòå âàø Òîïîð**
-Skills.ReadyFists=[[GREEN]]**Ïðèãîòîâüòå âàøè Êóëàêè**
-Skills.LowerFists=[[GRAY]]**Îïóñòèòå âàøè Êóëàêè**
-Skills.ReadyPickAxe=[[GREEN]]**Ïðèãîòîâüòå âàøó Êèðêó**
-Skills.LowerPickAxe=[[GRAY]]**Îïóñòèòå âàøó Êèðêó**
-Skills.ReadyShovel=[[GREEN]]**Ïðèãîòîâüòå âàøó Ëîïàòó**
-Skills.LowerShovel=[[GRAY]]**Îïóñòèòå âàøó Ëîïàòó**
-Skills.ReadySword=[[GREEN]]**Ïðèãîòîâüòå âàø Ìå÷**
-Skills.LowerSword=[[GRAY]]**Îïóñòèòå âàø Ìå÷**
-Skills.BerserkOn=[[GREEN]]**Ñïîñîáíîñòü "Áåðñåðê" àêòèâèðîâàíà**
-Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Áåðñåðê"!
-Skills.GreenTerraOn=[[GREEN]]**Ñïîñîáíîñòü "Îçåëåíåíèå" àêòèâèðîâàíà**
-Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Îçåëåíåíèå"!
-Skills.TreeFellerOn=[[GREEN]]**Ñïîñîáíîñòü "Ëþáèòåëü Äåðåâüåâ" àêòèâèðîâàíà**
-Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Ëþáèòåëü Äåðåâüåâ"!
-Skills.SuperBreakerOn=[[GREEN]]**Ñïîñîáíîñòü "Ñóïåð Ðàçðóøèòåëü" àêòèâèðîâàíà**
-Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Ñóïåð Ðàçðóøèòåëü"!
-Skills.SerratedStrikesOn=[[GREEN]]**Ñïîñîáíîñòü "Çàçóáðåííûå ìå÷è" àêòèâèðîâàíà**
-Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Çàçóáðåííûå ìå÷è"!
-Skills.SkullSplitterOn=[[GREEN]]**Ñïîñîáíîñòü "Ðàçðåøèòåëü ÷åðåïîâ" àêòèâèðîâàíà**
-Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Ðàçðóøèòåëü ÷åðåïîâ"!
-Skills.GigaDrillBreakerOn=[[GREEN]]**Ñïîñîáíîñòü "Ìåãà äðåëü" àêòèâèðîâàíà**
-Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Ìåãà äðåëü"!
-Skills.GreenTerraOff=[[RED]]**Ñïîñîáíîñòü "Îçåëåíåíèå" äåàêòèâèðîâàíà**
-Skills.TreeFellerOff=[[RED]]**Ñïîñîáíîñòü "Ëþáèòåëü Äåðåâüåâ" äåàêòèâèðîâàíà**
-Skills.SuperBreakerOff=[[RED]]**Ñïîñîáíîñòü "Ñóïåð Ðàçðóøèòåëü" äåàêòèâèðîâàíà**
-Skills.SerratedStrikesOff=[[RED]]**Ñïîñîáíîñòü "Çàçóáðåííûå ìå÷è" äåàêòèâèðîâàíà**
-Skills.BerserkOff=[[RED]]**Ñïîñîáíîñòü "Áåðñåðê" äåàêòèâèðîâàíà**
-Skills.SkullSplitterOff=[[RED]]**Ñïîñîáíîñòü "Ðàçðåøèòåëü ÷åðåïîâ" äåàêòèâèðîâàíà**
-Skills.GigaDrillBreakerOff=[[RED]]**Ñïîñîáíîñòü "Ìåãà äðåëü" äåàêòèâèðîâàíà**
-Skills.TamingUp=[[YELLOW]]Óìåíèå "Ïðèðó÷åíèå âîëêîâ" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.AcrobaticsUp=[[YELLOW]]Óìåíèå "Àêðîáàòèêà" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.ArcheryUp=[[YELLOW]]Óìåíèå "Ñòðåëüáà èç ëóêà" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.SwordsUp=[[YELLOW]]Óìåíèå "Ìå÷è" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.AxesUp=[[YELLOW]]Óìåíèå "Òîïîðû" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.UnarmedUp=[[YELLOW]]Óìåíèå "Ðóêîïàøíûé áîé" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.HerbalismUp=[[YELLOW]]Óìåíèå "Òðàâîâåäåíèå" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.MiningUp=[[YELLOW]]Óìåíèå "Øàõò¸ðñòâî" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.WoodcuttingUp=[[YELLOW]]Óìåíèå "Äåðåâîîáðàáîòêà" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.RepairUp=[[YELLOW]]Óìåíèå "Ïî÷èíêà" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.ExcavationUp=[[YELLOW]]Óìåíèå "Ðàñêîïêà" ïîâûøåíî íà {0}. Âñåãî ({1})
-Skills.FeltEasy=[[GRAY]]Ýòî áûëî ëåãêî.
-Skills.StackedItems=[[DARK_RED]]Âû íå ìîæåòå ÷èíèòü ñòàêóþùèåñÿ ïðåäìåòû
-Skills.NeedMore=[[DARK_RED]]Íóæíî áîëüøå ìàòåðèàëà
-Skills.AdeptDiamond=[[DARK_RED]]Âû íå îáó÷åíû ÷èíèòü àëìàçíûå èíñòðóìåíòû è áðîíþ
-Skills.FullDurability=[[GRAY]]Âåùü íå íóæäàåòñÿ â ïî÷èíêå.
-Skills.Disarmed=[[DARK_RED]]Âû îáåçîðóæåíû!
-mcPlayerListener.SorcerySkill=Êîëäîâñòâî:
-m.SkillSorcery=Êîëäîâñòâî
-Sorcery.HasCast=[[GREEN]]**Èñïîëüçóþ "Êîëäîâñòâî"**[[GOLD]]
-Sorcery.Current_Mana=[[DARK_AQUA]] Ìàíû
-Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
-Sorcery.Cost=[[RED]][COST] {0} Ìàíû
-Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Íå õâàòàåò ìàíû [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
-Sorcery.Water.Thunder=Ãðîì
-Sorcery.Curative.Self=Âûëå÷èòü ñåáÿ
-Sorcery.Curative.Other=Âûëå÷èòü äðóãèõ
-m.LVL=[[DARK_GRAY]]Óðîâåíü: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
-Combat.BeastLore=[[GREEN]]**Óìåíèå "Óäàð âîëêà" àêòèâèðîâàíî**
-Combat.BeastLoreOwner=[[DARK_AQUA]]Âëàäåëåö ([[RED]]{0}[[DARK_AQUA]])
-Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Çäîðîâüÿ ([[GREEN]]{0}[[DARK_AQUA]]/20)
-Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Çäîðîâüÿ ([[GREEN]]{0}[[DARK_AQUA]]/8)
-Party.Locked=[[RED]]Ãðóïïà çàïàðîëåíà, òîëüêî ëèäåð ãðóïïû ìîæåò ïðèãëàøàòü.
-Party.IsntLocked=[[GRAY]]Ãðóïïà ðàçáëîêèðîâàíà
-Party.Unlocked=[[GRAY]]Ãðóïïà ðàçáëîêèðîâàíà
-Party.Help1=[[RED]]Èñïîëüçîâàíèå [[YELLOW]]/{0} [[WHITE]][[YELLOW]] èëè [[WHITE]]'q' [[YELLOW]]äëÿ âûõîäà
-Party.Help2=[[RED]]×òîáû ïðèñîåäèíèòñÿ ê çàïàðîëåííîé ãðóïïå ââåäèòå [[YELLOW]]/{0} [[WHITE]]<èìÿ> <ïàðîëü>
-Party.Help3=[[RED]]Ââåäèòå /{0} ? äëÿ áîëüøåé èíôîðìàöèè
-Party.Help4=[[RED]]Èñïîëüçóéòå [[YELLOW]]/{0} [[WHITE]]<èìÿ> [[YELLOW]]÷òîáû ïðèñîåäèíèòñÿ ê ãðóïïå èëè [[WHITE]]'q' [[YELLOW]]äëÿ âûõîäà
-Party.Help5=[[RED]]×òîáû çàáëîêèðîâàòü ãðóïïó ââåäèòå [[YELLOW]]/{0} [[WHITE]]lock
-Party.Help6=[[RED]]×òîáû ðàçáëîêèðîâàòü ãðóïïó ââåäèòå [[YELLOW]]/{0} [[WHITE]]unlock
-Party.Help7=[[RED]]×òîáû çàïàðîëèòü ãðóïïó ââåäèòå [[YELLOW]]/{0} [[WHITE]]password <ïàðîëü>
-Party.Help8=[[RED]]×òîáû âûêèíóòü èãðîêà èç ãðóïïû ââåäèòå [[YELLOW]]/{0} [[WHITE]]kick <èãðîê>
-Party.Help9=[[RED]]×òîáû îòäàòü ëèäåðñòâî ãðóïïû ââåäèòå [[YELLOW]]/{0} [[WHITE]]owner <èãðîê>
-Party.NotOwner=[[DARK_RED]]Âû òåïåðü íå ëèäåð ãðóïïû
-Party.InvalidName=[[DARK_RED]]Íåêîððåêòíîå èìÿ ãðóïïû
-Party.PasswordSet=[[GREEN]]Ïàðîëü ãðóïïû íàçíà÷åí {0}
-Party.CouldNotKick=[[DARK_RED]]Âû íå ìîæåòå óáðàòü èãðîêà èç ãðóïïû {0}
-Party.NotInYourParty=[[DARK_RED]]{0} íå â ãðóïïå
-Party.CouldNotSetOwner=[[DARK_RED]]Âû íå ìîæåòå îòäàòü ëèäåðñòâî èãðîêó {0}
-mcMMO.Description=[[DARK_AQUA]]Q: ×òî ýòî?,[[GOLD]]mcMMO ýòî [[RED]]ÎÏÅÍ ÑÓÐÑ[[GOLD]] RPG ìîä äëÿ ñåðâåðà Bukkit îò ïîëüçîâàòåëÿ [[BLUE]]nossr50,[[GOLD]]Çäåñü áûëî äîáàâëåíî ìíîãî óìåíèé äëÿ Minecraft ñåðâåðà.,[[GOLD]]Âû ìîæåòå ïðîêà÷àòü èõ ðàçíûìè ñïîñîáàìè,[[GOLD]]Âû õîòèòå íàéòè áîëüøå èíôîðìàöèè î óìåíèè [[GREEN]]/SKILLNAME[[GOLD]] ?,[[DARK_AQUA]]Q: ×òî ÿ äîëæåí ñäåëàòü?,[[GOLD]]Äëÿ ïðèìåðà... in [[DARK_AQUA]]Øàõò¸ðñòâî[[GOLD]] âû ïîëó÷èòå [[RED]]2-îé äðîï[[GOLD]] èëè ñïîñîáíîñòü [[RED]]"Ñóïåð ðàçðóøèòåëü"[[GOLD]] ,êîòîðàÿ àêòèâèðóåòñÿ [[GOLD]]íàæàòèåì ïðàâîé êíîïêè ìûøè íà íåêîòîðîå âðåìÿ,[[GOLD]]ñâÿçàííîå ñ âàøèì óðîâíåì óìåíèÿ. Ïîäíÿòü óðîâåíü [[BLUE]]Øàõò¸ðñòâà,[[GOLD]]ëåãêî ïðîñòî êîïàéòå ðóäû è êàìíè!
-m.SkillAlchemy=ALCHEMY
-m.SkillEnchanting=ENCHANTING
-m.SkillFishing=FISHING
-mcPlayerListener.AlchemySkill=Alchemy:
-mcPlayerListener.EnchantingSkill=Enchanting:
-mcPlayerListener.FishingSkill=Fishing:
-Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
-Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
-Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
-Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
-Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
-Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
-Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
-m.EffectsRepair5_0=Arcane Forging
-m.EffectsRepair5_1=Repair magic items
-m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
-m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
-m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
-m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
-m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
-Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
-Fishing.ItemFound=[[GRAY]]Treasure found!
-m.SkillFishing=FISHING
-m.XPGainFishing=Fishing (Go figure!)
-m.EffectsFishing1_0=Treasure Hunter (Passive)
-m.EffectsFishing1_1=Fish up misc objects
-m.EffectsFishing2_0=Magic Hunter
-m.EffectsFishing2_1=Find Enchanted Items
-m.EffectsFishing3_0=Shake (vs. Entities)
-m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
-m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
-m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
-m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
-m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
-m.TamingSummon=[[GREEN]]Summoning complete
-m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
-m.EffectsTaming7_0=Call of the Wild
-m.EffectsTaming7_1=Summon a wolf to your side
+Combat.WolfExamine=[[GREEN]]**Âû íàó÷èëè Âîëêà èñïîëüçîâàíèþ "Óäàðà âîëêà"**
+Combat.WolfExamine=[[GREEN]]**Âû íàó÷èëè Âîëêà èñïîëüçîâàíèþ "Óäàðà âîëêà"**
+Combat.WolfShowMaster=[[DARK_GREEN]]Ìàñòåð ïî ïðèðó÷åíèþ Âîëêîâ \: {0}
+Combat.Ignition=[[RED]]**Âû ïîäîæãëè ïðîòèâíèêà ñòðåëîé!!**
+Combat.BurningArrowHit=[[DARK_RED]]Âû áûëè ïîðàæåíû ãîðÿùåé ñòðåëîé\!
+Combat.TouchedFuzzy=[[DARK_RED]]Âû èñòåêàåòå êðîâüþ. Êðóæèòñÿ ãîëîâà.
+Combat.TargetDazed=Âàøà öåëü [[DARK_RED]]Øîêèðîâàíà
+Combat.WolfNoMaster=[[GRAY]]Ó ýòîãî Âîëêà íåò õîçÿèíà
+Combat.WolfHealth=[[GREEN]]Ó ýòîãî Âîëêà {0} Çäîðîâüÿ
+Combat.StruckByGore=[[RED]]**Îêðàâëåíèå íåóäà÷íî**
+Combat.Gore=[[GREEN]]**Îêðàâëåíèå**
+Combat.ArrowDeflect=[[WHITE]]**Ñòðåëà îòñêî÷èëà**
+Item.ChimaeraWingFail=**Êðûëüÿ Õèìåðû íå ñìîãëè âàñ óíåñòè\!**
+Item.ChimaeraWingPass=**Êðûëüÿ Õèìåðû óíîñÿò âàñ...**
+Item.InjuredWait=Âû ðàíåíû è íå ñìîæåòå ïîêà èñïîëüçîâàòü ýòî. [[YELLOW]]({0}s)
+Item.NeedFeathers=[[GRAY]]Âàì íóæíî áîëüøå ïåðüåâ..
+m.mccPartyCommands=[[GREEN]]--Ãðóïïîâûå êîìàíäû--
+m.mccParty=[party name] [[RED]]- Ñîçäàíèå ãðóïïû
+m.mccPartyQ=[[RED]]- Ïîêèíüòå òåêóùóþ ãðóïïó
+m.mccPartyToggle=[[RED]] - Âêëþ÷èòü ãðóïïîâîé ÷àò
+m.mccPartyInvite=[player name] [[RED]]- Ïðèñëàòü ïðèãëàøåíèå â ãðóïïó
+m.mccPartyAccept=[[RED]]- Ïîäòâåðäèòü ïðèãëàøåíèå â ãðóïïó
+m.mccPartyTeleport=[party member name] [[RED]]- Òåëåïîðòèðîâàòüñÿ ê ÷ëåíó ãðóïïû
+m.mccOtherCommands=[[GREEN]]--Äðóãèå êîìàíäû--
+m.mccStats=- Ïîñìîòðåòü âàøè McMMo õàðàêòåðèñòèêè
+m.mccLeaderboards=- Äîñêà Ëèäåðîâ
+m.mccMySpawn=- Òåëåïîðòèðóåò ê âàøåé êðîâàòè
+m.mccClearMySpawn=- Óáèðàåò âàøó êðîâàòü
+m.mccToggleAbility=- Àêòèâèðîâàòü âîçìîæíîñòü ïðàâûì êëèêîì ìûøè
+m.mccAdminToggle=- Âêëþ÷èòü àäìèíñêèé ÷àò
+m.mccWhois=[playername] [[RED]]- Ïîñìîòðåòü äåòàëüíóþ èíôîðìàöèþ
+m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Èçìåíèòü öåëü
+m.mccMcGod=- Ðåæèì Áîãà
+m.mccSkillInfo=[skillname] [[RED]]- Ïîñìîòðåòü äåòàëüíóþ èíôîðìàöèþ î óìåíèè
+m.mccModDescription=[[RED]]- Ïðî÷èòàòü èíôîðìàöèþ î ìîäå McMMo
+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=ÝÔÔÅÊÒÛ
+m.YourStats=ÂÀØÈ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ
+m.SkillTaming=Ïðèðó÷åíèå
+m.XPGainTaming=Âîëêè ïðè÷èíÿþò óùåðá
+m.EffectsTaming1_0=Óäàð Âîëêà
+m.EffectsTaming1_1=Óìåíüøåíèå êîëè÷åñòâà êîñòåé
+m.EffectsTaming2_0=Îêðàâëåíèå
+m.EffectsTaming2_1=Êðèòè÷åñêèé óäàð âî âðåìÿ èñòåêàíèÿ êðîâüþ
+m.EffectsTaming3_0=Îñòðûå Êîãòè
+m.EffectsTaming3_1=Áîíóñ ê óðîíó
+m.EffectsTaming4_0=Íåçàâèñèìîñòü îò ýêîëîãèè
+m.EffectsTaming4_1=Èìóíèòåò ê ïàäåíèþ, áîÿçíü ëàâû/êàêòóñîâ
+m.EffectsTaming5_0=Ãóñòîé ìåõ
+m.EffectsTaming5_1=Ñîêðàùåíèå óðîíà, îãíåóñòîé÷èâîñòü
+m.EffectsTaming6_0=Íàäåæíàÿ çàùèòà îò ïîâðåæäåíèé
+m.EffectsTaming6_1=Ñíèæåíèå óðîíà îò âçðûâîâ
+m.AbilLockTaming1=Áëîêèðóåòñÿ äî 100+ óðîâíÿ(Íåçàâèñèìîñòü îò ýêîëîãèè)
+m.AbilLockTaming2=Áëîêèðóåòñÿ äî 250+ óðîâíÿ (Ãóñòîé ìåõ)
+m.AbilLockTaming3=Áëîêèðóåòñÿ äî 500+ óðîâíÿ (Íàäåæíàÿ çàùèòà îò ïîâðåæäåíèé)
+m.AbilLockTaming4=Áëîêèðóåòñÿ äî 700+ óðîâíÿ (Îñòðûå Êîãòè)
+m.AbilBonusTaming1_0=Íåçàâèñèìîñòü îò ýêîëîãèè
+m.AbilBonusTaming1_1=Âîëêè èçáåãàþò îïàñíîñòåé
+m.AbilBonusTaming2_0=Ãóñòîé ìåõ
+m.AbilBonusTaming2_1=Óðîí íàïîëîâèíó, Îãíåóñòîé÷èâîñòü
+m.AbilBonusTaming3_0=Íàäåæíàÿ çàùèòà îò ïîâðåæäåíèé
+m.AbilBonusTaming3_1=Âçðûâû ïðè÷èíÿþò 1/6 íîðìàëüíîãî óðîíà
+m.AbilBonusTaming4_0=Îñòðûå Êîãòè
+m.AbilBonusTaming4_1=+2 Óðîíà
+m.TamingGoreChance=[[RED]]Øàíñ îêðàâëåíèÿ: [[YELLOW]]{0}%
+m.SkillWoodCutting=Äåðåâîîáðàáîòêà
+m.XPGainWoodCutting=Ðóáèòü äåðåâüÿ
+m.EffectsWoodCutting1_0=Ëþáèòåëü äåðåâüåâ(ñïîñîáíîñòü)
+m.EffectsWoodCutting1_1=Äåëàòü âçðûâû äåðåâüåâ
+m.EffectsWoodCutting2_0=Áûñòðîå ñðåçàíèå ëèñòüåâ
+m.EffectsWoodCutting2_1=Ñäóâàòü ëèñòüÿ
+m.EffectsWoodCutting3_0=Äâîéíîé äðîï
+m.EffectsWoodCutting3_1=Íîðìàëüíûé äâîéíîé äðîï
+m.AbilLockWoodCutting1=Áëîêèðóåòñÿ äî 100+ óðîâíÿ(Áûñòðîå ñðåçàíèå ëèñòüåâ)
+m.AbilBonusWoodCutting1_0=Áûñòðîå ñðåçàíèå ëèñòüåâ
+m.AbilBonusWoodCutting1_1=Ñäóâàòü ëèñòüÿ
+m.WoodCuttingDoubleDropChance=[[RED]]Øàíñ äâîéíîãî äðîïà: [[YELLOW]]{0}%
+m.WoodCuttingTreeFellerLength=[[RED]]Ïðîäîëæèòåëüíîñòü Ëþáèòåëÿ äåðåâüåâ: [[YELLOW]]{0}s
+m.SkillArchery=Ñòðåëüáà èç ëóêà
+m.XPGainArchery=Àòàêîâàòü ìîíñòðîâ èç ëóêà
+m.EffectsArchery1_0=Ïîäæ¸ã
+m.EffectsArchery1_1=25% øàíñ, ÷òî öåëü ïîäîæã¸òñÿ
+m.EffectsArchery2_0=Øîêèðîâàíèå(Èãðîêîâ)
+m.EffectsArchery2_1=Äåçîðèåíòèðóåò âðàãîâ
+m.EffectsArchery3_0=Óðîí+
+m.EffectsArchery3_1=Óëó÷øàåò Óðîí
+m.EffectsArchery4_0=Ïîëó÷åíèå ñòðåë
+m.EffectsArchery4_1=Øàíñ ïîëó÷èòü ñòðåëû èç òðóïîâ
+m.ArcheryDazeChance=[[RED]]Øàíñ øîêèðîâàòü: [[YELLOW]]{0}%
+m.ArcheryRetrieveChance=[[RED]]Øàíñ ïîëó÷èòü ñòðåëû: [[YELLOW]]{0}%
+m.ArcheryIgnitionLength=[[RED]]Äëèòåëüíîñòü ïîäæ¸ãà: [[YELLOW]]{0} ñåêóíä
+m.ArcheryDamagePlus=[[RED]]Óðîí+ (Rank{0}): [[YELLOW]]Bonus {0} damage
+m.SkillAxes=Òîïîðû
+m.XPGainAxes=Àòàêîâàòü ìîíñòðîâ òîïîðîì
+m.EffectsAxes1_0=Ðàçðóøèòåëü ÷åðåïîâ(ñïîñîáíîñòü)
+m.EffectsAxes1_1=Óâåëè÷åíèå óðîíà îò òîïîðà
+m.EffectsAxes2_0=Êðèòè÷åñêèå óäàðû
+m.EffectsAxes2_1=Äâîéíîé óðîí
+m.EffectsAxes3_0=Ìàñòåðñòâî òîïîðà(500 óðîâåíü)
+m.EffectsAxes3_1=Óëó÷øåíèå óðîíà
+m.AbilLockAxes1=Áëîêèðóåòñÿ äî 500+ óðîâíÿ(Ìàñòåðñòâî òîïîðà)
+m.AbilBonusAxes1_0=Ìàñòåðñòâî òîïîðà
+m.AbilBonusAxes1_1=Äàåò áîíóñ â 4 óðîíà
+m.AxesCritChance=[[RED]]Øàíñ êðèòè÷åñêîãî óäàðà: [[YELLOW]]{0}%
+m.AxesSkullLength=[[RED]]Ïðîäîëæèòåëüíîñòü Ðàçðóøèòåëÿ ×åðåïîâ: [[YELLOW]]{0}s
+m.SkillSwords=Ìå÷è
+m.XPGainSwords=Àòàêîâàòü ìîíñòðîâ ìå÷îì
+m.EffectsSwords1_0=Êîíòð-Àòàêà
+m.EffectsSwords1_1=Îòðàæàåò 50% ïîëó÷åííîãî óðîíà
+m.EffectsSwords2_0=Çàçóáðåííûå ìå÷è(ñïîñîáíîñòü)
+m.EffectsSwords2_1=25% Óðîíà+ è êðîâîòå÷åíèå îò óäàðà
+m.EffectsSwords3_0=Óâåëå÷åíèå äëèòåëüíîñòè ñïîñîáíîñòè "Çàçóáðåííûå ìå÷è"
+m.EffectsSwords3_1=Êðîâîòå÷åíèå 5 ðàç
+m.EffectsSwords4_0=Ïàðèðîâàíèå
+m.EffectsSwords4_1=Îòðèöàòåëüíûé óðîí
+m.EffectsSwords5_0=Êðîâîòå÷åíèå
+m.EffectsSwords5_1=Çàñòàâëÿåò âðàãà êðîâîòî÷èòü
+m.SwordsCounterAttChance=[[RED]]Øàíñ Êîíòð-Àòàêè: [[YELLOW]]{0}%
+m.SwordsBleedLength=[[RED]]Äëèòåëüíîñòü êðîâîòå÷åíèÿ: [[YELLOW]]{0} ðàç
+m.SwordsBleedChance=[[RED]]Øàíñ êðîâîòå÷åíèÿ: [[YELLOW]]{0} %
+m.SwordsParryChance=[[RED]]Øàíñ ïàðèðîâàíèÿ: [[YELLOW]]{0} %
+m.SwordsSSLength=[[RED]]Äëèòåëüíîñòü "Çàçóáðåííûx ìå÷åé": [[YELLOW]]{0}s
+m.SwordsTickNote=[[GRAY]]Çàìåòêà: [[YELLOW]]1 ðàç äëèòüñÿ 2 ñåêóíäû
+m.SkillAcrobatics=Àêðîáàòèêà
+m.XPGainAcrobatics=Íóæíî Ïàäàòü ñ ãîð
+m.EffectsAcrobatics1_0=Ïåðåâîðîò
+m.EffectsAcrobatics1_1=Ïîãëîùàåò èëè óìåíüøàåò óðîí
+m.EffectsAcrobatics2_0=Ïðåâîñõîäíûé ïåðåâîðîò
+m.EffectsAcrobatics2_1=Äâàæäû ýôôåêòèâíåå ïåðåâîðîòà
+m.EffectsAcrobatics3_0=Óâîðîò
+m.EffectsAcrobatics3_1=Óìåíüøàåò óðîí íàïîëîâèíó îò ñòðåëû
+m.AcrobaticsRollChance=[[RED]]Øàíñ ïåðåâîðîòà: [[YELLOW]]{0}%
+m.AcrobaticsGracefulRollChance=[[RED]]Øàíñ ïðåâîñõîäíîãî ïåðåâîðîòà: [[YELLOW]]{0}%
+m.AcrobaticsDodgeChance=[[RED]]Øàíñ óâîðîòà: [[YELLOW]]{0}%
+m.SkillMining=Øàõò¸ðñòâî
+m.XPGainMining=Äîáûâàòü ðóäó è êàìíè â øàõòàõ
+m.EffectsMining1_0=Ñóïåð ðàçðóøèòåëü(ñïîñîáíîñòü)
+m.EffectsMining1_1=Óâåëè÷åíèå ñêîðîñòè, Øàíñ òðîéíîãî äðîïà
+m.EffectsMining2_0=Äâîéíîé äðîï
+m.EffectsMining2_1=Äâîéíîé äðîï ñòàíîâèòñÿ íîðìàëüíûì
+m.MiningDoubleDropChance=[[RED]]Øàíñ äâîéíîãî äðîïà: [[YELLOW]]{0}%
+m.MiningSuperBreakerLength=[[RED]]Äëèòåëüíîñòü ñïîñîáíîñòè "Ñóïåð Ðàçðóøèòåëü": [[YELLOW]]{0}s
+m.SkillRepair=Ïî÷èíêà
+m.XPGainRepair=×èíèòü âåùè
+m.EffectsRepair1_0=Ïî÷èíêà
+m.EffectsRepair1_1=×èíèò Æåëåçíûå èíñòðóìåíòû è áðîíþ
+m.EffectsRepair2_0=Ìàñòåðñòâî ïî÷èíêè
+m.EffectsRepair2_1=Óâåëè÷èâàåò êà÷åñòâî ðåìîíòà
+m.EffectsRepair3_0=Ñóïåð ïî÷èíêà
+m.EffectsRepair3_1=Äâîéíàÿ ýôôåêòèâíîñòü âåùåé
+m.EffectsRepair4_0=Ïî÷èíêà Àëìàçíûõ âåùåé ({0}+ óðîâåíü)
+m.EffectsRepair4_1=×èíèòü Àëìàçíûå èíñòðóìåíòû è áðîíþ
+m.RepairRepairMastery=[[RED]]Ìàñòåðñòâî ïî÷èíêè: [[YELLOW]]Äîïîëíèòåëüíî {0}% äîëãîâå÷íîñòè âîññòàíîâëåíî
+m.RepairSuperRepairChance=[[RED]]Øàíñ Ñóïåð ïî÷èíêè: [[YELLOW]]{0}%
+m.SkillUnarmed=Ðóêîïàøíûé áîé
+m.XPGainUnarmed=Àòàêîâàòü ìîíñòðîâ ãîëûìè ðóêàìè
+m.EffectsUnarmed1_0=Áåðñåðê(ñïîñîáíîñòü)
+m.EffectsUnarmed1_1=+50% Óðîíà, Ëîìàòü ñëàáûå ìàòåðèàëû
+m.EffectsUnarmed2_0=Îáåçîðóæåíèå(Èãðîêè)
+m.EffectsUnarmed2_1=Ïàäàåò îðóæèå ïðîòèâíèêà íà çåìëþ, êîòîðîå íàõîäèòñÿ â ðóêàõ ó íåãî.
+m.EffectsUnarmed3_0=Ìàñòåð Ðóêîïàøíîãî áîÿ
+m.EffectsUnarmed3_1=Óëó÷øåíèå óðîíà îò êóëàêîâ
+m.EffectsUnarmed4_0=Ó÷åíèê ðóêîïàøíîãî áîÿ
+m.EffectsUnarmed4_1=Óâåëè÷åíèå óðîíà îò êóëàêîâ
+m.EffectsUnarmed5_0=Îòðàæåíèå ñòðåë
+m.EffectsUnarmed5_1=Ñòðåëû îòðàæàþòñÿ
+m.AbilLockUnarmed1=Áëîêèðóåòñÿ äî 250+ óðîâíÿ(Ó÷åíèê ðóêîïàøíîãî áîÿ)
+m.AbilLockUnarmed2=Áëîêèðóåòñÿ äî 500+ óðîâíÿ(Ìàñòåð Ðóêîïàøíîãî áîÿ)
+m.AbilBonusUnarmed1_0=Ó÷åíèê ðóêîïàøíîãî áîÿ
+m.AbilBonusUnarmed1_1=+2 áîíóñ ê óðîíó
+m.AbilBonusUnarmed2_0=Ìàñòåð Ðóêîïàøíîãî áîÿ
+m.AbilBonusUnarmed2_1=+4 áîíóñ ê óðîíó
+m.UnarmedArrowDeflectChance=[[RED]]Øàíñ îòðàçèòü ñòðåëû: [[YELLOW]]{0}%
+m.UnarmedDisarmChance=[[RED]]Øàíñ îáåçîðóæèòü: [[YELLOW]]{0}%
+m.UnarmedBerserkLength=[[RED]]Äëèòåëüíîñòü "Áåðñåðêà": [[YELLOW]]{0}s
+m.SkillHerbalism=Òðàâîâåäåíèå
+m.XPGainHerbalism=Âûðàùèâàòü ðàñòåíèÿ
+m.EffectsHerbalism1_0=Îçåëåíèòåëü(ñïîñîáíîñòü)
+m.EffectsHerbalism1_1=Ðàñïðîñòðîíåíèå îçåëåíåíèé, 3-îé äðîï
+m.EffectsHerbalism2_0="Çåëåíûé ôåðìåð"(Ïùåíèöà)
+m.EffectsHerbalism2_1=Àâòî âûðàùèâàíèå ïùåíèöû ïîñëå ïîñàäêè
+m.EffectsHerbalism3_0="Çåëåíûé ôåðìåð"(Ìîõ)
+m.EffectsHerbalism3_1=Êàìåíü -> Çàìøåëûé êàìåíü + ñåìåíà
+m.EffectsHerbalism4_0=Óëó÷øåíèå åäû
+m.EffectsHerbalism4_1=Óëó÷øàåò êîëè÷åñòâî çäîðîâüÿ îò õëåáà è ãðèáíîãî ñóïà
+m.EffectsHerbalism5_0=Äðîéíîé äðîï(Âñå ðàñòåíèÿ)
+m.EffectsHerbalism5_1=Äâîéíîé äðîï ñòàíîâèòñÿ íîðìàëüíûì
+m.HerbalismGreenTerraLength=[[RED]]Ïðîäîëæèòåëüíîñòü "Îçåëåíèòåëÿ": [[YELLOW]]{0}s
+m.HerbalismGreenThumbChance=[[RED]]Øàíñ "Çåëåíîãî ôåðìåðà": [[YELLOW]]{0}%
+m.HerbalismGreenThumbStage=[[RED]]Óðîâåíü "Çåëåíîãî ôåðìåðà": [[YELLOW]] Ïùåíèöà ðàñòåò ïî-óðîâíåâî {0}
+m.HerbalismDoubleDropChance=[[RED]]Øàíñ äâîéíîãî äðîïà: [[YELLOW]]{0}%
+m.HerbalismFoodPlus=[[RED]]Åäà+ (Rank{0}): [[YELLOW]]Áîíóñ {0} ëå÷åíèÿ
+m.SkillExcavation=Ðàñêîïêà
+m.XPGainExcavation=Ðàñêàïûâàòü è èñêàòü ñîêðîâèùà
+m.EffectsExcavation1_0=Ìåãà äðåëü(ñïîñîáíîñòü)
+m.EffectsExcavation1_1=3-îé äðîï, 3-îé îïûò, Óâåëè÷åíèå ñêîðîñòè
+m.EffectsExcavation2_0=Îõîòíèê çà ñîêðîâèùàìè
+m.EffectsExcavation2_1=Ñïîñîáíîñòü êîïàòü ñîêðîâèùà
+m.ExcavationGreenTerraLength=[[RED]]Ïðîäîëæèòåëüíîñòü "Ìåãà äðåëè": [[YELLOW]]{0}s
+mcBlockListener.PlacedAnvil=[[DARK_RED]]Âû ðàçìåñòèëè íàêîâàëüíè è òåïåðü ìîæåòå ÷èíèòü âåùè.
+mcEntityListener.WolfComesBack=[[DARK_GRAY]]Âàø âîëê õî÷åò âåðíóòüñÿ ê âàì
+mcPlayerListener.AbilitiesOff=Èñïîëüçîâàíèå ñïîñîáíîñòåé âûêëþ÷åíî
+mcPlayerListener.AbilitiesOn=Èñïîëüçîâàíèå ñïîñîáíîñòåé âêëþ÷åíî
+mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**Ñïîñîáíîñòè âîññòàíîâëåíû\!**
+mcPlayerListener.AcrobaticsSkill=Àêðîáàòèêà:
+mcPlayerListener.ArcherySkill=Ñòðåëüáà èç ëóêà:
+mcPlayerListener.AxesSkill=Òîïîðû:
+mcPlayerListener.ExcavationSkill=Ðàñêîïêà:
+mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO ðåæèì áîãà âûêëþ÷åí
+mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO ðåæèì áîãà âêëþ÷¸í
+mcPlayerListener.GreenThumb=[[GREEN]]**"Çåëåíûé ôåðìåð"**
+mcPlayerListener.GreenThumbFail=[[RED]]**"Çåëåíûé ôåðìåð" íåóäàëñÿ**
+mcPlayerListener.HerbalismSkill=Òðàâîâåäåíèå:
+mcPlayerListener.MiningSkill=Øàõò¸ðñòâî:
+mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Âàøà êðîâàòü óáðàíà.
+mcPlayerListener.MyspawnNotExist=[[RED]]Ñäåëàéòå âàøó òî÷êó ïîÿâëåíèÿ âîçëå êðîâàòè, ïîñïàâ íà êðîâàòè.
+mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Ìîÿ òî÷êà ïîÿâëåíèÿ ñîõðàíåíà â ýòîé ëîêàöèè.
+mcPlayerListener.MyspawnTimeNotice=Âû äîëæíû ïîäîæäàòü {0}m {1}s ÷òîáû èñïîëüçîâàòü ïîÿâëåíèå îêîëî êðîâàòè
+mcPlayerListener.NoPermission=Íåäîñòàòî÷íûå ïðàâà.
+mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Åñëè ó âàñ íåò äîñòóïà ê óìåíèþ, òî îíî çäåñü íå îòîáðàçèòñÿ.
+mcPlayerListener.NotInParty=[[RED]]Âû íå â ãðóïïå!
+mcPlayerListener.InviteSuccess=[[GREEN]]Ïðèãëàøåíèå óñïåøíî ïîñëàíî.
+mcPlayerListener.ReceivedInvite1=[[RED]]ÒÐÅÂÎÃÀ: [[GREEN]]Âû ïîëó÷èëè ïðèãëàøåíèå íà âñòóïëåíèå â ãðóïïó {0} îò {1}
+mcPlayerListener.ReceivedInvite2=[[YELLOW]]Type [[GREEN]]/{0}[[YELLOW]] ÷òîáû îäîáðèòü âñòóïëåíèå
+mcPlayerListener.InviteAccepted=[[GREEN]]Ïðèãëàøåíèå îäîáðåíî. Âû âñòóïèëè â ãðóïïó {0}
+mcPlayerListener.NoInvites=[[RED]]Ó âàñ íåò ïðèãëàøåíèé â ãðóïïó ñåé÷àñ
+mcPlayerListener.YouAreInParty=[[GREEN]]Âû óæå â ãðóïïå {0}
+mcPlayerListener.PartyMembers=[[GREEN]]×ëåíû ãðóïïû
+mcPlayerListener.LeftParty=[[RED]]Âû âûøëè èç ãðóïïû
+mcPlayerListener.JoinedParty=Ïðèñîåäèííûå ãðóïïû: {0}
+mcPlayerListener.PartyChatOn=Òîëüêî ÷àò ãðóïïû [[GREEN]]Âêëþ÷åíî
+mcPlayerListener.PartyChatOff=Òîëüêî ÷àò ãðóïïû [[RED]]Âûêëþ÷åíî
+mcPlayerListener.AdminChatOn=Òîëüêî àäìèí ÷àò [[GREEN]]Âêëþ÷åíî
+mcPlayerListener.AdminChatOff=Òîëüêî àäìèí ÷àò [[RED]]Âûêëþ÷åíî
+mcPlayerListener.MOTD=[[BLUE]]Íà ýòîì ñåðâåðå óñòàíîâëåí ïëàãèí McMMO {0} type [[YELLOW]]/{1}[[BLUE]] äëÿ ïîìîùè.
+mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO Âèêèïåäèÿ
+mcPlayerListener.PowerLevel=[[DARK_RED]]Óðîâåíü óìåíèé:
+mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] Óðîâåíü óìåíèé [[YELLOW]]Äîñêà Ëèäåðîâ--
+mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Äîñêà Ëèäåðîâ--
+mcPlayerListener.RepairSkill=Ïî÷èíêà:
+mcPlayerListener.SwordsSkill=Ìå÷è:
+mcPlayerListener.TamingSkill=Ïðèðó÷åíèå âîëêîâ:
+mcPlayerListener.UnarmedSkill=Ðóêîïàøíûé áîé:
+mcPlayerListener.WoodcuttingSkill=Äåðåâîîáðàáîòêà:
+mcPlayerListener.YourStats=[[GREEN]][mcMMO] Õàðàêòåðèñòèêè
+Party.InformedOnJoin={0} [[GREEN]] ïðèñîåäèíèëñÿ ê ãðóïïå
+Party.InformedOnQuit={0} [[GREEN]] óø¸ë èç ãðóïïû
+Skills.YourGreenTerra=[[GREEN]]Âàøà ñïîñîáíîñòü[[YELLOW]]"Îçåëåíåíèå" [[GREEN]]âîññòàíîâëåíà!
+Skills.YourTreeFeller=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Ëþáèòåëü äåðåâüåâ" [[GREEN]]âîññòàíîâëåíà!
+Skills.YourSuperBreaker=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Ñóïåð ðàçðóøèòåëü" [[GREEN]]âîññòàíîâëåíà!
+Skills.YourSerratedStrikes=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Çàçóáðåííûå ìå÷è" [[GREEN]]âîññòàíîâëåíà!
+Skills.YourBerserk=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Áåðñåðê" [[GREEN]]âîññòàíîâëåíà!
+Skills.YourSkullSplitter=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Ðàçðóøèòåëü ÷åðåïîâ" [[GREEN]]âîññòàíîâëåíà!
+Skills.YourGigaDrillBreaker=[[GREEN]]Âàøà ñïîñîáíîñòü [[YELLOW]]"Ìåãà äðåëü" [[GREEN]]âîññòàíîâëåíà!
+Skills.TooTired=[[RED]]Âû ñëèøêîì óñòàëè, ÷òîáû èñïîëüçîâàòü ñïîñîáíîñòü åù¸ ðàç.
+Skills.ReadyHoe=[[GREEN]]**Ïðèãîòîâüòå âàøó Ìîòûãó**
+Skills.LowerHoe=[[GRAY]]**Îïóñòèòå âàøó Ìîòûãó**
+Skills.ReadyAxe=[[GREEN]]**Ïðèãîòîâüòå âàø Òîïîð**
+Skills.LowerAxe=[[GRAY]]**Îïóñòèòå âàø Òîïîð**
+Skills.ReadyFists=[[GREEN]]**Ïðèãîòîâüòå âàøè Êóëàêè**
+Skills.LowerFists=[[GRAY]]**Îïóñòèòå âàøè Êóëàêè**
+Skills.ReadyPickAxe=[[GREEN]]**Ïðèãîòîâüòå âàøó Êèðêó**
+Skills.LowerPickAxe=[[GRAY]]**Îïóñòèòå âàøó Êèðêó**
+Skills.ReadyShovel=[[GREEN]]**Ïðèãîòîâüòå âàøó Ëîïàòó**
+Skills.LowerShovel=[[GRAY]]**Îïóñòèòå âàøó Ëîïàòó**
+Skills.ReadySword=[[GREEN]]**Ïðèãîòîâüòå âàø Ìå÷**
+Skills.LowerSword=[[GRAY]]**Îïóñòèòå âàø Ìå÷**
+Skills.BerserkOn=[[GREEN]]**Ñïîñîáíîñòü "Áåðñåðê" àêòèâèðîâàíà**
+Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Áåðñåðê"!
+Skills.GreenTerraOn=[[GREEN]]**Ñïîñîáíîñòü "Îçåëåíåíèå" àêòèâèðîâàíà**
+Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Îçåëåíåíèå"!
+Skills.TreeFellerOn=[[GREEN]]**Ñïîñîáíîñòü "Ëþáèòåëü Äåðåâüåâ" àêòèâèðîâàíà**
+Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Ëþáèòåëü Äåðåâüåâ"!
+Skills.SuperBreakerOn=[[GREEN]]**Ñïîñîáíîñòü "Ñóïåð Ðàçðóøèòåëü" àêòèâèðîâàíà**
+Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Ñóïåð Ðàçðóøèòåëü"!
+Skills.SerratedStrikesOn=[[GREEN]]**Ñïîñîáíîñòü "Çàçóáðåííûå ìå÷è" àêòèâèðîâàíà**
+Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Çàçóáðåííûå ìå÷è"!
+Skills.SkullSplitterOn=[[GREEN]]**Ñïîñîáíîñòü "Ðàçðåøèòåëü ÷åðåïîâ" àêòèâèðîâàíà**
+Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Ðàçðóøèòåëü ÷åðåïîâ"!
+Skills.GigaDrillBreakerOn=[[GREEN]]**Ñïîñîáíîñòü "Ìåãà äðåëü" àêòèâèðîâàíà**
+Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] èñïîëüçîâàë ñïîñîáíîñòü [[RED]]"Ìåãà äðåëü"!
+Skills.GreenTerraOff=[[RED]]**Ñïîñîáíîñòü "Îçåëåíåíèå" äåàêòèâèðîâàíà**
+Skills.TreeFellerOff=[[RED]]**Ñïîñîáíîñòü "Ëþáèòåëü Äåðåâüåâ" äåàêòèâèðîâàíà**
+Skills.SuperBreakerOff=[[RED]]**Ñïîñîáíîñòü "Ñóïåð Ðàçðóøèòåëü" äåàêòèâèðîâàíà**
+Skills.SerratedStrikesOff=[[RED]]**Ñïîñîáíîñòü "Çàçóáðåííûå ìå÷è" äåàêòèâèðîâàíà**
+Skills.BerserkOff=[[RED]]**Ñïîñîáíîñòü "Áåðñåðê" äåàêòèâèðîâàíà**
+Skills.SkullSplitterOff=[[RED]]**Ñïîñîáíîñòü "Ðàçðåøèòåëü ÷åðåïîâ" äåàêòèâèðîâàíà**
+Skills.GigaDrillBreakerOff=[[RED]]**Ñïîñîáíîñòü "Ìåãà äðåëü" äåàêòèâèðîâàíà**
+Skills.TamingUp=[[YELLOW]]Óìåíèå "Ïðèðó÷åíèå âîëêîâ" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.AcrobaticsUp=[[YELLOW]]Óìåíèå "Àêðîáàòèêà" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.ArcheryUp=[[YELLOW]]Óìåíèå "Ñòðåëüáà èç ëóêà" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.SwordsUp=[[YELLOW]]Óìåíèå "Ìå÷è" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.AxesUp=[[YELLOW]]Óìåíèå "Òîïîðû" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.UnarmedUp=[[YELLOW]]Óìåíèå "Ðóêîïàøíûé áîé" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.HerbalismUp=[[YELLOW]]Óìåíèå "Òðàâîâåäåíèå" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.MiningUp=[[YELLOW]]Óìåíèå "Øàõò¸ðñòâî" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.WoodcuttingUp=[[YELLOW]]Óìåíèå "Äåðåâîîáðàáîòêà" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.RepairUp=[[YELLOW]]Óìåíèå "Ïî÷èíêà" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.ExcavationUp=[[YELLOW]]Óìåíèå "Ðàñêîïêà" ïîâûøåíî íà {0}. Âñåãî ({1})
+Skills.FeltEasy=[[GRAY]]Ýòî áûëî ëåãêî.
+Skills.StackedItems=[[DARK_RED]]Âû íå ìîæåòå ÷èíèòü ñòàêóþùèåñÿ ïðåäìåòû
+Skills.NeedMore=[[DARK_RED]]Íóæíî áîëüøå ìàòåðèàëà
+Skills.AdeptDiamond=[[DARK_RED]]Âû íå îáó÷åíû ÷èíèòü àëìàçíûå èíñòðóìåíòû è áðîíþ
+Skills.FullDurability=[[GRAY]]Âåùü íå íóæäàåòñÿ â ïî÷èíêå.
+Skills.Disarmed=[[DARK_RED]]Âû îáåçîðóæåíû!
+mcPlayerListener.SorcerySkill=Êîëäîâñòâî:
+m.SkillSorcery=Êîëäîâñòâî
+Sorcery.HasCast=[[GREEN]]**Èñïîëüçóþ "Êîëäîâñòâî"**[[GOLD]]
+Sorcery.Current_Mana=[[DARK_AQUA]] Ìàíû
+Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
+Sorcery.Cost=[[RED]][COST] {0} Ìàíû
+Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] Íå õâàòàåò ìàíû [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
+Sorcery.Water.Thunder=Ãðîì
+Sorcery.Curative.Self=Âûëå÷èòü ñåáÿ
+Sorcery.Curative.Other=Âûëå÷èòü äðóãèõ
+m.LVL=[[DARK_GRAY]]Óðîâåíü: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
+Combat.BeastLore=[[GREEN]]**Óìåíèå "Óäàð âîëêà" àêòèâèðîâàíî**
+Combat.BeastLoreOwner=[[DARK_AQUA]]Âëàäåëåö ([[RED]]{0}[[DARK_AQUA]])
+Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Çäîðîâüÿ ([[GREEN]]{0}[[DARK_AQUA]]/20)
+Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Çäîðîâüÿ ([[GREEN]]{0}[[DARK_AQUA]]/8)
+Party.Locked=[[RED]]Ãðóïïà çàïàðîëåíà, òîëüêî ëèäåð ãðóïïû ìîæåò ïðèãëàøàòü.
+Party.IsntLocked=[[GRAY]]Ãðóïïà ðàçáëîêèðîâàíà
+Party.Unlocked=[[GRAY]]Ãðóïïà ðàçáëîêèðîâàíà
+Party.Help1=[[RED]]Èñïîëüçîâàíèå [[YELLOW]]/{0} [[WHITE]][[YELLOW]] èëè [[WHITE]]'q' [[YELLOW]]äëÿ âûõîäà
+Party.Help2=[[RED]]×òîáû ïðèñîåäèíèòñÿ ê çàïàðîëåííîé ãðóïïå ââåäèòå [[YELLOW]]/{0} [[WHITE]]<èìÿ> <ïàðîëü>
+Party.Help3=[[RED]]Ââåäèòå /{0} ? äëÿ áîëüøåé èíôîðìàöèè
+Party.Help4=[[RED]]Èñïîëüçóéòå [[YELLOW]]/{0} [[WHITE]]<èìÿ> [[YELLOW]]÷òîáû ïðèñîåäèíèòñÿ ê ãðóïïå èëè [[WHITE]]'q' [[YELLOW]]äëÿ âûõîäà
+Party.Help5=[[RED]]×òîáû çàáëîêèðîâàòü ãðóïïó ââåäèòå [[YELLOW]]/{0} [[WHITE]]lock
+Party.Help6=[[RED]]×òîáû ðàçáëîêèðîâàòü ãðóïïó ââåäèòå [[YELLOW]]/{0} [[WHITE]]unlock
+Party.Help7=[[RED]]×òîáû çàïàðîëèòü ãðóïïó ââåäèòå [[YELLOW]]/{0} [[WHITE]]password <ïàðîëü>
+Party.Help8=[[RED]]×òîáû âûêèíóòü èãðîêà èç ãðóïïû ââåäèòå [[YELLOW]]/{0} [[WHITE]]kick <èãðîê>
+Party.Help9=[[RED]]×òîáû îòäàòü ëèäåðñòâî ãðóïïû ââåäèòå [[YELLOW]]/{0} [[WHITE]]owner <èãðîê>
+Party.NotOwner=[[DARK_RED]]Âû òåïåðü íå ëèäåð ãðóïïû
+Party.InvalidName=[[DARK_RED]]Íåêîððåêòíîå èìÿ ãðóïïû
+Party.PasswordSet=[[GREEN]]Ïàðîëü ãðóïïû íàçíà÷åí {0}
+Party.CouldNotKick=[[DARK_RED]]Âû íå ìîæåòå óáðàòü èãðîêà èç ãðóïïû {0}
+Party.NotInYourParty=[[DARK_RED]]{0} íå â ãðóïïå
+Party.CouldNotSetOwner=[[DARK_RED]]Âû íå ìîæåòå îòäàòü ëèäåðñòâî èãðîêó {0}
+mcMMO.Description=[[DARK_AQUA]]Q: ×òî ýòî?,[[GOLD]]mcMMO ýòî [[RED]]ÎÏÅÍ ÑÓÐÑ[[GOLD]] RPG ìîä äëÿ ñåðâåðà Bukkit îò ïîëüçîâàòåëÿ [[BLUE]]nossr50,[[GOLD]]Çäåñü áûëî äîáàâëåíî ìíîãî óìåíèé äëÿ Minecraft ñåðâåðà.,[[GOLD]]Âû ìîæåòå ïðîêà÷àòü èõ ðàçíûìè ñïîñîáàìè,[[GOLD]]Âû õîòèòå íàéòè áîëüøå èíôîðìàöèè î óìåíèè [[GREEN]]/SKILLNAME[[GOLD]] ?,[[DARK_AQUA]]Q: ×òî ÿ äîëæåí ñäåëàòü?,[[GOLD]]Äëÿ ïðèìåðà... in [[DARK_AQUA]]Øàõò¸ðñòâî[[GOLD]] âû ïîëó÷èòå [[RED]]2-îé äðîï[[GOLD]] èëè ñïîñîáíîñòü [[RED]]"Ñóïåð ðàçðóøèòåëü"[[GOLD]] ,êîòîðàÿ àêòèâèðóåòñÿ [[GOLD]]íàæàòèåì ïðàâîé êíîïêè ìûøè íà íåêîòîðîå âðåìÿ,[[GOLD]]ñâÿçàííîå ñ âàøèì óðîâíåì óìåíèÿ. Ïîäíÿòü óðîâåíü [[BLUE]]Øàõò¸ðñòâà,[[GOLD]]ëåãêî ïðîñòî êîïàéòå ðóäû è êàìíè!
+m.SkillAlchemy=ALCHEMY
+m.SkillEnchanting=ENCHANTING
+m.SkillFishing=FISHING
+mcPlayerListener.AlchemySkill=Alchemy:
+mcPlayerListener.EnchantingSkill=Enchanting:
+mcPlayerListener.FishingSkill=Fishing:
+Skills.AlchemyUp=[[YELLOW]]Alchemy skill increased by {0}. Total ({1})
+Skills.EnchantingUp=[[YELLOW]]Enchanting skill increased by {0}. Total ({1})
+Skills.FishingUp=[[YELLOW]]Fishing skill increased by {0}. Total ({1})
+Repair.LostEnchants=[[RED]]You were not skilled enough to keep any enchantments.
+Repair.ArcanePerfect=[[GREEN]]You have sustained the arcane energies in this item.
+Repair.Downgraded=[[RED]]Arcane power has decreased for this item.
+Repair.ArcaneFailed=[[RED]]Arcane power has permanently left the item.
+m.EffectsRepair5_0=Arcane Forging
+m.EffectsRepair5_1=Repair magic items
+m.ArcaneForgingRank=[[RED]]Arcane Forging: [[YELLOW]]Rank {0}/4
+m.ArcaneEnchantKeepChance=[[GRAY]]AF Success Rate: [[YELLOW]]{0}%
+m.ArcaneEnchantDowngradeChance=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
+m.ArcaneForgingMilestones=[[GOLD]][TIP] AF Rank Ups: [[GRAY]]Rank 1 = 100+, Rank 2 = 250+,
+m.ArcaneForgingMilestones2=[[GRAY]] Rank 3 = 500+, Rank 4 = 750+
+Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
+Fishing.ItemFound=[[GRAY]]Treasure found!
+m.SkillFishing=FISHING
+m.XPGainFishing=Fishing (Go figure!)
+m.EffectsFishing1_0=Treasure Hunter (Passive)
+m.EffectsFishing1_1=Fish up misc objects
+m.EffectsFishing2_0=Magic Hunter
+m.EffectsFishing2_1=Find Enchanted Items
+m.EffectsFishing3_0=Shake (vs. Entities)
+m.EffectsFishing3_1=Shake items off of mobs w/ fishing pole
+m.FishingRank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
+m.FishingMagicInfo=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
+m.ShakeInfo=[[RED]]Shake: [[YELLOW]]Tear items off mobs, mutilating them in the process ;_;
+m.AbilLockFishing1=LOCKED UNTIL 150+ SKILL (SHAKE)
+m.TamingSummon=[[GREEN]]Summoning complete
+m.TamingSummonFailed=[[RED]]You have too many wolves nearby to summon any more.
+m.EffectsTaming7_0=Call of the Wild
+m.EffectsTaming7_1=Summon a wolf to your side
m.EffectsTaming7_2=[[GRAY]]COTW HOW-TO: Crouch and right click with {0} Bones in hand
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/locale/mcLocale.java b/src/main/java/com/gmail/nossr50/locale/mcLocale.java
similarity index 97%
rename from src/com/gmail/nossr50/locale/mcLocale.java
rename to src/main/java/com/gmail/nossr50/locale/mcLocale.java
index 78fdf96bf..2146a477c 100644
--- a/src/com/gmail/nossr50/locale/mcLocale.java
+++ b/src/main/java/com/gmail/nossr50/locale/mcLocale.java
@@ -1,91 +1,91 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-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;
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+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;
+ }
+}
diff --git a/src/com/gmail/nossr50/m.java b/src/main/java/com/gmail/nossr50/m.java
similarity index 97%
rename from src/com/gmail/nossr50/m.java
rename to src/main/java/com/gmail/nossr50/m.java
index 619a26ebc..675daffbc 100644
--- a/src/com/gmail/nossr50/m.java
+++ b/src/main/java/com/gmail/nossr50/m.java
@@ -1,521 +1,521 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-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.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.entity.*;
-import org.bukkit.inventory.ItemStack;
-import com.gmail.nossr50.config.*;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.FakeBlockBreakEvent;
-import com.gmail.nossr50.datatypes.SkillType;
-
-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!
- */
-
- public static String getCapitalized(String target)
- {
- String firstLetter = target.substring(0,1);
- String remainder = target.substring(1);
- String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
-
- return capitalized;
- }
- 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();
- return id == 103 || id == 82 || id == 16 || id == 73 || 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;
- }
-
- public static int getPowerLevel(Player player)
- {
- PlayerProfile PP = Users.getProfile(player);
- int x = 0;
- if(mcPermissions.getInstance().taming(player))
- x+=PP.getSkillLevel(SkillType.TAMING);
- if(mcPermissions.getInstance().mining(player))
- x+=PP.getSkillLevel(SkillType.MINING);
- if(mcPermissions.getInstance().woodcutting(player))
- x+=PP.getSkillLevel(SkillType.WOODCUTTING);
- if(mcPermissions.getInstance().unarmed(player))
- x+=PP.getSkillLevel(SkillType.UNARMED);
- if(mcPermissions.getInstance().herbalism(player))
- x+=PP.getSkillLevel(SkillType.HERBALISM);
- if(mcPermissions.getInstance().excavation(player))
- x+=PP.getSkillLevel(SkillType.EXCAVATION);
- if(mcPermissions.getInstance().archery(player))
- x+=PP.getSkillLevel(SkillType.ARCHERY);
- if(mcPermissions.getInstance().swords(player))
- x+=PP.getSkillLevel(SkillType.SWORDS);
- if(mcPermissions.getInstance().axes(player))
- x+=PP.getSkillLevel(SkillType.AXES);
- if(mcPermissions.getInstance().acrobatics(player))
- x+=PP.getSkillLevel(SkillType.ACROBATICS);
- if(mcPermissions.getInstance().repair(player))
- x+=PP.getSkillLevel(SkillType.REPAIR);
- if(mcPermissions.getInstance().fishing(player))
- x+=PP.getSkillLevel(SkillType.FISHING);
- return x;
- }
-
- public static boolean blockBreakSimulate(Block block, Player player)
- {
- FakeBlockBreakEvent event = new FakeBlockBreakEvent(block, player);
- if(block != null && player != null){
- Bukkit.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 == 107 ||i == 117 || i == 116 || 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)
- {
- return is.getTypeId() == 268 || is.getTypeId() == 267 || is.getTypeId() == 272 || is.getTypeId() == 283 || is.getTypeId() == 276;
- }
-
- public static boolean isHoe(ItemStack is)
- {
- int id = is.getTypeId();
- return id == 290 || id == 291 || id == 292 || id == 293 || id == 294;
- }
-
- public static boolean isShovel(ItemStack is){
- return is.getTypeId() == 269 || is.getTypeId() == 273 || is.getTypeId() == 277 || is.getTypeId() == 284 || is.getTypeId() == 256;
- }
-
- 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()
- {
- if(!LoadProperties.useMySQL)
- return;
-
- Bukkit.getScheduler().scheduleAsyncDelayedTask(Bukkit.getServer().getPluginManager().getPlugin("mcMMO"), new Runnable(){
- public void run() {
- String location = "plugins/mcMMO/FlatFileStuff/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, fishing = null, fishingXP = 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];
- if (character.length > 34)
- fishing = character[34];
- if (character.length > 35)
- fishingXP = character[35];
-
- //Check to see if the user is in the DB
- id = mcMMO.database.GetInt("SELECT id FROM "
- + LoadProperties.MySQLtablePrefix
- + "users WHERE user = '" + playerName + "'");
-
- 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)
- + ", fishing = fishing+" + getInt(fishing)
- + " 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) + ", fishing = "
- + getInt(fishingXP) + " 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) + ", fishing = "
- + getInt(fishing) + " 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) + ", fishing = "
- + getInt(fishingXP) + " 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);
- }
- }
- }, 1);
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+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.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.entity.*;
+import org.bukkit.inventory.ItemStack;
+import com.gmail.nossr50.config.*;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.FakeBlockBreakEvent;
+import com.gmail.nossr50.datatypes.SkillType;
+
+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!
+ */
+
+ public static String getCapitalized(String target)
+ {
+ String firstLetter = target.substring(0,1);
+ String remainder = target.substring(1);
+ String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
+
+ return capitalized;
+ }
+ 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();
+ return id == 103 || id == 82 || id == 16 || id == 73 || 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;
+ }
+
+ public static int getPowerLevel(Player player)
+ {
+ PlayerProfile PP = Users.getProfile(player);
+ int x = 0;
+ if(mcPermissions.getInstance().taming(player))
+ x+=PP.getSkillLevel(SkillType.TAMING);
+ if(mcPermissions.getInstance().mining(player))
+ x+=PP.getSkillLevel(SkillType.MINING);
+ if(mcPermissions.getInstance().woodcutting(player))
+ x+=PP.getSkillLevel(SkillType.WOODCUTTING);
+ if(mcPermissions.getInstance().unarmed(player))
+ x+=PP.getSkillLevel(SkillType.UNARMED);
+ if(mcPermissions.getInstance().herbalism(player))
+ x+=PP.getSkillLevel(SkillType.HERBALISM);
+ if(mcPermissions.getInstance().excavation(player))
+ x+=PP.getSkillLevel(SkillType.EXCAVATION);
+ if(mcPermissions.getInstance().archery(player))
+ x+=PP.getSkillLevel(SkillType.ARCHERY);
+ if(mcPermissions.getInstance().swords(player))
+ x+=PP.getSkillLevel(SkillType.SWORDS);
+ if(mcPermissions.getInstance().axes(player))
+ x+=PP.getSkillLevel(SkillType.AXES);
+ if(mcPermissions.getInstance().acrobatics(player))
+ x+=PP.getSkillLevel(SkillType.ACROBATICS);
+ if(mcPermissions.getInstance().repair(player))
+ x+=PP.getSkillLevel(SkillType.REPAIR);
+ if(mcPermissions.getInstance().fishing(player))
+ x+=PP.getSkillLevel(SkillType.FISHING);
+ return x;
+ }
+
+ public static boolean blockBreakSimulate(Block block, Player player)
+ {
+ FakeBlockBreakEvent event = new FakeBlockBreakEvent(block, player);
+ if(block != null && player != null){
+ Bukkit.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 == 107 ||i == 117 || i == 116 || 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)
+ {
+ return is.getTypeId() == 268 || is.getTypeId() == 267 || is.getTypeId() == 272 || is.getTypeId() == 283 || is.getTypeId() == 276;
+ }
+
+ public static boolean isHoe(ItemStack is)
+ {
+ int id = is.getTypeId();
+ return id == 290 || id == 291 || id == 292 || id == 293 || id == 294;
+ }
+
+ public static boolean isShovel(ItemStack is){
+ return is.getTypeId() == 269 || is.getTypeId() == 273 || is.getTypeId() == 277 || is.getTypeId() == 284 || is.getTypeId() == 256;
+ }
+
+ 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()
+ {
+ if(!LoadProperties.useMySQL)
+ return;
+
+ Bukkit.getScheduler().scheduleAsyncDelayedTask(Bukkit.getServer().getPluginManager().getPlugin("mcMMO"), new Runnable(){
+ public void run() {
+ String location = "plugins/mcMMO/FlatFileStuff/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, fishing = null, fishingXP = 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];
+ if (character.length > 34)
+ fishing = character[34];
+ if (character.length > 35)
+ fishingXP = character[35];
+
+ //Check to see if the user is in the DB
+ id = mcMMO.database.GetInt("SELECT id FROM "
+ + LoadProperties.MySQLtablePrefix
+ + "users WHERE user = '" + playerName + "'");
+
+ 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)
+ + ", fishing = fishing+" + getInt(fishing)
+ + " 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) + ", fishing = "
+ + getInt(fishingXP) + " 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) + ", fishing = "
+ + getInt(fishing) + " 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) + ", fishing = "
+ + getInt(fishingXP) + " 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);
+ }
+ }
+ }, 1);
+ }
+}
diff --git a/src/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java
similarity index 97%
rename from src/com/gmail/nossr50/mcMMO.java
rename to src/main/java/com/gmail/nossr50/mcMMO.java
index b8aad4f8b..4b03f60f8 100644
--- a/src/com/gmail/nossr50/mcMMO.java
+++ b/src/main/java/com/gmail/nossr50/mcMMO.java
@@ -1,418 +1,418 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50;
-
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.datatypes.SkillType;
-import com.gmail.nossr50.commands.skills.*;
-import com.gmail.nossr50.commands.spout.*;
-import com.gmail.nossr50.commands.mc.*;
-import com.gmail.nossr50.commands.party.*;
-import com.gmail.nossr50.commands.general.*;
-import com.gmail.nossr50.config.*;
-import com.gmail.nossr50.runnables.mcTimer;
-import com.gmail.nossr50.spout.SpoutStuff;
-import com.gmail.nossr50.listeners.mcBlockListener;
-import com.gmail.nossr50.listeners.mcEntityListener;
-import com.gmail.nossr50.listeners.mcPlayerListener;
-import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.party.Party;
-import com.gmail.nossr50.skills.*;
-import com.nijikokun.bukkit.Permissions.Permissions;
-
-import org.bukkit.Bukkit;
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.bukkit.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;
-import org.getspout.spoutapi.SpoutManager;
-import org.getspout.spoutapi.player.FileManager;
-
-
-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" + File.separator + "mcMMO";
- File file = new File(maindirectory + File.separator + "config.yml");
- static File versionFile = new File(maindirectory + File.separator + "VERSION");
- 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 mcPermissions permissionHandler = new mcPermissions();
- private Permissions permissions;
-
- private Runnable mcMMO_Timer = new mcTimer(this); //BLEED AND REGENERATION
- //private Timer mcMMO_SpellTimer = new Timer(true);
-
- //Alias - Command
- public HashMap aliasMap = new HashMap();
-
- public static Database database = null;
- public Misc misc = new Misc(this);
-
- //Config file stuff
- LoadProperties config = new LoadProperties();
- //Jar stuff
- public static File mcmmo;
-
- public void onEnable()
- {
- mcmmo = this.getFile();
- new File(maindirectory).mkdir();
-
- if(!versionFile.exists())
- {
- updateVersion();
- } else
- {
- String vnum = readVersion();
- //This will be changed to whatever version preceded when we actually need updater code.
- //Version 1.0.48 is the first to implement this, no checking before that version can be done.
- if(vnum.equalsIgnoreCase("1.0.48")) {
- updateFrom(1);
- }
- //Just add in more else if blocks for versions that need updater code. Increment the updateFrom age int as we do so.
- //Catch all for versions not matching and no specific code being needed
- else if(!vnum.equalsIgnoreCase(this.getDescription().getVersion())) updateFrom(-1);
- }
-
- mcPermissions.initialize(getServer());
-
- config.configCheck();
-
- Party.getInstance().loadParties();
- new Party(this);
-
- if(!LoadProperties.useMySQL)
- Users.getInstance().loadUsers(); //Load Users file
- /*
- * REGISTER EVENTS
- */
-
- PluginManager pm = getServer().getPluginManager();
-
- if(pm.getPlugin("Spout") != null)
- LoadProperties.spoutEnabled = true;
- else
- LoadProperties.spoutEnabled = false;
-
- //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_PICKUP_ITEM, playerListener, Priority.Normal, this);
- pm.registerEvent(Event.Type.PLAYER_FISH, playerListener, Priority.Normal, this);
- pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Lowest, this);
-
- //Block Stuff
- pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
- pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Monitor, 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_DEATH, entityListener, Priority.Normal, this);
- pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Monitor, 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!" );
-
- Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, mcMMO_Timer, 0, 20);
-
- registerCommands();
-
- //Spout Stuff
- if(LoadProperties.spoutEnabled)
- {
- SpoutStuff.setupSpoutConfigs();
- SpoutStuff.registerCustomEvent();
- SpoutStuff.extractFiles(); //Extract source materials
-
- FileManager FM = SpoutManager.getFileManager();
- FM.addToPreLoginCache(this, SpoutStuff.getFiles());
-
- /*
- Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this,
- new Runnable() {
-
- @Override
- public void run() {
- mmoHelper.updateAll();
- }
- }, 20, 20);
- */
- }
- }
-
- public PlayerProfile getPlayerProfile(Player player)
- {
- return Users.getProfile(player);
- }
-
- public void checkXp(Player player, SkillType skillType)
- {
- if(skillType == SkillType.ALL)
- Skills.XpCheckAll(player);
- else
- Skills.XpCheckSkill(skillType, player);
- }
-
- 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 ArrayList getParties(){
- String location = "plugins/mcMMO/mcmmo.users";
- ArrayList parties = new ArrayList();
- 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() {
- Bukkit.getServer().getScheduler().cancelTasks(this);
- System.out.println("mcMMO was disabled.");
- }
-
- private void registerCommands() {
- //Register aliases with the aliasmap (used in the playercommandpreprocessevent to ugly alias them to actual commands)
- //Skills commands
- aliasMap.put(mcLocale.getString("m.SkillAcrobatics").toLowerCase(), "acrobatics");
- aliasMap.put(mcLocale.getString("m.SkillArchery").toLowerCase(), "archery");
- aliasMap.put(mcLocale.getString("m.SkillAxes").toLowerCase(), "axes");
- aliasMap.put(mcLocale.getString("m.SkillExcavation").toLowerCase(), "excavation");
- aliasMap.put(mcLocale.getString("m.SkillFishing").toLowerCase(), "fishing");
- aliasMap.put(mcLocale.getString("m.SkillHerbalism").toLowerCase(), "herbalism");
- aliasMap.put(mcLocale.getString("m.SkillMining").toLowerCase(), "mining");
- aliasMap.put(mcLocale.getString("m.SkillRepair").toLowerCase(), "repair");
- aliasMap.put(mcLocale.getString("m.SkillSwords").toLowerCase(), "swords");
- aliasMap.put(mcLocale.getString("m.SkillTaming").toLowerCase(), "taming");
- aliasMap.put(mcLocale.getString("m.SkillUnarmed").toLowerCase(), "unarmed");
- aliasMap.put(mcLocale.getString("m.SkillWoodCutting").toLowerCase(), "woodcutting");
-
- //Mc* commands
- aliasMap.put(LoadProperties.mcability, "mcability");
- aliasMap.put(LoadProperties.mcc, "mcc");
- aliasMap.put(LoadProperties.mcgod, "mcgod");
- aliasMap.put(LoadProperties.mcmmo, "mcmmo");
- aliasMap.put(LoadProperties.mcrefresh, "mcrefresh");
- aliasMap.put(LoadProperties.mctop, "mctop");
-
- //Party commands
- aliasMap.put(LoadProperties.accept, "accept");
- //aliasMap.put(null, "a");
- aliasMap.put(LoadProperties.invite, "invite");
- aliasMap.put(LoadProperties.party, "party");
- //aliasMap.put(null, "p");
- aliasMap.put(LoadProperties.ptp, "ptp");
-
- //Other commands
- aliasMap.put(LoadProperties.addxp, "addxp");
- aliasMap.put(LoadProperties.clearmyspawn, "clearmyspawn");
- aliasMap.put(LoadProperties.mmoedit, "mmoedit");
- //aliasMap.put(key, "mmoupdate");
- aliasMap.put(LoadProperties.myspawn, "myspawn");
- aliasMap.put(LoadProperties.stats, "stats");
- aliasMap.put(LoadProperties.whois, "whois");
- aliasMap.put(LoadProperties.xprate, "xprate");
-
- //Spout commands
- //aliasMap.put(null, "mchud");
- aliasMap.put(LoadProperties.xplock, "xplock");
-
-
- //Register commands
- //Skills commands
- getCommand("acrobatics").setExecutor(new AcrobaticsCommand());
- getCommand("archery").setExecutor(new ArcheryCommand());
- getCommand("axes").setExecutor(new AxesCommand());
- getCommand("excavation").setExecutor(new ExcavationCommand());
- getCommand("fishing").setExecutor(new FishingCommand());
- getCommand("herbalism").setExecutor(new HerbalismCommand());
- getCommand("mining").setExecutor(new MiningCommand());
- getCommand("repair").setExecutor(new RepairCommand());
- getCommand("swords").setExecutor(new SwordsCommand());
- getCommand("taming").setExecutor(new TamingCommand());
- getCommand("unarmed").setExecutor(new UnarmedCommand());
- getCommand("woodcutting").setExecutor(new WoodcuttingCommand());
-
- //Mc* commands
- getCommand("mcability").setExecutor(new McabilityCommand());
- getCommand("mcc").setExecutor(new MccCommand());
- getCommand("mcgod").setExecutor(new McgodCommand());
- getCommand("mcmmo").setExecutor(new McmmoCommand());
- getCommand("mcrefresh").setExecutor(new McrefreshCommand(this));
- getCommand("mctop").setExecutor(new MctopCommand());
-
- //Party commands
- getCommand("accept").setExecutor(new AcceptCommand());
- getCommand("a").setExecutor(new ACommand());
- getCommand("invite").setExecutor(new InviteCommand(this));
- getCommand("party").setExecutor(new PartyCommand());
- getCommand("p").setExecutor(new PCommand());
- getCommand("ptp").setExecutor(new PtpCommand(this));
-
- //Other commands
- getCommand("addxp").setExecutor(new AddxpCommand(this));
- getCommand("clearmyspawn").setExecutor(new ClearmyspawnCommand());
- getCommand("mmoedit").setExecutor(new MmoeditCommand(this));
- getCommand("mmoupdate").setExecutor(new MmoupdateCommand());
- getCommand("myspawn").setExecutor(new MyspawnCommand());
- getCommand("stats").setExecutor(new StatsCommand());
- getCommand("whois").setExecutor(new WhoisCommand(this));
- getCommand("xprate").setExecutor(new XprateCommand());
-
- //Spout commands
- getCommand("mchud").setExecutor(new MchudCommand());
- getCommand("xplock").setExecutor(new XplockCommand());
-
- }
-
- /*
- * It is important to always assume that you are updating from the lowest possible version.
- * Thus, every block of updater code should be complete and self-contained; finishing all
- * SQL transactions and closing all file handlers, such that the next block of updater code
- * if called will handle updating as expected.
- */
- public void updateFrom(int age) {
- //No updater code needed, just update the version.
- if(age == -1) {
- updateVersion();
- return;
- }
- //Updater code from age 1 goes here
- if(age <= 1) {
- //Since age 1 is an example for now, we will just let it do nothing.
-
- }
- //If we are updating from age 1 but we need more to reach age 2, this will run too.
- if(age <= 2) {
-
- }
- updateVersion();
- }
-
- public void updateVersion() {
- try {
- versionFile.createNewFile();
- BufferedWriter vout = new BufferedWriter(new FileWriter(versionFile));
- vout.write(this.getDescription().getVersion());
- vout.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- } catch (SecurityException ex) {
- ex.printStackTrace();
- }
- }
-
- public String readVersion() {
- byte[] buffer = new byte[(int) versionFile.length()];
- BufferedInputStream f = null;
- try {
- f = new BufferedInputStream(new FileInputStream(versionFile));
- f.read(buffer);
- } catch (FileNotFoundException ex) {
- ex.printStackTrace();
- } catch (IOException ex) {
- ex.printStackTrace();
- } finally {
- if (f != null) try { f.close(); } catch (IOException ignored) { }
- }
-
- return new String(buffer);
- }
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50;
+
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.datatypes.SkillType;
+import com.gmail.nossr50.commands.skills.*;
+import com.gmail.nossr50.commands.spout.*;
+import com.gmail.nossr50.commands.mc.*;
+import com.gmail.nossr50.commands.party.*;
+import com.gmail.nossr50.commands.general.*;
+import com.gmail.nossr50.config.*;
+import com.gmail.nossr50.runnables.mcTimer;
+import com.gmail.nossr50.spout.SpoutStuff;
+import com.gmail.nossr50.listeners.mcBlockListener;
+import com.gmail.nossr50.listeners.mcEntityListener;
+import com.gmail.nossr50.listeners.mcPlayerListener;
+import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.party.Party;
+import com.gmail.nossr50.skills.*;
+import com.nijikokun.bukkit.Permissions.Permissions;
+
+import org.bukkit.Bukkit;
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.bukkit.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;
+import org.getspout.spoutapi.SpoutManager;
+import org.getspout.spoutapi.player.FileManager;
+
+
+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" + File.separator + "mcMMO";
+ File file = new File(maindirectory + File.separator + "config.yml");
+ static File versionFile = new File(maindirectory + File.separator + "VERSION");
+ 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 mcPermissions permissionHandler = new mcPermissions();
+ private Permissions permissions;
+
+ private Runnable mcMMO_Timer = new mcTimer(this); //BLEED AND REGENERATION
+ //private Timer mcMMO_SpellTimer = new Timer(true);
+
+ //Alias - Command
+ public HashMap aliasMap = new HashMap();
+
+ public static Database database = null;
+ public Misc misc = new Misc(this);
+
+ //Config file stuff
+ LoadProperties config = new LoadProperties();
+ //Jar stuff
+ public static File mcmmo;
+
+ public void onEnable()
+ {
+ mcmmo = this.getFile();
+ new File(maindirectory).mkdir();
+
+ if(!versionFile.exists())
+ {
+ updateVersion();
+ } else
+ {
+ String vnum = readVersion();
+ //This will be changed to whatever version preceded when we actually need updater code.
+ //Version 1.0.48 is the first to implement this, no checking before that version can be done.
+ if(vnum.equalsIgnoreCase("1.0.48")) {
+ updateFrom(1);
+ }
+ //Just add in more else if blocks for versions that need updater code. Increment the updateFrom age int as we do so.
+ //Catch all for versions not matching and no specific code being needed
+ else if(!vnum.equalsIgnoreCase(this.getDescription().getVersion())) updateFrom(-1);
+ }
+
+ mcPermissions.initialize(getServer());
+
+ config.configCheck();
+
+ Party.getInstance().loadParties();
+ new Party(this);
+
+ if(!LoadProperties.useMySQL)
+ Users.getInstance().loadUsers(); //Load Users file
+ /*
+ * REGISTER EVENTS
+ */
+
+ PluginManager pm = getServer().getPluginManager();
+
+ if(pm.getPlugin("Spout") != null)
+ LoadProperties.spoutEnabled = true;
+ else
+ LoadProperties.spoutEnabled = false;
+
+ //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_PICKUP_ITEM, playerListener, Priority.Normal, this);
+ pm.registerEvent(Event.Type.PLAYER_FISH, playerListener, Priority.Normal, this);
+ pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Lowest, this);
+
+ //Block Stuff
+ pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
+ pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Monitor, 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_DEATH, entityListener, Priority.Normal, this);
+ pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Monitor, 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!" );
+
+ Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, mcMMO_Timer, 0, 20);
+
+ registerCommands();
+
+ //Spout Stuff
+ if(LoadProperties.spoutEnabled)
+ {
+ SpoutStuff.setupSpoutConfigs();
+ SpoutStuff.registerCustomEvent();
+ SpoutStuff.extractFiles(); //Extract source materials
+
+ FileManager FM = SpoutManager.getFileManager();
+ FM.addToPreLoginCache(this, SpoutStuff.getFiles());
+
+ /*
+ Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this,
+ new Runnable() {
+
+ @Override
+ public void run() {
+ mmoHelper.updateAll();
+ }
+ }, 20, 20);
+ */
+ }
+ }
+
+ public PlayerProfile getPlayerProfile(Player player)
+ {
+ return Users.getProfile(player);
+ }
+
+ public void checkXp(Player player, SkillType skillType)
+ {
+ if(skillType == SkillType.ALL)
+ Skills.XpCheckAll(player);
+ else
+ Skills.XpCheckSkill(skillType, player);
+ }
+
+ 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 ArrayList getParties(){
+ String location = "plugins/mcMMO/mcmmo.users";
+ ArrayList parties = new ArrayList();
+ 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() {
+ Bukkit.getServer().getScheduler().cancelTasks(this);
+ System.out.println("mcMMO was disabled.");
+ }
+
+ private void registerCommands() {
+ //Register aliases with the aliasmap (used in the playercommandpreprocessevent to ugly alias them to actual commands)
+ //Skills commands
+ aliasMap.put(mcLocale.getString("m.SkillAcrobatics").toLowerCase(), "acrobatics");
+ aliasMap.put(mcLocale.getString("m.SkillArchery").toLowerCase(), "archery");
+ aliasMap.put(mcLocale.getString("m.SkillAxes").toLowerCase(), "axes");
+ aliasMap.put(mcLocale.getString("m.SkillExcavation").toLowerCase(), "excavation");
+ aliasMap.put(mcLocale.getString("m.SkillFishing").toLowerCase(), "fishing");
+ aliasMap.put(mcLocale.getString("m.SkillHerbalism").toLowerCase(), "herbalism");
+ aliasMap.put(mcLocale.getString("m.SkillMining").toLowerCase(), "mining");
+ aliasMap.put(mcLocale.getString("m.SkillRepair").toLowerCase(), "repair");
+ aliasMap.put(mcLocale.getString("m.SkillSwords").toLowerCase(), "swords");
+ aliasMap.put(mcLocale.getString("m.SkillTaming").toLowerCase(), "taming");
+ aliasMap.put(mcLocale.getString("m.SkillUnarmed").toLowerCase(), "unarmed");
+ aliasMap.put(mcLocale.getString("m.SkillWoodCutting").toLowerCase(), "woodcutting");
+
+ //Mc* commands
+ aliasMap.put(LoadProperties.mcability, "mcability");
+ aliasMap.put(LoadProperties.mcc, "mcc");
+ aliasMap.put(LoadProperties.mcgod, "mcgod");
+ aliasMap.put(LoadProperties.mcmmo, "mcmmo");
+ aliasMap.put(LoadProperties.mcrefresh, "mcrefresh");
+ aliasMap.put(LoadProperties.mctop, "mctop");
+
+ //Party commands
+ aliasMap.put(LoadProperties.accept, "accept");
+ //aliasMap.put(null, "a");
+ aliasMap.put(LoadProperties.invite, "invite");
+ aliasMap.put(LoadProperties.party, "party");
+ //aliasMap.put(null, "p");
+ aliasMap.put(LoadProperties.ptp, "ptp");
+
+ //Other commands
+ aliasMap.put(LoadProperties.addxp, "addxp");
+ aliasMap.put(LoadProperties.clearmyspawn, "clearmyspawn");
+ aliasMap.put(LoadProperties.mmoedit, "mmoedit");
+ //aliasMap.put(key, "mmoupdate");
+ aliasMap.put(LoadProperties.myspawn, "myspawn");
+ aliasMap.put(LoadProperties.stats, "stats");
+ aliasMap.put(LoadProperties.whois, "whois");
+ aliasMap.put(LoadProperties.xprate, "xprate");
+
+ //Spout commands
+ //aliasMap.put(null, "mchud");
+ aliasMap.put(LoadProperties.xplock, "xplock");
+
+
+ //Register commands
+ //Skills commands
+ getCommand("acrobatics").setExecutor(new AcrobaticsCommand());
+ getCommand("archery").setExecutor(new ArcheryCommand());
+ getCommand("axes").setExecutor(new AxesCommand());
+ getCommand("excavation").setExecutor(new ExcavationCommand());
+ getCommand("fishing").setExecutor(new FishingCommand());
+ getCommand("herbalism").setExecutor(new HerbalismCommand());
+ getCommand("mining").setExecutor(new MiningCommand());
+ getCommand("repair").setExecutor(new RepairCommand());
+ getCommand("swords").setExecutor(new SwordsCommand());
+ getCommand("taming").setExecutor(new TamingCommand());
+ getCommand("unarmed").setExecutor(new UnarmedCommand());
+ getCommand("woodcutting").setExecutor(new WoodcuttingCommand());
+
+ //Mc* commands
+ getCommand("mcability").setExecutor(new McabilityCommand());
+ getCommand("mcc").setExecutor(new MccCommand());
+ getCommand("mcgod").setExecutor(new McgodCommand());
+ getCommand("mcmmo").setExecutor(new McmmoCommand());
+ getCommand("mcrefresh").setExecutor(new McrefreshCommand(this));
+ getCommand("mctop").setExecutor(new MctopCommand());
+
+ //Party commands
+ getCommand("accept").setExecutor(new AcceptCommand());
+ getCommand("a").setExecutor(new ACommand());
+ getCommand("invite").setExecutor(new InviteCommand(this));
+ getCommand("party").setExecutor(new PartyCommand());
+ getCommand("p").setExecutor(new PCommand());
+ getCommand("ptp").setExecutor(new PtpCommand(this));
+
+ //Other commands
+ getCommand("addxp").setExecutor(new AddxpCommand(this));
+ getCommand("clearmyspawn").setExecutor(new ClearmyspawnCommand());
+ getCommand("mmoedit").setExecutor(new MmoeditCommand(this));
+ getCommand("mmoupdate").setExecutor(new MmoupdateCommand());
+ getCommand("myspawn").setExecutor(new MyspawnCommand());
+ getCommand("stats").setExecutor(new StatsCommand());
+ getCommand("whois").setExecutor(new WhoisCommand(this));
+ getCommand("xprate").setExecutor(new XprateCommand());
+
+ //Spout commands
+ getCommand("mchud").setExecutor(new MchudCommand());
+ getCommand("xplock").setExecutor(new XplockCommand());
+
+ }
+
+ /*
+ * It is important to always assume that you are updating from the lowest possible version.
+ * Thus, every block of updater code should be complete and self-contained; finishing all
+ * SQL transactions and closing all file handlers, such that the next block of updater code
+ * if called will handle updating as expected.
+ */
+ public void updateFrom(int age) {
+ //No updater code needed, just update the version.
+ if(age == -1) {
+ updateVersion();
+ return;
+ }
+ //Updater code from age 1 goes here
+ if(age <= 1) {
+ //Since age 1 is an example for now, we will just let it do nothing.
+
+ }
+ //If we are updating from age 1 but we need more to reach age 2, this will run too.
+ if(age <= 2) {
+
+ }
+ updateVersion();
+ }
+
+ public void updateVersion() {
+ try {
+ versionFile.createNewFile();
+ BufferedWriter vout = new BufferedWriter(new FileWriter(versionFile));
+ vout.write(this.getDescription().getVersion());
+ vout.close();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ } catch (SecurityException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public String readVersion() {
+ byte[] buffer = new byte[(int) versionFile.length()];
+ BufferedInputStream f = null;
+ try {
+ f = new BufferedInputStream(new FileInputStream(versionFile));
+ f.read(buffer);
+ } catch (FileNotFoundException ex) {
+ ex.printStackTrace();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ } finally {
+ if (f != null) try { f.close(); } catch (IOException ignored) { }
+ }
+
+ return new String(buffer);
+ }
}
\ No newline at end of file
diff --git a/src/com/gmail/nossr50/mcPermissions.java b/src/main/java/com/gmail/nossr50/mcPermissions.java
similarity index 96%
rename from src/com/gmail/nossr50/mcPermissions.java
rename to src/main/java/com/gmail/nossr50/mcPermissions.java
index ed0a13247..a5bcb42fa 100644
--- a/src/com/gmail/nossr50/mcPermissions.java
+++ b/src/main/java/com/gmail/nossr50/mcPermissions.java
@@ -1,352 +1,352 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50;
-
-import java.util.logging.Logger;
-
-import org.bukkit.Server;
-import org.bukkit.entity.Player;
-import org.bukkit.plugin.Plugin;
-
-import ru.tehkode.permissions.PermissionManager;
-import ru.tehkode.permissions.bukkit.PermissionsEx;
-
-import com.nijiko.permissions.PermissionHandler;
-import com.nijikokun.bukkit.Permissions.Permissions;
-
-public class mcPermissions
-{
- private static volatile mcPermissions instance;
-
- private enum PermissionType {
- PEX, PERMISSIONS, BUKKIT
- }
-
- private static PermissionType permissionType;
- private static Object PHandle;
- public static boolean permissionsEnabled = false;
-
- public static void initialize(Server server)
- {
- Logger log = Logger.getLogger("Minecraft");
-
- if(permissionsEnabled && permissionType != PermissionType.PERMISSIONS) return;
-
- Plugin PEXtest = server.getPluginManager().getPlugin("PermissionsEx");
- Plugin test = server.getPluginManager().getPlugin("Permissions");
- if(PEXtest != null) {
- PHandle = (PermissionManager) PermissionsEx.getPermissionManager();
- permissionType = PermissionType.PEX;
- permissionsEnabled = true;
- log.info("[mcMMO] PermissionsEx found, using PermissionsEx.");
- } else if(test != null) {
- PHandle = (PermissionHandler) ((Permissions) test).getHandler();
- permissionType = PermissionType.PERMISSIONS;
- permissionsEnabled = true;
- log.info("[mcMMO] Permissions version "+test.getDescription().getVersion()+" found, using Permissions.");
- } else {
- permissionType = PermissionType.BUKKIT;
- permissionsEnabled = true;
- log.info("[mcMMO] Using Bukkit Permissions.");
- }
- }
-
- public static boolean getEnabled()
- {
- return permissionsEnabled;
- }
-
- public static boolean permission(Player player, String permission)
- {
- if(!permissionsEnabled) return player.isOp();
- switch(permissionType) {
- case PEX:
- return ((PermissionManager) PHandle).has(player, permission);
- case PERMISSIONS:
- return ((PermissionHandler) PHandle).has(player, permission);
- case BUKKIT:
- return player.hasPermission(permission);
- default:
- return true;
- }
- }
- public boolean admin(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.admin");
- } else {
- return true;
- }
- }
- public boolean mcrefresh(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.tools.mcrefresh");
- } else {
- return true;
- }
- }
- public boolean mmoedit(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.tools.mmoedit");
- } else {
- return true;
- }
- }
- public boolean herbalismAbility(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.ability.herbalism");
- } else {
- return true;
- }
- }
- public boolean excavationAbility(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.ability.excavation");
- } else {
- return true;
- }
- }
- public boolean unarmedAbility(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.ability.unarmed");
- } else {
- return true;
- }
- }
- public boolean chimaeraWing(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.item.chimaerawing");
- } else {
- return true;
- }
- }
- public boolean miningAbility(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.ability.mining");
- } else {
- return true;
- }
- }
- public boolean axesAbility(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.ability.axes");
- } else {
- return true;
- }
- }
- public boolean swordsAbility(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.ability.swords");
- } else {
- return true;
- }
- }
- public boolean woodCuttingAbility(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.ability.woodcutting");
- } else {
- return true;
- }
- }
- public boolean mcgod(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.tools.mcgod");
- } else {
- return true;
- }
- }
- public boolean regeneration(Player player){
- if (permissionsEnabled) {
- return permission(player, "mcmmo.regeneration");
- } else {
- return true;
- }
- }
- public boolean motd(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.motd");
- } else {
- return true;
- }
- }
- public boolean mcAbility(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.commands.ability");
- } else {
- return true;
- }
- }
- public boolean mySpawn(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.commands.myspawn");
- } else {
- return true;
- }
- }
- public boolean setMySpawn(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.commands.setmyspawn");
- } else {
- return true;
- }
- }
- public boolean partyChat(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.chat.partychat");
- } else {
- return true;
- }
- }
- public boolean partyLock(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.chat.partylock");
- } else {
- return true;
- }
- }
- public boolean partyTeleport(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.commands.ptp");
- } else {
- return true;
- }
- }
- public boolean whois(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.commands.whois");
- } else {
- return true;
- }
- }
- public boolean party(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.commands.party");
- } else {
- return true;
- }
- }
- public boolean adminChat(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.chat.adminchat");
- } else {
- return true;
- }
- }
- public static mcPermissions getInstance() {
- if (instance == null) {
- instance = new mcPermissions();
- }
- return instance;
- }
- public boolean taming(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.taming");
- } else {
- return true;
- }
- }
- public boolean mining(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.mining");
- } else {
- return true;
- }
- }
- public boolean fishing(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.fishing");
- } else {
- return true;
- }
- }
- public boolean alchemy(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.alchemy");
- } else {
- return true;
- }
- }
- public boolean enchanting(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.enchanting");
- } else {
- return true;
- }
- }
- public boolean woodcutting(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.woodcutting");
- } else {
- return true;
- }
- }
- public boolean repair(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.repair");
- } else {
- return true;
- }
- }
- public boolean unarmed(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.unarmed");
- } else {
- return true;
- }
- }
- public boolean archery(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.archery");
- } else {
- return true;
- }
- }
- public boolean herbalism(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.herbalism");
- } else {
- return true;
- }
- }
- public boolean excavation(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.excavation");
- } else {
- return true;
- }
- }
- public boolean swords(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.swords");
- } else {
- return true;
- }
- }
- public boolean axes(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.axes");
- } else {
- return true;
- }
- }
- public boolean acrobatics(Player player) {
- if (permissionsEnabled) {
- return permission(player, "mcmmo.skills.acrobatics");
- } else {
- return true;
- }
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50;
+
+import java.util.logging.Logger;
+
+import org.bukkit.Server;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.Plugin;
+
+import ru.tehkode.permissions.PermissionManager;
+import ru.tehkode.permissions.bukkit.PermissionsEx;
+
+import com.nijiko.permissions.PermissionHandler;
+import com.nijikokun.bukkit.Permissions.Permissions;
+
+public class mcPermissions
+{
+ private static volatile mcPermissions instance;
+
+ private enum PermissionType {
+ PEX, PERMISSIONS, BUKKIT
+ }
+
+ private static PermissionType permissionType;
+ private static Object PHandle;
+ public static boolean permissionsEnabled = false;
+
+ public static void initialize(Server server)
+ {
+ Logger log = Logger.getLogger("Minecraft");
+
+ if(permissionsEnabled && permissionType != PermissionType.PERMISSIONS) return;
+
+ Plugin PEXtest = server.getPluginManager().getPlugin("PermissionsEx");
+ Plugin test = server.getPluginManager().getPlugin("Permissions");
+ if(PEXtest != null) {
+ PHandle = (PermissionManager) PermissionsEx.getPermissionManager();
+ permissionType = PermissionType.PEX;
+ permissionsEnabled = true;
+ log.info("[mcMMO] PermissionsEx found, using PermissionsEx.");
+ } else if(test != null) {
+ PHandle = (PermissionHandler) ((Permissions) test).getHandler();
+ permissionType = PermissionType.PERMISSIONS;
+ permissionsEnabled = true;
+ log.info("[mcMMO] Permissions version "+test.getDescription().getVersion()+" found, using Permissions.");
+ } else {
+ permissionType = PermissionType.BUKKIT;
+ permissionsEnabled = true;
+ log.info("[mcMMO] Using Bukkit Permissions.");
+ }
+ }
+
+ public static boolean getEnabled()
+ {
+ return permissionsEnabled;
+ }
+
+ public static boolean permission(Player player, String permission)
+ {
+ if(!permissionsEnabled) return player.isOp();
+ switch(permissionType) {
+ case PEX:
+ return ((PermissionManager) PHandle).has(player, permission);
+ case PERMISSIONS:
+ return ((PermissionHandler) PHandle).has(player, permission);
+ case BUKKIT:
+ return player.hasPermission(permission);
+ default:
+ return true;
+ }
+ }
+ public boolean admin(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.admin");
+ } else {
+ return true;
+ }
+ }
+ public boolean mcrefresh(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.tools.mcrefresh");
+ } else {
+ return true;
+ }
+ }
+ public boolean mmoedit(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.tools.mmoedit");
+ } else {
+ return true;
+ }
+ }
+ public boolean herbalismAbility(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.ability.herbalism");
+ } else {
+ return true;
+ }
+ }
+ public boolean excavationAbility(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.ability.excavation");
+ } else {
+ return true;
+ }
+ }
+ public boolean unarmedAbility(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.ability.unarmed");
+ } else {
+ return true;
+ }
+ }
+ public boolean chimaeraWing(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.item.chimaerawing");
+ } else {
+ return true;
+ }
+ }
+ public boolean miningAbility(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.ability.mining");
+ } else {
+ return true;
+ }
+ }
+ public boolean axesAbility(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.ability.axes");
+ } else {
+ return true;
+ }
+ }
+ public boolean swordsAbility(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.ability.swords");
+ } else {
+ return true;
+ }
+ }
+ public boolean woodCuttingAbility(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.ability.woodcutting");
+ } else {
+ return true;
+ }
+ }
+ public boolean mcgod(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.tools.mcgod");
+ } else {
+ return true;
+ }
+ }
+ public boolean regeneration(Player player){
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.regeneration");
+ } else {
+ return true;
+ }
+ }
+ public boolean motd(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.motd");
+ } else {
+ return true;
+ }
+ }
+ public boolean mcAbility(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.commands.ability");
+ } else {
+ return true;
+ }
+ }
+ public boolean mySpawn(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.commands.myspawn");
+ } else {
+ return true;
+ }
+ }
+ public boolean setMySpawn(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.commands.setmyspawn");
+ } else {
+ return true;
+ }
+ }
+ public boolean partyChat(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.chat.partychat");
+ } else {
+ return true;
+ }
+ }
+ public boolean partyLock(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.chat.partylock");
+ } else {
+ return true;
+ }
+ }
+ public boolean partyTeleport(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.commands.ptp");
+ } else {
+ return true;
+ }
+ }
+ public boolean whois(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.commands.whois");
+ } else {
+ return true;
+ }
+ }
+ public boolean party(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.commands.party");
+ } else {
+ return true;
+ }
+ }
+ public boolean adminChat(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.chat.adminchat");
+ } else {
+ return true;
+ }
+ }
+ public static mcPermissions getInstance() {
+ if (instance == null) {
+ instance = new mcPermissions();
+ }
+ return instance;
+ }
+ public boolean taming(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.taming");
+ } else {
+ return true;
+ }
+ }
+ public boolean mining(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.mining");
+ } else {
+ return true;
+ }
+ }
+ public boolean fishing(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.fishing");
+ } else {
+ return true;
+ }
+ }
+ public boolean alchemy(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.alchemy");
+ } else {
+ return true;
+ }
+ }
+ public boolean enchanting(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.enchanting");
+ } else {
+ return true;
+ }
+ }
+ public boolean woodcutting(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.woodcutting");
+ } else {
+ return true;
+ }
+ }
+ public boolean repair(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.repair");
+ } else {
+ return true;
+ }
+ }
+ public boolean unarmed(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.unarmed");
+ } else {
+ return true;
+ }
+ }
+ public boolean archery(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.archery");
+ } else {
+ return true;
+ }
+ }
+ public boolean herbalism(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.herbalism");
+ } else {
+ return true;
+ }
+ }
+ public boolean excavation(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.excavation");
+ } else {
+ return true;
+ }
+ }
+ public boolean swords(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.swords");
+ } else {
+ return true;
+ }
+ }
+ public boolean axes(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.axes");
+ } else {
+ return true;
+ }
+ }
+ public boolean acrobatics(Player player) {
+ if (permissionsEnabled) {
+ return permission(player, "mcmmo.skills.acrobatics");
+ } else {
+ return true;
+ }
+ }
+}
diff --git a/src/com/gmail/nossr50/party/Party.java b/src/main/java/com/gmail/nossr50/party/Party.java
similarity index 97%
rename from src/com/gmail/nossr50/party/Party.java
rename to src/main/java/com/gmail/nossr50/party/Party.java
index 948d7e194..771ffff89 100644
--- a/src/com/gmail/nossr50/party/Party.java
+++ b/src/main/java/com/gmail/nossr50/party/Party.java
@@ -1,481 +1,481 @@
-/*
- This file is part of mcMMO.
-
- mcMMO is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- mcMMO is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with mcMMO. If not, see .
-*/
-package com.gmail.nossr50.party;
-
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-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.spout.util.ArrayListString;
-
-
-public class Party
-{
- /*
- * This file is part of mmoMinecraft (http://code.google.com/p/mmo-minecraft/).
- *
- * mmoMinecraft is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
- public static String partyPlayersFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyPlayers";
- public static String partyLocksFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyLocks";
- public static String partyPasswordsFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyPasswords";
-
- HashMap> partyPlayers = new HashMap>();
- HashMap partyLocks = new HashMap();
- HashMap partyPasswords = new HashMap();
-
- private static mcMMO plugin;
- public Party(mcMMO instance) {
- new File(mcMMO.maindirectory + File.separator + "FlatFileStuff").mkdir();
- plugin = instance;
- }
- private static volatile Party instance;
-
- public static Party getInstance()
- {
- if (instance == null) {
- instance = new Party(plugin);
- }
- return instance;
- }
-
- 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 int partyCount(Player player, Player[] players)
- {
- int x = 0;
- for(Player hurrdurr : players)
- {
- if(player != null && hurrdurr != null)
- {
- if(Users.getProfile(player).getParty().equals(Users.getProfile(hurrdurr).getParty()))
- x++;
- }
- }
- return x;
- }
-
- public void informPartyMembers(Player player)
- {
- informPartyMembers(player, Bukkit.getServer().getOnlinePlayers());
- }
-
-
- public void informPartyMembers(Player player, Player[] players)
- {
- int x = 0;
- for(Player p : players)
- {
- if(player != null && p != null)
- {
- if(inSameParty(player, p) && !p.getName().equals(player.getName()))
- {
- p.sendMessage(mcLocale.getString("Party.InformedOnJoin", new Object[] {player.getName()}));
- x++;
- }
- }
- }
- }
-
- public ArrayList getPartyMembers(Player player)
- {
- ArrayList players = new ArrayList();
-
- for(Player p : Bukkit.getServer().getOnlinePlayers())
- {
- if(p.isOnline() && player != null && p != null)
- {
- if(inSameParty(player, p) && !p.getName().equals(player.getName()))
- {
- players.add(p);
- }
- }
- }
- return players;
- }
- public ArrayListString getPartyMembersByName(Player player)
- {
- ArrayListString players = new ArrayListString();
-
- for(Player p : Bukkit.getServer().getOnlinePlayers())
- {
- if(p.isOnline())
- {
- if(inSameParty(player, p))
- {
- players.add(p.getName());
- }
- }
- }
- return players;
- }
-
- public void informPartyMembersOwnerChange(String newOwner) {
- Player newOwnerPlayer = plugin.getServer().getPlayer(newOwner);
- informPartyMembersOwnerChange(newOwnerPlayer, Bukkit.getServer().getOnlinePlayers());
- }
-
- public void informPartyMembersOwnerChange(Player newOwner, Player[] players) {
- int x = 0;
- for(Player p : players){
- if(newOwner != null && p != null){
- if(inSameParty(newOwner, p))
- {
- //TODO: Needs more locale.
- p.sendMessage(newOwner.getName()+" is the new party owner.");
- x++;
- }
- }
- }
- }
-
- public void informPartyMembersQuit(Player player)
- {
- informPartyMembersQuit(player, Bukkit.getServer().getOnlinePlayers());
- }
-
- public void informPartyMembersQuit(Player player, Player[] players)
- {
- int x = 0;
- for(Player p : players){
- if(player != null && p != null){
- if(inSameParty(player, p) && !p.getName().equals(player.getName()))
- {
- p.sendMessage(mcLocale.getString("Party.InformedOnQuit", new Object[] {player.getName()}));
- x++;
- }
- }
- }
- }
-
- public void removeFromParty(Player player, PlayerProfile PP)
- {
- //Stop NPE... hopefully
- if(!isParty(PP.getParty()) || !isInParty(player, PP))
- addToParty(player, PP, PP.getParty(), false);
-
- informPartyMembersQuit(player);
- String party = PP.getParty();
- if(isPartyLeader(player.getName(), party))
- {
- if(isPartyLocked(party)) {
- unlockParty(party);
- }
- }
-
- this.partyPlayers.get(party).remove(player.getName());
- if(isPartyEmpty(party)) deleteParty(party);
- PP.removeParty();
- savePartyPlayers();
- }
-
- public void addToParty(Player player, PlayerProfile PP, String newParty, Boolean invite) {
- newParty = newParty.replace(":", ".");
- addToParty(player, PP, newParty, invite, null);
- }
-
-
- public void addToParty(Player player, PlayerProfile PP, String newParty, Boolean invite, String password)
- {
- //Fix for FFS
- newParty = newParty.replace(":", ".");
-
- //Don't care about passwords on invites
- if(!invite)
- {
- //Don't care about passwords if it isn't locked
- if(isPartyLocked(newParty))
- {
- if(isPartyPasswordProtected(newParty))
- {
- if(password == null)
- {
- //TODO: Needs more locale.
- player.sendMessage("This party requires a password. Use "+LoadProperties.party+" to join it.");
- return;
- } else if(!password.equalsIgnoreCase(getPartyPassword(newParty)))
- {
- //TODO: Needs more locale.
- player.sendMessage("Party password incorrect.");
- return;
- }
- } else
- {
- //TODO: Needs more locale.
- player.sendMessage("Party is locked.");
- return;
- }
- }
- } else
- {
- PP.acceptInvite();
- }
- //New party?
- if(!isParty(newParty))
- {
- putNestedEntry(this.partyPlayers, newParty, player.getName(), true);
-
- //Get default locking behavior from config?
- this.partyLocks.put(newParty, false);
- this.partyPasswords.put(newParty, null);
- saveParties();
- } else
- {
- putNestedEntry(this.partyPlayers, newParty, player.getName(), false);
-
- savePartyPlayers();
- }
- PP.setParty(newParty);
- informPartyMembers(player);
-
- if(!invite)
- {
- player.sendMessage(mcLocale.getString("mcPlayerListener.JoinedParty", new Object[] { newParty }));
- } else
- {
- player.sendMessage(mcLocale.getString("mcPlayerListener.InviteAccepted", new Object[]{ PP.getParty() }));
- }
- }
-
- private static W putNestedEntry(
- HashMap> nest,
- U nestKey,
- V nestedKey,
- W nestedValue)
- {
- HashMap nested = nest.get(nestKey);
-
- if (nested == null) {
- nested = new HashMap();
- nest.put(nestKey, nested);
- }
-
- return nested.put(nestedKey, nestedValue);
- }
-
- public void dump(Player player) {
- player.sendMessage(partyPlayers.toString());
- player.sendMessage(partyLocks.toString());
- player.sendMessage(partyPasswords.toString());
- Iterator i = partyPlayers.keySet().iterator();
- while(i.hasNext()) {
- String nestkey = i.next();
- player.sendMessage(nestkey);
- Iterator j = partyPlayers.get(nestkey).keySet().iterator();
- while(j.hasNext()) {
- String nestedkey = j.next();
- player.sendMessage("."+nestedkey);
- if(partyPlayers.get(nestkey).get(nestedkey)) {
- player.sendMessage("..True");
- } else {
- player.sendMessage("..False");
- }
- }
- }
- }
-
- public void lockParty(String partyName) {
- this.partyLocks.put(partyName, true);
- savePartyLocks();
- }
-
- public void unlockParty(String partyName) {
- this.partyLocks.put(partyName, false);
- savePartyLocks();
- }
-
- public void deleteParty(String partyName) {
- this.partyPlayers.remove(partyName);
- this.partyLocks.remove(partyName);
- this.partyPasswords.remove(partyName);
- saveParties();
- }
-
- public void setPartyPassword(String partyName, String password) {
- if(password.equalsIgnoreCase("\"\"")) password = null;
- this.partyPasswords.put(partyName, password);
- savePartyPasswords();
- }
-
- public void setPartyLeader(String partyName, String playerName) {
- Iterator i = partyPlayers.get(partyName).keySet().iterator();
- while(i.hasNext()) {
- String playerKey = i.next();
- if(playerKey.equalsIgnoreCase(playerName)) {
- partyPlayers.get(partyName).put(playerName, true);
- informPartyMembersOwnerChange(playerName);
- //TODO: Needs more locale.
- plugin.getServer().getPlayer(playerName).sendMessage("You are now the party owner.");
- continue;
- }
- if(partyPlayers.get(partyName).get(playerKey)) {
- //TODO: Needs more locale.
- plugin.getServer().getPlayer(playerKey).sendMessage("You are no longer party owner.");
- partyPlayers.get(partyName).put(playerKey, false);
- }
- }
- }
-
- public String getPartyPassword(String partyName) {
- return this.partyPasswords.get(partyName);
- }
-
- public boolean canInvite(Player player, PlayerProfile PP) {
- return (isPartyLocked(PP.getParty()) && !isPartyLeader(player.getName(), PP.getParty())) ? false : true;
- }
-
- public boolean isParty(String partyName) {
- return this.partyPlayers.containsKey(partyName);
- }
-
- public boolean isPartyEmpty(String partyName) {
- return this.partyPlayers.get(partyName).isEmpty();
- }
-
- public boolean isPartyLeader(String playerName, String partyName) {
- if(this.partyPlayers.get(partyName) != null)
- {
- if(this.partyPlayers.get(partyName).get(playerName) == null) return false;
- return this.partyPlayers.get(partyName).get(playerName);
- }
- else
- return false;
- }
-
- public boolean isPartyLocked(String partyName) {
- if(this.partyLocks.get(partyName) == null) return false;
- return this.partyLocks.get(partyName);
- }
-
- public boolean isPartyPasswordProtected(String partyName) {
- return !(this.partyPasswords.get(partyName) == null);
- }
-
- public boolean isInParty(Player player, PlayerProfile PP) {
- return partyPlayers.get(PP.getParty()).containsKey(player.getName());
- }
-
- @SuppressWarnings("unchecked")
- public void loadParties() {
- if(new File(partyPlayersFile).exists()) {
- try {
- ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyPlayersFile));
- this.partyPlayers = (HashMap>)obj.readObject();
- } catch (FileNotFoundException e) { e.printStackTrace();
- } catch (EOFException e) { mcMMO.log.info("partyPlayersFile empty.");
- } catch (IOException e) { e.printStackTrace();
- } catch (ClassNotFoundException e) { e.printStackTrace(); }
- }
-
- if(new File(partyLocksFile).exists()) {
- try {
- ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyLocksFile));
- this.partyLocks = (HashMap)obj.readObject();
- } catch (FileNotFoundException e) { e.printStackTrace();
- } catch (EOFException e) { mcMMO.log.info("partyLocksFile empty.");
- } catch (IOException e) { e.printStackTrace();
- } catch (ClassNotFoundException e) { e.printStackTrace(); }
- }
-
- if(new File(partyPasswordsFile).exists()) {
- try {
- ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyPasswordsFile));
- this.partyPasswords = (HashMap)obj.readObject();
- } catch (FileNotFoundException e) { e.printStackTrace();
- } catch (EOFException e) { mcMMO.log.info("partyPasswordsFile empty.");
- } catch (IOException e) { e.printStackTrace();
- } catch (ClassNotFoundException e) { e.printStackTrace(); }
- }
- }
-
- public void saveParties() {
- savePartyPlayers();
- savePartyLocks();
- savePartyPasswords();
- }
-
- public void savePartyPlayers() {
- try {
- new File(partyPlayersFile).createNewFile();
- ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream(partyPlayersFile));
- obj.writeObject(this.partyPlayers);
- obj.close();
- } catch (FileNotFoundException e) { e.printStackTrace();
- } catch (IOException e) { e.printStackTrace(); }
- }
-
- public void savePartyLocks() {
- try {
- new File(partyLocksFile).createNewFile();
- ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream(partyLocksFile));
- obj.writeObject(this.partyLocks);
- obj.close();
- } catch (FileNotFoundException e) { e.printStackTrace();
- } catch (IOException e) { e.printStackTrace(); }
- }
-
- public void savePartyPasswords() {
- try {
- new File(partyPasswordsFile).createNewFile();
- ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream(partyPasswordsFile));
- obj.writeObject(this.partyPasswords);
- obj.close();
- } catch (FileNotFoundException e) { e.printStackTrace();
- } catch (IOException e) { e.printStackTrace(); }
- }
-}
+/*
+ This file is part of mcMMO.
+
+ mcMMO is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ mcMMO is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with mcMMO. If not, see .
+*/
+package com.gmail.nossr50.party;
+
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+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.spout.util.ArrayListString;
+
+
+public class Party
+{
+ /*
+ * This file is part of mmoMinecraft (http://code.google.com/p/mmo-minecraft/).
+ *
+ * mmoMinecraft is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+ public static String partyPlayersFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyPlayers";
+ public static String partyLocksFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyLocks";
+ public static String partyPasswordsFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyPasswords";
+
+ HashMap> partyPlayers = new HashMap>();
+ HashMap partyLocks = new HashMap();
+ HashMap partyPasswords = new HashMap();
+
+ private static mcMMO plugin;
+ public Party(mcMMO instance) {
+ new File(mcMMO.maindirectory + File.separator + "FlatFileStuff").mkdir();
+ plugin = instance;
+ }
+ private static volatile Party instance;
+
+ public static Party getInstance()
+ {
+ if (instance == null) {
+ instance = new Party(plugin);
+ }
+ return instance;
+ }
+
+ 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 int partyCount(Player player, Player[] players)
+ {
+ int x = 0;
+ for(Player hurrdurr : players)
+ {
+ if(player != null && hurrdurr != null)
+ {
+ if(Users.getProfile(player).getParty().equals(Users.getProfile(hurrdurr).getParty()))
+ x++;
+ }
+ }
+ return x;
+ }
+
+ public void informPartyMembers(Player player)
+ {
+ informPartyMembers(player, Bukkit.getServer().getOnlinePlayers());
+ }
+
+
+ public void informPartyMembers(Player player, Player[] players)
+ {
+ int x = 0;
+ for(Player p : players)
+ {
+ if(player != null && p != null)
+ {
+ if(inSameParty(player, p) && !p.getName().equals(player.getName()))
+ {
+ p.sendMessage(mcLocale.getString("Party.InformedOnJoin", new Object[] {player.getName()}));
+ x++;
+ }
+ }
+ }
+ }
+
+ public ArrayList getPartyMembers(Player player)
+ {
+ ArrayList players = new ArrayList();
+
+ for(Player p : Bukkit.getServer().getOnlinePlayers())
+ {
+ if(p.isOnline() && player != null && p != null)
+ {
+ if(inSameParty(player, p) && !p.getName().equals(player.getName()))
+ {
+ players.add(p);
+ }
+ }
+ }
+ return players;
+ }
+ public ArrayListString getPartyMembersByName(Player player)
+ {
+ ArrayListString players = new ArrayListString();
+
+ for(Player p : Bukkit.getServer().getOnlinePlayers())
+ {
+ if(p.isOnline())
+ {
+ if(inSameParty(player, p))
+ {
+ players.add(p.getName());
+ }
+ }
+ }
+ return players;
+ }
+
+ public void informPartyMembersOwnerChange(String newOwner) {
+ Player newOwnerPlayer = plugin.getServer().getPlayer(newOwner);
+ informPartyMembersOwnerChange(newOwnerPlayer, Bukkit.getServer().getOnlinePlayers());
+ }
+
+ public void informPartyMembersOwnerChange(Player newOwner, Player[] players) {
+ int x = 0;
+ for(Player p : players){
+ if(newOwner != null && p != null){
+ if(inSameParty(newOwner, p))
+ {
+ //TODO: Needs more locale.
+ p.sendMessage(newOwner.getName()+" is the new party owner.");
+ x++;
+ }
+ }
+ }
+ }
+
+ public void informPartyMembersQuit(Player player)
+ {
+ informPartyMembersQuit(player, Bukkit.getServer().getOnlinePlayers());
+ }
+
+ public void informPartyMembersQuit(Player player, Player[] players)
+ {
+ int x = 0;
+ for(Player p : players){
+ if(player != null && p != null){
+ if(inSameParty(player, p) && !p.getName().equals(player.getName()))
+ {
+ p.sendMessage(mcLocale.getString("Party.InformedOnQuit", new Object[] {player.getName()}));
+ x++;
+ }
+ }
+ }
+ }
+
+ public void removeFromParty(Player player, PlayerProfile PP)
+ {
+ //Stop NPE... hopefully
+ if(!isParty(PP.getParty()) || !isInParty(player, PP))
+ addToParty(player, PP, PP.getParty(), false);
+
+ informPartyMembersQuit(player);
+ String party = PP.getParty();
+ if(isPartyLeader(player.getName(), party))
+ {
+ if(isPartyLocked(party)) {
+ unlockParty(party);
+ }
+ }
+
+ this.partyPlayers.get(party).remove(player.getName());
+ if(isPartyEmpty(party)) deleteParty(party);
+ PP.removeParty();
+ savePartyPlayers();
+ }
+
+ public void addToParty(Player player, PlayerProfile PP, String newParty, Boolean invite) {
+ newParty = newParty.replace(":", ".");
+ addToParty(player, PP, newParty, invite, null);
+ }
+
+
+ public void addToParty(Player player, PlayerProfile PP, String newParty, Boolean invite, String password)
+ {
+ //Fix for FFS
+ newParty = newParty.replace(":", ".");
+
+ //Don't care about passwords on invites
+ if(!invite)
+ {
+ //Don't care about passwords if it isn't locked
+ if(isPartyLocked(newParty))
+ {
+ if(isPartyPasswordProtected(newParty))
+ {
+ if(password == null)
+ {
+ //TODO: Needs more locale.
+ player.sendMessage("This party requires a password. Use "+LoadProperties.party+" to join it.");
+ return;
+ } else if(!password.equalsIgnoreCase(getPartyPassword(newParty)))
+ {
+ //TODO: Needs more locale.
+ player.sendMessage("Party password incorrect.");
+ return;
+ }
+ } else
+ {
+ //TODO: Needs more locale.
+ player.sendMessage("Party is locked.");
+ return;
+ }
+ }
+ } else
+ {
+ PP.acceptInvite();
+ }
+ //New party?
+ if(!isParty(newParty))
+ {
+ putNestedEntry(this.partyPlayers, newParty, player.getName(), true);
+
+ //Get default locking behavior from config?
+ this.partyLocks.put(newParty, false);
+ this.partyPasswords.put(newParty, null);
+ saveParties();
+ } else
+ {
+ putNestedEntry(this.partyPlayers, newParty, player.getName(), false);
+
+ savePartyPlayers();
+ }
+ PP.setParty(newParty);
+ informPartyMembers(player);
+
+ if(!invite)
+ {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.JoinedParty", new Object[] { newParty }));
+ } else
+ {
+ player.sendMessage(mcLocale.getString("mcPlayerListener.InviteAccepted", new Object[]{ PP.getParty() }));
+ }
+ }
+
+ private static W putNestedEntry(
+ HashMap> nest,
+ U nestKey,
+ V nestedKey,
+ W nestedValue)
+ {
+ HashMap nested = nest.get(nestKey);
+
+ if (nested == null) {
+ nested = new HashMap();
+ nest.put(nestKey, nested);
+ }
+
+ return nested.put(nestedKey, nestedValue);
+ }
+
+ public void dump(Player player) {
+ player.sendMessage(partyPlayers.toString());
+ player.sendMessage(partyLocks.toString());
+ player.sendMessage(partyPasswords.toString());
+ Iterator