Version 1.0.33

This commit is contained in:
nossr50 2011-07-09 17:18:00 -07:00
parent e9099a286a
commit 5194f23df1
43 changed files with 5414 additions and 3163 deletions

View File

@ -1,11 +1,169 @@
Changelog: Changelog:
#Versions without changelogs probably had very small misc fixes, like tweaks to the source code #Versions without changelogs probably had very small misc fixes, like tweaks to the source code
Version 1.0.33
Fixed the toggle for the Excavation drop 'Cocoa Beans'
Fixed bug where Unarmed users could disarm without being bare handed
Cocoa Beans now have an XP modifier in config.yml
You can now toggle whether or not Mobspawners will give XP (in config.yml)
MySQL version now makes requests to the MySQL server less frequently (should help performance)
Fixed bug with Skull Splitter hitting the user
Version 1.0.32
Added "General.Performance.Print_Reports" node to config.yml to help identify causes of performance issues
Fixed bug of swords users hurting themselves with serrated strikes
Version 1.0.31
Fixed bug of trying to cast Animals to non-animals
Version 1.0.30
Mobs that spawn from spawners no longer give XP (for reals this time)
Version 1.0.29
Mobs that spawn from spawners no longer give XP (again)
Fixed bug where Serrated Strikes did not Bleed additional targets
Identified and solved a potential memory leak in Bleed Simulation
Renamed the Object Config to Misc and rewrote parts of it
Rewrote Party/Admin/God toggles
Added Polish language support (pl)
Version 1.0.28
Actually fixed /stats showing excavation values for swords
Made some improvements to how Bleed Simulation was handled for different entity types
Obsidian now does normal durability damage during Super Breaker
Version 1.0.27
Fixed /stats showing excavation values for swords
Hopefully fixed a wide range of NPE errors
Updated German (de) localization
Version 1.0.26
Fixed accidentally making power levels go above 9,000
Version 1.0.25
Compatible with the latest CB
Beast Lore now functions correctly
Wolves are no longer invincible to players
Changed the look of Beast Lore
Skill info pages now show your stat in that skill (if you have permission)
/stats and /whois has been alphabetized and divided into three categories (Gathering/Combat/Misc)
Abilities will not trigger on Trap Doors
Version 1.0.24
Now compatible with latest RB (928)
Taming now receives XP from your wolves harming foes
Taming is now easier to level
Green Thumb now drops seeds when harvesting Wheat
Version 1.0.23
Modified Bleed Simulation to fix performance problems
Rewrote MySpawn to be more efficient when calculating time left
Rewrote Skills to be more efficient when calculating time left
Version 1.0.22
Added 'Name' nodes to commands for renaming them
Version 1.0.21
Fixed Skull Splitter length in /axes displaying incorrectly
Fire rate limiter now correctly uses the value in the config file
Stone XP now correctly uses the value in the config file
Cobble -> Mossy now correctly uses the value in the config file
Removed setmyspawn from config file as it serves no purpose
All commands now have an 'Enabled' node in the config file that when set to false disables the command completely
Fixed color scheme inconsistency for Mining in /whois results
Version 1.0.20
Fixed Array Index Out of Bounds error
Version 1.0.19
Removed a failsafe for the Timer that is no longer necessary (should improve performance)
Fixed /myspawn not working by rewriting it :3
Fixed exploit where players could break a freshly placed mushroom for XP
MySQL User Passwords can now be blank (Although you really should have a password...)
Fixed a few NPE errors
Version 1.0.18
Fixed MySQL default TablePrefix
Fixed Wheat not being configurable
Version 1.0.17
Brand new YAML Configuration file
Ability to configure XP for all gathering skills in config file
German Language added to mcMMO
French Language added to mcMMO
MySpawn will no longer heal players
/<skillname> commands now also check for their localized names for displaying help
Added many more Strings to localization files
Added more safeguards to MySpawn for NPE
Fixed bug where Tree Feller Radius depended on WoodCutting XP rather than Skill Level
Fixed bug where Readying a Hoe returned a missing localization string
Added some safeguards into Bleed Simulation to prevent possible memory leaks
Performance improvements to storing/calling Skill/XP Values
Plugged a potential memory leak with PlayerProfiles not being removed correctly
Disabled the mob spawner camping anti-exploit in favor of performance
Version 1.0.16
Fixed bug where localization file failed to load
Changed en_US to lowercase
mcMMO now requires locale files to be in lowercase
Fixed a few strings missing from the localization file
Version 1.0.15
Removed leftover code that spammed SQL errors
Version 1.0.14
Added many missed strings into localization
Finnish Localization updated for the new strings
Green Thumb should respect Block Protection plugins now
Fixed Number Format Exception when loading a PlayerProfile
Version 1.0.13
Fixed bug/NPE where stats would not load and therefore 'reset' for players
Fixed NPE involving /ptp
Added "enableMOTD" setting to properties file
Version 1.0.12
Fixed another NPE error
Non-Gathering skills should correctly gain XP if PVP is set to false now
Localization will now support language codes that do not have two parts like "fi"
Fixed bug where Wiki MOTD message would not be loaded from localization file
Version 1.0.11
Fixed bug where players could not gain experience in several skills
Removed PVP flag from mcmmo.properties as its not needed anymore
Fixed a few NPE errors
Mushroom XP reduced from 25 to 15
Fixed an exploit where players who just logged in could be farmed for experience because they were invulnerable
Version 1.0.10
Added Localization/String Customization
Mushroom XP reduced from 40 to 25
Removed "clears inventory" warning in /mcc for /myspawn since this no longer happens
Version 1.0.09
Fixed the NPE that occurs when players gain experience (Sorry!)
Fixed bug where /myspawn & /clearmyspawn would work if MySpawn was disabled in the properties file
Changed strings containing "MMO" to read "mcMMO"
Removed a lot of unused or unnecessary variables from the PlayerProfiles in mcMMO, this should lower the memory footprint
Added getXpToLevel() for modders
Version 1.0.08
Added removeXP() for modders
Fixed bug where stone swords only repaired by 33% instead of 50%
Fixed bug where stone/wooden hoes wouldn't repair
Big overhaul to how skill values and xp values were handled in the code
Modifying the players skill levels now sets the corresponding skill xp to zero
Using Serrated Strikes/Skull Splitter on mobs should no longer harm nearby players when PVP is disabled
Switching to another weapon after firing your bow should no longer trigger procs for that weapon when the arrow hits
Slimes/Ghasts now give XP for combat skills
Added "EnableHpRegeneration" property setting
Added "EnableMySpawn" property setting
Version 1.0.07 Version 1.0.07
Added more repair customization by solarcloud7
Leaderboards ignore players with the respective stat at 0 Leaderboards ignore players with the respective stat at 0
Reconnecting to MySQL will reload player data Reconnecting to MySQL will reload player data
Fixed a NPE with MySQL's Leaderboards Fixed a NPE with MySQL's Leaderboards
Removed "Loop iteration" debug message from mcMMO Removed "Loop iteration" debug message from mcMMO
Added more repair customization by solarcloud7
Version 1.0.06 Version 1.0.06
MySQL will attempt to reconnect if the connection is closed MySQL will attempt to reconnect if the connection is closed

View File

@ -1,27 +1,14 @@
package com.gmail.nossr50; package com.gmail.nossr50;
import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Animals; import org.bukkit.World;
import org.bukkit.entity.Creature; import org.bukkit.entity.*;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Monster;
import org.bukkit.entity.PigZombie;
import org.bukkit.entity.Player;
import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Spider;
import org.bukkit.entity.Squid;
import org.bukkit.entity.Wolf;
import org.bukkit.entity.Zombie;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageByProjectileEvent; import org.bukkit.event.entity.EntityDamageByProjectileEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.party.Party; import com.gmail.nossr50.party.Party;
@ -33,17 +20,48 @@ import com.gmail.nossr50.skills.Taming;
import com.gmail.nossr50.skills.Unarmed; import com.gmail.nossr50.skills.Unarmed;
public class Combat { public class Combat {
private static mcMMO plugin; public static void combatChecks(EntityDamageEvent event, mcMMO pluginx)
public Combat(mcMMO instance) { {
plugin = instance;
}
public static void combatChecks(EntityDamageEvent event, Plugin pluginx){
if(event.isCancelled() || event.getDamage() == 0) if(event.isCancelled() || event.getDamage() == 0)
return; return;
/*
* CHANGE DAMAGE BASED ON DIFFICULTY
*/
if(event instanceof EntityDamageByEntityEvent)
{
EntityDamageByEntityEvent eventx = (EntityDamageByEntityEvent) event;
/*
* MOB DIFFICULTY STUFF
*/
/*
if(eventx.getDamager() instanceof Monster)
{
Integer theMob = eventx.getDamager().getEntityId();
//System.out.println("FIRST STAGE");
if(pluginx.mob.mobDiff.containsKey(theMob))
{
//System.out.println("STAGE TWO");
if(eventx.getEntity() instanceof Player)
{
Player player = (Player) eventx.getEntity();
player.sendMessage("Mob Difficulty: "+((int) pluginx.mob.mobDiff.get(theMob)+1));
//System.out.println("STAGE THREE");
//SETUP DMG
event.setDamage((pluginx.mob.mobDiff.get(theMob)+1) * event.getDamage());
}
} else
{
pluginx.mob.assignDifficulty(eventx.getDamager());
}
}
*/
/* /*
* OFFENSIVE CHECKS FOR PLAYERS VERSUS ENTITIES * OFFENSIVE CHECKS FOR PLAYERS VERSUS ENTITIES
*/ */
if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Player) if(((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
{ {
//Declare Things //Declare Things
EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event; EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
@ -53,23 +71,29 @@ public class Combat {
//Damage modifiers //Damage modifiers
if(mcPermissions.getInstance().unarmed(attacker) && attacker.getItemInHand().getTypeId() == 0) //Unarmed if(mcPermissions.getInstance().unarmed(attacker) && attacker.getItemInHand().getTypeId() == 0) //Unarmed
Unarmed.unarmedBonus(attacker, eventb); Unarmed.unarmedBonus(attacker, eventb);
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker) && PPa.getAxesInt() >= 500) if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker) && PPa.getSkill("axes") >= 500)
event.setDamage(event.getDamage()+4); event.setDamage(event.getDamage()+4);
//If there are any abilities to activate //If there are any abilities to activate
combatAbilityChecks(attacker, PPa, pluginx); combatAbilityChecks(attacker, PPa, pluginx);
//Check for offensive procs //Check for offensive procs
if(!(event instanceof EntityDamageByProjectileEvent))
{
if(mcPermissions.getInstance().axes(attacker)) if(mcPermissions.getInstance().axes(attacker))
Axes.axeCriticalCheck(attacker, eventb, pluginx); //Axe Criticals Axes.axeCriticalCheck(attacker, eventb, pluginx); //Axe Criticals
if(!Config.getInstance().isBleedTracked(event.getEntity())) //Swords Bleed
Swords.bleedCheck(attacker, event.getEntity(), pluginx); if(!pluginx.misc.bleedTracker.contains((LivingEntity) event.getEntity())) //Swords Bleed
if(event.getEntity() instanceof Player && mcPermissions.getInstance().unarmed(attacker)){ Swords.bleedCheck(attacker, (LivingEntity)event.getEntity(), pluginx);
if(event.getEntity() instanceof Player && mcPermissions.getInstance().unarmed(attacker))
{
Player defender = (Player)event.getEntity(); Player defender = (Player)event.getEntity();
Unarmed.disarmProcCheck(attacker, defender); Unarmed.disarmProcCheck(attacker, defender);
} }
//Modify the event damage if Attacker is Berserk //Modify the event damage if Attacker is Berserk
if(PPa.getBerserkMode()) if(PPa.getBerserkMode())
event.setDamage(event.getDamage() + (event.getDamage() / 2)); event.setDamage(event.getDamage() + (event.getDamage() / 2));
@ -87,19 +111,21 @@ public class Combat {
PlayerProfile PPd = Users.getProfile(defender); PlayerProfile PPd = Users.getProfile(defender);
if(attacker != null && defender != null && LoadProperties.pvpxp) if(attacker != null && defender != null && LoadProperties.pvpxp)
{ {
if(System.currentTimeMillis() >= PPd.getRespawnATS() + 5000 && defender.getHealth() >= 1) if(System.currentTimeMillis() >= PPd.getRespawnATS() + 5000
&& ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis()
&& defender.getHealth() >= 1)
{ {
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)) if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier); PPa.addAxesXP((event.getDamage() * 2) * LoadProperties.pvpxprewardmodifier);
if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker)) if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier); PPa.addSwordsXP((event.getDamage() * 2) * LoadProperties.pvpxprewardmodifier);
if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker)) if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier); PPa.addUnarmedXP((event.getDamage() * 2) * LoadProperties.pvpxprewardmodifier);
} }
} }
} }
if(event.getEntity() instanceof Monster) if(event.getEntity() instanceof Monster && !pluginx.misc.mobSpawnerList.contains(event.getEntity()))
{ {
int xp = 0; int xp = 0;
if(event.getEntity() instanceof Creeper) if(event.getEntity() instanceof Creeper)
@ -112,6 +138,26 @@ public class Combat {
xp = (event.getDamage() * 2) * LoadProperties.xpGainMultiplier; xp = (event.getDamage() * 2) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof PigZombie) if(event.getEntity() instanceof PigZombie)
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier; xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof Slime)
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof Ghast)
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
if(pluginx.mob.mobDiff.containsKey(event.getEntity().getEntityId()))
{
pluginx.mob.isAggressive.put(event.getEntity().getEntityId(), true);
//ARMOR REDUCTION BASED ON ENEMY RANKING
int modifiedDmg = event.getDamage() / (pluginx.mob.mobDiff.get(event.getEntity().getEntityId())+1);
if(modifiedDmg < 1)
modifiedDmg = 1;
event.setDamage(modifiedDmg);
}
//ADJUST TO DIFFICULTY
if(pluginx.mob.mobDiff.containsKey(event.getEntity().getEntityId()))
{
xp = xp * (pluginx.mob.mobDiff.get(event.getEntity().getEntityId())+1);
}
if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker)) if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
PPa.addSwordsXP(xp); PPa.addSwordsXP(xp);
@ -122,62 +168,100 @@ public class Combat {
} }
Skills.XpCheck(attacker); Skills.XpCheck(attacker);
//Taming Debug Stuff
if(event.getEntity() instanceof Wolf) if(event.getEntity() instanceof Wolf)
{ {
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(event.getEntity(), pluginx))) Wolf theWolf = (Wolf)event.getEntity();
event.setCancelled(true);
if(attacker.getItemInHand().getTypeId() == 352 && mcPermissions.getInstance().taming(attacker)) if(attacker.getItemInHand().getTypeId() == 352 && mcPermissions.getInstance().taming(attacker))
{ {
attacker.sendMessage(ChatColor.GREEN+"**You examine the Wolf using Beast Lore**");
if(Taming.getOwnerName(event.getEntity()) != null)
attacker.sendMessage(ChatColor.DARK_GREEN+"The Beast's Master : "+Taming.getOwnerName(event.getEntity()));
else
attacker.sendMessage(ChatColor.GRAY+"This Beast has no Master...");
attacker.sendMessage(ChatColor.GREEN+"This beast has "+((Wolf)event.getEntity()).getHealth()+" Health");
event.setCancelled(true); event.setCancelled(true);
if(theWolf.isTamed())
{
attacker.sendMessage(Messages.getString("Combat.BeastLore")+" "+
Messages.getString("Combat.BeastLoreOwner", new Object[] {Taming.getOwnerName(theWolf)})+" "+
Messages.getString("Combat.BeastLoreHealthWolfTamed", new Object[] {theWolf.getHealth()}));
}
else
{
attacker.sendMessage(Messages.getString("Combat.BeastLore")+" "+
Messages.getString("Combat.BeastLoreHealthWolf", new Object[] {theWolf.getHealth()}));
} }
} }
} }
}
}
}
/* /*
* OFFENSIVE CHECKS FOR WOLVES VERSUS ENTITIES * OFFENSIVE CHECKS FOR WOLVES VERSUS ENTITIES
*/ */
if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Wolf) if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Wolf)
{ {
EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event; EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
if(Taming.hasOwner(eventb.getDamager(), pluginx)) Wolf theWolf = (Wolf) eventb.getDamager();
if(Taming.ownerOnline(theWolf, pluginx))
{ {
Player master = Taming.getOwner(eventb.getDamager(), pluginx); Player master = Taming.getOwner(theWolf, pluginx);
PlayerProfile PPo = Users.getProfile(master); PlayerProfile PPo = Users.getProfile(master);
if(mcPermissions.getInstance().taming(master)){
if(mcPermissions.getInstance().taming(master))
{
//Sharpened Claws //Sharpened Claws
if(PPo.getTamingInt() >= 750) if(PPo.getSkill("taming") >= 750)
{ {
event.setDamage(event.getDamage() + 2); event.setDamage(event.getDamage() + 2);
} }
//Gore //Gore
if(Math.random() * 1000 <= PPo.getTamingInt()) if(Math.random() * 1000 <= PPo.getSkill("taming"))
{ {
event.setDamage(event.getDamage() * 2); event.setDamage(event.getDamage() * 2);
if(event.getEntity() instanceof Player) if(event.getEntity() instanceof Player)
{ {
Player target = (Player)event.getEntity(); Player target = (Player)event.getEntity();
target.sendMessage(ChatColor.RED+"**STRUCK BY GORE**"); target.sendMessage(Messages.getString("Combat.StruckByGore")); //$NON-NLS-1$
Users.getProfile(target).setBleedTicks(2); Users.getProfile(target).setBleedTicks(2);
} }
else else
Config.getInstance().addToBleedQue(event.getEntity()); pluginx.misc.addToBleedQue((LivingEntity) event.getEntity());
master.sendMessage(ChatColor.GREEN+"**GORE**"); master.sendMessage(Messages.getString("Combat.Gore")); //$NON-NLS-1$
}
if(!event.getEntity().isDead() && !pluginx.misc.mobSpawnerList.contains(event.getEntity()))
{
int xp = 0;
if(event.getEntity() instanceof Monster)
{
if(event.getEntity() instanceof Creeper)
xp = (event.getDamage() * 6) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof Spider)
xp = (event.getDamage() * 5) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof Skeleton)
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof Zombie)
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof PigZombie)
xp = (event.getDamage() * 4) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof Slime)
xp = (event.getDamage() * 4) * LoadProperties.xpGainMultiplier;
if(event.getEntity() instanceof Ghast)
xp = (event.getDamage() * 4) * LoadProperties.xpGainMultiplier;
Users.getProfile(master).addTamingXP(xp);
}
if(event.getEntity() instanceof Player)
{
xp = (event.getDamage() * 2) * LoadProperties.xpGainMultiplier;
Users.getProfile(master).addTamingXP(xp);
}
Skills.XpCheck(master);
} }
} }
} }
} }
//Another offensive check for Archery //Another offensive check for Archery
if(event instanceof EntityDamageByProjectileEvent) if(event instanceof EntityDamageByProjectileEvent)
archeryCheck((EntityDamageByProjectileEvent) event); archeryCheck((EntityDamageByProjectileEvent) event, pluginx);
/* /*
* DEFENSIVE CHECKS * DEFENSIVE CHECKS
@ -192,29 +276,34 @@ public class Combat {
/* /*
* DEFENSIVE CHECKS FOR WOLVES * DEFENSIVE CHECKS FOR WOLVES
*/ */
if(event.getEntity() instanceof Wolf){
if(Taming.hasOwner(event.getEntity(), pluginx)) if(event.getEntity() instanceof Wolf)
{ {
Player master = Taming.getOwner(event.getEntity(), pluginx); Wolf theWolf = (Wolf) event.getEntity();
if(Taming.ownerOnline(theWolf, pluginx))
{
Player master = Taming.getOwner(theWolf, pluginx);
PlayerProfile PPo = Users.getProfile(master); PlayerProfile PPo = Users.getProfile(master);
if(mcPermissions.getInstance().taming(master)) if(mcPermissions.getInstance().taming(master))
{ {
/* /*
* TEMPORARY FIX AS WOLVES AREN'T TRIGGERING DAMAGE EVENTS WHEN ATTACKING NON PLAYERS AT THE TIME OF WRITING * TEMPORARY FIX AS WOLVES AREN'T TRIGGERING DAMAGE EVENTS WHEN ATTACKING NON PLAYERS AT THE TIME OF WRITING
*/ */
if(!event.isCancelled() && event.getCause() != DamageCause.LIGHTNING){ if(!event.isCancelled() && event.getCause() != DamageCause.LIGHTNING)
{
PPo.addTamingXP(event.getDamage() * 3); PPo.addTamingXP(event.getDamage() * 3);
Skills.XpCheck(master); Skills.XpCheck(master);
} }
//Shock-Proof //Shock-Proof
if((event.getCause() == DamageCause.ENTITY_EXPLOSION || event.getCause() == DamageCause.BLOCK_EXPLOSION) && PPo.getTamingInt() >= 500) if((event.getCause() == DamageCause.ENTITY_EXPLOSION || event.getCause() == DamageCause.BLOCK_EXPLOSION) && PPo.getSkill("taming") >= 500)
{ {
event.setDamage(2); event.setDamage(2);
} }
//Thick Fur //Thick Fur
if(PPo.getTamingInt() >= 250) if(PPo.getSkill("taming") >= 250)
event.setDamage(event.getDamage() / 2); event.setDamage(event.getDamage() / 2);
} }
} }
@ -231,24 +320,31 @@ public class Combat {
if(PPa.getFistsPreparationMode()) if(PPa.getFistsPreparationMode())
Unarmed.berserkActivationCheck(attacker, pluginx); Unarmed.berserkActivationCheck(attacker, pluginx);
} }
public static void archeryCheck(EntityDamageByProjectileEvent event){ public static void archeryCheck(EntityDamageByProjectileEvent event, mcMMO pluginx)
{
Entity y = event.getDamager(); Entity y = event.getDamager();
Entity x = event.getEntity(); Entity x = event.getEntity();
if(event.getProjectile().toString().equals("CraftArrow") && x instanceof Player){ Projectile projectile = event.getProjectile();
if(projectile.toString().equals("CraftArrow") && x instanceof Player)
{ //$NON-NLS-1$
Player defender = (Player)x; Player defender = (Player)x;
PlayerProfile PPd = Users.getProfile(defender); PlayerProfile PPd = Users.getProfile(defender);
if(PPd == null) if(PPd == null)
Users.addUser(defender); Users.addUser(defender);
if(mcPermissions.getInstance().unarmed(defender) && defender.getItemInHand().getTypeId() == 0){ if(mcPermissions.getInstance().unarmed(defender) && defender.getItemInHand().getTypeId() == 0)
if(defender != null && PPd.getUnarmedInt() >= 1000){ {
if(Math.random() * 1000 <= 500){ if(defender != null && PPd.getSkill("unarmed") >= 1000)
{
if(Math.random() * 1000 <= 500)
{
event.setCancelled(true); event.setCancelled(true);
defender.sendMessage(ChatColor.WHITE+"**ARROW DEFLECT**"); defender.sendMessage(Messages.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
return; return;
} }
} else if(defender != null && Math.random() * 1000 <= (PPd.getUnarmedInt() / 2)){ } else if(defender != null && Math.random() * 1000 <= (PPd.getSkill("unarmed") / 2))
{
event.setCancelled(true); event.setCancelled(true);
defender.sendMessage(ChatColor.WHITE+"**ARROW DEFLECT**"); defender.sendMessage(Messages.getString("Combat.ArrowDeflect")); //$NON-NLS-1$
return; return;
} }
} }
@ -256,22 +352,30 @@ public class Combat {
/* /*
* If attacker is player * If attacker is player
*/ */
if(y instanceof Player){ if(y instanceof Player)
{
Player attacker = (Player)y; Player attacker = (Player)y;
PlayerProfile PPa = Users.getProfile(attacker); PlayerProfile PPa = Users.getProfile(attacker);
if(event.getProjectile().toString().equals("CraftArrow") && mcPermissions.getInstance().archery(attacker)){ if(projectile.toString().equals("CraftArrow") && mcPermissions.getInstance().archery(attacker))
if(!Config.getInstance().isTracked(x) && event.getDamage() > 0){ { //$NON-NLS-1$
Config.getInstance().addArrowTrack(x, 0); if(!pluginx.misc.arrowTracker.containsKey(x) && event.getDamage() > 0)
if(attacker != null){ {
if(Math.random() * 1000 <= PPa.getArcheryInt()){ pluginx.misc.arrowTracker.put(x, 0);
Config.getInstance().addArrowCount(x, 1); if(attacker != null)
{
if(Math.random() * 1000 <= PPa.getSkill("archery"))
{
pluginx.misc.arrowTracker.put(x, 1);
} }
} }
} else { } else
if(event.getDamage() > 0){ {
if(event.getDamage() > 0)
{
if(attacker != null){ if(attacker != null){
if(Math.random() * 1000 <= PPa.getArcheryInt()){ if(Math.random() * 1000 <= PPa.getSkill("archery"))
Config.getInstance().addArrowCount(x, 1); {
pluginx.misc.arrowTracker.put(x, 1);
} }
} }
} }
@ -279,15 +383,15 @@ public class Combat {
/* /*
* DAMAGE MODIFIER * DAMAGE MODIFIER
*/ */
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250) if(PPa.getSkill("archery") >= 50 && PPa.getSkill("archery") < 250)
event.setDamage(event.getDamage()+1); event.setDamage(event.getDamage()+1);
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575) if(PPa.getSkill("archery") >= 250 && PPa.getSkill("archery") < 575)
event.setDamage(event.getDamage()+2); event.setDamage(event.getDamage()+2);
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725) if(PPa.getSkill("archery") >= 575 && PPa.getSkill("archery") < 725)
event.setDamage(event.getDamage()+3); event.setDamage(event.getDamage()+3);
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000) if(PPa.getSkill("archery") >= 725 && PPa.getSkill("archery") < 1000)
event.setDamage(event.getDamage()+4); event.setDamage(event.getDamage()+4);
if(PPa.getArcheryInt() >= 1000) if(PPa.getSkill("archery") >= 1000)
event.setDamage(event.getDamage()+5); event.setDamage(event.getDamage()+5);
/* /*
@ -296,27 +400,27 @@ public class Combat {
if(Math.random() * 100 >= 75){ if(Math.random() * 100 >= 75){
int ignition = 20; int ignition = 20;
if(PPa.getArcheryInt() >= 200) if(PPa.getSkill("archery") >= 200)
ignition+=20; ignition+=20;
if(PPa.getArcheryInt() >= 400) if(PPa.getSkill("archery") >= 400)
ignition+=20; ignition+=20;
if(PPa.getArcheryInt() >= 600) if(PPa.getSkill("archery") >= 600)
ignition+=20; ignition+=20;
if(PPa.getArcheryInt() >= 800) if(PPa.getSkill("archery") >= 800)
ignition+=20; ignition+=20;
if(PPa.getArcheryInt() >= 1000) if(PPa.getSkill("archery") >= 1000)
ignition+=20; ignition+=20;
if(x instanceof Player){ if(x instanceof Player){
Player Defender = (Player)x; Player Defender = (Player)x;
if(!Party.getInstance().inSameParty(attacker, Defender)){ if(!Party.getInstance().inSameParty(attacker, Defender)){
event.getEntity().setFireTicks(ignition); event.getEntity().setFireTicks(ignition);
attacker.sendMessage(ChatColor.RED+"**IGNITION**"); attacker.sendMessage(Messages.getString("Combat.Ignition")); //$NON-NLS-1$
Defender.sendMessage(ChatColor.DARK_RED+"You were struck by a burning arrow!"); Defender.sendMessage(Messages.getString("Combat.BurningArrowHit")); //$NON-NLS-1$
} }
} else { } else {
event.getEntity().setFireTicks(ignition); event.getEntity().setFireTicks(ignition);
attacker.sendMessage(ChatColor.RED+"**IGNITION**"); attacker.sendMessage(Messages.getString("Combat.Ignition")); //$NON-NLS-1$
} }
} }
/* /*
@ -324,7 +428,6 @@ public class Combat {
*/ */
if(x instanceof Monster){ if(x instanceof Monster){
//XP //XP
if(!Config.getInstance().isMobSpawnTracked(x)){
if(x instanceof Creeper) if(x instanceof Creeper)
PPa.addArcheryXP((event.getDamage() * 4) * LoadProperties.xpGainMultiplier); PPa.addArcheryXP((event.getDamage() * 4) * LoadProperties.xpGainMultiplier);
if(x instanceof Spider) if(x instanceof Spider)
@ -335,16 +438,15 @@ public class Combat {
PPa.addArcheryXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier); PPa.addArcheryXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
if(x instanceof PigZombie) if(x instanceof PigZombie)
PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier); PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
} if(x instanceof Slime)
PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
if(x instanceof Ghast)
PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
} }
/* /*
* Attacker is Player * Attacker is Player
*/ */
if(x instanceof Player){ if(x instanceof Player){
if(LoadProperties.pvp == false){
event.setCancelled(true);
return;
}
Player defender = (Player)x; Player defender = (Player)x;
PlayerProfile PPd = Users.getProfile(defender); PlayerProfile PPd = Users.getProfile(defender);
/* /*
@ -359,7 +461,8 @@ public class Combat {
/* /*
* PVP XP * PVP XP
*/ */
if(LoadProperties.pvpxp && !Party.getInstance().inSameParty(attacker, defender)){ if(LoadProperties.pvpxp && !Party.getInstance().inSameParty(attacker, defender)
&& ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis()){
PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier); PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
} }
/* /*
@ -371,16 +474,16 @@ public class Combat {
} else { } else {
loc.setPitch(-90); loc.setPitch(-90);
} }
if(PPa.getArcheryInt() >= 1000){ if(PPa.getSkill("archery") >= 1000){
if(Math.random() * 1000 <= 500){ if(Math.random() * 1000 <= 500){
defender.teleport(loc); defender.teleport(loc);
defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy."); defender.sendMessage(Messages.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed"); attacker.sendMessage(Messages.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
} }
} else if(Math.random() * 2000 <= PPa.getArcheryInt()){ } else if(Math.random() * 2000 <= PPa.getSkill("archery")){
defender.teleport(loc); defender.teleport(loc);
defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy."); defender.sendMessage(Messages.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed"); attacker.sendMessage(Messages.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
} }
} }
} }
@ -398,4 +501,11 @@ public class Combat {
((Monster) target).damage(dmg); ((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;
}
} }

View File

@ -4,7 +4,6 @@ import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap; import java.util.HashMap;
import java.util.ArrayList; import java.util.ArrayList;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;

View File

@ -1,6 +1,5 @@
package com.gmail.nossr50; package com.gmail.nossr50;
import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -50,7 +49,7 @@ public class Item {
y++; y++;
if(player != null){ if(player != null){
if(player.getLocation().getWorld().getBlockAt(block.getX(), y, block.getZ()).getType() != Material.AIR){ if(player.getLocation().getWorld().getBlockAt(block.getX(), y, block.getZ()).getType() != Material.AIR){
player.sendMessage("**CHIMAERA WING FAILED!**"); player.sendMessage(Messages.getString("Item.ChimaeraWingFail")); //$NON-NLS-1$
player.teleport(player.getLocation().getWorld().getBlockAt(block.getX(), (y - 1), block.getZ()).getLocation()); player.teleport(player.getLocation().getWorld().getBlockAt(block.getX(), (y - 1), block.getZ()).getLocation());
return; return;
} }
@ -67,12 +66,11 @@ public class Item {
} else { } else {
player.teleport(player.getWorld().getSpawnLocation()); player.teleport(player.getWorld().getSpawnLocation());
} }
player.sendMessage("**CHIMAERA WING**"); player.sendMessage(Messages.getString("Item.ChimaeraWingPass")); //$NON-NLS-1$
} else if (!Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= 10) { } else if (!Skills.cooldownOver(player, PP.getRecentlyHurt(), 60) && is.getAmount() >= 10) {
player.sendMessage("You were injured recently and must wait to use this." player.sendMessage(Messages.getString("Item.InjuredWait", new Object[] {Skills.calculateTimeLeft(player, PP.getRecentlyHurt(), 60)})); //$NON-NLS-1$
+ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, PP.getRecentlyHurt(), 60)+"s)");
} else if (is.getTypeId() == 288 && is.getAmount() <= 9){ } else if (is.getTypeId() == 288 && is.getAmount() <= 9){
player.sendMessage("You need more of that to use it"); player.sendMessage(Messages.getString("Item.NeedFeathers")); //$NON-NLS-1$
} }
} }
} }

View File

@ -13,8 +13,8 @@ import com.gmail.nossr50.datatypes.PlayerStat;
import com.gmail.nossr50.datatypes.Tree; import com.gmail.nossr50.datatypes.Tree;
public class Leaderboard { public class Leaderboard {
static String location = "plugins/mcMMO/mcmmo.users"; static String location = "plugins/mcMMO/mcmmo.users"; //$NON-NLS-1$
protected static final Logger log = Logger.getLogger("Minecraft"); protected static final Logger log = Logger.getLogger("Minecraft"); //$NON-NLS-1$
/* /*
* Read from the file * Read from the file
@ -39,11 +39,11 @@ public class Leaderboard {
//Open the user file //Open the user file
FileReader file = new FileReader(location); FileReader file = new FileReader(location);
BufferedReader in = new BufferedReader(file); BufferedReader in = new BufferedReader(file);
String line = ""; String line = ""; //$NON-NLS-1$
while((line = in.readLine()) != null) while((line = in.readLine()) != null)
{ {
String[] character = line.split(":"); String[] character = line.split(":"); //$NON-NLS-1$
String p = character[0]; String p = character[0];
@ -99,26 +99,26 @@ public class Leaderboard {
} }
in.close(); in.close();
} catch (Exception e) { } catch (Exception e) {
log.log(Level.SEVERE, "Exception while reading " log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
+ location + " (Are you sure you formatted it correctly?)", e); + location + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
} }
//Write the leader board files //Write the leader board files
leaderWrite(Mining.inOrder(), "mining"); leaderWrite(Mining.inOrder(), "mining"); //$NON-NLS-1$
leaderWrite(WoodCutting.inOrder(), "woodcutting"); leaderWrite(WoodCutting.inOrder(), "woodcutting"); //$NON-NLS-1$
leaderWrite(Repair.inOrder(), "repair"); leaderWrite(Repair.inOrder(), "repair"); //$NON-NLS-1$
leaderWrite(Unarmed.inOrder(), "unarmed"); leaderWrite(Unarmed.inOrder(), "unarmed"); //$NON-NLS-1$
leaderWrite(Herbalism.inOrder(), "herbalism"); leaderWrite(Herbalism.inOrder(), "herbalism"); //$NON-NLS-1$
leaderWrite(Excavation.inOrder(), "excavation"); leaderWrite(Excavation.inOrder(), "excavation"); //$NON-NLS-1$
leaderWrite(Archery.inOrder(), "archery"); leaderWrite(Archery.inOrder(), "archery"); //$NON-NLS-1$
leaderWrite(Swords.inOrder(), "swords"); leaderWrite(Swords.inOrder(), "swords"); //$NON-NLS-1$
leaderWrite(Axes.inOrder(), "axes"); leaderWrite(Axes.inOrder(), "axes"); //$NON-NLS-1$
leaderWrite(Acrobatics.inOrder(), "acrobatics"); leaderWrite(Acrobatics.inOrder(), "acrobatics"); //$NON-NLS-1$
leaderWrite(Taming.inOrder(), "taming"); leaderWrite(Taming.inOrder(), "taming"); //$NON-NLS-1$
leaderWrite(PowerLevel.inOrder(), "powerlevel"); leaderWrite(PowerLevel.inOrder(), "powerlevel"); //$NON-NLS-1$
} }
public static void leaderWrite(PlayerStat[] ps, String statName) public static void leaderWrite(PlayerStat[] ps, String statName)
{ {
String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
//CHECK IF THE FILE EXISTS //CHECK IF THE FILE EXISTS
File theDir = new File(theLocation); File theDir = new File(theLocation);
if(!theDir.exists()){ if(!theDir.exists()){
@ -127,14 +127,14 @@ public class Leaderboard {
try { try {
writer = new FileWriter(theLocation); writer = new FileWriter(theLocation);
} catch (Exception e) { } catch (Exception e) {
log.log(Level.SEVERE, "Exception while creating " + theLocation, e); log.log(Level.SEVERE, "Exception while creating " + theLocation, e); //$NON-NLS-1$
} finally { } finally {
try { try {
if (writer != null) { if (writer != null) {
writer.close(); writer.close();
} }
} catch (IOException e) { } catch (IOException e) {
log.log(Level.SEVERE, "Exception while closing writer for " + theLocation, e); log.log(Level.SEVERE, "Exception while closing writer for " + theLocation, e); //$NON-NLS-1$
} }
} }
} else { } else {
@ -147,12 +147,12 @@ public class Leaderboard {
for(PlayerStat p : ps) for(PlayerStat p : ps)
{ {
if(p.name.equals("$mcMMO_DummyInfo")) if(p.name.equals("$mcMMO_DummyInfo")) //$NON-NLS-1$
continue; continue;
if(p.statVal == 0) if(p.statVal == 0)
continue; continue;
writer.append(p.name + ":" + p.statVal); writer.append(p.name + ":" + p.statVal); //$NON-NLS-1$
writer.append("\r\n"); writer.append("\r\n"); //$NON-NLS-1$
} }
in.close(); in.close();
@ -161,7 +161,7 @@ public class Leaderboard {
out.write(writer.toString()); out.write(writer.toString());
out.close(); out.close();
} catch (Exception e) { } catch (Exception e) {
log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", 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 //Create/open the file
@ -170,7 +170,7 @@ public class Leaderboard {
} }
public static String[] retrieveInfo(String statName, int pagenumber){ public static String[] retrieveInfo(String statName, int pagenumber){
String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
try { try {
FileReader file = new FileReader(theLocation); FileReader file = new FileReader(theLocation);
BufferedReader in = new BufferedReader(file); BufferedReader in = new BufferedReader(file);
@ -178,7 +178,7 @@ public class Leaderboard {
int destination = (pagenumber - 1) * 10; //How many lines to skip through int destination = (pagenumber - 1) * 10; //How many lines to skip through
int x = 0; //how many lines we've gone through int x = 0; //how many lines we've gone through
int y = 0; //going through the lines int y = 0; //going through the lines
String line = ""; String line = ""; //$NON-NLS-1$
String[] info = new String[10]; //what to return String[] info = new String[10]; //what to return
while((line = in.readLine()) != null && y < 10) while((line = in.readLine()) != null && y < 10)
{ {
@ -191,41 +191,41 @@ public class Leaderboard {
in.close(); in.close();
return info; return info;
} catch (Exception e) { } catch (Exception e) {
log.log(Level.SEVERE, "Exception while reading " log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
+ theLocation + " (Are you sure you formatted it correctly?)", e); + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
} }
return null; //Shouldn't get here return null; //Shouldn't get here
} }
public static void updateLeaderboard(PlayerStat ps, String statName){ public static void updateLeaderboard(PlayerStat ps, String statName){
if(LoadProperties.useMySQL) if(LoadProperties.useMySQL)
return; return;
String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; String theLocation = "plugins/mcMMO/" + statName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
try { try {
//Open the file //Open the file
FileReader file = new FileReader(theLocation); FileReader file = new FileReader(theLocation);
BufferedReader in = new BufferedReader(file); BufferedReader in = new BufferedReader(file);
StringBuilder writer = new StringBuilder(); StringBuilder writer = new StringBuilder();
String line = ""; String line = ""; //$NON-NLS-1$
Boolean inserted = false; Boolean inserted = false;
//While not at the end of the file //While not at the end of the file
while((line = in.readLine()) != null) while((line = in.readLine()) != null)
{ {
//Insert the player into the line before it finds a smaller one //Insert the player into the line before it finds a smaller one
if(Integer.valueOf(line.split(":")[1]) < ps.statVal && !inserted) if(Integer.valueOf(line.split(":")[1]) < ps.statVal && !inserted) //$NON-NLS-1$
{ {
writer.append(ps.name + ":" + ps.statVal).append("\r\n"); writer.append(ps.name + ":" + ps.statVal).append("\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
inserted = true; inserted = true;
} }
//Write anything that isn't the player already in the file so we remove the duplicate //Write anything that isn't the player already in the file so we remove the duplicate
if(!line.split(":")[0].equalsIgnoreCase(ps.name)) if(!line.split(":")[0].equalsIgnoreCase(ps.name)) //$NON-NLS-1$
{ {
writer.append(line).append("\r\n"); writer.append(line).append("\r\n"); //$NON-NLS-1$
} }
} }
if(!inserted) if(!inserted)
{ {
writer.append(ps.name + ":" + ps.statVal).append("\r\n"); writer.append(ps.name + ":" + ps.statVal).append("\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
} }
in.close(); in.close();
@ -234,7 +234,7 @@ public class Leaderboard {
out.write(writer.toString()); out.write(writer.toString());
out.close(); out.close();
} catch (Exception e) { } catch (Exception e) {
log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$ //$NON-NLS-2$
} }
} }
public static boolean isInt(String string){ public static boolean isInt(String string){

View File

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

View File

@ -1,16 +1,12 @@
package com.gmail.nossr50; package com.gmail.nossr50;
import java.io.*; import java.io.*;
import java.util.ArrayList;
import java.util.Properties; import java.util.Properties;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.HashMap; import java.util.HashMap;
import org.bukkit.Location;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
@ -28,15 +24,18 @@ public class Users {
properties.load(new FileInputStream(location)); properties.load(new FileInputStream(location));
} }
//To save //To save
public void save() { public void save()
try { {
try
{
properties.store(new FileOutputStream(location), null); properties.store(new FileOutputStream(location), null);
}catch(IOException ex) { }catch(IOException ex) {
} }
} }
public void loadUsers(){ public void loadUsers()
{
File theDir = new File(location); File theDir = new File(location);
if(!theDir.exists()){ if(!theDir.exists()){
//properties = new PropertiesFile(location); //properties = new PropertiesFile(location);
@ -77,9 +76,12 @@ public class Users {
return players; return players;
} }
public static void removeUser(Player player){ public static void removeUser(Player player)
{
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(PP != null){
if(PP != null)
{
PP.save(); PP.save();
if(players.containsKey(player)) if(players.containsKey(player))
players.remove(player); players.remove(player);
@ -87,7 +89,13 @@ public class Users {
} }
public static PlayerProfile getProfile(Player player){ public static PlayerProfile getProfile(Player player){
if(players.get(player) != null)
return players.get(player); return players.get(player);
else
{
players.put(player, new PlayerProfile(player));
return players.get(player);
}
} }
public static Users getInstance() { public static Users getInstance() {
@ -96,8 +104,5 @@ public class Users {
} }
return instance; return instance;
} }
public static void getRow(){
}
} }

View File

@ -1,176 +0,0 @@
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.Player;
public class Config {
private static volatile Config instance;
String location = "mcmmo.properties";
protected static final Logger log = Logger.getLogger("Minecraft");
public static ArrayList<Player> removalQue = new ArrayList<Player>();
static ArrayList<String> adminChatList = new ArrayList<String>();
static ArrayList<Block> blockWatchList = new ArrayList<Block>();
static ArrayList<Block> treeFeller = new ArrayList<Block>();
static ArrayList<String> partyChatList = new ArrayList<String>();
static ArrayList<String> godModeList = new ArrayList<String>();
HashMap<Entity, Integer> arrowTracker = new HashMap<Entity, Integer>();
static ArrayList<Entity> bleedTracker = new ArrayList<Entity>();
static ArrayList<Entity> mobSpawnTracker = new ArrayList<Entity>();
/*
* The Bleed Que Stuff
*/
public Entity[] bleedQue = new Entity[20];
public int bleedQuePos = 0;
public void addToBleedQue(Entity 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
Entity[] temp = new Entity[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 Entity[] getBleedQue(){return bleedQue;}
public void clearBleedQue(){
bleedQue = new Entity[bleedQue.length];
setBleedQuePos(0);
}
public void setBleedQuePos(int x){bleedQuePos = x;}
/*
* The Bleed Removal Que Stuff
*/
public Entity[] bleedRemovalQue = new Entity[20];
public int bleedRemovalQuePos = 0;
public void addToBleedRemovalQue(Entity 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
Entity[] temp = new Entity[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;
}
}
public Entity[] getBleedRemovalQue(){return bleedRemovalQue;}
public void clearBleedRemovalQue(){
bleedQue = new Entity[bleedRemovalQue.length];
setBleedQuePos(0);
}
public void setBleedRemovalQuePos(int x){bleedRemovalQuePos = x;}
public boolean isBlockWatched(Block block) {return blockWatchList.contains(block);}
public boolean isTreeFellerWatched(Block block) {return treeFeller.contains(block);}
public ArrayList<Block> getTreeFeller() {return treeFeller;}
public void removeBlockWatch(Block block) {blockWatchList.remove(blockWatchList.indexOf(block));}
public void addBlockWatch(Block block) {blockWatchList.add(block);}
public void removeTreeFeller(Block block) {treeFeller.remove(treeFeller.indexOf(block));}
public void addTreeFeller(Block block) {treeFeller.add(block);}
public void addBleedTrack(Entity entity) {bleedTracker.add(entity);}
public void addMobSpawnTrack(Entity entity) {mobSpawnTracker.add(entity);}
public void removeMobSpawnTrack(Entity entity) {mobSpawnTracker.remove(entity);}
public ArrayList<Entity> getBleedTracked() {return bleedTracker;}
public void addArrowTrack(Entity entity, Integer arrowcount) {arrowTracker.put(entity, arrowcount);}
public Integer getArrowCount(Entity entity) {return arrowTracker.get(entity);}
public void removeArrowTracked(Entity entity){
if(arrowTracker.containsKey(entity)){
arrowTracker.remove(entity);
}
}
public void removeBleedTrack(Entity entity){
bleedTracker.remove(entity);
}
public void clearTreeFeller(){
treeFeller.clear();
}
public void setBleedCount(Entity entity, Integer newvalue){
bleedTracker.add(entity);
}
public void addArrowCount(Entity entity, Integer newvalue) {
arrowTracker.put(entity, arrowTracker.get(entity) + newvalue);
}
public boolean isTracked(Entity entity) {
if(arrowTracker.containsKey(entity)){
return true;
} else {
return false;
}
}
public boolean isMobSpawnTracked(Entity entity) {
if(mobSpawnTracker.contains(entity)){
return true;
} else {
return false;
}
}
public boolean isBleedTracked(Entity entity) {
if(bleedTracker.contains(entity)){
return true;
} else {
return false;
}
}
public boolean isAdminToggled(String playerName) {return adminChatList.contains(playerName);}
public boolean isPartyToggled(String playerName) {return partyChatList.contains(playerName);}
public boolean isGodModeToggled(String playerName) {return godModeList.contains(playerName);}
public void removeGodModeToggled(String playerName) {godModeList.remove(godModeList.indexOf(playerName));}
public void removePartyToggled(String playerName) {partyChatList.remove(partyChatList.indexOf(playerName));}
public void removeAdminToggled(String playerName) {adminChatList.remove(adminChatList.indexOf(playerName));}
public void addGodModeToggled(String playerName) {godModeList.add(playerName);}
public void addPartyToggled(String playerName) {partyChatList.add(playerName);}
public void addAdminToggled(String playerName) {adminChatList.add(playerName);}
public static Config getInstance() {
if (instance == null) {
instance = new Config();
}
return instance;
}
public void toggleAdminChat(String playerName){
if(isAdminToggled(playerName)){
removeAdminToggled(playerName);
} else {
addAdminToggled(playerName);
}
}
public void toggleGodMode(String playerName){
if(isGodModeToggled(playerName)){
removeGodModeToggled(playerName);
} else {
addGodModeToggled(playerName);
}
}
public void togglePartyChat(String playerName){
if(isPartyToggled(playerName)){
removePartyToggled(playerName);
} else {
addPartyToggled(playerName);
}
}
}

View File

@ -1,131 +1,415 @@
package com.gmail.nossr50.config; package com.gmail.nossr50.config;
import java.io.File;
import java.util.List;
import org.bukkit.util.config.Configuration;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
public class LoadProperties { public class LoadProperties {
public static Boolean enableCobbleToMossy, useMySQL, cocoabeans, archeryFireRateLimit, mushrooms, toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, pvp, eggs, apples, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages; public static Boolean xpGainsMobSpawners=false, print_reports = false, myspawnEnable = true, mccEnable = true, mcmmoEnable = true, partyEnable = true, inviteEnable = true, acceptEnable = true, whoisEnable = true, statsEnable = true, addxpEnable = true, ptpEnable = true, mmoeditEnable = true, clearmyspawnEnable = true, mcgodEnable = true, mcabilityEnable = true, mctopEnable = true, mcrefreshEnable = true, enableMotd, enableMySpawn, enableRegen, enableCobbleToMossy, useMySQL, cocoabeans, archeryFireRateLimit, mushrooms, toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, eggs, apples, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages;
public static String MySQLtablePrefix, MySQLuserName, MySQLserverName, MySQLdbName, MySQLdbPass, mctop, addxp, mcability, mcmmo, mcc, mcrefresh, mcitem, mcgod, stats, mmoedit, ptp, party, myspawn, setmyspawn, whois, invite, accept, clearmyspawn, nWood, nStone, nIron, nGold, nDiamond;; public static String MySQLtablePrefix, MySQLuserName, MySQLserverName, MySQLdbName, MySQLdbPass, mctop, addxp, mcability, mcmmo, mcc, mcrefresh, mcgod, stats, mmoedit, ptp, party, myspawn, whois, invite, accept, clearmyspawn, nWood, nStone, nIron, nGold, nDiamond, locale;
public static int MySQLport, xpGainMultiplier, superBreakerCooldown, greenTerraCooldown, gigaDrillBreakerCooldown, treeFellerCooldown, berserkCooldown, serratedStrikeCooldown, skullSplitterCooldown, abilityDurabilityLoss, feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, tamingxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier, rWood, rStone, rIron, rGold, rDiamond;; public static int mcocoa = 10, water_thunder = 75, cure_self = 5, cure_other = 5, mbones, msulphur, mslowsand, mmushroom2, mglowstone2, mmusic, mdiamond2, mbase, mapple, meggs, mcake, mpine, mbirch, mspruce, mcactus, mmushroom, mflower, msugar, mpumpkin, mwheat, mgold, mdiamond, miron, mredstone, mlapus, mobsidian, mnetherrack, mglowstone, mcoal, mstone, MySQLport, xpGainMultiplier, superBreakerCooldown = 240, greenTerraCooldown = 240, gigaDrillBreakerCooldown = 240, treeFellerCooldown = 240, berserkCooldown = 240, serratedStrikeCooldown = 240, skullSplitterCooldown = 240, abilityDurabilityLoss, feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, tamingxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, sorceryxpmodifier = 2, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier, rWood, rStone, rIron, rGold, rDiamond;
private static mcMMO plugin;
public static void loadMain(){ public String directory = "plugins/mcMMO/";
String propertiesFile = mcMMO.maindirectory + "mcmmo.properties"; File file = new File(directory + File.separator + "config.yml");
mcProperties properties = new mcProperties(propertiesFile);
properties.load();
/* public void configCheck()
* COOLDOWN CONTROL {
*/ new File(directory).mkdir();
greenTerraCooldown = properties.getInteger("greenTerraCooldown", 240); if(!file.exists())
superBreakerCooldown = properties.getInteger("superBreakerCooldown", 240); {
gigaDrillBreakerCooldown = properties.getInteger("gigaDrillBreakerCooldown", 240); try
treeFellerCooldown = properties.getInteger("treeFellerCooldown", 240); {
berserkCooldown = properties.getInteger("berserkCooldown", 240); file.createNewFile();
serratedStrikeCooldown = properties.getInteger("serratedStrikeCooldown", 240); addDefaults();
skullSplitterCooldown = properties.getInteger("skullSplitterCooldown", 240); }
catch (Exception ex)
/* {
* MySQL Stuff ex.printStackTrace();
*/ }
}
MySQLserverName = properties.getString("MySQLServer", "ipofserver"); else
MySQLdbPass = properties.getString("MySQLdbPass", "defaultdbpass"); {
MySQLdbName = properties.getString("MySQLdbName", "defaultdbname"); loadkeys();
MySQLuserName = properties.getString("MySQLuserName", "defaultusername"); }
MySQLtablePrefix = properties.getString("MySQLTablePrefix", "mcmmo_"); }
MySQLport = properties.getInteger("MySQLport", 3306); private void write(String root, Object x)
useMySQL = properties.getBoolean("UseMySQL", false); {
Configuration config = load();
/* config.setProperty(root, x);
* OTHER config.save();
*/ }
private Boolean readBoolean(String root)
enableCobbleToMossy = properties.getBoolean("enableGreenThumbCobbleToMossy", true); {
archeryFireRateLimit = properties.getBoolean("archeryFireRateLimit", true); Configuration config = load();
xpGainMultiplier = properties.getInteger("xpGainMultiplier", 1); return config.getBoolean(root, false);
toolsLoseDurabilityFromAbilities = properties.getBoolean("toolsLoseDurabilityFromAbilities", true); }
abilityDurabilityLoss = properties.getInteger("abilityDurabilityLoss", 2); private Integer readInteger(String root)
feathersConsumedByChimaeraWing = properties.getInteger("feathersConsumedByChimaeraWing", 10); {
pvpxp = properties.getBoolean("pvpGivesXP", true); Configuration config = load();
pvpxprewardmodifier = properties.getInteger("pvpXpRewardModifier", 1); return config.getInt(root, 0);
miningrequirespickaxe = properties.getBoolean("miningRequiresPickaxe", true); }
woodcuttingrequiresaxe = properties.getBoolean("woodcuttingRequiresAxe", true);
repairdiamondlevel = properties.getInteger("repairDiamondLevel", 50); private Double readDouble(String root)
/* {
* EXPERIENCE RATE MODIFIER Configuration config = load();
*/ return config.getDouble(root, 0);
globalxpmodifier = properties.getInteger("globalXpModifier", 1); }
tamingxpmodifier = properties.getInteger("tamingXpModifier", 2); private List<String> readStringList(String root)
miningxpmodifier = properties.getInteger("miningXpModifier", 2); {
repairxpmodifier = properties.getInteger("repairXpModifier", 2); Configuration config = load();
woodcuttingxpmodifier = properties.getInteger("woodcuttingXpModifier", 2); return config.getKeys(root);
unarmedxpmodifier = properties.getInteger("unarmedXpModifier", 2); }
herbalismxpmodifier = properties.getInteger("herbalismXpModifier", 2); private String readString(String root)
excavationxpmodifier = properties.getInteger("excavationXpModifier", 2); {
archeryxpmodifier = properties.getInteger("archeryXpModifier", 2); Configuration config = load();
swordsxpmodifier = properties.getInteger("swordsXpModifier", 2); return config.getString(root);
axesxpmodifier = properties.getInteger("axesXpModifier", 2); }
acrobaticsxpmodifier = properties.getInteger("acrobaticsXpModifier", 2); private Configuration load()
/* {
* TOGGLE CLAY
*/ try {
clay = properties.getBoolean("gravelToClay", true); Configuration config = new Configuration(file);
/* config.load();
* ANVIL MESSAGES return config;
*/
anvilmessages = properties.getBoolean("anvilMessages", true); } catch (Exception e) {
e.printStackTrace();
/* }
* ANVIL REPAIR (REQUIRED ITEM) AND (NAME OF ITEM) return null;
*/ }
rGold = properties.getInteger("GoldRepairItemNumber", 266); private void addDefaults(){
nGold = properties.getString("GoldItemRepairName", "Gold Bars"); plugin.log.info("Generating Config File...");
rStone = properties.getInteger("CobblestoneRepairItemNumber", 4);
nStone = properties.getString("CobblestoneItemRepairName", "Cobblestone"); //Put in defaults
rWood = properties.getInteger("WoodRepairItemNumber", 5); write("MySQL.Enabled", false);
nWood = properties.getString("WoodItemRepairName", "Wood Planks"); write("MySQL.Server.Address", "localhost");
rDiamond = properties.getInteger("DiamondRepairItemNumber", 264); write("MySQL.Server.Port", 3306);
nDiamond = properties.getString("DiamondItemRepairName", "Diamond Ore"); write("MySQL.Database.Name", "DataBaseName");
rIron = properties.getInteger("IronRepairItemNumber", 265); write("MySQL.Database.User.Name", "UserName");
nIron = properties.getString("IronItemRepairName", "Iron Bars"); write("MySQL.Database.TablePrefix", "mcmmo_");
/* write("MySQL.Database.User.Password", "UserPassword");
* EXCAVATION LOOT TOGGLES
*/ write("General.Locale", "en_us");
cocoabeans = properties.getBoolean("canExcavateCocoaBeans", true); write("General.MOTD.Enabled", true);
mushrooms = properties.getBoolean("canExcavateMushrooms", true); write("General.MySpawn.Enabled", true);
glowstone = properties.getBoolean("canExcavateGlowstone", true); write("General.HP_Regeneration.Enabled", true);
pvp = properties.getBoolean("pvp", true); write("General.Performance.Print_Reports", false);
eggs = properties.getBoolean("canExcavateEggs", true);
apples = properties.getBoolean("canExcavateApples", true); write("Items.Chimaera_Wing.Feather_Cost", 10);
cake = properties.getBoolean("canExcavateCake", true);
music = properties.getBoolean("canExcavateMusic", true); write("XP.PVP.Rewards", true);
diamond = properties.getBoolean("canExcavateDiamond", true); write("XP.Gains.Multiplier.PVP", 1);
slowsand = properties.getBoolean("canExcavateSlowSand", true); write("XP.Gains.Mobspawners.Enabled", false);
sulphur = properties.getBoolean("canExcavateSulphur", true); write("XP.Gains.Multiplier.Global", 1);
netherrack = properties.getBoolean("canExcavateNetherrack", true); write("XP.Formula.Multiplier.Global", 1);
bones = properties.getBoolean("canExcavateBones", true); write("XP.Formula.Multiplier.Taming", 2);
write("XP.Formula.Multiplier.Mining", 2);
/* write("XP.Formula.Multiplier.Repair", 2);
* CUSTOM COMMANDS write("XP.Formula.Multiplier.Woodcutting", 2);
*/ write("XP.Formula.Multiplier.Unarmed", 2);
mctop = properties.getString("/mctop", "mctop"); write("XP.Formula.Multiplier.Herbalism", 2);
addxp = properties.getString("/addxp", "addxp"); write("XP.Formula.Multiplier.Excavation", 2);
mcability = properties.getString("/mcability", "mcability"); write("XP.Formula.Multiplier.Swords", 2);
mcrefresh = properties.getString("/mcrefresh", "mcrefresh"); write("XP.Formula.Multiplier.Archery", 2);
mcitem = properties.getString("/mcitem", "mcitem"); write("XP.Formula.Multiplier.Axes", 2);
mcmmo = properties.getString("/mcmmo", "mcmmo"); write("XP.Formula.Multiplier.Sorcery", 2);
mcc = properties.getString("/mcc", "mcc"); write("XP.Formula.Multiplier.Acrobatics", 2);
mcgod = properties.getString("/mcgod", "mcgod"); write("XP.Mining.Gold", 35);
stats = properties.getString("/stats", "stats"); write("XP.Mining.Diamond", 75);
mmoedit = properties.getString("/mmoedit", "mmoedit"); write("XP.Mining.Iron", 25);
ptp = properties.getString("/ptp", "ptp"); write("XP.Mining.Redstone", 15);
party = properties.getString("/party", "party"); write("XP.Mining.Lapus", 40);
myspawn = properties.getString("/myspawn", "myspawn"); write("XP.Mining.Obsidian", 15);
setmyspawn = properties.getString("/setmyspawn", "setmyspawn"); write("XP.Mining.Netherrack", 3);
whois = properties.getString("/whois", "whois"); write("XP.Mining.Glowstone", 3);
invite = properties.getString("/invite", "invite"); write("XP.Mining.Coal", 10);
accept = properties.getString("/accept", "accept"); write("XP.Mining.Stone", 3);
clearmyspawn = properties.getString("/clearmyspawn", "clearmyspawn"); write("XP.Herbalism.Sugar_Cane", 3);
properties.save("==McMMO Configuration==\r\nYou can turn off excavation loot tables by turning the option to false\r\nYou can customize mcMMOs command names by modifying them here as well\r\nThis is an early version of the configuration file, eventually you'll be able to customize messages from mcMMO and XP gains"); write("XP.Herbalism.Cactus", 3);
//herp derp write("XP.Herbalism.Pumpkin", 55);
write("XP.Herbalism.Flowers", 10);
write("XP.Herbalism.Wheat", 5);
write("XP.Herbalism.Mushrooms", 15);
write("XP.Woodcutting.Pine", 9);
write("XP.Woodcutting.Birch", 7);
write("XP.Woodcutting.Spruce", 8);
write("XP.Excavation.Base", 4);
write("XP.Excavation.Mushroom", 8);
write("XP.Excavation.Sulphur", 3);
write("XP.Excavation.Slowsand", 8);
write("XP.Excavation.Glowstone", 8);
write("XP.Excavation.Music", 300);
write("XP.Excavation.Bones", 3);
write("XP.Excavation.Diamond", 100);
write("XP.Excavation.Apple", 10);
write("XP.Excavation.Eggs", 10);
write("XP.Excavation.Cake", 300);
write("XP.Excavation.Cocoa_Beans", 10);
write("Sorcery.Spells.Water.Thunder", 75);
write("Sorcery.Spells.Curative.Cure_Self.Mana_Cost", 5);
write("Sorcery.Spells.Curative.Cure_Other.Mana_Cost", 5);
write("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("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.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("Abilities.Tools.Durability_Loss_Enabled", true);
write("Abilities.Tools.Durability_Loss", 2);
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("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 Ore");
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.Archery.Fire_Rate_Limiter", true);
write("Skills.Mining.Requires_Pickaxe", true);
write("Skills.Woodcutting.Requires_Axe", true);
loadkeys();
}
private void loadkeys(){
plugin.log.info("Loading Config File...");
System.out.println("print_reports = "+readBoolean("General.Performance.Print_Reports"));
xpGainsMobSpawners = readBoolean("XP.Gains.Mobspawners.Enabled");
if(readBoolean("General.Performance.Print_Reports") != null)
print_reports = readBoolean("General.Performance.Print_Reports");
else
print_reports = false;
cure_self = readInteger("Sorcery.Spells.Curative.Cure_Self.Mana_Cost");
cure_other = readInteger("Sorcery.Spells.Curative.Cure_Other.Mana_Cost");
water_thunder = readInteger("Sorcery.Spells.Water.Thunder");
msulphur = readInteger("XP.Excavation.Sulphur");
mbones = readInteger("XP.Excavation.Bones");
mbase = readInteger("XP.Excavation.Base");
mmushroom2 = readInteger("XP.Excavation.Mushroom");
mslowsand = readInteger("XP.Excavation.Slowsand");
mglowstone2 = readInteger("XP.Excavation.Glowstone");
mmusic = readInteger("XP.Excavation.Music");
mdiamond2 = readInteger("XP.Excavation.Diamond");
mapple = readInteger("XP.Excavation.Apple");
meggs = readInteger("XP.Excavation.Eggs");
mcake = readInteger("XP.Excavation.Cake");
mcocoa = readInteger("XP.Excavation.Cocoa_Beans");
msugar = readInteger("XP.Herbalism.Sugar_Cane");
mwheat = readInteger("XP.Herbalism.Wheat");
mcactus = readInteger("XP.Herbalism.Cactus");
mpumpkin = readInteger("XP.Herbalism.Pumpkin");
mflower = readInteger("XP.Herbalism.Flowers");
mmushroom = readInteger("XP.Herbalism.Mushrooms");
mpine = readInteger("XP.Woodcutting.Pine");
mbirch = readInteger("XP.Woodcutting.Birch");
mspruce = readInteger("XP.Woodcutting.Spruce");
mgold = readInteger("XP.Mining.Gold");
mdiamond = readInteger("XP.Mining.Diamond");
miron = readInteger("XP.Mining.Iron");
mredstone = readInteger("XP.Mining.Redstone");
mlapus = readInteger("XP.Mining.Lapus");
mobsidian = readInteger("XP.Mining.Obsidian");
mnetherrack = readInteger("XP.Mining.Netherrack");
mglowstone = readInteger("XP.Mining.Glowstone");
mcoal = readInteger("XP.Mining.Coal");
mstone = readInteger("XP.Mining.Stone");
enableMotd = readBoolean("enableMOTD");
greenTerraCooldown = readInteger("Abilities.Cooldowns.Green_Terra");
superBreakerCooldown = readInteger("Abilities.Cooldowns.Super_Breaker");
gigaDrillBreakerCooldown = readInteger("Abilities.Cooldowns.Giga_Drill_Breaker");
treeFellerCooldown = readInteger("Abilities.Cooldowns.Tree_Feller");
berserkCooldown = readInteger("Abilities.Cooldowns.Berserk");
serratedStrikeCooldown = readInteger("Abilities.Cooldowns.Serrated_Strikes");
skullSplitterCooldown = readInteger("Abilities.Cooldowns.Skull_Splitter");
MySQLserverName = readString("MySQL.Server.Address");
if(readString("MySQL.Database.User.Password") != null)
MySQLdbPass = readString("MySQL.Database.User.Password");
else
MySQLdbPass = "";
MySQLdbName = readString("MySQL.Database.Name");
MySQLuserName = readString("MySQL.Database.User.Name");
MySQLtablePrefix = readString("MySQL.Database.TablePrefix");
MySQLport = readInteger("MySQL.Server.Port");
useMySQL = readBoolean("MySQL.Enabled");
locale = readString("General.Locale");
enableMotd = readBoolean("General.MOTD.Enabled");
enableMySpawn = readBoolean("General.MySpawn.Enabled");
enableRegen = readBoolean("General.HP_Regeneration.Enabled");
enableCobbleToMossy = readBoolean("Skills.Herbalism.Green_Thumb.Cobble_To_Mossy");
archeryFireRateLimit = readBoolean("Skills.Archery.Fire_Rate_Limiter");
xpGainMultiplier = readInteger("XP.Gains.Multiplier.Global");
toolsLoseDurabilityFromAbilities = readBoolean("Abilities.Tools.Durability_Loss_Enabled");
abilityDurabilityLoss = readInteger("Abilities.Tools.Durability_Loss");
feathersConsumedByChimaeraWing = readInteger("Items.Chimaera_Wing.Feather_Cost");
pvpxp = readBoolean("XP.PVP.Rewards");
pvpxprewardmodifier = readInteger("XP.Gains.Multiplier.PVP");
miningrequirespickaxe = readBoolean("Skills.Mining.Requires_Pickaxe");
woodcuttingrequiresaxe = readBoolean("Skills.Woodcutting.Requires_Axe");
repairdiamondlevel = readInteger("Skills.Repair.Diamond.Level_Required");
globalxpmodifier = readInteger("XP.Formula.Multiplier.Global");
if(readInteger("XP.Formula.Multiplier.Sorcery") != null)
sorceryxpmodifier = readInteger("XP.Formula.Multiplier.Sorcery");
else
sorceryxpmodifier = 2;
tamingxpmodifier = readInteger("XP.Formula.Multiplier.Taming");
miningxpmodifier = readInteger("XP.Formula.Multiplier.Mining");
repairxpmodifier = readInteger("XP.Formula.Multiplier.Repair");
woodcuttingxpmodifier = readInteger("XP.Formula.Multiplier.Woodcutting");
unarmedxpmodifier = readInteger("XP.Formula.Multiplier.Unarmed");
herbalismxpmodifier = readInteger("XP.Formula.Multiplier.Herbalism");
excavationxpmodifier = readInteger("XP.Formula.Multiplier.Excavation");
archeryxpmodifier = readInteger("XP.Formula.Multiplier.Archery");
swordsxpmodifier = readInteger("XP.Formula.Multiplier.Swords");
axesxpmodifier = readInteger("XP.Formula.Multiplier.Axes");
acrobaticsxpmodifier = readInteger("XP.Formula.Multiplier.Acrobatics");
anvilmessages = readBoolean("Skills.Repair.Anvil_Messages");
rGold = readInteger("Skills.Repair.Gold.ID");
nGold = readString("Skills.Repair.Gold.Name");
rStone = readInteger("Skills.Repair.Stone.ID");
nStone = readString("Skills.Repair.Stone.Name");
rWood = readInteger("Skills.Repair.Wood.ID");
nWood = readString("Skills.Repair.Wood.Name");
rDiamond = readInteger("Skills.Repair.Diamond.ID");
nDiamond = readString("Skills.Repair.Diamond.Name");
rIron = readInteger("Skills.Repair.Iron.ID");
nIron = readString("Skills.Repair.Iron.Name");
cocoabeans = readBoolean("Excavation.Drops.Cocoa_Beans");
mushrooms = readBoolean("Excavation.Drops.Mushrooms");
glowstone = readBoolean("Excavation.Drops.Glowstone");
eggs = readBoolean("Excavation.Drops.Eggs");
apples = readBoolean("Excavation.Drops.Apples");
cake = readBoolean("Excavation.Drops.Cake");
music = readBoolean("Excavation.Drops.Music");
diamond = readBoolean("Excavation.Drops.Diamond");
slowsand = readBoolean("Excavation.Drops.Slowsand");
sulphur = readBoolean("Excavation.Drops.Sulphur");
netherrack = readBoolean("Excavation.Drops.Netherrack");
bones = readBoolean("Excavation.Drops.Bones");
mctop = readString("Commands.mctop.Name");
mctopEnable = readBoolean("Commands.mctop.Enabled");
addxp = readString("Commands.addxp.Name");
addxpEnable = readBoolean("Commands.addxp.Enabled");
mcability = readString("Commands.mcability.Name");
mcabilityEnable = readBoolean("Commands.mcability.Enabled");
mcrefresh = readString("Commands.mcrefresh.Name");
mcrefreshEnable = readBoolean("Commands.mcrefresh.Enabled");
mcmmo = readString("Commands.mcmmo.Name");
mcmmoEnable = readBoolean("Commands.mcmmo.Enabled");
mcc = readString("Commands.mcc.Name");
mccEnable = readBoolean("Commands.mcc.Enabled");
mcgod = readString("Commands.mcgod.Name");
mcgodEnable = readBoolean("Commands.mcgodEnable.Enabled");
stats = readString("Commands.stats.Name");
statsEnable = readBoolean("Commands.stats.Enabled");
mmoedit = readString("Commands.mmoedit.Name");
mmoeditEnable = readBoolean("Commands.mmoedit.Enabled");
ptp = readString("Commands.ptp.Name");
ptpEnable = readBoolean("Commands.ptp.Enabled");
party = readString("Commands.party.Name");
partyEnable = readBoolean("Commands.party.Enabled");
myspawn = readString("Commands.myspawn.Name");
myspawnEnable = readBoolean("Commands.myspawn.Enabled");
whois = readString("Commands.whois.Name");
whoisEnable = readBoolean("Commands.whois.Enabled");
invite = readString("Commands.invite.Name");
inviteEnable = readBoolean("Commands.invite.Enabled");
accept = readString("Commands.accept.Name");
acceptEnable = readBoolean("Commands.accept.Enabled");
clearmyspawn = readString("Commands.clearmyspawn.Name");
clearmyspawnEnable = readBoolean("Commands.clearmyspawn.Enabled");
} }
} }

View File

@ -0,0 +1,74 @@
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

@ -1,91 +0,0 @@
package com.gmail.nossr50.config;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class mcProperties extends Properties{
//private static volatile mcProperties instance;
private String fileName;
public mcProperties(String file) {
this.fileName = file;
}
public void load() {
File file = new File(this.fileName);
if(file.exists()) {
try {
load(new FileInputStream(this.fileName));
} catch (IOException ex) {
}
}
}
public static void makeProperties(File Properties, Logger log){
if(!Properties.exists()){
try {
Properties.createNewFile();
FileWriter writer = null;
try {
writer = new FileWriter(Properties);
} catch (Exception e) {
log.log(Level.SEVERE, "Exception while creating " + Properties, e);
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
log.log(Level.SEVERE, "Exception while closing writer for " + Properties, e);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void save(String start){
try{
store(new FileOutputStream(this.fileName), start);
} catch (IOException ex) {
}
}
public int getInteger(String key, int value){
if(containsKey(key)){
return Integer.parseInt(getProperty(key));
}
put(key, String.valueOf(value));
return value;
}
public String getString(String key, String value){
if(containsKey(key)){
return getProperty(key);
}
put(key, value);
return value;
}
public Boolean getBoolean(String key, boolean value) {
if (containsKey(key)) {
String boolString = getProperty(key);
return (boolString.length() > 0)
&& (boolString.toLowerCase().charAt(0) == 't');
}
put(key, value ? "true" : "false");
return value;
}
public double getDouble(String key, double value) {
if (containsKey(key)) {
return Double.parseDouble(getProperty(key));
}
put(key, String.valueOf(value));
return value;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
package com.gmail.nossr50.datatypes; package com.gmail.nossr50.datatypes;
public class PlayerStat { public class PlayerStat
{
public String name; public String name;
public int statVal = 0; public int statVal = 0;
} }

View File

@ -2,8 +2,6 @@ package com.gmail.nossr50.datatypes;
import java.util.ArrayList; import java.util.ArrayList;
import org.bukkit.entity.Player;
import com.gmail.nossr50.datatypes.PlayerStat; import com.gmail.nossr50.datatypes.PlayerStat;
public class Tree { public class Tree {

View File

@ -2,18 +2,18 @@ package com.gmail.nossr50.datatypes;
import java.util.ArrayList; import java.util.ArrayList;
import org.bukkit.entity.Player;
import com.gmail.nossr50.datatypes.PlayerStat; import com.gmail.nossr50.datatypes.PlayerStat;
public class TreeNode { public class TreeNode
{
TreeNode left = null TreeNode left = null
, right = null; , right = null;
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
public TreeNode(String p, int in) {ps.statVal = in; ps.name = p;} public TreeNode(String p, int in) {ps.statVal = in; ps.name = p;}
public void add (String p, int in) { public void add (String p, int in)
{
if (in >= ps.statVal) if (in >= ps.statVal)
{ {
if (left == null) if (left == null)
@ -32,6 +32,10 @@ public class TreeNode {
public ArrayList<PlayerStat> inOrder(ArrayList<PlayerStat> a) 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) if(left != null)
a = left.inOrder(a); a = left.inOrder(a);

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,9 @@
package com.gmail.nossr50; package com.gmail.nossr50;
import org.bukkit.ChatColor;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Statistic; import org.bukkit.Statistic;
import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
@ -16,11 +13,7 @@ import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.config.*;
import com.gmail.nossr50.datatypes.*;
import com.gmail.nossr50.skills.*; import com.gmail.nossr50.skills.*;
import com.gmail.nossr50.party.*;
import com.gmail.nossr50.datatypes.FakeBlockBreakEvent; import com.gmail.nossr50.datatypes.FakeBlockBreakEvent;
@ -31,26 +24,40 @@ public class mcBlockListener extends BlockListener {
this.plugin = plugin; this.plugin = plugin;
} }
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event)
{
long before = System.currentTimeMillis();
Block block; Block block;
Player player = event.getPlayer(); Player player = event.getPlayer();
if (event.getBlock() != null && event.getBlockReplacedState() != null && event.getBlockReplacedState().getTypeId() == 78) { if (event.getBlock() != null && event.getBlockReplacedState() != null && event.getBlockReplacedState().getTypeId() == 78)
{
block = event.getBlockAgainst(); block = event.getBlockAgainst();
} }
else { else
{
block = event.getBlock(); block = event.getBlock();
} }
if(player != null && m.shouldBeWatched(block)){ if(player != null && m.shouldBeWatched(block))
if(block.getTypeId() != 17) {
if(block.getTypeId() != 17 && block.getTypeId() != 39 && block.getTypeId() != 40 && block.getTypeId() != 91 && block.getTypeId() != 86)
block.setData((byte) 5); //Change the byte block.setData((byte) 5); //Change the byte
if(block.getTypeId() == 17 || block.getTypeId() == 91 || block.getTypeId() == 86) if(block.getTypeId() == 17 || block.getTypeId() == 39 || block.getTypeId() == 40 || block.getTypeId() == 91 || block.getTypeId() == 86)
Config.getInstance().addBlockWatch(block); plugin.misc.blockWatchList.add(block);
} }
if(block.getTypeId() == 42 && LoadProperties.anvilmessages) if(block.getTypeId() == 42 && LoadProperties.anvilmessages)
event.getPlayer().sendMessage(ChatColor.DARK_RED+"You have placed an anvil, anvils can repair tools and armor."); event.getPlayer().sendMessage(Messages.getString("mcBlockListener.PlacedAnvil")); //$NON-NLS-1$
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.onBlockPlace+=(after-before);
}
} }
public void onBlockBreak(BlockBreakEvent event) { public void onBlockBreak(BlockBreakEvent event)
{
long before = System.currentTimeMillis();
Player player = event.getPlayer(); Player player = event.getPlayer();
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
Block block = event.getBlock(); Block block = event.getBlock();
@ -59,21 +66,19 @@ public class mcBlockListener extends BlockListener {
return; return;
if (event instanceof FakeBlockBreakEvent) if (event instanceof FakeBlockBreakEvent)
return; return;
/*
* Check if the Timer is doing its job
*/
Skills.monitorSkills(player);
/* /*
* HERBALISM * HERBALISM
*/ */
if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalismAbility(player) && block.getTypeId() == 59 && block.getData() == (byte) 0x07){ if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalismAbility(player) && block.getTypeId() == 59 && block.getData() == (byte) 0x07)
{
Herbalism.greenTerraCheck(player, block, plugin); Herbalism.greenTerraCheck(player, block, plugin);
} }
//Wheat && Triple drops //Wheat && Triple drops
if(PP.getGreenTerraMode() && Herbalism.canBeGreenTerra(block)){ if(PP.getGreenTerraMode() && Herbalism.canBeGreenTerra(block))
Herbalism.herbalismProcCheck(block, player, event); {
Herbalism.greenTerraWheat(player, block, event); Herbalism.herbalismProcCheck(block, player, event, plugin);
Herbalism.greenTerraWheat(player, block, event, plugin);
} }
@ -83,43 +88,49 @@ public class mcBlockListener extends BlockListener {
if(mcPermissions.getInstance().mining(player)){ if(mcPermissions.getInstance().mining(player)){
if(LoadProperties.miningrequirespickaxe){ if(LoadProperties.miningrequirespickaxe){
if(m.isMiningPick(inhand)) if(m.isMiningPick(inhand))
Mining.miningBlockCheck(player, block); Mining.miningBlockCheck(player, block, plugin);
} else { } else {
Mining.miningBlockCheck(player, block); Mining.miningBlockCheck(player, block, plugin);
} }
} }
/* /*
* WOOD CUTTING * WOOD CUTTING
*/ */
if(player != null && block.getTypeId() == 17 && mcPermissions.getInstance().woodcutting(player)){ if(player != null && block.getTypeId() == 17 && mcPermissions.getInstance().woodcutting(player))
if(LoadProperties.woodcuttingrequiresaxe){ {
if(m.isAxes(inhand)){ if(LoadProperties.woodcuttingrequiresaxe)
if(!Config.getInstance().isBlockWatched(block)){ {
if(m.isAxes(inhand))
{
if(!plugin.misc.blockWatchList.contains(block))
{
WoodCutting.woodCuttingProcCheck(player, block); WoodCutting.woodCuttingProcCheck(player, block);
//Default //Default
if(block.getData() == (byte)0) if(block.getData() == (byte)0)
PP.addWoodcuttingXP(7 * LoadProperties.xpGainMultiplier); PP.addWoodcuttingXP(LoadProperties.mpine * LoadProperties.xpGainMultiplier);
//Spruce //Spruce
if(block.getData() == (byte)1) if(block.getData() == (byte)1)
PP.addWoodcuttingXP(8 * LoadProperties.xpGainMultiplier); PP.addWoodcuttingXP(LoadProperties.mspruce * LoadProperties.xpGainMultiplier);
//Birch //Birch
if(block.getData() == (byte)2) if(block.getData() == (byte)2)
PP.addWoodcuttingXP(9 * LoadProperties.xpGainMultiplier); PP.addWoodcuttingXP(LoadProperties.mbirch * LoadProperties.xpGainMultiplier);
} }
} }
} else { } else
if(!Config.getInstance().isBlockWatched(block)){ {
if(!plugin.misc.blockWatchList.contains(block))
{
WoodCutting.woodCuttingProcCheck(player, block); WoodCutting.woodCuttingProcCheck(player, block);
//Default //Default
if(block.getData() == (byte)0) if(block.getData() == (byte)0)
PP.addWoodcuttingXP(7 * LoadProperties.xpGainMultiplier); PP.addWoodcuttingXP(LoadProperties.mpine * LoadProperties.xpGainMultiplier);
//Spruce //Spruce
if(block.getData() == (byte)1) if(block.getData() == (byte)1)
PP.addWoodcuttingXP(8 * LoadProperties.xpGainMultiplier); PP.addWoodcuttingXP(LoadProperties.mspruce * LoadProperties.xpGainMultiplier);
//Birch //Birch
if(block.getData() == (byte)2) if(block.getData() == (byte)2)
PP.addWoodcuttingXP(9 * LoadProperties.xpGainMultiplier); PP.addWoodcuttingXP(LoadProperties.mbirch * LoadProperties.xpGainMultiplier);
} }
} }
Skills.XpCheck(player); Skills.XpCheck(player);
@ -132,8 +143,9 @@ public class mcBlockListener extends BlockListener {
&& block.getTypeId() == 17 && block.getTypeId() == 17
&& m.blockBreakSimulate(block, player, plugin)){ && m.blockBreakSimulate(block, player, plugin)){
WoodCutting.treeFeller(block, player); WoodCutting.treeFeller(block, player, plugin);
for(Block blockx : Config.getInstance().getTreeFeller()){ for(Block blockx : plugin.misc.treeFeller)
{
if(blockx != null){ if(blockx != null){
Material mat = Material.getMaterial(block.getTypeId()); Material mat = Material.getMaterial(block.getTypeId());
byte type = 0; byte type = 0;
@ -143,12 +155,14 @@ public class mcBlockListener extends BlockListener {
if(blockx.getTypeId() == 17){ if(blockx.getTypeId() == 17){
blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item); blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
//XP WOODCUTTING //XP WOODCUTTING
if(!Config.getInstance().isBlockWatched(block)){ if(!plugin.misc.blockWatchList.contains(block))
{
WoodCutting.woodCuttingProcCheck(player, blockx); WoodCutting.woodCuttingProcCheck(player, blockx);
PP.addWoodcuttingXP(7); PP.addWoodcuttingXP(LoadProperties.mpine);
} }
} }
if(blockx.getTypeId() == 18){ if(blockx.getTypeId() == 18)
{
mat = Material.SAPLING; mat = Material.SAPLING;
item = new ItemStack(mat, 1, (short)0, blockx.getData()); item = new ItemStack(mat, 1, (short)0, blockx.getData());
@ -163,7 +177,7 @@ public class mcBlockListener extends BlockListener {
} }
if(LoadProperties.toolsLoseDurabilityFromAbilities) if(LoadProperties.toolsLoseDurabilityFromAbilities)
m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss); m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss);
Config.getInstance().clearTreeFeller(); plugin.misc.treeFeller.clear();
} }
} }
/* /*
@ -174,27 +188,42 @@ public class mcBlockListener extends BlockListener {
/* /*
* HERBALISM * HERBALISM
*/ */
if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalism(player) && Herbalism.canBeGreenTerra(block)){ if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalism(player) && Herbalism.canBeGreenTerra(block))
{
Herbalism.greenTerraCheck(player, block, plugin); Herbalism.greenTerraCheck(player, block, plugin);
} }
if(mcPermissions.getInstance().herbalism(player) && block.getData() != (byte) 5) if(mcPermissions.getInstance().herbalism(player) && block.getData() != (byte) 5)
Herbalism.herbalismProcCheck(block, player, event); Herbalism.herbalismProcCheck(block, player, event, plugin);
//Change the byte back when broken //Change the byte back when broken
if(block.getData() == 5 && m.shouldBeWatched(block)) if(block.getData() == 5 && m.shouldBeWatched(block))
{
block.setData((byte) 0); block.setData((byte) 0);
if(plugin.misc.blockWatchList.contains(block))
{
plugin.misc.blockWatchList.remove(block);
} }
public void onBlockDamage(BlockDamageEvent event) { }
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.onBlockBreak+=(after-before);
}
}
public void onBlockDamage(BlockDamageEvent event)
{
long before = System.currentTimeMillis();
if(event.isCancelled()) if(event.isCancelled())
return; return;
Player player = event.getPlayer(); Player player = event.getPlayer();
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
ItemStack inhand = player.getItemInHand(); ItemStack inhand = player.getItemInHand();
Block block = event.getBlock(); Block block = event.getBlock();
/*
* Check if the Timer is doing its job
*/
Skills.monitorSkills(player); Skills.monitorSkills(player);
/* /*
* ABILITY PREPARATION CHECKS * ABILITY PREPARATION CHECKS
*/ */
@ -219,10 +248,7 @@ public class mcBlockListener extends BlockListener {
/* /*
* GIGA DRILL BREAKER CHECKS * GIGA DRILL BREAKER CHECKS
*/ */
if(PP.getGigaDrillBreakerMode() if(PP.getGigaDrillBreakerMode() && m.blockBreakSimulate(block, player, plugin) && Excavation.canBeGigaDrillBroken(block) && m.isShovel(inhand)){
&& m.blockBreakSimulate(block, player, plugin)
&& Excavation.canBeGigaDrillBroken(block)
&& m.isShovel(inhand)){
if(m.getTier(player) >= 2) if(m.getTier(player) >= 2)
Excavation.excavationProcCheck(block, player); Excavation.excavationProcCheck(block, player);
@ -265,20 +291,22 @@ public class mcBlockListener extends BlockListener {
*/ */
if(PP.getSuperBreakerMode() if(PP.getSuperBreakerMode()
&& Mining.canBeSuperBroken(block) && Mining.canBeSuperBroken(block)
&& m.blockBreakSimulate(block, player, plugin)){ && m.blockBreakSimulate(block, player, plugin))
{
if(LoadProperties.miningrequirespickaxe){ if(LoadProperties.miningrequirespickaxe)
{
if(m.isMiningPick(inhand)) if(m.isMiningPick(inhand))
Mining.SuperBreakerBlockCheck(player, block); Mining.SuperBreakerBlockCheck(player, block, plugin);
} else { } else {
Mining.SuperBreakerBlockCheck(player, block); Mining.SuperBreakerBlockCheck(player, block, plugin);
} }
} }
/* /*
* LEAF BLOWER * LEAF BLOWER
*/ */
if(block.getTypeId() == 18 && mcPermissions.getInstance().woodcutting(player) && PP.getWoodCuttingInt() >= 100 && m.isAxes(player.getItemInHand()) && m.blockBreakSimulate(block, player, plugin)) if(block.getTypeId() == 18 && mcPermissions.getInstance().woodcutting(player) && PP.getSkill("woodcutting") >= 100 && m.isAxes(player.getItemInHand()) && m.blockBreakSimulate(block, player, plugin))
{ {
m.damageTool(player, (short)1); m.damageTool(player, (short)1);
if(Math.random() * 10 > 9) if(Math.random() * 10 > 9)
@ -289,13 +317,31 @@ public class mcBlockListener extends BlockListener {
block.setType(Material.AIR); block.setType(Material.AIR);
player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType()); player.incrementStatistic(Statistic.MINE_BLOCK, event.getBlock().getType());
} }
if(block.getType() == Material.AIR && plugin.misc.blockWatchList.contains(block))
{
plugin.misc.blockWatchList.remove(block);
}
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.onBlockDamage+=(after-before);
}
} }
public void onBlockFromTo(BlockFromToEvent event) { public void onBlockFromTo(BlockFromToEvent event)
{
long before = System.currentTimeMillis();
Block blockFrom = event.getBlock(); Block blockFrom = event.getBlock();
Block blockTo = event.getToBlock(); Block blockTo = event.getToBlock();
if(m.shouldBeWatched(blockFrom) && blockFrom.getData() == (byte)5){ if(m.shouldBeWatched(blockFrom) && blockFrom.getData() == (byte)5)
{
blockTo.setData((byte)5); blockTo.setData((byte)5);
} }
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.onBlockFromTo+=(after-before);
}
} }
} }

View File

@ -2,23 +2,22 @@ package com.gmail.nossr50;
import net.minecraft.server.EntityLiving; import net.minecraft.server.EntityLiving;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Monster;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Wolf; import org.bukkit.entity.Wolf;
import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageByProjectileEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityListener; import org.bukkit.event.entity.EntityListener;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.party.Party; import com.gmail.nossr50.party.Party;
@ -33,13 +32,7 @@ public class mcEntityListener extends EntityListener {
public mcEntityListener(final mcMMO plugin) { public mcEntityListener(final mcMMO plugin) {
this.plugin = plugin; this.plugin = plugin;
} }
public boolean isBow(ItemStack is){ /*
if (is.getTypeId() == 261){
return true;
} else {
return false;
}
}
public void onCreatureSpawn(CreatureSpawnEvent event) { public void onCreatureSpawn(CreatureSpawnEvent event) {
Location loc = event.getLocation(); Location loc = event.getLocation();
Entity spawnee = event.getEntity(); Entity spawnee = event.getEntity();
@ -47,16 +40,18 @@ public class mcEntityListener extends EntityListener {
Config.getInstance().addMobSpawnTrack(spawnee); Config.getInstance().addMobSpawnTrack(spawnee);
} }
} }
public void onEntityDamage(EntityDamageEvent event) { */
public void onEntityDamage(EntityDamageEvent event)
{
long before = System.currentTimeMillis();
if(event.isCancelled()) if(event.isCancelled())
return; return;
/* //Check for world pvp flag
* CHECK FOR mcMMO PVP FLAG
*/
if(event instanceof EntityDamageByEntityEvent) if(event instanceof EntityDamageByEntityEvent)
{ {
EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent)event; EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent)event;
if(eventb.getEntity() instanceof Player && eventb.getDamager() instanceof Player && !LoadProperties.pvp) if(eventb.getEntity() instanceof Player && eventb.getDamager() instanceof Player && !event.getEntity().getWorld().getPVP())
return; return;
} }
/* /*
@ -66,7 +61,7 @@ public class mcEntityListener extends EntityListener {
{ {
Player defender = (Player)event.getEntity(); Player defender = (Player)event.getEntity();
PlayerProfile PPd = Users.getProfile(defender); PlayerProfile PPd = Users.getProfile(defender);
if(defender != null && Config.getInstance().isGodModeToggled(defender.getName())) if(defender != null && PPd.getGodMode())
event.setCancelled(true); event.setCancelled(true);
if(PPd == null) if(PPd == null)
Users.addUser(defender); Users.addUser(defender);
@ -82,23 +77,24 @@ public class mcEntityListener extends EntityListener {
{ {
Entity x = event.getEntity(); Entity x = event.getEntity();
DamageCause type = event.getCause(); DamageCause type = event.getCause();
if(event.getEntity() instanceof Wolf) if(event.getEntity() instanceof Wolf && ((Wolf)event.getEntity()).isTamed() && Taming.getOwner(((Wolf)event.getEntity()), plugin) != null)
{ {
Player master = Taming.getOwner(event.getEntity(), plugin); Wolf theWolf = (Wolf) event.getEntity();
Player master = Taming.getOwner(theWolf, plugin);
PlayerProfile PPo = Users.getProfile(master); PlayerProfile PPo = Users.getProfile(master);
if(master == null || PPo == null) if(master == null || PPo == null)
return; return;
//Environmentally Aware //Environmentally Aware
if((event.getCause() == DamageCause.CONTACT || event.getCause() == DamageCause.LAVA || event.getCause() == DamageCause.FIRE) && PPo.getTamingInt() >= 100) if((event.getCause() == DamageCause.CONTACT || event.getCause() == DamageCause.LAVA || event.getCause() == DamageCause.FIRE) && PPo.getSkill("taming") >= 100)
{ {
if(event.getDamage() < ((Wolf) event.getEntity()).getHealth()) if(event.getDamage() < ((Wolf) event.getEntity()).getHealth())
{ {
event.getEntity().teleport(Taming.getOwner(event.getEntity(), plugin).getLocation()); event.getEntity().teleport(Taming.getOwner(theWolf, plugin).getLocation());
master.sendMessage(ChatColor.DARK_GRAY+"Your wolf scurries back to you..."); master.sendMessage(Messages.getString("mcEntityListener.WolfComesBack")); //$NON-NLS-1$
event.getEntity().setFireTicks(0); event.getEntity().setFireTicks(0);
} }
} }
if(event.getCause() == DamageCause.FALL && PPo.getTamingInt() >= 100) if(event.getCause() == DamageCause.FALL && PPo.getSkill("taming") >= 100)
{ {
event.setCancelled(true); event.setCancelled(true);
} }
@ -151,24 +147,92 @@ public class mcEntityListener extends EntityListener {
} }
} }
} }
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.onEntityDamage+=(after-before);
}
} }
public void onEntityDeath(EntityDeathEvent event) { public void onEntityDeath(EntityDeathEvent event)
{
long before = System.currentTimeMillis();
Entity x = event.getEntity(); Entity x = event.getEntity();
x.setFireTicks(0); x.setFireTicks(0);
//Remove bleed track //cleanup mob diff
if(Config.getInstance().isBleedTracked(x)) if(plugin.mob.mobDiff.containsKey(event.getEntity().getEntityId()))
Config.getInstance().addToBleedRemovalQue(x); plugin.mob.mobDiff.remove(event.getEntity().getEntityId());
Skills.arrowRetrievalCheck(x);
//Remove bleed track
if(plugin.misc.bleedTracker.contains((LivingEntity)x))
plugin.misc.addToBleedRemovalQue((LivingEntity)x);
Skills.arrowRetrievalCheck(x, plugin);
/*
if(Config.getInstance().isMobSpawnTracked(x)){ if(Config.getInstance().isMobSpawnTracked(x)){
Config.getInstance().removeMobSpawnTrack(x); Config.getInstance().removeMobSpawnTrack(x);
} }
*/
if(x instanceof Player){ if(x instanceof Player){
Player player = (Player)x; Player player = (Player)x;
Users.getProfile(player).setBleedTicks(0); Users.getProfile(player).setBleedTicks(0);
} }
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.onEntityDeath+=(after-before);
}
}
public void onCreatureSpawn(CreatureSpawnEvent event)
{
long before = System.currentTimeMillis();
SpawnReason reason = event.getSpawnReason();
if(reason == SpawnReason.SPAWNER && !LoadProperties.xpGainsMobSpawners)
{
plugin.misc.mobSpawnerList.add(event.getEntity());
} else
{
if(event.getEntity() instanceof Monster && !plugin.mob.mobDiff.containsKey(event.getEntity().getEntityId()))
plugin.mob.assignDifficulty(event.getEntity());
}
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.onCreatureSpawn+=(after-before);
}
}
public void onEntityTarget(EntityTargetEvent event)
{
long before = System.currentTimeMillis();
int type = event.getEntity().getEntityId();
//Make 3+ non-aggressive
if(event.getEntity() instanceof Monster
&& plugin.mob.mobDiff.containsKey(type)
&& plugin.mob.isAggressive.containsKey(type))
{
if(plugin.mob.mobDiff.get(type) >= 2 && plugin.mob.isAggressive.get(type) == false)
{
event.setCancelled(true);
event.setTarget(null);
}
}
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.onEntityTarget+=(after-before);
}
}
public boolean isBow(ItemStack is){
if (is.getTypeId() == 261){
return true;
} else {
return false;
}
} }
public boolean isPlayer(Entity entity){ public boolean isPlayer(Entity entity){
if (entity instanceof Player) { if (entity instanceof Player) {

View File

@ -2,9 +2,7 @@ package com.gmail.nossr50;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.config.*; import com.gmail.nossr50.config.*;
import com.gmail.nossr50.datatypes.*;
import com.gmail.nossr50.skills.*; import com.gmail.nossr50.skills.*;
import com.gmail.nossr50.party.*;
import com.nijikokun.bukkit.Permissions.Permissions; import com.nijikokun.bukkit.Permissions.Permissions;
import com.nijiko.Messaging; import com.nijiko.Messaging;
import com.nijiko.permissions.PermissionHandler; import com.nijiko.permissions.PermissionHandler;
@ -13,19 +11,7 @@ import org.bukkit.plugin.Plugin;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Timer; import java.util.Timer;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -37,25 +23,85 @@ import org.bukkit.plugin.PluginManager;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class mcMMO extends JavaPlugin { public class mcMMO extends JavaPlugin
public static String maindirectory = "plugins/mcMMO/"; {
static File Properties = new File(maindirectory + "mcmmo.properties"); public static String maindirectory = "plugins/mcMMO/"; //$NON-NLS-1$
public static final Logger log = Logger.getLogger("Minecraft"); File file = new File(maindirectory + File.separator + "config.yml");
public static final Logger log = Logger.getLogger("Minecraft"); //$NON-NLS-1$
private final mcPlayerListener playerListener = new mcPlayerListener(this); private final mcPlayerListener playerListener = new mcPlayerListener(this);
private final mcBlockListener blockListener = new mcBlockListener(this); private final mcBlockListener blockListener = new mcBlockListener(this);
private final mcEntityListener entityListener = new mcEntityListener(this); private final mcEntityListener entityListener = new mcEntityListener(this);
private final String name = "mcMMO"; private final String name = "mcMMO"; //$NON-NLS-1$
public static PermissionHandler PermissionsHandler = null; public static PermissionHandler PermissionsHandler = null;
private Permissions permissions; private Permissions permissions;
private Timer mcMMO_Timer = new Timer(true);
//PERFORMANCE DEBUG STUFF
public long onPlayerRespawn=0, onPlayerQuit=0, onPlayerLogin=0, onPlayerInteract=0,onPlayerJoin=0, onPlayerCommandPreprocess=0, onPlayerChat=0, onBlockDamage=0, onBlockBreak=0, onBlockFromTo=0, onBlockPlace=0,
onEntityTarget=0, onEntityDeath=0, onEntityDamage=0, onCreatureSpawn=0, bleedSimulation=0, mcTimerx=0;
public void printDelays()
{
log.log(Level.INFO,"####mcMMO PERFORMANCE REPORT####");
log.log(Level.INFO,"[These are the cumulative milliseconds mcMMO has lagged in the last 40 seconds]");
log.log(Level.INFO,"[1000ms = 1 second, lower is better]");
log.log(Level.INFO,"onPlayerRespawn: "+onPlayerRespawn+"ms");
log.log(Level.INFO,"onPlayerQuit: "+onPlayerQuit+"ms");
log.log(Level.INFO,"onPlayerLogin: "+onPlayerLogin+"ms");
log.log(Level.INFO,"onPlayerInteract: "+onPlayerInteract+"ms");
log.log(Level.INFO,"onPlayerJoin: "+onPlayerJoin+"ms");
log.log(Level.INFO,"onPlayerCommandPreProcess: "+onPlayerCommandPreprocess+"ms");
log.log(Level.INFO,"onPlayerChat: "+onPlayerChat+"ms");
log.log(Level.INFO,"onBlockDamage: "+onBlockDamage+"ms");
log.log(Level.INFO,"onBlockBreak: "+onBlockBreak+"ms");
log.log(Level.INFO,"onBlockFromTo: "+onBlockFromTo+"ms");
log.log(Level.INFO,"onBlockPlace: "+onBlockPlace+"ms");
log.log(Level.INFO,"onEntityTarget: "+onEntityTarget+"ms");
log.log(Level.INFO,"onEntityDeath: "+onEntityDeath+"ms");
log.log(Level.INFO,"onEntityDamage: "+onEntityDamage+"ms");
log.log(Level.INFO,"onCreatureSpawn: "+onCreatureSpawn+"ms");
log.log(Level.INFO,"mcTimer (HPREGEN/ETC): "+mcTimerx+"ms");
log.log(Level.INFO,"bleedSimulation: "+bleedSimulation+"ms");
log.log(Level.INFO,"####mcMMO END OF PERFORMANCE REPORT####");
onPlayerRespawn=0;
onPlayerQuit=0;
onPlayerLogin=0;
onPlayerJoin=0;
onPlayerInteract=0;
onPlayerCommandPreprocess=0;
onPlayerChat=0;
onBlockDamage=0;
onBlockBreak=0;
onBlockFromTo=0;
onBlockPlace=0;
onEntityTarget=0;
onEntityDeath=0;
onEntityDamage=0;
onCreatureSpawn=0;
mcTimerx=0;
bleedSimulation=0;
}
private Timer mcMMO_Timer = new Timer(true); //BLEED AND REGENERATION
//private Timer mcMMO_SpellTimer = new Timer(true);
public static Database database = null; public static Database database = null;
public Mob mob = new Mob();
public Misc misc = new Misc(this);
public Sorcery sorcery = new Sorcery(this);
//Config file stuff
LoadProperties config = new LoadProperties();
public void onEnable() public void onEnable()
{ {
//new File(maindirectory).mkdir();
config.configCheck();
new File(maindirectory).mkdir();
mcProperties.makeProperties(Properties, log); //Make Props file
LoadProperties.loadMain(); //Load Props file
Users.getInstance().loadUsers(); //Load Users file Users.getInstance().loadUsers(); //Load Users file
/* /*
@ -63,59 +109,55 @@ public class mcMMO extends JavaPlugin {
*/ */
PluginManager pm = getServer().getPluginManager(); PluginManager pm = getServer().getPluginManager();
//Player Stuff
pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this);
pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Lowest, this); pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Lowest, this);
pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Monitor, this);
pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
//Block Stuff
pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Highest, this);
pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Highest, this); pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
pm.registerEvent(Event.Type.BLOCK_FROMTO, blockListener, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_FROMTO, blockListener, Priority.Normal, this);
pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Monitor, this);
pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this); //Entity Stuff
pm.registerEvent(Event.Type.PLAYER_ITEM_HELD, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.ENTITY_TARGET, entityListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this); pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this);
pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Priority.Normal, this);
PluginDescriptionFile pdfFile = this.getDescription(); PluginDescriptionFile pdfFile = this.getDescription();
mcPermissions.initialize(getServer()); mcPermissions.initialize(getServer());
mcLoadMySQL();
if(LoadProperties.useMySQL)
database.createStructure(); //Make Structure
if(!LoadProperties.useMySQL)
Leaderboard.makeLeaderboards(); //Make the leaderboards
for(Player player : getServer().getOnlinePlayers()){Users.addUser(player);} //In case of reload add all users back into PlayerProfile
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
mcMMO_Timer.schedule(new mcTimer(this), (long)0, (long)(1000));
}
public void mcLoadMySQL() if(LoadProperties.useMySQL)
{ {
if (LoadProperties.useMySQL) {
// create database object
database = new Database(this); database = new Database(this);
} database.createStructure();
} else
Leaderboard.makeLeaderboards(); //Make the leaderboards
for(Player player : getServer().getOnlinePlayers()){Users.addUser(player);} //In case of reload add all users back into PlayerProfile
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" ); //$NON-NLS-1$ //$NON-NLS-2$
mcMMO_Timer.schedule(new mcTimer(this), (long)0, (long)(1000));
//mcMMO_SpellTimer.schedule(new mcTimerSpells(this), (long)0, (long)(100));
} }
public void setupPermissions() { public void setupPermissions() {
Plugin test = this.getServer().getPluginManager().getPlugin("Permissions"); Plugin test = this.getServer().getPluginManager().getPlugin("Permissions"); //$NON-NLS-1$
if(this.PermissionsHandler == null) { if(this.PermissionsHandler == null) {
if(test != null) { if(test != null) {
this.PermissionsHandler = ((Permissions)test).getHandler(); this.PermissionsHandler = ((Permissions)test).getHandler();
} else { } else {
log.info(Messaging.bracketize(name) + " Permission system not enabled. Disabling plugin."); log.info(Messaging.bracketize(name) + " Permission system not enabled. Disabling plugin."); //$NON-NLS-1$
this.getServer().getPluginManager().disablePlugin(this); this.getServer().getPluginManager().disablePlugin(this);
} }
} }
} }
public boolean isPartyChatToggled(Player player){
if(Config.getInstance().isPartyToggled(player.getName())){
return true;
} else {
return false;
}
}
public boolean inSameParty(Player playera, Player playerb){ public boolean inSameParty(Player playera, Player playerb){
if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()){ if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()){
if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())){ if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())){
@ -127,9 +169,17 @@ public class mcMMO extends JavaPlugin {
return false; return false;
} }
} }
public void getXpToLevel(Player player, String skillname){
Users.getProfile(player).getXpToLevel(skillname.toLowerCase());
}
public void removeXp(Player player, String skillname, Integer newvalue){
PlayerProfile PP = Users.getProfile(player);
PP.removeXP(skillname, newvalue);
Skills.XpCheck(player);
}
public void addXp(Player player, String skillname, Integer newvalue){ public void addXp(Player player, String skillname, Integer newvalue){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
PP.addXpToSkill(newvalue, skillname, player); PP.addXP(skillname, newvalue);
Skills.XpCheck(player); Skills.XpCheck(player);
} }
public void modifySkill(Player player, String skillname, Integer newvalue){ public void modifySkill(Player player, String skillname, Integer newvalue){
@ -137,16 +187,16 @@ public class mcMMO extends JavaPlugin {
PP.modifyskill(newvalue, skillname); PP.modifyskill(newvalue, skillname);
} }
public ArrayList<String> getParties(){ public ArrayList<String> getParties(){
String location = "plugins/mcMMO/mcmmo.users"; String location = "plugins/mcMMO/mcmmo.users"; //$NON-NLS-1$
ArrayList<String> parties = new ArrayList<String>(); ArrayList<String> parties = new ArrayList<String>();
try { try {
//Open the users file //Open the users file
FileReader file = new FileReader(location); FileReader file = new FileReader(location);
BufferedReader in = new BufferedReader(file); BufferedReader in = new BufferedReader(file);
String line = ""; String line = ""; //$NON-NLS-1$
while((line = in.readLine()) != null) while((line = in.readLine()) != null)
{ {
String[] character = line.split(":"); String[] character = line.split(":"); //$NON-NLS-1$
String theparty = null; String theparty = null;
//Party //Party
if(character.length > 3) if(character.length > 3)
@ -156,8 +206,8 @@ public class mcMMO extends JavaPlugin {
} }
in.close(); in.close();
} catch (Exception e) { } catch (Exception e) {
log.log(Level.SEVERE, "Exception while reading " log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
+ location + " (Are you sure you formatted it correctly?)", e); + location + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
} }
return parties; return parties;
} }
@ -169,17 +219,10 @@ public class mcMMO extends JavaPlugin {
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
return PP.inParty(); return PP.inParty();
} }
public boolean isAdminChatToggled(Player player){
if(Config.getInstance().isAdminToggled(player.getName())){
return true;
} else {
return false;
}
}
public Permissions getPermissions() { public Permissions getPermissions() {
return permissions; return permissions;
} }
public void onDisable() { public void onDisable() {
System.out.println("mcMMO was disabled."); System.out.println("mcMMO was disabled."); //$NON-NLS-1$
} }
} }

View File

@ -190,6 +190,60 @@ public class mcPermissions {
} }
return instance; return instance;
} }
public boolean sorcery(Player player){
if (permissionsEnabled) {
return permission(player, "mcmmo.skills.sorcery");
} else {
return true;
}
}
/*
* SORCERY WATER
*/
public boolean sorceryWater(Player player)
{
if (permissionsEnabled) {
return permission(player, "mcmmo.skills.sorcery.water");
} else {
return true;
}
}
public boolean sorceryWaterThunder(Player player)
{
if (permissionsEnabled) {
return permission(player, "mcmmo.skills.sorcery.water.thunder");
} else {
return true;
}
}
/*
* SORCERY CURATIVE
*/
public boolean sorceryCurative(Player player)
{
if (permissionsEnabled) {
return permission(player, "mcmmo.skills.curative");
} else {
return true;
}
}
public boolean sorceryCurativeHealOther(Player player)
{
if (permissionsEnabled) {
return permission(player, "mcmmo.skills.curative.heal.other");
} else {
return true;
}
}
public boolean sorceryCurativeHealSelf(Player player)
{
if (permissionsEnabled) {
return permission(player, "mcmmo.skills.curative.heal.self");
} else {
return true;
}
}
public boolean taming(Player player) { public boolean taming(Player player) {
if (permissionsEnabled) { if (permissionsEnabled) {
return permission(player, "mcmmo.skills.taming"); return permission(player, "mcmmo.skills.taming");
@ -211,7 +265,7 @@ public class mcPermissions {
return true; return true;
} }
} }
public static boolean repair(Player player) { public boolean repair(Player player) {
if (permissionsEnabled) { if (permissionsEnabled) {
return permission(player, "mcmmo.skills.repair"); return permission(player, "mcmmo.skills.repair");
} else { } else {

File diff suppressed because it is too large Load Diff

View File

@ -1,50 +1,73 @@
package com.gmail.nossr50; package com.gmail.nossr50;
import java.awt.Color;
import java.util.TimerTask; import java.util.TimerTask;
import org.bukkit.ChatColor;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.skills.Skills; import com.gmail.nossr50.skills.Skills;
import com.gmail.nossr50.skills.Swords; import com.gmail.nossr50.skills.Swords;
public class mcTimer extends TimerTask{ public class mcTimer extends TimerTask
{
private final mcMMO plugin; private final mcMMO plugin;
int thecount = 1; int thecount = 1;
public mcTimer(final mcMMO plugin) { public mcTimer(final mcMMO plugin)
{
this.plugin = plugin; this.plugin = plugin;
} }
public void run() { public void run()
Player[] playerlist = plugin.getServer().getOnlinePlayers(); {
for(Player player : playerlist) long before = System.currentTimeMillis();
for(Player player : plugin.getServer().getOnlinePlayers())
{ {
PlayerProfile PP = Users.getProfile(player);
if(player == null) if(player == null)
continue; continue;
PlayerProfile PP = Users.getProfile(player);
if(PP == null) if(PP == null)
Users.addUser(player); continue;
/* /*
* MONITOR SKILLS * MONITOR SKILLS
*/ */
Skills.monitorSkills(player); Skills.monitorSkills(player);
/* /*
* COOLDOWN MONITORING * COOLDOWN MONITORING
*/ */
Skills.watchCooldowns(player); Skills.watchCooldowns(player);
/*
* MANA MONITORING
*/
/*
if(mcPermissions.getInstance().sorcery(player) && thecount == 20 && PP.getCurrentMana() < PP.getMaxMana())
{
PP.setMana(PP.getCurrentMana()+PP.getMaxMana()/5);
//MAKE SURE THE MANA IS NOT ABOVE MAXIMUM
if(PP.getMaxMana() < PP.getCurrentMana())
PP.setMana(PP.getMaxMana());
if(PP.getMaxMana() != PP.getCurrentMana())
player.sendMessage(Messages.getString("Sorcery.Current_Mana")+" "+ChatColor.GREEN+PP.getCurrentMana()+"/"+PP.getMaxMana());
}
*/
/* /*
* PLAYER BLEED MONITORING * PLAYER BLEED MONITORING
*/ */
if(thecount % 2 == 0 && PP != null && PP.getBleedTicks() >= 1){ if(thecount % 2 == 0 && PP.getBleedTicks() >= 1)
{
player.damage(2); player.damage(2);
PP.decreaseBleedTicks(); PP.decreaseBleedTicks();
} }
if(mcPermissions.getInstance().regeneration(player) && PP != null && System.currentTimeMillis() >= PP.getRecentlyHurt() + 60000) if(LoadProperties.enableRegen && mcPermissions.getInstance().regeneration(player) && System.currentTimeMillis() >= PP.getRecentlyHurt() + 60000)
{ {
if(thecount == 10 || thecount == 20 || thecount == 30 || thecount == 40){ if(thecount == 10 || thecount == 20 || thecount == 30 || thecount == 40){
if(player != null && if(player != null &&
@ -61,7 +84,8 @@ public class mcTimer extends TimerTask{
player.setHealth(m.calculateHealth(player.getHealth(), 1)); player.setHealth(m.calculateHealth(player.getHealth(), 1));
} }
} }
if(thecount == 40){ if(thecount == 40)
{
if(player != null && if(player != null &&
player.getHealth() > 0 && player.getHealth() < 20 player.getHealth() > 0 && player.getHealth() < 20
&& m.getPowerLevel(player) < 500){ && m.getPowerLevel(player) < 500){
@ -71,18 +95,27 @@ public class mcTimer extends TimerTask{
} }
} }
/* /*
* NON-PLAYER BLEED MONITORING * NON-PLAYER BLEED MONITORING
*/ */
if(thecount % 2 == 0)
Swords.bleedSimulate();
if(thecount < 40) if(thecount % 2 == 0)
{ Swords.bleedSimulate(plugin);
//SETUP FOR HP REGEN/BLEED
thecount++; thecount++;
} else if(thecount >= 41)
{
thecount = 1; thecount = 1;
if(LoadProperties.print_reports)
{
long after = System.currentTimeMillis();
plugin.mcTimerx+=(after-before);
if(thecount == 40)
plugin.printDelays();
} }
} }
} }

View File

@ -0,0 +1,20 @@
package com.gmail.nossr50;
import java.util.TimerTask;
public class mcTimerSpells extends TimerTask
{
mcMMO plugin = null;
public mcTimerSpells(mcMMO pluginx)
{
plugin = pluginx;
}
@Override
public void run()
{
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,8 @@
package com.gmail.nossr50.party; package com.gmail.nossr50.party;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
@ -50,18 +50,20 @@ public class Party {
for(Player p : players){ for(Player p : players){
if(player != null && p != null){ if(player != null && p != null){
if(inSameParty(player, p) && !p.getName().equals(player.getName())){ if(inSameParty(player, p) && !p.getName().equals(player.getName())){
p.sendMessage(player.getName() + ChatColor.GREEN + " has joined your party"); p.sendMessage(Messages.getString("Party.InformedOnJoin", new Object[] {player.getName()}));
x++; x++;
} }
} }
} }
} }
public void informPartyMembersQuit(Player player, Player[] players){ public void informPartyMembersQuit(Player player, Player[] players)
{
int x = 0; int x = 0;
for(Player p : players){ for(Player p : players){
if(player != null && p != null){ if(player != null && p != null){
if(inSameParty(player, p) && !p.getName().equals(player.getName())){ if(inSameParty(player, p) && !p.getName().equals(player.getName()))
p.sendMessage(player.getName() + ChatColor.GREEN + " has left your party"); {
p.sendMessage(Messages.getString("Party.InformedOnQuit", new Object[] {player.getName()}));
x++; x++;
} }
} }

View File

@ -1,7 +1,6 @@
package com.gmail.nossr50.skills; package com.gmail.nossr50.skills;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
@ -16,7 +15,7 @@ public class Acrobatics {
public static void acrobaticsCheck(Player player, EntityDamageEvent event){ public static void acrobaticsCheck(Player player, EntityDamageEvent event){
if(player != null && mcPermissions.getInstance().acrobatics(player)){ if(player != null && mcPermissions.getInstance().acrobatics(player)){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
int acrovar = PP.getAcrobaticsInt(); int acrovar = PP.getSkill("acrobatics");
if(player.isSneaking()) if(player.isSneaking())
acrovar = acrovar * 2; acrovar = acrovar * 2;
if(Math.random() * 1000 <= acrovar && !event.isCancelled()){ if(Math.random() * 1000 <= acrovar && !event.isCancelled()){
@ -55,8 +54,8 @@ public class Acrobatics {
PlayerProfile PPd = Users.getProfile(defender); PlayerProfile PPd = Users.getProfile(defender);
if(mcPermissions.getInstance().acrobatics(defender)){ if(mcPermissions.getInstance().acrobatics(defender)){
if(PPd.getAcrobaticsInt() <= 800){ if(PPd.getSkill("acrobatics") <= 800){
if(Math.random() * 4000 <= PPd.getAcrobaticsInt()){ if(Math.random() * 4000 <= PPd.getSkill("acrobatics")){
defender.sendMessage(ChatColor.GREEN+"**DODGE**"); defender.sendMessage(ChatColor.GREEN+"**DODGE**");
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){ if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
PPd.addAcrobaticsXP(event.getDamage() * 12); PPd.addAcrobaticsXP(event.getDamage() * 12);

View File

@ -3,12 +3,15 @@ package com.gmail.nossr50.skills;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Animals; import org.bukkit.entity.Animals;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Monster; import org.bukkit.entity.Monster;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Wolf; import org.bukkit.entity.Wolf;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.Combat;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcPermissions; import com.gmail.nossr50.mcPermissions;
@ -27,25 +30,24 @@ public class Axes {
PP.setAxePreparationMode(false); PP.setAxePreparationMode(false);
} }
int ticks = 2; int ticks = 2;
int x = PP.getAxesInt(); int x = PP.getSkill("axes");
while(x >= 50){ while(x >= 50){
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getSkullSplitterMode() && Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){ if(!PP.getSkullSplitterMode() && Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){
player.sendMessage(ChatColor.GREEN+"**SKULL SPLITTER ACTIVATED**"); player.sendMessage(Messages.getString("Skills.SkullSplitterOn"));
for(Player y : pluginx.getServer().getOnlinePlayers()){ for(Player y : pluginx.getServer().getOnlinePlayers()){
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(ChatColor.GREEN+player.getName()+ChatColor.DARK_GREEN+" has used "+ChatColor.RED+"Skull Splitter!"); y.sendMessage(Messages.getString("Skills.SkullSplitterPlayer", new Object[] {player.getName()}));
} }
PP.setSkullSplitterTicks(ticks * 1000);
PP.setSkullSplitterActivatedTimeStamp(System.currentTimeMillis()); PP.setSkullSplitterActivatedTimeStamp(System.currentTimeMillis());
PP.setSkullSplitterDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000)); PP.setSkullSplitterDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setSkullSplitterMode(true); PP.setSkullSplitterMode(true);
} }
if(!PP.getSkullSplitterMode() && !Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){ if(!PP.getSkullSplitterMode() && !Skills.cooldownOver(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again." player.sendMessage(Messages.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)+"s)"); +ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, PP.getSkullSplitterDeactivatedTimeStamp(), LoadProperties.skullSplitterCooldown)+"s)");
} }
} }
@ -54,14 +56,17 @@ public class Axes {
Entity x = event.getEntity(); Entity x = event.getEntity();
if(x instanceof Wolf){ if(x instanceof Wolf){
Wolf wolf = (Wolf)x; Wolf wolf = (Wolf)x;
if(Taming.getOwner(wolf, pluginx) != null)
{
if(Taming.getOwner(wolf, pluginx) == attacker) if(Taming.getOwner(wolf, pluginx) == attacker)
return; return;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx))) if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx)))
return; return;
} }
}
PlayerProfile PPa = Users.getProfile(attacker); PlayerProfile PPa = Users.getProfile(attacker);
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){ if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
if(PPa.getAxesInt() >= 750){ if(PPa.getSkill("axes") >= 750){
if(Math.random() * 1000 <= 750){ if(Math.random() * 1000 <= 750){
if(x instanceof Player){ if(x instanceof Player){
Player player = (Player)x; Player player = (Player)x;
@ -74,7 +79,7 @@ public class Axes {
} }
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!"); attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
} }
} else if(Math.random() * 1000 <= PPa.getAxesInt()){ } else if(Math.random() * 1000 <= PPa.getSkill("axes")){
if(x instanceof Player){ if(x instanceof Player){
Player player = (Player)x; Player player = (Player)x;
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!"); player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
@ -89,36 +94,42 @@ public class Axes {
} }
} }
public static void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx){ public static void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx)
{
int targets = 0; int targets = 0;
Entity x = event.getEntity(); Entity x = event.getEntity();
targets = m.getTier(attacker); targets = m.getTier(attacker);
for(Entity derp : x.getWorld().getEntities()){ for(Entity derp : x.getWorld().getEntities())
if(m.getDistance(x.getLocation(), derp.getLocation()) < 5){ {
if(derp instanceof Player){ if(m.getDistance(x.getLocation(), derp.getLocation()) < 5)
{
if(derp instanceof Player)
{
if(Combat.pvpAllowed(event, derp.getWorld()))
{
Player target = (Player)derp; Player target = (Player)derp;
if(Party.getInstance().inSameParty(attacker, target)) if(Party.getInstance().inSameParty(attacker, target))
continue; continue;
if(!target.getName().equals(attacker.getName()) && targets >= 1){ if(!target.getName().equals(attacker.getName()) && targets >= 1)
{
target.damage(event.getDamage() / 2); target.damage(event.getDamage() / 2);
target.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!"); target.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!");
targets--; targets--;
} }
} }
if(derp instanceof Monster && targets >= 1){ } else if(derp instanceof LivingEntity && targets >= 1)
Monster target = (Monster)derp; {
target.damage(event.getDamage() / 2); if(derp instanceof Wolf)
targets--; {
}
if(derp instanceof Wolf){
Wolf hurrDurr = (Wolf)derp; Wolf hurrDurr = (Wolf)derp;
if(Taming.getOwner(hurrDurr, pluginx) == attacker) if(Taming.getOwner(hurrDurr, pluginx) == attacker)
continue; continue;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx))) if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx)))
continue; continue;
} }
if(derp instanceof Animals && targets >= 1){
Animals target = (Animals)derp; //Deal the damage
LivingEntity target = (LivingEntity)derp;
target.damage(event.getDamage() / 2); target.damage(event.getDamage() / 2);
targets--; targets--;
} }

View File

@ -1,6 +1,5 @@
package com.gmail.nossr50.skills; package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -8,18 +7,14 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
public class Excavation { public class Excavation {
private static mcMMO plugin;
public Excavation(mcMMO instance) {
plugin = instance;
}
public static void gigaDrillBreakerActivationCheck(Player player, Block block, Plugin pluginx){ public static void gigaDrillBreakerActivationCheck(Player player, Block block, Plugin pluginx){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(m.isShovel(player.getItemInHand())){ if(m.isShovel(player.getItemInHand())){
@ -31,19 +26,18 @@ public class Excavation {
PP.setShovelPreparationMode(false); PP.setShovelPreparationMode(false);
} }
int ticks = 2; int ticks = 2;
int x = PP.getExcavationInt(); int x = PP.getSkill("excavation");
while(x >= 50){ while(x >= 50){
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerCooldown() == 0){ if(!PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() < System.currentTimeMillis()){
player.sendMessage(ChatColor.GREEN+"**GIGA DRILL BREAKER ACTIVATED**"); player.sendMessage(Messages.getString("Skills.GigaDrillBreakerOn"));
for(Player y : pluginx.getServer().getOnlinePlayers()){ for(Player y : pluginx.getServer().getOnlinePlayers()){
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(ChatColor.GREEN+player.getName()+ChatColor.DARK_GREEN+" has used "+ChatColor.RED+"Giga Drill Breaker!"); y.sendMessage(Messages.getString("Skills.GigaDrillBreakerPlayer", new Object[] {player.getName()}));
} }
PP.setGigaDrillBreakerTicks(ticks * 1000);
PP.setGigaDrillBreakerActivatedTimeStamp(System.currentTimeMillis()); PP.setGigaDrillBreakerActivatedTimeStamp(System.currentTimeMillis());
PP.setGigaDrillBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000)); PP.setGigaDrillBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setGigaDrillBreakerMode(true); PP.setGigaDrillBreakerMode(true);
@ -69,17 +63,17 @@ public class Excavation {
return; return;
} }
if(type == 2){ if(type == 2){
if(PP.getExcavationInt() > 250){ if(PP.getSkill("excavation") > 250){
//CHANCE TO GET EGGS //CHANCE TO GET EGGS
if(LoadProperties.eggs == true && Math.random() * 100 > 99){ if(LoadProperties.eggs == true && Math.random() * 100 > 99){
PP.addExcavationXP(10 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.meggs * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(344); mat = Material.getMaterial(344);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
//CHANCE TO GET APPLES //CHANCE TO GET APPLES
if(LoadProperties.apples == true && Math.random() * 100 > 99){ if(LoadProperties.apples == true && Math.random() * 100 > 99){
PP.addExcavationXP(10 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mapple * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(260); mat = Material.getMaterial(260);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
@ -88,39 +82,39 @@ public class Excavation {
} }
//DIRT SAND OR GRAVEL //DIRT SAND OR GRAVEL
if(type == 3 || type == 13 || type == 2 || type == 12){ if(type == 3 || type == 13 || type == 2 || type == 12){
PP.addExcavationXP(4 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mbase * LoadProperties.xpGainMultiplier);
if(PP.getExcavationInt() > 750){ if(PP.getSkill("excavation") > 750){
//CHANCE TO GET CAKE //CHANCE TO GET CAKE
if(LoadProperties.cake == true && Math.random() * 2000 > 1999){ if(LoadProperties.cake == true && Math.random() * 2000 > 1999){
PP.addExcavationXP(300 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mcake * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(354); mat = Material.getMaterial(354);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
} }
if(PP.getExcavationInt() > 350){ if(PP.getSkill("excavation") > 350){
//CHANCE TO GET DIAMOND //CHANCE TO GET DIAMOND
if(LoadProperties.diamond == true && Math.random() * 750 > 749){ if(LoadProperties.diamond == true && Math.random() * 750 > 749){
PP.addExcavationXP(100 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mdiamond2 * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(264); mat = Material.getMaterial(264);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
} }
if(PP.getExcavationInt() > 250){ if(PP.getSkill("excavation") > 250){
//CHANCE TO GET YELLOW MUSIC //CHANCE TO GET YELLOW MUSIC
if(LoadProperties.music == true && Math.random() * 2000 > 1999){ if(LoadProperties.music == true && Math.random() * 2000 > 1999){
PP.addExcavationXP(300 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mmusic * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(2256); mat = Material.getMaterial(2256);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
} }
if(PP.getExcavationInt() > 350){ if(PP.getSkill("excavation") > 350){
//CHANCE TO GET GREEN MUSIC //CHANCE TO GET GREEN MUSIC
if(LoadProperties.music == true && Math.random() * 2000 > 1999){ if(LoadProperties.music == true && Math.random() * 2000 > 1999){
PP.addExcavationXP(300 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mmusic * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(2257); mat = Material.getMaterial(2257);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
@ -130,15 +124,15 @@ public class Excavation {
//SAND //SAND
if(type == 12){ if(type == 12){
//CHANCE TO GET GLOWSTONE //CHANCE TO GET GLOWSTONE
if(LoadProperties.glowstone == true && PP.getExcavationInt() > 50 && Math.random() * 100 > 95){ if(LoadProperties.glowstone == true && PP.getSkill("excavation") > 50 && Math.random() * 100 > 95){
PP.addExcavationXP(8 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mglowstone2 * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(348); mat = Material.getMaterial(348);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
//CHANCE TO GET SLOWSAND //CHANCE TO GET SLOWSAND
if(LoadProperties.slowsand == true && PP.getExcavationInt() > 650 && Math.random() * 200 > 199){ if(LoadProperties.slowsand == true && PP.getSkill("excavation") > 650 && Math.random() * 200 > 199){
PP.addExcavationXP(8 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mslowsand * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(88); mat = Material.getMaterial(88);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
@ -146,10 +140,10 @@ public class Excavation {
} }
//GRASS OR DIRT //GRASS OR DIRT
if(type == 2 || type == 3){ if(type == 2 || type == 3){
if(PP.getExcavationInt() > 50){ if(PP.getSkill("excavation") > 50){
//CHANCE FOR COCOA BEANS //CHANCE FOR COCOA BEANS
if(LoadProperties.eggs == true && Math.random() * 75 > 74){ if(LoadProperties.cocoabeans == true && Math.random() * 75 > 74){
PP.addExcavationXP(10 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mcocoa * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(351); mat = Material.getMaterial(351);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
is.setDurability((byte) 3); //COCOA is.setDurability((byte) 3); //COCOA
@ -157,8 +151,8 @@ public class Excavation {
} }
} }
//CHANCE FOR SHROOMS //CHANCE FOR SHROOMS
if(LoadProperties.mushrooms == true && PP.getExcavationInt() > 500 && Math.random() * 200 > 199){ if(LoadProperties.mushrooms == true && PP.getSkill("excavation") > 500 && Math.random() * 200 > 199){
PP.addExcavationXP(8 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mmushroom2 * LoadProperties.xpGainMultiplier);
if(Math.random() * 10 > 5){ if(Math.random() * 10 > 5){
mat = Material.getMaterial(39); mat = Material.getMaterial(39);
} else { } else {
@ -168,8 +162,8 @@ public class Excavation {
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
//CHANCE TO GET GLOWSTONE //CHANCE TO GET GLOWSTONE
if(LoadProperties.glowstone == true && PP.getExcavationInt() > 25 && Math.random() * 100 > 95){ if(LoadProperties.glowstone == true && PP.getSkill("excavation") > 25 && Math.random() * 100 > 95){
PP.addExcavationXP(8 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mglowstone2 * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(348); mat = Material.getMaterial(348);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
@ -178,25 +172,25 @@ public class Excavation {
//GRAVEL //GRAVEL
if(type == 13){ if(type == 13){
//CHANCE TO GET NETHERRACK //CHANCE TO GET NETHERRACK
if(LoadProperties.netherrack == true && PP.getExcavationInt() > 850 && Math.random() * 200 > 199){ if(LoadProperties.netherrack == true && PP.getSkill("excavation") > 850 && Math.random() * 200 > 199){
PP.addExcavationXP(3 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mnetherrack * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(87); mat = Material.getMaterial(87);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
//CHANCE TO GET SULPHUR //CHANCE TO GET SULPHUR
if(LoadProperties.sulphur == true && PP.getExcavationInt() > 75){ if(LoadProperties.sulphur == true && PP.getSkill("excavation") > 75){
if(Math.random() * 10 > 9){ if(Math.random() * 10 > 9){
PP.addExcavationXP(3 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.msulphur * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(289); mat = Material.getMaterial(289);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
} }
//CHANCE TO GET BONES //CHANCE TO GET BONES
if(LoadProperties.bones == true && PP.getExcavationInt() > 175){ if(LoadProperties.bones == true && PP.getSkill("excavation") > 175){
if(Math.random() * 10 > 9){ if(Math.random() * 10 > 9){
PP.addExcavationXP(3 * LoadProperties.xpGainMultiplier); PP.addExcavationXP(LoadProperties.mbones * LoadProperties.xpGainMultiplier);
mat = Material.getMaterial(352); mat = Material.getMaterial(352);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);

View File

@ -1,6 +1,5 @@
package com.gmail.nossr50.skills; package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
@ -10,22 +9,20 @@ import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
public class Herbalism { public class Herbalism {
private static mcMMO plugin;
public Herbalism(mcMMO instance) {
plugin = instance;
}
public static void greenTerraWheat(Player player, Block block, BlockBreakEvent event){ public static void greenTerraWheat(Player player, Block block, BlockBreakEvent event, mcMMO plugin)
if(block.getType() == Material.WHEAT && block.getData() == (byte) 0x07){ {
if(block.getType() == Material.WHEAT && block.getData() == (byte) 0x07)
{
event.setCancelled(true); event.setCancelled(true);
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
Material mat = Material.getMaterial(296); Material mat = Material.getMaterial(296);
@ -33,8 +30,14 @@ public class Herbalism {
ItemStack is = new ItemStack(mat, 1, (byte)0, (byte)0); ItemStack is = new ItemStack(mat, 1, (byte)0, (byte)0);
PP.addHerbalismXP(5 * LoadProperties.xpGainMultiplier); PP.addHerbalismXP(5 * LoadProperties.xpGainMultiplier);
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
herbalismProcCheck(block, player, event);
herbalismProcCheck(block, player, event); //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); block.setData((byte) 0x03);
} }
} }
@ -42,7 +45,8 @@ public class Herbalism {
if(block.getType() == Material.COBBLESTONE || block.getType() == Material.DIRT){ if(block.getType() == Material.COBBLESTONE || block.getType() == Material.DIRT){
if(!hasSeeds(player)) if(!hasSeeds(player))
player.sendMessage("You need more seeds to spread Green Terra"); player.sendMessage("You need more seeds to spread Green Terra");
if(hasSeeds(player) && block.getType() != Material.WHEAT){ if(hasSeeds(player) && block.getType() != Material.WHEAT)
{
removeSeeds(player); removeSeeds(player);
if(block.getType() == Material.DIRT) if(block.getType() == Material.DIRT)
block.setType(Material.GRASS); block.setType(Material.GRASS);
@ -95,19 +99,18 @@ public class Herbalism {
PP.setHoePreparationMode(false); PP.setHoePreparationMode(false);
} }
int ticks = 2; int ticks = 2;
int x = PP.getHerbalismInt(); int x = PP.getSkill("herbalism");
while(x >= 50){ while(x >= 50){
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getGreenTerraMode() && Skills.cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){ if(!PP.getGreenTerraMode() && Skills.cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){
player.sendMessage(ChatColor.GREEN+"**GREEN TERRA ACTIVATED**"); player.sendMessage(Messages.getString("Skills.GreenTerraOn"));
for(Player y : pluginx.getServer().getOnlinePlayers()){ for(Player y : pluginx.getServer().getOnlinePlayers()){
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(ChatColor.GREEN+player.getName()+ChatColor.DARK_GREEN+" has used "+ChatColor.RED+"Green Terra!"); y.sendMessage(Messages.getString("Skills.GreenTerraPlayer", new Object[] {player.getName()}));
} }
PP.setGreenTerraTicks(ticks * 1000);
PP.setGreenTerraActivatedTimeStamp(System.currentTimeMillis()); PP.setGreenTerraActivatedTimeStamp(System.currentTimeMillis());
PP.setGreenTerraDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000)); PP.setGreenTerraDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setGreenTerraMode(true); PP.setGreenTerraMode(true);
@ -115,39 +118,45 @@ public class Herbalism {
} }
} }
public static void herbalismProcCheck(Block block, Player player, BlockBreakEvent event){ public static void herbalismProcCheck(Block block, Player player, BlockBreakEvent event, mcMMO plugin)
{
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
int type = block.getTypeId(); int type = block.getTypeId();
Location loc = block.getLocation(); Location loc = block.getLocation();
ItemStack is = null; ItemStack is = null;
Material mat = null; Material mat = null;
if(Config.getInstance().isBlockWatched(block)){ if(plugin.misc.blockWatchList.contains(block))
{
return; return;
} }
if(type == 59 && block.getData() == (byte) 0x7){ if(type == 59 && block.getData() == (byte) 0x7){
mat = Material.getMaterial(296); mat = Material.getMaterial(296);
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
PP.addHerbalismXP(5 * LoadProperties.xpGainMultiplier); PP.addHerbalismXP(LoadProperties.mwheat * LoadProperties.xpGainMultiplier);
if(player != null){ if(player != null){
if(Math.random() * 1000 <= PP.getHerbalismInt()){ if(Math.random() * 1000 <= PP.getSkill("herbalism")){
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
} }
//GREEN THUMB //GREEN THUMB
if(Math.random() * 1500 <= PP.getHerbalismInt()){ if(Math.random() * 1500 <= PP.getSkill("herbalism")){
event.setCancelled(true); event.setCancelled(true);
loc.getWorld().dropItemNaturally(loc, is); 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 block.setData((byte) 0x1); //Change it to first stage
//Setup the bonuses //Setup the bonuses
int bonus = 0; int bonus = 0;
if(PP.getHerbalismInt() >= 200) if(PP.getSkill("herbalism") >= 200)
bonus++; bonus++;
if(PP.getHerbalismInt() >= 400) if(PP.getSkill("herbalism") >= 400)
bonus++; bonus++;
if(PP.getHerbalismInt() >= 600) if(PP.getSkill("herbalism") >= 600)
bonus++; bonus++;
//Change wheat to be whatever stage based on the bonus //Change wheat to be whatever stage based on the bonus
@ -190,11 +199,11 @@ public class Herbalism {
is = new ItemStack(Material.CACTUS, 1, (byte)0, (byte)0); is = new ItemStack(Material.CACTUS, 1, (byte)0, (byte)0);
if(byteArray[x] != (byte) 5) if(byteArray[x] != (byte) 5)
{ {
if(Math.random() * 1000 <= PP.getHerbalismInt()) if(Math.random() * 1000 <= PP.getSkill("herbalism"))
{ {
loc.getWorld().dropItemNaturally(target.getLocation(), is); loc.getWorld().dropItemNaturally(target.getLocation(), is);
} }
PP.addHerbalismXP(3 * LoadProperties.xpGainMultiplier); PP.addHerbalismXP(LoadProperties.mcactus * LoadProperties.xpGainMultiplier);
} }
} }
x++; x++;
@ -228,11 +237,11 @@ public class Herbalism {
//Check for being placed by the player //Check for being placed by the player
if(byteArray[x] != (byte) 5) if(byteArray[x] != (byte) 5)
{ {
if(Math.random() * 1000 <= PP.getHerbalismInt()) if(Math.random() * 1000 <= PP.getSkill("herbalism"))
{ {
loc.getWorld().dropItemNaturally(target.getLocation(), is); loc.getWorld().dropItemNaturally(target.getLocation(), is);
} }
PP.addHerbalismXP(3 * LoadProperties.xpGainMultiplier); PP.addHerbalismXP(LoadProperties.msugar * LoadProperties.xpGainMultiplier);
} }
} }
x++; x++;
@ -240,81 +249,88 @@ public class Herbalism {
} }
//Pumpkins //Pumpkins
if((type == 91 || type == 86) && !Config.getInstance().isBlockWatched(block)){ if((type == 91 || type == 86) && plugin.misc.blockWatchList.contains(block))
{
mat = Material.getMaterial(block.getTypeId()); mat = Material.getMaterial(block.getTypeId());
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
if(player != null){ if(player != null){
if(Math.random() * 1000 <= PP.getHerbalismInt()){ if(Math.random() * 1000 <= PP.getSkill("herbalism")){
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
} }
PP.addHerbalismXP(55 * LoadProperties.xpGainMultiplier); PP.addHerbalismXP(LoadProperties.mpumpkin * LoadProperties.xpGainMultiplier);
} }
//Mushroom //Mushroom
if(type == 39 || type == 40){ if(type == 39 || type == 40){
mat = Material.getMaterial(block.getTypeId()); mat = Material.getMaterial(block.getTypeId());
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
if(player != null){ if(player != null){
if(Math.random() * 1000 <= PP.getHerbalismInt()){ if(Math.random() * 1000 <= PP.getSkill("herbalism")){
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
} }
PP.addHerbalismXP(40 * LoadProperties.xpGainMultiplier); PP.addHerbalismXP(LoadProperties.mmushroom * LoadProperties.xpGainMultiplier);
} }
//Flower //Flower
if(type == 37 || type == 38){ if(type == 37 || type == 38){
mat = Material.getMaterial(block.getTypeId()); mat = Material.getMaterial(block.getTypeId());
is = new ItemStack(mat, 1, (byte)0, (byte)0); is = new ItemStack(mat, 1, (byte)0, (byte)0);
if(player != null){ if(player != null){
if(Math.random() * 1000 <= PP.getHerbalismInt()){ if(Math.random() * 1000 <= PP.getSkill("herbalism")){
loc.getWorld().dropItemNaturally(loc, is); loc.getWorld().dropItemNaturally(loc, is);
} }
} }
PP.addHerbalismXP(10 * LoadProperties.xpGainMultiplier); PP.addHerbalismXP(LoadProperties.mflower * LoadProperties.xpGainMultiplier);
} }
} }
Skills.XpCheck(player); Skills.XpCheck(player);
} }
public static void breadCheck(Player player, ItemStack is){ public static void breadCheck(Player player, ItemStack is){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(is.getTypeId() == 297){ int herbalism = PP.getSkill("herbalism");
if(PP.getHerbalismInt() >= 50 && PP.getHerbalismInt() < 150){ if(is != null && PP != null)
{
if(is.getTypeId() == 297)
{
if(herbalism >= 50 && herbalism < 150){
player.setHealth(player.getHealth() + 1); player.setHealth(player.getHealth() + 1);
} else if (PP.getHerbalismInt() >= 150 && PP.getHerbalismInt() < 250){ } else if (herbalism >= 150 && herbalism < 250){
player.setHealth(player.getHealth() + 2); player.setHealth(player.getHealth() + 2);
} else if (PP.getHerbalismInt() >= 250 && PP.getHerbalismInt() < 350){ } else if (herbalism >= 250 && herbalism < 350){
player.setHealth(player.getHealth() + 3); player.setHealth(player.getHealth() + 3);
} else if (PP.getHerbalismInt() >= 350 && PP.getHerbalismInt() < 450){ } else if (herbalism >= 350 && herbalism < 450){
player.setHealth(player.getHealth() + 4); player.setHealth(player.getHealth() + 4);
} else if (PP.getHerbalismInt() >= 450 && PP.getHerbalismInt() < 550){ } else if (herbalism >= 450 && herbalism < 550){
player.setHealth(player.getHealth() + 5); player.setHealth(player.getHealth() + 5);
} else if (PP.getHerbalismInt() >= 550 && PP.getHerbalismInt() < 650){ } else if (herbalism >= 550 && herbalism < 650){
player.setHealth(player.getHealth() + 6); player.setHealth(player.getHealth() + 6);
} else if (PP.getHerbalismInt() >= 650 && PP.getHerbalismInt() < 750){ } else if (herbalism >= 650 && herbalism < 750){
player.setHealth(player.getHealth() + 7); player.setHealth(player.getHealth() + 7);
} else if (PP.getHerbalismInt() >= 750){ } else if (herbalism >= 750){
player.setHealth(player.getHealth() + 8); player.setHealth(player.getHealth() + 8);
} }
} }
} }
}
public static void stewCheck(Player player, ItemStack is){ public static void stewCheck(Player player, ItemStack is){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
int herbalism = PP.getSkill("herbalism");
if(is.getTypeId() == 282){ if(is.getTypeId() == 282){
if(PP.getHerbalismInt() >= 50 && PP.getHerbalismInt() < 150){ if(herbalism >= 50 && herbalism < 150){
player.setHealth(player.getHealth() + 1); player.setHealth(player.getHealth() + 1);
} else if (PP.getHerbalismInt() >= 150 && PP.getHerbalismInt() < 250){ } else if (herbalism >= 150 && herbalism < 250){
player.setHealth(player.getHealth() + 2); player.setHealth(player.getHealth() + 2);
} else if (PP.getHerbalismInt() >= 250 && PP.getHerbalismInt() < 350){ } else if (herbalism >= 250 && herbalism < 350){
player.setHealth(player.getHealth() + 3); player.setHealth(player.getHealth() + 3);
} else if (PP.getHerbalismInt() >= 350 && PP.getHerbalismInt() < 450){ } else if (herbalism >= 350 && herbalism < 450){
player.setHealth(player.getHealth() + 4); player.setHealth(player.getHealth() + 4);
} else if (PP.getHerbalismInt() >= 450 && PP.getHerbalismInt() < 550){ } else if (herbalism >= 450 && herbalism < 550){
player.setHealth(player.getHealth() + 5); player.setHealth(player.getHealth() + 5);
} else if (PP.getHerbalismInt() >= 550 && PP.getHerbalismInt() < 650){ } else if (herbalism >= 550 && herbalism < 650){
player.setHealth(player.getHealth() + 6); player.setHealth(player.getHealth() + 6);
} else if (PP.getHerbalismInt() >= 650 && PP.getHerbalismInt() < 750){ } else if (herbalism >= 650 && herbalism < 750){
player.setHealth(player.getHealth() + 7); player.setHealth(player.getHealth() + 7);
} else if (PP.getHerbalismInt() >= 750){ } else if (herbalism >= 750){
player.setHealth(player.getHealth() + 8); player.setHealth(player.getHealth() + 8);
} }
} }

View File

@ -1,6 +1,5 @@
package com.gmail.nossr50.skills; package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Statistic; import org.bukkit.Statistic;
@ -9,19 +8,15 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
public class Mining { public class Mining {
private static mcMMO plugin;
public Mining(mcMMO instance) {
plugin = instance;
}
public static void superBreakerCheck(Player player, Block block, Plugin pluginx) public static void superBreakerCheck(Player player, Block block, Plugin pluginx)
{ {
@ -35,19 +30,20 @@ public class Mining {
PP.setPickaxePreparationMode(false); PP.setPickaxePreparationMode(false);
} }
int ticks = 2; int ticks = 2;
int x = PP.getMiningInt(); int x = PP.getSkill("mining");
while(x >= 50){ while(x >= 50)
{
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getSuperBreakerMode() && Skills.cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){ if(!PP.getSuperBreakerMode() && Skills.cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
player.sendMessage(ChatColor.GREEN+"**SUPER BREAKER ACTIVATED**"); player.sendMessage(Messages.getString("Skills.SuperBreakerOn"));
for(Player y : pluginx.getServer().getOnlinePlayers()){ for(Player y : pluginx.getServer().getOnlinePlayers())
{
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(ChatColor.GREEN+player.getName()+ChatColor.DARK_GREEN+" has used "+ChatColor.RED+"Super Breaker!"); y.sendMessage(Messages.getString("Skills.SuperBreakerPlayer", new Object[] {player.getName()}));
} }
PP.setSuperBreakerTicks(ticks * 1000);
PP.setSuperBreakerActivatedTimeStamp(System.currentTimeMillis()); PP.setSuperBreakerActivatedTimeStamp(System.currentTimeMillis());
PP.setSuperBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000)); PP.setSuperBreakerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setSuperBreakerMode(true); PP.setSuperBreakerMode(true);
@ -106,65 +102,65 @@ public class Mining {
{ {
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(player != null){ if(player != null){
if(Math.random() * 1000 <= PP.getMiningInt()){ if(Math.random() * 1000 <= PP.getSkill("mining")){
blockProcSimulate(block); blockProcSimulate(block);
return; return;
} }
} }
} }
public static void miningBlockCheck(Player player, Block block) public static void miningBlockCheck(Player player, Block block, mcMMO plugin)
{ {
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(Config.getInstance().isBlockWatched(block) || block.getData() == (byte) 5) if(plugin.misc.blockWatchList.contains(block) || block.getData() == (byte) 5)
return; return;
int xp = 0; int xp = 0;
if(block.getTypeId() == 1 || block.getTypeId() == 24){ if(block.getTypeId() == 1 || block.getTypeId() == 24){
xp += 3; xp += LoadProperties.mstone;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//OBSIDIAN //OBSIDIAN
if(block.getTypeId() == 49){ if(block.getTypeId() == 49){
xp += 15; xp += LoadProperties.mobsidian;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//NETHERRACK //NETHERRACK
if(block.getTypeId() == 87){ if(block.getTypeId() == 87){
xp += 3; xp += LoadProperties.mnetherrack;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//GLOWSTONE //GLOWSTONE
if(block.getTypeId() == 89){ if(block.getTypeId() == 89){
xp += 3; xp += LoadProperties.mglowstone;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//COAL //COAL
if(block.getTypeId() == 16){ if(block.getTypeId() == 16){
xp += 10; xp += LoadProperties.mcoal;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//GOLD //GOLD
if(block.getTypeId() == 14){ if(block.getTypeId() == 14){
xp += 35; xp += LoadProperties.mgold;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//DIAMOND //DIAMOND
if(block.getTypeId() == 56){ if(block.getTypeId() == 56){
xp += 75; xp += LoadProperties.mdiamond;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//IRON //IRON
if(block.getTypeId() == 15){ if(block.getTypeId() == 15){
xp += 25; xp += LoadProperties.miron;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//REDSTONE //REDSTONE
if(block.getTypeId() == 73 || block.getTypeId() == 74){ if(block.getTypeId() == 73 || block.getTypeId() == 74){
xp += 15; xp += LoadProperties.mredstone;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
//LAPUS //LAPUS
if(block.getTypeId() == 21){ if(block.getTypeId() == 21){
xp += 40; xp += LoadProperties.mlapus;
blockProcCheck(block, player); blockProcCheck(block, player);
} }
PP.addMiningXP(xp * LoadProperties.xpGainMultiplier); PP.addMiningXP(xp * LoadProperties.xpGainMultiplier);
@ -181,7 +177,7 @@ public class Mining {
return false; return false;
} }
} }
public static void SuperBreakerBlockCheck(Player player, Block block){ public static void SuperBreakerBlockCheck(Player player, Block block, mcMMO plugin){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(LoadProperties.toolsLoseDurabilityFromAbilities) if(LoadProperties.toolsLoseDurabilityFromAbilities)
m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss); m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss);
@ -192,14 +188,17 @@ public class Mining {
ItemStack item = new ItemStack(mat, 1, (byte)0, damage); ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
if(block.getTypeId() == 1 || block.getTypeId() == 24) if(block.getTypeId() == 1 || block.getTypeId() == 24)
{ {
if(!Config.getInstance().isBlockWatched(block) && block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block) && block.getData() != (byte) 5)
{
xp += 3; xp += 3;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);
} }
if(block.getTypeId() == 1){ if(block.getTypeId() == 1)
{
mat = Material.COBBLESTONE; mat = Material.COBBLESTONE;
} else { } else
{
mat = Material.SANDSTONE; mat = Material.SANDSTONE;
} }
item = new ItemStack(mat, 1, (byte)0, damage); item = new ItemStack(mat, 1, (byte)0, damage);
@ -210,7 +209,7 @@ public class Mining {
//NETHERRACK //NETHERRACK
if(block.getTypeId() == 87) if(block.getTypeId() == 87)
{ {
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += 3; xp += 3;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);
@ -224,7 +223,7 @@ public class Mining {
//GLOWSTONE //GLOWSTONE
if(block.getTypeId() == 89) if(block.getTypeId() == 89)
{ {
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += 3; xp += 3;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);
@ -238,7 +237,7 @@ public class Mining {
//COAL //COAL
if(block.getTypeId() == 16) if(block.getTypeId() == 16)
{ {
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += 10; xp += 10;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);
@ -252,7 +251,7 @@ public class Mining {
//GOLD //GOLD
if(block.getTypeId() == 14 && m.getTier(player) >= 3) if(block.getTypeId() == 14 && m.getTier(player) >= 3)
{ {
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += 35; xp += 35;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);
@ -266,8 +265,8 @@ public class Mining {
if(block.getTypeId() == 49 && m.getTier(player) >= 4) if(block.getTypeId() == 49 && m.getTier(player) >= 4)
{ {
if(LoadProperties.toolsLoseDurabilityFromAbilities) if(LoadProperties.toolsLoseDurabilityFromAbilities)
m.damageTool(player, (short) 104); m.damageTool(player, (short) LoadProperties.abilityDurabilityLoss);
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += 15; xp += 15;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);
@ -281,7 +280,7 @@ public class Mining {
//DIAMOND //DIAMOND
if(block.getTypeId() == 56 && m.getTier(player) >= 3) if(block.getTypeId() == 56 && m.getTier(player) >= 3)
{ {
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += 75; xp += 75;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);
@ -295,7 +294,7 @@ public class Mining {
//IRON //IRON
if(block.getTypeId() == 15 && m.getTier(player) >= 2) if(block.getTypeId() == 15 && m.getTier(player) >= 2)
{ {
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += 25; xp += 25;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);
@ -308,7 +307,7 @@ public class Mining {
//REDSTONE //REDSTONE
if((block.getTypeId() == 73 || block.getTypeId() == 74) && m.getTier(player) >= 4) if((block.getTypeId() == 73 || block.getTypeId() == 74) && m.getTier(player) >= 4)
{ {
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5) if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5)
{ {
xp += 15; xp += 15;
blockProcCheck(block, player); blockProcCheck(block, player);
@ -328,7 +327,7 @@ public class Mining {
} }
//LAPUS //LAPUS
if(block.getTypeId() == 21 && m.getTier(player) >= 3){ if(block.getTypeId() == 21 && m.getTier(player) >= 3){
if(!Config.getInstance().isBlockWatched(block)&& block.getData() != (byte) 5){ if(!plugin.misc.blockWatchList.contains(block)&& block.getData() != (byte) 5){
xp += 40; xp += 40;
blockProcCheck(block, player); blockProcCheck(block, player);
blockProcCheck(block, player); blockProcCheck(block, player);

View File

@ -5,20 +5,15 @@ import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcPermissions; import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
public class Repair { public class Repair {
private static mcMMO plugin;
public Repair(mcMMO instance) {
plugin = instance;
}
private static volatile Repair instance;
/* /*
* Repair requirements for each material * Repair requirements for each material
@ -40,8 +35,7 @@ public class Repair {
short durabilityBefore = player.getItemInHand().getDurability(); short durabilityBefore = player.getItemInHand().getDurability();
short durabilityAfter = 0; short durabilityAfter = 0;
short dif = 0; short dif = 0;
if(block != null if(block != null && mcPermissions.getInstance().repair(player)){
&& mcPermissions.repair(player)){
if(player.getItemInHand().getDurability() > 0 && player.getItemInHand().getAmount() < 2){ if(player.getItemInHand().getDurability() > 0 && player.getItemInHand().getAmount() < 2){
/* /*
* ARMOR * ARMOR
@ -50,7 +44,7 @@ public class Repair {
/* /*
* DIAMOND ARMOR * DIAMOND ARMOR
*/ */
if(isDiamondArmor(is) && hasItem(player, rDiamond) && PP.getRepairInt() >= LoadProperties.repairdiamondlevel){ if(isDiamondArmor(is) && hasItem(player, rDiamond) && PP.getSkill("repair") >= LoadProperties.repairdiamondlevel){
removeItem(player, rDiamond); removeItem(player, rDiamond);
player.getItemInHand().setDurability(getRepairAmount(is, player)); player.getItemInHand().setDurability(getRepairAmount(is, player));
durabilityAfter = player.getItemInHand().getDurability(); durabilityAfter = player.getItemInHand().getDurability();
@ -136,7 +130,7 @@ public class Repair {
if(m.isHoe(is)) if(m.isHoe(is))
dif = (short) (dif / 2); dif = (short) (dif / 2);
PP.addRepairXP(dif * LoadProperties.xpGainMultiplier); PP.addRepairXP(dif * LoadProperties.xpGainMultiplier);
} else if (isDiamondTools(is) && hasItem(player, rDiamond) && PP.getRepairInt() >= LoadProperties.repairdiamondlevel){ //Check if its diamond and the player has diamonds } else if (isDiamondTools(is) && hasItem(player, rDiamond) && PP.getSkill("repair") >= LoadProperties.repairdiamondlevel){ //Check if its diamond and the player has diamonds
/* /*
* DIAMOND TOOLS * DIAMOND TOOLS
*/ */
@ -170,7 +164,7 @@ public class Repair {
} }
} else { } else {
player.sendMessage("That is at full durability."); player.sendMessage(Messages.getString("Skills.FullDurability"));
} }
player.updateInventory(); player.updateInventory();
/* /*
@ -215,8 +209,8 @@ public class Repair {
if(is.getTypeId() == 256 || is.getTypeId() == 257 || is.getTypeId() == 258 || is.getTypeId() == 267 || is.getTypeId() == 292 || //IRON if(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() == 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() == 283 || is.getTypeId() == 285 || is.getTypeId() == 286 || is.getTypeId() == 284 || //GOLD
is.getTypeId() == 268 || is.getTypeId() == 269 || is.getTypeId() == 270 || is.getTypeId() == 271 || //WOOD 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) //STONE is.getTypeId() == 272 || is.getTypeId() == 273 || is.getTypeId() == 274 || is.getTypeId() == 275|| is.getTypeId() == 291) //STONE
{ {
return true; return true;
} else { } else {
@ -224,14 +218,14 @@ public class Repair {
} }
} }
public static boolean isStoneTools(ItemStack is){ public static boolean isStoneTools(ItemStack is){
if(is.getTypeId() == 272 || is.getTypeId() == 273 || is.getTypeId() == 274 || is.getTypeId() == 275){ if(is.getTypeId() == 272 || is.getTypeId() == 273 || is.getTypeId() == 274 || is.getTypeId() == 275 || is.getTypeId() == 291){
return true; return true;
} else { } else {
return false; return false;
} }
} }
public static boolean isWoodTools(ItemStack is){ public static boolean isWoodTools(ItemStack is){
if(is.getTypeId() == 268 || is.getTypeId() == 269 || is.getTypeId() == 270 || is.getTypeId() == 271){ if(is.getTypeId() == 268 || is.getTypeId() == 269 || is.getTypeId() == 270 || is.getTypeId() == 271 || is.getTypeId() == 290){
return true; return true;
} else { } else {
return false; return false;
@ -261,7 +255,8 @@ public class Repair {
return false; return false;
} }
} }
public static void removeItem(Player player, int typeid){ public static void removeItem(Player player, int typeid)
{
ItemStack[] inventory = player.getInventory().getContents(); ItemStack[] inventory = player.getInventory().getContents();
for(ItemStack x : inventory){ for(ItemStack x : inventory){
if(x != null && x.getTypeId() == typeid){ if(x != null && x.getTypeId() == typeid){
@ -288,7 +283,7 @@ public class Repair {
} }
public static short repairCalculate(Player player, short durability, short ramt){ public static short repairCalculate(Player player, short durability, short ramt){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
float bonus = (PP.getRepairInt() / 500); float bonus = (PP.getSkill("repair") / 500);
bonus = (ramt * bonus); bonus = (ramt * bonus);
ramt = ramt+=bonus; ramt = ramt+=bonus;
if(checkPlayerProcRepair(player)){ if(checkPlayerProcRepair(player)){
@ -326,9 +321,13 @@ public class Repair {
case 271: case 271:
ramt = 20; ramt = 20;
break; break;
//WOOD HOE
case 290:
ramt = 30;
break;
//STONE SWORD //STONE SWORD
case 272: case 272:
ramt = 44; ramt = 66;
break; break;
//STONE SHOVEL //STONE SHOVEL
case 273: case 273:
@ -342,6 +341,10 @@ public class Repair {
case 275: case 275:
ramt = 44; ramt = 44;
break; break;
//STONE HOE
case 291:
ramt = 66;
break;
//GOLD SHOVEL //GOLD SHOVEL
case 284: case 284:
ramt = 33; ramt = 33;
@ -446,33 +449,33 @@ public class Repair {
} }
public static void needMoreVespeneGas(ItemStack is, Player player){ public static void needMoreVespeneGas(ItemStack is, Player player){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if ((isDiamondTools(is) || isDiamondArmor(is)) && PP.getRepairInt() < LoadProperties.repairdiamondlevel){ if ((isDiamondTools(is) || isDiamondArmor(is)) && PP.getSkill("repair") < LoadProperties.repairdiamondlevel){
player.sendMessage(ChatColor.DARK_RED +"You're not adept enough to repair Diamond"); player.sendMessage(Messages.getString("AdeptDiamond"));
} else if (isDiamondTools(is) && !hasItem(player, rDiamond) || isIronTools(is) && !hasItem(player, rIron) || isGoldTools(is) && !hasItem(player, rGold)){ } else if (isDiamondTools(is) && !hasItem(player, rDiamond) || isIronTools(is) && !hasItem(player, rIron) || isGoldTools(is) && !hasItem(player, rGold)){
if(isDiamondTools(is) && !hasItem(player, rDiamond)) if(isDiamondTools(is) && !hasItem(player, rDiamond))
player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.BLUE+ nDiamond); player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.BLUE+ nDiamond);
if(isIronTools(is) && !hasItem(player, rIron)) if(isIronTools(is) && !hasItem(player, rIron))
player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ nIron); player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GRAY+ nIron);
if(isGoldTools(is) && !hasItem(player, rGold)) if(isGoldTools(is) && !hasItem(player, rGold))
player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GOLD+nGold); player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GOLD+nGold);
if(isWoodTools(is) && !hasItem(player,rWood)) if(isWoodTools(is) && !hasItem(player,rWood))
player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.DARK_GREEN+ nWood); player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.DARK_GREEN+ nWood);
if(isStoneTools(is) && !hasItem(player, rStone)) if(isStoneTools(is) && !hasItem(player, rStone))
player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+nStone); player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GRAY+nStone);
} else if (isDiamondArmor(is) && !hasItem(player, rDiamond)){ } else if (isDiamondArmor(is) && !hasItem(player, rDiamond)){
player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.BLUE+ nDiamond); player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.BLUE+ nDiamond);
} else if (isIronArmor(is) && !hasItem(player, rIron)){ } else if (isIronArmor(is) && !hasItem(player, rIron)){
player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ nIron); player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GRAY+ nIron);
} else if (isGoldArmor(is) && !hasItem(player, rGold)){ } else if (isGoldArmor(is) && !hasItem(player, rGold)){
player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GOLD+ nGold); player.sendMessage(Messages.getString("Skills.NeedMore")+" "+ChatColor.GOLD+ nGold);
} else if (is.getAmount() > 1) } else if (is.getAmount() > 1)
player.sendMessage(ChatColor.DARK_RED+"You can't repair stacked items"); player.sendMessage(Messages.getString("Skills.StackedItems"));
} }
public static boolean checkPlayerProcRepair(Player player){ public static boolean checkPlayerProcRepair(Player player){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(player != null){ if(player != null){
if(Math.random() * 1000 <= PP.getRepairInt()){ if(Math.random() * 1000 <= PP.getSkill("repair")){
player.sendMessage(ChatColor.GRAY + "That felt easy."); player.sendMessage(Messages.getString("Skills.FeltEasy"));
return true; return true;
} }
} }

View File

@ -6,14 +6,12 @@ import org.bukkit.ChatColor;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.Leaderboard; import com.gmail.nossr50.Leaderboard;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcPermissions; import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.PlayerStat; import com.gmail.nossr50.datatypes.PlayerStat;
@ -21,7 +19,6 @@ import com.gmail.nossr50.datatypes.PlayerStat;
public class Skills { public class Skills {
private static volatile Skills instance;
protected static final Logger log = Logger.getLogger("Minecraft"); protected static final Logger log = Logger.getLogger("Minecraft");
public void updateSQLfromFile(Player player){ public void updateSQLfromFile(Player player){
@ -51,15 +48,12 @@ public class Skills {
} }
} }
} }
public static int calculateTimeLeft(Player player, long deactivatedTimeStamp, int cooldown){
long currentTime = System.currentTimeMillis(); public static int calculateTimeLeft(Player player, long deactivatedTimeStamp, int cooldown)
int x = 0; {
while(currentTime < deactivatedTimeStamp + (cooldown * 1000)){ return (int) (((deactivatedTimeStamp + (cooldown * 1000)) - System.currentTimeMillis())/1000);
currentTime += 1000;
x++;
}
return x;
} }
public static boolean isAllCooldownsOver(PlayerProfile PP) public static boolean isAllCooldownsOver(PlayerProfile PP)
{ {
long t = System.currentTimeMillis(); long t = System.currentTimeMillis();
@ -80,42 +74,42 @@ public class Skills {
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){ if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
PP.setGreenTerraInformed(true); PP.setGreenTerraInformed(true);
player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Green Terra "+ChatColor.GREEN+"ability is refreshed!"); player.sendMessage(Messages.getString("Skills.YourGreenTerra"));
} }
if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - PP.getTreeFellerDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){ if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - PP.getTreeFellerDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
PP.setTreeFellerInformed(true); PP.setTreeFellerInformed(true);
player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Tree Feller "+ChatColor.GREEN+"ability is refreshed!"); player.sendMessage(Messages.getString("Skills.YourTreeFeller"));
} }
if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - PP.getSuperBreakerDeactivatedTimeStamp() >= (LoadProperties.superBreakerCooldown * 1000)){ if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - PP.getSuperBreakerDeactivatedTimeStamp() >= (LoadProperties.superBreakerCooldown * 1000)){
PP.setSuperBreakerInformed(true); PP.setSuperBreakerInformed(true);
player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Super Breaker "+ChatColor.GREEN+"ability is refreshed!"); player.sendMessage(Messages.getString("Skills.YourSuperBreaker"));
} }
if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - PP.getSerratedStrikesDeactivatedTimeStamp() >= (LoadProperties.serratedStrikeCooldown * 1000)){ if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - PP.getSerratedStrikesDeactivatedTimeStamp() >= (LoadProperties.serratedStrikeCooldown * 1000)){
PP.setSerratedStrikesInformed(true); PP.setSerratedStrikesInformed(true);
player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Serrated Strikes "+ChatColor.GREEN+"ability is refreshed!"); player.sendMessage(Messages.getString("Skills.YourSerratedStrikes"));
} }
if(!PP.getBerserkInformed() && System.currentTimeMillis() - PP.getBerserkDeactivatedTimeStamp() >= (LoadProperties.berserkCooldown * 1000)){ if(!PP.getBerserkInformed() && System.currentTimeMillis() - PP.getBerserkDeactivatedTimeStamp() >= (LoadProperties.berserkCooldown * 1000)){
PP.setBerserkInformed(true); PP.setBerserkInformed(true);
player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Berserk "+ChatColor.GREEN+"ability is refreshed!"); player.sendMessage(Messages.getString("Skills.YourBerserk"));
} }
if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - PP.getSkullSplitterDeactivatedTimeStamp() >= (LoadProperties.skullSplitterCooldown * 1000)){ if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - PP.getSkullSplitterDeactivatedTimeStamp() >= (LoadProperties.skullSplitterCooldown * 1000)){
PP.setSkullSplitterInformed(true); PP.setSkullSplitterInformed(true);
player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Skull Splitter "+ChatColor.GREEN+"ability is refreshed!"); player.sendMessage(Messages.getString("Skills.YourSkullSplitter"));
} }
if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - PP.getGigaDrillBreakerDeactivatedTimeStamp() >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){ if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - PP.getGigaDrillBreakerDeactivatedTimeStamp() >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){
PP.setGigaDrillBreakerInformed(true); PP.setGigaDrillBreakerInformed(true);
player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Giga Drill Breaker "+ChatColor.GREEN+"ability is refreshed!"); player.sendMessage(Messages.getString("Skills.YourGigaDrillBreaker"));
} }
} }
public static void hoeReadinessCheck(Player player){ public static void hoeReadinessCheck(Player player){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){ if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){
if(!PP.getGreenTerraMode() && !cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){ if(!PP.getGreenTerraMode() && !cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again." player.sendMessage(Messages.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)+"s)"); +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)+"s)");
return; return;
} }
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR HOE**"); player.sendMessage(Messages.getString("Skills.ReadyHoe"));
PP.setHoePreparationATS(System.currentTimeMillis()); PP.setHoePreparationATS(System.currentTimeMillis());
PP.setHoePreparationMode(true); PP.setHoePreparationMode(true);
} }
@ -124,162 +118,168 @@ public class Skills {
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(PP == null) if(PP == null)
Users.addUser(player); Users.addUser(player);
if(PP != null)
{
if(PP.getHoePreparationMode() && System.currentTimeMillis() - PP.getHoePreparationATS() >= 4000){ if(PP.getHoePreparationMode() && System.currentTimeMillis() - PP.getHoePreparationATS() >= 4000){
PP.setHoePreparationMode(false); PP.setHoePreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR HOE**"); player.sendMessage(Messages.getString("Skills.LowerHoe"));
} }
if(PP.getAxePreparationMode() && System.currentTimeMillis() - PP.getAxePreparationATS() >= 4000){ if(PP.getAxePreparationMode() && System.currentTimeMillis() - PP.getAxePreparationATS() >= 4000){
PP.setAxePreparationMode(false); PP.setAxePreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR AXE**"); player.sendMessage(Messages.getString("Skills.LowerAxe"));
} }
if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - PP.getPickaxePreparationATS() >= 4000){ if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - PP.getPickaxePreparationATS() >= 4000){
PP.setPickaxePreparationMode(false); PP.setPickaxePreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR PICKAXE**"); player.sendMessage(Messages.getString("Skills.LowerPickAxe"));
} }
if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - PP.getSwordsPreparationATS() >= 4000){ if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - PP.getSwordsPreparationATS() >= 4000){
PP.setSwordsPreparationMode(false); PP.setSwordsPreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR SWORD**"); player.sendMessage(Messages.getString("Skills.LowerSword"));
} }
if(PP.getFistsPreparationMode() && System.currentTimeMillis() - PP.getFistsPreparationATS() >= 4000){ if(PP.getFistsPreparationMode() && System.currentTimeMillis() - PP.getFistsPreparationATS() >= 4000){
PP.setFistsPreparationMode(false); PP.setFistsPreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR FISTS**"); player.sendMessage(Messages.getString("Skills.LowerFists"));
} }
if(PP.getShovelPreparationMode() && System.currentTimeMillis() - PP.getShovelPreparationATS() >= 4000){ if(PP.getShovelPreparationMode() && System.currentTimeMillis() - PP.getShovelPreparationATS() >= 4000){
PP.setShovelPreparationMode(false); PP.setShovelPreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR SHOVEL**"); player.sendMessage(Messages.getString("Skills.LowerShovel"));
} }
/* /*
* HERBALISM ABILITY * HERBALISM ABILITY
*/ */
if(mcPermissions.getInstance().herbalismAbility(player)){ if(mcPermissions.getInstance().herbalismAbility(player)){
if(PP.getGreenTerraMode() && PP.getGreenTerraActivatedTimeStamp() + PP.getGreenTerraTicks() <= System.currentTimeMillis()){ if(PP.getGreenTerraMode() && PP.getGreenTerraDeactivatedTimeStamp() <= System.currentTimeMillis()){
PP.setGreenTerraMode(false); PP.setGreenTerraMode(false);
PP.setGreenTerraInformed(false); PP.setGreenTerraInformed(false);
player.sendMessage(ChatColor.RED+"**Green Terra has worn off**"); player.sendMessage(Messages.getString("Skills.GreenTerraOff"));
} }
} }
/* /*
* AXES ABILITY * AXES ABILITY
*/ */
if(mcPermissions.getInstance().axesAbility(player)){ if(mcPermissions.getInstance().axesAbility(player)){
if(PP.getSkullSplitterMode() && PP.getSkullSplitterActivatedTimeStamp() + PP.getSkullSplitterTicks() <= System.currentTimeMillis()){ if(PP.getSkullSplitterMode() && PP.getSkullSplitterDeactivatedTimeStamp() <= System.currentTimeMillis()){
PP.setSkullSplitterMode(false); PP.setSkullSplitterMode(false);
PP.setSkullSplitterInformed(false); PP.setSkullSplitterInformed(false);
player.sendMessage(ChatColor.RED+"**Skull Splitter has worn off**"); player.sendMessage(Messages.getString("Skills.SkullSplitterOff"));
} }
} }
/* /*
* WOODCUTTING ABILITY * WOODCUTTING ABILITY
*/ */
if(mcPermissions.getInstance().woodCuttingAbility(player)){ if(mcPermissions.getInstance().woodCuttingAbility(player)){
if(PP.getTreeFellerMode() && PP.getTreeFellerActivatedTimeStamp() + PP.getTreeFellerTicks() <= System.currentTimeMillis()){ if(PP.getTreeFellerMode() && PP.getTreeFellerDeactivatedTimeStamp() <= System.currentTimeMillis()){
PP.setTreeFellerMode(false); PP.setTreeFellerMode(false);
PP.setTreeFellerInformed(false); PP.setTreeFellerInformed(false);
player.sendMessage(ChatColor.RED+"**Tree Feller has worn off**"); player.sendMessage(Messages.getString("Skills.TreeFellerOff"));
} }
} }
/* /*
* MINING ABILITY * MINING ABILITY
*/ */
if(mcPermissions.getInstance().miningAbility(player)){ if(mcPermissions.getInstance().miningAbility(player)){
if(PP.getSuperBreakerMode() && PP.getSuperBreakerActivatedTimeStamp() + PP.getSuperBreakerTicks() <= System.currentTimeMillis()){ if(PP.getSuperBreakerMode() && PP.getSuperBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
PP.setSuperBreakerMode(false); PP.setSuperBreakerMode(false);
PP.setSuperBreakerInformed(false); PP.setSuperBreakerInformed(false);
player.sendMessage(ChatColor.RED+"**Super Breaker has worn off**"); player.sendMessage(Messages.getString("Skills.SuperBreakerOff"));
} }
} }
/* /*
* EXCAVATION ABILITY * EXCAVATION ABILITY
*/ */
if(mcPermissions.getInstance().excavationAbility(player)){ if(mcPermissions.getInstance().excavationAbility(player)){
if(PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerActivatedTimeStamp() + PP.getGigaDrillBreakerTicks() <= System.currentTimeMillis()){ if(PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
PP.setGigaDrillBreakerMode(false); PP.setGigaDrillBreakerMode(false);
PP.setGigaDrillBreakerInformed(false); PP.setGigaDrillBreakerInformed(false);
player.sendMessage(ChatColor.RED+"**Giga Drill Breaker has worn off**"); player.sendMessage(Messages.getString("Skills.GigaDrillBreakerOff"));
} }
} }
/* /*
* SWORDS ABILITY * SWORDS ABILITY
*/ */
if(mcPermissions.getInstance().swordsAbility(player)){ if(mcPermissions.getInstance().swordsAbility(player)){
if(PP.getSerratedStrikesMode() && PP.getSerratedStrikesActivatedTimeStamp() + PP.getSerratedStrikesTicks() <= System.currentTimeMillis()){ if(PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() <= System.currentTimeMillis()){
PP.setSerratedStrikesMode(false); PP.setSerratedStrikesMode(false);
PP.setSerratedStrikesInformed(false); PP.setSerratedStrikesInformed(false);
player.sendMessage(ChatColor.RED+"**Serrated Strikes has worn off**"); player.sendMessage(Messages.getString("Skills.SerratedStrikesOff"));
} }
} }
/* /*
* UNARMED ABILITY * UNARMED ABILITY
*/ */
if(mcPermissions.getInstance().unarmedAbility(player)){ if(mcPermissions.getInstance().unarmedAbility(player)){
if(PP.getBerserkMode() && PP.getBerserkActivatedTimeStamp() + PP.getBerserkTicks() <= System.currentTimeMillis()){ if(PP.getBerserkMode() && PP.getBerserkDeactivatedTimeStamp() <= System.currentTimeMillis()){
PP.setBerserkMode(false); PP.setBerserkMode(false);
PP.setBerserkInformed(false); PP.setBerserkInformed(false);
player.sendMessage(ChatColor.RED+"**Berserk has worn off**"); player.sendMessage(Messages.getString("Skills.BerserkOff"));
}
} }
} }
} }
public static void abilityActivationCheck(Player player){ public static void abilityActivationCheck(Player player){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(PP != null){
if(!PP.getAbilityUse()) if(!PP.getAbilityUse())
return; return;
if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode()){ if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode()){
if(!PP.getSuperBreakerMode() && !cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){ if(!PP.getSuperBreakerMode() && !cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again." player.sendMessage(Messages.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)+"s)"); +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)+"s)");
return; return;
} }
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR PICKAXE**"); player.sendMessage(Messages.getString("Skills.ReadyPickAxe"));
PP.setPickaxePreparationATS(System.currentTimeMillis()); PP.setPickaxePreparationATS(System.currentTimeMillis());
PP.setPickaxePreparationMode(true); PP.setPickaxePreparationMode(true);
} }
if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode()){ if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode()){
if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)){ if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again." player.sendMessage(Messages.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)+"s)"); +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)+"s)");
return; return;
} }
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR SHOVEL**"); player.sendMessage(Messages.getString("Skills.ReadyShovel"));
PP.setShovelPreparationATS(System.currentTimeMillis()); PP.setShovelPreparationATS(System.currentTimeMillis());
PP.setShovelPreparationMode(true); PP.setShovelPreparationMode(true);
} }
if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode()){ if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode()){
if(!PP.getSerratedStrikesMode() && !cooldownOver(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)){ if(!PP.getSerratedStrikesMode() && !cooldownOver(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again." player.sendMessage(Messages.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)+"s)"); +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)+"s)");
return; return;
} }
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR SWORD**"); player.sendMessage(Messages.getString("Skills.ReadySword"));
PP.setSwordsPreparationATS(System.currentTimeMillis()); PP.setSwordsPreparationATS(System.currentTimeMillis());
PP.setSwordsPreparationMode(true); PP.setSwordsPreparationMode(true);
} }
if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode()){ if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode()){
if(!PP.getBerserkMode() && !cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){ if(!PP.getBerserkMode() && !cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again." player.sendMessage(Messages.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)+"s)"); +ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)+"s)");
return; return;
} }
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR FISTS**"); player.sendMessage(Messages.getString("Skills.ReadyFists"));
PP.setFistsPreparationATS(System.currentTimeMillis()); PP.setFistsPreparationATS(System.currentTimeMillis());
PP.setFistsPreparationMode(true); PP.setFistsPreparationMode(true);
} }
if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !PP.getAxePreparationMode()){ if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !PP.getAxePreparationMode()){
if(m.isAxes(player.getItemInHand())){ if(m.isAxes(player.getItemInHand())){
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR AXE**"); player.sendMessage(Messages.getString("Skills.ReadyAxe"));
PP.setAxePreparationATS(System.currentTimeMillis()); PP.setAxePreparationATS(System.currentTimeMillis());
PP.setAxePreparationMode(true); PP.setAxePreparationMode(true);
} }
} }
} }
}
public static void XpCheck(Player player){ public static void XpCheck(Player player){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
/* /*
* TAMING * TAMING
*/ */
if(player != null){ if(player != null){
if(PP.getTamingXPInt() >= PP.getXpToLevel("taming")){ if(PP.getSkill("tamingXP") >= PP.getXpToLevel("taming")){
int skillups = 0; int skillups = 0;
while(PP.getTamingXPInt() >= PP.getXpToLevel("taming")){ while(PP.getSkill("tamingXP") >= PP.getXpToLevel("taming")){
skillups++; skillups++;
PP.removeTamingXP(PP.getXpToLevel("taming")); PP.removeTamingXP(PP.getXpToLevel("taming"));
PP.skillUpTaming(1); PP.skillUpTaming(1);
@ -289,19 +289,19 @@ public class Skills {
*/ */
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
ps.statVal = PP.getTamingInt(); ps.statVal = PP.getSkill("taming");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "taming"); Leaderboard.updateLeaderboard(ps, "taming");
} }
if(player != null && PP != null && PP.getTaming() != null) if(player != null && PP != null && PP.getSkillToString("taming") != null)
player.sendMessage(ChatColor.YELLOW+"Taming skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getTaming()+")"); player.sendMessage(Messages.getString("Skills.TamingUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("taming")}));
} }
/* /*
* ACROBATICS * ACROBATICS
*/ */
if(PP.getAcrobaticsXPInt() >= PP.getXpToLevel("acrobatics")){ if(PP.getSkill("acrobaticsXP") >= PP.getXpToLevel("acrobatics")){
int skillups = 0; int skillups = 0;
while(PP.getAcrobaticsXPInt() >= PP.getXpToLevel("acrobatics")){ while(PP.getSkill("acrobaticsXP") >= PP.getXpToLevel("acrobatics")){
skillups++; skillups++;
PP.removeAcrobaticsXP(PP.getXpToLevel("acrobatics")); PP.removeAcrobaticsXP(PP.getXpToLevel("acrobatics"));
PP.skillUpAcrobatics(1); PP.skillUpAcrobatics(1);
@ -311,20 +311,20 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getAcrobaticsInt(); ps.statVal = PP.getSkill("acrobatics");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "acrobatics"); Leaderboard.updateLeaderboard(ps, "acrobatics");
} }
if(player != null && PP != null && PP.getAcrobatics() != null) if(player != null && PP != null && PP.getSkillToString("acrobatics") != null)
player.sendMessage(ChatColor.YELLOW+"Acrobatics skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getAcrobatics()+")"); player.sendMessage(Messages.getString("Skills.AcrobaticsUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("acrobatics")}));
} }
/* /*
* ARCHERY * ARCHERY
*/ */
if(PP.getArcheryXPInt() >= PP.getXpToLevel("archery")){ if(PP.getSkill("archeryXP") >= PP.getXpToLevel("archery")){
int skillups = 0; int skillups = 0;
while(PP.getArcheryXPInt() >= PP.getXpToLevel("archery")){ while(PP.getSkill("archeryXP") >= PP.getXpToLevel("archery")){
skillups++; skillups++;
PP.removeArcheryXP(PP.getXpToLevel("archery")); PP.removeArcheryXP(PP.getXpToLevel("archery"));
PP.skillUpArchery(1); PP.skillUpArchery(1);
@ -334,19 +334,19 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getArcheryInt(); ps.statVal = PP.getSkill("archery");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "archery"); Leaderboard.updateLeaderboard(ps, "archery");
} }
if(player != null && PP != null && PP.getArchery() != null) if(player != null && PP != null && PP.getSkillToString("archery") != null)
player.sendMessage(ChatColor.YELLOW+"Archery skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getArchery()+")"); player.sendMessage(Messages.getString("Skills.ArcheryUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("archery")}));
} }
/* /*
* SWORDS * SWORDS
*/ */
if(PP.getSwordsXPInt() >= PP.getXpToLevel("swords")){ if(PP.getSkill("swordsXP") >= PP.getXpToLevel("swords")){
int skillups = 0; int skillups = 0;
while(PP.getSwordsXPInt() >= PP.getXpToLevel("swords")){ while(PP.getSkill("swordsXP") >= PP.getXpToLevel("swords")){
skillups++; skillups++;
PP.removeSwordsXP(PP.getXpToLevel("swords")); PP.removeSwordsXP(PP.getXpToLevel("swords"));
PP.skillUpSwords(1); PP.skillUpSwords(1);
@ -356,20 +356,20 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getSwordsInt(); ps.statVal = PP.getSkill("swords");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "swords"); Leaderboard.updateLeaderboard(ps, "swords");
} }
if(player != null && PP != null && PP.getSwords() != null) if(player != null && PP != null && PP.getSkillToString("swords") != null)
player.sendMessage(ChatColor.YELLOW+"Swords skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getSwords()+")"); player.sendMessage(Messages.getString("Skills.SwordsUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("swords")}));
} }
/* /*
* AXES * AXES
*/ */
if(PP.getAxesXPInt() >= PP.getXpToLevel("axes")){ if(PP.getSkill("axesXP") >= PP.getXpToLevel("axes")){
int skillups = 0; int skillups = 0;
while(PP.getAxesXPInt() >= PP.getXpToLevel("axes")){ while(PP.getSkill("axesXP") >= PP.getXpToLevel("axes")){
skillups++; skillups++;
PP.removeAxesXP(PP.getXpToLevel("axes")); PP.removeAxesXP(PP.getXpToLevel("axes"));
PP.skillUpAxes(1); PP.skillUpAxes(1);
@ -379,19 +379,19 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getAxesInt(); ps.statVal = PP.getSkill("axes");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "axes"); Leaderboard.updateLeaderboard(ps, "axes");
} }
if(player != null && PP != null && PP.getAxes() != null) if(player != null && PP != null && PP.getSkillToString("axes") != null)
player.sendMessage(ChatColor.YELLOW+"Axes skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getAxes()+")"); player.sendMessage(Messages.getString("Skills.AxesUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("axes")}));
} }
/* /*
* UNARMED * UNARMED
*/ */
if(PP.getUnarmedXPInt() >= PP.getXpToLevel("unarmed")){ if(PP.getSkill("unarmedXP") >= PP.getXpToLevel("unarmed")){
int skillups = 0; int skillups = 0;
while(PP.getUnarmedXPInt() >= PP.getXpToLevel("unarmed")){ while(PP.getSkill("unarmedXP") >= PP.getXpToLevel("unarmed")){
skillups++; skillups++;
PP.removeUnarmedXP(PP.getXpToLevel("unarmed")); PP.removeUnarmedXP(PP.getXpToLevel("unarmed"));
PP.skillUpUnarmed(1); PP.skillUpUnarmed(1);
@ -401,19 +401,19 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getUnarmedInt(); ps.statVal = PP.getSkill("unarmed");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "unarmed"); Leaderboard.updateLeaderboard(ps, "unarmed");
} }
if(player != null && PP != null && PP.getUnarmed() != null) if(player != null && PP != null && PP.getSkillToString("unarmed") != null)
player.sendMessage(ChatColor.YELLOW+"Unarmed skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getUnarmed()+")"); player.sendMessage(Messages.getString("Skills.UnarmedUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("unarmed")}));
} }
/* /*
* HERBALISM * HERBALISM
*/ */
if(PP.getHerbalismXPInt() >= PP.getXpToLevel("herbalism")){ if(PP.getSkill("herbalismXP") >= PP.getXpToLevel("herbalism")){
int skillups = 0; int skillups = 0;
while(PP.getHerbalismXPInt() >= PP.getXpToLevel("herbalism")){ while(PP.getSkill("herbalismXP") >= PP.getXpToLevel("herbalism")){
skillups++; skillups++;
PP.removeHerbalismXP(PP.getXpToLevel("herbalism")); PP.removeHerbalismXP(PP.getXpToLevel("herbalism"));
PP.skillUpHerbalism(1); PP.skillUpHerbalism(1);
@ -423,19 +423,19 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getHerbalismInt(); ps.statVal = PP.getSkill("herbalism");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "herbalism"); Leaderboard.updateLeaderboard(ps, "herbalism");
} }
if(player != null && PP != null && PP.getHerbalism() != null) if(player != null && PP != null && PP.getSkillToString("herbalism") != null)
player.sendMessage(ChatColor.YELLOW+"Herbalism skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getHerbalism()+")"); player.sendMessage(Messages.getString("Skills.HerbalismUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("herbalism")}));
} }
/* /*
* MINING * MINING
*/ */
if(player != null && PP.getMiningXPInt() >= PP.getXpToLevel("mining")){ if(player != null && PP.getSkill("miningXP") >= PP.getXpToLevel("mining")){
int skillups = 0; int skillups = 0;
while(PP.getMiningXPInt() >= PP.getXpToLevel("mining")){ while(PP.getSkill("miningXP") >= PP.getXpToLevel("mining")){
skillups++; skillups++;
PP.removeMiningXP(PP.getXpToLevel("mining")); PP.removeMiningXP(PP.getXpToLevel("mining"));
PP.skillUpMining(1); PP.skillUpMining(1);
@ -445,19 +445,19 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getMiningInt(); ps.statVal = PP.getSkill("mining");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "mining"); Leaderboard.updateLeaderboard(ps, "mining");
} }
if(player != null && PP != null && PP.getMining() != null) if(player != null && PP != null && PP.getSkillToString("mining") != null)
player.sendMessage(ChatColor.YELLOW+"Mining skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getMining()+")"); player.sendMessage(Messages.getString("Skills.MiningUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("mining")}));
} }
/* /*
* WOODCUTTING * WOODCUTTING
*/ */
if(player != null && PP.getWoodCuttingXPInt() >= PP.getXpToLevel("woodcutting")){ if(player != null && PP.getSkill("woodcuttingXP") >= PP.getXpToLevel("woodcutting")){
int skillups = 0; int skillups = 0;
while(PP.getWoodCuttingXPInt() >= PP.getXpToLevel("woodcutting")){ while(PP.getSkill("woodcuttingXP") >= PP.getXpToLevel("woodcutting")){
skillups++; skillups++;
PP.removeWoodCuttingXP(PP.getXpToLevel("woodcutting")); PP.removeWoodCuttingXP(PP.getXpToLevel("woodcutting"));
PP.skillUpWoodCutting(1); PP.skillUpWoodCutting(1);
@ -467,19 +467,19 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getWoodCuttingInt(); ps.statVal = PP.getSkill("woodcutting");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "woodcutting"); Leaderboard.updateLeaderboard(ps, "woodcutting");
} }
if(player != null && PP != null && PP.getWoodCutting() != null) if(player != null && PP != null && PP.getSkillToString("woodcutting") != null)
player.sendMessage(ChatColor.YELLOW+"WoodCutting skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getWoodCutting()+")"); player.sendMessage(Messages.getString("Skills.WoodcuttingUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("woodcutting")}));
} }
/* /*
* REPAIR * REPAIR
*/ */
if(PP.getRepairXPInt() >= PP.getXpToLevel("repair")){ if(PP.getSkill("repairXP") >= PP.getXpToLevel("repair")){
int skillups = 0; int skillups = 0;
while(PP.getRepairXPInt() >= PP.getXpToLevel("repair")){ while(PP.getSkill("repairXP") >= PP.getXpToLevel("repair")){
skillups++; skillups++;
PP.removeRepairXP(PP.getXpToLevel("repair")); PP.removeRepairXP(PP.getXpToLevel("repair"));
PP.skillUpRepair(1); PP.skillUpRepair(1);
@ -489,19 +489,19 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getRepairInt(); ps.statVal = PP.getSkill("repair");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "repair"); Leaderboard.updateLeaderboard(ps, "repair");
} }
if(player != null && PP != null && PP.getRepair() != null) if(player != null && PP != null && PP.getSkillToString("repair") != null)
player.sendMessage(ChatColor.YELLOW+"Repair skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getRepair()+")"); player.sendMessage(Messages.getString("Skills.RepairUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("repair")}));
} }
/* /*
* EXCAVATION * EXCAVATION
*/ */
if(PP.getExcavationXPInt() >= PP.getXpToLevel("excavation")){ if(PP.getSkill("excavationXP") >= PP.getXpToLevel("excavation")){
int skillups = 0; int skillups = 0;
while(PP.getExcavationXPInt() >= PP.getXpToLevel("excavation")){ while(PP.getSkill("excavationXP") >= PP.getXpToLevel("excavation")){
skillups++; skillups++;
PP.removeExcavationXP(PP.getXpToLevel("excavation")); PP.removeExcavationXP(PP.getXpToLevel("excavation"));
PP.skillUpExcavation(1); PP.skillUpExcavation(1);
@ -511,18 +511,21 @@ public class Skills {
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL){
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = PP.getExcavationInt(); ps.statVal = PP.getSkill("excavation");
ps.name = player.getName(); ps.name = player.getName();
Leaderboard.updateLeaderboard(ps, "excavation"); Leaderboard.updateLeaderboard(ps, "excavation");
} }
if(player != null && PP != null && PP.getExcavation() != null) if(player != null && PP != null && PP.getSkillToString("excavation") != null)
player.sendMessage(ChatColor.YELLOW+"Excavation skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getExcavation()+")"); player.sendMessage(Messages.getString("Skills.ExcavationUp", new Object[] {String.valueOf(skillups), PP.getSkillToString("excavation")}));
//player.sendMessage(ChatColor.YELLOW+"Excavation skill increased by "+String.valueOf(skillups)+"."+" Total ("+PP.getSkillToString("excavation")+")");
} }
} }
/* /*
* Leaderboard updating stuff * Leaderboard updating stuff
*/ */
if(!LoadProperties.useMySQL){ if(!LoadProperties.useMySQL)
{
PlayerStat ps = new PlayerStat(); PlayerStat ps = new PlayerStat();
ps.statVal = m.getPowerLevel(player); ps.statVal = m.getPowerLevel(player);
ps.name = player.getName(); ps.name = player.getName();
@ -534,6 +537,9 @@ public class Skills {
if(skillname.equals("all")){ if(skillname.equals("all")){
return true; return true;
} }
if(skillname.equals("sorcery")){
return true;
}
if(skillname.equals("taming")){ if(skillname.equals("taming")){
return true; return true;
} }
@ -571,14 +577,47 @@ public class Skills {
return false; return false;
} }
} }
public static void arrowRetrievalCheck(Entity entity){ public static void arrowRetrievalCheck(Entity entity, mcMMO plugin)
if(Config.getInstance().isTracked(entity)){ {
if(plugin.misc.arrowTracker.containsKey(entity))
{
Integer x = 0; Integer x = 0;
while(x < Config.getInstance().getArrowCount(entity)){ while(x < plugin.misc.arrowTracker.get(entity))
{
m.mcDropItem(entity.getLocation(), 262); m.mcDropItem(entity.getLocation(), 262);
x++; x++;
} }
} }
Config.getInstance().removeArrowTracked(entity); plugin.misc.arrowTracker.remove(entity);
}
public static String getSkillStats(String skillname, String level, String 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().sorcery(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,115 @@
package com.gmail.nossr50.skills;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile;
public class Sorcery
{
mcMMO plugin = null;
public Sorcery(mcMMO pluginx)
{
plugin = pluginx;
}
public Block getSpellTargetBlock(Player player)
{
List<Block> blocks = player.getLineOfSight(null, 25);
for(Block x : blocks)
{
Material y = Material.AIR;
if(x.getType() != y)
return x;
}
return null;
}
public void informSelected(String spellname, int cost, Player player)
{
player.sendMessage(Messages.getString("Sorcery.SpellSelected", new Object[] {spellname, cost}));
}
public void informSpell(String spellname, Player player)
{
PlayerProfile PP = Users.getProfile(player);
player.sendMessage(Messages.getString("Sorcery.HasCast") +" "+spellname+" "+ Messages.getString("Sorcery.Current_Mana")+ChatColor.YELLOW+"("+ChatColor.GRAY+PP.getCurrentMana()+ChatColor.YELLOW+"/"+ChatColor.GREEN+PP.getMaxMana()+ChatColor.YELLOW+")");
}
public void shoutSpell(String spellname, Player player)
{
for(Player x : plugin.getServer().getOnlinePlayers())
{
if(x == player)
continue;
if(m.getDistance(x.getLocation(), player.getLocation()) < 35)
{
x.sendMessage(ChatColor.GREEN+"-"+ChatColor.DARK_AQUA+"="+ChatColor.GOLD+spellname+ChatColor.DARK_AQUA+"="+ChatColor.GREEN+"-"
+" "+ChatColor.YELLOW+"["+ChatColor.DARK_RED+player.getName()+ChatColor.YELLOW+"]");
}
}
}
public void handleGreenDyeCycle(Player player)
{
PlayerProfile PP = Users.getProfile(player);
//The selector is used to account for permissions removing spells from this order.
//Check if player has access to curative spell
if(!hasCurativeSpellPermission(player))
PP.setDyeChanged(true);
switch(PP.getGreenDyeCycleSel())
{
case 0:
if(mcPermissions.getInstance().sorceryCurativeHealSelf(player))
{
PP.setDyeChanged(true);
PP.setGreenDyeCycleSel(1);
PP.setGreenDyeCycle(0);
informSelected(Messages.getString("Sorcery.Curative.Self"), LoadProperties.cure_self, player);
break;
}
else
{
PP.setGreenDyeCycleSel(1);
}
case 1:
if(mcPermissions.getInstance().sorceryCurativeHealOther(player))
{
PP.setDyeChanged(true);
PP.setGreenDyeCycleSel(0);
PP.setGreenDyeCycle(1);
informSelected(Messages.getString("Sorcery.Curative.Other"), LoadProperties.cure_other, player);
break;
}
else
{
PP.setGreenDyeCycleSel(0);
}
}
}
public boolean hasCurativeSpellPermission (Player player)
{
if(mcPermissions.getInstance().sorceryCurativeHealOther(player) == false
&& mcPermissions.getInstance().sorceryCurativeHealSelf(player) == false)
return false;
else
return true;
}
}

View File

@ -3,7 +3,7 @@ package com.gmail.nossr50.skills;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Animals; import org.bukkit.entity.Animals;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Monster; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Wolf; import org.bukkit.entity.Wolf;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
@ -12,10 +12,11 @@ import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.Combat; import com.gmail.nossr50.Combat;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcPermissions; import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.party.Party; import com.gmail.nossr50.party.Party;
@ -24,24 +25,28 @@ public class Swords {
public static void serratedStrikesActivationCheck(Player player, Plugin pluginx){ public static void serratedStrikesActivationCheck(Player player, Plugin pluginx){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(m.isSwords(player.getItemInHand())){ if(m.isSwords(player.getItemInHand()))
if(PP.getSwordsPreparationMode()){ {
if(PP.getSwordsPreparationMode())
{
PP.setSwordsPreparationMode(false); PP.setSwordsPreparationMode(false);
} }
int ticks = 2; int ticks = 2;
int x = PP.getSwordsInt(); int x = PP.getSkill("swords");
while(x >= 50){ while(x >= 50)
{
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getSerratedStrikesMode() && PP.getSerratedStrikesCooldown() == 0){ if(!PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() < System.currentTimeMillis())
player.sendMessage(ChatColor.GREEN+"**SERRATED STRIKES ACTIVATED**"); {
for(Player y : pluginx.getServer().getOnlinePlayers()){ player.sendMessage(Messages.getString("Skills.SerratedStrikesOn"));
for(Player y : pluginx.getServer().getOnlinePlayers())
{
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(ChatColor.GREEN+player.getName()+ChatColor.DARK_GREEN+" has used "+ChatColor.RED+"Serrated Strikes!"); y.sendMessage(Messages.getString("Skills.SerratedStrikesPlayer", new Object[] {player.getName()}));
} }
PP.setSerratedStrikesTicks((ticks * 2) * 1000);
PP.setSerratedStrikesActivatedTimeStamp(System.currentTimeMillis()); PP.setSerratedStrikesActivatedTimeStamp(System.currentTimeMillis());
PP.setSerratedStrikesDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000)); PP.setSerratedStrikesDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setSerratedStrikesMode(true); PP.setSerratedStrikesMode(true);
@ -50,30 +55,42 @@ public class Swords {
} }
} }
public static void bleedCheck(Player attacker, Entity x, Plugin pluginx){ public static void bleedCheck(Player attacker, LivingEntity x, mcMMO pluginx)
{
PlayerProfile PPa = Users.getProfile(attacker); PlayerProfile PPa = Users.getProfile(attacker);
if(x instanceof Wolf){
if(x instanceof Wolf)
{
Wolf wolf = (Wolf)x; Wolf wolf = (Wolf)x;
if(Taming.getOwner(wolf, pluginx) != null)
{
if(Taming.getOwner(wolf, pluginx) == attacker) if(Taming.getOwner(wolf, pluginx) == attacker)
return; return;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx))) if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx)))
return; return;
} }
}
if(mcPermissions.getInstance().swords(attacker) && m.isSwords(attacker.getItemInHand())){ if(mcPermissions.getInstance().swords(attacker) && m.isSwords(attacker.getItemInHand())){
if(PPa.getSwordsInt() >= 750){ if(PPa.getSkill("swords") >= 750)
if(Math.random() * 1000 >= 750){ {
if(Math.random() * 1000 >= 750)
{
if(!(x instanceof Player)) if(!(x instanceof Player))
Config.getInstance().addToBleedQue(x); pluginx.misc.addToBleedQue(x);
if(x instanceof Player){ if(x instanceof Player)
{
Player target = (Player)x; Player target = (Player)x;
Users.getProfile(target).addBleedTicks(3); Users.getProfile(target).addBleedTicks(3);
} }
attacker.sendMessage(ChatColor.GREEN+"**ENEMY BLEEDING**"); attacker.sendMessage(ChatColor.GREEN+"**ENEMY BLEEDING**");
} }
} else if (Math.random() * 1000 <= PPa.getSwordsInt()){ }
else if (Math.random() * 1000 <= PPa.getSkill("swords"))
{
if(!(x instanceof Player)) if(!(x instanceof Player))
Config.getInstance().addToBleedQue(x); pluginx.misc.addToBleedQue(x);
if(x instanceof Player){ if(x instanceof Player)
{
Player target = (Player)x; Player target = (Player)x;
Users.getProfile(target).addBleedTicks(2); Users.getProfile(target).addBleedTicks(2);
} }
@ -81,69 +98,94 @@ public class Swords {
} }
} }
} }
public static void applySerratedStrikes(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx){ public static void applySerratedStrikes(Player attacker, EntityDamageByEntityEvent event, mcMMO pluginx)
{
int targets = 0; int targets = 0;
Entity x = event.getEntity();
if(event.getEntity() instanceof LivingEntity)
{
LivingEntity x = (LivingEntity) event.getEntity();
targets = m.getTier(attacker); targets = m.getTier(attacker);
for(Entity derp : x.getWorld().getEntities()) for(Entity derp : x.getWorld().getEntities())
{ {
if(m.getDistance(x.getLocation(), derp.getLocation()) < 5){ if(m.getDistance(x.getLocation(), derp.getLocation()) < 5)
if(derp instanceof Player){ {
Player target = (Player)derp;
if(Party.getInstance().inSameParty(attacker, target))
continue; //Make sure the Wolf is not friendly
if(!target.getName().equals(attacker.getName()) && targets >= 1){ if(derp instanceof Wolf)
target.damage(event.getDamage() / 4); {
target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strikes!");
Users.getProfile(target).addBleedTicks(5);
targets--;
}
}
if(derp instanceof Monster && targets >= 1){
if(!Config.getInstance().isBleedTracked(derp))
Config.getInstance().addToBleedQue(x);
Monster target = (Monster)derp;
target.damage(event.getDamage() / 4);
targets--;
}
if(derp instanceof Wolf){
Wolf hurrDurr = (Wolf)derp; Wolf hurrDurr = (Wolf)derp;
if(Taming.getOwner(hurrDurr, pluginx) == attacker) if(Taming.getOwner(hurrDurr, pluginx) == attacker)
continue; continue;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx))) if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx)))
continue; continue;
} }
if(derp instanceof Animals && targets >= 1){ //Damage nearby LivingEntities
if(!Config.getInstance().isBleedTracked(derp)) if(derp instanceof LivingEntity && targets >= 1)
Config.getInstance().addToBleedQue(x); {
Animals target = (Animals)derp; if(derp instanceof Player && derp.getWorld().getPVP())
{
Player target = (Player)derp;
if(target.getName().equals(attacker.getName()))
continue;
if(Party.getInstance().inSameParty(attacker, target))
continue;
if(targets >= 1)
{
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); target.damage(event.getDamage() / 4);
targets--; targets--;
} }
} }
} }
} }
public static void parryCheck(EntityDamageByEntityEvent event, Player defender){ }
}
public static void parryCheck(EntityDamageByEntityEvent event, Player defender)
{
Entity y = event.getDamager(); Entity y = event.getDamager();
PlayerProfile PPd = Users.getProfile(defender); PlayerProfile PPd = Users.getProfile(defender);
if(defender != null && m.isSwords(defender.getItemInHand()) if(defender != null && m.isSwords(defender.getItemInHand())
&& mcPermissions.getInstance().swords(defender)){ && mcPermissions.getInstance().swords(defender)){
if(PPd.getSwordsInt() >= 900){ if(PPd.getSkill("swords") >= 900)
if(Math.random() * 3000 <= 900){ {
if(Math.random() * 3000 <= 900)
{
event.setCancelled(true); event.setCancelled(true);
defender.sendMessage(ChatColor.GREEN+"**PARRIED**"); defender.sendMessage(ChatColor.GREEN+"**PARRIED**");
defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1)); defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
if(y instanceof Player){ if(y instanceof Player)
{
Player attacker = (Player)y; Player attacker = (Player)y;
attacker.sendMessage(ChatColor.GREEN+"**PARRIED**"); attacker.sendMessage(ChatColor.GREEN+"**PARRIED**");
} }
} }
} else { } else
if(Math.random() * 3000 <= PPd.getSwordsInt()){ {
if(Math.random() * 3000 <= PPd.getSkill("swords"))
{
event.setCancelled(true); event.setCancelled(true);
defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*"); defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1)); defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
if(y instanceof Player){ if(y instanceof Player)
{
Player attacker = (Player)y; Player attacker = (Player)y;
attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**"); attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**");
} }
@ -153,8 +195,10 @@ public class Swords {
} }
public static void counterAttackChecks(EntityDamageEvent event){ public static void counterAttackChecks(EntityDamageEvent event){
//Don't want to counter attack arrows //Don't want to counter attack arrows
if(event instanceof EntityDamageByProjectileEvent) if(event instanceof EntityDamageByProjectileEvent)
return; return;
if(event instanceof EntityDamageByEntityEvent) if(event instanceof EntityDamageByEntityEvent)
{ {
Entity f = ((EntityDamageByEntityEvent) event).getDamager(); Entity f = ((EntityDamageByEntityEvent) event).getDamager();
@ -164,7 +208,7 @@ public class Swords {
PlayerProfile PPd = Users.getProfile(defender); PlayerProfile PPd = Users.getProfile(defender);
if(m.isSwords(defender.getItemInHand()) && mcPermissions.getInstance().swords(defender)) if(m.isSwords(defender.getItemInHand()) && mcPermissions.getInstance().swords(defender))
{ {
if(PPd.getSwordsInt() >= 600) if(PPd.getSkill("swords") >= 600)
{ {
if(Math.random() * 2000 <= 600) if(Math.random() * 2000 <= 600)
{ {
@ -174,7 +218,7 @@ public class Swords {
((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!"); ((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
} }
} }
else if (Math.random() * 2000 <= PPd.getSwordsInt()) else if (Math.random() * 2000 <= PPd.getSkill("swords"))
{ {
Combat.dealDamage(f, event.getDamage() / 2); Combat.dealDamage(f, event.getDamage() / 2);
defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**"); defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**");
@ -185,39 +229,51 @@ public class Swords {
} }
} }
} }
public static void bleedSimulate(){ public static void bleedSimulate(mcMMO plugin)
{
long before = System.currentTimeMillis();
//Add items from Que list to BleedTrack list //Add items from Que list to BleedTrack list
for(Entity x : Config.getInstance().getBleedQue()){
Config.getInstance().addBleedTrack(x); for(LivingEntity x : plugin.misc.bleedQue)
{
plugin.misc.bleedTracker.add(x);
} }
//Clear list //Clear list
Config.getInstance().clearBleedQue(); plugin.misc.bleedQue = new LivingEntity[plugin.misc.bleedQue.length];
plugin.misc.bleedQuePos = 0;
//Cleanup any dead entities from the list //Cleanup any dead entities from the list
for(Entity x : Config.getInstance().getBleedRemovalQue()){ for(LivingEntity x : plugin.misc.bleedRemovalQue)
Config.getInstance().removeBleedTrack(x); {
plugin.misc.bleedTracker.remove(x);
} }
//Clear bleed removal list //Clear bleed removal list
Config.getInstance().clearBleedRemovalQue(); plugin.misc.bleedRemovalQue = new LivingEntity[plugin.misc.bleedRemovalQue.length];
plugin.misc.bleedRemovalQuePos = 0;
//Bleed monsters/animals //Bleed monsters/animals
for(Entity x : Config.getInstance().getBleedTracked()){ for(LivingEntity x : plugin.misc.bleedTracker)
if(x == null){ {
if(x == null){continue;}
if(x.getHealth() <= 0)
{
plugin.misc.addToBleedRemovalQue(x);
continue; continue;
} }
else
if(m.getHealth(x) <= 0){ {
continue; x.damage(2);
} }
if(x instanceof Animals){
((Animals) x).damage(2);
}
if(x instanceof Monster){((Monster) x).damage(2);}
} }
long after = System.currentTimeMillis();
if(LoadProperties.print_reports)
{
plugin.bleedSimulation+=(after-before);
}
} }
} }

View File

@ -1,34 +1,52 @@
package com.gmail.nossr50.skills; package com.gmail.nossr50.skills;
import net.minecraft.server.EntityWolf; import org.bukkit.entity.AnimalTamer;
import org.bukkit.craftbukkit.entity.CraftWolf;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Wolf;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
public class Taming { public class Taming
public static String getOwnerName(Entity theWolf){ {
CraftWolf cWolf = (CraftWolf)theWolf; public static boolean ownerOnline(Wolf theWolf, Plugin pluginx){
EntityWolf eWolf = (EntityWolf)cWolf.getHandle(); for(Player x : pluginx.getServer().getOnlinePlayers())
{
String playerName = eWolf.x(); if(x instanceof AnimalTamer)
return playerName; {
} AnimalTamer tamer = (AnimalTamer)x;
public static boolean hasOwner(Entity theWolf, Plugin pluginx){ if(theWolf.getOwner() == tamer)
for(Player x : pluginx.getServer().getOnlinePlayers()){
if(x != null && x.getName().equals(getOwnerName(theWolf))){
return true; return true;
} }
} }
return false; return false;
} }
public static Player getOwner(Entity theWolf, Plugin pluginx){
for(Player x : pluginx.getServer().getOnlinePlayers()){ public static Player getOwner(Entity wolf, Plugin pluginx)
if(x != null && x.getName().equals(getOwnerName(theWolf))){ {
if(wolf instanceof Wolf)
{
Wolf theWolf = (Wolf)wolf;
for(Player x : pluginx.getServer().getOnlinePlayers())
{
if(x instanceof AnimalTamer)
{
AnimalTamer tamer = (AnimalTamer)x;
if(theWolf.getOwner() == tamer)
return x; 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

@ -1,12 +1,12 @@
package com.gmail.nossr50.skills; package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
@ -20,19 +20,18 @@ public class Unarmed {
PP.setFistsPreparationMode(false); PP.setFistsPreparationMode(false);
} }
int ticks = 2; int ticks = 2;
int x = PP.getUnarmedInt(); int x = PP.getSkill("unarmed");
while(x >= 50){ while(x >= 50){
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getBerserkMode() && Skills.cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){ if(!PP.getBerserkMode() && Skills.cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)){
player.sendMessage(ChatColor.GREEN+"**BERSERK ACTIVATED**"); player.sendMessage(Messages.getString("Skills.BerserkOn"));
for(Player y : pluginx.getServer().getOnlinePlayers()){ for(Player y : pluginx.getServer().getOnlinePlayers()){
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(ChatColor.GREEN+player.getName()+ChatColor.DARK_GREEN+" has used "+ChatColor.RED+"Berserk!"); y.sendMessage(Messages.getString("Skills.BerserkPlayer", new Object[] {player.getName()}));
} }
PP.setBerserkTicks(ticks * 1000);
PP.setBerserkActivatedTimeStamp(System.currentTimeMillis()); PP.setBerserkActivatedTimeStamp(System.currentTimeMillis());
PP.setBerserkDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000)); PP.setBerserkDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setBerserkMode(true); PP.setBerserkMode(true);
@ -43,22 +42,25 @@ public class Unarmed {
{ {
PlayerProfile PPa = Users.getProfile(attacker); PlayerProfile PPa = Users.getProfile(attacker);
int bonus = 0; int bonus = 0;
if (PPa.getUnarmedInt() >= 250) if (PPa.getSkill("unarmed") >= 250)
bonus+=2; bonus+=2;
if (PPa.getUnarmedInt() >= 500) if (PPa.getSkill("unarmed") >= 500)
bonus+=2; bonus+=2;
event.setDamage(event.getDamage()+bonus); event.setDamage(event.getDamage()+bonus);
} }
public static void disarmProcCheck(Player attacker, Player defender) public static void disarmProcCheck(Player attacker, Player defender)
{ {
PlayerProfile PP = Users.getProfile(attacker); PlayerProfile PP = Users.getProfile(attacker);
if(PP.getUnarmedInt() >= 1000){ if(attacker.getItemInHand().getTypeId() == 0)
if(Math.random() * 4000 <= 1000){ {
if(PP.getSkill("unarmed") >= 1000)
{
if(Math.random() * 4000 <= 1000)
{
Location loc = defender.getLocation(); Location loc = defender.getLocation();
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0) if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
{ {
attacker.sendMessage(ChatColor.DARK_RED+"You have hit with great force."); defender.sendMessage(Messages.getString("Skills.Disarmed"));
defender.sendMessage(ChatColor.DARK_RED+"You have been disarmed!");
ItemStack item = defender.getItemInHand(); ItemStack item = defender.getItemInHand();
if(item != null) if(item != null)
{ {
@ -69,12 +71,11 @@ public class Unarmed {
} }
} }
} else { } else {
if(Math.random() * 4000 <= PP.getUnarmedInt()){ if(Math.random() * 4000 <= PP.getSkill("unarmed")){
Location loc = defender.getLocation(); Location loc = defender.getLocation();
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0) if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
{ {
attacker.sendMessage(ChatColor.DARK_RED+"You have hit with great force."); defender.sendMessage(Messages.getString("Skills.Disarmed"));
defender.sendMessage(ChatColor.DARK_RED+"You have been disarmed!");
ItemStack item = defender.getItemInHand(); ItemStack item = defender.getItemInHand();
if(item != null) if(item != null)
{ {
@ -87,3 +88,4 @@ public class Unarmed {
} }
} }
} }
}

View File

@ -10,6 +10,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.Messages;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
@ -20,49 +21,48 @@ import com.gmail.nossr50.config.*;
public class WoodCutting { public class WoodCutting {
static int w = 0; static int w = 0;
private static boolean isdone = false; private static boolean isdone = false;
private static mcMMO plugin;
public WoodCutting(mcMMO instance) {
plugin = instance;
}
public static void woodCuttingProcCheck(Player player, Block block){ public static void woodCuttingProcCheck(Player player, Block block){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
byte type = block.getData(); byte type = block.getData();
Material mat = Material.getMaterial(block.getTypeId()); Material mat = Material.getMaterial(block.getTypeId());
if(player != null){ if(player != null){
if(Math.random() * 1000 <= PP.getWoodCuttingInt()){ if(Math.random() * 1000 <= PP.getSkill("woodcutting")){
ItemStack item = new ItemStack(mat, 1, (short) 0, type); ItemStack item = new ItemStack(mat, 1, (short) 0, type);
block.getWorld().dropItemNaturally(block.getLocation(), item); block.getWorld().dropItemNaturally(block.getLocation(), item);
} }
} }
} }
public static void treeFellerCheck(Player player, Block block, Plugin pluginx){ public static void treeFellerCheck(Player player, Block block, Plugin pluginx)
{
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
if(m.isAxes(player.getItemInHand())){ if(m.isAxes(player.getItemInHand()))
if(block != null){ {
if(block != null)
{
if(!m.abilityBlockCheck(block)) if(!m.abilityBlockCheck(block))
return; return;
} }
/* /*
* CHECK FOR AXE PREP MODE * CHECK FOR AXE PREP MODE
*/ */
if(PP.getAxePreparationMode()){ if(PP.getAxePreparationMode())
{
PP.setAxePreparationMode(false); PP.setAxePreparationMode(false);
} }
int ticks = 2; int ticks = 2;
int x = PP.getWoodCuttingInt(); int x = PP.getSkill("woodcutting");
while(x >= 50){ while(x >= 50){
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getTreeFellerMode() && Skills.cooldownOver(player, PP.getTreeFellerDeactivatedTimeStamp(), LoadProperties.treeFellerCooldown)){ if(!PP.getTreeFellerMode() && Skills.cooldownOver(player, PP.getTreeFellerDeactivatedTimeStamp(), LoadProperties.treeFellerCooldown)){
player.sendMessage(ChatColor.GREEN+"**TREE FELLING ACTIVATED**"); player.sendMessage(Messages.getString("Skills.TreeFellerOn"));
for(Player y : pluginx.getServer().getOnlinePlayers()){ for(Player y : pluginx.getServer().getOnlinePlayers()){
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(ChatColor.GREEN+player.getName()+ChatColor.DARK_GREEN+" has used "+ChatColor.RED+"Tree Feller!"); y.sendMessage(Messages.getString("Skills.TreeFellerPlayer", new Object[] {player.getName()}));
} }
PP.setTreeFellerTicks(ticks * 1000);
PP.setTreeFellerActivatedTimeStamp(System.currentTimeMillis()); PP.setTreeFellerActivatedTimeStamp(System.currentTimeMillis());
PP.setTreeFellerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000)); PP.setTreeFellerDeactivatedTimeStamp(System.currentTimeMillis() + (ticks * 1000));
PP.setTreeFellerMode(true); PP.setTreeFellerMode(true);
@ -73,12 +73,12 @@ public class WoodCutting {
} }
} }
} }
public static void treeFeller(Block block, Player player){ public static void treeFeller(Block block, Player player, mcMMO plugin){
PlayerProfile PP = Users.getProfile(player); PlayerProfile PP = Users.getProfile(player);
int radius = 1; int radius = 1;
if(PP.getWoodCuttingXPInt() >= 500) if(PP.getSkill("woodcutting") >= 500)
radius++; radius++;
if(PP.getWoodCuttingXPInt() >= 950) if(PP.getSkill("woodcutting") >= 950)
radius++; radius++;
ArrayList<Block> blocklist = new ArrayList<Block>(); ArrayList<Block> blocklist = new ArrayList<Block>();
ArrayList<Block> toAdd = new ArrayList<Block>(); ArrayList<Block> toAdd = new ArrayList<Block>();
@ -93,9 +93,10 @@ public class WoodCutting {
* Add blocks from the temporary 'toAdd' array list into the 'treeFeller' array list * Add blocks from the temporary 'toAdd' array list into the 'treeFeller' array list
* We use this temporary list to prevent concurrent modification exceptions * We use this temporary list to prevent concurrent modification exceptions
*/ */
for(Block x : toAdd){ for(Block x : toAdd)
if(!Config.getInstance().isTreeFellerWatched(x)) {
Config.getInstance().addTreeFeller(x); if(!plugin.misc.treeFeller.contains(x))
plugin.misc.treeFeller.add(x);
} }
toAdd.clear(); toAdd.clear();
} }

View File

@ -1,3 +1,3 @@
name: mcMMO name: mcMMO
main: com.gmail.nossr50.mcMMO main: com.gmail.nossr50.mcMMO
version: 1.0.07 version: 1.0.33