Getting project ready for Maven

This commit is contained in:
TheYeti
2012-01-09 11:00:13 -08:00
parent 7e200fd6a3
commit 376048d5aa
402 changed files with 17076 additions and 17076 deletions

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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;
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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<Integer, ArrayList<String>> Rows = new HashMap<Integer, ArrayList<String>>();
try {
Connection conn = DriverManager.getConnection(connectionString);
PreparedStatement stmt = conn.prepareStatement(sql);
if (stmt.executeQuery() != null) {
stmt.executeQuery();
rs = stmt.getResultSet();
while (rs.next()) {
ArrayList<String> Col = new ArrayList<String>();
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<Integer, ArrayList<String>> Read(String sql) {
ResultSet rs = null;
HashMap<Integer, ArrayList<String>> Rows = new HashMap<Integer, ArrayList<String>>();
try {
Connection conn = DriverManager.getConnection(connectionString);
PreparedStatement stmt = conn.prepareStatement(sql);
if (stmt.executeQuery() != null) {
stmt.executeQuery();
rs = stmt.getResultSet();
while (rs.next()) {
ArrayList<String> Col = new ArrayList<String>();
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;
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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$
}
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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<String> players = new ArrayList<String>();
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$
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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<PlayerProfile> players;
public static HashMap<Player, PlayerProfile> players = new HashMap<Player, PlayerProfile>();
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<Player, PlayerProfile> 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;
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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");
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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<Entity> mobSpawnerList = new ArrayList<Entity>();
public ArrayList<Block> blockWatchList = new ArrayList<Block>();
public ArrayList<Block> treeFeller = new ArrayList<Block>();
public HashMap<Entity, Integer> arrowTracker = new HashMap<Entity, Integer>();
public ArrayList<LivingEntity> bleedTracker = new ArrayList<LivingEntity>();
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;
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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);
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.datatypes;
public enum HUDType
{
DISABLED,
STANDARD,
SMALL,
RETRO;
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.datatypes;
public class PlayerStat
{
public String name;
public int statVal = 0;
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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;
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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<PlayerStat> order = root.inOrder(new ArrayList<PlayerStat>());
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<PlayerStat> x = new ArrayList<PlayerStat>();
PlayerStat y = new PlayerStat();
y.name = "$mcMMO_DummyInfo";
y.statVal = 0;
x.add(y);
return x.toArray(new PlayerStat[x.size()]);
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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<PlayerStat> inOrder(ArrayList<PlayerStat> 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;
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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);
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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);
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.datatypes.buttons;
import org.getspout.spoutapi.gui.GenericButton;
import com.gmail.nossr50.datatypes.PlayerProfile;
public class ButtonPartyToggle extends GenericButton
{
public ButtonPartyToggle(PlayerProfile PP)
{
this.setText("Party HUD: "+PP.getPartyHUD());
this.setTooltip("Toggle the Party HUD!");
this.setWidth(120).setHeight(20);
this.setDirty(true);
}
public void updateText(PlayerProfile PP)
{
this.setText("Party HUD: "+PP.getPartyHUD());
this.setDirty(true);
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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);
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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);
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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;
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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)));
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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);
}
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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();
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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());
}
}
}

View File

@ -0,0 +1,397 @@
Combat.WolfExamine=[[YELLOW]]**du musterst den Wolf mit Bestienkunde**
Combat.WolfShowMaster=[[DARK_YELLOW]]Der Bestienmeister \: {0}
Combat.Ignition=[[RED]]**ENTZUENDEN**
Combat.BurningArrowHit=[[DARK_RED]]Du wurdest von einem brennenden Pfeil gestriffen\!
Combat.TouchedFuzzy=[[DARK_RED]]Benommen. fuehlt sich schwindelig.
Combat.TargetDazed=Target was [[DARK_RED]]benommen
Combat.WolfNoMaster=[[AQUA]]Diese Bestie hat keinen Meister...
Combat.WolfHealth=[[YELLOW]]Die Bestie hat {0} Lebensenergie
Combat.StruckByGore=[[RED]]**Getroffen von Biss**
Combat.Gore=[[YELLOW]]**BISS**
Combat.ArrowDeflect=[[AQUA]]**PFEIL ABGELENKT**
Item.ChimaeraWingFail=[[AQUA]]**CHIMAERA FLUEGEL fehlgeschlagen\!**
Item.ChimaeraWingPass=[[AQUA]]**CHIMAERA FLUEGEL**
Item.InjuredWait=[[AQUA]]du wurdest kurz zuvor verletzt und musst mit der Benutzung warten. [[YELLOW]]({0}s)
Item.NeedFeathers=[[AQUA]]Du brauchst mehr Federn..
m.mccPartyCommands=[[AQUA]]_______ [[YELLOW]]GRUPPEN BEFEHLE [[AQUA]]_______
m.mccParty=[party name] [[YELLOW]]- Erstellen/beitreten einer Gruppe
m.mccPartyQ=[[[YELLOW]]- Verlasse aktuelle Gruppe
m.mccPartyToggle=[[YELLOW]] - aktiviert Gruppenchat
m.mccPartyInvite=[player name] [[YELLOW]]- sende Gruppeneinladung
m.mccPartyAccept=[[YELLOW]]- Gruppeneinladung akzeptieren
m.mccPartyTeleport=[party member name] [[YELLOW]]- Teleport zu Gruppenmitglied
m.mccOtherCommands=[[DARK_AQUA]]_______[[YELLOW]] ANDERE BEFEHLE [[DARK_AQUA]]_______
m.mccStats=[[YELLOW]]- zeigt deinen Status
m.mccLeaderboards=[[YELLOW]]- Ranglisten
m.mccMySpawn=[[YELLOW]]- Teleport zum Spawnpunkt
m.mccClearMySpawn=[[YELLOW]]- Spawnpunkt loeschen
m.mccToggleAbility=[[YELLOW]]- Faehigkeitsaktivierung mit rechtsklick an/aus schalten
m.mccAdminToggle=[[YELLOW]]- Adminchat aktivieren
m.mccWhois=[[WHITE]][playername] [[YELLOW]]- Detailierte Spielerinfos zeigen
m.mccMmoedit=[playername] [skill] [newvalue] [[YELLOW]]- Ziel modifizieren
m.mccMcGod=[[YELLOW]]- God Mode
m.mccSkillInfo=[[WHITE]][skillname] [[YELLOW]]- Detailierte Skillinfos zeigen
m.mccModDescription=[[YELLOW]]- kurze MOD-Beschreibung lesen
m.SkillHeader=[[DARK_AQUA]]_______[[YELLOW]] {0} [[DARK_AQUA]]_______
m.XPGain=[[DARK_AQUA]]XP [[AQUA]]Erhalten: [[AQUA]]{0}
m.EffectsTemplate=[[YELLOW]]{0}: [[GREEN]]{1}
m.AbilityLockTemplate=[[AQUA]]{0}
m.AbilityBonusTemplate=[[YELLOW]]{0}: [[GREEN]]{1}
m.Effects=EFFEKTE
m.YourStats=[[DARK_AQUA]]_______ [[YELLOW]]DEINE WERTE [[DARK_AQUA]]_______
m.SkillTaming=Bestienkunde (Taming)
m.XPGainTaming=[[YELLOW]]wenn deine Woelfe angreifen
m.EffectsTaming1_0=[[YELLOW]]Bestienkunde
m.EffectsTaming1_1=[[AQUA]]mit Knochen schlagen inspiziert Woelfe
m.EffectsTaming2_0=[[YELLOW]]Biss
m.EffectsTaming2_1=[[AQUA]]Kritischer Schlag mit Blutungseffekt
m.EffectsTaming3_0=[[YELLOW]]Geschaerfte Krallen
m.EffectsTaming3_1=[[AQUA]]Schadens-Bonus
m.EffectsTaming4_0=[[YELLOW]]Umweltbewusst
m.EffectsTaming4_1=[[AQUA]]Kaktus/Lava Phobie, Fall Schaden Immun
m.EffectsTaming5_0=[[YELLOW]]Dichtes Fell
m.EffectsTaming5_1=[[AQUA]]Schadens-Reduzierung, Feuer-Resistenz
m.EffectsTaming6_0=[[YELLOW]]Schockfest
m.EffectsTaming6_1=[[AQUA]]Explosions-Schaden-Reduzierung
m.AbilLockTaming1=[[DARK_AQUA]]gesperrt bis 100+ Skilllevel (Umweltbewusst)
m.AbilLockTaming2=[[DARK_AQUA]]gesperrt bis 250+ Skilllevel (Dichtes Fell)
m.AbilLockTaming3=[[DARK_AQUA]]gesperrt bis 500+ Skilllevel (Schockfest)
m.AbilLockTaming4=[[DARK_AQUA]]gesperrt bis 750+ Skilllevel (Geschaerfte Krallen)
m.AbilBonusTaming1_0=[[YELLOW]]Umweltbewusst
m.AbilBonusTaming1_1=[[AQUA]]Woelfe meiden Gefahr
m.AbilBonusTaming2_0=[[YELLOW]]Dichtes Fell
m.AbilBonusTaming2_1=[[AQUA]]Halber Schaden, Feuer-Resistenz
m.AbilBonusTaming3_0=[[YELLOW]]Schockfest
m.AbilBonusTaming3_1=[[AQUA]]Explosionen machen 1/6 normalen Schaden
m.AbilBonusTaming4_0=[[YELLOW]]Geschärfte Krallen
m.AbilBonusTaming4_1=[[AQUA]]+2 Schaden
m.TamingGoreChance=[[AQUA]]Biss Chance: [[GREEN]]{0}%
m.SkillWoodCutting=Holzfaellen (WoodCutting)
m.XPGainWoodCutting=[[YELLOW]]Baeume faellen
m.EffectsWoodCutting1_0=[[YELLOW]]Baumfaeller (Faehigkeit)
m.EffectsWoodCutting1_1=[[AQUA]]Bringt Baeume zum explodieren
m.EffectsWoodCutting2_0=[[YELLOW]]Blaetter-Sturm
m.EffectsWoodCutting2_1=[[AQUA]]blaest Blaetter weg
m.EffectsWoodCutting3_0=[[YELLOW]]Doppelte Drops
m.EffectsWoodCutting3_1=[[AQUA]]doppelte Anzahl Items
m.AbilLockWoodCutting1=[[DARK_AQUA]]gesperrt bis 100+ Skilllevel (Blaetter-Sturm)
m.AbilBonusWoodCutting1_0=Blaetter-Sturm
m.AbilBonusWoodCutting1_1=[[AQUA]]blaest Blaetter weg
m.WoodCuttingDoubleDropChance=[[YELLOW]]Doppelte Drop Chance: [[GREEN]]{0}%
m.WoodCuttingTreeFellerLength=[[YELLOW]]Baumfaeller Dauer: [[GREEN]]{0}s
m.SkillArchery=Bogenschiessen (Archery)
m.XPGainArchery=[[YELLOW]]Monster/Spieler angreifen
m.EffectsArchery1_0=[[YELLOW]]Entzuenden
m.EffectsArchery1_1=[[AQUA]]25% Chance das Feind Feuer faengt
m.EffectsArchery2_0=[[YELLOW]]Blenden (Spieler)
m.EffectsArchery2_1=[[AQUA]]Disorientiert Feinde
m.EffectsArchery3_0=[[YELLOW]]Schaden+
m.EffectsArchery3_1=[[AQUA]]Modifiziert Schaden
m.EffectsArchery4_0=[[YELLOW]]Pfeil Rueckgewinnung
m.EffectsArchery4_1=[[AQUA]]Chance Pfeile von Leichen zurueckzugewinnen
m.ArcheryDazeChance=[[YELLOW]]Chance zu blenden: [[GREEN]]{0}%
m.ArcheryRetrieveChance=[[YELLOW]]Chance Pfeile zurueckzugewinnen: [[GREEN]]{0}%
m.ArcheryIgnitionLength=[[YELLOW]]Dauer von Entzuenden: [[GREEN]]{0} Sekunden
m.ArcheryDamagePlus=[[YELLOW]]Schaden+ (Rang{0}): [[GREEN]]Bonus {0} Schaden
m.SkillAxes=Axt (Axes)
m.XPGainAxes=[[YELLOW]]Monster/Spieler angreifen
m.EffectsAxes1_0=[[YELLOW]]Schaedelspalter (Faehigkeit)
m.EffectsAxes1_1=[[AQUA]]Verursacht Flaechenschaden
m.EffectsAxes2_0=[[YELLOW]]Kritischer Schlag
m.EffectsAxes2_1=[[AQUA]]doppelter Schaden
m.EffectsAxes3_0=[[YELLOW]]Axtmeister (500 Skilllevel)
m.EffectsAxes3_1=[[AQUA]]Modifiziert Schaden
m.AbilLockAxes1=[[DARK_AQUA]]gesperrt bis 500+ Skilllevel(Axtmeister)
m.AbilBonusAxes1_0=[[YELLOW]]Axtmeister
m.AbilBonusAxes1_1=[[AQUA]]4 Bonus-Schaden
m.AxesCritChance=[[YELLOW]]Chance fuer kritische Treffer: [[GREEN]]{0}%
m.AxesSkullLength=[[YELLOW]]Schaedelspalter Dauer: [[GREEN]]{0}s
m.SkillSwords=Schwert (Swords)
m.XPGainSwords=[[YELLOW]]Monster/Spieler angreifen
m.EffectsSwords1_0=[[YELLOW]]Konter
m.EffectsSwords1_1=[[AQUA]]Reflektiert 50% des erhaltenen Schadens
m.EffectsSwords2_0=[[YELLOW]]Saegezahn-Schlag (Faehigkeit)
m.EffectsSwords2_1=[[AQUA]]25% Flaechenschaden, Blutung+ Flaecheneffekt
m.EffectsSwords3_0=[[YELLOW]]Saegezahn-Schlag Blutung+
m.EffectsSwords3_1=[[AQUA]]5 Tick Blutung
m.EffectsSwords4_0=[[YELLOW]]parrieren
m.EffectsSwords4_1=[[AQUA]]negiert Schaden
m.EffectsSwords5_0=[[YELLOW]]Blutung
m.EffectsSwords5_1=[[AQUA]]hinterlaesst Blutungs-DOT
m.SwordsCounterAttChance=[[YELLOW]]Konter Chance: [[GREEN]]{0}%
m.SwordsBleedLength=[[YELLOW]]Blutung Dauer: [[GREEN]]{0} ticks
m.SwordsBleedChance=[[YELLOW]]Blutung Chance: [[GREEN]]{0} %
m.SwordsParryChance=[[YELLOW]]Parieren Chance: [[GREEN]]{0} %
m.SwordsSSLength=[[YELLOW]]Saegezahn-Schlag Dauer: [[GREEN]]{0}s
m.SwordsTickNote=[[DARK_AQUA]]NOTIZ: [[AQUA]]1 Tick erfolgt aller 2 Sekunden
m.SkillAcrobatics=Akrobatik (Acrobatics)
m.XPGainAcrobatics=[[YELLOW]]Runterfallen
m.EffectsAcrobatics1_0=[[YELLOW]]Rolle
m.EffectsAcrobatics1_1=[[AQUA]]Reduziert oder negiert Schaden
m.EffectsAcrobatics2_0=[[YELLOW]]elegante Rolle
m.EffectsAcrobatics2_1=[[AQUA]]Doppelt so effektiv wie Rolle
m.EffectsAcrobatics3_0=[[YELLOW]]Ausweichen
m.EffectsAcrobatics3_1=[[AQUA]]halbiert Schaden
m.AcrobaticsRollChance=[[YELLOW]]Rolle Chance: [[GREEN]]{0}%
m.AcrobaticsGracefulRollChance=[[YELLOW]]Elegante Rolle Chance: [[GREEN]]{0}%
m.AcrobaticsDodgeChance=[[YELLOW]]Ausweichen Chance: [[GREEN]]{0}%
m.SkillMining=Bergbau (Mining)
m.XPGainMining=[[YELLOW]]Abbauen von Stein und Erz
m.EffectsMining1_0=[[YELLOW]]Super Brecher (Faehigkeit)
m.EffectsMining1_1=[[AQUA]]Tempo+, dreifache Drop Chance
m.EffectsMining2_0=[[YELLOW]]doppelte Drops
m.EffectsMining2_1=[[AQUA]]doppelte Anzahl Items
m.MiningDoubleDropChance=[[YELLOW]]doppelte Drops Chance: [[GREEN]]{0}%
m.MiningSuperBreakerLength=[[YELLOW]]Super Brecher Dauer: [[GREEN]]{0}s
m.SkillRepair=Reparieren (Repair)
m.XPGainRepair=[[YELLOW]]Reparieren
m.EffectsRepair1_0=[[YELLOW]]Reparieren
m.EffectsRepair1_1=[[AQUA]]Reparieren von Eisenwerkzeugen und Ruestung
m.EffectsRepair2_0=[[YELLOW]]Reparatur-Meister
m.EffectsRepair2_1=[[AQUA]]Erhoeht Reparierwert
m.EffectsRepair3_0=[[YELLOW]]Super Reparatur
m.EffectsRepair3_1=[[AQUA]]Doppelte Effektivitaet
m.EffectsRepair4_0=[[YELLOW]]Diamanten Reparatur ({0}+ SKILL)
m.EffectsRepair4_1=[[AQUA]]Reparieren von Diamantwerkzeugen und Ruestung
m.RepairRepairMastery=[[YELLOW]]Reparatur-Meister: [[GREEN]]{0}% [[AQUA]]Extra Haltbarkeit
m.RepairSuperRepairChance=[[YELLOW]]Super Reparatur Chance: [[GREEN]]{0}%
m.SkillUnarmed=Faustkampf (Unarmed)
m.XPGainUnarmed=[[YELLOW]]Monster/Spieler angreifen
m.EffectsUnarmed1_0=[[YELLOW]]Berserker (Faehigkeit)
m.EffectsUnarmed1_1=[[AQUA]]+50% Schaden, bricht weiches Material (Bsp. Erde)
m.EffectsUnarmed2_0=[[YELLOW]]Entwaffnen (Spieler)
m.EffectsUnarmed2_1=[[AQUA]]Droppt Item welches Feind in Hand haelt
m.EffectsUnarmed3_0=[[YELLOW]]Faustkampfmeister
m.EffectsUnarmed3_1=[[AQUA]]grosse Schadenssteigerung
m.EffectsUnarmed4_0=[[YELLOW]]Faustkampflehrling
m.EffectsUnarmed4_1=[[AQUA]]Schadens-Bonus
m.EffectsUnarmed5_0=[[YELLOW]]Pfeil ablenken
m.EffectsUnarmed5_1=[[AQUA]]wehrt Pfeile ab
m.AbilLockUnarmed1=[[DARK_AQUA]]gesperrt bis 250+ Skilllevel (Faustkampflehrling)
m.AbilLockUnarmed2=[[DARK_AQUA]]gesperrt bis 500+ Skilllevel (Faustkampfmeister)
m.AbilBonusUnarmed1_0=[[YELLOW]]Faustkampflehrling
m.AbilBonusUnarmed1_1=[[AQUA]]+2 Schadens-Bonus
m.AbilBonusUnarmed2_0=[[YELLOW]]Faustkampfmeister
m.AbilBonusUnarmed2_1=[[AQUA]]+4 Schadens-Bonus
m.UnarmedArrowDeflectChance=[[YELLOW]]Pfeil ablenken Chance: [[GREEN]]{0}%
m.UnarmedDisarmChance=[[YELLOW]]Entwaffnen Chance: [[GREEN]]{0}%
m.UnarmedBerserkLength=[[YELLOW]]Berserker Dauer: [[GREEN]]{0}s
m.SkillHerbalism=Kraeutersammler (Herbalism)
m.XPGainHerbalism=[[YELLOW]]Kraeuter/Pflanzen sammeln/ernten
m.EffectsHerbalism1_0=[[YELLOW]]Gruene Welt (Faehigkeit)
m.EffectsHerbalism1_1=[[AQUA]]Pflegt die Welt, dreifache Drops
m.EffectsHerbalism2_0=[[YELLOW]]Gruener Daumen (Weizen)
m.EffectsHerbalism2_1=[[AQUA]]automatisches neupflanzen nach ernten
m.EffectsHerbalism3_0=[[YELLOW]]Gruener Daumen (Cobble)
m.EffectsHerbalism3_1=[[AQUA]]verwandelt Cobblestone zu Mossy Cobblestone mithilfe von Samen
m.EffectsHerbalism4_0=[[YELLOW]]Nahrung+
m.EffectsHerbalism4_1=[[AQUA]]Modifiziert Heilung von Brot/Suppe
m.EffectsHerbalism5_0=[[YELLOW]]Doppelte Drops (Alle Kraeuter)
m.EffectsHerbalism5_1=[[AQUA]]doppelte Anzahl Items
m.HerbalismGreenTerraLength=[[YELLOW]]Gruene Welt Dauer: [[GREEN]]{0}s
m.HerbalismGreenThumbChance=[[YELLOW]]Gruener Daumen Chance: [[GREEN]]{0}%
m.HerbalismGreenThumbStage=[[YELLOW]]Gruener Daumen Stufe: [[GREEN]] Getreide waechst auf Stufe {0}
m.HerbalismDoubleDropChance=[[YELLOW]]Doppelte Drop Chance: [[GREEN]]{0}%
m.HerbalismFoodPlus=[[YELLOW]]Nahrung+ (Rang{0}): [[GREEN]]Bonus-Heilung {0}
m.SkillExcavation=Graben (Excavation)
m.XPGainExcavation=[[YELLOW]]Graben und Finden von Schaetzen
m.EffectsExcavation1_0=[[YELLOW]]Giga Bohrer (Faehigkeit)
m.EffectsExcavation1_1=[[AQUA]]3x Drop Rate, 3x EXP, +Tempo
m.EffectsExcavation2_0=[[YELLOW]]Schatzjaeger
m.EffectsExcavation2_1=[[AQUA]]Faehigkeit nach Schaetzen zu graben
m.ExcavationGreenTerraLength=[[YELLOW]]Giga Bohrer Dauer: [[GREEN]]{0}s
mcBlockListener.PlacedAnvil=[[DARK_AQUA]]Du hast einen Ambos platziert, du kannst hier Werkzeuge und Ruestungen reparieren.
mcEntityListener.WolfComesBack=[[DARK_AQUA]]Dein Wolf hastet zurueck zu dir...
mcPlayerListener.AbilitiesOff=Faehigkeiten nutzen (rechtsklick) aus
mcPlayerListener.AbilitiesOn=Faehigkeiten nutzen (rechtsklick) an
mcPlayerListener.AbilitiesRefreshed=[[YELLOW]]**Faehigkeiten aufgefrischt\!**
mcPlayerListener.AcrobaticsSkill=[[YELLOW]]Akrobatik Skill [[DARK_AQUA]](Acrobatics):
mcPlayerListener.ArcherySkill=[[YELLOW]]Bogenschiessen Skill [[DARK_AQUA]](Archery):
mcPlayerListener.AxesSkill=[[YELLOW]]Axt Skill [[DARK_AQUA]](Axes):
mcPlayerListener.ExcavationSkill=[[YELLOW]]Graben Skill [[DARK_AQUA]](Excavation):
mcPlayerListener.GodModeDisabled=[[RED]]mcMMO Godmode deaktiviert
mcPlayerListener.GodModeEnabled=[[RED]]mcMMO Godmode aktiviert
mcPlayerListener.GreenThumb=[[YELLOW]]**GRUENER DAUMEN**
mcPlayerListener.GreenThumbFail=[[DARK_RED]]**YELLOW THUMB FEHLGESCHLAGEN**
mcPlayerListener.HerbalismSkill=[[YELLOW]]Kraeuterkunde Skill [[DARK_AQUA]](Herbalism):
mcPlayerListener.MiningSkill=[[YELLOW]]Bergbau Skill [[DARK_AQUA]](Mining):
mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn ist freigegeben
mcPlayerListener.MyspawnNotExist=[[RED]]Lege deinen myspawn erst mit einem Bett fest
mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn wurde an deine aktuelle Position gesetzt
mcPlayerListener.MyspawnTimeNotice=Du musst {0}m {1}s warten um myspawn zu nutzen
mcPlayerListener.NoPermission=unzureichende mcPermissions.
mcPlayerListener.NoSkillNote=[[DARK_AQUA]]Skills ohne Zugriff sind ausgeblendet
mcPlayerListener.NotInParty=[[RED]]Du bist in keiner Gruppe.
mcPlayerListener.InviteSuccess=[[YELLOW]]Einladung erfolgreich versendet.
mcPlayerListener.ReceivedInvite1=[[RED]]ALERT: [[YELLOW]]Du hast eine Gruppeneinladung für {0} von {1}
mcPlayerListener.ReceivedInvite2=[[AQUA]]Schreibe[[YELLOW]]/{0}[[AQUA]] um die Einladung zu akzeptieren
mcPlayerListener.InviteAccepted=[[YELLOW]]Einladung akzeptiert. du bist {0} beigetreten
mcPlayerListener.NoInvites=[[RED]]Du hast derzeit keine Einladungen
mcPlayerListener.YouAreInParty=[[YELLOW]]Du bist in Gruppe {0}
mcPlayerListener.PartyMembers=[[YELLOW]]Gruppen Mitglieder
mcPlayerListener.LeftParty=[[RED]]Du hast die Gruppe verlassen
mcPlayerListener.JoinedParty=beigetrettene Gruppe: {0}
mcPlayerListener.PartyChatOn=nur Gruppenchat [[RED]]an
mcPlayerListener.PartyChatOff=nur Gruppenchat [[RED]]aus
mcPlayerListener.AdminChatOn=nur Adminchat [[YELLOW]]an
mcPlayerListener.AdminChatOff=nur Adminchat [[RED]]aus
mcPlayerListener.MOTD=[[YELLOW]]Auf diesem Server laeuft mcMMO {0}. Hilfe: [[AQUA]]/{1}[[YELLOW]] [[DARK_GRAY]]<frei Uebersetzt von Jobsti>
mcPlayerListener.WIKI=[[AQUA]]http://mcmmo.wikia.com[[YELLOW]] - mcMMO Wiki
mcPlayerListener.PowerLevel=[[DARK_RED]]POWER LEVEL:
mcPlayerListener.PowerLevelLeaderboard=[[DARK_AQUA]]____ mcMMO[[YELLOW]] Power Level [[DARK_AQUA]]Rangliste ____
mcPlayerListener.SkillLeaderboard=[[DARK_AQUA]]____ mcMMO [[YELLOW]]{0}[[DARK_AQUA]] Rangliste ____
mcPlayerListener.RepairSkill=[[YELLOW]]Reparieren Skill [[DARK_AQUA]](Repair):
mcPlayerListener.SwordsSkill=[[YELLOW]]Schwert Skill [[DARK_AQUA]](Swords):
mcPlayerListener.TamingSkill=[[YELLOW]]Bestienkunde Skill [[DARK_AQUA]](Taming):
mcPlayerListener.UnarmedSkill=[[YELLOW]]Faustkampf Skill [[DARK_AQUA]](Unarmed):
mcPlayerListener.WoodcuttingSkill=[[YELLOW]]Holzfaeller Skill [[DARK_AQUA]](Woodcutting):
mcPlayerListener.YourStats=[[DARK_AQUA]]_______[[YELLOW]] Deine MMO Werte [[DARK_AQUA]]_______
Party.InformedOnJoin={0} [[YELLOW]] ist deiner Gruppe beigetreten
Party.InformedOnQuit={0} [[YELLOW]] hat deine Gruppe verlassen
Skills.YourGreenTerra=[[AQUA]]Deine [[YELLOW]]Gruene Welt [[AQUA]]Faehigkeit ist bereit!
Skills.YourTreeFeller=[[AQUA]]Deine [[YELLOW]]Baumfaeller [[AQUA]]Faehigkeit ist bereit!
Skills.YourSuperBreaker=[[AQUA]]Deine [[YELLOW]]Super Brecher [[AQUA]]Faehigkeit ist bereit!
Skills.YourSerratedStrikes=[[AQUA]]Deine [[YELLOW]]Saegezahn-Schlag [[AQUA]]Faehigkeit ist bereit!
Skills.YourBerserk=[[AQUA]]Deine [[AQUA]]Berserker [[AQUA]]Faehigkeit ist bereit!
Skills.YourSkullSplitter=[[AQUA]]Deine [[YELLOW]]Schaedelspalter[[AQUA]] Faehigkeit ist bereit!
Skills.YourGigaDrillBreaker=[[AQUA]]Deine [[YELLOW]]Giga Bohrer[[AQUA]] Faehigkeit ist bereit!
Skills.TooTired=[[AQUA]]Du bist zu muede um diese Faehigkeit erneut zu nutzen.
Skills.ReadyHoe=[[AQUA]]**DU BEREITEST DEINE HARKE VOR**
Skills.LowerHoe=[[DARK_AQUA]]**DU SENKST DEINE HARKE**
Skills.ReadyAxe=[[AQUA]]**DU BEREITEST DEINE AXT VOR**
Skills.LowerAxe=[[DARK_AQUA]]**DU SENKST DEINE AXT**
Skills.ReadyFists=[[AQUA]]**DU BEREITEST DEINE FAEUSTE VOR**
Skills.LowerFists=[[DARK_AQUA]]**DU SENKST DEINE FAUSTE**
Skills.ReadyPickAxe=[[AQUA]]**DU BEREITEST DEINE SPITZHACKE VOR**
Skills.LowerPickAxe=[[DARK_AQUA]]**DU SENKST DEINE SPITZHACKE**
Skills.ReadyShovel=[[AQUA]]**DU BEREITEST DEINE SCHAUFEL VOR**
Skills.LowerShovel=[[DARK_AQUA]]**DU SENKST DEINE SCHAUFEL**
Skills.ReadySword=[[AQUA]]**DU ERHEBST DEIN SCHWERT**
Skills.LowerSword=[[DARK_AQUA]]**DU SENKST DEIN SCHWERT**
Skills.GreenTerraOn=[[AQUA]]**GRUENE WELT AKTIV**
Skills.GreenTerraPlayer=[[AQUA]]{0}[[DARK_AQUA]] hat [[AQUA]]Green Terra[[DARK_AQUA]] benutzt!
Skills.TreeFellerOn=[[YELLOW]]**BAUMFAELLER AKTIV**
Skills.TreeFellerPlayer=[[AQUA]]{0}[[DARK_AQUA]] hat [[AQUA]]Baumfaeller[[DARK_AQUA]] benutzt!
Skills.SuperBreakerOn=[[YELLOW]]**SUPER BRECHER AKTIV**
Skills.SuperBreakerPlayer=[[AQUA]]{0}[[DARK_AQUA]] hat [[AQUA]]Super Brecher[[DARK_AQUA]] benutzt!
Skills.SerratedStrikesOn=[[YELLOW]]**SAEGEZAHN-SCHLAG AKTIV**
Skills.SerratedStrikesPlayer=[[AQUA]]{0}[[DARK_AQUA]] hat [[AQUA]]Saegezahn-Schlag[[DARK_AQUA]] benutzt!
Skills.SkullSplitterOn=[[YELLOW]]**SCHAEDELSPALTER AKTIV**
Skills.SkullSplitterPlayer=[[AQUA]]{0}[[DARK_AQUA]] hat [[AQUA]]Schaedelspalter[[DARK_AQUA]] benutzt!
Skills.GigaDrillBreakerOn=[[YELLOW]]**GIGA BOHRER AKTIV**
Skills.GigaDrillBreakerPlayer=[[AQUA]]{0}[[DARK_AQUA]] hat [[AQUA]]GigaBohrer[[DARK_AQUA]] benutzt!
Skills.GreenTerraOff=[[DARK_AQUA]]**Gruene Welt ausgelaufen**
Skills.TreeFellerOff=[[DARK_AQUA]]**Baumfaeller ausgelaufen**
Skills.SuperBreakerOff=[[DARK_AQUA]]**Super Brecher ausgelaufen**
Skills.SerratedStrikesOff=[[DARK_AQUA]]**Saegezahn-Schlag ausgelaufen**
Skills.BerserkOff=[[DARK_AQUA]]**Berserker ausgelaufen**
Skills.BerserkOn=[[AQUA]]**BERSERKER AKTIV**
Skills.BerserkPlayer=[[AQUA]]{0}[[DARK_AQUA]] hat [[AQUA]]Berserker [[DARK_AQUA]] benutzt
Skills.SkullSplitterOff=[[DARK_AQUA]]**Schaedelspalter ausgelaufen**
Skills.GigaDrillBreakerOff=[[DARK_AQUA]]**Giga Bohrer ausgelaufen**
Skills.TamingUp=[[AQUA]]Bestienkunde um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.AcrobaticsUp=[[AQUA]]Akrobatik um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.ArcheryUp=[[AQUA]]Bogenschiessen um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.SwordsUp=[[AQUA]]Schwert um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.AxesUp=[[AQUA]]Axt um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.UnarmedUp=[[AQUA]]Faustkampf um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.HerbalismUp=[[AQUA]]Krauterkunde um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.MiningUp=[[AQUA]]Bergbau um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.WoodcuttingUp=[[AQUA]]Holzfaeller um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.RepairUp=[[AQUA]]Reparieren um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.ExcavationUp=[[AQUA]]Graben um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.FeltEasy=[[AQUA]]Das fuehlt sich einfach an.
Skills.StackedItems=[[DARK_RED]]Du kannst keine gestapelten Items reparieren
Skills.NeedMore=[[DARK_AQUA]]Hierfuer brauchst du mehr [[YELLOW]]
Skills.AdeptDiamond=[[DARK_RED]]Du bist nicht talentiert genug um Diamantwerkzeuge zu reparieren
Skills.FullDurability=[[AQUA]]Dieses Item hat volle Haltbarkeit
Skills.Disarmed=[[DARK_RED]]Du wurdest entwaffnet!
mcPlayerListener.SorcerySkill=Zauberkunst Skill (Sorcery):
m.SkillSorcery=Zauberkunst (Sorcery)
Sorcery.HasCast=[[YELLOW]]**ZAUBERN**[[YELLOW]]
Sorcery.Current_Mana=[[DARK_AQUA]]MP
Sorcery.SpellSelected=[[YELLOW]]-=([[YELLOW]]{0}[[YELLOW]])=- [[RED]]([[AQUA]]{1}[[RED]])
Sorcery.Cost=[[RED]][COST] {0} MP
Sorcery.OOM=[[DARK_AQUA]][[[YELLOW]]{2}[[DARK_AQUA]]][[DARK_AQUA]] Kein Mana [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[AQUA]]{1}[[YELLOW]])
Sorcery.Water.Thunder=GEWITTER
Sorcery.Curative.Self=HEILEN (SELBST)
Sorcery.Curative.Other=HEILEN (ANDERE)
m.LVL=[[AQUA]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]] ([[AQUA]]{1}[[YELLOW]]/[[AQUA]]{2}[[YELLOW]])
Combat.BeastLore=[[YELLOW]]**BESTIENKUNDE**
Combat.BeastLoreOwner=[[DARK_AQUA]]Besitzer ([[RED]]{0}[[DARK_AQUA]])
Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]Gesundheit ([[YELLOW]]{0}[[DARK_AQUA]]/20)
Combat.BeastLoreHealthWolf=[[DARK_AQUA]]Gesundheit ([[YELLOW]]{0}[[DARK_AQUA]]/8)
mcMMO.Description=[[DARK_AQUA]]Q: Was ist mcMMO? [[GRAY]]mcMMO is ein Open Source [[GOLD]]RPG Plugin[[GRAY]] fuer,[[GRAY]]Bukkit von [[RED]]nossr50 [[GRAY]]welches Minecraft viele Skills hinzufuegt.,[[GRAY]]Man kann auf vielen Wegen Erfahrung sammeln.,[[GRAY]]Um mehr ueber einen Skill zu erfahren gebe [[GREEN]]/SKILLNAME[[GRAY]] ein.,[[DARK_AQUA]]Q: Was macht es genau? [[GRAY]]Beispiel: Mit [[DARK_AQUA]]Mining[[GRAY]] bekommst du passive,[[GRAY]]Fertigkeiten wie [[RED]]Doppelte Drops[[GRAY]] oder Aktive wie den,[[RED]]Super-Brecher[[GRAY]] welcher dir per Rechtsklick aktiviert erlaubt,[[GRAY]]fuer einige Zeit (basierend auf deinem Lvl) schneller zu Minen[[GRAY]],[[BLUE]]Mining [[GRAY]]zu leveln ist so einfach wie seltene Materialien zu,[[GRAY]]bekommen! [[DARK_AQUA]]Q: Was heisst das? [[GRAY]]Alle Skills von [[GOLD]]mcMMO[[GRAY]] fuegen,[[GRAY]]coole neue Sachen hinzu! [[GRAY]]Du kannst [[GREEN]]/{0}[[GRAY]] eingeben [[GRAY]]um dir die,[[GRAY]]Commands anzeigen zu lassen. [[GRAY]]Das Ziel,[[GRAY]]von [[GOLD]]mcMMO[[GRAY]] ist es dir ein hochwertiges [[GOLD]]RPG-System[[GRAY]] zu bieten.,[[DARK_AQUA]]Q: Wo kann ich neue Ideen vorschlagen?,[[GRAY]]Im mcMMO Thema auf [[AQUA]]dev.bukkit.org[[GRAY]],[[DARK_AQUA]]Q: Wie mache ich dies und das?,[[RED]]Bitte [[GRAY]]schau in das mcMMO WIKI! [[AQUA]]mcmmo.wikia.com,[[DARK_GRAY]]Uebersetzung: Jobsti
Party.IsLocked=[[RED]]Gruppe ist gesperrt.
Party.Locked=[[RED]]Gruppe ist gesperrt, nur der Besitzer kann neue User einladen.
Party.IsntLocked=[[AQUA]]Gruppe ist nicht gesperrt
Party.Unlocked=[[AQUA]]Gruppe entsperrt
Party.Help1=[[RED]]Richtige Verwendung ist [[YELLOW]]/{0} [[WHITE]]<name>[[YELLOW]] oder [[WHITE]]'q' [[YELLOW]]zum Verlassen
Party.Help2=[[RED]]Um in pwd-geschuetzte Gruppe einzusteigen nutze [[YELLOW]]/{0} [[WHITE]]<name> <password>
Party.Help3=[[RED]]Befrage /{0} ? fuer weitere Infos
Party.Help4=[[RED]]Benutze [[YELLOW]]/{0} [[WHITE]]<name> [[YELLOW]]um einer Gruppe beizutreten, oder [[WHITE]]'q' [[YELLOW]]zum Verlassen
Party.Help5=[[RED]]Zum Gruppe sperren, nutze [[YELLOW]]/{0} [[WHITE]]lock
Party.Help6=[[RED]]Zum Gruppe entsperren, nutze [[YELLOW]]/{0} [[WHITE]]unlock
Party.Help7=[[RED]]Um Gruppe per Passwort zu sperren, nutze [[YELLOW]]/{0} [[WHITE]]password <password>
Party.Help8=[[RED]]Um Spieler aus der Gruppe zu kicken, benutze [[YELLOW]]/{0} [[WHITE]]kick <player>
Party.Help9=[[RED]]Um den Besitz deiner Gruppe abzugeben, nutze [[YELLOW]]/{0} [[WHITE]]owner <player>
Party.NotOwner=[[DARK_RED]]Du bist nicht der Gruppenbesitzer
Party.InvalidName=[[DARK_RED]]Dies ist kein gueltiger Gruppenname
Party.PasswordSet=[[GREEN]]Gruppenpasswort zu {0} gesetzt
Party.CouldNotKick=[[DARK_RED]]Spieler {0} kann nicht gekickt werden
Party.NotInYourParty=[[DARK_RED]]{0} ist nicht in deiner Gruppe
Party.CouldNotSetOwner=[[DARK_RED]]Besitzer kann nicht zu {0} gewechselt werden
Party.NewOwner={0} ist der neue Gruppenbesitzer.
Party.PasswordWrong=[[DARK_RED]]Falsches Gruppen-Passwort.
Party.NowOwner=[[RED]]Du bist nicht der Gruppenbesitzer.
Party.NowNotOwner=[[RED]]Du bist nicht laenger der Gruppenbesitzer.
Party.RequiresPass=[[RED]]Diese Gruppe benoetigt ein Passwort. Nutze [[YELLOW]]/{0}[[WHITE]] <party> <password>[[RED]] zum Beitreten.
Party.PtpDelay=[[RED]]Du kannst dies nicht so schnell wieder benutzen [[WHITE]]([[YELLOW]]{0}s[[WHITE]])
Commands.xprate.proper=[[DARK_AQUA]]Richtige Eingabe lautet /{0} [integer] [true:false]
Commands.xprate.proper2=[[DARK_AQUA]]Du kanst ebenfalls /{0} reset eingeben, um alles zurueck auf normal zu setzen.
Commands.xprate.proper3=[[RED]]Gebe true oder false als zweiten Wert ein
Commands.xprate.over=[[RED]]Der mcMMO XP Rate Event ist vorbei!!
Commands.xprate.started=[[YELLOW]]Der mcMMO XP EVENT HAT BEGONNEN!
Commands.xprate.started2=[[YELLOW]]Die mcMMO XP RATE betraegt nun {0}x!!
Commands.xplock.locked=[[YELLOW]]Deine XP BAR ist nun auf {0} gesperrt!
Commands.xplock.unlocked=[[YELLOW]]Deine XP BAR ist nun wieder [[GREEN]]FREIGEGEBEN[[YELLOW]]!
Commands.xplock.invalid=[[RED]]Dies ist kein gueltiger Skillname! Versuche /xplock mining
m.SkillAlchemy=Alchemie(Alchemy)
m.SkillEnchanting=Verzaubern (Enchanting)
m.SkillFishing=Angeln (Fishing)
mcPlayerListener.AlchemySkill=[[AQUA]]Alchemie Skill [[DARK_AQUA]](Alchemy):
mcPlayerListener.EnchantingSkill=[[AQUA]]Verzauberungs Skill [[DARK_AQUA]](Enchanting):
mcPlayerListener.FishingSkill=[[YELLOW]]Angeln Skill [[DARK_AQUA]](Fishing):
Skills.AlchemyUp=[[AQUA]]Alchemie um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.EnchantingUp=[[AQUA]]Verzaubern um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Skills.FishingUp=[[AQUA]]Angeln um [[YELLOW]]{0} erhoeht. Gesamt [[YELLOW]]({1})
Repair.LostEnchants=[[YELLOW]]Du hast nicht genug Skill, Verzauberung verloren.
Repair.ArcanePerfect=[[YELLOW]]Du hast die Arkanen Zauber in diesem Gegenstand erhalten.
Repair.Downgraded=[[YELLOW]]Die Arkanen Zauber in diesem Gegenstand wurden verringert.
Repair.ArcaneFailed=[[RED]]Alle Arkanen Zauber wurden von diesem Gegenstand entfernt.
m.EffectsRepair5_0=[[YELLOW]]Arkanes Schmieden
m.EffectsRepair5_1=[[AQUA]]Verzauberte Gegenstaende reparieren
m.ArcaneForgingRank=[[YELLOW]]Arkanes Schmieden: [[GREEN]]Rang {0}/4
m.ArcaneEnchantKeepChance=[[AQUA]]AS Erfolgs-Chance: [[GREEN]]{0}%
m.ArcaneEnchantDowngradeChance=[[AQUA]]AS Downgrade-Chance: [[GREEN]]{0}%
m.ArcaneForgingMilestones=[[YELLOW]][TIP]Arkanes Schmieden: [[AQUA]]Rang 1 = 100+, Rang 2 = 250+,
m.ArcaneForgingMilestones2=[[AQUA]] Rang 3 = 500+, Rang 4 = 750+
Fishing.MagicFound=[[AQUA]]Du hast etwas magisches gefunden...
Fishing.ItemFound=[[AQUA]]Du hast einen Schatz gefunden!
m.SkillFishing=Angeln (Fishing)
m.XPGainFishing=[[YELLOW]]Angeln
m.EffectsFishing1_0=[[YELLOW]]Schatz-Jaeger (passiv)
m.EffectsFishing1_1=[[AQUA]]Verschiedene Gegenstaende Angeln
m.EffectsFishing2_0=[[YELLOW]]Zauber-Jaeger
m.EffectsFishing2_1=[[AQUA]]Verzauberte gegenstaende Angeln
m.EffectsFishing3_0=[[YELLOW]]Reissen
m.EffectsFishing3_1=[[AQUA]]Reisse Items aus Mobs (per Angel)
m.FishingRank=[[YELLOW]]Zauber-Jaeger Rang: [[GREEN]]{0}/5
m.FishingMagicInfo=[[YELLOW]]Schatz-Jaeger: [[GREEN]] *Verbesert sich mit Schatz-Jaeger*
m.ShakeInfo=[[YELLOW]]Reissen: [[AQUA]]Reisse Items aus Mobs und verstuemmelt sie dabei ;_;
m.AbilLockFishing1=[[DARK_AQUA]]Gesperrt bis Skilllevel 150+ (Reissen)
m.TamingSummon=[[YELLOW]]Beschwoerung abgeschlossen
m.TamingSummonFailed=[[YELLOW]]Du hast zu viele Woelfe um dich um weitere zu beschwoeren.
m.EffectsTaming7_0=[[YELLOW]]Ruf der Wildniss
m.EffectsTaming7_1=[[AQUA]]Beschwoere einen Wolf auf deine Seite
m.EffectsTaming7_2=[[YELLOW]]Info: [[AQUA]]Ducken und Rechtsklick mit {0} Knochen in der Hand

View File

@ -0,0 +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]]<name>[[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]<name> <password>
Party.Help3=[[RED]]Consult /{0} ? for more information
Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]]<name> [[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 <password>
Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick <player>
Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner <player>
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

View File

@ -0,0 +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<64>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<64>o, Resistencia al fuego
m.EffectsTaming6_0=A prueba de golpes
m.EffectsTaming6_1=Reduccion del da<64>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<EFBFBD>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<64>o normal
m.AbilBonusTaming4_0=Garras afiladas
m.AbilBonusTaming4_1=+2 de Da<44>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<44>o
m.EffectsArchery3_1=Modifica el da<64>o
m.EffectsArchery4_0=Recuperaci<EFBFBD>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<44>o (Rank{0}): [[YELLOW]] {0} de bonus de da<64>o
m.SkillAxes=HACHAS
m.XPGainAxes=Ataque a monstruos
m.EffectsAxes1_0=Cortador de cabecas (HABILIDAD)
m.EffectsAxes1_1=Causa da<64>os en arena
m.EffectsAxes2_0=Golpes criticos
m.EffectsAxes2_1=Doble de da<64>o
m.EffectsAxes3_0=Maestria de hacha
m.EffectsAxes3_1=Modifica el da<64>o
m.AbilLockAxes1=BLOQUEADO HASTA TENER HABILIDAD +500 (MAESTRIA DE HACHA)
m.AbilBonusAxes1_0=Maestria de hacha
m.AbilBonusAxes1_1=4 de da<64>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<64>o obtenido
m.EffectsSwords2_0=Golpes dentados (HABILIDAD)
m.EffectsSwords2_1=25% de da<64>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<64>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<64>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<64>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<64>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<64>os
m.EffectsUnarmed4_0=Aprendiz desarmado
m.EffectsUnarmed4_1=Mejora de da<64>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<64>o
m.AbilBonusUnarmed2_0=Maestro desarmado
m.AbilBonusUnarmed2_1=Mejora de +4 de da<64>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<50>OS ESTAN LISTOS PARA USAR ENLOQUECER**
Skills.LowerFists=[[GRAY]]**TUS PU<50>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<75>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]]<name>[[YELLOW]] o [[WHITE]]'q' [[YELLOW]]para salir
Party.Help2=[[RED]]Para entrar a una fiesta con contrase<73>a usa [[YELLOW]]/{0} [[WHITE]]<name> <password>
Party.Help3=[[RED]]Consulta /{0} ? para mas informacion
Party.Help4=[[RED]]Usa [[YELLOW]]/{0} [[WHITE]]<name> [[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<73>a usa [[YELLOW]]/{0} [[WHITE]]password <password>
Party.Help8=[[RED]]Para kickear a un jugador de tu fiesta usa [[YELLOW]]/{0} [[WHITE]]kick <player>
Party.Help9=[[RED]]Para transferir el liderazgo de una fiesta usa [[YELLOW]]/{0} [[WHITE]]owner <player>
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<73>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

View File

@ -0,0 +1,369 @@
Combat.WolfExamine=[[GREEN]]**Tutkit sutta k<>ytt<74>m<EFBFBD>ll<6C> Pedon Tarinaa**
Combat.WolfShowMaster=[[DARK_GREEN]]Pedon is<69>nt<6E> : {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<72>tty
Combat.WolfNoMaster=[[GRAY]]T<>ll<6C> pedolla ei ole is<69>nt<6E><74>...
Combat.WolfHealth=[[GREEN]]T<>m<EFBFBD>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<54> EP<45>ONNISTUI\!**
Item.ChimaeraWingPass=**KHIMAIRAN SIIPI**
Item.InjuredWait=Sinua on haavoitettu <20>skett<74>in joten joudut odottaa t<>m<EFBFBD>n k<>ytt<74><74>. [[YELLOW]]({0}s)
Item.NeedFeathers=[[GRAY]]Tarvitset lis<69><73> sulkia..
m.mccPartyCommands=[[GREEN]]--RYHM<48>KOMENNOT--
m.mccParty=[party name] [[RED]]- Luo/liity nimettyyn ryhm<68><6D>n
m.mccPartyQ=[[RED]]- L<>hde ryhm<68>st<73>
m.mccPartyToggle=[[RED]] - Laita ryhm<68>juttelu p<><70>lle/pois
m.mccPartyInvite=[player name] [[RED]]- L<>het<65> ryhm<68>kutsu
m.mccPartyAccept=[[RED]]- Hyv<79>ksy ryhm<68>kutsu
m.mccPartyTeleport=[party member name] [[RED]]- Siirry ryhm<68>n j<>senen luo
m.mccOtherCommands=[[GREEN]]--MUUT KOMENNOT--
m.mccStats=- N<>yt<79> mcMMO tilastosi
m.mccLeaderboards=- Tulostaulukko
m.mccMySpawn=- Siirt<72><74> sinut myspawniin
m.mccClearMySpawn=- Tyhj<68><6A> myspawnisi
m.mccToggleAbility=- Laita taitojen aktivointi oikealla n<>pp<70>imell<6C> p<><70>lle/pois
m.mccAdminToggle=- Laita admin juttelu p<><70>lle/pois
m.mccWhois=[playername] [[RED]]- N<>yt<79> yksityiskohtaiset tiedot pelaajasta
m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Muokkaa kohdetta
m.mccMcGod=- "God Mode"
m.mccSkillInfo=[skillname] [[RED]]- N<>yt<79> ykistyiskohtaiset tiedot taidosta
m.mccModDescription=[[RED]]- Lue lyhyt kuvaus modista
m.SkillHeader=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
m.XPGain=[[DARK_GRAY]]KOKEMUSPISTEIDEN M<><4D>R<EFBFBD>: [[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<EFBFBD>MINEN
m.XPGainTaming=Susien satuttaminen
m.EffectsTaming1_0=Pedon Tarina
m.EffectsTaming1_1=Luulla ly<6C>minen tutkii susia
m.EffectsTaming2_0=Pisto
m.EffectsTaming2_1=Kriittinen Isku joka lis<69><73> Verenvuodon
m.EffectsTaming3_0=Teroitetut Kynnet
m.EffectsTaming3_1=Tuhoamis Bonus
m.EffectsTaming4_0=Ymp<EFBFBD>rist<EFBFBD>tietoinen
m.EffectsTaming4_1=Kaktus/Laavapelko, immuuni Putousvahingolle
m.EffectsTaming5_0=Paksu Turkki
m.EffectsTaming5_1=Vahingon v<>hennys, Tulenkest<73>v<EFBFBD>
m.EffectsTaming6_0=R<EFBFBD>j<EFBFBD>hdyskest<EFBFBD>v<EFBFBD>
m.EffectsTaming6_1=R<EFBFBD>j<EFBFBD>hdysvahingon v<>hennys
m.AbilLockTaming1=LUKITTU KUNNES 100+ TAITO (YMP<4D>RIST<53>TIETOINEN)
m.AbilLockTaming2=LUKITTU KUNNES 250+ TAITO (PAKSU TURKKI)
m.AbilLockTaming3=LUKITTU KUNNES 500+ TAITO (R<>J<EFBFBD>HDYSKEST<53>V<EFBFBD>)
m.AbilLockTaming4=LUKITTU KUNNES 750+ TAITO (TEROITETUT KYNNET)
m.AbilBonusTaming1_0=Ymp<EFBFBD>rist<EFBFBD>tietoinen
m.AbilBonusTaming1_1=Sudet karttavat vaaraa
m.AbilBonusTaming2_0=Paksu Turkki
m.AbilBonusTaming2_1=Puolitettu vahinko, Tulenkest<73>v<EFBFBD>
m.AbilBonusTaming3_0=R<EFBFBD>j<EFBFBD>hdyskest<EFBFBD>v<EFBFBD>
m.AbilBonusTaming3_1=R<EFBFBD>j<EFBFBD>hteet vahingoittavat 1/6 v<>hemm<6D>n
m.AbilBonusTaming4_0=Teroitetut Kynnet
m.AbilBonusTaming4_1=+2 Vahinko
m.TamingGoreChance=[[RED]]Piston todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.SkillWoodCutting=PUUN KAATO
m.XPGainWoodCutting=Puiden pilkkominen
m.EffectsWoodCutting1_0=Puunkaataja (TAITO)
m.EffectsWoodCutting1_1=R<EFBFBD>j<EFBFBD>yt<EFBFBD> puita
m.EffectsWoodCutting2_0=Lehdenpuhallin
m.EffectsWoodCutting2_1=Puhalla lehti<74> 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<74> pois
m.WoodCuttingDoubleDropChance=[[RED]]Tuplasaaliin todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.WoodCuttingTreeFellerLength=[[RED]]Puunkaatajan kesto: [[YELLOW]]{0}s
m.SkillArchery=JOUSIAMMUNTA
m.XPGainArchery=Hy<EFBFBD>kk<EFBFBD><EFBFBD>m<EFBFBD>ll<EFBFBD> hirvi<76>iden kimppuun
m.EffectsArchery1_0=Sytytys
m.EffectsArchery1_1=25% Todenn<6E>k<EFBFBD>isyys ett<74> vihollinen syttyy tuleen
m.EffectsArchery2_0=P<EFBFBD>kerrys (Pelaajat)
m.EffectsArchery2_1=Saa viholliset pois tolaltaan
m.EffectsArchery3_0=Vahinko+
m.EffectsArchery3_1=Muokkaa vahinkoa
m.EffectsArchery4_0=Nuolenker<EFBFBD>ys
m.EffectsArchery4_1=Todenn<EFBFBD>k<EFBFBD>isyys ker<65>t<EFBFBD> nuolia raadoista
m.ArcheryDazeChance=[[RED]]Todenn<6E>k<EFBFBD>isyys P<>kerrytt<74><74>: [[YELLOW]]{0}%
m.ArcheryRetrieveChance=[[RED]]Todenn<6E>k<EFBFBD>isyys ker<65>t<EFBFBD> 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<EFBFBD>kk<EFBFBD><EFBFBD>m<EFBFBD>ll<EFBFBD> hirvi<76>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<6E>k<EFBFBD>isyys iske<6B> kriittisesti: [[YELLOW]]{0}%
m.AxesSkullLength=[[RED]]Kallonhalkojan kesto: [[YELLOW]]{0}s
m.SkillSwords=MIEKAT
m.XPGainSwords=Hy<EFBFBD>kk<EFBFBD><EFBFBD>m<EFBFBD>ll<EFBFBD> hirvi<76>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<EFBFBD><EFBFBD> saadun vahingon
m.EffectsSwords5_0=Verenvuoto
m.EffectsSwords5_1=Lis<EFBFBD><EFBFBD> Verenvuoto
m.SwordsCounterAttChance=[[RED]]Vastaiskun todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.SwordsBleedLength=[[RED]]Verenvuodon kesto: [[YELLOW]]{0} vuotoa
m.SwordsBleedChance=[[RED]]Verenvuodon todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0} %
m.SwordsParryChance=[[RED]]Torjumisen todenn<6E>k<EFBFBD>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<EFBFBD>hent<EFBFBD><EFBFBD> tai est<73><74> vahinkoa
m.EffectsAcrobatics2_0=Sulava Kieriminen
m.EffectsAcrobatics2_1=Tuplasti tehokkaampi kuin Kieriminen
m.EffectsAcrobatics3_0=V<EFBFBD>ist<EFBFBD>
m.EffectsAcrobatics3_1=V<EFBFBD>hent<EFBFBD><EFBFBD> vahingon m<><6D>r<EFBFBD>n puoleen
m.AcrobaticsRollChance=[[RED]]Kierimisen todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.AcrobaticsGracefulRollChance=[[RED]]Sulavan Kierimisen todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.AcrobaticsDodgeChance=[[RED]]V<>ist<73>n todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.SkillMining=LOUHINTA
m.XPGainMining=Louhimalla kive<76> ja malmia
m.EffectsMining1_0=Supermurskain (TAITO)
m.EffectsMining1_1=Nopeus+, Triplaa saaliin tippumistodenn<6E>k<EFBFBD>isyys
m.EffectsMining2_0=Tuplasaalis
m.EffectsMining2_1=Tuplaa normaali saaliin m<><6D>r<EFBFBD>
m.MiningDoubleDropChance=[[RED]]Tuplasaaliin todenn<6E>k<EFBFBD>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<74>kaluja ja haarniskoja
m.EffectsRepair2_0=Korjausten Herra
m.EffectsRepair2_1=Lis<EFBFBD>tty korjausten m<><6D>r<EFBFBD>
m.EffectsRepair3_0=Superkorjaus
m.EffectsRepair3_1=Tuplatehokkuus
m.EffectsRepair4_0=Timanttikorjaus ({0}+ TAITO)
m.EffectsRepair4_1=Korjaa timanttity<74>kaluja ja haarniskoja
m.RepairRepairMastery=[[RED]]Korjausten Herra: [[YELLOW]]Extra {0}% kest<73>vyytt<74> palautettu
m.RepairSuperRepairChance=[[RED]]Superkorjauksen todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.SkillUnarmed=ASEISTAMATON
m.XPGainUnarmed=Hy<EFBFBD>kk<EFBFBD><EFBFBD>m<EFBFBD>ll<EFBFBD> hirvi<76>iden kimppuun
m.EffectsUnarmed1_0=Raivop<EFBFBD><EFBFBD> (TAITO)
m.EffectsUnarmed1_1=+50% vahinko, rikkoo heikkoja materiaaleja
m.EffectsUnarmed2_0=Aseista riisuminen (Pelaajat)
m.EffectsUnarmed2_1=Pudottaa vihollisen esineen k<>dest<73>
m.EffectsUnarmed3_0=Aseistamattomuuden Herra
m.EffectsUnarmed3_1=Suuri vahingonlis<69>ys
m.EffectsUnarmed4_0=Aseistamattomuuden Aloittelija
m.EffectsUnarmed4_1=Vahingonlis<EFBFBD>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<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.UnarmedDisarmChance=[[RED]]Aseista riisumisen todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.UnarmedBerserkLength=[[RED]]Raivop<6F><70>n kesto: [[YELLOW]]{0}s
m.SkillHerbalism=YRTTIHOITO
m.XPGainHerbalism=Ker<EFBFBD><EFBFBD>m<EFBFBD>ll<EFBFBD> yrttej<65>
m.EffectsHerbalism1_0=Vihermaa (TAITO)
m.EffectsHerbalism1_1=Levit<EFBFBD> vihreytt<74>, 3x saalis
m.EffectsHerbalism2_0=Viherpeukalo (Vehn<68>)
m.EffectsHerbalism2_1=Istuttaa vehn<68><6E> automaattisesti kun ker<65><72>t vehn<68><6E>
m.EffectsHerbalism3_0=Viherpeukalo (Mukulakivi)
m.EffectsHerbalism3_1=Mukulakivi -> Sammaleinen mukulakivi ja siemeni<6E>
m.EffectsHerbalism4_0=Ruoka+
m.EffectsHerbalism4_1=Muokkaa terveytt<74> jota saat leiv<69>st<73>/muhennoksesta
m.EffectsHerbalism5_0=Tuplasaalis (Kaikki yrtit)
m.EffectsHerbalism5_1=Tuplaa normaali saaliin m<><6D>r<EFBFBD>
m.HerbalismGreenTerraLength=[[RED]]Vihermaan kesto: [[YELLOW]]{0}s
m.HerbalismGreenThumbChance=[[RED]]Viherpeukalon todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.HerbalismGreenThumbStage=[[RED]]Viherpeukalon vaihe: [[YELLOW]] Vehn<68> kasvaa {0}:ssa vaiheessa
m.HerbalismDoubleDropChance=[[RED]]Tuplasaaliin todenn<6E>k<EFBFBD>isyys: [[YELLOW]]{0}%
m.HerbalismFoodPlus=[[RED]]Ruoka+ (Rank{0}): [[YELLOW]]Bonus {0} terveyden m<><6D>r<EFBFBD>
m.SkillExcavation=KAIVANTO
m.XPGainExcavation=Kaivamalla ja l<>yt<79>m<EFBFBD>ll<6C> aarteita
m.EffectsExcavation1_0=Giga Drill Breaker (TAITO)
m.EffectsExcavation1_1=3x saaliin m<><6D>r<EFBFBD>, 3x kokemuspisteiden m<><6D>r<EFBFBD>, +Nopeus
m.EffectsExcavation2_0=Aarteenmets<EFBFBD>st<EFBFBD>j<EFBFBD>
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<6C> voit korjata ty<74>kaluja ja haarniskoja.
mcEntityListener.WolfComesBack=[[DARK_GRAY]]Sutesi kipitt<74><74> takaisin luoksesi...
mcPlayerListener.AbilitiesOff=Taitojen k<>ytt<74> pois p<><70>lt<6C>
mcPlayerListener.AbilitiesOn=Taitojen k<>ytt<74> p<><70>ll<6C>
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<><70>lt<6C>
mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO Godmode p<><70>ll<6C>
mcPlayerListener.GreenThumb=[[GREEN]]**VIHERPEUKALO**
mcPlayerListener.GreenThumbFail=[[RED]]**VIHERPEUKALO EP<45>ONNISTUI**
mcPlayerListener.HerbalismSkill=[[YELLOW]]Yrttihoito:
mcPlayerListener.MiningSkill=[[YELLOW]]Kaivanto:
mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Myspawn on tyhj<68>tty.
mcPlayerListener.MyspawnNotExist=[[RED]]M<><4D>r<EFBFBD><72> myspawnisi ensin laittamalla s<>nky maahan.
mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Myspawn on asetettu t<>m<EFBFBD>nhetkiseen sijaintiisi.
mcPlayerListener.MyspawnTimeNotice=Sinun pit<69><74> odottaa {0}m {1}s k<>ytt<74><74>ksesi myspawnia
mcPlayerListener.NoPermission=Puutteelliset oikeudet (mcPermissions)
mcPlayerListener.NoSkillNote=[[DARK_GRAY]]Jos sinulla ei ole k<>ytt<74>oikeutta johonkin taitoon, sit<69> ei n<>ytet<65> t<><74>ll<6C>.
mcPlayerListener.NotInParty=[[RED]]Et ole ryhm<68>ss<73>.
mcPlayerListener.InviteSuccess=[[GREEN]]Kutsu l<>hetetty.
mcPlayerListener.ReceivedInvite1=[[RED]]HUOMIO: [[GREEN]]Olet saanut ryhm<68>kutsun ryhm<68><6D>n {0} pelaajalta {1}
mcPlayerListener.ReceivedInvite2=[[YELLOW]]Kirjoita [[GREEN]]/{0}[[YELLOW]] hyv<79>ksy<73>ksesi kutsun
mcPlayerListener.InviteAccepted=[[GREEN]]Kutsu hyv<79>ksytty. Olet liittynyt ryhm<68><6D>n {0}
mcPlayerListener.NoInvites=[[RED]]Sinulla ei ole kutsuja
mcPlayerListener.YouAreInParty=[[GREEN]]Olet ryhm<68>ss<73> {0}
mcPlayerListener.PartyMembers=[[GREEN]]Ryhm<68>n j<>senet
mcPlayerListener.LeftParty=[[RED]]Olet l<>htenyt ryhm<68>st<73>
mcPlayerListener.JoinedParty=Liityit ryhm<68><6D>n: {0}
mcPlayerListener.PartyChatOn=Vain ryhm<68>juttelu [[GREEN]]P<><50>ll<6C>
mcPlayerListener.PartyChatOff=Vain ryhm<68>juttelu [[RED]]Pois p<><70>lt<6C>
mcPlayerListener.AdminChatOn=Vain admin juttelu [[GREEN]]P<><50>ll<6C>
mcPlayerListener.AdminChatOff=Vain admin juttelu [[RED]]Pois p<><70>lt<6C>
mcPlayerListener.MOTD=[[BLUE]]T<>ll<6C> serverill<6C> 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<68><6D>n
Party.InformedOnQuit={0} [[GREEN]] on l<>htenyt ryhm<68>st<73>
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]]<name>[[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]<name> <password>
Party.Help3=[[RED]]Consult /{0} ? for more information
Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]]<name> [[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 <password>
Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick <player>
Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner <player>
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

View File

@ -0,0 +1,390 @@
Combat.WolfExamine=[[GREEN]]**Vous examinez le loup avec le Beast Lore**
Combat.WolfShowMaster=[[DARK_GREEN]]Le Ma<4D>tre des b<>tes \: {0}
Combat.Ignition=[[RED]]**ALLUMAGE**
Combat.BurningArrowHit=[[DARK_RED]]Vous avez <20>t<EFBFBD> frapp<70> par une fl<66>che br<62>lante\!
Combat.TouchedFuzzy=[[DARK_RED]]Vous voyez flou. Vous vous sentez <20>tourdi.
Combat.TargetDazed=La cible a <20>t<EFBFBD> [[DARK_RED]]<5D>tourdi
Combat.WolfNoMaster=[[GRAY]]Cette b<>te n'a pas de ma<6D>tre...
Combat.WolfHealth=[[GREEN]]Cette b<>te a {0} points de vie
Combat.StruckByGore=[[RED]]**FRAPP<50> JUSQU'AU SANG**
Combat.Gore=[[GREEN]]**SANG**
Combat.ArrowDeflect=[[WHITE]]**FL<46>CHE DEVI<56>E**
Item.ChimaeraWingFail=**CHIMAERA WING a <20>chou<6F> \!**
Item.ChimaeraWingPass=**CHIMAERA WING**
Item.InjuredWait=Vous avez <20>t<EFBFBD> bless<73> r<>cemment et vous devez attendre pour utiliser <20>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<43>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<EFBFBD>porte <20> un membre du groupe
m.mccOtherCommands=[[GREEN]]--AUTRES COMMANDES--
m.mccStats=- Voir vos statistiques
m.mccLeaderboards=- Classements
m.mccMySpawn=- Vous t<>l<EFBFBD>porte <20> votre spawn
m.mccClearMySpawn=- <20>fface votre point de spawn
m.mccToggleAbility=- Active les capacit<69>s sp<73>ciales avec clic droit
m.mccAdminToggle=- Active le chat admin
m.mccWhois=[playername] [[RED]]- Voir les infos d<>taill<6C>es du joueur
m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Modifier
m.mccMcGod=- Mode dieu
m.mccSkillInfo=[skillname] [[RED]]- Afficher des informations d<>taill<6C>es d'une comp<6D>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<69>es
m.EffectsTaming3_1=Bonus de d<>g<EFBFBD>ts
m.EffectsTaming4_0=Conscient de l'environnement
m.EffectsTaming4_1=Resistance aux Cactus, <20> la lave et aux chutes.
m.EffectsTaming5_0=Epaisse fourrure
m.EffectsTaming5_1=R<EFBFBD>duction d<>g<EFBFBD>ts, R<>sistance au feu
m.EffectsTaming6_0=R<EFBFBD>sistance aux chocs
m.EffectsTaming6_1=R<EFBFBD>duction des dommages explosifs
m.AbilLockTaming1=D<EFBFBD>bloqu<EFBFBD> au niveau 100 (Conscient de l'environnement)
m.AbilLockTaming2=D<EFBFBD>bloqu<EFBFBD> au niveau 250 (<28>paisse fourrure)
m.AbilLockTaming3=D<EFBFBD>bloqu<EFBFBD> au niveau 500 (R<>sistance aux chocs)
m.AbilLockTaming4=D<EFBFBD>bloqu<EFBFBD> au niveau 750 (Griffes aiguis<69>es)
m.AbilBonusTaming1_0=Conscient de l'environnement
m.AbilBonusTaming1_1=Le loup <20>vite le danger
m.AbilBonusTaming2_0=Epaisse fourrure
m.AbilBonusTaming2_1=R<EFBFBD>duit de moiti<74> les dommages \+ r<>sistance au feu
m.AbilBonusTaming3_0=R<EFBFBD>sistance aux chocs
m.AbilBonusTaming3_1=divise par 6 les d<>gats d'explosions
m.AbilBonusTaming4_0=Griffes aiguis<69>es
m.AbilBonusTaming4_1=+2 Dommages
m.TamingGoreChance=[[RED]]Chances de Morsure: [[YELLOW]]{0}%
m.SkillWoodCutting=B<EFBFBD>CHERONNAGE
m.XPGainWoodCutting=Abattre des arbres
m.EffectsWoodCutting1_0=L'abatteur d'arbres (capacit<69> sp<73>ciale)
m.EffectsWoodCutting1_1=Faire exploser les arbres
m.EffectsWoodCutting2_0=Souffleur de feuilles
m.EffectsWoodCutting2_1=D<EFBFBD>truire plus de feuilles
m.EffectsWoodCutting3_0=Double Butin
m.EffectsWoodCutting3_1=Double le butin normal
m.AbilLockWoodCutting1=D<EFBFBD>bloqu<EFBFBD> au niveau 100 (Souffleur de feuilles)
m.AbilBonusWoodCutting1_0=Soufler les feuilles
m.AbilBonusWoodCutting1_1=D<EFBFBD>truire plus de feuilles
m.WoodCuttingDoubleDropChance=[[RED]]Chance de double butin: [[YELLOW]]{0}%
m.WoodCuttingTreeFellerLength=[[RED]]Dur<75>e de votre capacit<69> sp<73>ciale : [[YELLOW]]{0}s
m.SkillArchery=TIR <20> 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=<EFBFBD>tourdir (les joueurs)
m.EffectsArchery2_1=<EFBFBD>tourdi les joueurs
m.EffectsArchery3_0=D<EFBFBD>g<EFBFBD>ts+
m.EffectsArchery3_1=Augmente les d<>g<EFBFBD>ts
m.EffectsArchery4_0=R<EFBFBD>cup<EFBFBD>ration de fl<66>ches
m.EffectsArchery4_1=Chances de r<>cup<75>rer vos fl<66>ches sur un cadavre
m.ArcheryDazeChance=[[RED]]Chances d'<27>tourdir : [[YELLOW]]{0}%
m.ArcheryRetrieveChance=[[RED]]Chances de r<>cup<75>ration des fl<66>ches : [[YELLOW]]{0}%
m.ArcheryIgnitionLength=[[RED]]Dur<75>e du feu : [[YELLOW]]{0} secondes
m.ArcheryDamagePlus=[[RED]]D<>g<EFBFBD>ts+ (Rang {0}): [[YELLOW]]Bonus de {0} dommages
m.SkillAxes=HACHE
m.XPGainAxes=Attaquer des monstres
m.EffectsAxes1_0=Fendeur de cr<63>nes (capacit<69> sp<73>ciale)
m.EffectsAxes1_1=provoque des d<>g<EFBFBD>ts de zone
m.EffectsAxes2_0=Coup critiques
m.EffectsAxes2_1=double les d<>g<EFBFBD>ts
m.EffectsAxes3_0=Ma<EFBFBD>trise de la hache (niveau 500)
m.EffectsAxes3_1=Augmente les d<>g<EFBFBD>ts
m.AbilLockAxes1=D<EFBFBD>bloqu<EFBFBD> au niveau 500 (Ma<4D>trise de la hache)
m.AbilBonusAxes1_0=Ma<EFBFBD>trise de la hache
m.AbilBonusAxes1_1=4 Blessures en bonus
m.AxesCritChance=[[RED]]Chances de coup critique : [[YELLOW]]{0}%
m.AxesSkullLength=[[RED]]Dur<75>e de votre capacit<69> sp<73>ciale : [[YELLOW]]{0}s
m.SkillSwords=<EFBFBD>P<EFBFBD>E
m.XPGainSwords=Attaque des monstres
m.EffectsSwords1_0=Contre-Attaque
m.EffectsSwords1_1=Renvoie 50% des degats subis
m.EffectsSwords2_0=Lame crant<6E>e (capacit<69> sp<73>ciale)
m.EffectsSwords2_1=25% de d<>g<EFBFBD>ts et saignements succesifs.
m.EffectsSwords3_0=Lame crant<6E>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<EFBFBD>t<EFBFBD>
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<75>e de votre capacit<69> sp<73>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<EFBFBD>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<74>
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<69> sp<73>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<75>e de votre capacit<69> sp<73>ciale : [[YELLOW]]{0}s
m.SkillRepair=R<EFBFBD>PARATION
m.XPGainRepair=R<EFBFBD>parer des objets
m.EffectsRepair1_0=R<EFBFBD>parer
m.EffectsRepair1_1=R<EFBFBD>paration d'outils & Armures en Fer
m.EffectsRepair2_0=Ma<EFBFBD>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<69>
m.EffectsRepair4_0=R<EFBFBD>paration du Diamant (requiert niveau {0})
m.EffectsRepair4_1=R<EFBFBD>paration des outils & armures en diamant
m.RepairRepairMastery=[[RED]]Ma<4D>tre en r<>paration : [[YELLOW]]{0}% de durabilit<69> restaur<75>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<69> sp<73>ciale)
m.EffectsUnarmed1_1=+50% de d<>g<EFBFBD>ts, brise les mat<61>riaux faibles
m.EffectsUnarmed2_0=D<EFBFBD>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<EFBFBD>ts
m.EffectsUnarmed4_0=Ma<EFBFBD>trise du d<>sarmement
m.EffectsUnarmed4_1=Beaucoup plus de d<>g<EFBFBD>ts
m.EffectsUnarmed5_0=D<EFBFBD>viation des fl<66>ches
m.EffectsUnarmed5_1=D<EFBFBD>vie les fl<66>ches qui vous foncent dessus
m.AbilLockUnarmed1=D<EFBFBD>bloqu<EFBFBD> au niveau 250 (Apprenti du d<>sarmement)
m.AbilLockUnarmed2=D<EFBFBD>bloqu<EFBFBD> au niveau 500 (Ma<4D>trise du d<>sarmement)
m.AbilBonusUnarmed1_0=Apprenti du d<>sarmement
m.AbilBonusUnarmed1_1=+2 d<>g<EFBFBD>ts
m.AbilBonusUnarmed2_0=Ma<EFBFBD>trise du d<>sarmement
m.AbilBonusUnarmed2_1=+4 d<>g<EFBFBD>ts
m.UnarmedArrowDeflectChance=[[RED]]Chances d<>vier les fl<66>ches : [[YELLOW]]{0}%
m.UnarmedDisarmChance=[[RED]]Chances de D<>sarmer : [[YELLOW]]{0}%
m.UnarmedBerserkLength=[[RED]]Dur<75>e de votre capacit<69> sp<73>ciale : [[YELLOW]]{0}s
m.SkillHerbalism=Herboristerie
m.XPGainHerbalism=R<EFBFBD>coler des herbes
m.EffectsHerbalism1_0=Main verte (capacit<69> sp<73>ciale)
m.EffectsHerbalism1_1=r<EFBFBD>pand la main verte, 3x Butin
m.EffectsHerbalism2_0=Main verte (Bl<42>)
m.EffectsHerbalism2_1=Auto-plantes du bl<62> 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<6E> re<72>ue via le pain / rago<67>t
m.EffectsHerbalism5_0=Double butin (Toutes cultures)
m.EffectsHerbalism5_1=Double les r<>coltes
m.HerbalismGreenTerraLength=[[RED]]Dur<75>e de la capacit<69> sp<73>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<74>sors
m.EffectsExcavation1_0=Super broyeur (capacit<69> sp<73>ciale)
m.EffectsExcavation1_1=3x Butin, 3x XP, +Vitesse
m.EffectsExcavation2_0=Chercheur de tr<74>sors
m.EffectsExcavation2_1=Capacit<EFBFBD> de trouver un tr<74>sor
m.ExcavationGreenTerraLength=[[RED]]Dur<75>e de la capacit<69> sp<73>ciale : [[YELLOW]]{0}s
mcBlockListener.PlacedAnvil=[[DARK_RED]]Vous avez plac<61> une enclume, Les enclumes peuvent r<>parer les outils et l'armure.
mcEntityListener.WolfComesBack=[[DARK_GRAY]]Votre loup revient vers vous...
mcPlayerListener.AbilitiesOff=Capacit<EFBFBD> sp<73>ciale d<>sactiv<69>e
mcPlayerListener.AbilitiesOn=Capacit<EFBFBD> sp<73>ciale activ<69>e
mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**CAPACIT<49> RECHARG<52>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<69>
mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO godMode activ<69>
mcPlayerListener.GreenThumb=[[GREEN]]**MAIN VERTE**
mcPlayerListener.GreenThumbFail=[[RED]]**MAIN VERTE A ECHOU<4F>**
mcPlayerListener.HerbalismSkill=[[YELLOW]]Herboriste (/Herbalism) :
mcPlayerListener.MiningSkill=[[YELLOW]]Minage (/Mining):
mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]Votre point de spawn a <20>t<EFBFBD> <20>ffac<61>.
mcPlayerListener.MyspawnNotExist=[[RED]]Dormez dans un lit pour d<>finir votre point de spawn.
mcPlayerListener.MyspawnSet=[[DARK_AQUA]]Votre point de spawn a <20>t<EFBFBD> enregistr<74> 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<63>s <20> une comp<6D>, elle ne sera pas affich<63>e ici.
mcPlayerListener.NotInParty=[[RED]]Vous n'<27>tes pas dans un groupe.
mcPlayerListener.InviteSuccess=[[GREEN]]L'invitation a <20>t<EFBFBD> envoy<6F>e avec succ<63>s.
mcPlayerListener.ReceivedInvite1=[[RED]]ALERTE: [[GREEN]]Vous avez re<72>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<70>e. Vous avez rejoint le groupe {0}
mcPlayerListener.NoInvites=[[RED]]Vous n'avez pas d'invitation pour le moment
mcPlayerListener.YouAreInParty=[[GREEN]]Vous <20>tes dans le groupe {0}
mcPlayerListener.PartyMembers=[[GREEN]]Membres du groupe
mcPlayerListener.LeftParty=[[RED]]Vous avez quitt<74> 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<74> votre groupe
Skills.YourGreenTerra=[[GREEN]]Votre capacit<69>e sp<73>ciale [[YELLOW]]Main verte [[GREEN]]est recharg<72>e
Skills.YourTreeFeller=[[GREEN]]Votre capacit<69>e sp<73>ciale [[YELLOW]]L'abatteur d'arbres [[GREEN]]est recharg<72>e
Skills.YourSuperBreaker=[[GREEN]]Votre capacit<69>e sp<73>ciale [[YELLOW]]Super Breaker[[GREEN]]est recharg<72>e
Skills.YourSerratedStrikes=[[GREEN]]Votre capacit<69>e sp<73>ciale [[YELLOW]]Epee crant<6E> [[GREEN]]est recharg<72>e
Skills.YourBerserk=[[GREEN]]Votre capacit<69>e sp<73>ciale [[YELLOW]]Berserk [[GREEN]]est recharg<72>e
Skills.YourSkullSplitter=[[GREEN]]Votre capacit<69>e sp<73>ciale [[YELLOW]]Fendeur de cr<63>nes [[GREEN]]est recharg<72>e
Skills.YourGigaDrillBreaker=[[GREEN]]Votre capacit<69>e sp<73>ciale [[YELLOW]]Super broyeur [[GREEN]]est recharg<72>e
Skills.TooTired=[[RED]]Vous <20>tes trop fatigu<67> pour utiliser cette capacit<69> pour l'instant.
Skills.ReadyHoe=[[GREEN]]**Votre b<>che est charg<72>e**
Skills.LowerHoe=[[GRAY]]Votre b<>che s'est d<>charg<72>e..
Skills.ReadyAxe=[[GREEN]]**Votre hache est charg<72>e**
Skills.LowerAxe=[[GRAY]]Votre hache s'est d<>charg<72>e..
Skills.ReadyFists=[[GREEN]]**Vos poings sont charg<72>s**
Skills.LowerFists=[[GRAY]]Vos poings se sont d<>charg<72>s..
Skills.ReadyPickAxe=[[GREEN]]**Votre pioche est charg<72>e**
Skills.LowerPickAxe=[[GRAY]]Votre pioche s'est d<>charg<72>e..
Skills.ReadyShovel=[[GREEN]]**Votre pelle est charg<72>e**
Skills.LowerShovel=[[GRAY]]Votre pelle s'est d<>charg<72>e..
Skills.ReadySword=[[GREEN]]**Votre <20>p<EFBFBD>e est charg<72>e**
Skills.LowerSword=[[GRAY]]Votre <20>p<EFBFBD>e s'est d<>charg<72>e..
Skills.BerserkOn=[[GREEN]]**BERSERK ACTIVATED**
Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Berserk!
Skills.GreenTerraOn=[[GREEN]]**Comp<6D>tence [[YELLOW]]Main Verte [[GREEN]]activ<69>e**
Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilis<69> la comp<6D>tence sp<73>ciale [[RED]]Main verte !
Skills.TreeFellerOn=[[GREEN]]**Comp<6D>tence [[YELLOW]]L'abatteur d'Arbres [[GREEN]]activ<69>e**
Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilis<69> la comp<6D>tence sp<73>ciale [[RED]]Abatteur d'Arbres !
Skills.SuperBreakerOn=[[GREEN]]**Comp<6D>tence [[YELLOW]]Super Breaker [[GREEN]]activ<69>e**
Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilis<69> la comp<6D>tence sp<73>ciale [[RED]]Super Breaker !
Skills.SerratedStrikesOn=[[GREEN]]**Comp<6D>tence [[YELLOW]]Lame Crant<6E>e [[GREEN]]activ<69>e**
Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilis<69> la comp<6D>tence sp<73>ciale [[RED]]Lame crant<6E>e !
Skills.SkullSplitterOn=[[GREEN]]**Comp<6D>tence [[YELLOW]]Fendeur de cr<63>nes [[GREEN]]activ<69>e**
Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilis<69> la comp<6D>tence sp<73>ciale [[RED]]Fendeur de cr<63>nes !
Skills.GigaDrillBreakerOn=[[GREEN]]**Comp<6D>tence [[YELLOW]]Super Broyeur [[GREEN]]activ<69>e**
Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] a utilis<69> la comp<6D>tence sp<73>ciale [[RED]]Super broyeur !
Skills.GreenTerraOff=[[RED]]**Comp<6D>tence [[YELLOW]]Main Verte [[GREEN]]termin<69>e**
Skills.TreeFellerOff=[[RED]]**Comp<6D>tence [[YELLOW]]L'abatteur d'Arbres [[GREEN]]termin<69>e**
Skills.SuperBreakerOff=[[RED]]**Comp<6D>tence [[YELLOW]]Super Breaker [[GREEN]]termin<69>e**
Skills.SerratedStrikesOff=[[RED]]**Comp<6D>tence [[YELLOW]]Lame Crant<6E>e [[GREEN]]termin<69>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<6E> de {0}. Total ({1})
Skills.AcrobaticsUp=[[YELLOW]]La competence acrobatie a augment<6E> de {0}. Total ({1})
Skills.ArcheryUp=[[YELLOW]]La competence tir a l'arc a augment<6E> de {0}. Total ({1})
Skills.SwordsUp=[[YELLOW]]La competence <20>p<EFBFBD>e a augment<6E> de {0}. Total ({1})
Skills.AxesUp=[[YELLOW]]La competence hache a augment<6E> de {0}. Total ({1})
Skills.UnarmedUp=[[YELLOW]]La comp<6D>tence de combat <20> mains nues a augment<6E> de {0}. Total ({1})
Skills.HerbalismUp=[[YELLOW]]La competence herboriste a augment<6E> de {0}. Total ({1})
Skills.MiningUp=[[YELLOW]]La competence minage a augment<6E> de {0}. Total ({1})
Skills.WoodcuttingUp=[[YELLOW]]La competence bucher<65>nage a augment<6E> de {0}. Total ({1})
Skills.RepairUp=[[YELLOW]]La competence r<>paration a augment<6E> de {0}. Total ({1})
Skills.ExcavationUp=[[YELLOW]]La competence excavation a augment<6E> de {0}. Total ({1})
Skills.FeltEasy=[[GRAY]]That felt easy.
Skills.StackedItems=[[DARK_RED]]Vous ne pouvez pas r<>parer les objets empil<69>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<EFBFBD> en bonne <20>tat.
Skills.Disarmed=[[DARK_RED]]Vous avez <20>t<EFBFBD> d<>sarm<72> !
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<72>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<63><72> par [[BLUE]]nossr50,[[GOLD]]mcMMO ajoute beaucoup de comp<6D>tences dans Minecraft,[[GOLD]]Vous pouvez gagner de l'exp<78>rience de diff<66>rentes fa<66>ons,[[GOLD]]Vous devriez taper [[GREEN]]/NOM_COMPETENCE[[GOLD]] pour en savoir plus.,[[DARK_AQUA]]Q: QU'EST-CE QUE <20>A FAIT?,[[GOLD]]Par exemple... en [[DARK_AQUA]]Minant[[GOLD]] Vous allez recevoir des b<>n<EFBFBD>fices comme,[[RED]]le Double Butin[[GOLD]] ou la comp<6D>tence [[RED]]Super Breaker[[GOLD]] qui lorsqu'elle est,[[GOLD]]activ<69>e avec clique droit permet de miner vite, sa dur<75>e,[[GOLD]]d<>pend du niveau de votre comp<6D>tence. Am<41>liorer [[BLUE]]Le Minage,[[GOLD]]Est aussi simple que de mine des ressources pr<70>cieuses !,[[DARK_AQUA]]Q: QU'EST-CE QUE <20>A VEUT DIRE ?,[[GOLD]]Presque toutes les comp<6D>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<63>er une exp<78>rience RPG de qualit<69>.,[[DARK_AQUA]]Q: O<> JE PEUX SUGG<47>RER DES ID<49>ES !?,[[DARK_AQUA]]bit.ly/MCmmoIDEA,[[DARK_AQUA]]Q: COMMENT JE FAIS CI ET <20>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]]<name>[[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]<name> <password>
Party.Help3=[[RED]]Consult /{0} ? for more information
Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]]<name> [[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 <password>
Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick <player>
Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner <player>
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

View File

@ -0,0 +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]]<name>[[YELLOW]] or [[WHITE]]'q' [[YELLOW]]to quit
Party.Help2=[[RED]]To join a passworded party use [[YELLOW]]/{0} [[WHITE]]<name> <password>
Party.Help3=[[RED]]Consult /{0} ? for more information
Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]]<name> [[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 <password>
Party.Help8=[[RED]]To kick a player from your party use [[YELLOW]]/{0} [[WHITE]]kick <player>
Party.Help9=[[RED]]To transfer ownership of your party use [[YELLOW]]/{0} [[WHITE]]owner <player>
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

View File

@ -0,0 +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]]<nazwa>[[YELLOW]] lub [[WHITE]]'q' [[YELLOW]]aby wyjsc.
Party.Help2=[[RED]]Aby dolaczyc do grupy zabezpieczonej haslem wpisz[[YELLOW]]/{0} [[WHITE]]<nazwa> <haslo>
Party.Help3=[[RED]]Sprawdz /{0} ? aby dowiedziec sie wiecej.
Party.Help4=[[RED]]Wpisz [[YELLOW]]/{0} [[WHITE]]<nazwa> [[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 <haslo>
Party.Help8=[[RED]]Aby wyrzucic gracza z grupy wpisz [[YELLOW]]/{0} [[WHITE]]kick <imiegracza>
Party.Help9=[[RED]]Aby przekazac wladze w grupie innej osobie wpisz [[YELLOW]]/{0} [[WHITE]]owner <imiegracza>
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

View File

@ -0,0 +1,404 @@
Combat.WolfExamine=[[GREEN]]*Voc<6F> examinou um lobo usando Conhecimento de Feras*
Combat.WolfShowMaster=[[DARK_GREEN]]O Mestre das Feras \: {0}
Combat.Ignition=[[RED]]*IGNI<4E>AO*
Combat.BurningArrowHit=[[DARK_RED]]Voc<6F> 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<EFBFBD> foi ferido recentemente e tem que esperar para usar isto. [[YELLOW]]({0}s)
Item.NeedFeathers=[[GRAY]]Voc<6F> 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<63>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<6D>oes do jogador
m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- Modificar atributos do jogador
m.mccMcGod=- Modo Deus
m.mccSkillInfo=[skillname] [[RED]]- Ver informa<6D>oes sobre a habilidade
m.mccModDescription=[[RED]]- Breve descri<72>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<63>tico que causa hemorragia
m.EffectsTaming3_0=Garras afiadas
m.EffectsTaming3_1=B<EFBFBD>nus de Dano
m.EffectsTaming4_0=Consci<EFBFBD>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<EFBFBD>ao nos Danos, Resist<73>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<63>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<EFBFBD>ncia do ambiente
m.AbilBonusTaming1_1=Lobos evitam perigo
m.AbilBonusTaming2_0=Pele grossa
m.AbilBonusTaming2_1=Danos pela metade, Resist<73>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 <20>rvores
m.EffectsWoodCutting1_0=Derrubador de <20>rvores (HABILIDADE ESPECIAL)
m.EffectsWoodCutting1_1=Explode <20>rvores
m.EffectsWoodCutting2_0=Soprador de Folhas
m.EffectsWoodCutting2_1=Destr<EFBFBD>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<EFBFBD>i folhas rapidamente
m.WoodCuttingDoubleDropChance=[[RED]]Chance de Drop x2: [[YELLOW]]{0}%
m.WoodCuttingTreeFellerLength=[[RED]]Dura<72>ao do Derrubador de <20>rvores: [[YELLOW]]{0}s
m.SkillArchery=ARCO E FLECHA
m.XPGainArchery=Atacando monstros/
m.EffectsArchery1_0=Igni<EFBFBD>ao
m.EffectsArchery1_1=25% de chance dos inimigos pegarem fogo
m.EffectsArchery2_0=Atordoar (Jogadores)
m.EffectsArchery2_1=Desorienta os advers<72>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<72>ao da Igni<6E>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<43>nios (HABILIDADE ESPECIAL)
m.EffectsAxes1_1=Causa Danos em Area
m.EffectsAxes2_0=Ataques Cr<43>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<EFBFBD>nus de 4 de dano
m.AxesCritChance=[[RED]]Chance ataque cr<63>tico: [[YELLOW]]{0}%
m.AxesSkullLength=[[RED]]Dura<72>ao do Rachador de Cr<43>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<72>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<72>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<EFBFBD>AO
m.XPGainMining=Minerando Pedras e Min<69>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<72>ao da Super Britadeira: [[YELLOW]]{0}s
m.SkillRepair=REPARA<EFBFBD>AO
m.XPGainRepair=Reparando itens
m.EffectsRepair1_0=Reparar
m.EffectsRepair1_1=Reparando Ferramentas e Armaduras de Ferro
m.EffectsRepair2_0=Mestre em Rapara<72>ao
m.EffectsRepair2_1=Aumenta a quantia reparada
m.EffectsRepair3_0=Super Repara<72>ao
m.EffectsRepair3_1=Dobra a efetividade da Repara<72>ao
m.EffectsRepair4_0=Repara<EFBFBD>ao de diamantes (N<>vel {0})
m.EffectsRepair4_1=Rapara Ferramentas e Armaduras de Diamante
m.RepairRepairMastery=[[RED]]Mestre em Rapara<72>ao: [[YELLOW]]{0}% extra restaurado
m.RepairSuperRepairChance=[[RED]]Chance de Super Repara<72>ao: [[YELLOW]]{0}%
m.SkillUnarmed=DESARMADO
m.XPGainUnarmed=Atacando monstros
m.EffectsUnarmed1_0=F<EFBFBD>ria (HABILIDADE ESPECIAL)
m.EffectsUnarmed1_1=+50% de Dano, Quebra materiais fr<66>geis
m.EffectsUnarmed2_0=Desarmar (Jogadores)
m.EffectsUnarmed2_1=Derruba a arma que o advers<72>rio est<73> 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<6F>
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<72>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<72>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<EFBFBD>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<EFBFBD>ad/or de Tesouros
m.EffectsExcavation2_1=Encontra itens raros enquanto cava
m.ExcavationGreenTerraLength=[[RED]]Dura<72>ao da Super Broca: [[YELLOW]]{0}s
mcBlockListener.PlacedAnvil=[[DARK_RED]] Voc<6F> colocou uma bigorna, a bigorna pode reparar ferramentas e armaduras.
mcEntityListener.WolfComesBack=[[DARK_GRAY]]Seu lobo voltou para voc<6F>...
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<EFBFBD>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<EFBFBD>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<EFBFBD> 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<6F> nao tem acesso a uma habilidade, ela nao ser<65> exibida aqui.
mcPlayerListener.NotInParty=[[RED]]Voc<6F> nao est<73> em nenhuma equipe.
mcPlayerListener.InviteSuccess=[[GREEN]]Convite enviado.
mcPlayerListener.ReceivedInvite1=[[RED]]ALERTA: [[GREEN]]Voc<6F> 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<6F> se juntou a equipe {0}
mcPlayerListener.NoInvites=[[RED]]Voc<6F> nao tem convites pendentes.
mcPlayerListener.YouAreInParty=[[GREEN]]Voc<6F> est<73> na equipe {0}
mcPlayerListener.PartyMembers=[[GREEN]]Membros da Equipe
mcPlayerListener.LeftParty=[[RED]]Voc<6F> 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<73> rodando o mcMMO {0} digite [[YELLOW]]/{1}[[BLUE]] para obter ajuda.
mcPlayerListener.WIKI=[[BLUE]]Para mais informa<6D>oes - [[GREEN]]http://mcmmo.wikia.com
mcPlayerListener.PowerLevel=[[RED]]NIVEL TOTAL:
mcPlayerListener.PowerLevelLeaderboard=[[BLUE]]-Classifica<63>ao - [[GREEN]]N<>vel - [[WHITE]]Jogador-
mcPlayerListener.SkillLeaderboard=[[BLUE]]-Classifica<63>ao em [[GREEN]]{0}
mcPlayerListener.RepairSkill=Repara<EFBFBD>ao (Repair):
mcPlayerListener.SwordsSkill=Espadas (Swords):
mcPlayerListener.TamingSkill=Domar (Taming):
mcPlayerListener.UnarmedSkill=Desarmado (Unarmed):
mcPlayerListener.WoodcuttingSkill=Lenhador (Woodcutting):
mcPlayerListener.YourStats=[[GREEN]][mcMMO] Estat<61>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<73> dispon<6F>vel!
Skills.YourTreeFeller=[[GREEN]]Sua habilidade [[YELLOW]]Derrubador de Arvores [[GREEN]]est<73> dispon<6F>vel!
Skills.YourSuperBreaker=[[GREEN]]Sua habilidade [[YELLOW]]Super Britadeira [[GREEN]]est<73> dispon<6F>vel!
Skills.YourSerratedStrikes=[[GREEN]]Sua habilidade [[YELLOW]]Ataques Cortantes [[GREEN]]est<73> dispon<6F>vel!
Skills.YourBerserk=[[GREEN]]Sua habilidade [[YELLOW]]F<>ria [[GREEN]]est<73> dispon<6F>vel!
Skills.YourSkullSplitter=[[GREEN]]Sua habilidade [[YELLOW]]Rachador de Cr<43>nios [[GREEN]]est<73> dispon<6F>vel!
Skills.YourGigaDrillBreaker=[[GREEN]]Sua habilidade [[YELLOW]]Super Broca [[GREEN]]est<73> dispon<6F>vel!
Skills.TooTired=[[RED]]Voc<6F> est<73> 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<43>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<43>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<72>ao aumentada em {0}. Total ({1})
Skills.WoodcuttingUp=[[YELLOW]]Habilidade de Lenhador aumentada em {0}. Total ({1})
Skills.RepairUp=[[YELLOW]]Habilidade de Repara<72>ao aumentada em {0}. Total ({1})
Skills.ExcavationUp=[[YELLOW]]Habilidade de Escava<76>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<6F> precisa de mais
Skills.AdeptDiamond=[[DARK_RED]]Voc<6F> nao tem o n<>vel necess<73>rio para reparar Diamante
Skills.FullDurability=[[GRAY]]J<> est<73> com Durabilidade cheia.
Skills.Disarmed=[[DARK_RED]]Voc<6F> foi Desarmado!
mcPlayerListener.SorcerySkill=Feiti<EFBFBD>aria (Sorcery):
m.SkillSorcery=FEITI<EFBFBD>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 <20> 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<6F> pode ganhar experi<72>ncia de muitas maneiras.,[[GOLD]]Digite [[GREEN]]/NOME_DA_HABILIDADE[[GOLD]] para obter informa<6D>oes sobre a habilidade.,[[DARK_AQUA]]Q: O QUE ELE FAZ? [[GOLD]]Por exemplo... em [[DARK_AQUA]]Minera<72>ao[[GOLD]] voc<6F> receber<65> benef<65>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<72>ao. [[GOLD]]que depende do n<>vel da sua habilidade. Aumentar o n<>vel de [[BLUE]]Minera<72>ao[[GOLD]] <20> simples. basta minerar pedras ou min<69>rios!,[[GOLD]]O objetivo do mcMMO <20> criar uma experi<72>ncia de RPG de qualidade.,[[GOLD]]Digite [[GREEN]]/{0}[[GOLD]] para uma lista de comandos poss<73>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<6D>oes. leia a wiki do McMMO: [[RED]]mcmmo.wikia.com
Party.Locked=[[RED]]Equipe est<73> trancada, s<> o l<>der pode convidar.
Party.IsntLocked=[[GRAY]]Equipe nao est<73> trancada
Party.Unlocked=[[GRAY]]Equipe foi Destrancada
Party.Help1=[[RED]]O uso certo <20> [[YELLOW]]/{0} [[WHITE]]<nome>[[YELLOW]] ou [[WHITE]]'q' [[YELLOW]]para sair
Party.Help2=[[RED]]Para entrar em uma equipe com senha use [[YELLOW]]/{0} [[WHITE]]<nome> <senha>
Party.Help3=[[RED]]Consulte /{0} ? para mais informa<6D>oes
Party.Help4=[[RED]]Use [[YELLOW]]/{0} [[WHITE]]<nome> [[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 <password>
Party.Help8=[[RED]]Para excluir um jogador da equipe use [[YELLOW]]/{0} [[WHITE]]kick <player>
Party.Help9=[[RED]]Para transferir a lideran<61>a da equipe use [[YELLOW]]/{0} [[WHITE]]owner <player>
Party.NotOwner=[[DARK_RED]]Voc<6F> nao <20> o l<>der da equipe
Party.InvalidName=[[DARK_RED]]Este nome nao <20> valido
Party.PasswordSet=[[GREEN]]Senha da equipe: {0}
Party.CouldNotKick=[[DARK_RED]]Nao foi poss<73>vel excluir o jogador {0}
Party.NotInYourParty=[[DARK_RED]]{0} nao est<73> na sua equipe
Party.CouldNotSetOwner=[[DARK_RED]]Nao foi poss<73>vel passar a lideran<61>a para {0}
Commands.xprate.proper=[[DARK_AQUA]]Uso certo <20> /{0} [integer] [true:false]
Commands.xprate.proper2=[[DARK_AQUA]]Tamb<6D>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<4D>OU!
Commands.xprate.started2=[[GOLD]]XP RATE AGORA <20> {0}x!!
Commands.xplock.locked=[[GOLD]]Sua barra de XP BAR est<73> 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

View File

@ -0,0 +1,382 @@
Combat.WolfExamine=[[GREEN]]**<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>"**
Combat.WolfExamine=[[GREEN]]**<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>"**
Combat.WolfShowMaster=[[DARK_GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \: {0}
Combat.Ignition=[[RED]]**<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!**
Combat.BurningArrowHit=[[DARK_RED]]<5D><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\!
Combat.TouchedFuzzy=[[DARK_RED]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
Combat.TargetDazed=<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> [[DARK_RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Combat.WolfNoMaster=[[GRAY]]<5D> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Combat.WolfHealth=[[GREEN]]<5D> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> {0} <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Combat.StruckByGore=[[RED]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Combat.Gore=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Combat.ArrowDeflect=[[WHITE]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Item.ChimaeraWingFail=**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\!**
Item.ChimaeraWingPass=**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>...**
Item.InjuredWait=<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. [[YELLOW]]({0}s)
Item.NeedFeathers=[[GRAY]]<5D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
m.mccPartyCommands=[[GREEN]]--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--
m.mccParty=[party name] [[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccPartyQ=[[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccPartyToggle=[[RED]] - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.mccPartyInvite=[player name] [[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccPartyAccept=[[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccPartyTeleport=[party member name] [[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccOtherCommands=[[GREEN]]--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--
m.mccStats=- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> McMMo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccLeaderboards=- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccMySpawn=- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccClearMySpawn=- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccToggleAbility=- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.mccAdminToggle=- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.mccWhois=[playername] [[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccMmoedit=[playername] [skill] [newvalue] [[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.mccMcGod=- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.mccSkillInfo=[skillname] [[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.mccModDescription=[[RED]]- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 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=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.YourStats=<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.SkillTaming=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainTaming=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming4_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming4_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming5_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.EffectsTaming5_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming6_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsTaming6_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AbilLockTaming1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 100+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.AbilLockTaming2=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 250+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>)
m.AbilLockTaming3=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 500+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.AbilLockTaming4=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 700+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>)
m.AbilBonusTaming1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusTaming1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusTaming2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.AbilBonusTaming2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusTaming3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusTaming3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1/6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusTaming4_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusTaming4_1=+2 <20><><EFBFBD><EFBFBD><EFBFBD>
m.TamingGoreChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.SkillWoodCutting=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainWoodCutting=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsWoodCutting1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsWoodCutting1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsWoodCutting2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsWoodCutting2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsWoodCutting3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.EffectsWoodCutting3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.AbilLockWoodCutting1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 100+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.AbilBonusWoodCutting1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusWoodCutting1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.WoodCuttingDoubleDropChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.WoodCuttingTreeFellerLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}s
m.SkillArchery=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
m.XPGainArchery=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
m.EffectsArchery1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsArchery1_1=25% <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsArchery2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsArchery2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsArchery3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+
m.EffectsArchery3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.EffectsArchery4_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsArchery4_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.ArcheryDazeChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.ArcheryRetrieveChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.ArcheryIgnitionLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0} <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.ArcheryDamagePlus=[[RED]]<5D><><EFBFBD><EFBFBD>+ (Rank{0}): [[YELLOW]]Bonus {0} damage
m.SkillAxes=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainAxes=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsAxes1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsAxes1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsAxes2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsAxes2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.EffectsAxes3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(500 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsAxes3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.AbilLockAxes1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 500+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.AbilBonusAxes1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusAxes1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> 4 <20><><EFBFBD><EFBFBD><EFBFBD>
m.AxesCritChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.AxesSkullLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}s
m.SkillSwords=<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainSwords=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsSwords1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsSwords1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 50% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsSwords2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsSwords2_1=25% <20><><EFBFBD><EFBFBD><EFBFBD>+ <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsSwords3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
m.EffectsSwords3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD>
m.EffectsSwords4_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsSwords4_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.EffectsSwords5_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsSwords5_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.SwordsCounterAttChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.SwordsBleedLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0} <20><><EFBFBD>
m.SwordsBleedChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0} %
m.SwordsParryChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0} %
m.SwordsSSLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x <20><><EFBFBD><EFBFBD><EFBFBD>": [[YELLOW]]{0}s
m.SwordsTickNote=[[GRAY]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]1 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.SkillAcrobatics=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainAcrobatics=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
m.EffectsAcrobatics1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsAcrobatics1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.EffectsAcrobatics2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsAcrobatics2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsAcrobatics3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsAcrobatics3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AcrobaticsRollChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.AcrobaticsGracefulRollChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.AcrobaticsDodgeChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.SkillMining=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainMining=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsMining1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsMining1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsMining2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.EffectsMining2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.MiningDoubleDropChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.MiningSuperBreakerLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>": [[YELLOW]]{0}s
m.SkillRepair=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainRepair=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.EffectsRepair1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsRepair1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsRepair2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsRepair2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsRepair3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsRepair3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsRepair4_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ({0}+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsRepair4_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
m.RepairRepairMastery=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0}% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.RepairSuperRepairChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.SkillUnarmed=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.XPGainUnarmed=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsUnarmed1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsUnarmed1_1=+50% <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsUnarmed2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsUnarmed2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>.
m.EffectsUnarmed3_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.EffectsUnarmed3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsUnarmed4_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.EffectsUnarmed4_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsUnarmed5_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m.EffectsUnarmed5_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.AbilLockUnarmed1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 250+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>)
m.AbilLockUnarmed2=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 500+ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>)
m.AbilBonusUnarmed1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.AbilBonusUnarmed1_1=+2 <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
m.AbilBonusUnarmed2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.AbilBonusUnarmed2_1=+4 <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
m.UnarmedArrowDeflectChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.UnarmedDisarmChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.UnarmedBerserkLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>": [[YELLOW]]{0}s
m.SkillHerbalism=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainHerbalism=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsHerbalism1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsHerbalism1_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 3-<2D><> <20><><EFBFBD><EFBFBD>
m.EffectsHerbalism2_0="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsHerbalism2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsHerbalism3_0="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"(<28><><EFBFBD>)
m.EffectsHerbalism3_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsHerbalism4_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m.EffectsHerbalism4_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m.EffectsHerbalism5_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsHerbalism5_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.HerbalismGreenTerraLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>": [[YELLOW]]{0}s
m.HerbalismGreenThumbChance=[[RED]]<5D><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>": [[YELLOW]]{0}%
m.HerbalismGreenThumbStage=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>": [[YELLOW]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0}
m.HerbalismDoubleDropChance=[[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>: [[YELLOW]]{0}%
m.HerbalismFoodPlus=[[RED]]<5D><><EFBFBD>+ (Rank{0}): [[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD> {0} <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.SkillExcavation=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.XPGainExcavation=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsExcavation1_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
m.EffectsExcavation1_1=3-<2D><> <20><><EFBFBD><EFBFBD>, 3-<2D><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsExcavation2_0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.EffectsExcavation2_1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.ExcavationGreenTerraLength=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>": [[YELLOW]]{0}s
mcBlockListener.PlacedAnvil=[[DARK_RED]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
mcEntityListener.WolfComesBack=[[DARK_GRAY]]<5D><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
mcPlayerListener.AbilitiesOff=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.AbilitiesOn=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.AbilitiesRefreshed=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\!**
mcPlayerListener.AcrobaticsSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.ArcherySkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>:
mcPlayerListener.AxesSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.ExcavationSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.GodModeDisabled=[[YELLOW]]mcMMO <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.GodModeEnabled=[[YELLOW]]mcMMO <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.GreenThumb=[[GREEN]]**"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"**
mcPlayerListener.GreenThumbFail=[[RED]]**"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
mcPlayerListener.HerbalismSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.MiningSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.MyspawnCleared=[[DARK_AQUA]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
mcPlayerListener.MyspawnNotExist=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
mcPlayerListener.MyspawnSet=[[DARK_AQUA]]<5D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
mcPlayerListener.MyspawnTimeNotice=<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0}m {1}s <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.NoPermission=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
mcPlayerListener.NoSkillNote=[[DARK_GRAY]]<5D><><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
mcPlayerListener.NotInParty=[[RED]]<5D><> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
mcPlayerListener.InviteSuccess=[[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
mcPlayerListener.ReceivedInvite1=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[GREEN]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0} <20><> {1}
mcPlayerListener.ReceivedInvite2=[[YELLOW]]Type [[GREEN]]/{0}[[YELLOW]] <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.InviteAccepted=[[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0}
mcPlayerListener.NoInvites=[[RED]]<5D> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.YouAreInParty=[[GREEN]]<5D><> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0}
mcPlayerListener.PartyMembers=[[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.LeftParty=[[RED]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.JoinedParty=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: {0}
mcPlayerListener.PartyChatOn=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.PartyChatOff=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.AdminChatOn=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.AdminChatOff=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> [[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.MOTD=[[BLUE]]<5D><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> McMMO {0} type [[YELLOW]]/{1}[[BLUE]] <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
mcPlayerListener.WIKI=[[GREEN]]http://mcmmo.wikia.com[[BLUE]] - mcMMO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mcPlayerListener.PowerLevel=[[DARK_RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.PowerLevelLeaderboard=[[YELLOW]]--mcMMO[[BLUE]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--
mcPlayerListener.SkillLeaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--
mcPlayerListener.RepairSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.SwordsSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.TamingSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.UnarmedSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>:
mcPlayerListener.WoodcuttingSkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
mcPlayerListener.YourStats=[[GREEN]][mcMMO] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.InformedOnJoin={0} [[GREEN]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.InformedOnQuit={0} [[GREEN]] <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Skills.YourGreenTerra=[[GREEN]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[[YELLOW]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
Skills.YourTreeFeller=[[GREEN]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
Skills.YourSuperBreaker=[[GREEN]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
Skills.YourSerratedStrikes=[[GREEN]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
Skills.YourBerserk=[[GREEN]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
Skills.YourSkullSplitter=[[GREEN]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
Skills.YourGigaDrillBreaker=[[GREEN]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>" [[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
Skills.TooTired=[[RED]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>.
Skills.ReadyHoe=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.LowerHoe=[[GRAY]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.ReadyAxe=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>**
Skills.LowerAxe=[[GRAY]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>**
Skills.ReadyFists=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.LowerFists=[[GRAY]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.ReadyPickAxe=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>**
Skills.LowerPickAxe=[[GRAY]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>**
Skills.ReadyShovel=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.LowerShovel=[[GRAY]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.ReadySword=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>**
Skills.LowerSword=[[GRAY]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>**
Skills.BerserkOn=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.BerserkPlayer=[[GREEN]]{0}[[DARK_GREEN]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"!
Skills.GreenTerraOn=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.GreenTerraPlayer=[[GREEN]]{0}[[DARK_GREEN]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"!
Skills.TreeFellerOn=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.TreeFellerPlayer=[[GREEN]]{0}[[DARK_GREEN]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"!
Skills.SuperBreakerOn=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.SuperBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"!
Skills.SerratedStrikesOn=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.SerratedStrikesPlayer=[[GREEN]]{0}[[DARK_GREEN]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"!
Skills.SkullSplitterOn=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.SkullSplitterPlayer=[[GREEN]]{0}[[DARK_GREEN]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"!
Skills.GigaDrillBreakerOn=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.GigaDrillBreakerPlayer=[[GREEN]]{0}[[DARK_GREEN]] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]"<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>"!
Skills.GreenTerraOff=[[RED]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.TreeFellerOff=[[RED]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.SuperBreakerOff=[[RED]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.SerratedStrikesOff=[[RED]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.BerserkOff=[[RED]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.SkullSplitterOff=[[RED]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.GigaDrillBreakerOff=[[RED]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Skills.TamingUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.AcrobaticsUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.ArcheryUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.SwordsUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.AxesUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.UnarmedUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.HerbalismUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.MiningUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.WoodcuttingUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.RepairUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.ExcavationUp=[[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> {0}. <20><><EFBFBD><EFBFBD><EFBFBD> ({1})
Skills.FeltEasy=[[GRAY]]<5D><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
Skills.StackedItems=[[DARK_RED]]<5D><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Skills.NeedMore=[[DARK_RED]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Skills.AdeptDiamond=[[DARK_RED]]<5D><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
Skills.FullDurability=[[GRAY]]<5D><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
Skills.Disarmed=[[DARK_RED]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
mcPlayerListener.SorcerySkill=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
m.SkillSorcery=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sorcery.HasCast=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"**[[GOLD]]
Sorcery.Current_Mana=[[DARK_AQUA]] <20><><EFBFBD><EFBFBD>
Sorcery.SpellSelected=[[GREEN]]-=([[GOLD]]{0}[[GREEN]])=- [[RED]]([[GRAY]]{1}[[RED]])
Sorcery.Cost=[[RED]][COST] {0} <20><><EFBFBD><EFBFBD>
Sorcery.OOM=[[DARK_AQUA]][[[GOLD]]{2}[[DARK_AQUA]]][[DARK_GRAY]] <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> [[YELLOW]]([[RED]]{0}[[YELLOW]]/[[GRAY]]{1}[[YELLOW]])
Sorcery.Water.Thunder=<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sorcery.Curative.Self=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Sorcery.Curative.Other=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m.LVL=[[DARK_GRAY]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Combat.BeastLore=[[GREEN]]**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
Combat.BeastLoreOwner=[[DARK_AQUA]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ([[RED]]{0}[[DARK_AQUA]])
Combat.BeastLoreHealthWolfTamed=[[DARK_AQUA]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ([[GREEN]]{0}[[DARK_AQUA]]/20)
Combat.BeastLoreHealthWolf=[[DARK_AQUA]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ([[GREEN]]{0}[[DARK_AQUA]]/8)
Party.Locked=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
Party.IsntLocked=[[GRAY]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.Unlocked=[[GRAY]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.Help1=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]/{0} [[WHITE]]<name>[[YELLOW]] <20><><EFBFBD> [[WHITE]]'q' [[YELLOW]]<5D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.Help2=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]/{0} [[WHITE]]<<3C><><EFBFBD>> <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
Party.Help3=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> /{0} ? <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.Help4=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]/{0} [[WHITE]]<<3C><><EFBFBD>> [[YELLOW]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> [[WHITE]]'q' [[YELLOW]]<5D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.Help5=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]/{0} [[WHITE]]lock
Party.Help6=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]/{0} [[WHITE]]unlock
Party.Help7=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]/{0} [[WHITE]]password <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
Party.Help8=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]/{0} [[WHITE]]kick <<3C><><EFBFBD><EFBFBD><EFBFBD>>
Party.Help9=[[RED]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[YELLOW]]/{0} [[WHITE]]owner <<3C><><EFBFBD><EFBFBD><EFBFBD>>
Party.NotOwner=[[DARK_RED]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.InvalidName=[[DARK_RED]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.PasswordSet=[[GREEN]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0}
Party.CouldNotKick=[[DARK_RED]]<5D><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0}
Party.NotInYourParty=[[DARK_RED]]{0} <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Party.CouldNotSetOwner=[[DARK_RED]]<5D><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> {0}
mcMMO.Description=[[DARK_AQUA]]Q: <20><><EFBFBD> <20><><EFBFBD>?,[[GOLD]]mcMMO <20><><EFBFBD> [[RED]]<5D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>[[GOLD]] RPG <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Bukkit <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[BLUE]]nossr50,[[GOLD]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Minecraft <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.,[[GOLD]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,[[GOLD]]<5D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[GREEN]]/SKILLNAME[[GOLD]] ?,[[DARK_AQUA]]Q: <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?,[[GOLD]]<5D><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... in [[DARK_AQUA]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[[GOLD]] <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]2-<2D><> <20><><EFBFBD><EFBFBD>[[GOLD]] <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[RED]]"<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"[[GOLD]] ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[GOLD]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>,[[GOLD]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [[BLUE]]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,[[GOLD]]<5D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>!
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

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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;
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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);
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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<String, String> aliasMap = new HashMap<String, String>();
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<String> getParties(){
String location = "plugins/mcMMO/mcmmo.users";
ArrayList<String> parties = new ArrayList<String>();
try {
//Open the users file
FileReader file = new FileReader(location);
BufferedReader in = new BufferedReader(file);
String line = "";
while((line = in.readLine()) != null)
{
String[] character = line.split(":");
String theparty = null;
//Party
if(character.length > 3)
theparty = character[3];
if(!parties.contains(theparty))
parties.add(theparty);
}
in.close();
} catch (Exception e) {
log.log(Level.SEVERE, "Exception while reading "
+ location + " (Are you sure you formatted it correctly?)", e);
}
return parties;
}
public static String getPartyName(Player player){
PlayerProfile PP = Users.getProfile(player);
return PP.getParty();
}
public static boolean inParty(Player player){
PlayerProfile PP = Users.getProfile(player);
return PP.inParty();
}
public Permissions getPermissions() {
return permissions;
}
public void onDisable() {
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);
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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;
}
}
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
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 <http://www.gnu.org/licenses/>.
*/
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<String, HashMap<String, Boolean>> partyPlayers = new HashMap<String, HashMap<String, Boolean>>();
HashMap<String, Boolean> partyLocks = new HashMap<String, Boolean>();
HashMap<String, String> partyPasswords = new HashMap<String, String>();
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<Player> getPartyMembers(Player player)
{
ArrayList<Player> players = new ArrayList<Player>();
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+" <party> <password> 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 <U,V,W> W putNestedEntry(
HashMap<U,HashMap<V,W>> nest,
U nestKey,
V nestedKey,
W nestedValue)
{
HashMap<V,W> nested = nest.get(nestKey);
if (nested == null) {
nested = new HashMap<V,W>();
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<String> i = partyPlayers.keySet().iterator();
while(i.hasNext()) {
String nestkey = i.next();
player.sendMessage(nestkey);
Iterator<String> 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<String> 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<String, HashMap<String, Boolean>>)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<String, Boolean>)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<String, String>)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(); }
}
}

View File

@ -0,0 +1,80 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.runnables;
import org.bukkit.entity.*;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.skills.Skills;
import com.gmail.nossr50.skills.Swords;
public class mcTimer implements Runnable
{
private final mcMMO plugin;
int thecount = 1;
public mcTimer(final mcMMO plugin)
{
this.plugin = plugin;
}
public void run()
{
for(Player player : plugin.getServer().getOnlinePlayers())
{
if(player == null)
continue;
PlayerProfile PP = Users.getProfile(player);
if(PP == null)
continue;
/*
* MONITOR SKILLS
*/
Skills.monitorSkills(player);
/*
* COOLDOWN MONITORING
*/
Skills.watchCooldowns(player);
/*
* PLAYER BLEED MONITORING
*/
if(thecount % 2 == 0 && PP.getBleedTicks() >= 1)
{
player.damage(2);
PP.decreaseBleedTicks();
}
/*
* NON-PLAYER BLEED MONITORING
*/
if(thecount % 2 == 0)
Swords.bleedSimulate(plugin);
//SETUP FOR HP REGEN/BLEED
thecount++;
if(thecount >= 81)
thecount = 1;
}
}
}

View File

@ -0,0 +1,105 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
public class Acrobatics {
public static void acrobaticsCheck(Player player, EntityDamageEvent event)
{
if(player != null && mcPermissions.getInstance().acrobatics(player))
{
PlayerProfile PP = Users.getProfile(player);
int acrovar = PP.getSkillLevel(SkillType.ACROBATICS);
if(player.isSneaking())
acrovar = acrovar * 2;
if(Math.random() * 1000 <= acrovar && !event.isCancelled())
{
int threshold = 7;
if(player.isSneaking())
threshold = 14;
int newDamage = event.getDamage() - threshold;
if(newDamage < 0)
newDamage = 0;
/*
* Check for death
*/
if(player.getHealth() - newDamage >= 1){
if(!event.isCancelled())
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 8)*10, player);
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
event.setDamage(newDamage);
if(event.getDamage() <= 0)
event.setCancelled(true);
if(player.isSneaking()){
player.sendMessage(ChatColor.GREEN+"**GRACEFUL ROLL**");
} else {
player.sendMessage("**ROLL**");
}
}
} else if (!event.isCancelled()){
if(player.getHealth() - event.getDamage() >= 1){
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10, player);
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
}
}
}
}
public static void dodgeChecks(EntityDamageByEntityEvent event){
Player defender = (Player) event.getEntity();
PlayerProfile PPd = Users.getProfile(defender);
if(mcPermissions.getInstance().acrobatics(defender)){
if(PPd.getSkillLevel(SkillType.ACROBATICS) <= 800){
if(Math.random() * 4000 <= PPd.getSkillLevel(SkillType.ACROBATICS)){
defender.sendMessage(ChatColor.GREEN+"**DODGE**");
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*1, defender);
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
}
event.setDamage(event.getDamage() / 2);
//Needs to do minimal damage
if(event.getDamage() <= 0)
event.setDamage(1);
}
} else if(Math.random() * 4000 <= 800) {
defender.sendMessage(ChatColor.GREEN+"**DODGE**");
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10, defender);
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
}
event.setDamage(event.getDamage() / 2);
//Needs to deal minimal damage
if(event.getDamage() <= 0)
event.setDamage(1);
}
}
}
}

View File

@ -0,0 +1,5 @@
package com.gmail.nossr50.skills;
public class Alchemy {
}

View File

@ -0,0 +1,119 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.party.Party;
public class Archery
{
public static void trackArrows(mcMMO pluginx, Entity x, EntityDamageByEntityEvent event, Player attacker)
{
PlayerProfile PPa = Users.getProfile(attacker);
if(!pluginx.misc.arrowTracker.containsKey(x) && event.getDamage() > 0)
{
pluginx.misc.arrowTracker.put(x, 0);
if(attacker != null)
{
if(Math.random() * 1000 <= PPa.getSkillLevel(SkillType.ARCHERY))
{
pluginx.misc.arrowTracker.put(x, 1);
}
}
} else
{
if(event.getDamage() > 0)
{
if(attacker != null)
{
if(Math.random() * 1000 <= PPa.getSkillLevel(SkillType.ARCHERY))
{
pluginx.misc.arrowTracker.put(x, 1);
}
}
}
}
}
public static void ignitionCheck(Entity x, EntityDamageByEntityEvent event, Player attacker)
{
//Check to see if PVP for this world is disabled before executing
if(!x.getWorld().getPVP())
return;
PlayerProfile PPa = Users.getProfile(attacker);
if(Math.random() * 100 >= 75)
{
int ignition = 20;
if(PPa.getSkillLevel(SkillType.ARCHERY) >= 200)
ignition+=20;
if(PPa.getSkillLevel(SkillType.ARCHERY) >= 400)
ignition+=20;
if(PPa.getSkillLevel(SkillType.ARCHERY) >= 600)
ignition+=20;
if(PPa.getSkillLevel(SkillType.ARCHERY) >= 800)
ignition+=20;
if(PPa.getSkillLevel(SkillType.ARCHERY) >= 1000)
ignition+=20;
if(x instanceof Player)
{
Player Defender = (Player)x;
if(!Party.getInstance().inSameParty(attacker, Defender))
{
event.getEntity().setFireTicks(ignition);
attacker.sendMessage(mcLocale.getString("Combat.Ignition")); //$NON-NLS-1$
Defender.sendMessage(mcLocale.getString("Combat.BurningArrowHit")); //$NON-NLS-1$
}
} else {
event.getEntity().setFireTicks(ignition);
attacker.sendMessage(mcLocale.getString("Combat.Ignition")); //$NON-NLS-1$
}
}
}
public static void dazeCheck(Player defender, Player attacker)
{
PlayerProfile PPa = Users.getProfile(attacker);
Location loc = defender.getLocation();
if(Math.random() * 10 > 5)
{
loc.setPitch(90);
} else {
loc.setPitch(-90);
}
if(PPa.getSkillLevel(SkillType.ARCHERY) >= 1000){
if(Math.random() * 1000 <= 500){
defender.teleport(loc);
defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
}
} else if(Math.random() * 2000 <= PPa.getSkillLevel(SkillType.ARCHERY)){
defender.teleport(loc);
defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}

View File

@ -0,0 +1,172 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
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.EntityDamageByEntityEvent;
import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.locale.mcLocale;
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.party.Party;
public class Axes {
public static void skullSplitterCheck(Player player){
PlayerProfile PP = Users.getProfile(player);
if(m.isAxes(player.getItemInHand()) && mcPermissions.getInstance().axesAbility(player)){
/*
* CHECK FOR AXE PREP MODE
*/
if(PP.getAxePreparationMode())
{
PP.setAxePreparationMode(false);
}
int ticks = 2;
int x = PP.getSkillLevel(SkillType.AXES);
while(x >= 50){
x-=50;
ticks++;
}
if(!PP.getSkullSplitterMode() && Skills.cooldownOver(player, (PP.getSkullSplitterDeactivatedTimeStamp()*1000), LoadProperties.skullSplitterCooldown))
{
player.sendMessage(mcLocale.getString("Skills.SkullSplitterOn"));
for(Player y : player.getWorld().getPlayers()){
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.SkullSplitterPlayer", new Object[] {player.getName()}));
}
PP.setSkullSplitterActivatedTimeStamp(System.currentTimeMillis());
PP.setSkullSplitterDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setSkullSplitterMode(true);
}
if(!PP.getSkullSplitterMode() && !Skills.cooldownOver(player, (PP.getSkullSplitterDeactivatedTimeStamp()*1000), LoadProperties.skullSplitterCooldown)){
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, (PP.getSkullSplitterDeactivatedTimeStamp()*1000), LoadProperties.skullSplitterCooldown)+"s)");
}
}
}
public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx)
{
Entity x = event.getEntity();
if(x instanceof Wolf){
Wolf wolf = (Wolf)x;
if(Taming.getOwner(wolf, pluginx) != null)
{
if(Taming.getOwner(wolf, pluginx) == attacker)
return;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx)))
return;
}
}
PlayerProfile PPa = Users.getProfile(attacker);
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
if(PPa.getSkillLevel(SkillType.AXES) >= 750){
if(Math.random() * 1000 <= 750){
if(x instanceof Player){
Player player = (Player)x;
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
}
if(x instanceof Player){
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
} else {
event.setDamage(event.getDamage() * 2);
}
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
}
} else if(Math.random() * 1000 <= PPa.getSkillLevel(SkillType.AXES)){
if(x instanceof Player){
Player player = (Player)x;
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
}
if(x instanceof Player){
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
} else {
event.setDamage(event.getDamage() * 2);
}
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
}
}
}
public static void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx)
{
int targets = 0;
if(event.getEntity() instanceof LivingEntity)
{
LivingEntity x = (LivingEntity) event.getEntity();
targets = m.getTier(attacker);
for(Entity derp : x.getWorld().getEntities())
{
if(m.getDistance(x.getLocation(), derp.getLocation()) < 5)
{
//Make sure the Wolf is not friendly
if(derp instanceof Wolf)
{
Wolf hurrDurr = (Wolf)derp;
if(Taming.getOwner(hurrDurr, pluginx) == attacker)
continue;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx)))
continue;
}
//Damage nearby LivingEntities
if(derp instanceof LivingEntity && targets >= 1)
{
if(derp instanceof Player)
{
Player target = (Player)derp;
if(Users.getProfile(target).getGodMode())
continue;
if(target.getName().equals(attacker.getName()))
continue;
if(Party.getInstance().inSameParty(attacker, target))
continue;
if(targets >= 1 && derp.getWorld().getPVP())
{
target.damage(event.getDamage() / 2);
target.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!");
targets--;
continue;
}
}
else
{
LivingEntity target = (LivingEntity)derp;
target.damage(event.getDamage() / 2);
targets--;
}
}
}
}
}
}
}

View File

@ -0,0 +1,5 @@
package com.gmail.nossr50.skills;
public class Enchanting {
}

View File

@ -0,0 +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 <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import java.util.ArrayList;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
public class Excavation
{
public static void gigaDrillBreakerActivationCheck(Player player, Block block)
{
PlayerProfile PP = Users.getProfile(player);
if(m.isShovel(player.getItemInHand()))
{
if(block != null)
{
if(!m.abilityBlockCheck(block))
return;
}
if(PP.getShovelPreparationMode())
{
PP.setShovelPreparationMode(false);
}
int ticks = 2;
int x = PP.getSkillLevel(SkillType.EXCAVATION);
while(x >= 50)
{
x-=50;
ticks++;
}
if(!PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() < System.currentTimeMillis())
{
player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOn"));
for(Player y : player.getWorld().getPlayers())
{
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerPlayer", new Object[] {player.getName()}));
}
PP.setGigaDrillBreakerActivatedTimeStamp(System.currentTimeMillis());
PP.setGigaDrillBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setGigaDrillBreakerMode(true);
}
}
}
public static boolean canBeGigaDrillBroken(Block block)
{
return block.getType() == Material.DIRT || block.getType() == Material.GRASS || block.getType() == Material.SAND || block.getType() == Material.GRAVEL || block.getType() == Material.CLAY;
}
public static void excavationProcCheck(byte data, Material type, Location loc, Player player)
{
if(LoadProperties.excavationRequiresShovel && !m.isShovel(player.getItemInHand()))
return;
PlayerProfile PP = Users.getProfile(player);
ArrayList<ItemStack> is = new ArrayList<ItemStack>();
int xp = 0;
switch(type)
{
case GRASS:
if(PP.getSkillLevel(SkillType.EXCAVATION) >= 250)
{
//CHANCE TO GET EGGS
if(LoadProperties.eggs == true && Math.random() * 100 > 99)
{
xp+= LoadProperties.meggs;
is.add(new ItemStack(Material.EGG, 1, (byte)0, (byte)0));
}
//CHANCE TO GET APPLES
if(LoadProperties.apples == true && Math.random() * 100 > 99)
{
xp+= LoadProperties.mapple;
is.add(new ItemStack(Material.APPLE, 1, (byte)0, (byte)0));
}
}
break;
case GRAVEL:
//CHANCE TO GET NETHERRACK
if(LoadProperties.netherrack == true && PP.getSkillLevel(SkillType.EXCAVATION) >= 850 && Math.random() * 200 > 199)
{
xp+= LoadProperties.mnetherrack;
is.add(new ItemStack(Material.NETHERRACK, 1, (byte)0, (byte)0));
}
//CHANCE TO GET SULPHUR
if(LoadProperties.sulphur == true && PP.getSkillLevel(SkillType.EXCAVATION) >= 75)
{
if(Math.random() * 10 > 9)
{
xp+= LoadProperties.msulphur;
is.add(new ItemStack(Material.SULPHUR, 1, (byte)0, (byte)0));
}
}
//CHANCE TO GET BONES
if(LoadProperties.bones == true && PP.getSkillLevel(SkillType.EXCAVATION) >= 175)
{
if(Math.random() * 10 > 9)
{
xp+= LoadProperties.mbones;
is.add(new ItemStack(Material.BONE, 1, (byte)0, (byte)0));
}
}
break;
case SAND:
//CHANCE TO GET GLOWSTONE
if(LoadProperties.glowstone == true && PP.getSkillLevel(SkillType.EXCAVATION) >= 50 && Math.random() * 100 > 95)
{
xp+= LoadProperties.mglowstone2;
is.add(new ItemStack(Material.GLOWSTONE_DUST, 1, (byte)0, (byte)0));
}
//CHANCE TO GET SOUL SAND
if(LoadProperties.slowsand == true && PP.getSkillLevel(SkillType.EXCAVATION) >= 650 && Math.random() * 200 > 199)
{
xp+= LoadProperties.mslowsand;
is.add(new ItemStack(Material.SOUL_SAND, 1, (byte)0, (byte)0));
}
break;
case CLAY:
if(LoadProperties.slimeballs && PP.getSkillLevel(SkillType.EXCAVATION) >= 50)
{
if(Math.random() * 20 > 19)
{
xp+= LoadProperties.mslimeballs;
is.add(new ItemStack(Material.SLIME_BALL, 1, (byte)0, (byte)0));
}
}
if(LoadProperties.string && PP.getSkillLevel(SkillType.EXCAVATION) >= 250)
{
if(Math.random() * 20 > 19)
{
xp+= LoadProperties.mstring;
is.add(new ItemStack(Material.STRING, 1, (byte)0, (byte)0));
}
}
if(LoadProperties.watch && PP.getSkillLevel(SkillType.EXCAVATION) >= 500)
{
if(Math.random() * 100 > 99)
{
xp+= LoadProperties.mwatch;
is.add(new ItemStack(Material.WATCH, 1, (byte)0));
}
}
if(LoadProperties.bucket && PP.getSkillLevel(SkillType.EXCAVATION) >= 500)
{
if(Math.random() * 100 > 99)
{
xp+= LoadProperties.mbucket;
is.add(new ItemStack(Material.BUCKET, 1, (byte)0, (byte)0));
}
}
if(LoadProperties.web && PP.getSkillLevel(SkillType.EXCAVATION) >= 750)
{
if(Math.random() * 20 > 19)
{
xp+= LoadProperties.mweb;
is.add(new ItemStack(Material.WEB, 1, (byte)0, (byte)0));
}
}
break;
}
//DIRT SAND OR GRAVEL
if(type == Material.GRASS || type == Material.DIRT || type == Material.GRAVEL || type == Material.SAND || type == Material.CLAY)
{
xp+= LoadProperties.mbase;
if(PP.getSkillLevel(SkillType.EXCAVATION) >= 750)
{
//CHANCE TO GET CAKE
if(LoadProperties.cake == true && Math.random() * 2000 > 1999)
{
xp+= LoadProperties.mcake;
is.add(new ItemStack(Material.CAKE, 1, (byte)0, (byte)0));
}
}
if(PP.getSkillLevel(SkillType.EXCAVATION) >= 350)
{
//CHANCE TO GET DIAMOND
if(LoadProperties.diamond == true && Math.random() * 750 > 749)
{
xp+= LoadProperties.mdiamond2;
is.add(new ItemStack(Material.DIAMOND, 1, (byte)0, (byte)0));
}
}
if(PP.getSkillLevel(SkillType.EXCAVATION) >= 250)
{
//CHANCE TO GET YELLOW MUSIC
if(LoadProperties.music == true && Math.random() * 2000 > 1999)
{
xp+= LoadProperties.mmusic;
is.add(new ItemStack(Material.GOLD_RECORD, 1, (byte)0, (byte)0));
}
}
if(PP.getSkillLevel(SkillType.EXCAVATION) >= 350)
{
//CHANCE TO GET GREEN MUSIC
if(LoadProperties.music == true && Math.random() * 2000 > 1999)
{
xp+= LoadProperties.mmusic;
is.add(new ItemStack(Material.GREEN_RECORD, 1, (byte)0, (byte)0));
}
}
}
//GRASS OR DIRT
if(type == Material.DIRT || type == Material.GRASS)
{
if(PP.getSkillLevel(SkillType.EXCAVATION) >= 50)
{
//CHANCE FOR COCOA BEANS
if(LoadProperties.cocoabeans == true && Math.random() * 75 > 74)
{
xp+= LoadProperties.mcocoa;
is.add(new ItemStack(Material.getMaterial(351), 1, (byte)0, (byte)3));
}
}
//CHANCE FOR SHROOMS
if(LoadProperties.mushrooms == true && PP.getSkillLevel(SkillType.EXCAVATION) >= 500 && Math.random() * 200 > 199)
{
xp+= LoadProperties.mmushroom2;
switch((int) Math.random() * 1)
{
case 0:
is.add(new ItemStack(Material.BROWN_MUSHROOM, 1, (byte)0, (byte)0));
break;
case 1:
is.add(new ItemStack(Material.RED_MUSHROOM, 1, (byte)0, (byte)0));
break;
}
}
//CHANCE TO GET GLOWSTONE
if(LoadProperties.glowstone == true && PP.getSkillLevel(SkillType.EXCAVATION) >= 25 && Math.random() * 100 > 95)
{
xp+= LoadProperties.mglowstone2;
is.add(new ItemStack(Material.GLOWSTONE_DUST, 1, (byte)0, (byte)0));
}
}
//Drop items
for(ItemStack x : is)
{
if(x != null)
loc.getWorld().dropItemNaturally(loc, x);
}
//Handle XP related tasks
PP.addXP(SkillType.EXCAVATION, xp, player);
Skills.XpCheckSkill(SkillType.EXCAVATION, player);
}
}

View File

@ -0,0 +1,800 @@
package com.gmail.nossr50.skills;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.entity.CraftItem;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Chicken;
import org.bukkit.entity.Cow;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Pig;
import org.bukkit.entity.Player;
import org.bukkit.entity.Sheep;
import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Spider;
import org.bukkit.event.player.PlayerFishEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.Wool;
import com.gmail.nossr50.Users;
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 Fishing {
//Return the fishing tier for the player
public static int getFishingLootTier(PlayerProfile PP)
{
int lvl = PP.getSkillLevel(SkillType.FISHING);
if(lvl < 100)
{
return 1;
} else if (lvl >= 100 && lvl < 300)
{
return 2;
} else if (lvl >= 300 && lvl < 600)
{
return 3;
} else if (lvl >= 600 && lvl < 900)
{
return 4;
} else
{
return 5;
}
}
public static short getItemMaxDurability(Material mat)
{
switch(mat)
{
case LEATHER_BOOTS:
return (short) 40;
case LEATHER_LEGGINGS:
return (short) 46;
case LEATHER_HELMET:
return (short) 34;
case LEATHER_CHESTPLATE:
return (short) 49;
case CHAINMAIL_BOOTS:
return (short) 79;
case CHAINMAIL_LEGGINGS:
return (short) 92;
case CHAINMAIL_HELMET:
return (short) 67;
case CHAINMAIL_CHESTPLATE:
return (short) 96;
case GOLD_BOOTS:
return (short) 80;
case GOLD_LEGGINGS:
return (short) 92;
case GOLD_HELMET:
return (short) 68;
case GOLD_CHESTPLATE:
return (short) 96;
case IRON_BOOTS:
return (short) 160;
case IRON_LEGGINGS:
return (short) 184;
case IRON_HELMET:
return (short) 136;
case IRON_CHESTPLATE:
return (short) 192;
case DIAMOND_BOOTS:
return (short) 320;
case DIAMOND_LEGGINGS:
return (short) 368;
case DIAMOND_HELMET:
return (short) 272;
case DIAMOND_CHESTPLATE:
return (short) 384;
case GOLD_AXE:
return (short) 33;
case GOLD_SWORD:
return (short) 33;
case GOLD_HOE:
return (short) 33;
case GOLD_SPADE:
return (short) 33;
case GOLD_PICKAXE:
return (short) 33;
case WOOD_AXE:
return (short) 60;
case WOOD_SWORD:
return (short) 60;
case WOOD_HOE:
return (short) 60;
case WOOD_SPADE:
return (short) 60;
case WOOD_PICKAXE:
return (short) 60;
case STONE_AXE:
return (short) 132;
case STONE_SWORD:
return (short) 132;
case STONE_HOE:
return (short) 132;
case STONE_SPADE:
return (short) 132;
case STONE_PICKAXE:
return (short) 132;
case IRON_AXE:
return (short) 251;
case IRON_SWORD:
return (short) 251;
case IRON_HOE:
return (short) 251;
case IRON_SPADE:
return (short) 251;
case IRON_PICKAXE:
return (short) 251;
case DIAMOND_AXE:
return (short) 1562;
case DIAMOND_SWORD:
return (short) 1562;
case DIAMOND_HOE:
return (short) 1562;
case DIAMOND_SPADE:
return (short) 1562;
case DIAMOND_PICKAXE:
return (short) 1562;
default:
return (short) 0;
}
}
public static void getFishingResults(Player player, PlayerFishEvent event)
{
switch(getFishingLootTier(Users.getProfile(player)))
{
case 1:
getFishingResultsTier1(player, event);
break;
case 2:
getFishingResultsTier2(player, event);
break;
case 3:
getFishingResultsTier3(player, event);
break;
case 4:
getFishingResultsTier4(player, event);
break;
case 5:
getFishingResultsTier5(player, event);
break;
}
player.getWorld().dropItem(player.getLocation(), new ItemStack(Material.RAW_FISH, 1));
Users.getProfile(player).addXP(SkillType.FISHING, LoadProperties.mfishing, player);
Skills.XpCheckSkill(SkillType.FISHING, player);
}
private static void getFishingResultsTier1(Player player, PlayerFishEvent event)
{
int randomNum = (int)(Math.random() * 14);
CraftItem theCatch = (CraftItem)event.getCaught();
if(Math.random() * 100 < 20)
{
switch(randomNum)
{
case 1:
theCatch.setItemStack(new ItemStack(Material.LEATHER_BOOTS, 1));
break;
case 2:
theCatch.setItemStack(new ItemStack(Material.LEATHER_HELMET, 1));
break;
case 3:
theCatch.setItemStack(new ItemStack(Material.LEATHER_LEGGINGS, 1));
break;
case 4:
theCatch.setItemStack(new ItemStack(Material.LEATHER_CHESTPLATE, 1));
break;
case 5:
theCatch.setItemStack(new ItemStack(Material.WOOD_AXE, 1));
break;
case 6:
theCatch.setItemStack(new ItemStack(Material.WOOD_PICKAXE, 1));
break;
case 7:
theCatch.setItemStack(new ItemStack(Material.WOOD_SWORD, 1));
break;
case 8:
theCatch.setItemStack(new ItemStack(Material.WOOD_HOE, 1));
break;
case 9:
theCatch.setItemStack(new ItemStack(Material.WOOD_SPADE, 1));
break;
case 10:
theCatch.setItemStack(new ItemStack(Material.STONE_AXE, 1));
break;
case 11:
theCatch.setItemStack(new ItemStack(Material.STONE_PICKAXE, 1));
break;
case 12:
theCatch.setItemStack(new ItemStack(Material.STONE_SWORD, 1));
break;
case 13:
theCatch.setItemStack(new ItemStack(Material.STONE_HOE, 1));
break;
case 14:
theCatch.setItemStack(new ItemStack(Material.STONE_SPADE, 1));
break;
}
} else
{
theCatch.setItemStack(new ItemStack(Material.RAW_FISH));
}
//Change durability to random value
theCatch.getItemStack().setDurability((short) (Math.random() * Fishing.getItemMaxDurability(theCatch.getItemStack().getType()))); //Change the damage value
}
private static void getFishingResultsTier2(Player player, PlayerFishEvent event)
{
int randomNum = (int)(Math.random() * 19);
CraftItem theCatch = (CraftItem)event.getCaught();
if(Math.random() * 100 < 25)
{
switch(randomNum)
{
case 1:
theCatch.setItemStack(new ItemStack(Material.LEATHER_BOOTS, 1));
break;
case 2:
theCatch.setItemStack(new ItemStack(Material.LEATHER_HELMET, 1));
break;
case 3:
theCatch.setItemStack(new ItemStack(Material.LEATHER_LEGGINGS, 1));
break;
case 4:
theCatch.setItemStack(new ItemStack(Material.LEATHER_CHESTPLATE, 1));
break;
case 5:
theCatch.setItemStack(new ItemStack(Material.IRON_AXE, 1));
break;
case 6:
theCatch.setItemStack(new ItemStack(Material.IRON_PICKAXE, 1));
break;
case 7:
theCatch.setItemStack(new ItemStack(Material.IRON_SWORD, 1));
break;
case 8:
theCatch.setItemStack(new ItemStack(Material.IRON_HOE, 1));
break;
case 9:
theCatch.setItemStack(new ItemStack(Material.IRON_SPADE, 1));
break;
case 10:
theCatch.setItemStack(new ItemStack(Material.STONE_AXE, 1));
break;
case 11:
theCatch.setItemStack(new ItemStack(Material.STONE_PICKAXE, 1));
break;
case 12:
theCatch.setItemStack(new ItemStack(Material.STONE_SWORD, 1));
break;
case 13:
theCatch.setItemStack(new ItemStack(Material.STONE_HOE, 1));
break;
case 14:
theCatch.setItemStack(new ItemStack(Material.STONE_SPADE, 1));
break;
case 15:
theCatch.setItemStack(new ItemStack(Material.IRON_BOOTS, 1));
break;
case 16:
theCatch.setItemStack(new ItemStack(Material.IRON_LEGGINGS, 1));
break;
case 17:
theCatch.setItemStack(new ItemStack(Material.IRON_CHESTPLATE, 1));
break;
case 18:
theCatch.setItemStack(new ItemStack(Material.IRON_HELMET, 1));
break;
case 19:
theCatch.setItemStack(new ItemStack(Material.ENDER_PEARL, 1));
break;
}
} else
{
theCatch.setItemStack(new ItemStack(Material.RAW_FISH, 1));
}
//Change durability to random value
theCatch.getItemStack().setDurability((short) (Math.random() * Fishing.getItemMaxDurability(theCatch.getItemStack().getType())));
}
private static void getFishingResultsTier3(Player player, PlayerFishEvent event)
{
int randomNum = (int)(Math.random() * 23);
CraftItem theCatch = (CraftItem)event.getCaught();
if(Math.random() * 100 < 30)
{
switch(randomNum)
{
case 1:
theCatch.setItemStack(new ItemStack(Material.GOLD_BOOTS, 1));
break;
case 2:
theCatch.setItemStack(new ItemStack(Material.GOLD_HELMET, 1));
break;
case 3:
theCatch.setItemStack(new ItemStack(Material.GOLD_LEGGINGS, 1));
break;
case 4:
theCatch.setItemStack(new ItemStack(Material.GOLD_CHESTPLATE, 1));
break;
case 5:
theCatch.setItemStack(new ItemStack(Material.IRON_AXE, 1));
break;
case 6:
theCatch.setItemStack(new ItemStack(Material.IRON_PICKAXE, 1));
break;
case 7:
theCatch.setItemStack(new ItemStack(Material.IRON_SWORD, 1));
break;
case 8:
theCatch.setItemStack(new ItemStack(Material.IRON_HOE, 1));
break;
case 9:
theCatch.setItemStack(new ItemStack(Material.IRON_SPADE, 1));
break;
case 10:
theCatch.setItemStack(new ItemStack(Material.GOLD_AXE, 1));
break;
case 11:
theCatch.setItemStack(new ItemStack(Material.GOLD_PICKAXE, 1));
break;
case 12:
theCatch.setItemStack(new ItemStack(Material.GOLD_SWORD, 1));
break;
case 13:
theCatch.setItemStack(new ItemStack(Material.GOLD_HOE, 1));
break;
case 14:
theCatch.setItemStack(new ItemStack(Material.GOLD_SPADE, 1));
break;
case 15:
theCatch.setItemStack(new ItemStack(Material.IRON_BOOTS, 1));
break;
case 16:
theCatch.setItemStack(new ItemStack(Material.IRON_LEGGINGS, 1));
break;
case 17:
theCatch.setItemStack(new ItemStack(Material.IRON_CHESTPLATE, 1));
break;
case 18:
theCatch.setItemStack(new ItemStack(Material.IRON_HELMET, 1));
break;
case 19:
theCatch.setItemStack(new ItemStack(Material.ENDER_PEARL, 1));
break;
case 20:
theCatch.setItemStack(new ItemStack(Material.BLAZE_ROD, 1));
break;
case 21:
theCatch.setItemStack(new ItemStack(Material.RECORD_3, 1));
break;
case 22:
theCatch.setItemStack(new ItemStack(Material.RECORD_4, 1));
break;
case 23:
theCatch.setItemStack(new ItemStack(Material.RECORD_5, 1));
break;
}
}
else
{
theCatch.setItemStack(new ItemStack(Material.RAW_FISH, 1));
}
//Change durability to random value
theCatch.getItemStack().setDurability((short) (Math.random() * Fishing.getItemMaxDurability(theCatch.getItemStack().getType())));
}
private static void getFishingResultsTier4(Player player, PlayerFishEvent event)
{
int randomNum = (int)(Math.random() * 40);
CraftItem theCatch = (CraftItem)event.getCaught();
if(Math.random() * 100 < 35)
{
switch(randomNum)
{
case 1:
theCatch.setItemStack(new ItemStack(Material.GOLD_BOOTS, 1));
break;
case 2:
theCatch.setItemStack(new ItemStack(Material.GOLD_HELMET, 1));
break;
case 3:
theCatch.setItemStack(new ItemStack(Material.GOLD_LEGGINGS, 1));
break;
case 4:
theCatch.setItemStack(new ItemStack(Material.GOLD_CHESTPLATE, 1));
break;
case 5:
theCatch.setItemStack(new ItemStack(Material.IRON_AXE, 1));
break;
case 6:
theCatch.setItemStack(new ItemStack(Material.IRON_PICKAXE, 1));
break;
case 7:
theCatch.setItemStack(new ItemStack(Material.IRON_SWORD, 1));
break;
case 8:
theCatch.setItemStack(new ItemStack(Material.IRON_HOE, 1));
break;
case 9:
theCatch.setItemStack(new ItemStack(Material.IRON_SPADE, 1));
break;
case 10:
theCatch.setItemStack(new ItemStack(Material.GOLD_AXE, 1));
break;
case 11:
theCatch.setItemStack(new ItemStack(Material.GOLD_PICKAXE, 1));
break;
case 12:
theCatch.setItemStack(new ItemStack(Material.GOLD_SWORD, 1));
break;
case 13:
theCatch.setItemStack(new ItemStack(Material.GOLD_HOE, 1));
break;
case 14:
theCatch.setItemStack(new ItemStack(Material.GOLD_SPADE, 1));
break;
case 15:
theCatch.setItemStack(new ItemStack(Material.IRON_BOOTS, 1));
break;
case 16:
theCatch.setItemStack(new ItemStack(Material.IRON_LEGGINGS, 1));
break;
case 17:
theCatch.setItemStack(new ItemStack(Material.IRON_CHESTPLATE, 1));
break;
case 18:
theCatch.setItemStack(new ItemStack(Material.IRON_HELMET, 1));
break;
case 19:
theCatch.setItemStack(new ItemStack(Material.ENDER_PEARL, 1));
break;
case 20:
theCatch.setItemStack(new ItemStack(Material.BLAZE_ROD, 1));
break;
case 21:
theCatch.setItemStack(new ItemStack(Material.RECORD_3, 1));
break;
case 22:
theCatch.setItemStack(new ItemStack(Material.RECORD_4, 1));
break;
case 23:
theCatch.setItemStack(new ItemStack(Material.RECORD_5, 1));
break;
case 24:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_BOOTS, 1));
break;
case 25:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_HELMET, 1));
break;
case 26:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
break;
case 27:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
break;
case 28:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_AXE, 1));
break;
case 29:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_PICKAXE, 1));
break;
case 30:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_SWORD, 1));
break;
case 31:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_HOE, 1));
break;
case 32:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_SPADE, 1));
break;
case 33:
theCatch.setItemStack(new ItemStack(Material.RECORD_6, 1));
break;
case 34:
theCatch.setItemStack(new ItemStack(Material.RECORD_7, 1));
break;
case 35:
theCatch.setItemStack(new ItemStack(Material.RECORD_8, 1));
break;
case 36:
theCatch.setItemStack(new ItemStack(Material.RECORD_9, 1));
break;
case 37:
theCatch.setItemStack(new ItemStack(Material.RECORD_10, 1));
break;
case 38:
theCatch.setItemStack(new ItemStack(Material.RECORD_11, 1));
break;
case 39:
theCatch.setItemStack(new ItemStack(Material.REDSTONE_WIRE, 64));
break;
case 40:
theCatch.setItemStack(new ItemStack(Material.DIAMOND, (int)(Math.random() * 10)));
break;
}
} else
{
theCatch.setItemStack(new ItemStack(Material.RAW_FISH, 1));
}
//Change durability to random value
theCatch.getItemStack().setDurability((short) (Math.random() * Fishing.getItemMaxDurability(theCatch.getItemStack().getType())));
}
private static void getFishingResultsTier5(Player player, PlayerFishEvent event)
{
int randomNum = (int)(Math.random() * 49);
CraftItem theCatch = (CraftItem)event.getCaught();
if(Math.random() * 100 < 40)
{
switch(randomNum)
{
case 1:
theCatch.setItemStack(new ItemStack(Material.GOLD_BOOTS, 1));
break;
case 2:
theCatch.setItemStack(new ItemStack(Material.GOLD_HELMET, 1));
break;
case 3:
theCatch.setItemStack(new ItemStack(Material.GOLD_LEGGINGS, 1));
break;
case 4:
theCatch.setItemStack(new ItemStack(Material.GOLD_CHESTPLATE, 1));
break;
case 5:
theCatch.setItemStack(new ItemStack(Material.IRON_AXE, 1));
break;
case 6:
theCatch.setItemStack(new ItemStack(Material.IRON_PICKAXE, 1));
break;
case 7:
theCatch.setItemStack(new ItemStack(Material.IRON_SWORD, 1));
break;
case 8:
theCatch.setItemStack(new ItemStack(Material.IRON_HOE, 1));
break;
case 9:
theCatch.setItemStack(new ItemStack(Material.IRON_SPADE, 1));
break;
case 10:
theCatch.setItemStack(new ItemStack(Material.GOLD_AXE, 1));
break;
case 11:
theCatch.setItemStack(new ItemStack(Material.GOLD_PICKAXE, 1));
break;
case 12:
theCatch.setItemStack(new ItemStack(Material.GOLD_SWORD, 1));
break;
case 13:
theCatch.setItemStack(new ItemStack(Material.GOLD_HOE, 1));
break;
case 14:
theCatch.setItemStack(new ItemStack(Material.GOLD_SPADE, 1));
break;
case 15:
theCatch.setItemStack(new ItemStack(Material.IRON_BOOTS, 1));
break;
case 16:
theCatch.setItemStack(new ItemStack(Material.IRON_LEGGINGS, 1));
break;
case 17:
theCatch.setItemStack(new ItemStack(Material.IRON_CHESTPLATE, 1));
break;
case 18:
theCatch.setItemStack(new ItemStack(Material.IRON_HELMET, 1));
break;
case 19:
theCatch.setItemStack(new ItemStack(Material.ENDER_PEARL, 1));
break;
case 20:
theCatch.setItemStack(new ItemStack(Material.BLAZE_ROD, 1));
break;
case 21:
theCatch.setItemStack(new ItemStack(Material.RECORD_3, 1));
break;
case 22:
theCatch.setItemStack(new ItemStack(Material.RECORD_4, 1));
break;
case 23:
theCatch.setItemStack(new ItemStack(Material.RECORD_5, 1));
break;
case 24:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_BOOTS, 1));
break;
case 25:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_HELMET, 1));
break;
case 26:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
break;
case 27:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
break;
case 28:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_AXE, 1));
break;
case 29:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_PICKAXE, 1));
break;
case 30:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_SWORD, 1));
break;
case 31:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_HOE, 1));
break;
case 32:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_SPADE, 1));
break;
case 33:
theCatch.setItemStack(new ItemStack(Material.RECORD_6, 1));
break;
case 34:
theCatch.setItemStack(new ItemStack(Material.RECORD_7, 1));
break;
case 35:
theCatch.setItemStack(new ItemStack(Material.RECORD_8, 1));
break;
case 36:
theCatch.setItemStack(new ItemStack(Material.RECORD_9, 1));
break;
case 37:
theCatch.setItemStack(new ItemStack(Material.RECORD_10, 1));
break;
case 38:
theCatch.setItemStack(new ItemStack(Material.RECORD_11, 1));
break;
case 39:
theCatch.setItemStack(new ItemStack(Material.REDSTONE_WIRE, 64));
break;
case 40:
theCatch.setItemStack(new ItemStack(Material.DIAMOND, (int)(Math.random() * 20)));
break;
case 41:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_BOOTS, 1));
break;
case 42:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_HELMET, 1));
break;
case 43:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
break;
case 44:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
break;
case 45:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_AXE, 1));
break;
case 46:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_PICKAXE, 1));
break;
case 47:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_SWORD, 1));
break;
case 48:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_HOE, 1));
break;
case 49:
theCatch.setItemStack(new ItemStack(Material.DIAMOND_SPADE, 1));
break;
}
} else {
theCatch.setItemStack(new ItemStack(Material.RAW_FISH, 1));
}
//Change durability to random value
theCatch.getItemStack().setDurability((short) (Math.random() * Fishing.getItemMaxDurability(theCatch.getItemStack().getType())));
}
public static void processResults(PlayerFishEvent event)
{
Player player = event.getPlayer();
PlayerProfile PP = Users.getProfile(player);
Fishing.getFishingResults(player, event);
CraftItem theCatch = (CraftItem)event.getCaught();
if(theCatch.getItemStack().getType() != Material.RAW_FISH)
{
//Inform the player they retrieved a treasure...
player.sendMessage(mcLocale.getString("Fishing.ItemFound"));
//Keep track of whether or not the treasure is enchanted
boolean enchanted = false;
ItemStack fishingResults = theCatch.getItemStack();
if(Repair.isArmor(fishingResults) || Repair.isTools(fishingResults))
{
//Fishing up items will have a 10% chance to enter them into random enchantment lottery
if(Math.random() * 100 < 10)
{
for(Enchantment x : Enchantment.values())
{
if(x.canEnchantItem(fishingResults))
{
//Actual chance to have an enchantment is related to your fishing skill
if(Math.random() * 15 < Fishing.getFishingLootTier(PP))
{
enchanted = true;
int randomEnchantLevel = (int) Math.random() * x.getMaxLevel();
if(randomEnchantLevel == 0)
randomEnchantLevel = 1;
if(randomEnchantLevel > x.getMaxLevel())
randomEnchantLevel = x.getMaxLevel();
fishingResults.addEnchantment(x, randomEnchantLevel);
}
}
}
}
}
//Inform the player of magical properties
if(enchanted)
{
player.sendMessage(mcLocale.getString("Fishing.MagicFound"));
}
}
}
public static void shakeMob(PlayerFishEvent event)
{
LivingEntity le = (LivingEntity)event.getCaught();
if(le instanceof Player)
return;
le.damage(1);
World world = le.getWorld();
if(le instanceof Sheep)
{
Sheep sheep = (Sheep)le;
if(!sheep.isSheared())
{
Wool wool = new Wool();
wool.setColor(sheep.getColor());
ItemStack theWool = wool.toItemStack();
theWool.setAmount((int)(Math.random() * 6));
world.dropItemNaturally(le.getLocation(), theWool);
sheep.setSheared(true);
}
} else if(le instanceof Pig)
{
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.PORK, 1));
} else if(le instanceof Skeleton)
{
if(Math.random() * 10 < 5)
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.BONE, 1));
else
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.ARROW, 3));
} else if(le instanceof Cow)
{
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.LEATHER, 1));
} else if(le instanceof Spider)
{
if(Math.random() * 10 < 5)
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.SPIDER_EYE, 1));
else
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.STRING, 1));
} else if(le instanceof Chicken)
{
if(Math.random() * 10 < 5)
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.FEATHER, 1));
else
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.EGG, 1));
} else if(le instanceof Creeper)
{
world.dropItemNaturally(le.getLocation(), new ItemStack(Material.SULPHUR, 1));
}
}
}

View File

@ -0,0 +1,338 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
public class Herbalism
{
public static void greenTerraCheck(Player player, Block block)
{
PlayerProfile PP = Users.getProfile(player);
if(m.isHoe(player.getItemInHand()))
{
if(block != null)
{
if(!m.abilityBlockCheck(block))
return;
}
if(PP.getHoePreparationMode())
{
PP.setHoePreparationMode(false);
}
int ticks = 2;
int x = PP.getSkillLevel(SkillType.HERBALISM);
while(x >= 50)
{
x-=50;
ticks++;
}
if(!PP.getGreenTerraMode() && Skills.cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown))
{
player.sendMessage(mcLocale.getString("Skills.GreenTerraOn"));
for(Player y : player.getWorld().getPlayers())
{
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.GreenTerraPlayer", new Object[] {player.getName()}));
}
PP.setGreenTerraActivatedTimeStamp(System.currentTimeMillis());
PP.setGreenTerraDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setGreenTerraMode(true);
}
}
}
public static void greenTerraWheat(Player player, Block block, BlockBreakEvent event, mcMMO plugin)
{
if(block.getType() == Material.WHEAT && block.getData() == (byte) 0x07)
{
event.setCancelled(true);
PlayerProfile PP = Users.getProfile(player);
Material mat = Material.getMaterial(296);
Location loc = block.getLocation();
ItemStack is = new ItemStack(mat, 1, (byte)0, (byte)0);
PP.addXP(SkillType.HERBALISM, LoadProperties.mwheat, player);
loc.getWorld().dropItemNaturally(loc, is);
//DROP SOME SEEDS
mat = Material.SEEDS;
is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is);
herbalismProcCheck(block, player, event, plugin);
herbalismProcCheck(block, player, event, plugin);
block.setData((byte) 0x03);
}
}
public static void greenTerra(Player player, Block block){
if(block.getType() == Material.COBBLESTONE || block.getType() == Material.DIRT){
if(!hasSeeds(player))
player.sendMessage("You need more seeds to spread Green Terra");
if(hasSeeds(player) && block.getType() != Material.WHEAT)
{
removeSeeds(player);
if(block.getType() == Material.SMOOTH_BRICK)
block.setData((byte)1);
if(block.getType() == Material.DIRT)
block.setType(Material.GRASS);
if(LoadProperties.enableCobbleToMossy && block.getType() == Material.COBBLESTONE)
block.setType(Material.MOSSY_COBBLESTONE);
}
}
}
public static Boolean canBeGreenTerra(Block block){
int t = block.getTypeId();
if(t == 103 || t == 4 || t == 3 || t == 59 || t == 81 || t == 83 || t == 91 || t == 86 || t == 39 || t == 46 || t == 37 || t == 38){
return true;
} else {
return false;
}
}
public static boolean hasSeeds(Player player){
ItemStack[] inventory = player.getInventory().getContents();
for(ItemStack x : inventory){
if(x != null && x.getTypeId() == 295){
return true;
}
}
return false;
}
public static void removeSeeds(Player player){
ItemStack[] inventory = player.getInventory().getContents();
for(ItemStack x : inventory){
if(x != null && x.getTypeId() == 295){
if(x.getAmount() == 1){
x.setTypeId(0);
x.setAmount(0);
player.getInventory().setContents(inventory);
} else{
x.setAmount(x.getAmount() - 1);
player.getInventory().setContents(inventory);
}
return;
}
}
}
public static void herbalismProcCheck(Block block, Player player, BlockBreakEvent event, mcMMO plugin)
{
PlayerProfile PP = Users.getProfile(player);
int type = block.getTypeId();
Location loc = block.getLocation();
ItemStack is = null;
Material mat = null;
if(plugin.misc.blockWatchList.contains(block))
{
return;
}
if(type == 59 && block.getData() == (byte) 0x7)
{
mat = Material.getMaterial(296);
is = new ItemStack(mat, 1, (byte)0, (byte)0);
PP.addXP(SkillType.HERBALISM, LoadProperties.mwheat, player);
if(player != null)
{
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM))
{
loc.getWorld().dropItemNaturally(loc, is);
}
}
//GREEN THUMB
if(Math.random() * 1500 <= PP.getSkillLevel(SkillType.HERBALISM))
{
event.setCancelled(true);
loc.getWorld().dropItemNaturally(loc, is);
//DROP SOME SEEDS
mat = Material.SEEDS;
is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is);
block.setData((byte) 0x1); //Change it to first stage
//Setup the bonuses
int bonus = 0;
if(PP.getSkillLevel(SkillType.HERBALISM) >= 200)
bonus++;
if(PP.getSkillLevel(SkillType.HERBALISM) >= 400)
bonus++;
if(PP.getSkillLevel(SkillType.HERBALISM) >= 600)
bonus++;
//Change wheat to be whatever stage based on the bonus
if(bonus == 1)
block.setData((byte) 0x2);
if(bonus == 2)
block.setData((byte) 0x3);
if(bonus == 3)
block.setData((byte) 0x4);
}
}
/*
* We need to check not-wheat stuff for if it was placed by the player or not
*/
if(block.getData() != (byte) 5)
{
//Cactus
if(type == 81){
//Setup the loop
World world = block.getWorld();
Block[] blockArray = new Block[3];
blockArray[0] = block;
blockArray[1] = world.getBlockAt(block.getX(), block.getY()+1, block.getZ());
blockArray[2] = world.getBlockAt(block.getX(), block.getY()+2, block.getZ());
Material[] materialArray = new Material[3];
materialArray[0] = blockArray[0].getType();
materialArray[1] = blockArray[1].getType();
materialArray[2] = blockArray[2].getType();
byte[] byteArray = new byte[3];
byteArray[0] = blockArray[0].getData();
byteArray[1] = blockArray[0].getData();
byteArray[2] = blockArray[0].getData();
int x = 0;
for(Block target : blockArray)
{
if(materialArray[x] == Material.CACTUS)
{
is = new ItemStack(Material.CACTUS, 1, (byte)0, (byte)0);
if(byteArray[x] != (byte) 5)
{
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM))
{
loc.getWorld().dropItemNaturally(target.getLocation(), is);
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mcactus, player);
}
}
x++;
}
}
//Sugar Canes
if(type == 83)
{
//Setup the loop
World world = block.getWorld();
Block[] blockArray = new Block[3];
blockArray[0] = block;
blockArray[1] = world.getBlockAt(block.getX(), block.getY()+1, block.getZ());
blockArray[2] = world.getBlockAt(block.getX(), block.getY()+2, block.getZ());
Material[] materialArray = new Material[3];
materialArray[0] = blockArray[0].getType();
materialArray[1] = blockArray[1].getType();
materialArray[2] = blockArray[2].getType();
byte[] byteArray = new byte[3];
byteArray[0] = blockArray[0].getData();
byteArray[1] = blockArray[0].getData();
byteArray[2] = blockArray[0].getData();
int x = 0;
for(Block target : blockArray)
{
if(materialArray[x] == Material.SUGAR_CANE_BLOCK)
{
is = new ItemStack(Material.SUGAR_CANE, 1, (byte)0, (byte)0);
//Check for being placed by the player
if(byteArray[x] != (byte) 5)
{
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM))
{
loc.getWorld().dropItemNaturally(target.getLocation(), is);
}
PP.addXP(SkillType.HERBALISM, LoadProperties.msugar, player);
}
}
x++;
}
}
//Pumpkins
if((type == 91 || type == 86))
{
mat = Material.getMaterial(block.getTypeId());
is = new ItemStack(mat, 1, (byte)0, (byte)0);
if(player != null)
{
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM))
{
loc.getWorld().dropItemNaturally(loc, is);
}
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mpumpkin, player);
}
//Melon
if(type == 103)
{
mat = Material.getMaterial(block.getTypeId());
is = new ItemStack(mat, 1, (byte)0, (byte)0);
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM))
{
loc.getWorld().dropItemNaturally(loc, is);
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mmelon, player);
}
//Mushroom
if(type == 39 || type == 40)
{
mat = Material.getMaterial(block.getTypeId());
is = new ItemStack(mat, 1, (byte)0, (byte)0);
if(player != null)
{
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM))
{
loc.getWorld().dropItemNaturally(loc, is);
}
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mmushroom, player);
}
//Flower
if(type == 37 || type == 38){
mat = Material.getMaterial(block.getTypeId());
is = new ItemStack(mat, 1, (byte)0, (byte)0);
if(player != null){
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM)){
loc.getWorld().dropItemNaturally(loc, is);
}
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mflower, player);
}
}
Skills.XpCheckSkill(SkillType.HERBALISM, player);
}
}

View File

@ -0,0 +1,440 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import net.minecraft.server.Enchantment;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.getspout.spoutapi.sound.SoundEffect;
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;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
public class Mining
{
public static void superBreakerCheck(Player player, Block block)
{
PlayerProfile PP = Users.getProfile(player);
if(m.isMiningPick(player.getItemInHand()))
{
if(block != null)
{
if(!m.abilityBlockCheck(block))
return;
}
if(PP.getPickaxePreparationMode())
{
PP.setPickaxePreparationMode(false);
}
int ticks = 2;
int x = PP.getSkillLevel(SkillType.MINING);
while(x >= 50)
{
x-=50;
ticks++;
}
if(!PP.getSuperBreakerMode() && Skills.cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
player.sendMessage(mcLocale.getString("Skills.SuperBreakerOn"));
for(Player y : player.getWorld().getPlayers())
{
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.SuperBreakerPlayer", new Object[] {player.getName()}));
}
PP.setSuperBreakerActivatedTimeStamp(System.currentTimeMillis());
PP.setSuperBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setSuperBreakerMode(true);
}
}
}
public static void blockProcSimulate(Block block)
{
Location loc = block.getLocation();
Material mat = Material.getMaterial(block.getTypeId());
byte damage = 0;
ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
if(block.getTypeId() != 89 && block.getTypeId() != 73 && block.getTypeId() != 74 && block.getTypeId() != 56
&& block.getTypeId() != 21 && block.getTypeId() != 1 && block.getTypeId() != 16)
loc.getWorld().dropItemNaturally(loc, item);
if(block.getTypeId() == 89)
{
mat = Material.getMaterial(348);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
}
if(block.getTypeId() == 73 || block.getTypeId() == 74)
{
mat = Material.getMaterial(331);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
if(Math.random() * 10 > 5){
loc.getWorld().dropItemNaturally(loc, item);
}
}
if(block.getTypeId() == 21)
{
mat = Material.getMaterial(351);
item = new ItemStack(mat, 1, (byte)0,(byte)0x4);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
}
if(block.getTypeId() == 56)
{
mat = Material.getMaterial(264);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
}
if(block.getTypeId() == 1)
{
mat = Material.getMaterial(4);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
}
if(block.getTypeId() == 16)
{
mat = Material.getMaterial(263);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
}
}
public static void blockProcCheck(Block block, Player player)
{
PlayerProfile PP = Users.getProfile(player);
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.MINING))
{
blockProcSimulate(block);
return;
}
}
public static void miningBlockCheck(Boolean smelt, Player player, Block block, mcMMO plugin)
{
PlayerProfile PP = Users.getProfile(player);
if(plugin.misc.blockWatchList.contains(block) || block.getData() == (byte) 5)
return;
int xp = 0;
if(block.getTypeId() == 1 || block.getTypeId() == 24)
{
xp += LoadProperties.mstone;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//OBSIDIAN
if(block.getTypeId() == 49)
{
xp += LoadProperties.mobsidian;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//NETHERRACK
if(block.getTypeId() == 87)
{
xp += LoadProperties.mnetherrack;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//GLOWSTONE
if(block.getTypeId() == 89)
{
xp += LoadProperties.mglowstone;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//COAL
if(block.getTypeId() == 16)
{
xp += LoadProperties.mcoal;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//GOLD
if(block.getTypeId() == 14)
{
xp += LoadProperties.mgold;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//DIAMOND
if(block.getTypeId() == 56){
xp += LoadProperties.mdiamond;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//IRON
if(block.getTypeId() == 15)
{
xp += LoadProperties.miron;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//REDSTONE
if(block.getTypeId() == 73 || block.getTypeId() == 74)
{
xp += LoadProperties.mredstone;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
//LAPUS
if(block.getTypeId() == 21)
{
xp += LoadProperties.mlapis;
if(smelt = false)
blockProcCheck(block, player);
else
blockProcCheck(block, player);
}
PP.addXP(SkillType.MINING, xp, player);
Skills.XpCheckSkill(SkillType.MINING, player);
}
/*
* Handling SuperBreaker stuff
*/
public static Boolean canBeSuperBroken(Block block)
{
int t = block.getTypeId();
if(t == 49 || t == 87 || t == 89 || t == 73 || t == 74 || t == 56 || t == 21 || t == 1 || t == 16 || t == 14 || t == 15)
{
return true;
} else {
return false;
}
}
public static void SuperBreakerBlockCheck(Player player, Block block, mcMMO plugin)
{
PlayerProfile PP = Users.getProfile(player);
if(LoadProperties.toolsLoseDurabilityFromAbilities)
{
if(player.getItemInHand().getEnchantments().containsKey(Enchantment.DURABILITY))
{
}
m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss);
}
Location loc = block.getLocation();
Material mat = Material.getMaterial(block.getTypeId());
int xp = 0;
byte damage = 0;
ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
if(block.getTypeId() == 1 || block.getTypeId() == 24)
{
if(block.getTypeId() == 1)
{
mat = Material.COBBLESTONE;
if(!plugin.misc.blockWatchList.contains(block) && block.getData() != (byte) 5)
{
xp += LoadProperties.mstone;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
} else
{
mat = Material.SANDSTONE;
if(!plugin.misc.blockWatchList.contains(block) && block.getData() != (byte) 5)
{
xp += LoadProperties.msandstone;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
}
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//NETHERRACK
if(block.getTypeId() == 87)
{
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += LoadProperties.mnetherrack;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
mat = Material.getMaterial(87);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//GLOWSTONE
if(block.getTypeId() == 89)
{
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += LoadProperties.mglowstone;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
mat = Material.getMaterial(348);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//COAL
if(block.getTypeId() == 16)
{
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += LoadProperties.mcoal;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
mat = Material.getMaterial(263);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//GOLD
if(block.getTypeId() == 14 && m.getTier(player) >= 3)
{
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += LoadProperties.mgold;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//OBSIDIAN
if(block.getTypeId() == 49 && m.getTier(player) >= 4)
{
if(LoadProperties.toolsLoseDurabilityFromAbilities)
m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss);
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += LoadProperties.mobsidian;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
mat = Material.getMaterial(49);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//DIAMOND
if(block.getTypeId() == 56 && m.getTier(player) >= 3)
{
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += LoadProperties.mdiamond;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
mat = Material.getMaterial(264);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//IRON
if(block.getTypeId() == 15 && m.getTier(player) >= 2)
{
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += LoadProperties.miron;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//REDSTONE
if((block.getTypeId() == 73 || block.getTypeId() == 74) && m.getTier(player) >= 4)
{
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5)
{
xp += LoadProperties.mredstone;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
mat = Material.getMaterial(331);
item = new ItemStack(mat, 1, (byte)0, damage);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
if(Math.random() * 10 > 5)
{
loc.getWorld().dropItemNaturally(loc, item);
}
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
//LAPUS
if(block.getTypeId() == 21 && m.getTier(player) >= 3){
if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += LoadProperties.mlapis;
blockProcCheck(block, player);
blockProcCheck(block, player);
}
mat = Material.getMaterial(351);
item = new ItemStack(mat, 1, (byte)0,(byte)0x4);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
loc.getWorld().dropItemNaturally(loc, item);
player.incrementStatistic(Statistic.MINE_BLOCK, block.getType());
block.setType(Material.AIR);
}
if(block.getData() != (byte) 5)
PP.addXP(SkillType.MINING, xp, player);
if(LoadProperties.spoutEnabled)
SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());
Skills.XpCheckSkill(SkillType.MINING, player);
}
}

View File

@ -0,0 +1,624 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
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.spout.SpoutStuff;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
public class Repair {
/*
* Repair requirements for each material
*/
private static int rGold = LoadProperties.rGold;
private static String nGold = LoadProperties.nGold;
private static int rStone = LoadProperties.rStone;
private static String nStone = LoadProperties.nStone;
private static int rWood = LoadProperties.rWood;
private static String nWood = LoadProperties.nWood;
private static int rDiamond = LoadProperties.rDiamond;
private static String nDiamond = LoadProperties.nDiamond;
private static int rIron = LoadProperties.rIron;
private static String nIron = LoadProperties.nIron;
public static void repairCheck(Player player, ItemStack is, Block block){
PlayerProfile PP = Users.getProfile(player);
short durabilityBefore = player.getItemInHand().getDurability();
short durabilityAfter = 0;
short dif = 0;
//Stuff for keeping enchants
Enchantment[] enchants = new Enchantment[is.getEnchantments().size()];
int[] enchantsLevel = new int[is.getEnchantments().size()];
int pos = 0;
for(Enchantment x : is.getEnchantments().keySet())
{
enchants[pos] = x;
enchantsLevel[pos] = is.getEnchantmentLevel(x);
pos++;
}
if(block != null && mcPermissions.getInstance().repair(player))
{
if(player.getItemInHand().getDurability() > 0 && player.getItemInHand().getAmount() < 2){
/*
* ARMOR
*/
if(isArmor(is)){
/*
* DIAMOND ARMOR
*/
if(isDiamondArmor(is) && hasItem(player, rDiamond) && PP.getSkillLevel(SkillType.REPAIR) >= LoadProperties.repairdiamondlevel){
removeItem(player, rDiamond);
repairItem(player, enchants, enchantsLevel);
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
dif = (short) (dif * 6); //Boost XP
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
SpoutStuff.playRepairNoise(player);
}
else if (isIronArmor(is) && hasItem(player, rIron)){
/*
* IRON ARMOR
*/
removeItem(player, rIron);
repairItem(player, enchants, enchantsLevel);
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
dif = (short) (dif * 2); //Boost XP
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
SpoutStuff.playRepairNoise(player);
//GOLD ARMOR
} else if (isGoldArmor(is) && hasItem(player, rGold)){
removeItem(player, rGold);
repairItem(player, enchants, enchantsLevel);
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
dif = (short) (dif * 4); //Boost XP of Gold to around Iron
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
SpoutStuff.playRepairNoise(player);
} else {
needMoreVespeneGas(is, player);
}
}
/*
* TOOLS
*/
if(isTools(is)){
if(isStoneTools(is) && hasItem(player, rStone)){
removeItem(player, rStone);
repairItem(player, enchants, enchantsLevel);
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
if(m.isShovel(is))
dif = (short) (dif / 3);
if(m.isSwords(is))
dif = (short) (dif / 2);
if(m.isHoe(is))
dif = (short) (dif / 2);
//STONE NERF
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10, player);
} else if(isWoodTools(is) && hasItem(player,rWood)){
removeItem(player,rWood);
repairItem(player, enchants, enchantsLevel);
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
if(m.isShovel(is))
dif = (short) (dif / 3);
if(m.isSwords(is))
dif = (short) (dif / 2);
if(m.isHoe(is))
dif = (short) (dif / 2);
//WOOD NERF
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10, player);
} else if(isIronTools(is) && hasItem(player, rIron)){
removeItem(player, rIron);
repairItem(player, enchants, enchantsLevel);
durabilityAfter = (short) (player.getItemInHand().getDurability()-getRepairAmount(is, player));
dif = (short) (durabilityBefore - durabilityAfter);
if(m.isShovel(is))
dif = (short) (dif / 3);
if(m.isSwords(is))
dif = (short) (dif / 2);
if(m.isHoe(is))
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
SpoutStuff.playRepairNoise(player);
} else if (isDiamondTools(is) && hasItem(player, rDiamond) && PP.getSkillLevel(SkillType.REPAIR) >= LoadProperties.repairdiamondlevel){
removeItem(player, rDiamond);
repairItem(player, enchants, enchantsLevel);
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
if(m.isShovel(is))
dif = (short) (dif / 3);
if(m.isSwords(is))
dif = (short) (dif / 2);
if(m.isHoe(is))
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
SpoutStuff.playRepairNoise(player);
} else if(isGoldTools(is) && hasItem(player, rGold)){
removeItem(player, rGold);
repairItem(player, enchants, enchantsLevel);
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
dif = (short) (dif * 7.6); //Boost XP for Gold to that of around Iron
if(m.isShovel(is))
dif = (short) (dif / 3);
if(m.isSwords(is))
dif = (short) (dif / 2);
if(m.isHoe(is))
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
SpoutStuff.playRepairNoise(player);
} else {
needMoreVespeneGas(is, player);
}
}
} else {
player.sendMessage(mcLocale.getString("Skills.FullDurability"));
}
//player.updateInventory();
/*
* GIVE SKILL IF THERE IS ENOUGH XP
*/
Skills.XpCheckSkill(SkillType.REPAIR, player);
}
}
public static int getArcaneForgingRank(PlayerProfile PP)
{
int rank = 0;
if(PP.getSkillLevel(SkillType.REPAIR) >= 750)
{
rank = 4;
} else if (PP.getSkillLevel(SkillType.REPAIR) >= 500)
{
rank = 3;
} else if(PP.getSkillLevel(SkillType.REPAIR) >= 250)
{
rank = 2;
} else if (PP.getSkillLevel(SkillType.REPAIR) >= 100)
{
rank = 1;
}
return rank;
}
public static void addEnchants(ItemStack is, Enchantment[] enchants, int[] enchantsLvl, PlayerProfile PP, Player player)
{
if(is.getEnchantments().keySet().size() == 0)
return;
int pos = 0;
int rank = getArcaneForgingRank(PP);
if(rank == 0)
{
player.sendMessage(mcLocale.getString("Repair.LostEnchants"));
for(Enchantment x : enchants)
{
is.removeEnchantment(x);
}
return;
}
boolean failure = false, downgrade = false;
for(Enchantment x : enchants)
{
//Remove enchant
is.removeEnchantment(x);
if(x.canEnchantItem(is))
{
if(Math.random() * 100 <= getEnchantChance(rank))
{
if(enchantsLvl[pos] > 1)
{
if(Math.random() * 100 <= getDowngradeChance(rank))
{
is.addEnchantment(x, enchantsLvl[pos]-1);
downgrade = true;
} else
{
is.addEnchantment(x, enchantsLvl[pos]);
}
}
else {
is.addEnchantment(x, enchantsLvl[pos]);
}
} else {
failure = true;
}
}
pos++;
}
if(failure == false && downgrade == false)
{
player.sendMessage(mcLocale.getString("Repair.ArcanePerfect"));
} else {
if(failure == true)
player.sendMessage(mcLocale.getString("Repair.ArcaneFailed"));
if(downgrade == true)
player.sendMessage(mcLocale.getString("Repair.Downgraded"));
}
}
public static int getEnchantChance(int rank)
{
switch(rank)
{
case 4:
return 40;
case 3:
return 30;
case 2:
return 20;
case 1:
return 10;
default:
return 0;
}
}
public static int getDowngradeChance(int rank)
{
switch(rank)
{
case 4:
return 15;
case 3:
return 25;
case 2:
return 50;
case 1:
return 75;
default:
return 100;
}
}
public static boolean isArmor(ItemStack is){
return is.getTypeId() == 306 || is.getTypeId() == 307 ||is.getTypeId() == 308 ||is.getTypeId() == 309 ||
is.getTypeId() == 310 ||is.getTypeId() == 311 ||is.getTypeId() == 312 ||is.getTypeId() == 313 ||
is.getTypeId() == 314 || is.getTypeId() == 315 || is.getTypeId() == 316 || is.getTypeId() == 317;
}
public static boolean isGoldArmor(ItemStack is){
return is.getTypeId() == 314 || is.getTypeId() == 315 || is.getTypeId() == 316 || is.getTypeId() == 317;
}
public static boolean isIronArmor(ItemStack is){
return is.getTypeId() == 306 || is.getTypeId() == 307 || is.getTypeId() == 308 || is.getTypeId() == 309;
}
public static boolean isDiamondArmor(ItemStack is){
return is.getTypeId() == 310 || is.getTypeId() == 311 || is.getTypeId() == 312 || is.getTypeId() == 313;
}
public static boolean isTools(ItemStack is)
{
return is.getTypeId() == 359 || is.getTypeId() == 256 || is.getTypeId() == 257 || is.getTypeId() == 258 || is.getTypeId() == 267 || is.getTypeId() == 292 || //IRON
is.getTypeId() == 276 || is.getTypeId() == 277 || is.getTypeId() == 278 || is.getTypeId() == 279 || is.getTypeId() == 293 || //DIAMOND
is.getTypeId() == 283 || is.getTypeId() == 285 || is.getTypeId() == 286 || is.getTypeId() == 284 || //GOLD
is.getTypeId() == 268 || is.getTypeId() == 269 || is.getTypeId() == 270 || is.getTypeId() == 271 || is.getTypeId() == 290 ||//WOOD
is.getTypeId() == 272 || is.getTypeId() == 273 || is.getTypeId() == 274 || is.getTypeId() == 275|| is.getTypeId() == 291; //STONE
}
public static boolean isStoneTools(ItemStack is){
return is.getTypeId() == 272 || is.getTypeId() == 273 || is.getTypeId() == 274 || is.getTypeId() == 275 || is.getTypeId() == 291;
}
public static boolean isWoodTools(ItemStack is){
return is.getTypeId() == 268 || is.getTypeId() == 269 || is.getTypeId() == 270 || is.getTypeId() == 271 || is.getTypeId() == 290;
}
public static boolean isGoldTools(ItemStack is){
return is.getTypeId() == 283 || is.getTypeId() == 285 || is.getTypeId() == 286 || is.getTypeId() == 284 || is.getTypeId() == 294;
}
public static boolean isIronTools(ItemStack is){
return is.getTypeId() == 359 || is.getTypeId() == 256 || is.getTypeId() == 257 || is.getTypeId() == 258 || is.getTypeId() == 267 || is.getTypeId() == 292;
}
public static boolean isDiamondTools(ItemStack is){
if(is.getTypeId() == 276 || is.getTypeId() == 277 || is.getTypeId() == 278 || is.getTypeId() == 279 || is.getTypeId() == 293)
{
return true;
} else {
return false;
}
}
public static void removeItem(Player player, int typeid)
{
ItemStack[] inventory = player.getInventory().getContents();
for(ItemStack x : inventory){
if(x != null && x.getTypeId() == typeid){
if(x.getAmount() == 1){
x.setTypeId(0);
x.setAmount(0);
player.getInventory().setContents(inventory);
} else{
x.setAmount(x.getAmount() - 1);
player.getInventory().setContents(inventory);
}
return;
}
}
}
public static boolean hasItem(Player player, int typeid){
ItemStack[] inventory = player.getInventory().getContents();
for(ItemStack x : inventory){
if(x != null && x.getTypeId() == typeid){
return true;
}
}
return false;
}
public static short repairCalculate(Player player, short durability, short ramt){
PlayerProfile PP = Users.getProfile(player);
float bonus = (PP.getSkillLevel(SkillType.REPAIR) / 500);
bonus = (ramt * bonus);
ramt = ramt+=bonus;
if(checkPlayerProcRepair(player)){
ramt = (short) (ramt * 2);
}
//player.sendMessage(ChatColor.DARK_RED + "test " +ChatColor.BLUE+ );
durability-=ramt;
// player.sendMessage(ChatColor.DARK_RED + "durability " +ChatColor.BLUE+ durability);
if(durability < 0){
durability = 0;
}
return durability;
}
public static short getRepairAmount(ItemStack is, Player player){
short durability = is.getDurability();
short ramt = 0;
switch(is.getTypeId())
{
/*
* TOOLS
*/
//SHEARS
case 359:
ramt = 119;
break;
//WOOD SWORD
case 268:
ramt = 30;
break;
//WOOD SHOVEL
case 269:
ramt = 60;
break;
//WOOD PICKAXE
case 270:
ramt = 20;
break;
//WOOD AXE
case 271:
ramt = 20;
break;
//WOOD HOE
case 290:
ramt = 30;
break;
//STONE SWORD
case 272:
ramt = 66;
break;
//STONE SHOVEL
case 273:
ramt = 132;
break;
//STONE PICKAXE
case 274:
ramt = 44;
break;
//STONE AXE
case 275:
ramt = 44;
break;
//STONE HOE
case 291:
ramt = 66;
break;
//GOLD SHOVEL
case 284:
ramt = 33;
break;
//IRON SHOVEL
case 256:
ramt = 251;
break;
//DIAMOND SHOVEL
case 277:
ramt = 1562;
break;
//IRON PICK
case 257:
ramt = 84;
break;
//IRON AXE
case 258:
ramt = 84;
break;
//IRON SWORD
case 267:
ramt = 126;
break;
//IRON HOE
case 292:
ramt = 126;
break;
//DIAMOND SWORD
case 276:
ramt = 781;
break;
//DIAMOND PICK
case 278:
ramt = 521;
break;
//DIAMOND AXE
case 279:
ramt = 521;
break;
//DIAMOND HOE
case 293:
ramt = 781;
break;
//GOLD SWORD
case 283:
ramt = 17;
break;
//GOLD PICK
case 285:
ramt = 11;
break;
//GOLD AXE
case 286:
ramt = 11;
break;
//GOLD HOE
case 294:
ramt = 17;
break;
/*
* ARMOR
*/
case 306:
ramt = 27;
break;
case 310:
ramt = 55;
break;
case 307:
ramt = 24;
break;
case 311:
ramt = 48;
break;
case 308:
ramt = 27;
break;
case 312:
ramt = 53;
break;
case 309:
ramt = 40;
break;
case 313:
ramt = 80;
break;
case 314:
ramt = 13;
break;
case 315:
ramt = 12;
break;
case 316:
ramt = 14;
break;
case 317:
ramt = 20;
break;
}
return repairCalculate(player, durability, ramt);
}
public static void needMoreVespeneGas(ItemStack is, Player player)
{
PlayerProfile PP = Users.getProfile(player);
if ((isDiamondTools(is) || isDiamondArmor(is)) && PP.getSkillLevel(SkillType.REPAIR) < LoadProperties.repairdiamondlevel)
{
player.sendMessage(mcLocale.getString("Skills.AdeptDiamond"));
} else if (isDiamondTools(is) && !hasItem(player, rDiamond) || isIronTools(is) && !hasItem(player, rIron) || isGoldTools(is) && !hasItem(player, rGold)){
if(isDiamondTools(is) && !hasItem(player, rDiamond))
player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.BLUE+ nDiamond);
if(isIronTools(is) && !hasItem(player, rIron))
player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GRAY+ nIron);
if(isGoldTools(is) && !hasItem(player, rGold))
player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GOLD+nGold);
if(isWoodTools(is) && !hasItem(player,rWood))
player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.DARK_GREEN+ nWood);
if(isStoneTools(is) && !hasItem(player, rStone))
player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GRAY+nStone);
} else if (isDiamondArmor(is) && !hasItem(player, rDiamond)){
player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.BLUE+ nDiamond);
} else if (isIronArmor(is) && !hasItem(player, rIron)){
player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GRAY+ nIron);
} else if (isGoldArmor(is) && !hasItem(player, rGold)){
player.sendMessage(mcLocale.getString("Skills.NeedMore")+" "+ChatColor.GOLD+ nGold);
} else if (is.getAmount() > 1)
player.sendMessage(mcLocale.getString("Skills.StackedItems"));
}
public static boolean checkPlayerProcRepair(Player player)
{
PlayerProfile PP = Users.getProfile(player);
if(player != null)
{
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.REPAIR))
{
player.sendMessage(mcLocale.getString("Skills.FeltEasy"));
return true;
}
}
return false;
}
public static void repairItem(Player player, Enchantment[] enchants, int[] enchantsLevel)
{
PlayerProfile PP = Users.getProfile(player);
ItemStack is = player.getItemInHand();
//Handle the enchantments
addEnchants(player.getItemInHand(), enchants, enchantsLevel, PP, player);
player.getItemInHand().setDurability(getRepairAmount(is, player));
}
}

View File

@ -0,0 +1,437 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import java.util.logging.Logger;
import org.bukkit.ChatColor;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.getspout.spoutapi.SpoutManager;
import org.getspout.spoutapi.player.SpoutPlayer;
import com.gmail.nossr50.Leaderboard;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.spout.SpoutStuff;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.PlayerStat;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
public class Skills
{
protected static final Logger log = Logger.getLogger("Minecraft");
public void updateSQLfromFile(Player player){
}
public static boolean cooldownOver(Player player, long oldTime, int cooldown){
long currentTime = System.currentTimeMillis();
if(currentTime - oldTime >= (cooldown * 1000)){
return true;
} else {
return false;
}
}
public boolean hasArrows(Player player){
for(ItemStack x : player.getInventory().getContents()){
if (x.getTypeId() == 262){
return true;
}
}
return false;
}
public void addArrows(Player player){
for(ItemStack x : player.getInventory().getContents()){
if (x.getTypeId() == 262){
x.setAmount(x.getAmount() + 1);
return;
}
}
}
public static int calculateTimeLeft(Player player, long deactivatedTimeStamp, int cooldown)
{
return (int) (((deactivatedTimeStamp + (cooldown * 1000)) - System.currentTimeMillis())/1000);
}
public static void watchCooldowns(Player player){
PlayerProfile PP = Users.getProfile(player);
if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - (PP.getGreenTerraDeactivatedTimeStamp()*1000) >= (LoadProperties.greenTerraCooldown * 1000)){
PP.setGreenTerraInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourGreenTerra"));
}
if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - (PP.getTreeFellerDeactivatedTimeStamp()*1000) >= (LoadProperties.greenTerraCooldown * 1000)){
PP.setTreeFellerInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourTreeFeller"));
}
if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - (PP.getSuperBreakerDeactivatedTimeStamp()*1000) >= (LoadProperties.superBreakerCooldown * 1000)){
PP.setSuperBreakerInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourSuperBreaker"));
}
if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - (PP.getSerratedStrikesDeactivatedTimeStamp()*1000) >= (LoadProperties.serratedStrikeCooldown * 1000)){
PP.setSerratedStrikesInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourSerratedStrikes"));
}
if(!PP.getBerserkInformed() && System.currentTimeMillis() - (PP.getBerserkDeactivatedTimeStamp()*1000) >= (LoadProperties.berserkCooldown * 1000)){
PP.setBerserkInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourBerserk"));
}
if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - (PP.getSkullSplitterDeactivatedTimeStamp()*1000) >= (LoadProperties.skullSplitterCooldown * 1000)){
PP.setSkullSplitterInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourSkullSplitter"));
}
if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000) >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){
PP.setGigaDrillBreakerInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourGigaDrillBreaker"));
}
}
public static void hoeReadinessCheck(Player player)
{
if(LoadProperties.enableOnlyActivateWhenSneaking && !player.isSneaking())
return;
PlayerProfile PP = Users.getProfile(player);
if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){
if(!PP.getGreenTerraMode() && !cooldownOver(player, (PP.getGreenTerraDeactivatedTimeStamp()*1000), LoadProperties.greenTerraCooldown)){
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getGreenTerraDeactivatedTimeStamp()*1000), LoadProperties.greenTerraCooldown)+"s)");
return;
}
if(LoadProperties.enableAbilityMessages)
player.sendMessage(mcLocale.getString("Skills.ReadyHoe"));
PP.setHoePreparationATS(System.currentTimeMillis());
PP.setHoePreparationMode(true);
}
}
public static void monitorSkills(Player player){
PlayerProfile PP = Users.getProfile(player);
if(PP != null)
{
if(PP.getHoePreparationMode() && System.currentTimeMillis() - (PP.getHoePreparationATS()*1000) >= 4000){
PP.setHoePreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerHoe"));
}
if(PP.getAxePreparationMode() && System.currentTimeMillis() - (PP.getAxePreparationATS()*1000) >= 4000){
PP.setAxePreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerAxe"));
}
if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - (PP.getPickaxePreparationATS()*1000) >= 4000){
PP.setPickaxePreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerPickAxe"));
}
if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - (PP.getSwordsPreparationATS()*1000) >= 4000){
PP.setSwordsPreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerSword"));
}
if(PP.getFistsPreparationMode() && System.currentTimeMillis() - (PP.getFistsPreparationATS()*1000) >= 4000){
PP.setFistsPreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerFists"));
}
if(PP.getShovelPreparationMode() && System.currentTimeMillis() - (PP.getShovelPreparationATS()*1000) >= 4000){
PP.setShovelPreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerShovel"));
}
/*
* HERBALISM ABILITY
*/
if(mcPermissions.getInstance().herbalismAbility(player)){
if(PP.getGreenTerraMode() && (PP.getGreenTerraDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setGreenTerraMode(false);
PP.setGreenTerraInformed(false);
player.sendMessage(mcLocale.getString("Skills.GreenTerraOff"));
}
}
/*
* AXES ABILITY
*/
if(mcPermissions.getInstance().axesAbility(player)){
if(PP.getSkullSplitterMode() && (PP.getSkullSplitterDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setSkullSplitterMode(false);
PP.setSkullSplitterInformed(false);
player.sendMessage(mcLocale.getString("Skills.SkullSplitterOff"));
}
}
/*
* WOODCUTTING ABILITY
*/
if(mcPermissions.getInstance().woodCuttingAbility(player)){
if(PP.getTreeFellerMode() && (PP.getTreeFellerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setTreeFellerMode(false);
PP.setTreeFellerInformed(false);
player.sendMessage(mcLocale.getString("Skills.TreeFellerOff"));
}
}
/*
* MINING ABILITY
*/
if(mcPermissions.getInstance().miningAbility(player)){
if(PP.getSuperBreakerMode() && (PP.getSuperBreakerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setSuperBreakerMode(false);
PP.setSuperBreakerInformed(false);
player.sendMessage(mcLocale.getString("Skills.SuperBreakerOff"));
}
}
/*
* EXCAVATION ABILITY
*/
if(mcPermissions.getInstance().excavationAbility(player)){
if(PP.getGigaDrillBreakerMode() && (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setGigaDrillBreakerMode(false);
PP.setGigaDrillBreakerInformed(false);
player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOff"));
}
}
/*
* SWORDS ABILITY
*/
if(mcPermissions.getInstance().swordsAbility(player)){
if(PP.getSerratedStrikesMode() && (PP.getSerratedStrikesDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setSerratedStrikesMode(false);
PP.setSerratedStrikesInformed(false);
player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOff"));
}
}
/*
* UNARMED ABILITY
*/
if(mcPermissions.getInstance().unarmedAbility(player)){
if(PP.getBerserkMode() && (PP.getBerserkDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setBerserkMode(false);
PP.setBerserkInformed(false);
player.sendMessage(mcLocale.getString("Skills.BerserkOff"));
}
}
}
}
public static void abilityActivationCheck(Player player)
{
if(LoadProperties.enableOnlyActivateWhenSneaking && !player.isSneaking())
return;
PlayerProfile PP = Users.getProfile(player);
if(PP != null)
{
if(!PP.getAbilityUse() || PP.getSuperBreakerMode() || PP.getSerratedStrikesMode() || PP.getTreeFellerMode() || PP.getGreenTerraMode() || PP.getBerserkMode() || PP.getGigaDrillBreakerMode())
return;
if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode())
{
if(!PP.getSuperBreakerMode() && !cooldownOver(player, (PP.getSuperBreakerDeactivatedTimeStamp()*1000), LoadProperties.superBreakerCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSuperBreakerDeactivatedTimeStamp()*1000), LoadProperties.superBreakerCooldown)+"s)");
return;
}
if(LoadProperties.enableAbilityMessages)
player.sendMessage(mcLocale.getString("Skills.ReadyPickAxe"));
PP.setPickaxePreparationATS(System.currentTimeMillis());
PP.setPickaxePreparationMode(true);
}
if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode())
{
if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000), LoadProperties.gigaDrillBreakerCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000), LoadProperties.gigaDrillBreakerCooldown)+"s)");
return;
}
if(LoadProperties.enableAbilityMessages)
player.sendMessage(mcLocale.getString("Skills.ReadyShovel"));
PP.setShovelPreparationATS(System.currentTimeMillis());
PP.setShovelPreparationMode(true);
}
if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode())
{
if(!PP.getSerratedStrikesMode() && !cooldownOver(player, (PP.getSerratedStrikesDeactivatedTimeStamp()*1000), LoadProperties.serratedStrikeCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSerratedStrikesDeactivatedTimeStamp()*1000), LoadProperties.serratedStrikeCooldown)+"s)");
return;
}
if(LoadProperties.enableAbilityMessages)
player.sendMessage(mcLocale.getString("Skills.ReadySword"));
PP.setSwordsPreparationATS(System.currentTimeMillis());
PP.setSwordsPreparationMode(true);
}
if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode())
{
if(!PP.getBerserkMode() && !cooldownOver(player, (PP.getBerserkDeactivatedTimeStamp()*1000), LoadProperties.berserkCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getBerserkDeactivatedTimeStamp()*1000), LoadProperties.berserkCooldown)+"s)");
return;
}
if(LoadProperties.enableAbilityMessages)
player.sendMessage(mcLocale.getString("Skills.ReadyFists"));
PP.setFistsPreparationATS(System.currentTimeMillis());
PP.setFistsPreparationMode(true);
}
if((mcPermissions.getInstance().axesAbility(player) || mcPermissions.getInstance().woodCuttingAbility(player)) && !PP.getAxePreparationMode())
{
if(m.isAxes(player.getItemInHand()))
{
if(LoadProperties.enableAbilityMessages)
player.sendMessage(mcLocale.getString("Skills.ReadyAxe"));
PP.setAxePreparationATS(System.currentTimeMillis());
PP.setAxePreparationMode(true);
}
}
}
}
public static void ProcessLeaderboardUpdate(SkillType skillType, Player player)
{
PlayerProfile PP = Users.getProfile(player);
PlayerStat ps = new PlayerStat();
if(skillType != SkillType.ALL)
ps.statVal = PP.getSkillLevel(skillType);
else
ps.statVal = m.getPowerLevel(player);
ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, skillType);
}
public static void XpCheckSkill(SkillType skillType, Player player)
{
PlayerProfile PP = Users.getProfile(player);
if(PP.getSkillXpLevel(skillType) >= PP.getXpToLevel(skillType))
{
int skillups = 0;
while(PP.getSkillXpLevel(skillType) >= PP.getXpToLevel(skillType))
{
skillups++;
PP.removeXP(skillType, PP.getXpToLevel(skillType));
PP.skillUp(skillType, 1);
}
if(!LoadProperties.useMySQL)
{
ProcessLeaderboardUpdate(skillType, player);
ProcessLeaderboardUpdate(SkillType.ALL, player);
}
String capitalized = m.getCapitalized(skillType.toString());
//Contrib stuff
if(LoadProperties.spoutEnabled && player instanceof SpoutPlayer)
{
SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
if(sPlayer.isSpoutCraftEnabled())
{
SpoutStuff.levelUpNotification(skillType, sPlayer);
} else
{
player.sendMessage(mcLocale.getString("Skills."+capitalized+"Up", new Object[] {String.valueOf(skillups), PP.getSkillLevel(skillType)}));
}
}
else
player.sendMessage(mcLocale.getString("Skills."+capitalized+"Up", new Object[] {String.valueOf(skillups), PP.getSkillLevel(skillType)}));
}
if(LoadProperties.xpbar && LoadProperties.spoutEnabled)
{
SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
if(sPlayer.isSpoutCraftEnabled())
{
SpoutStuff.updateXpBar(sPlayer);
}
}
}
public static void XpCheckAll(Player player)
{
for(SkillType x : SkillType.values())
{
//Don't want to do anything with this one
if(x == SkillType.ALL)
continue;
XpCheckSkill(x, player);
}
}
public static SkillType getSkillType(String skillName)
{
for(SkillType x : SkillType.values())
{
if(x.toString().equals(skillName.toUpperCase()))
return x;
}
return null;
}
public static boolean isSkill(String skillname){
skillname = skillname.toUpperCase();
for(SkillType x : SkillType.values())
{
if(x.toString().equals(skillname))
return true;
}
return false;
}
public static void arrowRetrievalCheck(Entity entity, mcMMO plugin)
{
if(plugin.misc.arrowTracker.containsKey(entity))
{
Integer x = 0;
while(x < plugin.misc.arrowTracker.get(entity))
{
m.mcDropItem(entity.getLocation(), 262);
x++;
}
}
plugin.misc.arrowTracker.remove(entity);
}
public static String getSkillStats(String skillname, Integer level, Integer XP, Integer XPToLevel)
{
ChatColor parColor = ChatColor.DARK_AQUA;
ChatColor xpColor = ChatColor.GRAY;
ChatColor LvlColor = ChatColor.GREEN;
ChatColor skillColor = ChatColor.YELLOW;
return skillColor+skillname+LvlColor+level+parColor+" XP"+"("+xpColor+XP+parColor+"/"+xpColor+XPToLevel+parColor+")";
}
public static boolean hasCombatSkills(Player player)
{
if(mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().archery(player) || mcPermissions.getInstance().swords(player) || mcPermissions.getInstance().taming(player) || mcPermissions.getInstance().unarmed(player))
return true;
else
return false;
}
public static boolean hasGatheringSkills(Player player)
{
if(mcPermissions.getInstance().excavation(player) || mcPermissions.getInstance().herbalism(player) || mcPermissions.getInstance().mining(player) || mcPermissions.getInstance().woodcutting(player))
return true;
else
return false;
}
public static boolean hasMiscSkills(Player player)
{
if(mcPermissions.getInstance().acrobatics(player) || mcPermissions.getInstance().repair(player))
return true;
else
return false;
}
}

View File

@ -0,0 +1,252 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
import org.bukkit.entity.Arrow;
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.EntityDamageByEntityEvent;
import com.gmail.nossr50.Combat;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
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.party.Party;
public class Swords
{
public static void serratedStrikesActivationCheck(Player player){
PlayerProfile PP = Users.getProfile(player);
if(m.isSwords(player.getItemInHand()))
{
if(PP.getSwordsPreparationMode())
{
PP.setSwordsPreparationMode(false);
}
int ticks = 2;
int x = PP.getSkillLevel(SkillType.SWORDS);
while(x >= 50)
{
x-=50;
ticks++;
}
if(!PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() < System.currentTimeMillis())
{
player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOn"));
for(Player y : player.getWorld().getPlayers())
{
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.SerratedStrikesPlayer", new Object[] {player.getName()}));
}
PP.setSerratedStrikesActivatedTimeStamp(System.currentTimeMillis());
PP.setSerratedStrikesDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setSerratedStrikesMode(true);
}
}
}
public static void bleedCheck(Player attacker, LivingEntity x, mcMMO pluginx)
{
PlayerProfile PPa = Users.getProfile(attacker);
if(x instanceof Wolf)
{
Wolf wolf = (Wolf)x;
if(Taming.getOwner(wolf, pluginx) != null)
{
if(Taming.getOwner(wolf, pluginx) == attacker)
return;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx)))
return;
}
}
if(mcPermissions.getInstance().swords(attacker) && m.isSwords(attacker.getItemInHand())){
if(PPa.getSkillLevel(SkillType.SWORDS) >= 750)
{
if(Math.random() * 1000 >= 750)
{
if(!(x instanceof Player))
pluginx.misc.addToBleedQue(x);
if(x instanceof Player)
{
Player target = (Player)x;
Users.getProfile(target).addBleedTicks(3);
}
attacker.sendMessage(ChatColor.GREEN+"**ENEMY BLEEDING**");
}
}
else if (Math.random() * 1000 <= PPa.getSkillLevel(SkillType.SWORDS))
{
if(!(x instanceof Player))
pluginx.misc.addToBleedQue(x);
if(x instanceof Player)
{
Player target = (Player)x;
Users.getProfile(target).addBleedTicks(2);
}
attacker.sendMessage(ChatColor.GREEN+"**ENEMY BLEEDING**");
}
}
}
public static void applySerratedStrikes(Player attacker, EntityDamageByEntityEvent event, mcMMO pluginx)
{
int targets = 0;
if(event.getEntity() instanceof LivingEntity)
{
LivingEntity x = (LivingEntity) event.getEntity();
targets = m.getTier(attacker);
for(Entity derp : x.getWorld().getEntities())
{
if(m.getDistance(x.getLocation(), derp.getLocation()) < 5)
{
//Make sure the Wolf is not friendly
if(derp instanceof Wolf)
{
Wolf hurrDurr = (Wolf)derp;
if(Taming.getOwner(hurrDurr, pluginx) == attacker)
continue;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx)))
continue;
}
//Damage nearby LivingEntities
if(derp instanceof LivingEntity && targets >= 1)
{
if(derp instanceof Player)
{
Player target = (Player)derp;
if(target.getName().equals(attacker.getName()))
continue;
if(Users.getProfile(target).getGodMode())
continue;
if(Party.getInstance().inSameParty(attacker, target))
continue;
if(targets >= 1 && derp.getWorld().getPVP())
{
target.damage(event.getDamage() / 4);
target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strikes!");
Users.getProfile(target).addBleedTicks(5);
targets--;
continue;
}
}
else
{
if(!pluginx.misc.bleedTracker.contains(derp))
pluginx.misc.addToBleedQue((LivingEntity)derp);
LivingEntity target = (LivingEntity)derp;
target.damage(event.getDamage() / 4);
targets--;
}
}
}
}
}
}
public static void counterAttackChecks(EntityDamageByEntityEvent event)
{
//Don't want to counter attack arrows
if(event.getDamager() instanceof Arrow)
return;
if(event instanceof EntityDamageByEntityEvent)
{
Entity f = ((EntityDamageByEntityEvent) event).getDamager();
if(event.getEntity() instanceof Player)
{
Player defender = (Player)event.getEntity();
PlayerProfile PPd = Users.getProfile(defender);
if(m.isSwords(defender.getItemInHand()) && mcPermissions.getInstance().swords(defender))
{
if(PPd.getSkillLevel(SkillType.SWORDS) >= 600)
{
if(Math.random() * 2000 <= 600)
{
Combat.dealDamage(f, event.getDamage() / 2);
defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**");
if(f instanceof Player)
((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
}
}
else if (Math.random() * 2000 <= PPd.getSkillLevel(SkillType.SWORDS))
{
Combat.dealDamage(f, event.getDamage() / 2);
defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**");
if(f instanceof Player)
((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
}
}
}
}
}
public static void bleedSimulate(mcMMO plugin)
{
//Add items from Que list to BleedTrack list
for(LivingEntity x : plugin.misc.bleedQue)
{
plugin.misc.bleedTracker.add(x);
}
//Clear list
plugin.misc.bleedQue = new LivingEntity[plugin.misc.bleedQue.length];
plugin.misc.bleedQuePos = 0;
//Cleanup any dead entities from the list
for(LivingEntity x : plugin.misc.bleedRemovalQue)
{
plugin.misc.bleedTracker.remove(x);
}
//Clear bleed removal list
plugin.misc.bleedRemovalQue = new LivingEntity[plugin.misc.bleedRemovalQue.length];
plugin.misc.bleedRemovalQuePos = 0;
//Bleed monsters/animals
for(LivingEntity x : plugin.misc.bleedTracker)
{
if(x == null){continue;}
if(x.getHealth() <= 0)
{
plugin.misc.addToBleedRemovalQue(x);
continue;
}
else
{
x.damage(2);
}
}
}
}

View File

@ -0,0 +1,70 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import org.bukkit.entity.AnimalTamer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Wolf;
import org.bukkit.plugin.Plugin;
public class Taming
{
public static boolean ownerOnline(Wolf theWolf, Plugin pluginx)
{
for(Player x : pluginx.getServer().getOnlinePlayers())
{
if(x instanceof AnimalTamer)
{
AnimalTamer tamer = (AnimalTamer)x;
if(theWolf.getOwner() == tamer)
return true;
}
}
return false;
}
public static Player getOwner(Entity wolf, Plugin pluginx)
{
if(wolf instanceof Wolf)
{
Wolf theWolf = (Wolf)wolf;
for(Player x : pluginx.getServer().getOnlinePlayers())
{
if(x instanceof AnimalTamer && x.isOnline())
{
AnimalTamer tamer = (AnimalTamer)x;
if(theWolf.getOwner() == tamer)
return x;
}
}
return null;
}
return null;
}
public static String getOwnerName(Wolf theWolf)
{
Player owner = (Player)theWolf.getOwner();
if(owner != null)
{
return owner.getName();
}
else
return "Offline Master";
}
}

View File

@ -0,0 +1,111 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
public class Unarmed {
public static void berserkActivationCheck(Player player)
{
PlayerProfile PP = Users.getProfile(player);
if(player.getItemInHand().getTypeId() == 0)
{
if(PP.getFistsPreparationMode())
{
PP.setFistsPreparationMode(false);
}
int ticks = 2;
int x = PP.getSkillLevel(SkillType.UNARMED);
while(x >= 50){
x-=50;
ticks++;
}
if(!PP.getBerserkMode() && Skills.cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown))
{
player.sendMessage(mcLocale.getString("Skills.BerserkOn"));
for(Player y : player.getWorld().getPlayers())
{
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.BerserkPlayer", new Object[] {player.getName()}));
}
PP.setBerserkActivatedTimeStamp(System.currentTimeMillis());
PP.setBerserkDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setBerserkMode(true);
}
}
}
public static void unarmedBonus(Player attacker, EntityDamageByEntityEvent event)
{
PlayerProfile PPa = Users.getProfile(attacker);
int bonus = 0;
if (PPa.getSkillLevel(SkillType.UNARMED) >= 250)
bonus+=2;
if (PPa.getSkillLevel(SkillType.UNARMED) >= 500)
bonus+=4;
event.setDamage(event.getDamage()+bonus);
}
public static void disarmProcCheck(Player attacker, Player defender)
{
PlayerProfile PP = Users.getProfile(attacker);
if(attacker.getItemInHand().getTypeId() == 0)
{
if(PP.getSkillLevel(SkillType.UNARMED) >= 1000)
{
if(Math.random() * 4000 <= 1000)
{
Location loc = defender.getLocation();
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
{
defender.sendMessage(mcLocale.getString("Skills.Disarmed"));
ItemStack item = defender.getItemInHand();
if(item != null)
{
loc.getWorld().dropItemNaturally(loc, item);
ItemStack itemx = null;
defender.setItemInHand(itemx);
}
}
}
} else {
if(Math.random() * 4000 <= PP.getSkillLevel(SkillType.UNARMED)){
Location loc = defender.getLocation();
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
{
defender.sendMessage(mcLocale.getString("Skills.Disarmed"));
ItemStack item = defender.getItemInHand();
if(item != null)
{
loc.getWorld().dropItemNaturally(loc, item);
ItemStack itemx = null;
defender.setItemInHand(itemx);
}
}
}
}
}
}
}

View File

@ -0,0 +1,169 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.skills;
import java.util.ArrayList;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.config.*;
public class WoodCutting
{
static int w = 0;
private static boolean isdone = false;
public static void woodCuttingProcCheck(Player player, Block block)
{
PlayerProfile PP = Users.getProfile(player);
byte type = block.getData();
Material mat = Material.getMaterial(block.getTypeId());
if(player != null)
{
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.WOODCUTTING))
{
ItemStack item = new ItemStack(mat, 1, (short) 0, type);
block.getWorld().dropItemNaturally(block.getLocation(), item);
}
}
}
public static void treeFellerCheck(Player player, Block block)
{
PlayerProfile PP = Users.getProfile(player);
if(m.isAxes(player.getItemInHand()))
{
if(block != null)
{
if(!m.abilityBlockCheck(block))
return;
}
/*
* CHECK FOR AXE PREP MODE
*/
if(PP.getAxePreparationMode())
{
PP.setAxePreparationMode(false);
}
int ticks = 2;
int x = PP.getSkillLevel(SkillType.WOODCUTTING);
while(x >= 50)
{
x-=50;
ticks++;
}
if(!PP.getTreeFellerMode() && Skills.cooldownOver(player, (PP.getTreeFellerDeactivatedTimeStamp()*1000), LoadProperties.treeFellerCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TreeFellerOn"));
for(Player y : player.getWorld().getPlayers())
{
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.TreeFellerPlayer", new Object[] {player.getName()}));
}
PP.setTreeFellerActivatedTimeStamp(System.currentTimeMillis());
PP.setTreeFellerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setTreeFellerMode(true);
}
if(!PP.getTreeFellerMode() && !Skills.cooldownOver(player, (PP.getTreeFellerDeactivatedTimeStamp()*1000), LoadProperties.treeFellerCooldown)){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again."
+ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, (PP.getTreeFellerDeactivatedTimeStamp()*1000), LoadProperties.treeFellerCooldown)+"s)");
}
}
}
public static void treeFeller(Block block, Player player, mcMMO plugin){
PlayerProfile PP = Users.getProfile(player);
int radius = 1;
if(PP.getSkillLevel(SkillType.WOODCUTTING) >= 500)
radius++;
if(PP.getSkillLevel(SkillType.WOODCUTTING) >= 950)
radius++;
ArrayList<Block> blocklist = new ArrayList<Block>();
ArrayList<Block> toAdd = new ArrayList<Block>();
if(block != null)
blocklist.add(block);
while(isdone == false){
addBlocksToTreeFelling(blocklist, toAdd, radius);
}
//This needs to be a hashmap too!
isdone = false;
/*
* Add blocks from the temporary 'toAdd' array list into the 'treeFeller' array list
* We use this temporary list to prevent concurrent modification exceptions
*/
for(Block x : toAdd)
{
if(!plugin.misc.treeFeller.contains(x))
plugin.misc.treeFeller.add(x);
}
toAdd.clear();
}
public static void addBlocksToTreeFelling(ArrayList<Block> blocklist, ArrayList<Block> toAdd, Integer radius)
{
int u = 0;
for (Block x : blocklist)
{
u++;
if(toAdd.contains(x))
continue;
w = 0;
Location loc = x.getLocation();
int vx = x.getX();
int vy = x.getY();
int vz = x.getZ();
/*
* Run through the blocks around the broken block to see if they qualify to be 'felled'
*/
for (int cx = -radius; cx <= radius; cx++) {
for (int cy = -radius; cy <= radius; cy++) {
for (int cz = -radius; cz <= radius; cz++) {
Block blocktarget = loc.getWorld().getBlockAt(vx + cx, vy + cy, vz + cz);
if (!blocklist.contains(blocktarget) && !toAdd.contains(blocktarget) && (blocktarget.getTypeId() == 17 || blocktarget.getTypeId() == 18)) {
toAdd.add(blocktarget);
w++;
}
}
}
}
}
/*
* Add more blocks to blocklist so they can be 'felled'
*/
for(Block xx : toAdd)
{
if(!blocklist.contains(xx))
blocklist.add(xx);
}
if(u >= blocklist.size())
{
isdone = true;
} else {
isdone = false;
}
}
}

View File

@ -0,0 +1,577 @@
/*
This file is part of mcMMO.
mcMMO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
mcMMO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with mcMMO. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.spout;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.Event.Priority;
import org.getspout.spoutapi.SpoutManager;
import org.getspout.spoutapi.gui.Color;
import org.getspout.spoutapi.keyboard.Keyboard;
import org.getspout.spoutapi.player.SpoutPlayer;
import org.getspout.spoutapi.sound.SoundEffect;
import org.getspout.spoutapi.sound.SoundManager;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.HUDType;
import com.gmail.nossr50.datatypes.HUDmmo;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.popups.PopupMMO;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.listeners.mcSpoutInputListener;
import com.gmail.nossr50.listeners.mcSpoutListener;
import com.gmail.nossr50.listeners.mcSpoutScreenListener;
public class SpoutStuff
{
static mcMMO plugin = (mcMMO) Bukkit.getServer().getPluginManager().getPlugin("mcMMO");
private final static mcSpoutListener spoutListener = new mcSpoutListener(plugin);
private final static mcSpoutInputListener spoutInputListener = new mcSpoutInputListener(plugin);
private final static mcSpoutScreenListener spoutScreenListener = new mcSpoutScreenListener(plugin);
public static HashMap<Player, HUDmmo> playerHUDs = new HashMap<Player, HUDmmo>();
public static HashMap<SpoutPlayer, PopupMMO> playerScreens = new HashMap<SpoutPlayer, PopupMMO>();
public static Keyboard keypress;
public static void writeFile(String theFileName, String theFilePath)
{
try {
File currentFile = new File("plugins/mcMMO/Resources/"+theFilePath+theFileName);
@SuppressWarnings("static-access")
JarFile jar = new JarFile(plugin.mcmmo);
JarEntry entry = jar.getJarEntry("resources/"+theFileName);
InputStream is = jar.getInputStream(entry);
byte[] buf = new byte[2048];
int nbRead;
OutputStream os = new BufferedOutputStream(new FileOutputStream(currentFile));
while((nbRead = is.read(buf)) != -1) {
os.write(buf, 0, nbRead);
}
os.flush();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void extractFiles()
{
//Setup directories
new File("plugins/mcMMO/Resources/").mkdir();
new File("plugins/mcMMO/Resources/HUD/").mkdir();
new File("plugins/mcMMO/Resources/HUD/Standard/").mkdir();
new File("plugins/mcMMO/Resources/HUD/Retro/").mkdir();
new File("plugins/mcMMO/Resources/Sound/").mkdir();
//Xp Bar images
for(int x =0; x < 255; x++)
{
//String s = File.separator;
String theFilePath = "HUD/Standard/";
if(x < 10)
{
String theFileName = "xpbar_inc00"+x+".png";
writeFile(theFileName, theFilePath);
} else if (x < 100)
{
String theFileName = "xpbar_inc0"+x+".png";
writeFile(theFileName, theFilePath);
} else
{
String theFileName = "xpbar_inc"+x+".png";
writeFile(theFileName, theFilePath);
}
}
//Standard XP Icons
String theFilePathA = "HUD/Standard/";
String theFilePathB = "HUD/Retro/";
for(SkillType y : SkillType.values())
{
if(y == SkillType.ALL || y == SkillType.ENCHANTING || y == SkillType.ALCHEMY)
continue;
String theFileNameA = m.getCapitalized(y.toString())+".png";
String theFileNameB = m.getCapitalized(y.toString())+"_r.png";
writeFile(theFileNameA, theFilePathA);
writeFile(theFileNameB, theFilePathB);
}
//Blank icons
writeFile("Icon.png", theFilePathA);
writeFile("Icon_r.png", theFilePathB);
String theSoundFilePath = "Sound/";
//Repair SFX
writeFile("repair.wav", theSoundFilePath);
writeFile("level.wav", theSoundFilePath);
}
public static void setupSpoutConfigs()
{
String temp = LoadProperties.readString("Spout.Menu.Key", "KEY_M");
for(Keyboard x : Keyboard.values())
{
if(x.toString().equalsIgnoreCase(temp))
{
keypress = x;
}
}
if(keypress == null)
{
System.out.println("Invalid KEY for Spout.Menu.Key, using KEY_M");
keypress = Keyboard.KEY_M;
}
}
public static ArrayList<File> getFiles()
{
ArrayList<File> files = new ArrayList<File>();
String dir = "plugins/mcMMO/Resources/";
int x = 0;
//XP BAR
while(x < 255)
{
if(x < 10)
{
files.add(new File(dir+"HUD/Standard/xpbar_inc00"+x+".png"));
} else if (x < 100)
{
files.add(new File(dir+"HUD/Standard/xpbar_inc0"+x+".png"));
} else
{
files.add(new File(dir+"HUD/Standard/xpbar_inc"+x+".png"));
}
x++;
}
//Standard XP Icons
for(SkillType y : SkillType.values())
{
if(y == SkillType.ALL || y == SkillType.ENCHANTING || y == SkillType.ALCHEMY)
continue;
files.add(new File(dir+"HUD/Standard/"+m.getCapitalized(y.toString())+".png"));
files.add(new File(dir+"HUD/Retro/"+m.getCapitalized(y.toString())+"_r.png"));
}
//Blank icons
files.add(new File(dir+"HUD/Standard/Icon.png"));
files.add(new File(dir+"HUD/Retro/Icon_r.png"));
//Repair SFX
files.add(new File(dir+"Sound/repair.wav"));
//Level SFX
files.add(new File(dir+"Sound/level.wav"));
return files;
}
public static void registerCustomEvent()
{
Bukkit.getServer().getPluginManager().registerEvent(Event.Type.CUSTOM_EVENT, spoutListener, Priority.Normal, plugin);
Bukkit.getServer().getPluginManager().registerEvent(Event.Type.CUSTOM_EVENT, spoutInputListener, Priority.Normal, plugin);
Bukkit.getServer().getPluginManager().registerEvent(Event.Type.CUSTOM_EVENT, spoutScreenListener, Priority.Normal, plugin);
}
public static Color getRetroColor(SkillType type)
{
switch(type)
{
case ACROBATICS:
return new Color((float) LoadProperties.acrobatics_r, (float) LoadProperties.acrobatics_g, (float) LoadProperties.acrobatics_b, 1);
case ARCHERY:
return new Color((float) LoadProperties.archery_r, (float)LoadProperties.archery_g, (float)LoadProperties.archery_b, 1f);
case AXES:
return new Color((float) LoadProperties.axes_r, (float)LoadProperties.axes_g, (float)LoadProperties.axes_b, 1f);
case EXCAVATION:
return new Color((float)LoadProperties.excavation_r, (float)LoadProperties.excavation_g, (float)LoadProperties.excavation_b, 1f);
case HERBALISM:
return new Color((float)LoadProperties.herbalism_r, (float)LoadProperties.herbalism_g, (float)LoadProperties.herbalism_b, 1f);
case MINING:
return new Color((float)LoadProperties.mining_r, (float)LoadProperties.mining_g, (float)LoadProperties.mining_b, 1f);
case REPAIR:
return new Color((float)LoadProperties.repair_r, (float)LoadProperties.repair_g, (float)LoadProperties.repair_b, 1f);
case SWORDS:
return new Color((float)LoadProperties.swords_r, (float)LoadProperties.swords_g, (float)LoadProperties.swords_b, 1f);
case TAMING:
return new Color((float)LoadProperties.taming_r, (float)LoadProperties.taming_g, (float)LoadProperties.taming_b, 1f);
case UNARMED:
return new Color((float)LoadProperties.unarmed_r, (float)LoadProperties.unarmed_g, (float)LoadProperties.unarmed_b, 1f);
case WOODCUTTING:
return new Color((float)LoadProperties.woodcutting_r, (float)LoadProperties.woodcutting_g, (float)LoadProperties.woodcutting_b, 1f);
case FISHING:
return new Color((float)LoadProperties.fishing_r, (float)LoadProperties.fishing_g, (float)LoadProperties.fishing_b, 1f);
default:
return new Color(0.3f, 0.3f, 0.75f, 1f);
}
}
public static SpoutPlayer getSpoutPlayer(String playerName)
{
for(Player x : Bukkit.getServer().getOnlinePlayers())
{
if(x.getName().equalsIgnoreCase(playerName))
{
return SpoutManager.getPlayer(x);
}
}
return null;
}
public static void playSoundForPlayer(SoundEffect effect, Player player, Location location)
{
//Contrib stuff
SoundManager SM = SpoutManager.getSoundManager();
SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
SM.playSoundEffect(sPlayer, effect, location);
}
public static void playRepairNoise(Player player)
{
SoundManager SM = SpoutManager.getSoundManager();
SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
SM.playCustomSoundEffect(Bukkit.getServer().getPluginManager().getPlugin("mcMMO"), sPlayer, "http://mcmmo.rycochet.net/mcmmo/Sound/repair.wav", false);
}
public static void playLevelUpNoise(Player player)
{
SoundManager SM = SpoutManager.getSoundManager();
SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
SM.playCustomSoundEffect(Bukkit.getServer().getPluginManager().getPlugin("mcMMO"), sPlayer, "http://mcmmo.rycochet.net/mcmmo/Sound/level.wav", false);
}
public static void levelUpNotification(SkillType skillType, SpoutPlayer sPlayer)
{
PlayerProfile PP = Users.getProfile(sPlayer);
Material mat = null;
switch(skillType)
{
case TAMING:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.PORK;
break;
case 2:
mat = Material.PORK;
break;
case 3:
mat = Material.GRILLED_PORK;
break;
case 4:
mat = Material.GRILLED_PORK;
break;
case 5:
mat = Material.BONE;
break;
}
break;
case MINING:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.COAL_ORE;
break;
case 2:
mat = Material.IRON_ORE;
break;
case 3:
mat = Material.GOLD_ORE;
break;
case 4:
mat = Material.LAPIS_ORE;
break;
case 5:
mat = Material.DIAMOND_ORE;
break;
}
break;
case WOODCUTTING:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.WOOD;
break;
case 2:
mat = Material.WOOD;
break;
case 3:
mat = Material.WOOD;
break;
case 4:
mat = Material.LOG;
break;
case 5:
mat = Material.LOG;
break;
}
break;
case REPAIR:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.COBBLESTONE;
break;
case 2:
mat = Material.IRON_BLOCK;
break;
case 3:
mat = Material.GOLD_BLOCK;
break;
case 4:
mat = Material.LAPIS_BLOCK;
break;
case 5:
mat = Material.DIAMOND_BLOCK;
break;
}
break;
case HERBALISM:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.YELLOW_FLOWER;
break;
case 2:
mat = Material.RED_ROSE;
break;
case 3:
mat = Material.BROWN_MUSHROOM;
break;
case 4:
mat = Material.RED_MUSHROOM;
break;
case 5:
mat = Material.PUMPKIN;
break;
}
break;
case ACROBATICS:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.LEATHER_BOOTS;
break;
case 2:
mat = Material.CHAINMAIL_BOOTS;
break;
case 3:
mat = Material.IRON_BOOTS;
break;
case 4:
mat = Material.GOLD_BOOTS;
break;
case 5:
mat = Material.DIAMOND_BOOTS;
break;
}
break;
case SWORDS:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.WOOD_SWORD;
break;
case 2:
mat = Material.STONE_SWORD;
break;
case 3:
mat = Material.IRON_SWORD;
break;
case 4:
mat = Material.GOLD_SWORD;
break;
case 5:
mat = Material.DIAMOND_SWORD;
break;
}
break;
case ARCHERY:
mat = Material.ARROW;
break;
case UNARMED:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.LEATHER_HELMET;
break;
case 2:
mat = Material.CHAINMAIL_HELMET;
break;
case 3:
mat = Material.IRON_HELMET;
break;
case 4:
mat = Material.GOLD_HELMET;
break;
case 5:
mat = Material.DIAMOND_HELMET;
break;
}
break;
case EXCAVATION:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.WOOD_SPADE;
break;
case 2:
mat = Material.STONE_SPADE;
break;
case 3:
mat = Material.IRON_SPADE;
break;
case 4:
mat = Material.GOLD_SPADE;
break;
case 5:
mat = Material.DIAMOND_SPADE;
break;
}
break;
case AXES:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.WOOD_AXE;
break;
case 2:
mat = Material.STONE_AXE;
break;
case 3:
mat = Material.IRON_AXE;
break;
case 4:
mat = Material.GOLD_AXE;
break;
case 5:
mat = Material.DIAMOND_AXE;
break;
}
break;
case FISHING:
switch(getNotificationTier(PP.getSkillLevel(skillType)))
{
case 1:
mat = Material.RAW_FISH;
break;
case 2:
mat = Material.RAW_FISH;
break;
case 3:
mat = Material.COOKED_FISH;
break;
case 4:
mat = Material.COOKED_FISH;
break;
case 5:
mat = Material.FISHING_ROD;
break;
}
default:
mat = Material.WATCH;
break;
}
sPlayer.sendNotification(ChatColor.GREEN+"Level Up!", ChatColor.YELLOW+m.getCapitalized(skillType.toString())+ChatColor.DARK_AQUA+" ("+ChatColor.GREEN+PP.getSkillLevel(skillType)+ChatColor.DARK_AQUA+")", mat);
playLevelUpNoise(sPlayer);
}
public static Integer getNotificationTier(Integer level)
{
if(level < 200)
return 1;
else if (level >= 200 && level < 400)
return 2;
else if (level >= 400 && level < 600)
return 3;
else if (level >= 600 && level < 800)
return 4;
else
return 5;
}
public static Integer getXpInc(int skillxp, int xptolevel, HUDType hud)
{
if(hud == HUDType.STANDARD)
{
double percentage = (double) skillxp/xptolevel;
double inc = 0.0039370078740157;
return (int) (percentage/inc);
} else if (hud == HUDType.RETRO)
{
double percentage = (double) skillxp/xptolevel;
double inc = 0.0079365079365079;
return (int) (percentage/inc);
} else {
return 1;
}
}
public static void updateXpBar(Player player)
{
playerHUDs.get(player).updateXpBarDisplay(Users.getProfile(player).getHUDType(), player);
}
public static String getUrlBar(Integer number)
{
if(number.toString().toCharArray().length == 1)
{
return "xpbar_inc00"+number+".png";
} else if (number.toString().toCharArray().length == 2)
{
return "xpbar_inc0"+number+".png";
} else {
return "xpbar_inc"+number+".png";
}
}
public static String getUrlIcon(SkillType skillType)
{
return m.getCapitalized(skillType.toString())+".png";
}
public static boolean shouldBeFilled(PlayerProfile PP)
{
return PP.getXpBarInc() < getXpInc(PP.getSkillXpLevel(PP.getLastGained()), PP.getXpToLevel(PP.getLastGained()), HUDType.STANDARD);
}
}

View File

@ -0,0 +1,269 @@
/*
* This file is from 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 <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.spout;
import java.util.ArrayList;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import org.bukkit.entity.*;
import org.getspout.spoutapi.gui.Container;
import org.getspout.spoutapi.gui.GenericContainer;
import org.getspout.spoutapi.gui.Widget;
import org.getspout.spoutapi.gui.WidgetAnchor;
import org.getspout.spoutapi.player.SpoutPlayer;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.party.Party;
import com.gmail.nossr50.spout.util.GenericLivingEntity;
public class mmoHelper
{
/**
* A map of player containers, each container is their party bar
*/
public static HashMap<Player, GenericContainer> containers = new HashMap<Player, GenericContainer>();
/**
* Get the percentage health of a Player.
* @param player The Player we're interested in
* @return The percentage of max health
*/
public static int getHealth(Entity player) {
if (player != null && player instanceof LivingEntity) {
try {
return Math.min(((LivingEntity) player).getHealth() * 5, 100);
} catch (Exception e) {
}
}
return 0;
}
/**
* Get the colour of a LivingEntity target from a player's point of view.
* @param player The player viewing the target
* @param target The target to name
* @return The name to use
*/
public static String getColor(Player player, LivingEntity target) {
if (target instanceof Player) {
if (((Player) target).isOp()) {
return ChatColor.GOLD.toString();
}
return ChatColor.YELLOW.toString();
} else {
if (target instanceof Monster) {
if (player != null && player.equals(((Monster) target).getTarget())) {
return ChatColor.RED.toString();
} else {
return ChatColor.YELLOW.toString();
}
} else if (target instanceof WaterMob) {
return ChatColor.GREEN.toString();
} else if (target instanceof Flying) {
return ChatColor.YELLOW.toString();
} else if (target instanceof Animals) {
if (player != null && player.equals(((Animals) target).getTarget())) {
return ChatColor.RED.toString();
} else if (target instanceof Tameable) {
Tameable pet = (Tameable) target;
if (pet.isTamed()) {
return ChatColor.GREEN.toString();
} else {
return ChatColor.YELLOW.toString();
}
} else {
return ChatColor.GRAY.toString();
}
} else {
return ChatColor.GRAY.toString();
}
}
}
/**
* Get the percentage armour of a Player.
* @param player The Player we're interested in
* @return The percentage of max armour
*/
public static int getArmor(Entity player) {
if (player != null && player instanceof Player) {
int armor = 0, max, multi[] = {15, 30, 40, 15};
ItemStack inv[] = ((Player) player).getInventory().getArmorContents();
for (int i = 0; i < inv.length; i++) {
max = inv[i].getType().getMaxDurability();
if (max >= 0) {
armor += multi[i] * (max - inv[i].getDurability()) / max;
}
}
return armor;
}
return 0;
}
public static String getSimpleName(LivingEntity target, boolean showOwner) {
String name = "";
if (target instanceof Player) {
if (LoadProperties.showDisplayName) {
name += ((Player) target).getName();
} else {
name += ((Player) target).getDisplayName();
}
} else if (target instanceof HumanEntity) {
name += ((HumanEntity) target).getName();
} else {
if (target instanceof Tameable) {
if (((Tameable) target).isTamed()) {
if (showOwner && ((Tameable) target).getOwner() instanceof Player) {
if (LoadProperties.showDisplayName) {
name += ((Player) ((Tameable) target).getOwner()).getName() + "'s ";
} else {
name += ((Player) ((Tameable) target).getOwner()).getDisplayName() + "'s ";
}
} else {
name += "Pet ";
}
}
}
if (target instanceof Chicken) {
name += "Chicken";
} else if (target instanceof Cow) {
name += "Cow";
} else if (target instanceof Creeper) {
name += "Creeper";
} else if (target instanceof Ghast) {
name += "Ghast";
} else if (target instanceof Giant) {
name += "Giant";
} else if (target instanceof Pig) {
name += "Pig";
} else if (target instanceof PigZombie) {
name += "PigZombie";
} else if (target instanceof Sheep) {
name += "Sheep";
} else if (target instanceof Slime) {
name += "Slime";
} else if (target instanceof Skeleton) {
name += "Skeleton";
} else if (target instanceof Spider) {
name += "Spider";
} else if (target instanceof Squid) {
name += "Squid";
} else if (target instanceof Wolf) {
name += "Wolf";
} else if (target instanceof Zombie) {
name += "Zombie";
} else if (target instanceof Monster) {
name += "Monster";
} else if (target instanceof Creature) {
name += "Creature";
} else {
name += "Unknown";
}
}
return name;
}
public static LivingEntity[] getPets(HumanEntity player) {
ArrayList<LivingEntity> pets = new ArrayList<LivingEntity>();
if (player != null && (!(player instanceof Player) || ((Player) player).isOnline())) {
String name = player.getName();
for (World world : Bukkit.getServer().getWorlds()) {
for (LivingEntity entity : world.getLivingEntities()) {
if (entity instanceof Tameable && ((Tameable) entity).isTamed() && ((Tameable) entity).getOwner() instanceof Player) {
if (name.equals(((Player) ((Tameable) entity).getOwner()).getName())) {
pets.add(entity);
}
}
}
}
}
LivingEntity[] list = new LivingEntity[pets.size()];
pets.toArray(list);
return list;
}
public static void update(Player player)
{
//boolean show_pets = true;
Container container = containers.get(player);
if (container != null)
{
int index = 0;
Widget[] bars = container.getChildren();
for (String name : Party.getInstance().getPartyMembersByName(player).meFirst(player.getName()))
{
GenericLivingEntity bar;
if (index >= bars.length)
{
container.addChild(bar = new GenericLivingEntity());
} else {
bar = (GenericLivingEntity)bars[index];
}
bar.setEntity(name, Party.getInstance().isPartyLeader(name, Users.getProfile(Bukkit.getServer().getPlayer(name)).getParty()) ? ChatColor.GREEN + "@" : "");
//bar.setTargets(show_pets ? getPets(Bukkit.getServer().getPlayer(name)) : null);
index++;
}
while (index < bars.length) {
container.removeChild(bars[index++]);
}
container.updateLayout();
}
}
public static void initialize(SpoutPlayer sPlayer, Plugin plugin)
{
GenericContainer container = new GenericContainer();
container.setAlign(WidgetAnchor.TOP_LEFT)
.setAnchor(WidgetAnchor.TOP_LEFT)
.setX(3)
.setY(3)
.setWidth(427)
.setHeight(240)
.setFixed(true);
mmoHelper.containers.put(sPlayer, container);
sPlayer.getMainScreen().attachWidget(plugin, container);
}
/**
* Update all parties.
*/
public static void updateAll() {
for(Player x : Bukkit.getServer().getOnlinePlayers())
{
if(Users.getProfile(x).inParty())
{
update(x);
}
}
}
}

View File

@ -0,0 +1,112 @@
/*
* 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 <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.spout.util;
import java.util.ArrayList;
/**
* Case insensitive ArrayList<String>.
* Overrides the .contains(), .indexOf(), .lastIndexOf() and .remove() methods.
*/
public class ArrayListString extends ArrayList<String> {
private static final long serialVersionUID = -8111006526598412404L;
/**
* Returns true if this list contains the specified string.
* @param o String whose presence in this list is to be tested
* @return true if this list contains the specified string
*/
public boolean contains(String o) {
for (String e : this) {
if (o == null ? e == null : o.equalsIgnoreCase(e)) {
return true;
}
}
return false;
}
/**
* Returns the index of the first occurrence of the specified string in this list, or -1 if this list does not contain the string.
* @param o String to search for
* @return The index of the first occurrence of the specified string in this list, or -1 if this list does not contain the string
*/
public int indexOf(String o) {
for (int i = 0; i < this.size(); i++) {
if (o == null ? get(i) == null : o.equalsIgnoreCase(get(i))) {
return i;
}
}
return -1;
}
/**
* Returns the index of the last occurrence of the specified string in this list, or -1 if this list does not contain the string.
* @param o String to search for
* @return The index of the last occurrence of the specified string in this list, or -1 if this list does not contain the string
*/
public int lastIndexOf(String o) {
for (int i = size() - 1; i >= 0; i--) {
if (o == null ? get(i) == null : o.equalsIgnoreCase(get(i))) {
return i;
}
}
return -1;
}
/**
* Removes the first occurrence of the specified string from this list, if it is present. If the list does not contain the string, it is unchanged.
* @param o String to be removed from this list, if present
* @return true if this list contained the specified string
*/
public boolean remove(String o) {
int i = indexOf(o);
if (i != -1) {
remove(i);
return true;
}
return false;
}
/**
* Returns the element at the specified position in this list.
* This is for finding the correct capitalisation of an element.
* @param index String to search for
* @return the correctly capitalised element
*/
public String get(String index) {
int i = this.indexOf(index);
if (i != -1) {
return this.get(i);
}
return null;
}
public ArrayListString meFirst(String name) {
ArrayListString copy = new ArrayListString();
if (this.contains(name)) {
copy.add(name);
}
for (String next : this) {
if (!next.equalsIgnoreCase(name)) {
copy.add(next);
}
}
return copy;
}
}

View File

@ -0,0 +1,65 @@
/*
* This file is part of mmoMinecraft (https://github.com/mmoMinecraftDev).
*
* 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 <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.spout.util;
import org.getspout.spoutapi.gui.GenericTexture;
import com.gmail.nossr50.config.LoadProperties;
public final class GenericFace extends GenericTexture {
private static String facePath = "http://face.rycochet.net/";
private static int defaultSize = 8;
private String name;
public GenericFace() {
this("", defaultSize);
}
public GenericFace(String name) {
this(name, defaultSize);
}
public GenericFace(String name, int size) {
if (LoadProperties.showFaces) {
this.setWidth(size).setHeight(size).setFixed(true);
setName(name);
} else {
this.setVisible(false);
}
}
public String getName() {
return name;
}
public GenericFace setName(String name) {
if (LoadProperties.showFaces) {
this.name = name == null ? "" : name;
super.setUrl(facePath + this.name + ".png");
super.setDirty(true);
}
return this;
}
public GenericFace setSize(int size) {
if (LoadProperties.showFaces) {
super.setWidth(size).setHeight(size);
}
return this;
}
}

View File

@ -0,0 +1,227 @@
/*
* This file is part of mmoHelperMinecraft (https://github.com/mmoHelperMinecraftDev).
*
* mmoHelperMinecraft 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 <http://www.gnu.org/licenses/>.
*/
package com.gmail.nossr50.spout.util;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.getspout.spoutapi.gui.*;
import com.gmail.nossr50.spout.mmoHelper;
public class GenericLivingEntity extends GenericContainer {
private Container _space;
private Label _label;
private Gradient _health;
private Gradient _armor;
private GenericFace _face;
private int health = 100;
private int armor = 100;
private int def_width = 80;
private int def_height = 14;
private boolean target = false;
String face = "~";
String label = "";
public GenericLivingEntity() {
super();
Color black = new Color(0, 0, 0, 0.75f);
this.addChildren(
new GenericContainer( // Used for the bar, this.children with an index 1+ are targets
_space = (Container) new GenericContainer()
.setMinWidth(def_width / 4)
.setMaxWidth(def_width / 4)
.setVisible(target),
new GenericContainer(
new GenericGradient()
.setTopColor(black)
.setBottomColor(black)
.setPriority(RenderPriority.Highest),
new GenericContainer(
_health = (Gradient) new GenericGradient(),
_armor = (Gradient) new GenericGradient()
) .setMargin(1)
.setPriority(RenderPriority.High),
new GenericContainer(
_face = (GenericFace) new GenericFace()
.setMargin(3, 0, 3, 3),
_label = (Label) new GenericLabel()
.setMargin(3)
) .setLayout(ContainerType.HORIZONTAL)
) .setLayout(ContainerType.OVERLAY)
) .setLayout(ContainerType.HORIZONTAL)
.setMargin(0, 0, 1, 0)
.setFixed(true)
.setWidth(def_width)
.setHeight(def_height)
) .setAlign(WidgetAnchor.TOP_LEFT)
.setFixed(true)
.setWidth(def_width)
.setHeight(def_height + 1);
this.setHealthColor(new Color(1f, 0, 0, 0.75f));
this.setArmorColor(new Color(0.75f, 0.75f, 0.75f, 0.75f));
}
/**
* Set the display from a possibly offline player
* @param name
* @return
*/
public GenericLivingEntity setEntity(String name) {
return setEntity(name, "");
}
/**
* Set the display from a possibly offline player
* @param name
* @param prefix Place before the name
* @return
*/
public GenericLivingEntity setEntity(String name, String prefix) {
Player player = this.getPlugin().getServer().getPlayer(name);
if (player != null && player.isOnline()) {
return setEntity(player, prefix);
}
setHealth(0);
setArmor(0);
setLabel((!"".equals(prefix) ? prefix : "") + mmoHelper.getColor(screen != null ? screen.getPlayer() : null, null) + name);
setFace("~" + name);
return this;
}
/**
* Set the display from a player or living entity
* @param entity
* @return
*/
public GenericLivingEntity setEntity(LivingEntity entity) {
return setEntity(entity, "");
}
/**
* Set the display from a player or living entity
* @param entity
* @param prefix Place before the name
* @return
*/
public GenericLivingEntity setEntity(LivingEntity entity, String prefix) {
if (entity != null && entity instanceof LivingEntity) {
setHealth(mmoHelper.getHealth(entity)); // Needs a maxHealth() check
setArmor(mmoHelper.getArmor(entity));
setLabel((!"".equals(prefix) ? prefix : "") + mmoHelper.getColor(screen != null ? screen.getPlayer() : null, entity) + mmoHelper.getSimpleName(entity, !target));
setFace(entity instanceof Player ? ((Player)entity).getName() : "+" + mmoHelper.getSimpleName(entity,false).replaceAll(" ", ""));
} else {
setHealth(0);
setArmor(0);
setLabel("");
setFace("");
}
return this;
}
/**
* Set the targets of this entity - either actual targets, or pets etc
* @param targets
* @return
*/
public GenericLivingEntity setTargets(LivingEntity... targets) {
Widget[] widgets = this.getChildren();
if (targets == null) {
targets = new LivingEntity[0]; // zero-length array is easier to handle
}
for (int i=targets.length + 1; i<widgets.length; i++) {
this.removeChild(widgets[i]);
}
for (int i=0; i<targets.length; i++) {
GenericLivingEntity child;
if (widgets.length > i + 1) {
child = (GenericLivingEntity) widgets[i+1];
} else {
this.addChild(child = new GenericLivingEntity());
}
child.setTarget(true);
child.setEntity(targets[i]);
}
setHeight((targets.length + 1) * (def_height + 1));
updateLayout();
return this;
}
public GenericLivingEntity setTarget(boolean target) {
if (this.target != target) {
this.target = target;
_space.setVisible(target);
updateLayout();
}
return this;
}
public GenericLivingEntity setHealth(int health) {
if (this.health != health) {
this.health = health;
updateLayout();
}
return this;
}
public GenericLivingEntity setHealthColor(Color color) {
_health.setTopColor(color).setBottomColor(color);
return this;
}
public GenericLivingEntity setArmor(int armor) {
if (this.armor != armor) {
this.armor = armor;
updateLayout();
}
return this;
}
public GenericLivingEntity setArmorColor(Color color) {
_armor.setTopColor(color).setBottomColor(color);
return this;
}
public GenericLivingEntity setLabel(String label) {
if (!this.label.equals(label)) {
this.label = label;
_label.setText(label).setDirty(true);
updateLayout();
}
return this;
}
public GenericLivingEntity setFace(String name) {
if (!this.face.equals(name)) {
this.face = name;
_face.setVisible(!name.isEmpty());
_face.setName(name);
updateLayout();
}
return this;
}
@Override
public Container updateLayout() {
super.updateLayout();
_armor.setWidth((_armor.getContainer().getWidth() * armor) / 100).setDirty(true);
_health.setWidth((_health.getContainer().getWidth() * health) / 100).setDirty(true);
return this;
}
}