1
0
mirror of https://github.com/mcMMO-Dev/mcMMO.git synced 2026-02-18 09:43:00 +01:00

Compare commits

..

103 Commits

Author SHA1 Message Date
GJ
ab897724d3 Weekly beta! 2013-05-16 10:54:40 -04:00
GJ
a7861fc54b Move all miscellaneous Spout code to a single location. 2013-05-16 10:51:18 -04:00
GJ
936bec8ff5 Unused import. 2013-05-16 09:32:48 -04:00
GJ
01d10971a1 Calling things that many times is BAD. 2013-05-16 09:32:27 -04:00
T00thpick1
12e388a392 Null checks 2013-05-16 09:30:02 -04:00
T00thpick1
fb450671d6 Alternative SQL player loading 2013-05-16 09:29:59 -04:00
GJ
fca5f9ec98 We shouldn't need to do this. If issues arise, then there's a bug in
Bukkit that needs patching.
2013-05-16 09:23:35 -04:00
GJ
c9ae6436bd Because we forget things too often. 2013-05-16 08:41:57 -04:00
GJ
b6c4d2b4ad Fixed bug where Nether Quartz wasn't included in Smelting or item
sharing
2013-05-16 08:13:01 -04:00
GJ
27ab2f5b12 Update localization files. 2013-05-16 07:35:00 -04:00
T00thpick1
9b08062a58 Typo 2013-05-15 20:36:43 -04:00
T00thpick1
401bdfa9ac Reset ability modes safely 2013-05-15 20:35:30 -04:00
TfT_02
68d8d6dd30 Added permission node to bypass the fishing exploit prevention
Permission node: `mcmmo.bypass.kraken` false by default.
2013-05-15 23:35:17 +02:00
GJ
2a57d7007d Don't go through everything twice. Also, those were horrible variable
names.
2013-05-15 17:28:47 -04:00
GJ
fd675ac291 Changed Spout notification tiers to be stored in SpoutConfig instead of
AdvancedConfig. Also restructured some Spout stuff for easier
readability.
2013-05-15 17:08:43 -04:00
GJ
41f020bbb7 Cleaning up our listeners, as well as some Spout stuff. 2013-05-15 15:39:40 -04:00
GJ
00dee500e0 Caching options is bad, and so was that way of getting the menu key. 2013-05-15 15:28:05 -04:00
GJ
36bdb8a63e Fixed mcMMO overwritting Spout titles set by other plugins. 2013-05-15 15:14:47 -04:00
GJ
aa9eb0868c Add option to use scoreboards for power level display, similar to the
Spout titles. This will NOT override any existing plugin that uses the
overhead scoreboard slot.
2013-05-15 15:13:11 -04:00
T00thpick1
48aafa9834 Unused import 2013-05-15 14:27:31 -04:00
T00thpick1
78f53f294a Debris should drop normal drops 2013-05-15 13:02:21 -04:00
TfT_02
3158c7e3eb List /party itemshare and /party expshare in /party ?
Closes #913
2013-05-15 19:00:34 +02:00
GJ
47d27ebf31 Update changelog. 2013-05-15 09:29:54 -04:00
GJ
bc3773ae75 Because apparently you can have metadata and an empty list too.
Fixes #1080
2013-05-15 09:29:24 -04:00
GJ
d8ddd27d71 Calculate bonus XP based on initial arrow location, rather than final
shooter location.
2013-05-15 08:35:12 -04:00
GJ
8d5696507a Add bow force multiplier to Archery XP. 2013-05-15 01:20:12 -04:00
T00thpick1
9ec376a228 Unused import and update changelog 2013-05-15 00:53:01 -04:00
T00thpick1
a05a0da9fb Mob Spawner XP multiplier 2013-05-15 00:48:18 -04:00
T00thpick1
5029ad9d93 Apply Perks after cutoff 2013-05-14 23:54:54 -04:00
T00thpick1
1444be665c No reason to specify MyISAM 2013-05-14 23:54:52 -04:00
GJ
3dedb94bdc Add new Experience API functions and clarify some old ones. 2013-05-14 23:30:36 -04:00
T00thpick1
c0f6c15a80 Fix SQL Syntax 2013-05-14 23:28:45 -04:00
T00thpick1
00626a4893 Update changelog.txt 2013-05-14 23:03:26 -04:00
T00thpick1
b416a59bb7 Don't cache config options to prepare for eventual config reload support 2013-05-14 22:59:16 -04:00
GJ
bf96fb2214 Update changelog 2013-05-14 22:45:10 -04:00
GJ
2e79c8d770 Properly track infinite arrows. 2013-05-14 22:45:09 -04:00
T00thpick1
6c9d1c4953 Make SQL removes delete from all tables 2013-05-14 22:20:06 -04:00
T00thpick1
df8df192d3 Update Changelog 2013-05-14 19:57:18 -04:00
T00thpick1
e5f43462c8 Certain operations do not work with child skills 2013-05-14 19:31:40 -04:00
GJ
1867a3e040 If they aren't in a party, they shouldn't be in party chat mode. 2013-05-14 13:10:54 -04:00
GJ
6818f98de3 Feedback is good. 2013-05-14 13:10:07 -04:00
GJ
f910c76248 Conventions. 2013-05-14 12:46:45 -04:00
GJ
975cbf0bf8 The cache should be here, not in the manager. 2013-05-14 12:46:04 -04:00
GJ
f10b3cef01 Config option for escaping from the Kraken. 2013-05-14 12:43:02 -04:00
T00thpick1
ad39c94773 AbilityDeactivateEvent 2013-05-14 12:18:52 -04:00
T00thpick1
f189ab30e5 Default should be default 2013-05-14 11:32:57 -04:00
GJ
0ad18ee971 Fix some config formatting issues. 2013-05-14 11:32:22 -04:00
GJ
501f5de55a Fixing everything you guys broke while I was gone... 2013-05-14 11:28:50 -04:00
T00thpick1
0b18ae8ff2 Formatting and things 2013-05-13 22:28:42 -04:00
T00thpick1
de12970486 New api event 2013-05-13 22:28:39 -04:00
Glitchfinder
7550b99aaa Patching more NPEs involving invbalid players, plus mob health bars. 2013-05-13 18:46:19 -07:00
Glitchfinder
ed5a43966d Patching NPEs involving invalid player objects and player interactions. 2013-05-13 18:46:18 -07:00
Glitchfinder
95ea6703f1 Fixing an NPE involving invalid players chatting. 2013-05-13 18:46:17 -07:00
T00thpick1
55f9092aa6 Fireworks adjustment 2013-05-13 21:23:16 -04:00
Glitchfinder
5f50a46603 Setting the treasure config to only enforce data limits for blocks. 2013-05-13 20:22:09 -04:00
Paul J Thordarson
c5e6704530 Magic Hunter fix and optimization
There was a small bug in magic hunter, where it tried to apply an
enchantment level between 1 and the Enchantment.getMaxLevel(), however
it didn't take into account Enchantment.getStartLevel(), so when it
tried to apply an enchantment level below the start level, an
IllegalArgumentException was being thrown and the magic hunter event
wasn't happening.

Also, it's potentially inefficient to recalculate which enchantments
are possible for each ItemStack every time, so I added a HashMap to
cache the possibleEnchantments for each material type, then check this
cache instead of just looping to regenerate the list each time.
2013-05-13 20:22:08 -04:00
T00thpick1
8552192894 Only apply permissions when skill is enabled 2013-05-13 20:19:50 -04:00
NuclearW
0261d16140 Give no mcMMO xp for skeletons that spawn as a spider jokey pair from spawners. 2013-05-11 18:54:25 -04:00
NuclearW
2b414526e5 Unleash the Quacken! 2013-05-09 11:04:34 -04:00
NuclearW
c0b7eb526a Change Squid variables to Creature. 2013-05-09 11:00:28 -04:00
t00thpick1
7b7196a8c4 Potatoes shouldn't explode by default 2013-05-05 23:00:14 -03:00
t00thpick1
f648289035 Potato fixes 2013-05-05 22:58:04 -03:00
TfT_02
8a0b1d548d Add item weights for armor and tools in the default file 2013-05-05 11:32:10 +02:00
NuclearW
1f17d5d11e Move the comment section attached to the Kraken in advanced.yml
This is to fix a shortcoming in the autoupdate-config loader, which will attach related comments to nodes.
Issue: A nodes will get comments from another node of the same name, anywhere else in the config.
Solution: Move the comment to be attached to the "Kraken" node.

Long term: This can be a known bug and worked around by the team, or can be addressed more seriously by looking into changing how comments are applied to configs.  For now, this is a patch solution that should work fine.

Fixes #1043
2013-05-05 05:27:11 -04:00
TfT_02
18efd09421 Remove \' since it somehow breaks the name display
For some reason using \' will show the pets name as:
"<player-name>'s {1}"
2013-05-05 00:36:58 +02:00
TfT_02
18d3b30647 Add a missing space 2013-05-04 23:34:19 +02:00
GJ
7f0243b2df For Iaccidentally. 2013-05-03 18:16:42 -04:00
GJ
33610c8997 Whoops. 2013-05-03 16:15:34 -04:00
GJ
8e0a1f4f70 Summon the kraken at will! 2013-05-03 16:14:03 -04:00
GJ
b07cf6bdde It's now possible to run away from the Kraken. 2013-05-03 15:49:29 -04:00
GJ
7ed218ee7f Cleanup this task a bit. 2013-05-03 13:43:23 -04:00
GJ
3aedeea220 Remove client-side rain if the player kills the kraken. 2013-05-03 12:11:52 -04:00
GJ
4f9b7b2609 Because you might be legitimately fishing at 5 seconds. 2013-05-03 07:51:59 -04:00
GJ
09abab1b5d Kraken sounds can now be set to either player-only or global (default). 2013-05-03 07:51:58 -04:00
GJ
499713c8e7 Because autoclicking to shake is OK. 2013-05-03 07:51:57 -04:00
GJ
cb953a1619 Disable global chat spam from the kraken by setting the server message
to an empty string in the config.
2013-05-03 07:51:56 -04:00
TfT_02
3ab4938f3d Also need to locale these two strings
Closes #1019
2013-05-02 21:08:20 +02:00
TfT_02
f6e9fd9f3a Add more localisation 2013-05-02 21:02:12 +02:00
GJ
8dab75f3cb Can't use brackets in YAML. 2013-05-02 08:48:17 -04:00
GJ
b36096e54d Fixed bug where non-player arrows couldn't be deflected. 2013-05-02 08:23:18 -04:00
GJ
0574de4a29 Configure the Kraken! 2013-05-02 07:56:29 -04:00
GJ
6d6bc3de76 Trim player names to 16 chars when needed. 2013-05-02 07:16:07 -04:00
GJ
5c4c3cf59c The Kraken hates boats. 2013-05-01 22:50:12 -04:00
GJ
0033c8864e A dead kraken can't attack. 2013-05-01 22:17:48 -04:00
GJ
e7c749ee3a Added boosts to Fishing chance depending on conditions. Also, the
kraken, now with 100% more sound!
2013-05-01 21:57:42 -04:00
GJ
5c026be0cd Don't need those. 2013-05-01 21:19:29 -04:00
GJ
c465546871 Unleash the Kraken! 2013-05-01 21:17:59 -04:00
GJ
3322677d32 Added "Ice Fishing" ability to Fishing 2013-05-01 10:18:19 -04:00
GJ
76cf0ebb01 Only play ability effects if there's room above the player. 2013-05-01 08:59:45 -04:00
GJ
d34a0cca30 Fix issue with using /mcpurge, /mcremove, and /mmoupdate from the
console. These commands now default to OP, because frankly there are
much worse things someone can do with OP status than mess with the mcMMO
database.
2013-05-01 08:40:01 -04:00
GJ
a77a916fcc One more time... 2013-04-30 17:31:06 -04:00
GJ
e1ebb96545 Still need to remove from pending even if offline. 2013-04-30 15:47:19 -04:00
GJ
d85a6bec43 Don't create a task we'll possibly never run. 2013-04-30 15:19:41 -04:00
GJ
78eb7787e9 We don't need this any more. 2013-04-30 15:13:55 -04:00
GJ
b55ce30b2d Clean up our main class a bit more. Still not perfect, but it's getting
there.
2013-04-30 15:07:29 -04:00
GJ
14050cf096 Oops. 2013-04-30 14:24:31 -04:00
GJ
5930128b7f Add soft-depend on CombatTag so it loads before mcMMO, allowing us to
ensure the name check is ONLY run if CombatTag is installed.
2013-04-30 13:53:21 -04:00
GJ
08be78fa35 Avoid possible IllegalStateException if player has logged out before
this processes.
2013-04-30 10:02:28 -04:00
GJ
88f43d9a91 Add command to clear or change scoreboards. 2013-04-30 09:48:53 -04:00
GJ
6cbf960dea Use the right value here. 2013-04-30 08:24:16 -04:00
TfT_02
374d34f76d Fixed that for you 2013-04-30 14:20:16 +02:00
GJ
cc486c2dc7 Update the localization files. 2013-04-29 16:27:25 -04:00
GJ
724dce07a9 Back to regular development. 2013-04-29 15:59:56 -04:00
76 changed files with 3132 additions and 1287 deletions

View File

@@ -8,6 +8,7 @@ Key:
- Removal
Version 1.4.06-dev
+ Added "Ice Fishing" ability to Fishing
+ Added global scoreboards to track skill rankings (display using /mctop)
+ Added per-player scoreboard displays for the /inspect, /mcrank, /mcstats, and /<skillname> commands
+ Added tab-complete support for all commands
@@ -18,6 +19,17 @@ Version 1.4.06-dev
+ Added new permission node for /ptp; mcmmo.commands.ptp.send (enabled by default)
+ Added configurable cooldown and warmup times when using /ptp
+ Added a new Party item share category "Misc" which contains a list of configurable items. (By default all tools and armor)
+ Added fishing exploit prevention
+ Added permission node to bypass the fishing exploit prevention
+ Added boosts to Fishing chance depending on conditions
+ Added McMMOAbilityActivateEvent and McMMOAbilityDeactivateEvent
+ Added config option to toggle the size of fireworks
+ Added config option to multiply xp gains from mob spawner mobs
+ Added multiplier to Archery XP based on bow force
+ Added information about /party itemshare and /party expshare to the party help page
+ Added option to use scoreboards for power level display instead of Spout.
= Fixed bug where custom Spout titles were overwritten by mcMMO.
= Fixed bug where Nether Quartz wasn't included in Smelting or item sharing
= Fixed bug where players were able to join the same party multiple times
= Fixed displaying partial names when trying to use /ptp
= Fixed wolves from Call of the Wild only having 8 health
@@ -28,6 +40,13 @@ Version 1.4.06-dev
= Fixed Fishing treasures always having the same enchants
= Fixed Smelting returning ink sacs instead of Lapis when double-dropping
= Fixed bug where players could remain in party chat after leaving or being kicked from a party.
= Fixed bug where non-player arrows couldn't be deflected.
= Fixed experience being applied even when the permission for a skill was denied
= Fixed possible item duplication bug with infinity bows
= Fixed bug with removing players from mySQL database
= Fixed bug with empty metadata lists and Smelting
= Fixed bug where Blast Mining would drop wrong items
! Changed Spout notification tiers to be stored in SpoutConfig instead of AdvancedConfig
! Changed Berserk to add items to inventory rather than denying pickup
! Changed Call of the Wild, newly summoned pet's will have a custom name. (added permission node to disable this)
! Changed Chimaera Wing's recipe result to use the ingredient Material
@@ -38,6 +57,7 @@ Version 1.4.06-dev
! Changed the amount of info messages in the console when enabling/disabling, enable Verbose_Logging to enable them again
! Items dropped by players are now being tracked and are not being shared with party members
! Optimized tracking of tool & ability cooldowns.
! Updated the localization files
Version 1.4.05
+ Added option to allow refreshing of chunks after block-breaking abilities. (Disabled by default)

View File

@@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.gmail.nossr50.mcMMO</groupId>
<artifactId>mcMMO</artifactId>
<version>1.4.06-beta2</version>
<version>1.4.06-beta3</version>
<name>mcMMO</name>
<url>https://github.com/mcMMO-Dev/mcMMO</url>
<issueManagement>

View File

@@ -175,6 +175,7 @@ public final class ExperienceAPI {
* @return the amount of XP in a given skill
*
* @throws InvalidSkillException if the given skill is not valid
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static int getXP(Player player, String skillType) {
SkillType skill = SkillType.getSkill(skillType);
@@ -183,6 +184,10 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
return UserManager.getPlayer(player).getProfile().getSkillXpLevel(skill);
}
@@ -197,6 +202,7 @@ public final class ExperienceAPI {
*
* @throws InvalidSkillException if the given skill is not valid
* @throws InvalidPlayerException if the given player does not exist in the database
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static int getOfflineXP(String playerName, String skillType) {
SkillType skill = SkillType.getSkill(skillType);
@@ -205,6 +211,10 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
return getOfflineProfile(playerName).getSkillXpLevel(skill);
}
@@ -218,6 +228,7 @@ public final class ExperienceAPI {
* @return the amount of XP in a given skill
*
* @throws InvalidSkillException if the given skill is not valid
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static float getXPRaw(Player player, String skillType) {
SkillType skill = SkillType.getSkill(skillType);
@@ -226,6 +237,10 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
return UserManager.getPlayer(player).getProfile().getSkillXpLevelRaw(skill);
}
@@ -240,6 +255,7 @@ public final class ExperienceAPI {
*
* @throws InvalidSkillException if the given skill is not valid
* @throws InvalidPlayerException if the given player does not exist in the database
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static float getOfflineXPRaw(String playerName, String skillType) {
SkillType skill = SkillType.getSkill(skillType);
@@ -248,19 +264,24 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
return getOfflineProfile(playerName).getSkillXpLevelRaw(skill);
}
/**
* Get the amount of XP left before leveling up.
* Get the total amount of XP needed to reach the next level.
* </br>
* This function is designed for API usage.
*
* @param player The player to get the XP amount for
* @param skillType The skill to get the XP amount for
* @return the amount of XP left before leveling up a specifc skill
* @return the total amount of XP needed to reach the next level
*
* @throws InvalidSkillException if the given skill is not valid
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static int getXPToNextLevel(Player player, String skillType) {
SkillType skill = SkillType.getSkill(skillType);
@@ -269,9 +290,68 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
return UserManager.getPlayer(player).getProfile().getXpToLevel(skill);
}
/**
* Get the total amount of XP an offline player needs to reach the next level.
* </br>
* This function is designed for API usage.
*
* @param playerName The player to get XP for
* @param skillType The skill to get XP for
* @return the total amount of XP needed to reach the next level
*
* @throws InvalidSkillException if the given skill is not valid
* @throws InvalidPlayerException if the given player does not exist in the database
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static int getOfflineXPToNextLevel(String playerName, String skillType) {
SkillType skill = SkillType.getSkill(skillType);
if (skill == null) {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
return getOfflineProfile(playerName).getXpToLevel(skill);
}
/**
* Get the amount of XP remaining until the next level.
* </br>
* This function is designed for API usage.
*
* @param player The player to get the XP amount for
* @param skillType The skill to get the XP amount for
* @return the amount of XP remaining until the next level
*
* @throws InvalidSkillException if the given skill is not valid
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static int getXPRemaining(Player player, String skillType) {
SkillType skill = SkillType.getSkill(skillType);
if (skill == null) {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
return profile.getXpToLevel(skill) - profile.getSkillXpLevel(skill);
}
/**
* Get the amount of XP an offline player has left before leveling up.
* </br>
@@ -279,19 +359,26 @@ public final class ExperienceAPI {
*
* @param playerName The player to get XP for
* @param skillType The skill to get XP for
* @return the amount of XP in a given skill
* @return the amount of XP needed to reach the next level
*
* @throws InvalidSkillException if the given skill is not valid
* @throws InvalidPlayerException if the given player does not exist in the database
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static int getOfflineXPToNextLevel(String playerName, String skillType) {
public static int getOfflineXPRemaining(String playerName, String skillType) {
SkillType skill = SkillType.getSkill(skillType);
if (skill == null) {
throw new InvalidSkillException();
}
return getOfflineProfile(playerName).getXpToLevel(skill);
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
PlayerProfile profile = getOfflineProfile(playerName);
return profile.getXpToLevel(skill) - profile.getSkillXpLevel(skill);
}
/**
@@ -514,6 +601,7 @@ public final class ExperienceAPI {
* @param newValue The value to set the XP to
*
* @throws InvalidSkillException if the given skill is not valid
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static void setXP(Player player, String skillType, int newValue) {
SkillType skill = SkillType.getSkill(skillType);
@@ -522,6 +610,10 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
UserManager.getPlayer(player).getProfile().setSkillXpLevel(skill, newValue);
}
@@ -536,6 +628,7 @@ public final class ExperienceAPI {
*
* @throws InvalidSkillException if the given skill is not valid
* @throws InvalidPlayerException if the given player does not exist in the database
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static void setXPOffline(String playerName, String skillType, int newValue) {
SkillType skill = SkillType.getSkill(skillType);
@@ -544,6 +637,10 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
getOfflineProfile(playerName).setSkillXpLevel(skill, newValue);
}
@@ -557,6 +654,7 @@ public final class ExperienceAPI {
* @param xp The amount of XP to remove
*
* @throws InvalidSkillException if the given skill is not valid
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static void removeXP(Player player, String skillType, int xp) {
SkillType skill = SkillType.getSkill(skillType);
@@ -565,6 +663,10 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
UserManager.getPlayer(player).getProfile().removeXp(skill, xp);
}
@@ -579,6 +681,7 @@ public final class ExperienceAPI {
*
* @throws InvalidSkillException if the given skill is not valid
* @throws InvalidPlayerException if the given player does not exist in the database
* @throws UnsupportedOperationException if the given skill is a child skill
*/
public static void removeXPOffline(String playerName, String skillType, int xp) {
SkillType skill = SkillType.getSkill(skillType);
@@ -587,6 +690,10 @@ public final class ExperienceAPI {
throw new InvalidSkillException();
}
if (skill.isChildSkill()) {
throw new UnsupportedOperationException("Child skills do not have XP");
}
getOfflineProfile(playerName).removeXp(skill, xp);
}

View File

@@ -0,0 +1,65 @@
package com.gmail.nossr50.commands;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.util.StringUtil;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.commands.CommandUtils;
import com.gmail.nossr50.util.player.UserManager;
import com.google.common.collect.ImmutableList;
public class KrakenCommand implements TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
switch (args.length) {
case 0:
if (CommandUtils.noConsoleUsage(sender)) {
return true;
}
if (!Permissions.kraken(sender)) {
sender.sendMessage(command.getPermissionMessage());
return true;
}
UserManager.getPlayer(sender.getName()).getFishingManager().unleashTheKraken();
return true;
case 1:
if (!Permissions.krakenOthers(sender)) {
sender.sendMessage(command.getPermissionMessage());
return true;
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
if (!CommandUtils.checkPlayerExistence(sender, args[0], mcMMOPlayer)) {
return true;
}
mcMMOPlayer.getFishingManager().unleashTheKraken();
return true;
default:
return false;
}
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
switch (args.length) {
case 1:
Set<String> playerNames = UserManager.getPlayers().keySet();
return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
default:
return ImmutableList.of();
}
}
}

View File

@@ -1,17 +1,17 @@
package com.gmail.nossr50.commands;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.getspout.spoutapi.player.SpoutPlayer;
import org.bukkit.entity.Player;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.commands.party.PartySubcommandType;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.spout.SpoutUtils;
public class McmmoCommand implements CommandExecutor {
@Override
@@ -28,13 +28,13 @@ public class McmmoCommand implements CommandExecutor {
sender.sendMessage(mcSplit);
if (Config.getInstance().getDonateMessageEnabled()) {
if (mcMMO.spoutEnabled && sender instanceof SpoutPlayer) {
SpoutPlayer spoutPlayer = (SpoutPlayer) sender;
spoutPlayer.sendNotification(LocaleLoader.getString("Spout.Donate"), ChatColor.GREEN + "gjmcferrin@gmail.com", Material.DIAMOND);
if (mcMMO.isSpoutEnabled() && sender instanceof Player) {
SpoutUtils.sendDonationNotification((Player) sender);
}
else {
sender.sendMessage(LocaleLoader.getString("MOTD.Donate"));
sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal");
}
sender.sendMessage(LocaleLoader.getString("MOTD.Donate"));
sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal");
}
sender.sendMessage(LocaleLoader.getString("MOTD.Version", mcMMO.p.getDescription().getVersion()));

View File

@@ -0,0 +1,141 @@
package com.gmail.nossr50.commands;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.util.StringUtils;
import com.gmail.nossr50.util.commands.CommandUtils;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
import com.google.common.collect.ImmutableList;
public class McscoreboardCommand implements TabExecutor {
private static final List<String> SCOREBOARD_TYPES = ImmutableList.of("clear", "rank", "stats", "top");
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (CommandUtils.noConsoleUsage(sender)) {
return true;
}
Player player = (Player) sender;
switch (args.length) {
case 0:
clearScoreboard(player);
return true;
case 1:
if (args[0].equalsIgnoreCase("clear")) {
clearScoreboard(player);
}
else if (args[0].equalsIgnoreCase("rank")) {
if (!Config.getInstance().getMcrankScoreboardEnabled()) {
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
return true;
}
ScoreboardManager.setupPlayerScoreboard(player.getName());
ScoreboardManager.enablePlayerRankScoreboard(player);
}
else if (args[0].equalsIgnoreCase("stats")) {
if (!Config.getInstance().getMcstatsScoreboardsEnabled()) {
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
return true;
}
ScoreboardManager.setupPlayerScoreboard(player.getName());
ScoreboardManager.enablePlayerStatsScoreboard(UserManager.getPlayer(player));
}
else if (args[0].equalsIgnoreCase("top")) {
if (!Config.getInstance().getMctopScoreboardEnabled()) {
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
return true;
}
ScoreboardManager.enableGlobalStatsScoreboard(player, "all", 1);
}
else {
return false;
}
return true;
case 2:
if (!args[0].equalsIgnoreCase("top")) {
return false;
}
if (!Config.getInstance().getMctopScoreboardEnabled()) {
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
return true;
}
if (StringUtils.isInt(args[1])) {
ScoreboardManager.enableGlobalStatsScoreboard(player, "all", Math.abs(Integer.parseInt(args[1])));
return true;
}
if (CommandUtils.isInvalidSkill(sender, args[1])) {
return true;
}
ScoreboardManager.enableGlobalStatsScoreboard(player, args[1], 1);
return true;
case 3:
if (!args[0].equalsIgnoreCase("top")) {
return false;
}
if (!Config.getInstance().getMctopScoreboardEnabled()) {
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
return true;
}
if (CommandUtils.isInvalidSkill(sender, args[1])) {
return true;
}
if (CommandUtils.isInvalidInteger(sender, args[2])) {
return true;
}
ScoreboardManager.enableGlobalStatsScoreboard(player, args[1], Math.abs(Integer.parseInt(args[2])));
return true;
default:
return false;
}
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
switch (args.length) {
case 1:
return StringUtil.copyPartialMatches(args[0], SCOREBOARD_TYPES, new ArrayList<String>(SCOREBOARD_TYPES.size()));
case 2:
if (args[0].equalsIgnoreCase("top")) {
return StringUtil.copyPartialMatches(args[1], SkillType.SKILL_NAMES, new ArrayList<String>(SkillType.SKILL_NAMES.size()));
}
// Fallthrough
default:
return ImmutableList.of();
}
}
private void clearScoreboard(Player player) {
player.setScoreboard(mcMMO.p.getServer().getScoreboardManager().getMainScoreboard());
player.sendMessage("Your scoreboard has been cleared!"); //TODO: Locale
}
}

View File

@@ -9,18 +9,12 @@ import org.bukkit.command.TabExecutor;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.Permissions;
import com.google.common.collect.ImmutableList;
public class McpurgeCommand implements TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!Permissions.mcpurge(sender)) {
sender.sendMessage(command.getPermissionMessage());
return true;
}
switch (args.length) {
case 0:
mcMMO.getDatabaseManager().purgePowerlessUsers();

View File

@@ -12,7 +12,6 @@ import org.bukkit.util.StringUtil;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.commands.CommandUtils;
import com.gmail.nossr50.util.player.UserManager;
@@ -21,11 +20,6 @@ import com.google.common.collect.ImmutableList;
public class McremoveCommand implements TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!Permissions.mcremove(sender)) {
sender.sendMessage(command.getPermissionMessage());
return true;
}
switch (args.length) {
case 1:
if (UserManager.getPlayer(args[0]) == null && CommandUtils.unloadedProfile(sender, new PlayerProfile(args[0], false))) {

View File

@@ -11,7 +11,6 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.runnables.database.SQLConversionTask;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.player.UserManager;
import com.google.common.collect.ImmutableList;
@@ -19,11 +18,6 @@ import com.google.common.collect.ImmutableList;
public class MmoupdateCommand implements TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!Permissions.mmoupdate(sender)) {
sender.sendMessage(command.getPermissionMessage());
return true;
}
if (!Config.getInstance().getUseMySQL()) {
sender.sendMessage("SQL Mode is not enabled."); // TODO: Localize
return true;

View File

@@ -19,6 +19,8 @@ public class PartyHelpCommand implements CommandExecutor {
sender.sendMessage(LocaleLoader.getString("Party.Help.6", "/party kick"));
sender.sendMessage(LocaleLoader.getString("Party.Help.7", "/party leader"));
sender.sendMessage(LocaleLoader.getString("Party.Help.8", "/party disband"));
sender.sendMessage(LocaleLoader.getString("Party.Help.9", "/party itemshare"));
sender.sendMessage(LocaleLoader.getString("Party.Help.10", "/party expshare"));
return true;
default:

View File

@@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -76,7 +75,7 @@ public class PtpCommand implements TabExecutor {
long lastTeleport = mcMMOPlayer.getLastTeleport();
if (!SkillUtils.cooldownOver(lastTeleport * Misc.TIME_CONVERSION_FACTOR, ptpCooldown, player)) {
player.sendMessage(ChatColor.RED + "You need to wait before you can use this again! " + ChatColor.YELLOW + "(" + SkillUtils.calculateTimeLeft(lastTeleport * Misc.TIME_CONVERSION_FACTOR, ptpCooldown, player) + ")"); //TODO Locale!
player.sendMessage(LocaleLoader.getString("Item.Generic.Wait", SkillUtils.calculateTimeLeft(lastTeleport * Misc.TIME_CONVERSION_FACTOR, ptpCooldown, player)));
return true;
}
@@ -166,7 +165,7 @@ public class PtpCommand implements TabExecutor {
mcMMOPlayer.actualizeTeleportCommenceLocation(teleportingPlayer);
if (warmup > 0) {
teleportingPlayer.sendMessage(ChatColor.GRAY + "Commencing teleport in " + ChatColor.GOLD + "(" + warmup + ")" + ChatColor.GRAY + " seconds, please stand still..."); //TODO Locale!
teleportingPlayer.sendMessage(LocaleLoader.getString("Teleport.Commencing", warmup));
new TeleportationWarmup(mcMMOPlayer, mcMMOTarget).runTaskLater(mcMMO.p, 20 * warmup);
}
else {

View File

@@ -1,5 +1,8 @@
package com.gmail.nossr50.commands.skills;
import org.bukkit.block.Biome;
import org.bukkit.entity.EntityType;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.locale.LocaleLoader;
@@ -22,6 +25,7 @@ public class FishingCommand extends SkillCommand {
private boolean canShake;
private boolean canFishermansDiet;
private boolean canMasterAngler;
private boolean canIceFish;
public FishingCommand() {
super(SkillType.FISHING);
@@ -60,7 +64,18 @@ public class FishingCommand extends SkillCommand {
// MASTER ANGLER
if (canMasterAngler) {
biteChance = calculateAbilityDisplayValues(((Math.max((skillValue / 200.0), 1.0)) / (isStorming ? 300 : 500)) * 100.0)[0];
double rawBiteChance = ((Math.max((skillValue / 200.0), 1.0)) / (isStorming ? 300 : 500));
Biome biome = player.getLocation().getBlock().getBiome();
if (biome == Biome.RIVER || biome == Biome.OCEAN) {
rawBiteChance = rawBiteChance * 2.0;
}
if (player.isInsideVehicle() && player.getVehicle().getType() == EntityType.BOAT) {
rawBiteChance = rawBiteChance * 2.0;
}
biteChance = calculateAbilityDisplayValues(rawBiteChance * 100.0)[0];
}
}
@@ -71,11 +86,12 @@ public class FishingCommand extends SkillCommand {
canShake = Permissions.shake(player);
canFishermansDiet = Permissions.fishermansDiet(player);
canMasterAngler = Permissions.masterAngler(player);
canIceFish = Permissions.iceFishing(player);
}
@Override
protected boolean effectsHeaderPermissions() {
return canTreasureHunt || canMagicHunt || canShake || canMasterAngler || canFishermansDiet;
return canTreasureHunt || canMagicHunt || canShake || canMasterAngler || canFishermansDiet || canIceFish;
}
@Override
@@ -101,11 +117,15 @@ public class FishingCommand extends SkillCommand {
if (canMasterAngler) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.8"), LocaleLoader.getString("Fishing.Effect.9")));
}
if (canIceFish) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.10"), LocaleLoader.getString("Fishing.Effect.11")));
}
}
@Override
protected boolean statsHeaderPermissions() {
return canTreasureHunt || canMagicHunt || canShake || canMasterAngler || canFishermansDiet;
return canTreasureHunt || canMagicHunt || canShake || canMasterAngler || canFishermansDiet || canIceFish;
}
@Override
@@ -136,5 +156,16 @@ public class FishingCommand extends SkillCommand {
if (canFishermansDiet) {
player.sendMessage(LocaleLoader.getString("Fishing.Ability.FD", fishermansDietRank));
}
if (canIceFish) {
int unlockLevel = AdvancedConfig.getInstance().getIceFishingUnlockLevel();
if (skillValue < unlockLevel) {
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Fishing.Ability.Locked.1", unlockLevel)));
}
else {
player.sendMessage(LocaleLoader.getString("Fishing.Ability.IceFishing"));
}
}
}
}

View File

@@ -22,7 +22,7 @@ public abstract class SpoutCommand implements TabExecutor {
return true;
}
if (!mcMMO.spoutEnabled || !SpoutConfig.getInstance().getXPBarEnabled()) {
if (!mcMMO.isSpoutEnabled() || !SpoutConfig.getInstance().getXPBarEnabled()) {
sender.sendMessage(LocaleLoader.getString("Commands.Disabled"));
return true;
}

View File

@@ -52,6 +52,8 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
public double getRetrieveChanceMax() { return config.getDouble("Skills.Archery.Retrieve_MaxBonus", 100.0D); }
public int getRetrieveMaxBonusLevel() { return config.getInt("Skills.Archery.Retrieve_MaxBonusLevel", 1000); }
public double getForceMultiplier() { return config.getDouble("Skills.Archery.Force_Multiplier", 2.0D); }
/* AXES */
public int getBonusDamageAxesBonusMax() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonus", 4); }
public int getBonusDamageAxesMaxBonusLevel() { return config.getInt("Skills.Axes.DamageIncrease_MaxBonusLevel", 200); }
@@ -85,6 +87,8 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
public int getFishermanDietRankChange() { return config.getInt("Skills.Fishing.Fisherman_Diet_RankChange", 200); }
public int getIceFishingUnlockLevel() { return config.getInt("Skills.Fishing.Ice_Fishing_UnlockLevel", 50); }
/* Shake */
public int getShakeUnlockLevel() { return config.getInt("Skills.Fishing.Shake_UnlockLevel", 150); }
public int getShakeChanceRank1() { return config.getInt("Skills.Fishing.Shake_Chance.Rank_1", 25); }
@@ -273,9 +277,17 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
public double getWoodcuttingDoubleDropChance() { return config.getDouble("Skills.Woodcutting.DoubleDrops_ChanceMax", 100.0D); }
public int getWoodcuttingDoubleDropMaxLevel() { return config.getInt("Skills.Woodcutting.DoubleDrops_MaxBonusLevel", 1000); }
/* SPOUT STUFF*/
public int getSpoutNotificationTier1() { return config.getInt("Spout.Notifications.Tier1", 200); }
public int getSpoutNotificationTier2() { return config.getInt("Spout.Notifications.Tier2", 400); }
public int getSpoutNotificationTier3() { return config.getInt("Spout.Notifications.Tier3", 600); }
public int getSpoutNotificationTier4() { return config.getInt("Spout.Notifications.Tier4", 800); }
/* KRAKEN STUFF */
public boolean getKrakenEnabled() { return config.getBoolean("Kraken.Enabled", true); }
public boolean getKrakenGlobalSoundsEnabled() { return config.getBoolean("Kraken.Global_Sounds", true); }
public boolean getKrakenEscapeAllowed() { return config.getBoolean("Kraken.Allow_Escaping", false); }
public int getKrakenTriesBeforeRelease() { return config.getInt("Kraken.Tries_Before_Release", 50); }
public int getKrakenHealth() { return config.getInt("Kraken.Health", 50); }
public String getKrakenName() { return config.getString("Kraken.Name", "The Kraken"); }
public String getServerUnleashMessage() { return config.getString("Kraken.Unleashed_Message.Server", "(PLAYER) has unleashed the kraken!"); }
public String getPlayerUnleashMessage() { return config.getString("Kraken.Unleashed_Message.Player", "THE KRAKEN HAS BEEN UNLEASHED!"); }
public String getPlayerDefeatMessage() { return config.getString("Kraken.Defeated_Message.Killed", "You have slain the kraken!"); }
public String getPlayerEscapeMessage() { return config.getString("Kraken.Defeated_Message.Escape", "You have escaped from the kraken!"); }
public int getKrakenAttackInterval() { return config.getInt("Kraken.Attack_Interval_Seconds", 1); }
public int getKrakenAttackDamage() { return config.getInt("Kraken.Attack_Damage", 1); }
}

View File

@@ -46,6 +46,9 @@ public class Config extends AutoUpdateConfigLoader {
public boolean getVerboseLoggingEnabled() { return config.getBoolean("General.Verbose_Logging", false); }
public boolean getConfigOverwriteEnabled() { return config.getBoolean("General.Config_Update_Overwrite", true); }
public boolean getPotatoEnabled() { return config.getBoolean("General.Potato_Explosion_Enabled", false); }
public int getPotatoChance() { return config.getInt("General.Potato_Explosion_Chance", 1); }
public boolean getPartyDisplayNames() { return config.getBoolean("Commands.p.Use_Display_Names", true); }
public boolean getAdminDisplayNames() { return config.getBoolean("Commands.a.Use_Display_Names", true); }
@@ -66,7 +69,7 @@ public class Config extends AutoUpdateConfigLoader {
public int getMcrankScoreboardTime() { return config.getInt("Scoreboards.Mcrank.Display_Time", 10); }
public boolean getMcstatsScoreboardsEnabled() { return config.getBoolean("Scoreboards.Mcstats.Use", true); }
public int getMcstatsScoreboardTime() { return config.getInt("Scoreboards.Mctop.Display_Time", 10); }
public int getMcstatsScoreboardTime() { return config.getInt("Scoreboards.Mcstats.Display_Time", 10); }
public boolean getMctopScoreboardEnabled() { return config.getBoolean("Scoreboards.Mctop.Use", true); }
public int getMctopScoreboardTime() { return config.getInt("Scoreboards.Mctop.Display_Time", 10); }
@@ -77,6 +80,8 @@ public class Config extends AutoUpdateConfigLoader {
public boolean getSkillScoreboardEnabled() { return config.getBoolean("Scoreboards.Skillname.Use", true); }
public int getSkillScoreboardTime() { return config.getInt("Scoreboards.Skillname.Display_Time", 10); }
public boolean getPowerLevelsEnabled() { return config.getBoolean("Scoreboards.Power_Level.Use", true); }
/* Database Purging */
public int getPurgeInterval() { return config.getInt("Database_Purging.Purge_Interval", -1); }
public int getOldUsersCutoff() { return config.getInt("Database_Purging.Old_User_Cutoff", 6); }
@@ -147,6 +152,7 @@ public class Config extends AutoUpdateConfigLoader {
public boolean getGreaterImpactEffectEnabled() { return config.getBoolean("Particles.Greater_Impact", true); }
public boolean getLevelUpEffectsEnabled() { return config.getBoolean("Particles.LevelUp_Enabled", true); }
public int getLevelUpEffectsTier() { return config.getInt("Particles.LevelUp_Tier", 100); }
public boolean getLargeFireworks() { return config.getBoolean("Particles.LargeFireworks", true); }
/* PARTY SETTINGS */
public int getAutoPartyKickInterval() { return config.getInt("Party.AutoKick_Interval", 12); }
@@ -272,7 +278,6 @@ public class Config extends AutoUpdateConfigLoader {
*/
/* General Settings */
public boolean getExperienceGainsMobspawnersEnabled() { return config.getBoolean("Experience.Gains.Mobspawners.Enabled", false); }
public boolean getExperienceGainsPlayerVersusPlayerEnabled() { return config.getBoolean("Experience.PVP.Rewards", true); }
public double getExperienceGainsGlobalMultiplier() { return config.getDouble("Experience.Gains.Multiplier.Global", 1.0); }
@@ -285,6 +290,7 @@ public class Config extends AutoUpdateConfigLoader {
public double getAnimalsXP() { return config.getDouble("Experience.Combat.Multiplier.Animals", 1.0); }
public double getWitherSkeletonXP() { return config.getDouble("Experience.Combat.Multiplier.Wither_Skeleton", 4.0); }
public double getSpawnedMobXpMultiplier() { return config.getDouble("Experience.Gains.MobSpawners.Multiplier", 0.0); }
/* XP Formula Multiplier */
public int getFormulaMultiplierCurve() { return config.getInt("Experience.Formula.Curve_Modifier", 20); }

View File

@@ -1,5 +1,7 @@
package com.gmail.nossr50.config.spout;
import org.getspout.spoutapi.keyboard.Keyboard;
import com.gmail.nossr50.config.ConfigLoader;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.spout.huds.HudType;
@@ -34,7 +36,14 @@ public class SpoutConfig extends ConfigLoader {
}
public boolean getShowPowerLevel() { return config.getBoolean("HUD.Show_Power_Level", true); }
public String getMenuKey() { return config.getString("Menu.Key", "KEY_M"); }
public Keyboard getMenuKey() {
try {
return Keyboard.valueOf(config.getString("Menu.Key", "KEY_M").toUpperCase().trim());
}
catch (IllegalArgumentException ex) {
return Keyboard.KEY_M;
}
}
/* XP Bar */
public boolean getXPBarEnabled() { return config.getBoolean("XP.Bar.Enabled", true); }
@@ -57,4 +66,10 @@ public class SpoutConfig extends ConfigLoader {
public double getRetroHUDRed(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); }
public double getRetroHUDGreen(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); }
public double getRetroHUDBlue(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); }
/* Notification Tiers */
public int getNotificationTier1() { return config.getInt("Notifications.Tier1", 200); }
public int getNotificationTier2() { return config.getInt("Notifications.Tier2", 400); }
public int getNotificationTier3() { return config.getInt("Notifications.Tier3", 600); }
public int getNotificationTier4() { return config.getInt("Notifications.Tier4", 800); }
}

View File

@@ -117,7 +117,7 @@ public class TreasureConfig extends ConfigLoader {
reason.add("Invalid amount: " + amount);
}
if (data > 127 || data < -128) {
if (id < 256 && (data > 127 || data < -128)) {
reason.add("Invalid data: " + data);
}

View File

@@ -92,14 +92,13 @@ public final class SQLDatabaseManager {
+ "`user` varchar(40) NOT NULL,"
+ "`lastlogin` int(32) unsigned NOT NULL,"
+ "PRIMARY KEY (`id`),"
+ "UNIQUE KEY `user` (`user`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;");
+ "UNIQUE KEY `user` (`user`)) DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;");
write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "huds` ("
+ "`user_id` int(10) unsigned NOT NULL,"
+ "`hudtype` varchar(50) NOT NULL DEFAULT 'STANDARD',"
+ "`mobhealthbar` varchar(50) NOT NULL DEFAULT 'HEARTS',"
+ "PRIMARY KEY (`user_id`),"
+ "FOREIGN KEY (`user_id`) REFERENCES `" + tablePrefix + "users` (`id`) "
+ "ON DELETE CASCADE) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+ "`mobhealthbar` varchar(50) NOT NULL DEFAULT '" + Config.getInstance().getMobHealthbarDefault() + "',"
+ "PRIMARY KEY (`user_id`)) "
+ "DEFAULT CHARSET=latin1;");
write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "cooldowns` ("
+ "`user_id` int(10) unsigned NOT NULL,"
+ "`taming` int(32) unsigned NOT NULL DEFAULT '0',"
@@ -114,9 +113,8 @@ public final class SQLDatabaseManager {
+ "`axes` int(32) unsigned NOT NULL DEFAULT '0',"
+ "`acrobatics` int(32) unsigned NOT NULL DEFAULT '0',"
+ "`blast_mining` int(32) unsigned NOT NULL DEFAULT '0',"
+ "PRIMARY KEY (`user_id`),"
+ "FOREIGN KEY (`user_id`) REFERENCES `" + tablePrefix + "users` (`id`) "
+ "ON DELETE CASCADE) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+ "PRIMARY KEY (`user_id`)) "
+ "DEFAULT CHARSET=latin1;");
write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "skills` ("
+ "`user_id` int(10) unsigned NOT NULL,"
+ "`taming` int(10) unsigned NOT NULL DEFAULT '0',"
@@ -130,9 +128,8 @@ public final class SQLDatabaseManager {
+ "`swords` int(10) unsigned NOT NULL DEFAULT '0',"
+ "`axes` int(10) unsigned NOT NULL DEFAULT '0',"
+ "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
+ "PRIMARY KEY (`user_id`),"
+ "FOREIGN KEY (`user_id`) REFERENCES `" + tablePrefix + "users` (`id`) "
+ "ON DELETE CASCADE) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+ "PRIMARY KEY (`user_id`)) "
+ "DEFAULT CHARSET=latin1;");
write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "experience` ("
+ "`user_id` int(10) unsigned NOT NULL,"
+ "`taming` int(10) unsigned NOT NULL DEFAULT '0',"
@@ -146,13 +143,11 @@ public final class SQLDatabaseManager {
+ "`swords` int(10) unsigned NOT NULL DEFAULT '0',"
+ "`axes` int(10) unsigned NOT NULL DEFAULT '0',"
+ "`acrobatics` int(10) unsigned NOT NULL DEFAULT '0',"
+ "PRIMARY KEY (`user_id`),"
+ "FOREIGN KEY (`user_id`) REFERENCES `" + tablePrefix + "users` (`id`) "
+ "ON DELETE CASCADE) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
+ "PRIMARY KEY (`user_id`)) "
+ "DEFAULT CHARSET=latin1;");
checkDatabaseStructure(DatabaseUpdateType.FISHING);
checkDatabaseStructure(DatabaseUpdateType.BLAST_MINING);
checkDatabaseStructure(DatabaseUpdateType.CASCADE_DELETE);
checkDatabaseStructure(DatabaseUpdateType.INDEX);
checkDatabaseStructure(DatabaseUpdateType.MOB_HEALTHBARS);
}
@@ -191,7 +186,13 @@ public final class SQLDatabaseManager {
}
public static boolean removeUserSQL(String playerName) {
return SQLDatabaseManager.update("DELETE FROM " + tablePrefix + "users WHERE " + tablePrefix + "users.user = '" + playerName + "'") != 0;
return SQLDatabaseManager.update("DELETE FROM u, e, h, s, c " +
"USING " + tablePrefix + "users u " +
"JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) " +
"JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) " +
"JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) " +
"JOIN " + tablePrefix + "cooldowns c ON (u.id = c.user_id) " +
"WHERE u.user = '" + playerName + "'") != 0;
}
/**
@@ -489,8 +490,12 @@ public final class SQLDatabaseManager {
public static int purgePowerlessSQL() {
HashMap<Integer, ArrayList<String>> usernames = read("SELECT u.user FROM " + tablePrefix + "skills AS s, " + tablePrefix + "users AS u WHERE s.user_id = u.id AND (s.taming+s.mining+s.woodcutting+s.repair+s.unarmed+s.herbalism+s.excavation+s.archery+s.swords+s.axes+s.acrobatics+s.fishing) = 0");
write("DELETE FROM " + tablePrefix + "users WHERE " + tablePrefix + "users.id IN (SELECT * FROM (SELECT u.id FROM " + tablePrefix + "skills AS s, " + tablePrefix + "users AS u WHERE s.user_id = u.id AND (s.taming+s.mining+s.woodcutting+s.repair+s.unarmed+s.herbalism+s.excavation+s.archery+s.swords+s.axes+s.acrobatics+s.fishing) = 0) AS p)");
write("DELETE FROM u, e, h, s, c USING " + tablePrefix + "users u " +
"JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) " +
"JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) " +
"JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) " +
"JOIN " + tablePrefix + "cooldowns c ON (u.id = c.user_id) " +
"WHERE (s.taming+s.mining+s.woodcutting+s.repair+s.unarmed+s.herbalism+s.excavation+s.archery+s.swords+s.axes+s.acrobatics+s.fishing) = 0");
return processPurge(usernames.values());
}
@@ -499,7 +504,12 @@ public final class SQLDatabaseManager {
long purgeTime = ONE_MONTH * Config.getInstance().getOldUsersCutoff();
HashMap<Integer, ArrayList<String>> usernames = read("SELECT user FROM " + tablePrefix + "users WHERE ((" + currentTime + " - lastlogin*1000) > " + purgeTime + ")");
write("DELETE FROM " + tablePrefix + "users WHERE " + tablePrefix + "users.id IN (SELECT * FROM (SELECT id FROM " + tablePrefix + "users WHERE ((" + currentTime + " - lastlogin*1000) > " + purgeTime + ")) AS p)");
write("DELETE FROM u, e, h, s, c USING " + tablePrefix + "users u " +
"JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) " +
"JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) " +
"JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) " +
"JOIN " + tablePrefix + "cooldowns c ON (u.id = c.user_id) " +
"WHERE ((" + currentTime + " - lastlogin*1000) > " + purgeTime + ")");
return processPurge(usernames.values());
}
@@ -530,13 +540,6 @@ public final class SQLDatabaseManager {
sql = "SELECT * FROM `" + tablePrefix + "cooldowns` ORDER BY `" + tablePrefix + "cooldowns`.`blast_mining` ASC LIMIT 0 , 30";
break;
case CASCADE_DELETE:
write("ALTER TABLE `" + tablePrefix + "huds` ADD FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE;");
write("ALTER TABLE `" + tablePrefix + "experience` ADD FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE;");
write("ALTER TABLE `" + tablePrefix + "cooldowns` ADD FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE;");
write("ALTER TABLE `" + tablePrefix + "skills` ADD FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE;");
break;
case FISHING:
sql = "SELECT * FROM `" + tablePrefix + "experience` ORDER BY `" + tablePrefix + "experience`.`fishing` ASC LIMIT 0 , 30";
break;
@@ -601,7 +604,7 @@ public final class SQLDatabaseManager {
case MOB_HEALTHBARS:
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for mob healthbars...");
write("ALTER TABLE `" + tablePrefix + "huds` ADD `mobhealthbar` varchar(50) NOT NULL DEFAULT 'HEARTS' ;");
write("ALTER TABLE `" + tablePrefix + "huds` ADD `mobhealthbar` varchar(50) NOT NULL DEFAULT '" + Config.getInstance().getMobHealthbarDefault() + "' ;");
break;
default:

View File

@@ -3,7 +3,6 @@ package com.gmail.nossr50.datatypes.database;
public enum DatabaseUpdateType {
FISHING,
BLAST_MINING,
CASCADE_DELETE,
INDEX,
MOB_HEALTHBARS;
}

View File

@@ -8,6 +8,7 @@ import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.party.ShareHandler.ShareMode;
public class Party {
@@ -62,25 +63,24 @@ public class Party {
public List<String> getItemShareCategories() {
List<String> shareCategories = new ArrayList<String>();
// TODO Locale the category names!
if (shareLootDrops) {
shareCategories.add("Loot");
shareCategories.add(LocaleLoader.getString("Party.ItemShare.Category.Loot"));
}
if (shareMiningDrops) {
shareCategories.add("Mining");
shareCategories.add(LocaleLoader.getString("Party.ItemShare.Category.Mining"));
}
if (shareHerbalismDrops) {
shareCategories.add("Herbalism");
shareCategories.add(LocaleLoader.getString("Party.ItemShare.Category.Herbalism"));
}
if (shareWoodcuttingDrops) {
shareCategories.add("Woodcutting");
shareCategories.add(LocaleLoader.getString("Party.ItemShare.Category.Woodcutting"));
}
if (shareMiscDrops) {
shareCategories.add("Misc");
shareCategories.add(LocaleLoader.getString("Party.ItemShare.Category.Misc"));
}
return shareCategories;

View File

@@ -20,6 +20,7 @@ import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
import com.gmail.nossr50.events.experience.McMMOPlayerXpGainEvent;
import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.party.ShareHandler;
import com.gmail.nossr50.runnables.skills.AbilityDisableTask;
import com.gmail.nossr50.skills.SkillManager;
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
import com.gmail.nossr50.skills.archery.ArcheryManager;
@@ -182,7 +183,8 @@ public class McMMOPlayer {
*/
public void resetAbilityMode() {
for (AbilityType ability : AbilityType.values()) {
setAbilityMode(ability, false);
// Correctly disable and handle any special deactivate code
new AbilityDisableTask(this, ability).run();
}
}
@@ -506,14 +508,15 @@ public class McMMOPlayer {
Set<SkillType> parentSkills = FamilyTree.getParents(skillType);
for (SkillType parentSkill : parentSkills) {
if (Permissions.skillEnabled(player, parentSkill)) {
applyXpGain(parentSkill, xp / parentSkills.size());
}
applyXpGain(parentSkill, xp / parentSkills.size());
}
return;
}
if (!Permissions.skillEnabled(player, skillType)) {
return;
}
McMMOPlayerXpGainEvent event = new McMMOPlayerXpGainEvent(player, skillType, xp);
mcMMO.p.getServer().getPluginManager().callEvent(event);

View File

@@ -42,7 +42,7 @@ public class PlayerProfile {
public PlayerProfile(String playerName, boolean addNew) {
this.playerName = playerName;
hudType = mcMMO.spoutEnabled ? SpoutConfig.getInstance().getDefaultHudType() : HudType.DISABLED;
hudType = mcMMO.isSpoutEnabled() ? SpoutConfig.getInstance().getDefaultHudType() : HudType.DISABLED;
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
for (AbilityType abilityType : AbilityType.values()) {
@@ -287,81 +287,93 @@ public class PlayerProfile {
private boolean loadMySQL() {
String tablePrefix = Config.getInstance().getMySQLTablePrefix();
userId = SQLDatabaseManager.getInt("SELECT id FROM " + tablePrefix + "users WHERE user = '" + playerName + "'");
ArrayList<String> playerData = SQLDatabaseManager.read(
"SELECT * FROM " + tablePrefix + "users u " +
"JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) " +
"JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) " +
"JOIN " + tablePrefix + "cooldowns c ON (u.id = c.user_id) " +
"JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) " +
"WHERE u.user = '" + playerName + "'"
).get(1);
if (userId == 0) {
return false;
}
if (playerData == null || playerData.size() == 0) {
userId = SQLDatabaseManager.getInt("SELECT id FROM " + tablePrefix + "users WHERE user = '" + playerName + "'");
ArrayList<String> hudValues = SQLDatabaseManager.read("SELECT hudtype, mobhealthbar FROM " + tablePrefix + "huds WHERE user_id = " + userId).get(1);
// Check if user doesn't exist
if (userId == 0) {
return false;
}
if (hudValues == null) {
SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "huds (user_id, mobhealthbar) VALUES (" + userId + ",'" + mobHealthbarType.name() + "')");
mcMMO.p.getLogger().warning(playerName + "does not exist in the HUD table. Their HUDs will be reset.");
}
else {
hudType = HudType.valueOf(hudValues.get(0));
mobHealthbarType = MobHealthbarType.valueOf(hudValues.get(1));
}
// Write missing table rows
SQLDatabaseManager.write("INSERT IGNORE INTO " + tablePrefix + "skills (user_id) VALUES (" + userId + ")");
SQLDatabaseManager.write("INSERT IGNORE INTO " + tablePrefix + "experience (user_id) VALUES (" + userId + ")");
SQLDatabaseManager.write("INSERT IGNORE INTO " + tablePrefix + "cooldowns (user_id) VALUES (" + userId + ")");
SQLDatabaseManager.write("INSERT IGNORE INTO " + tablePrefix + "huds (user_id, mobhealthbar) VALUES (" + userId + ",'" + mobHealthbarType.name() + "')");
ArrayList<String> cooldownValues = SQLDatabaseManager.read("SELECT mining, woodcutting, unarmed, herbalism, excavation, swords, axes, blast_mining FROM " + tablePrefix + "cooldowns WHERE user_id = " + userId).get(1);
// Re-read data
playerData = SQLDatabaseManager.read(
"SELECT * FROM " + tablePrefix + "users u " +
"JOIN " + tablePrefix + "skills s ON (u.id = s.user_id) " +
"JOIN " + tablePrefix + "experience e ON (u.id = e.user_id) " +
"JOIN " + tablePrefix + "cooldowns c ON (u.id = c.user_id) " +
"JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) " +
"WHERE u.user = '" + playerName + "'"
).get(1);
}
// Remove from list the user_id's from various tables
playerData.remove(43);
playerData.remove(30);
playerData.remove(17);
playerData.remove(4);
if (cooldownValues == null) {
SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "cooldowns (user_id) VALUES (" + userId + ")");
mcMMO.p.getLogger().warning(playerName + "does not exist in the cooldown table. Their cooldowns will be reset.");
}
else {
skillsDATS.put(AbilityType.SUPER_BREAKER, Integer.valueOf(cooldownValues.get(0)));
skillsDATS.put(AbilityType.TREE_FELLER, Integer.valueOf(cooldownValues.get(1)));
skillsDATS.put(AbilityType.BERSERK, Integer.valueOf(cooldownValues.get(2)));
skillsDATS.put(AbilityType.GREEN_TERRA, Integer.valueOf(cooldownValues.get(3)));
skillsDATS.put(AbilityType.GIGA_DRILL_BREAKER, Integer.valueOf(cooldownValues.get(4)));
skillsDATS.put(AbilityType.SERRATED_STRIKES, Integer.valueOf(cooldownValues.get(5)));
skillsDATS.put(AbilityType.SKULL_SPLITTER, Integer.valueOf(cooldownValues.get(6)));
skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(cooldownValues.get(7)));
}
userId = Integer.valueOf(playerData.get(0));
// UserName 1 - Already loaded
// LastLogin 2 - Doesn't need to be loaded
// PartyName 3 - Loaded elsewhere I believe
ArrayList<String> statValues = SQLDatabaseManager.read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM " + tablePrefix + "skills WHERE user_id = " + userId).get(1);
skills.put(SkillType.TAMING, Integer.valueOf(playerData.get(4)));
skills.put(SkillType.MINING, Integer.valueOf(playerData.get(5)));
skills.put(SkillType.REPAIR, Integer.valueOf(playerData.get(6)));
skills.put(SkillType.WOODCUTTING, Integer.valueOf(playerData.get(7)));
skills.put(SkillType.UNARMED, Integer.valueOf(playerData.get(8)));
skills.put(SkillType.HERBALISM, Integer.valueOf(playerData.get(9)));
skills.put(SkillType.EXCAVATION, Integer.valueOf(playerData.get(10)));
skills.put(SkillType.ARCHERY, Integer.valueOf(playerData.get(11)));
skills.put(SkillType.SWORDS, Integer.valueOf(playerData.get(12)));
skills.put(SkillType.AXES, Integer.valueOf(playerData.get(13)));
skills.put(SkillType.ACROBATICS, Integer.valueOf(playerData.get(14)));
skills.put(SkillType.FISHING, Integer.valueOf(playerData.get(15)));
if (statValues == null) {
SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "skills (user_id) VALUES (" + userId + ")");
mcMMO.p.getLogger().warning(playerName + "does not exist in the skills table. Their stats will be reset.");
}
else {
skills.put(SkillType.TAMING, Integer.valueOf(statValues.get(0)));
skills.put(SkillType.MINING, Integer.valueOf(statValues.get(1)));
skills.put(SkillType.REPAIR, Integer.valueOf(statValues.get(2)));
skills.put(SkillType.WOODCUTTING, Integer.valueOf(statValues.get(3)));
skills.put(SkillType.UNARMED, Integer.valueOf(statValues.get(4)));
skills.put(SkillType.HERBALISM, Integer.valueOf(statValues.get(5)));
skills.put(SkillType.EXCAVATION, Integer.valueOf(statValues.get(6)));
skills.put(SkillType.ARCHERY, Integer.valueOf(statValues.get(7)));
skills.put(SkillType.SWORDS, Integer.valueOf(statValues.get(8)));
skills.put(SkillType.AXES, Integer.valueOf(statValues.get(9)));
skills.put(SkillType.ACROBATICS, Integer.valueOf(statValues.get(10)));
skills.put(SkillType.FISHING, Integer.valueOf(statValues.get(11)));
}
skillsXp.put(SkillType.TAMING, (float) Integer.valueOf(playerData.get(16)));
skillsXp.put(SkillType.MINING, (float) Integer.valueOf(playerData.get(17)));
skillsXp.put(SkillType.REPAIR, (float) Integer.valueOf(playerData.get(18)));
skillsXp.put(SkillType.WOODCUTTING, (float) Integer.valueOf(playerData.get(19)));
skillsXp.put(SkillType.UNARMED, (float) Integer.valueOf(playerData.get(20)));
skillsXp.put(SkillType.HERBALISM, (float) Integer.valueOf(playerData.get(21)));
skillsXp.put(SkillType.EXCAVATION, (float) Integer.valueOf(playerData.get(22)));
skillsXp.put(SkillType.ARCHERY, (float) Integer.valueOf(playerData.get(23)));
skillsXp.put(SkillType.SWORDS, (float) Integer.valueOf(playerData.get(24)));
skillsXp.put(SkillType.AXES, (float) Integer.valueOf(playerData.get(25)));
skillsXp.put(SkillType.ACROBATICS, (float) Integer.valueOf(playerData.get(26)));
skillsXp.put(SkillType.FISHING, (float) Integer.valueOf(playerData.get(27)));
ArrayList<String> experienceValues = SQLDatabaseManager.read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics, fishing FROM " + tablePrefix + "experience WHERE user_id = " + userId).get(1);
// Taming 28 - Unused
skillsDATS.put(AbilityType.SUPER_BREAKER, Integer.valueOf(playerData.get(29)));
skillsDATS.put(AbilityType.TREE_FELLER, Integer.valueOf(playerData.get(30)));
// Repair 31 - Unused
skillsDATS.put(AbilityType.BERSERK, Integer.valueOf(playerData.get(32)));
skillsDATS.put(AbilityType.GREEN_TERRA, Integer.valueOf(playerData.get(33)));
skillsDATS.put(AbilityType.GIGA_DRILL_BREAKER, Integer.valueOf(playerData.get(34)));
// Archery 35 - Unused
skillsDATS.put(AbilityType.SERRATED_STRIKES, Integer.valueOf(playerData.get(36)));
skillsDATS.put(AbilityType.SKULL_SPLITTER, Integer.valueOf(playerData.get(37)));
// Acrobatics 38 - Unused
skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(playerData.get(39)));
if (experienceValues == null) {
SQLDatabaseManager.write("INSERT INTO " + tablePrefix + "experience (user_id) VALUES (" + userId + ")");
mcMMO.p.getLogger().warning(playerName + "does not exist in the experience table. Their experience will be reset.");
}
else {
skillsXp.put(SkillType.TAMING, (float) Integer.valueOf(experienceValues.get(0)));
skillsXp.put(SkillType.MINING, (float) Integer.valueOf(experienceValues.get(1)));
skillsXp.put(SkillType.REPAIR, (float) Integer.valueOf(experienceValues.get(2)));
skillsXp.put(SkillType.WOODCUTTING, (float) Integer.valueOf(experienceValues.get(3)));
skillsXp.put(SkillType.UNARMED, (float) Integer.valueOf(experienceValues.get(4)));
skillsXp.put(SkillType.HERBALISM, (float) Integer.valueOf(experienceValues.get(5)));
skillsXp.put(SkillType.EXCAVATION, (float) Integer.valueOf(experienceValues.get(6)));
skillsXp.put(SkillType.ARCHERY, (float) Integer.valueOf(experienceValues.get(7)));
skillsXp.put(SkillType.SWORDS, (float) Integer.valueOf(experienceValues.get(8)));
skillsXp.put(SkillType.AXES, (float) Integer.valueOf(experienceValues.get(9)));
skillsXp.put(SkillType.ACROBATICS, (float) Integer.valueOf(experienceValues.get(10)));
skillsXp.put(SkillType.FISHING, (float) Integer.valueOf(experienceValues.get(11)));
}
hudType = HudType.valueOf(playerData.get(40));
mobHealthbarType = MobHealthbarType.valueOf(playerData.get(41));
loaded = true;
return true;

View File

@@ -144,4 +144,14 @@ public enum SkillType {
public Color getRunescapeModeColor() {
return runescapeColor;
}
public static SkillType byAbility(AbilityType ability) {
for (SkillType type : values()) {
if (type.getAbility() == ability) {
return type;
}
}
return null;
}
}

View File

@@ -0,0 +1,12 @@
package com.gmail.nossr50.events.fake;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Fish;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerFishEvent;
public class FakePlayerFishEvent extends PlayerFishEvent {
public FakePlayerFishEvent(Player player, Entity entity, Fish hookEntity, State state) {
super(player, entity, hookEntity, state);
}
}

View File

@@ -0,0 +1,35 @@
package com.gmail.nossr50.events.skills.abilities;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
public class McMMOPlayerAbilityActivateEvent extends McMMOPlayerSkillEvent implements Cancellable {
private AbilityType abilityType;
private boolean cancelled;
public McMMOPlayerAbilityActivateEvent(Player player, SkillType skill) {
super(player, skill);
abilityType = skill.getAbility();
cancelled = false;
}
/**
* @return The ability type involved in this event
*/
public AbilityType getAbilityType() {
return abilityType;
}
public boolean isCancelled() {
return cancelled;
}
public void setCancelled(boolean value) {
this.cancelled = value;
}
}

View File

@@ -0,0 +1,22 @@
package com.gmail.nossr50.events.skills.abilities;
import org.bukkit.entity.Player;
import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
public class McMMOPlayerAbilityDeactivateEvent extends McMMOPlayerSkillEvent {
private AbilityType ability;
public McMMOPlayerAbilityDeactivateEvent(Player player, SkillType skill) {
super(player, skill);
this.ability = skill.getAbility();
}
public AbilityType getAbility() {
return ability;
}
}

View File

@@ -2,7 +2,9 @@ package com.gmail.nossr50.listeners;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.AnimalTamer;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.LivingEntity;
@@ -15,19 +17,22 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.EntityTameEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.ExplosionPrimeEvent;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
@@ -52,6 +57,24 @@ public class EntityListener implements Listener {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityShootBow(EntityShootBowEvent event) {
ItemStack bow = event.getBow();
if (bow != null) {
Entity projectile = event.getProjectile();
if (projectile instanceof Arrow) {
if (bow.containsEnchantment(Enchantment.ARROW_INFINITE)) {
projectile.setMetadata(mcMMO.infiniteArrowKey, mcMMO.metadataValue);
}
projectile.setMetadata(mcMMO.bowForceKey, new FixedMetadataValue(plugin, Math.min(event.getForce() * AdvancedConfig.getInstance().getForceMultiplier(), 1.0)));
projectile.setMetadata(mcMMO.arrowDistanceKey, new FixedMetadataValue(plugin, Archery.locationToString(projectile.getLocation())));
}
}
}
/**
* Monitor EntityChangeBlock events.
*
@@ -298,14 +321,21 @@ public class EntityListener implements Listener {
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onCreatureSpawn(CreatureSpawnEvent event) {
if (Misc.isSpawnerXPEnabled) {
return;
}
switch (event.getSpawnReason()) {
case SPAWNER:
case SPAWNER_EGG:
LivingEntity entity = event.getEntity();
Entity passenger = entity.getPassenger();
SpawnReason reason = event.getSpawnReason();
entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
if (reason == SpawnReason.SPAWNER || reason == SpawnReason.SPAWNER_EGG) {
event.getEntity().setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
if (passenger != null) {
passenger.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
}
return;
default:
return;
}
}

View File

@@ -1,5 +1,8 @@
package com.gmail.nossr50.listeners;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Furnace;
@@ -19,8 +22,10 @@ import org.bukkit.inventory.FurnaceInventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.metadata.MetadataValue;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.skills.smelting.SmeltingManager;
import com.gmail.nossr50.util.ItemUtils;
@@ -96,10 +101,11 @@ public class InventoryListener implements Listener {
if (furnaceState instanceof Furnace) {
ItemStack smelting = ((Furnace) furnaceState).getInventory().getSmelting();
List<MetadataValue> metadata = furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey);
if (furnaceBlock.hasMetadata(mcMMO.furnaceMetadataKey) && smelting != null && ItemUtils.isSmeltable(smelting)) {
if (!metadata.isEmpty() && smelting != null && ItemUtils.isSmeltable(smelting)) {
// We can make this assumption because we (should) be the only ones using this exact metadata
Player player = plugin.getServer().getPlayer(furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey).get(0).asString());
Player player = plugin.getServer().getPlayer(metadata.get(0).asString());
if (Misc.isNPCEntity(player) || !Permissions.fuelEfficiency(player)) {
return;
@@ -117,10 +123,19 @@ public class InventoryListener implements Listener {
if (furnaceState instanceof Furnace) {
ItemStack smelting = ((Furnace) furnaceState).getInventory().getSmelting();
List<MetadataValue> metadata = furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey);
if (furnaceBlock.hasMetadata(mcMMO.furnaceMetadataKey) && smelting != null && ItemUtils.isSmeltable(smelting)) {
if (Config.getInstance().getPotatoEnabled() && smelting.getType() == Material.POTATO_ITEM) {
if ((Config.getInstance().getPotatoChance() / 100.0) >= Misc.getRandom().nextDouble()) {
event.setCancelled(true);
furnaceState.getWorld().createExplosion(furnaceState.getLocation(), 4F, true);
return;
}
}
if (!metadata.isEmpty() && smelting != null && ItemUtils.isSmeltable(smelting)) {
// We can make this assumption because we (should) be the only ones using this exact metadata
Player player = plugin.getServer().getPlayer(furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey).get(0).asString());
Player player = plugin.getServer().getPlayer(metadata.get(0).asString());
if (Misc.isNPCEntity(player) || !Permissions.skillEnabled(player, SkillType.SMELTING)) {
return;
@@ -138,10 +153,11 @@ public class InventoryListener implements Listener {
if (furnaceState instanceof Furnace) {
ItemStack result = ((Furnace) furnaceState).getInventory().getResult();
List<MetadataValue> metadata = furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey);
if (furnaceBlock.hasMetadata(mcMMO.furnaceMetadataKey) && result != null && ItemUtils.isSmelted(result)) {
if (!metadata.isEmpty() && result != null && ItemUtils.isSmelted(result)) {
// We can make this assumption because we (should) be the only ones using this exact metadata
Player player = plugin.getServer().getPlayer(furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey).get(0).asString());
Player player = plugin.getServer().getPlayer(metadata.get(0).asString());
if (Misc.isNPCEntity(player)) {
return;

View File

@@ -1,12 +1,12 @@
package com.gmail.nossr50.listeners;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Fish;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -54,6 +54,7 @@ import com.gmail.nossr50.util.MobHealthbarUtils;
import com.gmail.nossr50.util.Motd;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
import com.gmail.nossr50.util.skills.SkillUtils;
public class PlayerListener implements Listener {
@@ -144,6 +145,7 @@ public class PlayerListener implements Listener {
}
UserManager.addUser(player).actualizeRespawnATS();
ScoreboardManager.enablePowerLevelDisplay(player);
}
/**
@@ -176,6 +178,14 @@ public class PlayerListener implements Listener {
switch (event.getState()) {
case FISHING:
if (!Permissions.krakenBypass(player)) {
event.setCancelled(fishingManager.exploitPrevention());
}
if (event.isCancelled()) {
return;
}
if (fishingManager.canMasterAngler()) {
fishingManager.masterAngler(event.getHook());
}
@@ -191,11 +201,22 @@ public class PlayerListener implements Listener {
case CAUGHT_ENTITY:
Entity entity = event.getCaught();
if (fishingManager.canShake(entity)) {
fishingManager.shakeCheck((LivingEntity) entity);
}
break;
case IN_GROUND:
Fish hook = event.getHook();
Block block = hook.getLocation().getBlock();
if (fishingManager.canIceFish(block)) {
event.setCancelled(true);
fishingManager.iceFishing(hook, block);
}
break;
default:
break;
}
@@ -303,13 +324,20 @@ public class PlayerListener implements Listener {
public void onPlayerInteractLowest(PlayerInteractEvent event) {
Player player = event.getPlayer();
Block block = event.getClickedBlock();
ItemStack heldItem = player.getItemInHand();
if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
return;
}
MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
ItemStack heldItem = player.getItemInHand();
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
// This shouldn't be possible - this is probably a band-aid for a larger issue somewhere else.
if (mcMMOPlayer == null) {
return;
}
MiningManager miningManager = mcMMOPlayer.getMiningManager();
switch (event.getAction()) {
case RIGHT_CLICK_BLOCK:
@@ -317,7 +345,7 @@ public class PlayerListener implements Listener {
/* REPAIR CHECKS */
if (blockID == Repair.repairAnvilId && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
RepairManager repairManager = mcMMOPlayer.getRepairManager();
event.setCancelled(true);
// Make sure the player knows what he's doing when trying to repair an enchanted item
@@ -328,7 +356,7 @@ public class PlayerListener implements Listener {
}
/* SALVAGE CHECKS */
else if (blockID == Repair.salvageAnvilId && Permissions.salvage(player) && Repair.isSalvageable(heldItem)) {
RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
RepairManager repairManager = mcMMOPlayer.getRepairManager();
event.setCancelled(true);
// Make sure the player knows what he's doing when trying to salvage an enchanted item
@@ -354,22 +382,22 @@ public class PlayerListener implements Listener {
/* REPAIR CHECKS */
if (blockID == Repair.repairAnvilId && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
RepairManager repairManager = mcMMOPlayer.getRepairManager();
// Cancel repairing an enchanted item
if (repairManager.checkConfirmation(blockID, false) && Config.getInstance().getRepairConfirmRequired()) {
UserManager.getPlayer(player).setLastAnvilUse(Repair.repairAnvilId, 0);
player.sendMessage(ChatColor.RED + "Repair cancelled!"); //TODO Locale!
mcMMOPlayer.setLastAnvilUse(Repair.repairAnvilId, 0);
player.sendMessage(LocaleLoader.getString("Skills.Cancelled", LocaleLoader.getString("Repair.Pretty.Name")));
}
}
/* SALVAGE CHECKS */
else if (blockID == Repair.salvageAnvilId && Permissions.salvage(player) && Repair.isSalvageable(heldItem)) {
RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
RepairManager repairManager = mcMMOPlayer.getRepairManager();
// Cancel salvaging an enchanted item
if (repairManager.checkConfirmation(blockID, false) && Config.getInstance().getRepairConfirmRequired()) {
UserManager.getPlayer(player).setLastAnvilUse(Repair.salvageAnvilId, 0);
player.sendMessage(ChatColor.RED + "Salvage cancelled!"); //TODO Locale!
mcMMOPlayer.setLastAnvilUse(Repair.salvageAnvilId, 0);
player.sendMessage(LocaleLoader.getString("Skills.Cancelled", LocaleLoader.getString("Salvage.Pretty.Name")));
}
}
@@ -404,6 +432,11 @@ public class PlayerListener implements Listener {
ItemStack heldItem = player.getItemInHand();
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
// This shouldn't be possible - this is probably a band-aid for a larger issue somewhere else.
if (mcMMOPlayer == null) {
return;
}
switch (event.getAction()) {
case RIGHT_CLICK_BLOCK:
Block block = event.getClickedBlock();
@@ -502,10 +535,16 @@ public class PlayerListener implements Listener {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
if (mcMMOPlayer == null) {
mcMMO.p.debug(player.getName() + " is currently chatting, but has never logged on to the server.");
return;
}
if (mcMMOPlayer.getPartyChatMode()) {
Party party = mcMMOPlayer.getParty();
if (party == null) {
mcMMOPlayer.togglePartyChat();
player.sendMessage(LocaleLoader.getString("Commands.Party.None"));
return;
}

View File

@@ -11,13 +11,13 @@ import org.getspout.spoutapi.gui.Button;
import org.getspout.spoutapi.gui.ScreenType;
import org.getspout.spoutapi.player.SpoutPlayer;
import com.gmail.nossr50.config.spout.SpoutConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.spout.buttons.McMMOButton;
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
import com.gmail.nossr50.datatypes.spout.popups.McMMOMenu;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.spout.SpoutUtils;
public class SpoutListener implements Listener {
@@ -32,8 +32,8 @@ public class SpoutListener implements Listener {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(spoutPlayer);
// TODO: Add custom titles based on skills
if (SpoutUtils.showPowerLevel) {
spoutPlayer.setTitle(LocaleLoader.getString("Spout.Title", spoutPlayer.getName(), mcMMOPlayer.getPowerLevel()));
if (SpoutConfig.getInstance().getShowPowerLevel()) {
spoutPlayer.setTitle(LocaleLoader.getString("Spout.Title", spoutPlayer.getTitle(), mcMMOPlayer.getPowerLevel()));
}
mcMMOPlayer.getProfile().setSpoutHud(new McMMOHud(mcMMOPlayer)); // Setup Party HUD stuff
@@ -81,7 +81,7 @@ public class SpoutListener implements Listener {
return;
}
if (event.getKey() == SpoutUtils.menuKey) {
if (event.getKey() == SpoutConfig.getInstance().getMenuKey()) {
McMMOHud spoutHud = UserManager.getPlayer(spoutPlayer).getProfile().getSpoutHud();
if (!spoutHud.isMenuOpened()) {

View File

@@ -23,13 +23,12 @@ import com.gmail.nossr50.config.mods.CustomToolConfig;
import com.gmail.nossr50.config.spout.SpoutConfig;
import com.gmail.nossr50.config.treasure.TreasureConfig;
import com.gmail.nossr50.database.DatabaseManager;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.listeners.BlockListener;
import com.gmail.nossr50.listeners.EntityListener;
import com.gmail.nossr50.listeners.InventoryListener;
import com.gmail.nossr50.listeners.PlayerListener;
import com.gmail.nossr50.listeners.SelfListener;
import com.gmail.nossr50.listeners.SpoutListener;
import com.gmail.nossr50.listeners.WorldListener;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.metrics.MetricsManager;
@@ -54,18 +53,10 @@ import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.spout.SpoutUtils;
public class mcMMO extends JavaPlugin {
/* Listeners */
private final PlayerListener playerListener = new PlayerListener(this);
private final BlockListener blockListener = new BlockListener(this);
private final EntityListener entityListener = new EntityListener(this);
private final InventoryListener inventoryListener = new InventoryListener(this);
private final WorldListener worldListener = new WorldListener(this);
private final SelfListener selfListener = new SelfListener();
/* Managers */
private static ChunkManager placeStore;
private static ChunkManager placeStore;
private static RepairableManager repairableManager;
private static DatabaseManager databaseManager;
private static DatabaseManager databaseManager;
/* File Paths */
private static String mainDirectory;
@@ -81,14 +72,14 @@ public class mcMMO extends JavaPlugin {
// Update Check
private boolean updateAvailable;
// Plugin Checks
public static boolean spoutEnabled;
public static boolean combatTagEnabled;
/* Plugin Checks */
private static boolean spoutEnabled;
private static boolean combatTagEnabled;
// XP Event Check
private boolean xpEventEnabled;
// Metadata Values
/* Metadata Values */
public final static String entityMetadataKey = "mcMMO: Spawned Entity";
public final static String blockMetadataKey = "mcMMO: Piston Tracking";
public final static String furnaceMetadataKey = "mcMMO: Tracked Furnace";
@@ -96,6 +87,9 @@ public class mcMMO extends JavaPlugin {
public final static String customNameKey = "mcMMO: Custom Name";
public final static String customVisibleKey = "mcMMO: Name Visibility";
public final static String droppedItemKey = "mcMMO: Tracked Item";
public final static String infiniteArrowKey = "mcMMO: Infinite Arrow";
public final static String bowForceKey = "mcMMO: Bow Force";
public final static String arrowDistanceKey = "mcMMO: Arrow Distance";
public static FixedMetadataValue metadataValue;
@@ -113,7 +107,7 @@ public class mcMMO extends JavaPlugin {
setupSpout();
loadConfigFiles();
combatTagEnabled = getServer().getPluginManager().isPluginEnabled("CombatTag");
combatTagEnabled = getServer().getPluginManager().getPlugin("CombatTag") != null;
databaseManager = new DatabaseManager(this, Config.getInstance().getUseMySQL());
@@ -129,7 +123,7 @@ public class mcMMO extends JavaPlugin {
debug("Version " + getDescription().getVersion() + " is enabled!");
scheduleTasks();
registerCommands();
CommandRegistrationManager.registerCommands();
MetricsManager.setup();
@@ -161,7 +155,6 @@ public class mcMMO extends JavaPlugin {
@Override
public void onDisable() {
try {
reloadDisableHelper(); // Prevent Berserk from getting "stuck"
UserManager.saveAll(); // Make sure to save player information if the server shuts down
PartyManager.saveParties(); // Save our parties
placeStore.saveAll(); // Save our metadata
@@ -242,6 +235,14 @@ public class mcMMO extends JavaPlugin {
return repairableManager;
}
public static boolean isSpoutEnabled() {
return spoutEnabled;
}
public static boolean isCombatTagEnabled() {
return combatTagEnabled;
}
/**
* Setup the various storage file paths
*/
@@ -313,8 +314,7 @@ public class mcMMO extends JavaPlugin {
spoutEnabled = true;
SpoutConfig.getInstance();
SpoutUtils.setupSpoutConfigs();
SpoutUtils.registerCustomEvent();
getServer().getPluginManager().registerEvents(new SpoutListener(), this);
SpoutUtils.preCacheFiles();
SpoutUtils.reloadSpoutPlayers(); // Handle spout players after a /reload
}
@@ -324,53 +324,12 @@ public class mcMMO extends JavaPlugin {
PluginManager pluginManager = getServer().getPluginManager();
// Register events
pluginManager.registerEvents(playerListener, this);
pluginManager.registerEvents(blockListener, this);
pluginManager.registerEvents(entityListener, this);
pluginManager.registerEvents(inventoryListener, this);
pluginManager.registerEvents(selfListener, this);
pluginManager.registerEvents(worldListener, this);
}
/**
* Register the commands.
*/
private void registerCommands() {
CommandRegistrationManager.registerSkillCommands();
// mc* commands
CommandRegistrationManager.registerMcpurgeCommand();
CommandRegistrationManager.registerMcremoveCommand();
CommandRegistrationManager.registerMcabilityCommand();
CommandRegistrationManager.registerMcgodCommand();
CommandRegistrationManager.registerMcmmoCommand();
CommandRegistrationManager.registerMcrefreshCommand();
CommandRegistrationManager.registerMctopCommand();
CommandRegistrationManager.registerMcrankCommand();
CommandRegistrationManager.registerMcstatsCommand();
// Party commands
CommandRegistrationManager.registerAdminChatCommand();
CommandRegistrationManager.registerPartyCommand();
CommandRegistrationManager.registerPartyChatCommand();
CommandRegistrationManager.registerPtpCommand();
// Other commands
CommandRegistrationManager.registerAddxpCommand();
CommandRegistrationManager.registerAddlevelsCommand();
CommandRegistrationManager.registerMmoeditCommand();
CommandRegistrationManager.registerInspectCommand();
CommandRegistrationManager.registerXprateCommand();
CommandRegistrationManager.registerMmoupdateCommand();
CommandRegistrationManager.registerSkillresetCommand();
CommandRegistrationManager.registerHardcoreCommand();
CommandRegistrationManager.registerVampirismCommand();
CommandRegistrationManager.registerMcnotifyCommand();
CommandRegistrationManager.registerMobhealthCommand();
// Spout commands
CommandRegistrationManager.registerXplockCommand();
CommandRegistrationManager.registerMchudCommand();
pluginManager.registerEvents(new PlayerListener(this), this);
pluginManager.registerEvents(new BlockListener(this), this);
pluginManager.registerEvents(new EntityListener(this), this);
pluginManager.registerEvents(new InventoryListener(this), this);
pluginManager.registerEvents(new SelfListener(), this);
pluginManager.registerEvents(new WorldListener(this), this);
}
private void registerCustomRecipes() {
@@ -382,49 +341,29 @@ public class mcMMO extends JavaPlugin {
private void scheduleTasks() {
// Periodic save timer (Saves every 10 minutes by default)
long saveIntervalTicks = Config.getInstance().getSaveInterval() * 1200;
new SaveTimerTask().runTaskTimer(this, saveIntervalTicks, saveIntervalTicks);
// Bleed timer (Runs every two seconds)
new BleedTimerTask().runTaskTimer(this, 40, 40);
// Old & Powerless User remover
int purgeInterval = Config.getInstance().getPurgeInterval();
UserPurgeTask userPurgeTask = new UserPurgeTask();
long purgeIntervalTicks = Config.getInstance().getPurgeInterval() * 60 * 60 * 20;
if (purgeInterval == 0) {
userPurgeTask.runTaskLater(this, 40);
if (purgeIntervalTicks == 0) {
new UserPurgeTask().runTaskLater(this, 40); // Start 2 seconds after startup.
}
else if (purgeInterval > 0) {
long purgeIntervalTicks = purgeInterval * 60 * 60 * 20;
userPurgeTask.runTaskTimer(this, purgeIntervalTicks, purgeIntervalTicks);
else if (purgeIntervalTicks > 0) {
new UserPurgeTask().runTaskTimer(this, purgeIntervalTicks, purgeIntervalTicks);
}
// Automatically remove old members from parties
long kickInterval = Config.getInstance().getAutoPartyKickInterval();
PartyAutoKickTask partyAutoKickTask = new PartyAutoKickTask();
long kickIntervalTicks = Config.getInstance().getAutoPartyKickInterval() * 60 * 60 * 20;
if (kickInterval == 0) {
partyAutoKickTask.runTaskLater(this, 40); // Start 2 seconds after startup.
if (kickIntervalTicks == 0) {
new PartyAutoKickTask().runTaskLater(this, 40); // Start 2 seconds after startup.
}
else if (kickInterval > 0) {
long kickIntervalTicks = kickInterval * 60 * 60 * 20;
partyAutoKickTask.runTaskTimer(this, kickIntervalTicks, kickIntervalTicks);
}
}
/**
* Because /reload is the biggest piece of garbage in existence,
* we have to do some special checks to keep it from breaking everything.
*/
private void reloadDisableHelper() {
for (McMMOPlayer mcMMOPlayer : UserManager.getPlayers().values()) {
if (mcMMOPlayer.getAbilityMode(AbilityType.BERSERK)) {
mcMMOPlayer.setAbilityMode(AbilityType.BERSERK, false);
mcMMOPlayer.getPlayer().setCanPickupItems(true);
}
else if (kickIntervalTicks > 0) {
new PartyAutoKickTask().runTaskTimer(this, kickIntervalTicks, kickIntervalTicks);
}
}
}

View File

@@ -7,8 +7,8 @@ import org.bukkit.scheduler.BukkitRunnable;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.database.SQLDatabaseManager;
import com.gmail.nossr50.database.FlatfileDatabaseManager;
import com.gmail.nossr50.database.SQLDatabaseManager;
public class McrankCommandAsyncTask extends BukkitRunnable {
private final String playerName;

View File

@@ -1,6 +1,5 @@
package com.gmail.nossr50.runnables.items;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@@ -29,19 +28,18 @@ public class ChimaeraWingWarmup extends BukkitRunnable {
private void checkChimaeraWingTeleport() {
Player player = mcMMOPlayer.getPlayer();
Location previousLocation = mcMMOPlayer.getTeleportCommenceLocation();
Location newLocation = mcMMOPlayer.getPlayer().getLocation();
long recentlyHurt = mcMMOPlayer.getRecentlyHurt();
ItemStack inHand = player.getItemInHand();
mcMMOPlayer.setTeleportCommenceLocation(null);
if (newLocation.distanceSquared(previousLocation) > 1.0 || !player.getInventory().containsAtLeast(ChimaeraWing.getChimaeraWing(0), 1)) {
player.sendMessage(ChatColor.DARK_RED + "Teleportation canceled!"); //TODO Locale!
if (player.getLocation().distanceSquared(previousLocation) > 1.0 || !player.getInventory().containsAtLeast(ChimaeraWing.getChimaeraWing(0), 1)) {
player.sendMessage(LocaleLoader.getString("Teleport.Cancelled"));
return;
}
if (!ItemUtils.isChimaeraWing(inHand) || inHand.getAmount() < Config.getInstance().getChimaeraUseCost()) {
player.sendMessage(LocaleLoader.getString("Skills.NeedMore", "Chimaera Wings")); //TODO Locale!
player.sendMessage(LocaleLoader.getString("Skills.NeedMore", LocaleLoader.getString("Item.ChimaeraWing.Name")));
return;
}

View File

@@ -1,6 +1,5 @@
package com.gmail.nossr50.runnables.items;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
@@ -44,7 +43,7 @@ public class TeleportationWarmup extends BukkitRunnable {
}
if (newLocation.distanceSquared(previousLocation) > 1.0) {
teleportingPlayer.sendMessage(ChatColor.DARK_RED + "Teleportation canceled!"); //TODO Locale!
teleportingPlayer.sendMessage(LocaleLoader.getString("Teleport.Cancelled"));
return;
}

View File

@@ -17,7 +17,11 @@ public class ScoreboardChangeTask extends BukkitRunnable {
@Override
public void run() {
player.setScoreboard(oldScoreboard);
if (player.isOnline()) {
player.setScoreboard(oldScoreboard);
ScoreboardManager.enablePowerLevelDisplay(player);
}
ScoreboardManager.clearPendingTask(player.getName());
}
}

View File

@@ -7,6 +7,8 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.HiddenConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.events.skills.abilities.McMMOPlayerAbilityDeactivateEvent;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
import com.gmail.nossr50.util.skills.SkillUtils;
@@ -44,6 +46,9 @@ public class AbilityDisableTask extends BukkitRunnable {
break;
}
McMMOPlayerAbilityDeactivateEvent event = new McMMOPlayerAbilityDeactivateEvent(player, SkillType.byAbility(ability));
mcMMO.p.getServer().getPluginManager().callEvent(event);
mcMMOPlayer.setAbilityMode(ability, false);
mcMMOPlayer.setAbilityInformed(ability, false);

View File

@@ -0,0 +1,94 @@
package com.gmail.nossr50.runnables.skills;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.util.Misc;
public class KrakenAttackTask extends BukkitRunnable {
private Creature kraken;
private Player player;
private Location location;
private final boolean GLOBAL_SOUNDS = AdvancedConfig.getInstance().getKrakenGlobalSoundsEnabled();
public KrakenAttackTask(Creature kraken, Player player) {
this.kraken = kraken;
this.player = player;
}
public KrakenAttackTask(Creature kraken, Player player, Location location) {
this.kraken = kraken;
this.player = player;
this.location = location;
}
@Override
public void run() {
if (location != null) {
Location playerLocation = player.getLocation();
if (player.isValid() && playerLocation.getBlock().isLiquid()) {
World world = player.getWorld();
player.damage(AdvancedConfig.getInstance().getKrakenAttackDamage(), kraken);
if (GLOBAL_SOUNDS) {
world.playSound(playerLocation, Sound.GHAST_SCREAM, Misc.GHAST_VOLUME, Misc.getGhastPitch());
}
else {
player.playSound(playerLocation, Sound.GHAST_SCREAM, Misc.GHAST_VOLUME, Misc.getGhastPitch());
}
world.strikeLightningEffect(playerLocation);
}
else {
player.sendMessage(AdvancedConfig.getInstance().getPlayerEscapeMessage());
player.resetPlayerWeather();
cancel();
}
return;
}
if (!kraken.isValid()) {
player.sendMessage(AdvancedConfig.getInstance().getPlayerDefeatMessage());
player.resetPlayerWeather();
cancel();
}
if (player.isValid()) {
Location location = player.getLocation();
if (!location.getBlock().isLiquid() && AdvancedConfig.getInstance().getKrakenEscapeAllowed()) {
player.sendMessage(AdvancedConfig.getInstance().getPlayerEscapeMessage());
kraken.remove();
player.resetPlayerWeather();
cancel();
return;
}
World world = player.getWorld();
kraken.teleport(player);
player.damage(AdvancedConfig.getInstance().getKrakenAttackDamage(), kraken);
if (GLOBAL_SOUNDS) {
world.playSound(location, Sound.GHAST_SCREAM, Misc.GHAST_VOLUME, Misc.getGhastPitch());
}
else {
player.playSound(location, Sound.GHAST_SCREAM, Misc.GHAST_VOLUME, Misc.getGhastPitch());
}
world.strikeLightningEffect(location);
}
else {
kraken.remove();
cancel();
}
}
}

View File

@@ -4,10 +4,12 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.LivingEntity;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.util.Misc;
@@ -65,4 +67,14 @@ public class Archery {
}
}
}
public static Location stringToLocation(String location) {
String[] values = location.split(",");
return new Location(mcMMO.p.getServer().getWorld(values[0]), Double.parseDouble(values[1]), Double.parseDouble(values[2]), Double.parseDouble(values[3]), Float.parseFloat(values[4]), Float.parseFloat(values[5]));
}
public static String locationToString(Location location) {
return location.getWorld().getName() + "," + location.getX() + "," + location.getY() + "," + location.getZ() + "," + location.getYaw() + "," + location.getPitch();
}
}

View File

@@ -1,12 +1,13 @@
package com.gmail.nossr50.skills.archery;
import org.bukkit.Location;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.locale.LocaleLoader;
@@ -30,9 +31,7 @@ public class ArcheryManager extends SkillManager {
}
public boolean canTrackArrows() {
Player player = getPlayer();
return !(player.getItemInHand().containsEnchantment(Enchantment.ARROW_INFINITE)) && Permissions.arrowRetrieval(player);
return Permissions.arrowRetrieval(getPlayer());
}
/**
@@ -40,20 +39,15 @@ public class ArcheryManager extends SkillManager {
*
* @param target The {@link LivingEntity} damaged by the arrow
*/
public void distanceXpBonus(LivingEntity target) {
Player player = getPlayer();
Location shooterLocation = player.getLocation();
public void distanceXpBonus(LivingEntity target, Entity damager) {
Location firedLocation = Archery.stringToLocation(damager.getMetadata(mcMMO.arrowDistanceKey).get(0).asString());
Location targetLocation = target.getLocation();
if (shooterLocation.getWorld() != targetLocation.getWorld()) {
if (firedLocation.getWorld() != targetLocation.getWorld()) {
return;
}
// Cap distance at 100^2 to prevent teleport exploit.
// TODO: Better way to handle this would be great...
double squaredDistance = Math.min(shooterLocation.distanceSquared(targetLocation), 10000);
applyXpGain((int) (squaredDistance * Archery.DISTANCE_XP_MULTIPLIER));
applyXpGain((int) (firedLocation.distanceSquared(targetLocation) * Archery.DISTANCE_XP_MULTIPLIER));
}
/**

View File

@@ -1,7 +1,10 @@
package com.gmail.nossr50.skills.fishing;
import java.util.HashMap;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.LivingEntity;
import org.bukkit.inventory.ItemStack;
@@ -49,6 +52,8 @@ public final class Fishing {
abstract protected int getVanillaXPBoostModifier();
}
protected static final HashMap<Material, List<Enchantment>> ENCHANTABLE_CACHE = new HashMap<Material, List<Enchantment>>();
public static int fishermansDietRankLevel1 = AdvancedConfig.getInstance().getFishermanDietRankChange();
public static int fishermansDietRankLevel2 = fishermansDietRankLevel1 * 2;
public static int fishermansDietMaxLevel = fishermansDietRankLevel1 * 5;

View File

@@ -4,9 +4,19 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.WeatherType;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Fish;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
@@ -14,8 +24,11 @@ import org.bukkit.entity.Player;
import org.bukkit.entity.Sheep;
import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Skeleton.SkeletonType;
import org.bukkit.event.player.PlayerFishEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.treasure.TreasureConfig;
@@ -23,7 +36,9 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.treasure.FishingTreasure;
import com.gmail.nossr50.datatypes.treasure.ShakeTreasure;
import com.gmail.nossr50.events.fake.FakePlayerFishEvent;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.runnables.skills.KrakenAttackTask;
import com.gmail.nossr50.skills.SkillManager;
import com.gmail.nossr50.skills.fishing.Fishing.Tier;
import com.gmail.nossr50.util.ItemUtils;
@@ -33,6 +48,11 @@ import com.gmail.nossr50.util.skills.CombatUtils;
import com.gmail.nossr50.util.skills.SkillUtils;
public class FishingManager extends SkillManager {
private final long FISHING_COOLDOWN_SECONDS = 1000L;
private int fishingTries = 0;
private long fishingTimestamp = 0L;
public FishingManager(McMMOPlayer mcMMOPlayer) {
super(mcMMOPlayer, SkillType.FISHING);
}
@@ -45,6 +65,111 @@ public class FishingManager extends SkillManager {
return Permissions.masterAngler(getPlayer());
}
public boolean unleashTheKraken() {
return unleashTheKraken(true);
}
private boolean unleashTheKraken(boolean forceSpawn) {
if (!forceSpawn && (fishingTries < AdvancedConfig.getInstance().getKrakenTriesBeforeRelease() || fishingTries <= Misc.getRandom().nextInt(200))) {
return false;
}
Player player = getPlayer();
World world = player.getWorld();
player.setPlayerWeather(WeatherType.DOWNFALL);
Entity vehicle = player.getVehicle();
if (vehicle != null && vehicle.getType() == EntityType.BOAT) {
vehicle.eject();
vehicle.remove();
}
player.teleport(player.getTargetBlock(null, 100).getLocation(), TeleportCause.PLUGIN);
Location location = player.getLocation();
world.strikeLightningEffect(location);
world.strikeLightningEffect(location);
world.strikeLightningEffect(location);
player.sendMessage(AdvancedConfig.getInstance().getPlayerUnleashMessage());
if (AdvancedConfig.getInstance().getKrakenGlobalSoundsEnabled()) {
world.playSound(location, Sound.GHAST_SCREAM, Misc.GHAST_VOLUME, Misc.getGhastPitch());
}
else {
player.playSound(location, Sound.GHAST_SCREAM, Misc.GHAST_VOLUME, Misc.getGhastPitch());
}
String globalMessage = AdvancedConfig.getInstance().getServerUnleashMessage();
if (!globalMessage.isEmpty()) {
mcMMO.p.getServer().broadcastMessage(ChatColor.RED + AdvancedConfig.getInstance().getServerUnleashMessage().replace("(PLAYER)", player.getDisplayName()));
}
player.setItemInHand(null);
Creature kraken = (Creature) world.spawnEntity(player.getEyeLocation(), (Misc.getRandom().nextInt(100) == 0 ? EntityType.CHICKEN : EntityType.SQUID));
kraken.setCustomName(AdvancedConfig.getInstance().getKrakenName());
if (!kraken.isValid()) {
int attackInterval = AdvancedConfig.getInstance().getKrakenAttackInterval() * 20;
new KrakenAttackTask(kraken, player, player.getLocation()).runTaskTimer(mcMMO.p, attackInterval, attackInterval);
if (!forceSpawn) {
fishingTries = 0;
}
return true;
}
kraken.setMaxHealth(AdvancedConfig.getInstance().getKrakenHealth());
kraken.setHealth(kraken.getMaxHealth());
int attackInterval = AdvancedConfig.getInstance().getKrakenAttackInterval() * 20;
new KrakenAttackTask(kraken, player).runTaskTimer(mcMMO.p, attackInterval, attackInterval);
if (!forceSpawn) {
fishingTries = 0;
}
return true;
}
public boolean exploitPrevention() {
if (!AdvancedConfig.getInstance().getKrakenEnabled()) {
return false;
}
long currentTime = System.currentTimeMillis();
boolean hasFished = currentTime < fishingTimestamp + FISHING_COOLDOWN_SECONDS;
fishingTries = hasFished ? fishingTries + 1 : Math.max(fishingTries - 1, 0);
fishingTimestamp = currentTime;
return unleashTheKraken(false);
}
public boolean canIceFish(Block block) {
if (getSkillLevel() < AdvancedConfig.getInstance().getIceFishingUnlockLevel()) {
return false;
}
if (block.getType() != Material.ICE) {
return false;
}
// Make sure this is a body of water, not just a block of ice.
Biome biome = block.getBiome();
boolean isFrozenBiome = (biome == Biome.FROZEN_OCEAN || biome == Biome.FROZEN_RIVER);
if (!isFrozenBiome && block.getRelative(BlockFace.DOWN, 3).getType() == (Material.STATIONARY_WATER)) {
return false;
}
return Permissions.iceFishing(getPlayer());
}
/**
* Gets the loot tier
*
@@ -90,8 +215,38 @@ public class FishingManager extends SkillManager {
return SkillUtils.handleFoodSkills(getPlayer(), skill, eventFoodLevel, Fishing.fishermansDietRankLevel1, Fishing.fishermansDietMaxLevel, rankChange);
}
public void iceFishing(Fish hook, Block block) {
// Make a hole
block.setType(Material.STATIONARY_WATER);
for (int x = -1; x <= 1; x++) {
for (int z = -1; z <= 1; z++) {
Block relative = block.getRelative(x, 0, z);
if (relative.getType() == Material.ICE) {
relative.setType(Material.STATIONARY_WATER);
}
}
}
// Recast in the new spot
mcMMO.p.getServer().getPluginManager().callEvent(new FakePlayerFishEvent(getPlayer(), null, hook, PlayerFishEvent.State.FISHING));
}
public void masterAngler(Fish hook) {
hook.setBiteChance(Math.min(hook.getBiteChance() * Math.max((getSkillLevel() / 200.0), 1.0), 1.0));
Player player = getPlayer();
Biome biome = player.getLocation().getBlock().getBiome();
double biteChance = Math.min(hook.getBiteChance() * Math.max((getSkillLevel() / 200.0), 1.0), 1.0);
if (biome == Biome.RIVER || biome == Biome.OCEAN) {
biteChance = biteChance * 2.0;
}
if (player.isInsideVehicle() && player.getVehicle().getType() == EntityType.BOAT) {
biteChance = biteChance * 2.0;
}
hook.setBiteChance(biteChance);
}
/**
@@ -142,6 +297,8 @@ public class FishingManager extends SkillManager {
* @param mob The {@link LivingEntity} affected by the ability
*/
public void shakeCheck(LivingEntity target) {
fishingTries--; // Because autoclicking to shake is OK.
if (getShakeProbability() > Misc.getRandom().nextInt(getActivationChance())) {
List<ShakeTreasure> possibleDrops = Fishing.findPossibleDrops(target);
@@ -254,13 +411,7 @@ public class FishingManager extends SkillManager {
return false;
}
List<Enchantment> possibleEnchantments = new ArrayList<Enchantment>();
for (Enchantment enchantment : Enchantment.values()) {
if (enchantment.canEnchantItem(treasureDrop)) {
possibleEnchantments.add(enchantment);
}
}
List<Enchantment> possibleEnchantments = getPossibleEnchantments(treasureDrop);
// This make sure that the order isn't always the same, for example previously Unbreaking had a lot more chance to be used than any other enchant
Collections.shuffle(possibleEnchantments, Misc.getRandom());
@@ -269,17 +420,38 @@ public class FishingManager extends SkillManager {
int specificChance = 1;
for (Enchantment possibleEnchantment : possibleEnchantments) {
if (!treasureDrop.getItemMeta().hasConflictingEnchant(possibleEnchantment) && Misc.getRandom().nextInt(specificChance) == 0) {
treasureDrop.addEnchantment(possibleEnchantment, Misc.getRandom().nextInt(possibleEnchantment.getMaxLevel()) + 1);
specificChance++;
enchanted = true;
if (treasureDrop.getItemMeta().hasConflictingEnchant(possibleEnchantment) || Misc.getRandom().nextInt(specificChance) != 0) {
continue;
}
treasureDrop.addEnchantment(possibleEnchantment, Math.max(Misc.getRandom().nextInt(possibleEnchantment.getMaxLevel()) + 1, possibleEnchantment.getStartLevel()));
specificChance++;
enchanted = true;
}
return enchanted;
}
private List<Enchantment> getPossibleEnchantments(ItemStack treasureDrop) {
Material dropType = treasureDrop.getType();
if (Fishing.ENCHANTABLE_CACHE.containsKey(dropType)) {
return Fishing.ENCHANTABLE_CACHE.get(dropType);
}
List<Enchantment> possibleEnchantments = new ArrayList<Enchantment>();
for (Enchantment enchantment : Enchantment.values()) {
if (enchantment.canEnchantItem(treasureDrop)) {
possibleEnchantments.add(enchantment);
}
}
Fishing.ENCHANTABLE_CACHE.put(dropType, possibleEnchantments);
return possibleEnchantments;
}
/**
* Gets the vanilla XP multiplier
*

View File

@@ -158,7 +158,7 @@ public class MiningManager extends SkillManager{
if (debrisYield > 0) {
for (BlockState blockState : debris) {
if (Misc.getRandom().nextFloat() < debrisYield) {
Misc.dropItem(blockState.getLocation(), blockState.getData().toItemStack(1));
Misc.dropItems(blockState.getLocation(), blockState.getBlock().getDrops());
}
}
}

View File

@@ -40,6 +40,30 @@ public class Repair {
return false;
}
public static String getAnvilMessage(int blockId) {
if (blockId == repairAnvilId) {
return LocaleLoader.getString("Repair.Listener.Anvil");
}
if (blockId == salvageAnvilId) {
return LocaleLoader.getString("Repair.Listener.Anvil2");
}
return "";
}
public static String[] getSpoutAnvilMessages(int blockId) {
if (blockId == repairAnvilId) {
return new String[] {LocaleLoader.getString("Repair.AnvilPlaced.Spout1"), LocaleLoader.getString("Repair.AnvilPlaced.Spout2")};
}
if (blockId == salvageAnvilId) {
return new String[] {"[mcMMO] Anvil Placed", "Right click to salvage!"};
}
return new String[] {"", ""};
}
/**
* Search the inventory for an item and return the index.
*
@@ -99,30 +123,6 @@ public class Repair {
inventory.removeItem(item);
}
protected static String[] getSpoutAnvilMessages(int blockId) {
if (blockId == repairAnvilId) {
return new String[] {LocaleLoader.getString("Repair.AnvilPlaced.Spout1"), LocaleLoader.getString("Repair.AnvilPlaced.Spout2")};
}
if (blockId == salvageAnvilId) {
return new String[] {"[mcMMO] Anvil Placed", "Right click to salvage!"};
}
return new String[] {"", ""};
}
protected static String getAnvilMessage(int blockId) {
if (blockId == repairAnvilId) {
return LocaleLoader.getString("Repair.Listener.Anvil");
}
if (blockId == salvageAnvilId) {
return LocaleLoader.getString("Repair.Listener.Anvil2");
}
return "";
}
protected static Material getSalvagedItem(ItemStack inHand) {
if (ItemUtils.isDiamondTool(inHand) || ItemUtils.isDiamondArmor(inHand)) {
return Material.DIAMOND;

View File

@@ -3,7 +3,6 @@ package com.gmail.nossr50.skills.repair;
import java.util.Map;
import java.util.Map.Entry;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
@@ -11,8 +10,6 @@ import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.getspout.spoutapi.SpoutManager;
import org.getspout.spoutapi.player.SpoutPlayer;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
@@ -27,6 +24,7 @@ import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.StringUtils;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.skills.SkillUtils;
import com.gmail.nossr50.util.spout.SpoutUtils;
public class RepairManager extends SkillManager {
public RepairManager(McMMOPlayer mcMMOPlayer) {
@@ -45,16 +43,8 @@ public class RepairManager extends SkillManager {
return;
}
if (mcMMO.spoutEnabled) {
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
if (spoutPlayer.isSpoutCraftEnabled()) {
String[] spoutMessages = Repair.getSpoutAnvilMessages(anvilId);
spoutPlayer.sendNotification(spoutMessages[0], spoutMessages[1], Material.getMaterial(anvilId));
}
else {
player.sendMessage(Repair.getAnvilMessage(anvilId));
}
if (mcMMO.isSpoutEnabled()) {
SpoutUtils.sendRepairNotifications(player, anvilId);
}
else {
player.sendMessage(Repair.getAnvilMessage(anvilId));
@@ -219,11 +209,11 @@ public class RepairManager extends SkillManager {
mcMMOPlayer.actualizeLastAnvilUse(anvilId);
if (anvilId == Repair.repairAnvilId) {
player.sendMessage(ChatColor.GREEN + "Right-click again to confirm " + ChatColor.GOLD + "Repair" + ChatColor.GREEN + ". Left-click to cancel."); //TODO Locale
player.sendMessage(LocaleLoader.getString("Skills.ConfirmOrCancel", LocaleLoader.getString("Repair.Pretty.Name")));
}
if (anvilId == Repair.salvageAnvilId) {
player.sendMessage(ChatColor.GREEN + "Right-click again to confirm " + ChatColor.GOLD + "Salvage" + ChatColor.GREEN + ". Left-click to cancel."); //TODO Locale
player.sendMessage(LocaleLoader.getString("Skills.ConfirmOrCancel", LocaleLoader.getString("Salvage.Pretty.Name")));
}
return false;
}

View File

@@ -199,7 +199,7 @@ public class TamingManager extends SkillManager {
}
if (Permissions.renamePets(player)) {
entity.setCustomName(player.getName() + "\'s " + StringUtils.getPrettyEntityTypeString(entity.getType())); //TODO Localize, perhaps in a different language it makes more sense to switch this around
entity.setCustomName(LocaleLoader.getString("Taming.Summon.Name.Format", player.getName(), StringUtils.getPrettyEntityTypeString(entity.getType())));
entity.setCustomNameVisible(true);
}

View File

@@ -19,59 +19,7 @@ public final class BlockUtils {
* @return true if the block awards XP, false otherwise
*/
public static boolean shouldBeWatched(BlockState blockState) {
switch (blockState.getType()) {
case BROWN_MUSHROOM:
case CACTUS:
case CLAY:
case COAL_ORE:
case DIAMOND_ORE:
case DIRT:
case ENDER_STONE:
case GLOWING_REDSTONE_ORE:
case GLOWSTONE:
case GOLD_ORE:
case GRASS:
case GRAVEL:
case HUGE_MUSHROOM_1:
case HUGE_MUSHROOM_2:
case IRON_ORE:
case LAPIS_ORE:
case LOG:
case MELON_BLOCK:
case MOSSY_COBBLESTONE:
case MYCEL:
case NETHERRACK:
case OBSIDIAN:
case PUMPKIN:
case QUARTZ_ORE:
case RED_MUSHROOM:
case RED_ROSE:
case REDSTONE_ORE:
case SAND:
case SANDSTONE:
case SOUL_SAND:
case STONE:
case SUGAR_CANE_BLOCK:
case VINE:
case WATER_LILY:
case YELLOW_FLOWER:
case EMERALD_ORE:
return true;
case CARROT:
case CROPS:
case POTATO:
return blockState.getRawData() == CropState.RIPE.getData();
case NETHER_WARTS:
return ((NetherWarts) blockState.getData()).getState() == NetherWartsState.RIPE;
case COCOA:
return ((CocoaPlant) blockState.getData()).getSize() == CocoaPlantSize.LARGE;
default:
return ModUtils.getCustomBlock(blockState) != null;
}
return affectedByGigaDrillBreaker(blockState) || affectedByGreenTerra(blockState) || affectedBySuperBreaker(blockState) || isLog(blockState);
}
/**
@@ -111,17 +59,7 @@ public final class BlockUtils {
return false;
default:
int blockId = blockState.getTypeId();
if (blockId == Config.getInstance().getRepairAnvilId() || blockId == Config.getInstance().getSalvageAnvilId()) {
return false;
}
if (ModUtils.isCustomAbilityBlock(blockState)) {
return false;
}
return true;
return !isMcMMOAnvil(blockState) && !ModUtils.isCustomAbilityBlock(blockState);
}
}
@@ -214,26 +152,17 @@ public final class BlockUtils {
*/
public static Boolean affectedBySuperBreaker(BlockState blockState) {
switch (blockState.getType()) {
case COAL_ORE:
case DIAMOND_ORE:
case ENDER_STONE:
case GLOWING_REDSTONE_ORE:
case GLOWSTONE:
case GOLD_ORE:
case IRON_ORE:
case LAPIS_ORE:
case MOSSY_COBBLESTONE:
case NETHERRACK:
case OBSIDIAN:
case QUARTZ_ORE:
case REDSTONE_ORE:
case SANDSTONE:
case STONE:
case EMERALD_ORE:
return true;
default:
return ModUtils.isCustomMiningBlock(blockState);
return isOre(blockState) || ModUtils.isCustomMiningBlock(blockState);
}
}
@@ -266,16 +195,7 @@ public final class BlockUtils {
* @return true if the block should affected by Tree Feller, false otherwise
*/
public static boolean affectedByTreeFeller(BlockState blockState) {
switch (blockState.getType()) {
case LOG:
case LEAVES:
case HUGE_MUSHROOM_1:
case HUGE_MUSHROOM_2:
return true;
default:
return ModUtils.isCustomWoodcuttingBlock(blockState);
}
return isLog(blockState) || isLeaves(blockState);
}
/**
@@ -379,4 +299,16 @@ public final class BlockUtils {
return false;
}
}
/**
* Determine if a given block is an mcMMO anvil
*
* @param blockState The {@link BlockState} of the block to check
* @return true if the block is an mcMMO anvil, false otherwise
*/
private static boolean isMcMMOAnvil(BlockState blockState) {
int blockId = blockState.getTypeId();
return blockId == Config.getInstance().getRepairAnvilId() || blockId == Config.getInstance().getSalvageAnvilId();
}
}

View File

@@ -58,7 +58,7 @@ public final class ChimaeraWing {
}
if (Config.getInstance().getChimaeraCooldown() > 0 && !SkillUtils.cooldownOver(lastTeleport * Misc.TIME_CONVERSION_FACTOR, Config.getInstance().getChimaeraCooldown(), player)) {
player.sendMessage(ChatColor.RED + "You need to wait before you can use this again! " + ChatColor.YELLOW + "(" + SkillUtils.calculateTimeLeft(lastTeleport * Misc.TIME_CONVERSION_FACTOR, Config.getInstance().getChimaeraCooldown(), player) + ")"); //TODO Locale!
player.sendMessage(LocaleLoader.getString("Item.Generic.Wait", SkillUtils.calculateTimeLeft(lastTeleport * Misc.TIME_CONVERSION_FACTOR, Config.getInstance().getChimaeraCooldown(), player)));
return;
}
@@ -70,7 +70,7 @@ public final class ChimaeraWing {
}
if (amount < Config.getInstance().getChimaeraUseCost()) {
player.sendMessage(LocaleLoader.getString("Skills.NeedMore", "Chimaera Wings")); //TODO Locale!
player.sendMessage(LocaleLoader.getString("Skills.NeedMore", LocaleLoader.getString("Item.ChimaeraWing.Name")));
return;
}
@@ -90,7 +90,7 @@ public final class ChimaeraWing {
long warmup = Config.getInstance().getChimaeraWarmup();
if (warmup > 0) {
player.sendMessage(ChatColor.GRAY + "Commencing teleport in " + ChatColor.GOLD + "(" + warmup + ")" + ChatColor.GRAY + " seconds, please stand still..."); //TODO Locale!
player.sendMessage(LocaleLoader.getString("Teleport.Commencing", warmup));
new ChimaeraWingWarmup(mcMMOPlayer).runTaskLater(mcMMO.p, 20 * warmup);
}
else {
@@ -128,11 +128,11 @@ public final class ChimaeraWing {
ItemStack itemStack = new ItemStack(ingredient, amount);
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(ChatColor.GOLD + "Chimaera Wing"); //TODO Locale!
itemMeta.setDisplayName(ChatColor.GOLD + LocaleLoader.getString("Item.ChimaeraWing.Name"));
List<String> itemLore = new ArrayList<String>();
itemLore.add("mcMMO Item");
itemLore.add(ChatColor.GRAY + "Teleports you to your bed."); //TODO Locale!
itemLore.add(LocaleLoader.getString("Item.ChimaeraWing.Lore"));
itemMeta.setLore(itemLore);
itemStack.setItemMeta(itemMeta);

View File

@@ -1,10 +1,7 @@
package com.gmail.nossr50.util;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@@ -14,20 +11,17 @@ import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.mods.CustomArmorConfig;
import com.gmail.nossr50.config.mods.CustomToolConfig;
import com.gmail.nossr50.config.party.ItemWeightConfig;
import com.gmail.nossr50.locale.LocaleLoader;
public class ItemUtils {
private static Config configInstance = Config.getInstance();
private static boolean customToolsEnabled = configInstance.getToolModsEnabled();
private static boolean customArmorEnabled = configInstance.getArmorModsEnabled();
/**
* Checks if the item is a sword.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a sword, false otherwise
*/
public static boolean isSword(ItemStack is) {
switch (is.getType()) {
public static boolean isSword(ItemStack item) {
switch (item.getType()) {
case DIAMOND_SWORD:
case GOLD_SWORD:
case IRON_SWORD:
@@ -36,26 +30,18 @@ public class ItemUtils {
return true;
default:
if (customToolsEnabled && CustomToolConfig.getInstance().customSwordIDs.contains(is.getTypeId())) {
return true;
}
else if (mcMMO.spoutEnabled && SpoutToolsAPI.spoutSwords.contains(is)) {
return true;
}
else {
return false;
}
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customSwordIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutSwords.contains(item));
}
}
/**
* Checks if the item is a hoe.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a hoe, false otherwise
*/
public static boolean isHoe(ItemStack is) {
switch (is.getType()) {
public static boolean isHoe(ItemStack item) {
switch (item.getType()) {
case DIAMOND_HOE:
case GOLD_HOE:
case IRON_HOE:
@@ -64,26 +50,18 @@ public class ItemUtils {
return true;
default:
if (customToolsEnabled && CustomToolConfig.getInstance().customHoeIDs.contains(is.getTypeId())) {
return true;
}
else if (mcMMO.spoutEnabled && SpoutToolsAPI.spoutHoes.contains(is)) {
return true;
}
else {
return false;
}
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customHoeIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutHoes.contains(item));
}
}
/**
* Checks if the item is a shovel.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a shovel, false otherwise
*/
public static boolean isShovel(ItemStack is) {
switch (is.getType()) {
public static boolean isShovel(ItemStack item) {
switch (item.getType()) {
case DIAMOND_SPADE:
case GOLD_SPADE:
case IRON_SPADE:
@@ -92,26 +70,18 @@ public class ItemUtils {
return true;
default:
if (customToolsEnabled && CustomToolConfig.getInstance().customShovelIDs.contains(is.getTypeId())) {
return true;
}
else if (mcMMO.spoutEnabled && SpoutToolsAPI.spoutShovels.contains(is)) {
return true;
}
else {
return false;
}
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customShovelIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutShovels.contains(item));
}
}
/**
* Checks if the item is an axe.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is an axe, false otherwise
*/
public static boolean isAxe(ItemStack is) {
switch (is.getType()) {
public static boolean isAxe(ItemStack item) {
switch (item.getType()) {
case DIAMOND_AXE:
case GOLD_AXE:
case IRON_AXE:
@@ -120,26 +90,18 @@ public class ItemUtils {
return true;
default:
if (customToolsEnabled && CustomToolConfig.getInstance().customAxeIDs.contains(is.getTypeId())) {
return true;
}
else if (mcMMO.spoutEnabled && SpoutToolsAPI.spoutAxes.contains(is)) {
return true;
}
else {
return false;
}
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customAxeIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutAxes.contains(item));
}
}
/**
* Checks if the item is a pickaxe.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a pickaxe, false otherwise
*/
public static boolean isPickaxe(ItemStack is) {
switch (is.getType()) {
public static boolean isPickaxe(ItemStack item) {
switch (item.getType()) {
case DIAMOND_PICKAXE:
case GOLD_PICKAXE:
case IRON_PICKAXE:
@@ -148,138 +110,118 @@ public class ItemUtils {
return true;
default:
if (customToolsEnabled && CustomToolConfig.getInstance().customPickaxeIDs.contains(is.getTypeId())) {
return true;
}
else if (mcMMO.spoutEnabled && SpoutToolsAPI.spoutPickaxes.contains(is)) {
return true;
}
else {
return false;
}
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customPickaxeIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutPickaxes.contains(item));
}
}
/**
* Checks if the item is a helmet.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a helmet, false otherwise
*/
public static boolean isHelmet(ItemStack is) {
switch (is.getType()) {
public static boolean isHelmet(ItemStack item) {
switch (item.getType()) {
case DIAMOND_HELMET:
case GOLD_HELMET:
case IRON_HELMET:
case CHAINMAIL_HELMET:
case LEATHER_HELMET:
return true;
default:
if (customArmorEnabled && CustomArmorConfig.getInstance().customHelmetIDs.contains(is.getTypeId())) {
return true;
}
return false;
return Config.getInstance().getArmorModsEnabled() && CustomArmorConfig.getInstance().customHelmetIDs.contains(item.getTypeId());
}
}
/**
* Checks if the item is a chestplate.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a chestplate, false otherwise
*/
public static boolean isChestplate(ItemStack is) {
switch (is.getType()) {
public static boolean isChestplate(ItemStack item) {
switch (item.getType()) {
case DIAMOND_CHESTPLATE:
case GOLD_CHESTPLATE:
case IRON_CHESTPLATE:
case CHAINMAIL_CHESTPLATE:
case LEATHER_CHESTPLATE:
return true;
default:
if (customArmorEnabled && CustomArmorConfig.getInstance().customChestplateIDs.contains(is.getTypeId())) {
return true;
}
return false;
return Config.getInstance().getArmorModsEnabled() && CustomArmorConfig.getInstance().customChestplateIDs.contains(item.getTypeId());
}
}
/**
* Checks if the item is a pair of pants.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a pair of pants, false otherwise
*/
public static boolean isLeggings(ItemStack is) {
switch (is.getType()) {
public static boolean isLeggings(ItemStack item) {
switch (item.getType()) {
case DIAMOND_LEGGINGS:
case GOLD_LEGGINGS:
case IRON_LEGGINGS:
case CHAINMAIL_LEGGINGS:
case LEATHER_LEGGINGS:
return true;
default:
if (customArmorEnabled && CustomArmorConfig.getInstance().customLeggingIDs.contains(is.getTypeId())) {
return true;
}
return false;
return Config.getInstance().getArmorModsEnabled() && CustomArmorConfig.getInstance().customLeggingIDs.contains(item.getTypeId());
}
}
/**
* Checks if the item is a pair of boots.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a pair of boots, false otherwise
*/
public static boolean isBoots(ItemStack is) {
switch (is.getType()) {
public static boolean isBoots(ItemStack item) {
switch (item.getType()) {
case DIAMOND_BOOTS:
case GOLD_BOOTS:
case IRON_BOOTS:
case CHAINMAIL_BOOTS:
case LEATHER_BOOTS:
return true;
default:
if (customArmorEnabled && CustomArmorConfig.getInstance().customBootIDs.contains(is.getTypeId())) {
return true;
}
return false;
return Config.getInstance().getArmorModsEnabled() && CustomArmorConfig.getInstance().customBootIDs.contains(item.getTypeId());
}
}
/**
* Checks to see if an item is a wearable armor piece.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is armor, false otherwise
*/
public static boolean isArmor(ItemStack is) {
return isHelmet(is) || isChestplate(is) || isLeggings(is) || isBoots(is);
public static boolean isArmor(ItemStack item) {
return isHelmet(item) || isChestplate(item) || isLeggings(item) || isBoots(item);
}
/**
* Checks to see if an item is a wearable armor piece.
* Checks to see if an item is a wearable *vanilla* armor piece.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is armor, false otherwise
*/
public static boolean isMinecraftArmor(ItemStack is) {
return isLeatherArmor(is) || isGoldArmor(is) || isIronArmor(is) || isDiamondArmor(is);
public static boolean isMinecraftArmor(ItemStack item) {
return isLeatherArmor(item) || isGoldArmor(item) || isIronArmor(item) || isDiamondArmor(item) || isChainmailArmor(item);
}
/**
* Checks to see if an item is a leather armor piece.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is leather armor, false otherwise
*/
public static boolean isLeatherArmor(ItemStack is) {
switch (is.getType()) {
public static boolean isLeatherArmor(ItemStack item) {
switch (item.getType()) {
case LEATHER_BOOTS:
case LEATHER_CHESTPLATE:
case LEATHER_HELMET:
@@ -294,11 +236,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a gold armor piece.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is gold armor, false otherwise
*/
public static boolean isGoldArmor(ItemStack is) {
switch (is.getType()) {
public static boolean isGoldArmor(ItemStack item) {
switch (item.getType()) {
case GOLD_BOOTS:
case GOLD_CHESTPLATE:
case GOLD_HELMET:
@@ -313,11 +255,11 @@ public class ItemUtils {
/**
* Checks to see if an item is an iron armor piece.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is iron armor, false otherwise
*/
public static boolean isIronArmor(ItemStack is) {
switch (is.getType()) {
public static boolean isIronArmor(ItemStack item) {
switch (item.getType()) {
case IRON_BOOTS:
case IRON_CHESTPLATE:
case IRON_HELMET:
@@ -332,11 +274,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a diamond armor piece.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is diamond armor, false otherwise
*/
public static boolean isDiamondArmor(ItemStack is) {
switch (is.getType()) {
public static boolean isDiamondArmor(ItemStack item) {
switch (item.getType()) {
case DIAMOND_BOOTS:
case DIAMOND_CHESTPLATE:
case DIAMOND_HELMET:
@@ -349,23 +291,42 @@ public class ItemUtils {
}
/**
* Checks to see if an item is a tool.
* Checks to see if an item is a chainmail armor piece.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is chainmail armor, false otherwise
*/
public static boolean isChainmailArmor(ItemStack item) {
switch (item.getType()) {
case CHAINMAIL_BOOTS:
case CHAINMAIL_CHESTPLATE:
case CHAINMAIL_HELMET:
case CHAINMAIL_LEGGINGS:
return true;
default:
return false;
}
}
/**
* Checks to see if an item is a *vanilla* tool.
*
* @param item Item to check
* @return true if the item is a tool, false otherwise
*/
public static boolean isMinecraftTool(ItemStack is) {
return isStoneTool(is) || isWoodTool(is) || isGoldTool(is) || isIronTool(is) || isDiamondTool(is) || isStringTool(is);
public static boolean isMinecraftTool(ItemStack item) {
return isStoneTool(item) || isWoodTool(item) || isGoldTool(item) || isIronTool(item) || isDiamondTool(item) || isStringTool(item);
}
/**
* Checks to see if an item is a stone tool.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a stone tool, false otherwise
*/
public static boolean isStoneTool(ItemStack is) {
switch (is.getType()) {
public static boolean isStoneTool(ItemStack item) {
switch (item.getType()) {
case STONE_AXE:
case STONE_HOE:
case STONE_PICKAXE:
@@ -381,11 +342,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a wooden tool.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a wooden tool, false otherwise
*/
public static boolean isWoodTool(ItemStack is) {
switch (is.getType()) {
public static boolean isWoodTool(ItemStack item) {
switch (item.getType()) {
case WOOD_AXE:
case WOOD_HOE:
case WOOD_PICKAXE:
@@ -401,11 +362,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a string tool.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a string tool, false otherwise
*/
public static boolean isStringTool(ItemStack is) {
switch (is.getType()) {
public static boolean isStringTool(ItemStack item) {
switch (item.getType()) {
case BOW:
case CARROT_STICK:
case FISHING_ROD:
@@ -419,11 +380,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a gold tool.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a stone tool, false otherwise
*/
public static boolean isGoldTool(ItemStack is) {
switch (is.getType()) {
public static boolean isGoldTool(ItemStack item) {
switch (item.getType()) {
case GOLD_AXE:
case GOLD_HOE:
case GOLD_PICKAXE:
@@ -439,11 +400,11 @@ public class ItemUtils {
/**
* Checks to see if an item is an iron tool.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is an iron tool, false otherwise
*/
public static boolean isIronTool(ItemStack is) {
switch (is.getType()) {
public static boolean isIronTool(ItemStack item) {
switch (item.getType()) {
case BUCKET:
case FLINT_AND_STEEL:
case IRON_AXE:
@@ -462,11 +423,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a diamond tool.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a diamond tool, false otherwise
*/
public static boolean isDiamondTool(ItemStack is) {
switch (is.getType()) {
public static boolean isDiamondTool(ItemStack item) {
switch (item.getType()) {
case DIAMOND_AXE:
case DIAMOND_HOE:
case DIAMOND_PICKAXE:
@@ -482,16 +443,25 @@ public class ItemUtils {
/**
* Checks to see if an item is enchantable.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is enchantable, false otherwise
*/
public static boolean isEnchantable(ItemStack is) {
Material type = is.getType();
return isArmor(is) || isSword(is) || isAxe(is) || isShovel(is) || isPickaxe(is) || type == Material.SHEARS || type == Material.FISHING_ROD || type == Material.CARROT_STICK || type == Material.FLINT_AND_STEEL || type == Material.BOW;
public static boolean isEnchantable(ItemStack item) {
switch (item.getType()) {
case SHEARS:
case FISHING_ROD:
case CARROT_STICK:
case BOW:
case FLINT_AND_STEEL:
return true;
default:
return isArmor(item) || isSword(item) || isAxe(item) || isShovel(item) || isPickaxe(item);
}
}
public static boolean isSmeltable(ItemStack itemStack) {
switch (itemStack.getType()) {
public static boolean isSmeltable(ItemStack item) {
switch (item.getType()) {
case COAL_ORE:
case DIAMOND_ORE:
case GLOWING_REDSTONE_ORE:
@@ -500,6 +470,7 @@ public class ItemUtils {
case LAPIS_ORE:
case REDSTONE_ORE:
case EMERALD_ORE:
case QUARTZ_ORE:
return true;
default:
@@ -507,22 +478,19 @@ public class ItemUtils {
}
}
public static boolean isSmelted(ItemStack itemStack) {
switch (itemStack.getType()) {
public static boolean isSmelted(ItemStack item) {
switch (item.getType()) {
case COAL:
case DIAMOND:
case REDSTONE:
case GOLD_INGOT:
case IRON_INGOT:
case EMERALD:
case QUARTZ:
return true;
case INK_SACK:
if (itemStack.getData().getData() == DyeColor.BLUE.getDyeData()) {
return true;
}
return false;
return item.getData().getData() == DyeColor.BLUE.getDyeData();
default:
return false;
@@ -535,18 +503,18 @@ public class ItemUtils {
* @param item Item that will get shared
* @return True if the item can be shared.
*/
public static boolean isShareable(ItemStack is) {
return isMiningDrop(is) || isWoodcuttingDrop(is) || isMobDrop(is) || isHerbalismDrop(is) || isMiscDrop(is);
public static boolean isShareable(ItemStack item) {
return isMiningDrop(item) || isWoodcuttingDrop(item) || isMobDrop(item) || isHerbalismDrop(item) || isMiscDrop(item);
}
/**
* Checks to see if an item is a mining drop.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a mining drop, false otherwise
*/
public static boolean isMiningDrop(ItemStack is) {
switch (is.getType()) {
public static boolean isMiningDrop(ItemStack item) {
switch (item.getType()) {
case COAL:
case COAL_ORE:
case DIAMOND:
@@ -556,17 +524,15 @@ public class ItemUtils {
case GOLD_ORE:
case IRON_ORE:
case LAPIS_ORE:
case REDSTONE_ORE:
case REDSTONE_ORE: // Should we also have Glowing Redstone Ore here?
case REDSTONE:
case GLOWSTONE_DUST:
case GLOWSTONE_DUST: // Should we also have Glowstone here?
case QUARTZ:
case QUARTZ_ORE:
return true;
case INK_SACK:
if (is.getData().getData() == DyeColor.BLUE.getDyeData()) {
return true;
}
return false;
return item.getData().getData() == DyeColor.BLUE.getDyeData();
default:
return false;
@@ -576,11 +542,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a herbalism drop.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a herbalism drop, false otherwise
*/
public static boolean isHerbalismDrop(ItemStack is) {
switch (is.getType()) {
public static boolean isHerbalismDrop(ItemStack item) {
switch (item.getType()) {
case WHEAT:
case SEEDS:
case CARROT_ITEM:
@@ -601,7 +567,7 @@ public class ItemUtils {
return true;
case INK_SACK:
return is.getData().getData() == DyeColor.BROWN.getDyeData();
return item.getData().getData() == DyeColor.BROWN.getDyeData();
default:
return false;
@@ -611,11 +577,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a mob drop.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a mob drop, false otherwise
*/
public static boolean isMobDrop(ItemStack is) {
switch (is.getType()) {
public static boolean isMobDrop(ItemStack item) {
switch (item.getType()) {
case STRING:
case FEATHER:
case RAW_CHICKEN:
@@ -626,7 +592,7 @@ public class ItemUtils {
case PORK:
case GRILLED_PORK:
case WOOL:
case RED_ROSE:
case RED_ROSE: // Not sure we should include this, as it will also trigger from herbalism
case IRON_INGOT:
case SNOW_BALL:
case BLAZE_ROD:
@@ -639,7 +605,7 @@ public class ItemUtils {
case ARROW:
case SLIME_BALL:
case NETHER_STAR:
case COAL:
case COAL: // Not sure we should include this, as it will also trigger when mining
case ROTTEN_FLESH:
case GOLD_NUGGET:
case EGG:
@@ -653,11 +619,11 @@ public class ItemUtils {
/**
* Checks to see if an item is a woodcutting drop.
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a woodcutting drop, false otherwise
*/
public static boolean isWoodcuttingDrop(ItemStack is) {
switch (is.getType()) {
public static boolean isWoodcuttingDrop(ItemStack item) {
switch (item.getType()) {
case LOG:
case LEAVES:
case SAPLING:
@@ -672,38 +638,28 @@ public class ItemUtils {
/**
* Checks to see if an item is a miscellaneous drop. These items are read from the config file
*
* @param is Item to check
* @param item Item to check
* @return true if the item is a miscellaneous drop, false otherwise
*/
public static boolean isMiscDrop(ItemStack is) {
return ItemWeightConfig.getInstance().getMiscItems().contains(is.getType());
public static boolean isMiscDrop(ItemStack item) {
return ItemWeightConfig.getInstance().getMiscItems().contains(item.getType());
}
public static boolean isMcMMOItem(ItemStack is) {
if (!is.hasItemMeta()) {
public static boolean isMcMMOItem(ItemStack item) {
if (!item.hasItemMeta()) {
return false;
}
ItemMeta itemMeta = is.getItemMeta();
if (itemMeta.hasLore()) {
List<String> itemLore = itemMeta.getLore();
if (itemLore.contains("mcMMO Item")) {
return true;
}
}
return false;
ItemMeta itemMeta = item.getItemMeta();
return itemMeta.hasLore() && itemMeta.getLore().contains("mcMMO Item");
}
public static boolean isChimaeraWing(ItemStack is) {
if (!isMcMMOItem(is)) {
public static boolean isChimaeraWing(ItemStack item) {
if (!isMcMMOItem(item)) {
return false;
}
ItemMeta itemMeta = is.getItemMeta();
if (itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals(ChatColor.GOLD + "Chimaera Wing")) { //TODO Get localized name
return true;
}
return false;
ItemMeta itemMeta = item.getItemMeta();
return itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals(ChatColor.GOLD + LocaleLoader.getString("Item.ChimaeraWing.Name"));
}
}

View File

@@ -1,17 +1,17 @@
package com.gmail.nossr50.util;
import java.util.Collection;
import java.util.Random;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
import com.gmail.nossr50.events.items.McMMOItemSpawnEvent;
@@ -20,7 +20,6 @@ import com.gmail.nossr50.util.spout.SpoutUtils;
public final class Misc {
private static Random random = new Random();
public static boolean isSpawnerXPEnabled = Config.getInstance().getExperienceGainsMobspawnersEnabled();
public static final int PLAYER_RESPAWN_COOLDOWN_SECONDS = 5;
public static final int TIME_CONVERSION_FACTOR = 1000;
public static final double SKILL_MESSAGE_MAX_SENDING_DISTANCE = 10.0;
@@ -32,6 +31,7 @@ public final class Misc {
public static final float POP_VOLUME = 0.2F;
public static final float BAT_VOLUME = 1.0F;
public static final float BAT_PITCH = 0.6F;
public static final float GHAST_VOLUME = 1.0F;
private Misc() {};
@@ -43,8 +43,12 @@ public final class Misc {
return ((getRandom().nextFloat() - getRandom().nextFloat()) * 0.7F + 1.0F) * 2.0F;
}
public static float getGhastPitch() {
return (getRandom().nextFloat() - getRandom().nextFloat()) * 0.2F + 1.0F;
}
public static boolean isNPCEntity(Entity entity) {
return (entity == null || entity.hasMetadata("NPC") || (mcMMO.combatTagEnabled && entity instanceof HumanEntity && ((HumanEntity) entity).getName().contains("PvpLogger")));
return (entity == null || entity.hasMetadata("NPC") || (mcMMO.isCombatTagEnabled() && entity instanceof HumanEntity && ((HumanEntity) entity).getName().contains("PvpLogger")));
}
/**
@@ -91,11 +95,13 @@ public final class Misc {
return false;
}
if (first.distanceSquared(second) < (maxDistance * maxDistance)) {
return true;
}
return first.distanceSquared(second) < (maxDistance * maxDistance);
}
return false;
public static void dropItems(Location location, Collection<ItemStack> drops) {
for (ItemStack drop : drops) {
dropItem(location, drop);
}
}
/**
@@ -148,7 +154,6 @@ public final class Misc {
* @param itemStack The item to drop
*/
public static void dropItem(Location location, ItemStack itemStack) {
if (itemStack.getType() == Material.AIR) {
return;
}
@@ -161,12 +166,7 @@ public final class Misc {
return;
}
Item newItem = location.getWorld().dropItemNaturally(location, itemStack);
ItemStack cloned = itemStack.clone();
cloned.setAmount(newItem.getItemStack().getAmount());
newItem.setItemStack(cloned);
location.getWorld().dropItemNaturally(location, itemStack);
}
public static void profileCleanup(String playerName) {
@@ -185,7 +185,7 @@ public final class Misc {
if (player.isOnline()) {
UserManager.addUser(player);
if (mcMMO.spoutEnabled) {
if (mcMMO.isSpoutEnabled()) {
SpoutUtils.reloadSpoutPlayer(player);
}
}
@@ -193,8 +193,12 @@ public final class Misc {
}
public static void resendChunkRadiusAt(Player player, int radius) {
for (int x = player.getLocation().getChunk().getX() - radius; x < player.getLocation().getChunk().getX() + radius; x++) {
for (int z = player.getLocation().getChunk().getZ() - radius; z < player.getLocation().getChunk().getZ() + radius; z++) {
Chunk chunk = player.getLocation().getChunk();
int chunkX = chunk.getX();
int chunkZ = chunk.getZ();
for (int x = chunkX - radius; x < chunkX + radius; x++) {
for (int z = chunkZ - radius; z < chunkZ + radius; z++) {
player.getWorld().refreshChunk(x, z);
}
}

View File

@@ -8,6 +8,7 @@ import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.metadata.FixedMetadataValue;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.MobHealthbarType;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
@@ -45,11 +46,23 @@ public final class MobHealthbarUtils {
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
if (profile.getMobHealthbarType() == null) {
profile.setMobHealthbarType(Config.getInstance().getMobHealthbarDefault());
}
if (profile.getMobHealthbarType() == MobHealthbarType.DISABLED) {
return;
}
String oldName = target.getCustomName();
if (oldName == null) {
oldName = "";
}
else if (oldName.equalsIgnoreCase(AdvancedConfig.getInstance().getKrakenName())) {
return;
}
boolean oldNameVisible = target.isCustomNameVisible();
String newName = createHealthDisplay(profile, target, damage);
@@ -59,10 +72,6 @@ public final class MobHealthbarUtils {
int displayTime = Config.getInstance().getMobHealthbarTime();
if (displayTime != -1) {
if (oldName == null) {
oldName = "";
}
boolean updateName = !ChatColor.stripColor(oldName).equalsIgnoreCase(ChatColor.stripColor(newName));
if (updateName) {
@@ -140,5 +149,4 @@ public final class MobHealthbarUtils {
return healthbar;
}
}

View File

@@ -27,6 +27,7 @@ public final class Permissions {
/* BYPASS */
public static boolean hardcoreBypass(Permissible permissible) { return permissible.hasPermission("mcmmo.bypass.hardcoremode"); }
public static boolean arcaneBypass(Permissible permissible) { return permissible.hasPermission("mcmmo.bypass.arcanebypass"); }
public static boolean krakenBypass(Permissible permissible) { return permissible.hasPermission("mcmmo.bypass.kraken"); }
/* CHAT */
public static boolean partyChat(Permissible permissible) { return permissible.hasPermission("mcmmo.chat.partychat"); }
@@ -49,6 +50,9 @@ public final class Permissions {
public static boolean inspectFar(Permissible permissible) { return (permissible.hasPermission("mcmmo.commands.inspect.far")); }
public static boolean inspectOffline(Permissible permissible) { return (permissible.hasPermission("mcmmo.commands.inspect.offline")); }
public static boolean kraken(Permissible permissible) { return permissible.hasPermission("mcmmo.commands.kraken"); }
public static boolean krakenOthers(Permissible permissible) { return permissible.hasPermission("mcmmo.commands.kraken.others"); }
public static boolean mcability(Permissible permissible) { return (permissible.hasPermission("mcmmo.commands.mcability")); }
public static boolean mcabilityOthers(Permissible permissible) { return (permissible.hasPermission("mcmmo.commands.mcability.others")); }
@@ -142,6 +146,7 @@ public final class Permissions {
/* FISHING */
public static boolean fishermansDiet(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.fishing.fishermansdiet"); }
public static boolean fishingTreasureHunter(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.fishing.treasures"); }
public static boolean iceFishing(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.fishing.icefishing"); }
public static boolean magicHunter(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.fishing.magic"); }
public static boolean masterAngler(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.fishing.masterangler"); }
public static boolean shake(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.fishing.shakemob"); }

View File

@@ -6,11 +6,13 @@ import java.util.List;
import org.bukkit.command.PluginCommand;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.commands.KrakenCommand;
import com.gmail.nossr50.commands.McabilityCommand;
import com.gmail.nossr50.commands.McgodCommand;
import com.gmail.nossr50.commands.McmmoCommand;
import com.gmail.nossr50.commands.McnotifyCommand;
import com.gmail.nossr50.commands.McrefreshCommand;
import com.gmail.nossr50.commands.McscoreboardCommand;
import com.gmail.nossr50.commands.MobhealthCommand;
import com.gmail.nossr50.commands.XprateCommand;
import com.gmail.nossr50.commands.chat.AdminChatCommand;
@@ -56,7 +58,7 @@ public final class CommandRegistrationManager {
private static String permissionsMessage = LocaleLoader.getString("mcMMO.NoPermission");
public static void registerSkillCommands() {
private static void registerSkillCommands() {
for (SkillType skill : SkillType.values()) {
String commandName = skill.toString().toLowerCase();
String localizedName = SkillUtils.getSkillName(skill).toLowerCase();
@@ -129,7 +131,7 @@ public final class CommandRegistrationManager {
}
}
public static void registerAddlevelsCommand() {
private static void registerAddlevelsCommand() {
PluginCommand command = mcMMO.p.getCommand("addlevels");
command.setDescription(LocaleLoader.getString("Commands.Description.addlevels"));
command.setPermission("mcmmo.commands.addlevels;mcmmo.commands.addlevels.others");
@@ -138,7 +140,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new AddlevelsCommand());
}
public static void registerAddxpCommand() {
private static void registerAddxpCommand() {
PluginCommand command = mcMMO.p.getCommand("addxp");
command.setDescription(LocaleLoader.getString("Commands.Description.addxp"));
command.setPermission("mcmmo.commands.addxp;mcmmo.commands.addxp.others");
@@ -147,7 +149,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new AddxpCommand());
}
public static void registerMcgodCommand() {
private static void registerMcgodCommand() {
PluginCommand command = mcMMO.p.getCommand("mcgod");
command.setDescription(LocaleLoader.getString("Commands.Description.mcgod"));
command.setPermission("mcmmo.commands.mcgod;mcmmo.commands.mcgod.others");
@@ -156,7 +158,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new McgodCommand());
}
public static void registerMcrefreshCommand() {
private static void registerMcrefreshCommand() {
PluginCommand command = mcMMO.p.getCommand("mcrefresh");
command.setDescription(LocaleLoader.getString("Commands.Description.mcrefresh"));
command.setPermission("mcmmo.commands.mcrefresh;mcmmo.commands.mcrefresh.others");
@@ -165,7 +167,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new McrefreshCommand());
}
public static void registerMmoeditCommand() {
private static void registerMmoeditCommand() {
PluginCommand command = mcMMO.p.getCommand("mmoedit");
command.setDescription(LocaleLoader.getString("Commands.Description.mmoedit"));
command.setPermission("mcmmo.commands.mmoedit;mcmmo.commands.mmoedit.others");
@@ -174,7 +176,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new MmoeditCommand());
}
public static void registerSkillresetCommand() {
private static void registerSkillresetCommand() {
PluginCommand command = mcMMO.p.getCommand("skillreset");
command.setDescription(LocaleLoader.getString("Commands.Description.skillreset"));
command.setPermission("mcmmo.commands.skillreset;mcmmo.commands.skillreset.others"); // Only need the main ones, not the individual skill ones
@@ -183,7 +185,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new SkillresetCommand());
}
public static void registerXprateCommand() {
private static void registerXprateCommand() {
List<String> aliasList = new ArrayList<String>();
aliasList.add("mcxprate");
@@ -197,7 +199,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new XprateCommand());
}
public static void registerInspectCommand() {
private static void registerInspectCommand() {
PluginCommand command = mcMMO.p.getCommand("inspect");
command.setDescription(LocaleLoader.getString("Commands.Description.inspect"));
command.setPermission("mcmmo.commands.inspect;mcmmo.commands.inspect.far;mcmmo.commands.inspect.offline");
@@ -206,7 +208,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new InspectCommand());
}
public static void registerMcabilityCommand() {
private static void registerMcabilityCommand() {
PluginCommand command = mcMMO.p.getCommand("mcability");
command.setDescription(LocaleLoader.getString("Commands.Description.mcability"));
command.setPermission("mcmmo.commands.mcability;mcmmo.commands.mcability.others");
@@ -215,7 +217,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new McabilityCommand());
}
public static void registerMcmmoCommand() {
private static void registerMcmmoCommand() {
PluginCommand command = mcMMO.p.getCommand("mcmmo");
command.setDescription(LocaleLoader.getString("Commands.Description.mcmmo"));
command.setPermission("mcmmo.commands.mcmmo.description;mcmmo.commands.mcmmo.help");
@@ -225,7 +227,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new McmmoCommand());
}
public static void registerMcrankCommand() {
private static void registerMcrankCommand() {
PluginCommand command = mcMMO.p.getCommand("mcrank");
command.setDescription(LocaleLoader.getString("Commands.Description.mcrank"));
command.setPermission("mcmmo.commands.mcrank;mcmmo.commands.mcrank.others;mcmmo.commands.mcrank.others.far;mcmmo.commands.mcrank.others.offline");
@@ -234,7 +236,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new McrankCommand());
}
public static void registerMcstatsCommand() {
private static void registerMcstatsCommand() {
PluginCommand command = mcMMO.p.getCommand("mcstats");
command.setDescription(LocaleLoader.getString("Commands.Description.mcstats"));
command.setPermission("mcmmo.commands.mcstats");
@@ -243,7 +245,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new McstatsCommand());
}
public static void registerMctopCommand() {
private static void registerMctopCommand() {
PluginCommand command = mcMMO.p.getCommand("mctop");
command.setDescription(LocaleLoader.getString("Commands.Description.mctop"));
command.setPermission("mcmmo.commands.mctop"); // Only need the main one, not the individual skill ones
@@ -252,31 +254,34 @@ public final class CommandRegistrationManager {
command.setExecutor(new MctopCommand());
}
public static void registerMcpurgeCommand() {
private static void registerMcpurgeCommand() {
PluginCommand command = mcMMO.p.getCommand("mcpurge");
command.setDescription(LocaleLoader.getString("Commands.Description.mcpurge", Config.getInstance().getOldUsersCutoff()));
command.setPermission("mcmmo.commands.mcpurge");
command.setPermissionMessage(permissionsMessage);
command.setUsage(LocaleLoader.getString("Commands.Usage.0", "mcpurge"));
command.setExecutor(new McpurgeCommand());
}
public static void registerMcremoveCommand() {
private static void registerMcremoveCommand() {
PluginCommand command = mcMMO.p.getCommand("mcremove");
command.setDescription(LocaleLoader.getString("Commands.Description.mcremove"));
command.setPermission("mcmmo.commands.mcremove");
command.setPermissionMessage(permissionsMessage);
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mcremove", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"));
command.setExecutor(new McremoveCommand());
}
public static void registerMmoupdateCommand() {
private static void registerMmoupdateCommand() {
PluginCommand command = mcMMO.p.getCommand("mmoupdate");
command.setDescription(LocaleLoader.getString("Commands.Description.mmoupdate"));
command.setPermission("mcmmo.commands.mmoupdate");
command.setPermissionMessage(permissionsMessage);
command.setUsage(LocaleLoader.getString("Commands.Usage.0", "mmoupdate"));
command.setExecutor(new MmoupdateCommand());
}
public static void registerAdminChatCommand() {
private static void registerAdminChatCommand() {
PluginCommand command = mcMMO.p.getCommand("adminchat");
command.setDescription(LocaleLoader.getString("Commands.Description.adminchat"));
command.setPermission("mcmmo.chat.adminchat");
@@ -287,7 +292,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new AdminChatCommand());
}
public static void registerPartyChatCommand() {
private static void registerPartyChatCommand() {
PluginCommand command = mcMMO.p.getCommand("partychat");
command.setDescription(LocaleLoader.getString("Commands.Description.partychat"));
command.setPermission("mcmmo.chat.partychat;mcmmo.commands.party");
@@ -298,7 +303,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new PartyChatCommand());
}
public static void registerMchudCommand() {
private static void registerMchudCommand() {
PluginCommand command = mcMMO.p.getCommand("mchud");
command.setDescription(LocaleLoader.getString("Commands.Description.mchud"));
command.setPermission("mcmmo.commands.mchud");
@@ -307,7 +312,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new MchudCommand());
}
public static void registerXplockCommand() {
private static void registerXplockCommand() {
PluginCommand command = mcMMO.p.getCommand("xplock");
command.setDescription(LocaleLoader.getString("Commands.Description.xplock"));
command.setPermission("mcmmo.commands.xplock");
@@ -318,7 +323,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new XplockCommand());
}
public static void registerPartyCommand() {
private static void registerPartyCommand() {
PluginCommand command = mcMMO.p.getCommand("party");
command.setDescription(LocaleLoader.getString("Commands.Description.party"));
command.setPermission("mcmmo.commands.party;mcmmo.commands.party.accept;mcmmo.commands.party.create;mcmmo.commands.party.disband;" +
@@ -329,7 +334,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new PartyCommand());
}
public static void registerPtpCommand() {
private static void registerPtpCommand() {
PluginCommand command = mcMMO.p.getCommand("ptp");
command.setDescription(LocaleLoader.getString("Commands.Description.ptp"));
command.setPermission("mcmmo.commands.ptp"); // Only need the main one, not the individual ones for toggle/accept/acceptall
@@ -339,7 +344,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new PtpCommand());
}
public static void registerHardcoreCommand() {
private static void registerHardcoreCommand() {
PluginCommand command = mcMMO.p.getCommand("hardcore");
command.setDescription(LocaleLoader.getString("Commands.Description.hardcore"));
command.setPermission("mcmmo.commands.hardcore;mcmmo.commands.hardcore.toggle;mcmmo.commands.hardcore.modify");
@@ -349,7 +354,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new HardcoreCommand());
}
public static void registerVampirismCommand() {
private static void registerVampirismCommand() {
PluginCommand command = mcMMO.p.getCommand("vampirism");
command.setDescription(LocaleLoader.getString("Commands.Description.vampirism"));
command.setPermission("mcmmo.commands.vampirism;mcmmo.commands.vampirism.toggle;mcmmo.commands.vampirism.modify");
@@ -359,7 +364,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new VampirismCommand());
}
public static void registerMcnotifyCommand() {
private static void registerMcnotifyCommand() {
PluginCommand command = mcMMO.p.getCommand("mcnotify");
command.setDescription(LocaleLoader.getString("Commands.Description.mcnotify"));
command.setPermission("mcmmo.commands.mcnotify");
@@ -368,7 +373,7 @@ public final class CommandRegistrationManager {
command.setExecutor(new McnotifyCommand());
}
public static void registerMobhealthCommand() {
private static void registerMobhealthCommand() {
PluginCommand command = mcMMO.p.getCommand("mobhealth");
command.setDescription("Change the style of the mob healthbar"); //TODO: Localize
command.setPermission("mcmmo.commands.mobhealth");
@@ -376,4 +381,72 @@ public final class CommandRegistrationManager {
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mobhealth", "<DISABLED | HEARTS | BAR>"));
command.setExecutor(new MobhealthCommand());
}
private static void registerMcscoreboardCommand() {
PluginCommand command = mcMMO.p.getCommand("mcscoreboard");
command.setDescription("Change the current mcMMO scoreboard being displayed"); //TODO: Localize
command.setPermission("mcmmo.commands.mcscoreboard");
command.setPermissionMessage(permissionsMessage);
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mcscoreboard", "<CLEAR | RANK | STATS | TOP>"));
command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.3", "mcscoreboard", "top", "[" + LocaleLoader.getString("Commands.Usage.Skill") + "]", "[" + LocaleLoader.getString("Commands.Usage.Page") + "]"));
command.setExecutor(new McscoreboardCommand());
}
private static void registerKrakenCommand() {
PluginCommand command = mcMMO.p.getCommand("kraken");
command.setDescription("Unleash the kraken!"); //TODO: Localize
command.setPermission("mcmmo.commands.kraken;mcmmo.commands.kraken.others");
command.setPermissionMessage(permissionsMessage);
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "kraken", "[" + LocaleLoader.getString("Commands.Usage.Player") + "]"));
command.setExecutor(new KrakenCommand());
}
public static void registerCommands() {
// Generic Commands
registerKrakenCommand();
registerMcabilityCommand();
registerMcgodCommand();
registerMcmmoCommand();
registerMcnotifyCommand();
registerMcrefreshCommand();
registerMcscoreboardCommand();
registerMobhealthCommand();
registerXprateCommand();
// Chat Commands
registerPartyChatCommand();
registerAdminChatCommand();
// Database Commands
registerMcpurgeCommand();
registerMcremoveCommand();
registerMmoupdateCommand();
// Experience Commands
registerAddlevelsCommand();
registerAddxpCommand();
registerMmoeditCommand();
registerSkillresetCommand();
// Hardcore Commands
registerHardcoreCommand();
registerVampirismCommand();
// Party Commands
registerPartyCommand();
registerPtpCommand();
// Player Commands
registerInspectCommand();
registerMcrankCommand();
registerMcstatsCommand();
registerMctopCommand();
// Skill Commands
registerSkillCommands();
// Spout Commands
registerXplockCommand();
registerMchudCommand();
}
}

View File

@@ -14,15 +14,16 @@ import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.database.FlatfileDatabaseManager;
import com.gmail.nossr50.database.SQLDatabaseManager;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.database.PlayerStat;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.runnables.scoreboards.ScoreboardChangeTask;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.skills.SkillUtils;
public class ScoreboardManager {
@@ -32,6 +33,7 @@ public class ScoreboardManager {
private final static String PLAYER_STATS_HEADER = "mcMMO Stats";
private final static String PLAYER_RANK_HEADER = "mcMMO Rankings";
private final static String PLAYER_INSPECT_HEADER = "mcMMO Stats: ";
private final static String POWER_LEVEL_HEADER = "Power Level";
private final static List<String> SCOREBOARD_TASKS = new ArrayList<String>();
@@ -43,6 +45,32 @@ public class ScoreboardManager {
PLAYER_SCOREBOARDS.put(playerName, mcMMO.p.getServer().getScoreboardManager().getNewScoreboard());
}
public static void enablePowerLevelDisplay(Player player) {
if (!Config.getInstance().getPowerLevelsEnabled()) {
return;
}
Scoreboard scoreboard = player.getScoreboard();
Objective objective;
if (scoreboard.getObjective(DisplaySlot.BELOW_NAME) == null) {
objective = scoreboard.registerNewObjective(POWER_LEVEL_HEADER, "dummy");
objective.getScore(player).setScore(UserManager.getPlayer(player).getPowerLevel());
objective.setDisplaySlot(DisplaySlot.BELOW_NAME);
}
else {
objective = scoreboard.getObjective(POWER_LEVEL_HEADER);
if (scoreboard.getObjective(POWER_LEVEL_HEADER) != null) {
objective.getScore(player).setScore(UserManager.getPlayer(player).getPowerLevel());
}
else {
mcMMO.p.debug("Another plugin is using this scoreboard slot, so power levels cannot be enabled."); //TODO: Locale
}
}
}
public static void enablePlayerSkillScoreboard(McMMOPlayer mcMMOPlayer, SkillType skill) {
Player player = mcMMOPlayer.getPlayer();
Scoreboard oldScoreboard = player.getScoreboard();
@@ -140,10 +168,11 @@ public class ScoreboardManager {
private static void updatePlayerSkillScores(PlayerProfile profile, SkillType skill, Objective objective) {
Server server = mcMMO.p.getServer();
int currentXP = profile.getSkillXpLevel(skill);
objective.getScore(server.getOfflinePlayer("Level")).setScore(profile.getSkillLevel(skill));
objective.getScore(server.getOfflinePlayer("Current XP")).setScore(profile.getSkillXpLevel(skill));
objective.getScore(server.getOfflinePlayer("Remaining XP")).setScore(profile.getXpToLevel(skill));
objective.getScore(server.getOfflinePlayer("Current XP")).setScore(currentXP);
objective.getScore(server.getOfflinePlayer("Remaining XP")).setScore(profile.getXpToLevel(skill) - currentXP);
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
}
@@ -277,6 +306,10 @@ public class ScoreboardManager {
String playerName = stat.get(1);
playerName = (playerName.equals(player.getName()) ? ChatColor.GOLD : "") + playerName;
if (playerName.length() > 16) {
playerName = playerName.substring(0, 16);
}
objective.getScore(server.getOfflinePlayer(playerName)).setScore(Integer.valueOf(stat.get(0)));
}
}
@@ -285,6 +318,10 @@ public class ScoreboardManager {
String playerName = stat.name;
playerName = (playerName.equals(player.getName()) ? ChatColor.GOLD : "") + playerName;
if (playerName.length() > 16) {
playerName = playerName.substring(0, 16);
}
objective.getScore(server.getOfflinePlayer(playerName)).setScore(stat.statVal);
}
}
@@ -298,6 +335,7 @@ public class ScoreboardManager {
String playerName = player.getName();
player.setScoreboard(newScoreboard);
enablePowerLevelDisplay(player);
if (displayTime != -1 && !SCOREBOARD_TASKS.contains(playerName)) {
new ScoreboardChangeTask(player, oldScoreboard).runTaskLater(mcMMO.p, displayTime * 20);

View File

@@ -245,12 +245,13 @@ public final class CombatUtils {
event.setDamage(archeryManager.dazeCheck((Player) target, event.getDamage()));
}
if (archeryManager.canTrackArrows()) {
if (!damager.hasMetadata(mcMMO.infiniteArrowKey) && archeryManager.canTrackArrows()) {
archeryManager.trackArrows(target);
}
archeryManager.distanceXpBonus(target);
startGainXp(mcMMOPlayer, target, SkillType.ARCHERY);
archeryManager.distanceXpBonus(target, damager);
startGainXp(mcMMOPlayer, target, SkillType.ARCHERY, damager.getMetadata(mcMMO.bowForceKey).get(0).asDouble());
}
break;
@@ -284,6 +285,24 @@ public final class CombatUtils {
swordsManager.counterAttackChecks((LivingEntity) damager, event.getDamage());
}
}
if (damager.getType() == EntityType.ARROW) {
LivingEntity shooter = ((Arrow) damager).getShooter();
if (shooter instanceof Player || !SkillType.UNARMED.getPVEEnabled()) {
return;
}
UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager();
if (unarmedManager.canDeflect()) {
event.setCancelled(unarmedManager.deflectCheck());
if (event.isCancelled()) {
return;
}
}
}
}
else if (attacker instanceof Player) {
Player player = (Player) attacker;
@@ -406,6 +425,10 @@ public final class CombatUtils {
}
}
public static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, SkillType skillType) {
startGainXp(mcMMOPlayer, target, skillType, 1.0);
}
/**
* Start the task that gives combat XP.
*
@@ -413,7 +436,7 @@ public final class CombatUtils {
* @param target The defending entity
* @param skillType The skill being used
*/
public static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, SkillType skillType) {
public static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, SkillType skillType, double multiplier) {
double baseXP = 0;
if (target instanceof Player) {
@@ -427,7 +450,7 @@ public final class CombatUtils {
baseXP = 20 * Config.getInstance().getPlayerVersusPlayerXP();
}
}
else if (!target.hasMetadata(mcMMO.entityMetadataKey)) {
else {
if (target instanceof Animals) {
if (ModUtils.isCustomEntity(target)) {
baseXP = ModUtils.getCustomEntity(target).getXpMultiplier();
@@ -487,11 +510,17 @@ public final class CombatUtils {
}
break;
}
if (target.hasMetadata(mcMMO.entityMetadataKey)) {
baseXP *= Config.getInstance().getSpawnedMobXpMultiplier();
}
}
baseXP *= 10;
}
baseXP *= multiplier;
if (baseXP != 0) {
new AwardCombatXpTask(mcMMOPlayer, skillType, baseXP, target).runTaskLater(mcMMO.p, 0);
}

View File

@@ -7,6 +7,7 @@ import org.bukkit.FireworkEffect.Type;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Firework;
@@ -63,7 +64,9 @@ public final class ParticleEffectUtils {
return;
}
fireworkParticleShower(player, Color.GREEN);
if (hasHeadRoom(player)) {
fireworkParticleShower(player, Color.GREEN);
}
}
public static void playAbilityDisabledEffect(Player player) {
@@ -71,7 +74,9 @@ public final class ParticleEffectUtils {
return;
}
fireworkParticleShower(player, Color.RED);
if (hasHeadRoom(player)) {
fireworkParticleShower(player, Color.RED);
}
}
public static void runescapeModeCelebration(Player player, SkillType skill) {
@@ -85,10 +90,24 @@ public final class ParticleEffectUtils {
Firework firework = (Firework) player.getWorld().spawnEntity(location, EntityType.FIREWORK);
FireworkMeta fireworkMeta = firework.getFireworkMeta();
FireworkEffect effect = FireworkEffect.builder().flicker(false).withColor(color).with(Type.BALL_LARGE).trail(true).build();
FireworkEffect effect = FireworkEffect.builder().flicker(false).withColor(color).with((Config.getInstance().getLargeFireworks() ? Type.BALL_LARGE : Type.BALL)).trail(true).build();
fireworkMeta.addEffect(effect);
fireworkMeta.addEffect(effect);
fireworkMeta.setPower(0);
firework.setFireworkMeta(fireworkMeta);
}
private static boolean hasHeadRoom(Player player) {
boolean hasHeadRoom = true;
Block headBlock = player.getEyeLocation().getBlock();
for (int i = 0; i < 3; i++) {
if (!headBlock.getRelative(BlockFace.UP, i).isEmpty()) {
hasHeadRoom = false;
break;
}
}
return hasHeadRoom;
}
}

View File

@@ -26,6 +26,10 @@ public final class PerksUtils {
}
public static int handleActivationPerks(Player player, int ticks, int maxTicks) {
if (maxTicks != 0) {
ticks = Math.min(ticks, maxTicks);
}
if (Permissions.twelveSecondActivationBoost(player)) {
ticks += 12;
}
@@ -36,10 +40,6 @@ public final class PerksUtils {
ticks += 4;
}
if (maxTicks != 0) {
ticks = Math.min(ticks, maxTicks);
}
return ticks;
}

View File

@@ -13,14 +13,11 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.PluginManager;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.getspout.spoutapi.SpoutManager;
import org.getspout.spoutapi.player.SpoutPlayer;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.HiddenConfig;
import com.gmail.nossr50.config.spout.SpoutConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.AbilityType;
@@ -30,6 +27,7 @@ import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent;
import com.gmail.nossr50.events.fake.FakeBlockBreakEvent;
import com.gmail.nossr50.events.fake.FakeBlockDamageEvent;
import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
import com.gmail.nossr50.events.skills.abilities.McMMOPlayerAbilityActivateEvent;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.runnables.skills.AbilityDisableTask;
import com.gmail.nossr50.runnables.skills.ToolLowerTask;
@@ -42,8 +40,6 @@ import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.spout.SpoutUtils;
public class SkillUtils {
private static int enchantBuff = AdvancedConfig.getInstance().getEnchantBuff();
public static int handleFoodSkills(Player player, SkillType skill, int eventFoodLevel, int baseLevel, int maxLevel, int rankChange) {
int skillLevel = UserManager.getPlayer(player).getProfile().getSkillLevel(skill);
@@ -151,7 +147,7 @@ public class SkillUtils {
* @param profile The profile of the player whose skill to check
*/
public static void xpCheckSkill(SkillType skillType, Player player, PlayerProfile profile) {
int skillups = 0;
int levelsGained = 0;
float xpRemoved = 0;
if (profile.getSkillXpLevelRaw(skillType) >= profile.getXpToLevel(skillType)) {
@@ -163,7 +159,7 @@ public class SkillUtils {
xpRemoved += xp;
profile.removeXp(skillType, xp);
skillups++;
levelsGained++;
profile.skillUp(skillType, 1);
}
else {
@@ -171,46 +167,27 @@ public class SkillUtils {
}
}
McMMOPlayerLevelUpEvent eventToFire = new McMMOPlayerLevelUpEvent(player, skillType, skillups);
McMMOPlayerLevelUpEvent eventToFire = new McMMOPlayerLevelUpEvent(player, skillType, levelsGained);
mcMMO.p.getServer().getPluginManager().callEvent(eventToFire);
if (eventToFire.isCancelled()) {
profile.modifySkill(skillType, profile.getSkillLevel(skillType) - skillups);
profile.modifySkill(skillType, profile.getSkillLevel(skillType) - levelsGained);
profile.setSkillXpLevel(skillType, profile.getSkillXpLevelRaw(skillType) + xpRemoved);
return;
}
String capitalized = StringUtils.getCapitalized(skillType.toString());
/* Spout Stuff */
if (mcMMO.spoutEnabled) {
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
if (spoutPlayer != null && spoutPlayer.isSpoutCraftEnabled()) {
SpoutUtils.levelUpNotification(skillType, spoutPlayer);
/* Update custom titles */
if (SpoutConfig.getInstance().getShowPowerLevel()) {
spoutPlayer.setTitle(LocaleLoader.getString("Spout.Title", spoutPlayer.getName(), UserManager.getPlayer(player).getPowerLevel()));
}
}
else {
player.sendMessage(LocaleLoader.getString(capitalized + ".Skillup", skillups, profile.getSkillLevel(skillType)));
}
if (mcMMO.isSpoutEnabled()) {
SpoutUtils.processLevelup(mcMMOPlayer, skillType, levelsGained);
}
else {
player.sendMessage(LocaleLoader.getString(capitalized + ".Skillup", skillups, profile.getSkillLevel(skillType)));
player.sendMessage(LocaleLoader.getString(capitalized + ".Skillup", levelsGained, profile.getSkillLevel(skillType)));
}
}
if (mcMMO.spoutEnabled) {
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
if (spoutPlayer != null && spoutPlayer.isSpoutCraftEnabled()) {
if (SpoutConfig.getInstance().getXPBarEnabled()) {
profile.getSpoutHud().updateXpBar();
}
}
if (mcMMO.isSpoutEnabled()) {
SpoutUtils.processXpGain(player, profile);
}
}
@@ -329,6 +306,13 @@ public class SkillUtils {
}
if (!mcMMOPlayer.getAbilityMode(ability) && cooldownOver(playerProfile.getSkillDATS(ability), ability.getCooldown(), player)) {
McMMOPlayerAbilityActivateEvent event = new McMMOPlayerAbilityActivateEvent(player, type);
mcMMO.p.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
int ticks = PerksUtils.handleActivationPerks(player, 2 + (playerProfile.getSkillLevel(type) / AdvancedConfig.getInstance().getAbilityLength()), ability.getMaxTicks());
ParticleEffectUtils.playAbilityEnabledEffect(player);
@@ -417,7 +401,7 @@ public class SkillUtils {
}
itemLore.add("mcMMO Ability Tool");
itemMeta.addEnchant(Enchantment.DIG_SPEED, efficiencyLevel + enchantBuff, true);
itemMeta.addEnchant(Enchantment.DIG_SPEED, efficiencyLevel + AdvancedConfig.getInstance().getEnchantBuff(), true);
itemMeta.setLore(itemLore);
heldItem.setItemMeta(itemMeta);
@@ -483,11 +467,11 @@ public class SkillUtils {
if (itemLore.remove("mcMMO Ability Tool")) {
int efficiencyLevel = item.getEnchantmentLevel(Enchantment.DIG_SPEED);
if (efficiencyLevel <= enchantBuff) {
if (efficiencyLevel <= AdvancedConfig.getInstance().getEnchantBuff()) {
itemMeta.removeEnchant(Enchantment.DIG_SPEED);
}
else {
itemMeta.addEnchant(Enchantment.DIG_SPEED, efficiencyLevel - enchantBuff, true);
itemMeta.addEnchant(Enchantment.DIG_SPEED, efficiencyLevel - AdvancedConfig.getInstance().getEnchantBuff(), true);
}
itemMeta.setLore(itemLore);

View File

@@ -9,61 +9,132 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.jar.JarFile;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.getspout.spoutapi.SpoutManager;
import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent;
import org.getspout.spoutapi.keyboard.Keyboard;
import org.getspout.spoutapi.player.FileManager;
import org.getspout.spoutapi.player.SpoutPlayer;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.spout.SpoutConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.listeners.SpoutListener;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.skills.repair.Repair;
import com.gmail.nossr50.util.StringUtils;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.skills.SkillUtils;
public class SpoutUtils {
private static mcMMO plugin = mcMMO.p;
// The order of the values is extremely important, a few methods depend on it to work properly
protected enum Tier {
FOUR(4) {
@Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier4(); }
@Override protected Material getAcrobaticsNotificationItem() { return Material.DIAMOND_BOOTS; }
@Override protected Material getArcheryNotificationItem() { return Material.BOW; }
@Override protected Material getAxesNotificationItem() { return Material.DIAMOND_AXE; }
@Override protected Material getExcavationNotificationItem() { return Material.CLAY; }
@Override protected Material getFishingNotificationItem() { return Material.FISHING_ROD; }
@Override protected Material getHerbalismNotificationItem() { return Material.WATER_LILY; }
@Override protected Material getMiningNotificationItem() { return Material.EMERALD_ORE; }
@Override protected Material getSwordsNotificationItem() { return Material.DIAMOND_SWORD; }
@Override protected Material getTamingNotificationItem() { return Material.BONE; }
@Override protected Material getUnarmedNotificationItem() { return Material.DIAMOND_HELMET; }
@Override protected Material getWoodcuttingNotificationItem() { return Material.LOG; }},
THREE(3) {
@Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier3(); }
@Override protected Material getAcrobaticsNotificationItem() { return Material.GOLD_BOOTS; }
@Override protected Material getArcheryNotificationItem() { return Material.ARROW; }
@Override protected Material getAxesNotificationItem() { return Material.GOLD_AXE; }
@Override protected Material getExcavationNotificationItem() { return Material.SAND; }
@Override protected Material getFishingNotificationItem() { return Material.COOKED_FISH; }
@Override protected Material getHerbalismNotificationItem() { return Material.RED_ROSE; }
@Override protected Material getMiningNotificationItem() { return Material.DIAMOND_ORE; }
@Override protected Material getSwordsNotificationItem() { return Material.GOLD_SWORD; }
@Override protected Material getTamingNotificationItem() { return Material.GRILLED_PORK; }
@Override protected Material getUnarmedNotificationItem() { return Material.GOLD_HELMET; }
@Override protected Material getWoodcuttingNotificationItem() { return Material.WOOD; }},
TWO(2) {
@Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier2(); }
@Override protected Material getAcrobaticsNotificationItem() { return Material.IRON_BOOTS; }
@Override protected Material getArcheryNotificationItem() { return Material.ARROW; }
@Override protected Material getAxesNotificationItem() { return Material.IRON_AXE; }
@Override protected Material getExcavationNotificationItem() { return Material.GRAVEL; }
@Override protected Material getFishingNotificationItem() { return Material.COOKED_FISH; }
@Override protected Material getHerbalismNotificationItem() { return Material.YELLOW_FLOWER; }
@Override protected Material getMiningNotificationItem() { return Material.GOLD_ORE; }
@Override protected Material getSwordsNotificationItem() { return Material.IRON_SWORD; }
@Override protected Material getTamingNotificationItem() { return Material.GRILLED_PORK; }
@Override protected Material getUnarmedNotificationItem() { return Material.IRON_HELMET; }
@Override protected Material getWoodcuttingNotificationItem() { return Material.LEAVES; }},
ONE(1) {
@Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier1(); }
@Override protected Material getAcrobaticsNotificationItem() { return Material.CHAINMAIL_BOOTS; }
@Override protected Material getArcheryNotificationItem() { return Material.FLINT; }
@Override protected Material getAxesNotificationItem() { return Material.STONE_AXE; }
@Override protected Material getExcavationNotificationItem() { return Material.GRASS; }
@Override protected Material getFishingNotificationItem() { return Material.RAW_FISH; }
@Override protected Material getHerbalismNotificationItem() { return Material.CACTUS; }
@Override protected Material getMiningNotificationItem() { return Material.IRON_ORE; }
@Override protected Material getSwordsNotificationItem() { return Material.STONE_SWORD; }
@Override protected Material getTamingNotificationItem() { return Material.PORK; }
@Override protected Material getUnarmedNotificationItem() { return Material.CHAINMAIL_HELMET; }
@Override protected Material getWoodcuttingNotificationItem() { return Material.SAPLING; }};
public final static String spoutDirectory = mcMMO.getMainDirectory() + "Resources" + File.separator;
public final static String hudDirectory = spoutDirectory + "HUD" + File.separator;
public final static String hudStandardDirectory = hudDirectory + "Standard" + File.separator;
public final static String hudRetroDirectory = hudDirectory + "Retro" + File.separator;
public final static String soundDirectory = spoutDirectory + "Sound" + File.separator;
int numerical;
public static boolean showPowerLevel;
private Tier(int numerical) {
this.numerical = numerical;
}
private final static SpoutListener spoutListener = new SpoutListener();
public static Keyboard menuKey;
public int toNumerical() {
return numerical;
}
abstract protected int getLevel();
abstract protected Material getAcrobaticsNotificationItem();
abstract protected Material getArcheryNotificationItem();
abstract protected Material getAxesNotificationItem();
abstract protected Material getExcavationNotificationItem();
abstract protected Material getFishingNotificationItem();
abstract protected Material getHerbalismNotificationItem();
abstract protected Material getMiningNotificationItem();
abstract protected Material getSwordsNotificationItem();
abstract protected Material getTamingNotificationItem();
abstract protected Material getUnarmedNotificationItem();
abstract protected Material getWoodcuttingNotificationItem();
}
private final static String spoutDirectory = mcMMO.getMainDirectory() + "Resources" + File.separator;
private final static String hudDirectory = spoutDirectory + "HUD" + File.separator;
private final static String hudStandardDirectory = hudDirectory + "Standard" + File.separator;
private final static String hudRetroDirectory = hudDirectory + "Retro" + File.separator;
private final static String soundDirectory = spoutDirectory + "Sound" + File.separator;
/**
* Write file to disk.
*
* @param theFileName The name of the file
* @param theFilePath The name of the file path
* @param fileName The name of the file
* @param filePath The name of the file path
*/
private static void writeFile(String theFileName, String theFilePath) {
private static File writeFile(String fileName, String filePath) {
File currentFile = new File(filePath + fileName);
BufferedOutputStream os = null;
JarFile jar = null;
// No point in writing the file again if it already exists.
if (currentFile.exists()) {
return currentFile;
}
try {
File currentFile = new File(theFilePath + theFileName);
// No point in writing the file again if it already exists.
if (currentFile.exists()) {
return;
}
jar = new JarFile(mcMMO.mcmmo);
@SuppressWarnings("resource")
InputStream is = jar.getInputStream(jar.getJarEntry("resources/" + theFileName));
InputStream is = jar.getInputStream(jar.getJarEntry("resources/" + fileName));
byte[] buf = new byte[2048];
int nbRead;
@@ -98,12 +169,16 @@ public class SpoutUtils {
}
}
}
return currentFile;
}
/**
* Extract Spout files to the Resources directory.
*/
public static void extractFiles() {
public static ArrayList<File> extractFiles() {
ArrayList<File> files = new ArrayList<File>();
// Setup directories
new File(spoutDirectory).mkdir();
new File(hudDirectory).mkdir();
@@ -113,19 +188,19 @@ public class SpoutUtils {
// XP Bar images
for (int x = 0; x < 255; x++) {
String theFileName;
String fileName;
if (x < 10) {
theFileName = "xpbar_inc00" + x + ".png";
fileName = "xpbar_inc00" + x + ".png";
}
else if (x < 100) {
theFileName = "xpbar_inc0" + x + ".png";
fileName = "xpbar_inc0" + x + ".png";
}
else {
theFileName = "xpbar_inc" + x + ".png";
fileName = "xpbar_inc" + x + ".png";
}
writeFile(theFileName, hudStandardDirectory);
files.add(writeFile(fileName, hudStandardDirectory));
}
// Standard XP Icons
@@ -134,89 +209,22 @@ public class SpoutUtils {
continue;
}
String skillTypeString = StringUtils.getCapitalized(skillType.toString());
String skillName = StringUtils.getCapitalized(skillType.toString());
writeFile(skillTypeString + ".png", hudStandardDirectory);
writeFile(skillTypeString + "_r.png", hudRetroDirectory);
files.add(writeFile(skillName + ".png", hudStandardDirectory));
files.add(writeFile(skillName + "_r.png", hudRetroDirectory));
}
// Blank icons
writeFile("Icon.png", hudStandardDirectory);
writeFile("Icon_r.png", hudRetroDirectory);
files.add(writeFile("Icon.png", hudStandardDirectory));
files.add(writeFile("Icon_r.png", hudRetroDirectory));
// Sound FX
writeFile("level.wav", soundDirectory);
}
/**
* Setup Spout config options
*/
public static void setupSpoutConfigs() {
showPowerLevel = SpoutConfig.getInstance().getShowPowerLevel();
String temp = SpoutConfig.getInstance().getMenuKey();
for (Keyboard x : Keyboard.values()) {
if (x.toString().equalsIgnoreCase(temp)) {
menuKey = x;
}
}
if (menuKey == null) {
mcMMO.p.getLogger().warning("Invalid KEY for Menu.Key, using KEY_M");
menuKey = Keyboard.KEY_M;
}
}
/**
* Get all the Spout files in the Resources folder.
*
* @return a list of all files is the Resources folder
*/
public static ArrayList<File> getFiles() {
ArrayList<File> files = new ArrayList<File>();
// XP BAR
for (int x = 0; x < 255; x++) {
if (x < 10) {
files.add(new File(hudStandardDirectory + "xpbar_inc00" + x + ".png"));
}
else if (x < 100) {
files.add(new File(hudStandardDirectory + "xpbar_inc0" + x + ".png"));
}
else {
files.add(new File(hudStandardDirectory + "xpbar_inc" + x + ".png"));
}
}
// Standard XP Icons
for (SkillType skillType : SkillType.values()) {
if (skillType.isChildSkill()) {
continue;
}
String skillTypeString = StringUtils.getCapitalized(skillType.toString());
files.add(new File(hudStandardDirectory + skillTypeString + ".png"));
files.add(new File(hudRetroDirectory + skillTypeString + "_r.png"));
}
// Blank icons
files.add(new File(hudStandardDirectory + "Icon.png"));
files.add(new File(hudRetroDirectory + "Icon_r.png"));
// Level SFX
files.add(new File(soundDirectory + "level.wav"));
files.add(writeFile("level.wav", soundDirectory));
return files;
}
/**
* Register custom Spout events.
*/
public static void registerCustomEvent() {
plugin.getServer().getPluginManager().registerEvents(spoutListener, plugin);
}
/**
* Handle level-up notifications through Spout.
*
@@ -225,334 +233,185 @@ public class SpoutUtils {
*/
public static void levelUpNotification(SkillType skillType, SpoutPlayer spoutPlayer) {
PlayerProfile profile = UserManager.getPlayer(spoutPlayer).getProfile();
int notificationTier = getNotificationTier(profile.getSkillLevel(skillType));
Material mat = null;
int skillLevel = profile.getSkillLevel(skillType);
Material notificationItem;
switch (skillType) {
case TAMING:
switch (notificationTier) {
case 1:
case 2:
mat = Material.PORK;
break;
case 3:
case 4:
mat = Material.GRILLED_PORK;
break;
case 5:
mat = Material.BONE;
break;
default:
break;
}
break;
case MINING:
switch (notificationTier) {
case 1:
mat = Material.COAL_ORE;
break;
case 2:
mat = Material.IRON_ORE;
break;
case 3:
mat = Material.GOLD_ORE;
break;
case 4:
mat = Material.DIAMOND_ORE;
break;
case 5:
mat = Material.EMERALD_ORE;
break;
default:
break;
}
break;
case WOODCUTTING:
switch (notificationTier) {
case 1:
mat = Material.STICK;
break;
case 2:
case 3:
mat = Material.WOOD;
break;
case 4:
case 5:
mat = Material.LOG;
break;
default:
break;
}
break;
case REPAIR:
mat = Material.ANVIL;
break;
case HERBALISM:
switch (notificationTier) {
case 1:
mat = Material.YELLOW_FLOWER;
break;
case 2:
mat = Material.RED_ROSE;
break;
case 3:
mat = Material.BROWN_MUSHROOM;
break;
case 4:
mat = Material.RED_MUSHROOM;
break;
case 5:
mat = Material.PUMPKIN;
break;
default:
break;
}
break;
case ACROBATICS:
switch (notificationTier) {
case 1:
mat = Material.LEATHER_BOOTS;
break;
case 2:
mat = Material.CHAINMAIL_BOOTS;
break;
case 3:
mat = Material.IRON_BOOTS;
break;
case 4:
mat = Material.GOLD_BOOTS;
break;
case 5:
mat = Material.DIAMOND_BOOTS;
break;
default:
break;
}
break;
case SWORDS:
switch (notificationTier) {
case 1:
mat = Material.WOOD_SWORD;
break;
case 2:
mat = Material.STONE_SWORD;
break;
case 3:
mat = Material.IRON_SWORD;
break;
case 4:
mat = Material.GOLD_SWORD;
break;
case 5:
mat = Material.DIAMOND_SWORD;
break;
default:
break;
}
notificationItem = getAcrobaticsNotificationItem(skillLevel);
break;
case ARCHERY:
switch (notificationTier) {
case 1:
case 2:
case 3:
mat = Material.ARROW;
break;
case 4:
case 5:
mat = Material.BOW;
break;
default:
break;
}
break;
case UNARMED:
switch (notificationTier) {
case 1:
mat = Material.LEATHER_HELMET;
break;
case 2:
mat = Material.CHAINMAIL_HELMET;
break;
case 3:
mat = Material.IRON_HELMET;
break;
case 4:
mat = Material.GOLD_HELMET;
break;
case 5:
mat = Material.DIAMOND_HELMET;
break;
default:
break;
}
break;
case EXCAVATION:
switch (notificationTier) {
case 1:
mat = Material.WOOD_SPADE;
break;
case 2:
mat = Material.STONE_SPADE;
break;
case 3:
mat = Material.IRON_SPADE;
break;
case 4:
mat = Material.GOLD_SPADE;
break;
case 5:
mat = Material.DIAMOND_SPADE;
break;
default:
break;
}
notificationItem = getArcheryNotificationItem(skillLevel);
break;
case AXES:
switch (notificationTier) {
case 1:
mat = Material.WOOD_AXE;
break;
case 2:
mat = Material.STONE_AXE;
break;
case 3:
mat = Material.IRON_AXE;
break;
case 4:
mat = Material.GOLD_AXE;
break;
case 5:
mat = Material.DIAMOND_AXE;
break;
default:
break;
}
notificationItem = getAxesNotificationItem(skillLevel);
break;
case EXCAVATION:
notificationItem = getExcavationNotificationItem(skillLevel);
break;
case FISHING:
switch (notificationTier) {
case 1:
case 2:
mat = Material.RAW_FISH;
break;
notificationItem = getFishingNotificationItem(skillLevel);
break;
case 3:
case 4:
mat = Material.COOKED_FISH;
break;
case HERBALISM:
notificationItem = getHerbalismNotificationItem(skillLevel);
break;
case 5:
mat = Material.FISHING_ROD;
break;
case MINING:
notificationItem = getMiningNotificationItem(skillLevel);
break;
default:
break;
}
case REPAIR:
notificationItem = Material.ANVIL;
break;
case SWORDS:
notificationItem = getSwordsNotificationItem(skillLevel);
break;
case TAMING:
notificationItem = getTamingNotificationItem(skillLevel);
break;
case UNARMED:
notificationItem = getUnarmedNotificationItem(skillLevel);
break;
case WOODCUTTING:
notificationItem = getWoodcuttingNotificationItem(skillLevel);
break;
default:
mat = Material.WATCH;
notificationItem = Material.MAP;
break;
}
spoutPlayer.sendNotification(LocaleLoader.getString("Spout.LevelUp.1"), LocaleLoader.getString("Spout.LevelUp.2", SkillUtils.getSkillName(skillType), profile.getSkillLevel(skillType)), mat);
SpoutManager.getSoundManager().playCustomSoundEffect(plugin, spoutPlayer, "level.wav", false);
spoutPlayer.sendNotification(LocaleLoader.getString("Spout.LevelUp.1"), LocaleLoader.getString("Spout.LevelUp.2", SkillUtils.getSkillName(skillType), skillLevel), notificationItem);
SpoutManager.getSoundManager().playCustomSoundEffect(mcMMO.p, spoutPlayer, "level.wav", false);
}
/**
* Gets the notification tier of a skill.
*
* @param level The level of the skill
* @return the notification tier of the skill
*/
private static int getNotificationTier(int level) {
if (level >= AdvancedConfig.getInstance().getSpoutNotificationTier4()) {
return 5;
private static Material getAcrobaticsNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getAcrobaticsNotificationItem();
}
}
else if (level >= AdvancedConfig.getInstance().getSpoutNotificationTier3()) {
return 4;
return Material.LEATHER_BOOTS;
}
private static Material getArcheryNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getArcheryNotificationItem();
}
}
else if (level >= AdvancedConfig.getInstance().getSpoutNotificationTier2()) {
return 3;
return Material.FEATHER;
}
private static Material getAxesNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getAxesNotificationItem();
}
}
else if (level >= AdvancedConfig.getInstance().getSpoutNotificationTier1()) {
return 2;
return Material.WOOD_AXE;
}
private static Material getExcavationNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getExcavationNotificationItem();
}
}
else {
return 1;
return Material.DIRT;
}
private static Material getFishingNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getFishingNotificationItem();
}
}
return Material.RAW_FISH;
}
private static Material getHerbalismNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getHerbalismNotificationItem();
}
}
return Material.VINE;
}
private static Material getMiningNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getMiningNotificationItem();
}
}
return Material.COAL_ORE;
}
private static Material getSwordsNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getSwordsNotificationItem();
}
}
return Material.WOOD_SWORD;
}
private static Material getTamingNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getTamingNotificationItem();
}
}
return Material.PORK;
}
private static Material getUnarmedNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getUnarmedNotificationItem();
}
}
return Material.LEATHER_HELMET;
}
private static Material getWoodcuttingNotificationItem(int skillLevel) {
for (Tier tier : Tier.values()) {
if (skillLevel >= tier.getLevel()) {
return tier.getWoodcuttingNotificationItem();
}
}
return Material.STICK;
}
/**
* Re-enable SpoutCraft for players after a /reload
*/
public static void reloadSpoutPlayers() {
PluginManager pluginManager = mcMMO.p.getServer().getPluginManager();
for (SpoutPlayer spoutPlayer : SpoutManager.getPlayerChunkMap().getOnlinePlayers()) {
mcMMO.p.getServer().getPluginManager().callEvent(new SpoutCraftEnableEvent(spoutPlayer));
pluginManager.callEvent(new SpoutCraftEnableEvent(spoutPlayer));
}
}
@@ -565,9 +424,55 @@ public class SpoutUtils {
}
public static void preCacheFiles() {
extractFiles(); // Extract source materials
SpoutManager.getFileManager().addToPreLoginCache(mcMMO.p, extractFiles());
}
FileManager FM = SpoutManager.getFileManager();
FM.addToPreLoginCache(plugin, getFiles());
public static void processLevelup(McMMOPlayer mcMMOPlayer, SkillType skillType, int levelsGained) {
Player player = mcMMOPlayer.getPlayer();
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
if (spoutPlayer.isSpoutCraftEnabled()) {
levelUpNotification(skillType, spoutPlayer);
/* Update custom titles */
if (SpoutConfig.getInstance().getShowPowerLevel()) {
spoutPlayer.setTitle(LocaleLoader.getString("Spout.Title", spoutPlayer.getName(), mcMMOPlayer.getPowerLevel()));
}
}
else {
player.sendMessage(LocaleLoader.getString(StringUtils.getCapitalized(skillType.toString()) + ".Skillup", levelsGained, mcMMOPlayer.getProfile().getSkillLevel(skillType)));
}
}
public static void processXpGain(Player player, PlayerProfile profile) {
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
if (spoutPlayer.isSpoutCraftEnabled() && SpoutConfig.getInstance().getXPBarEnabled()) {
profile.getSpoutHud().updateXpBar();
}
}
public static void sendRepairNotifications(Player player, int anvilId) {
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
if (spoutPlayer.isSpoutCraftEnabled()) {
String[] spoutMessages = Repair.getSpoutAnvilMessages(anvilId);
spoutPlayer.sendNotification(spoutMessages[0], spoutMessages[1], Material.getMaterial(anvilId));
}
else {
player.sendMessage(Repair.getAnvilMessage(anvilId));
}
}
public static void sendDonationNotification(Player player) {
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
if (spoutPlayer.isSpoutCraftEnabled()) {
spoutPlayer.sendNotification(LocaleLoader.getString("Spout.Donate"), ChatColor.GREEN + "gjmcferrin@gmail.com", Material.DIAMOND);
}
else {
player.sendMessage(LocaleLoader.getString("MOTD.Donate"));
player.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal");
}
}
}

View File

@@ -1,9 +1,9 @@
#
# Advanced configuration
#
# For advanced users only! There is no need to change anything here.
#
# You can customize almost every aspect of every skill here.
# For advanced users only! There is no need to change anything here.
#
# You can customize almost every aspect of every skill here.
# Its mainly here if you've changed "Experience.Formula.Curve_Modifier"
# Configure at what level you get better with certain abilities.
#
@@ -71,6 +71,9 @@ Skills:
# Retrieve_MaxBonusLevel: Maximum bonus level for Arrow retrieval, at this level the chance of retrieving arrows from mobs is Retrieve_MaxBonus
Retrieve_MaxChance: 100.0
Retrieve_MaxBonusLevel: 1000
#Force_Multiplier: Multiply the force of the bow by this for an XP boost.
Force_Multiplier: 2.0
#
# Settings for Axes
###
@@ -139,6 +142,9 @@ Skills:
# This determines when Fisherman's Diet adds extra hunger recovery to food
Fisherman_Diet_RankChange: 200
# Ice_Fishing_UnlockLevel: Fishing level when the Ice Fishing ability unlocks
Ice_Fishing_UnlockLevel: 50
#
# Settings for Herbalism
###
@@ -400,12 +406,21 @@ Skills:
# DoubleDrops_MaxBonusLevel: Level when the maximum chance of receiving double drops is reached
DoubleDrops_ChanceMax: 100.0
DoubleDrops_MaxBonusLevel: 1000
Spout:
#
# Settings for the Spout notifications, when a player reaches a higher tier, the image of the notification will change.
###
Notifications:
Tier1: 200
Tier2: 400
Tier3: 600
Tier4: 800
#
# Customize the kraken!
###
Kraken:
Enabled: true
Tries_Before_Release: 50
Health: 50
Name: The Kraken
Attack_Interval_Seconds: 1
Attack_Damage: 1
Global_Sounds: true
Allow_Escaping: false
Unleashed_Message:
Server: (PLAYER) has unleashed the kraken!
Player: THE KRAKEN HAS BEEN UNLEASHED!
Defeated_Message:
Escape: You have escaped from the kraken!
Killed: You have slain the kraken!

View File

@@ -26,34 +26,39 @@ General:
Verbose_Logging: false
# Should mcMMO over-write configs to update, or make new ones ending in .new?
Config_Update_Overwrite: true
# Enable potato easter egg?
Potato_Explosion_Enabled: false
Potato_Explosion_Chance: 1
Scoreboards:
# Should mcMMO use scoreboards for /inspect?
# Amount of time (in seconds) to display. To display permanently, set to -1
Inspect:
# Should mcMMO use scoreboards for /inspect?
Use: true
# Amount of time (in seconds) to display. To display permanently, set to -1
Display_Time: 10
# Should mcMMO use scoreboards for /mcrank?
# Amount of time (in seconds) to display. To display permanently, set to -1
Mcrank:
# Should mcMMO use scoreboards for /mcrank?
Use: true
# Amount of time (in seconds) to display. To display permanently, set to -1
Display_Time: 10
# Should mcMMO use scoreboards for /mcstats?
# Amount of time (in seconds) to display. To display permanently, set to -1
Mcstats:
# Should mcMMO use scoreboards for /mcstats?
Use: true
# Amount of time (in seconds) to display. To display permanently, set to -1
Display_Time: 10
# Should mcMMO use scoreboards for /mctop?
# Amount of time (in seconds) to display. To display permanently, set to -1
Mctop:
# Should mcMMO use scoreboards for /mctop?
Use: true
# Amount of time (in seconds) to display. To display permanently, set to -1
Display_Time: 10
# Should mcMMO use scoreboards for /skillname (/mining, /fishing, etc.)?
# Amount of time (in seconds) to display. To display permanently, set to -1
Skillname:
# Should mcMMO use scoreboards for /skillname (/mining, /fishing, etc.)?
Use: true
# Amount of time (in seconds) to display. To display permanently, set to -1
Display_Time: 10
# Should mcMMO display power levels on scoreboards?
Power_Level:
Use: true
Mob_Healthbar:
# Default display for mob health bars - HEARTS, BAR, or DISABLED
@@ -69,6 +74,7 @@ Database_Purging:
# Any user who hasn't connected in this many months will be purged from the database
# To never purge old users, set to -1
Old_User_Cutoff: 6
#
# Settings for using a mySQL database
###
@@ -82,6 +88,7 @@ MySQL:
Server:
Port: 3306
Address: localhost
#
# Settings for Hardcore mode
###
@@ -273,8 +280,9 @@ Double_Drops:
###
Experience:
Gains:
# Experience gained from mobs not naturally spawned will get multiplied by this value. 0 by default.
Mobspawners:
Enabled: false
Multiplier: 0
# Experience gained in every skill will get multiplied by this value. 1.0 by default, 2.0 means two times as much
Multiplier:
@@ -379,6 +387,7 @@ Experience:
Magma_Cube: 2.0
Iron_Golem: 2.0
Wither_Skeleton: 4.0
#
# Settings for commands
###
@@ -400,6 +409,7 @@ Commands:
a:
# Allow mcMMO to use player display names in chat instead of their usernames
Use_Display_Names: true
#
# Settings for particles
###
@@ -408,6 +418,9 @@ Particles:
Ability_Activation: true
Ability_Deactivation: true
# Determines if the fireworks should be a large ball or a small one
LargeFireworks: true
# Use particle effect when these abilities trigger
Dodge: true
Bleed: true

View File

@@ -10,6 +10,8 @@
#####
Item_Weights:
Default: 5
Quartz: 200
Quartz_Ore: 200
Emerald: 150
Emerald_Ore: 150
Diamond: 100
@@ -25,6 +27,32 @@ Item_Weights:
Coal: 10
Coal_Ore: 10
# Item weights for armor and tools
Diamond_Sword: 150
Diamond_Spade: 150
Diamond_Pickaxe: 150
Diamond_Axe: 150
Diamond_Helmet: 150
Diamond_Chestplate: 150
Diamond_Leggings: 150
Diamond_Boots: 150
Gold_Sword: 75
Gold_Spade: 75
Gold_Pickaxe: 75
Gold_Axe: 75
Gold_Helmet: 75
Gold_Chestplate: 75
Gold_Leggings: 75
Gold_Boots: 75
Iron_Sword: 60
Iron_Spade: 60
Iron_Pickaxe: 60
Iron_Axe: 60
Iron_Helmet: 60
Iron_Chestplate: 60
Iron_Leggings: 60
Iron_Boots: 60
# Items in this section will get added to the Misc share category.
# Case insensitive, though the name must be exactly the same as set in the Bukkit Material enum.
Party_Shareables:

View File

@@ -82,6 +82,7 @@ Fishing.Effect.3=Na\u0161el si o\u010darovanou v\u011bc
Fishing.Effect.4=Shake (vs. Entities)
Fishing.Effect.5=Vyklepni p\u0159edm\u011bty z p\u0159\u00ed\u0161er s prutem
Fishing.Effect.6=Ryb\u00e1\u0159\u016fv apetit
Fishing.Effect.8=Mistr Ryb\u00e1\u0159
Fishing.Enchant.Chance=[[RED]]\u0160ance na magick\u00e9ho lovce: [[YELLOW]]{0}
Fishing.ItemFound=[[GRAY]]Nasel si poklad!
Fishing.Listener=Rybareni:
@@ -98,6 +99,8 @@ Herbalism.Ability.GTh=[[GREEN]]**ZAHRADNIK**
Herbalism.Ability.HylianLuck=[[RED]]Hylian Luck zm\u011bn\u011bn: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**SKLONIL JSI SVOJI MOTYKU**
Herbalism.Ability.Ready=[[GREEN]]**PRIPRAVIL JSI SVOU MOTYKU**
Herbalism.Ability.ShroomThumb.Chance=[[RED]]\u0160ance na dovednost Houba\u0159: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=[[RED]]**HOUBA\u0158 SELHAL**
Herbalism.Effect.0=Green Terra (SCHOPNOST)
Herbalism.Effect.1=\u0160\u00ed\u0159en\u00ed planety, 3x v\u00edce drop\u016f
Herbalism.Effect.2=Zahradnik (Wheat)
@@ -109,6 +112,7 @@ Herbalism.Effect.7=Zvysuje obnovu hladu ze sklizenych jidel
Herbalism.Effect.8=Dvojnasobny zisk (vsechny byliny)
Herbalism.Effect.9=Zdvojnasobi normalni zisk
Herbalism.Effect.11=D\u00e1v\u00e1 malou \u0161anci naj\u00edt vz\u00e1cn\u00e9 p\u0159edm\u011bty
Herbalism.Effect.12=Houba\u0159
Herbalism.HylianLuck=[[GREEN]]The luck of Hyrule t\u011b doprov\u00e1z\u00ed!
Herbalism.Listener=Bylinarstvi:
Herbalism.SkillName=Bylinkarstvi
@@ -221,6 +225,8 @@ Taming.Ability.Bonus.4=Otresuvzdorny
Taming.Ability.Bonus.6=Nabrousene drapy
Taming.Ability.Bonus.8=Rychl\u00e9 Ob\u010derstven\u00ed
Taming.Ability.Bonus.9={0} \u0161ance na vyl\u00e9\u010den\u00ed p\u0159i \u00fatoku
Taming.Ability.Bonus.10=Svat\u00fd Chrt
Taming.Ability.Bonus.11=Obnovuje zdrav\u00ed p\u0159i zran\u011bn\u00ed magi\u00ed nebo lektvarem
Taming.Combat.Chance.Gore=[[RED]]\u0160ance na nabodnut\u00ed: [[YELLOW]]{0}
Taming.Effect.0=Tradice \u0161elem
Taming.Effect.1=Na\u0159\u00edznut\u00ed kost\u00ed kontroluje vlky & oceloty
@@ -232,6 +238,8 @@ Taming.Effect.14=[[GRAY]]COTW (Ocelot): Skrc se a levym-klikem s {0} rybami v ru
Taming.Effect.15=[[GRAY]]COTW (Ocelot): Skrc se a levym-klikem s {0} kostmi v ruce
Taming.Effect.16=Rychl\u00e9 Ob\u010derstven\u00ed
Taming.Effect.17=\u0160ance na vyl\u00e9\u010den\u00ed vlka p\u0159i \u00fatoku
Taming.Effect.18=Svat\u00fd Chrt
Taming.Effect.19=Uzdraven Magi\u00ed & Lektvarem
Taming.Effect.2=Krveprolit\u00ed
Taming.Effect.3=Kritick\u00fd \u00fader, kter\u00fd aplikuje krv\u00e1cen\u00ed
Taming.Effect.4=Nabrousene drapy
@@ -302,6 +310,7 @@ Combat.Gore=[[GREEN]]**PRUNIK**
Combat.StruckByGore=[[RED]]**BYL JSI PROBODNUT**
Combat.TargetDazed=C\u00edl byl [[DARK_RED]]Omr\u00e1\u010den
Combat.TouchedFuzzy=[[DARK_RED]]Nejasne dotcen. Mas zavrat.
mcMMO.Description=[[DARK_AQUA]]O [[YELLOW]]mcMMO[[DARK_AQUA]] Projekt:,[[GOLD]]mcMMO je [[RED]]open source[[GOLD]] RPG m\u00f3d vytvo\u0159en\u00fd v \u00fanoru 2011,[[GOLD]]autorem [[BLUE]]nossr50[[GOLD]]. C\u00edl projektu je poskytnout kvalitu RPG.,[[DARK_AQUA]]Tipy:,[[GOLD]] - [[GREEN]]Pou\u017eij [[RED]]/mcmmo help[[GREEN]] pro zobrazen\u00ed dostupn\u00fdch p\u0159\u00edkaz\u016f,[[GOLD]] - [[GREEN]]Type [[RED]]/SKILLNAME[[GREEN]] pro zobrazen\u00ed detailn\u00edch informac\u00ed o skillu,[[DARK_AQUA]]V\u00fdvoj\u00e1\u0159i:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](Majitel),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Vedouc\u00ed projektu),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](V\u00fdvoj\u00e1\u0159),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](V\u00fdvoj\u00e1\u0159),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](V\u00fdvoj\u00e1\u0159),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](V\u00fdvoj\u00e1\u0159),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](V\u00fdvoj\u00e1\u0159),[[DARK_AQUA]]U\u017eite\u010dn\u00e9 odkazy:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] Nahla\u0161ov\u00e1n\u00ed Chyb,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,
Commands.addlevels.AwardAll.2=[[RED]]V\u0161echny schopnosti byly zm\u011bn\u011bny na {0}.
Commands.addlevels.AwardSkill.1=[[GREEN]]Tvoje dovednost {1} je nyn\u00ed {0}!
Commands.addxp.AwardSkill=[[GREEN]]Z\u00edskal si {0} zku\u0161enost\u00ed v {1}!
@@ -327,10 +336,18 @@ Commands.mcrank.Heading=[[GOLD]]-=OSOBN\u00cd HODNOCEN\u00cd=-
Commands.mcremove.Success=[[GREEN]]{0} byl \u00fasp\u011b\u0161n\u011b vymaz\u00e1n z datab\u00e1ze!
Commands.mctop.Tip=[[GOLD]]Tip: Pro osobn\u00ed statistiky pou\u017eij [[RED]]/mcrank[[GOLD]]!
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - Modify target
Commands.mmoedit.AllSkills.1=[[GREEN]]Tv\u00e1 \u00farove\u0148 ve v\u0161ech skillech byla nastavena na {0}!
Commands.mmoedit.Modified.1=[[GREEN]]Tv\u016fj skill v {0} byl pozm\u011bn\u011bn na {1}!
Commands.ModDescription=[[RED]]- Precti si strucny popis pluginu
Commands.NoConsole=Tento prikaz nepodporuje pouziti z konzole.
Commands.Notifications.Off=Oznamov\u00e1n\u00ed schopnost\u00ed [[RED]]vypnuto
Commands.Notifications.On=Oznamov\u00e1n\u00ed schopnost\u00ed [[GREEN]]zapnuto
Commands.Offline=[[RED]]Tento p\u0159\u00edkaz nefunguje pro offline hr\u00e1\u010de.
Commands.Other=[[GREEN]]--OSTATNI PRIKAZY--
Commands.Party.ShareMode=[[DARK_GRAY]]M\u00d3D SD\u00cdLEN\u00cd:
Commands.Party.ItemShare=[[GRAY]]P\u0158EDM\u011aT [[DARK_AQUA]]({0})
Commands.Party.ExpShare=[[GRAY]]EXP [[DARK_AQUA]]({0})
Commands.Party.ItemShareCategories=[[DARK_GRAY]]Sd\u00edl\u00edm p\u0159edm\u011bty: [[GRAY]][[ITALIC]]{0}
Commands.Party.Accept=[[RED]]- Potvrdit pozvanku do party
Commands.Party.Chat.Off=Chat jenom pro partu [[RED]]Vypnuty
Commands.Party.Chat.On=Party chat [[RED]]Off
@@ -338,12 +355,14 @@ Commands.Party.Chat.Prefix=[[GREEN]]([[WHITE]]{0}[[GREEN]])
Commands.Party.Commands=[[GREEN]]--P\u0158\u00cdKAZY PARTY--
Commands.Party.Invite.0=[[RED]]VAROVANI: [[GREEN]]Obdrzel jsi pozvanku do party {0} od {1}
Commands.Party.Rename=[[GRAY]]Jm\u00e9no party zm\u011bn\u011bno na: [[WHITE]]{0}
Commands.Party.SetSharing=[[GRAY]]Parta {0} sd\u00edl\u00ed nastaven\u00ed na: [[DARK_AQUA]]{1}
Commands.Party.Kick=[[RED]]Byl jsi vyhozen z party {0}!
Commands.Party.Leave=[[RED]]Opustil jsi party
Commands.Party.None=[RED]]Nejsi v zadne party.
Commands.Party.Quit=[[RED]]- Opustil jsi svoji aktualni partu
Commands.Party.Teleport=<hrac> [[RED]]- Teleport ke clenovi party
Commands.Party.Toggle=[[RED]]- Zapnout party chat
Commands.ptp.NoWorldPermissions=[[RED]][mcMMO] Nem\u00e1\u0161 opr\u00e1vn\u011bn\u00ed pro teleportaci do sv\u011bta {0}.
Commands.PowerLevel.Leaderboard=[[YELLOW]]--mcMMO[[BLUE]] Rebricek [[YELLOW]]Celkovych levelu--
Commands.PowerLevel=[[DARK_RED]]CELKOVY LEVEL: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]] Vsechny vase dovednosti byli byli uspesne resetov\u00e1ny.
@@ -355,15 +374,28 @@ Commands.SkillInfo=/<skill> [[RED]]- Zjist\u00ed\u0161 bliz\u0161\u00ed informac
Commands.Stats.Self=Tvoje statistiky
Commands.Stats=[[RED]]- Shl\u00e9dnout svoje mcMMO statistiky
Commands.ToggleAbility=[[RED]]- Aktivace schopnosti prav\u00fdm tla\u010d\u00edtkem.
Commands.Usage.0=[[RED]]Spr\u00e1vn\u00e9 pou\u017eit\u00ed je /{0}
Commands.Usage.Message=zprava
Commands.Usage.Page=stranka
Commands.Usage.PartyName=jm\u00e9no
Commands.Usage.Password=heslo
Commands.Usage.Player=hrac
Commands.Usage.Rate=hodnota
mcMMO.NoInvites=[[RED]]Momentalne nemas zadne pozvanky
mcMMO.NoPermission=[[DARK_RED]]Nedostatecna prava
mcMMO.NoSkillNote=[[DARK_GRAY]]Pokud nemas pristup k schopnosti, nebude zobrazena.
Party.Forbidden=[mcMMO] Party nejsou povoleny (pod\u00edvej se do Povolen\u00ed)
Party.Help.0=[[RED]]Spr\u00e1vn\u00e9 pou\u017eit\u00ed je [[DARK_AQUA]]{0} <player> [password].
Party.Help.1=[[RED]]Pro vytvo\u0159en\u00ed party, pou\u017eij [[DARK_AQUA]]{0} <name> [password].
Party.Help.2=[[RED]]Pora\u010f se s [[DARK_AQUA]]{0} [[RED]]pro v\u00edce informac\u00ed
Party.Help.3=[[RED]]Pou\u017eij [[DARK_AQUA]]{0} <player> [password] [[RED]]pro vstup nebo [[DARK_AQUA]]{1} [[RED]]pro opu\u0161t\u011bn\u00ed
Party.Help.4=[[RED]]Pro uzam\u010den\u00ed nebo odem\u010den\u00ed tv\u00e9 party, pou\u017eij [[DARK_AQUA]]{0}
Party.Help.5=[[RED]]Pro ochr\u00e1n\u011bn\u00ed va\u0161\u00ed party heslem, pou\u017eij [[DARK_AQUA]]{0} <password>
Party.Help.6=[[RED]]Pro vykopnut\u00ed hr\u00e1\u010de z tv\u00e9 party, pou\u017eij [[DARK_AQUA]]{0} <player>
Party.Help.7=[[RED]]Pro p\u0159esunut\u00ed v\u016fdcovstv\u00ed tv\u00e9 party, pou\u017eij [[DARK_AQUA]]{0} <player>
Party.Help.8=[[RED]]Pro zru\u0161en\u00ed va\u0161\u00ed party pou\u017eij [[DARK_AQUA]]{0}
Party.InvalidName=[[DARK_RED]]Toto nen\u00ed mo\u017en\u00e9 jm\u00e9no pro partu.
Party.Invite.Self=[[RED]]Nem\u016f\u017ee\u0161 pozvat s\u00e1m sebe!
Party.IsLocked=[[RED]]Tahla parta je ji\u017e uzamknuta!
Party.IsntLocked=[[RED]]Tato parta je zamknuta!
Party.Locked=[[RED]]Parta je zamnuta, pouze velitel party t\u011b m\u016f\u017ee p\u0159izvat.
@@ -371,17 +403,29 @@ Party.NotInYourParty=[[DARK_RED]]{0} nen\u00ed ve tv\u00e9 part\u011b.
Party.Owner.New=[[GREEN]]{0} se stal v\u016fdce party.
Party.Owner.NotLeader=[[DARK_RED]]U\u017e nejsi v\u016fdce party.
Party.Owner.Player=[[GREEN]]Nyn\u00ed jsi v\u016fdce party.
Party.Password.None=[[RED]]Tato parta je zaheslov\u00e1na. Pros\u00edm napi\u0161te heslo pro vstup.
Party.Password.Incorrect=[[RED]]Heslo k part\u011b je \u0161patn\u011b!
Party.Password.Set=[[GREEN]]Heslo do party nastaveno na {0}
Party.Player.Invalid=[[RED]]Tohle neni platny hrac.
Party.NotOnline=[[DARK_RED]]{0} nen\u00ed online!
Party.Player.InSameParty=[[RED]]{0} u\u017e je na va\u0161\u00ed party!
Party.PlayerNotInParty=[[DARK_RED]]{0} nen\u00ed na party
Party.Specify=[[RED]]Mus\u00ed\u0161 specifikovat partu.
Party.Teleport.Dead=[[RED]]Nemuzes se teleportovat k mrtvemu hraci.
Party.Teleport.Hurt=[[RED]]Byl jsi zran\u011bn v posledn\u00edch {0} sekund\u00e1ch a nem\u016f\u017ee\u0161 se teleportovat.
Party.Teleport.Player=[[GREEN]]Byl jsi teleportovan k {0}.
Party.Teleport.Self=[[RED]]Nem\u016f\u017ee\u0161 se teleportovat s\u00e1m na sebe!
Party.Teleport.Target=[[GREEN]]{0} se k tobe teleportoval.
Party.Rename.Same=[[RED]]Toto u\u017e je jm\u00e9no va\u0161\u00ed party!
Party.Join.Self=[[RED]]Nem\u016f\u017ee\u0161 nabrat sebe!
Party.Unlocked=[[GRAY]]Party je odemknuta
Party.ShareType.Exp=EXP
Party.ShareType.Item=P\u0158EDM\u011aT
Party.ShareMode.None=\u017d\u00c1DN\u00dd
Party.ShareMode.Equal=STEJN\u00dd
Party.ShareMode.Random=N\u00c1HODN\u00dd
Party.ExpShare.Disabled=[[RED]]Sd\u00edlen\u00ed party zku\u0161enost\u00ed je vypnuto.
Party.ItemShare.Disabled=[[RED]]Sd\u00edlen\u00ed item\u016f v part\u011b je zak\u00e1zan\u00e9.
Commands.XPGain.Acrobatics=Padani
Commands.XPGain.Archery=Zabijen\u00ed monster.
Commands.XPGain.Axes=Utoceni na monstra
@@ -405,7 +449,9 @@ Commands.xprate.started.0=[[GOLD]]XP EVENT PRO mcMMO ZA\u010cAL!
Commands.xprate.started.1=[[GOLD]]mcMMO XP N\u00c1SOBEK JE NYN\u00cd {0}x!
XPRate.Event=[[GOLD]]mcMMO je nyni v modu zmeneneho pomeru ziskavani dovednosti! Nasobek pomeru dovednosti je {0}x!
Effects.Effects=EFEKTY
Effects.Child=[[DARK_GRAY]]LVL: [[GREEN]]{0}
Effects.Level=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Parent=[[GOLD]]{0} -
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Acrobatics=[[DARK_AQUA]]O akrobacii:\n[[YELLOW]]Akrobacie je um \u00fa\u017easn\u00e9ho pohybu v mcMMO.\n[[YELLOW]]D\u00e1v\u00e1 ti bonusy v boji a bonusy po\u0161kozen\u00ed v prost\u0159ed\u00ed.\n[[DARK_AQUA]]Zisk XP:\n[[YELLOW]]K z\u00edsk\u00e1n\u00ed XP v t\u00e9to dovednosti mus\u00ed\u0161 uhybat\n[[YELLOW]]p\u0159ed ranami nep\u0159\u00edtele, nebo p\u0159e\u017e\u00edvat p\u00e1dy.\n[[DARK_AQUA]]Jak fungujou kotrmelce?\n[[YELLOW]]M\u00e1\u0161 \u0161anci kdy\u017e pad\u00e1\u0161 zmen\u0161it \u0161kody, kter\u00e9\n[[YELLOW]]by ti zp\u016fsobily p\u00e1dy. Dr\u017e kl\u00e1vesu na skr\u010den\u00ed\n[[YELLOW]]p\u0159i p\u00e1du k v\u00fd\u0161en\u00ed \u0161ance na kotrmelec.\n[[YELLOW]]T\u00edm vznik\u00e1 P\u016fvabn\u00fd kotrmelec m\u00edsto standartn\u00edho.\n[[YELLOW]]P\u016fvabn\u00e9 kotrmelce jsou jako norm\u00e1ln\u00ed, ale m\u00e1\u0161 2x v\u011bt\u0161\u00ed \u0161anci\n[[YELLOW]]p\u0159e\u017e\u00edt p\u00e1d a jsou bezpe\u010dn\u011bj\u0161\u00ed ne\u017e norm\u00e1ln\u00ed\n[[YELLOW]]\u0160ance na kotrmelec jsou ovlivn\u011bny tv\u00fdmi dovednostmi\n[[DARK_AQUA]]Jak funguje \u00faskok?\n[[YELLOW]]\u00daskok je \u0161ance na rozp\u016flen\u00ed \u0161kod\n[[YELLOW]]kter\u00e9 by jsi z\u00edskal v boji.\n[[YELLOW]]Je ovlivn\u011bn tv\u00fdmi dovednostmi
Guides.Axes=Pruvodce jiz brzy...
@@ -425,6 +471,7 @@ Item.Injured.Wait=Predchvili jsi byl zranen a musis pockat az budes moci pouzit
Skills.Disarmed=[[DARK_RED]]Byl jsi odzbrojen!
Skills.Header=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Potrebujes vic
Skills.Parents=RODI\u010cE
Skills.Stats=[[YELLOW]]{0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=[[RED]]Si moc unaveny na pouziti teto schopnosti znovu.
Stats.Header.Combat=[[GOLD]]-=BOJOVE DOVEDNOSTI=-
@@ -439,10 +486,43 @@ Perks.activationtime.name=Vytrvalost
Perks.activationtime.desc=Prodlu\u017euje pou\u017eit\u00ed schopnosti na {0} sekund.
Hardcore.Player.Loss=[GOLD]][mcMMO] [[DARK_RED]]Ztratil jsi [[BLUE]]{0}[[DARK_RED]] za smrt.
Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]Z\u00edskal jsi [[BLUE]]{0}[[DARK_AQUA]] level\u016f od [[YELLOW]]{1}.
Hardcore.Disabled=[[GOLD]][mcMMO] Hardcore m\u00f3d vypnut.
Hardcore.Enabled=[[GOLD]][mcMMO] Hardcore m\u00f3d zapnut.
Hardcore.PercentageChanged=[[GOLD]][mcMMO] Procentu\u00e1lnost ztr\u00e1cen\u00ed stat\u016f byla zm\u011bn\u011bna na {0}.
Vampirism.Disabled=[[GOLD]][mcMMO] Up\u00edrsk\u00fd m\u00f3d vypnut.
Vampirism.Enabled=[[GOLD]][mcMMO] Up\u00edrsk\u00fd m\u00f3d zapnut.
Vampirism.PercentageChanged=[[GOLD]][mcMMO] Procentu\u00e1lnost odcizen\u00ed stat\u016f byla zm\u011bn\u011bna na {0}.
Spout.Donate=[[YELLOW]][mcMMO] P\u0159isp\u011bjte!
Spout.Menu.ExitButton=V\u00fdchod
Spout.Menu.HudButton.1=Typ HUD: {0}
Spout.Menu.HudButton.2=Zm\u011b\u0148te si styl HUD!
MOTD.Version=[[GOLD]][mcMMO] - verze [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - Web mcMMO
Commands.Description.addlevels=P\u0159id\u00e1v\u00e1 u\u017eivatelsk\u00e9 mcMMO \u00farovn\u011b
Commands.Description.adminchat=Zap\u00edn\u00e1/vyp\u00edn\u00e1 mcMMO administr\u00e1torsk\u00fd chat nebo odes\u00edl\u00e1 administr\u00e1torsk\u00e9 chatov\u00e9 zpr\u00e1vy
Commands.Description.addxp=P\u0159id\u00e1 u\u017eivateli mcMMO XP
Commands.Description.hardcore=Upravuje mcMMO hardcore procentu\u00e1lnost nebo zap\u00edn\u00e1/vyp\u00edn\u00e1 hardcore m\u00f3d
Commands.Description.inspect=Zobraz\u00ed detailn\u00ed mcMMO info jin\u00e9ho hr\u00e1\u010de
Commands.Description.mcability=Zap\u00edn\u00e1/vyp\u00edna p\u0159ipraven\u00ed mcMMO schopnost\u00ed kliknut\u00edm prav\u00e9ho tla\u010d\u00edtka my\u0161i
Commands.Description.mcgod=Zap\u00edn\u00e1/vyp\u00edn\u00e1 mcMMO nesmrteln\u00fd m\u00f3d
Commands.Description.mchud=Zm\u011bn\u00ed tv\u016fj mcMMO HUD styl
Commands.Description.mcmmo=Zobraz\u00ed stru\u010dn\u00fd popis mcMMO
Commands.Description.mcnotify=P\u0159ep\u00edn\u00e1 zobrazov\u00e1n\u00ed upozor\u0148ov\u00e1n\u00ed mcMMO schopnost\u00ed v chatu na zapnuto/vypnuto
Commands.Description.mcpurge=Pro\u010dist\u00ed u\u017eivatele bez mcMMO \u00farovn\u00ed a u\u017eivatele kter\u00e9 se nep\u0159ipojili za posledn\u00edch {0} m\u011bs\u00edc\u016f z mcMMO datab\u00e1ze.
Commands.Description.mcrank=Zobraz\u00ed hr\u00e1\u010dsk\u00e9 mcMMO \u017eeb\u0159\u00ed\u010dky
Commands.Description.mcrefresh=Obnovuje v\u0161echny mcMMO cooldowny
Commands.Description.mcremove=Odstranit u\u017eivatele z datab\u00e1ze mcMMO
Commands.Description.mcstats=Zobraz\u00ed tv\u00e9 mcMMO \u00farovn\u011b a XP
Commands.Description.mctop=Zobraz\u00ed mcMMO \u017eeb\u0159\u00ed\u010dky
Commands.Description.mmoedit=Upravuje u\u017eivatelsk\u00e9 mcMMO \u00farovn\u011b
Commands.Description.mmoupdate=Zkonvertuje mcMMO datab\u00e1zi z Flatfile do MySQL
Commands.Description.party=Nastavuje r\u016fzn\u00e9 mcMMO nastaven\u00ed party
Commands.Description.partychat=Zap\u00edn\u00e1/vyp\u00edn\u00e1 mcMMO chat party nebo odes\u00edl\u00e1 chatov\u00e9 zpr\u00e1vy
Commands.Description.ptp=Teleport k mcMMO clenovi party
Commands.Description.Skill=Zobraz\u00ed detailn\u00ed mcMMO informace o skillu {0}
Commands.Description.skillreset=Resetuje u\u017eivatelsk\u00e9 mcMMO \u00farovn\u011b
Commands.Description.vampirism=Upravuje mcMMO procenta up\u00edrstv\u00ed nebo zap\u00edn\u00e1/vyp\u00edna up\u00edrsk\u00fd m\u00f3d
Commands.Description.xplock=Nastav\u00ed tv\u016fj mcMMO XP bar na konkr\u00e9tn\u00ed mcMMO skill
Commands.Description.xprate=Upravuje mcMMO XP n\u00e1sobek nebo spou\u0161t\u00ed mcMMO XP ud\u00e1lost
UpdateChecker.outdated=Pou\u017e\u00edv\u00e1\u0161 zastaralou verzi mcMMO!
UpdateChecker.newavailable=Nov\u00e1 verze dostupn\u00e1 na BukkitDevu.

View File

@@ -114,6 +114,7 @@ Herbalism.Effect.8=Doppel Drops (Alle Pflanzen)
Herbalism.Effect.9=Verdoppelt die normale Ausbeute (Loot)
Herbalism.Effect.10=Hylian Gl\u00fcck
Herbalism.Effect.11=Gibt eine kleine M\u00f6glichkeit, seltene Gegenst\u00e4nde zu finden
Herbalism.Effect.12=Pilz Daumen
Herbalism.HylianLuck=[[GREEN]]Heute ist das Gl\u00fcck von Hyrule mit dir!
Herbalism.Listener=Pflanzenkunde:
Herbalism.SkillName=PFLANZENKUNDE
@@ -395,6 +396,8 @@ Commands.Usage.3=[[RED]]Proper usage is /{0} {1} {2} {3}
Commands.Usage.Level=level
Commands.Usage.Message=message
Commands.Usage.Page=page
Commands.Usage.PartyName=Gruppenname
Commands.Usage.Password=Passwort
Commands.Usage.Player=player
Commands.Usage.Skill=skill
Commands.Usage.XP=xp
@@ -419,6 +422,11 @@ Party.Teleport.Player=[[GREEN]]Du wurdest zu {0} teleportiert.
Party.Teleport.Self=[[RED]]You can\'t teleport to yourself!
Party.Teleport.Target=[[GREEN]]{0} hat sich zu dir teleportiert.
Party.Unlocked=[[AQUA]]Gruppe entsperrt
Party.Disband=[[GRAY]]Deine Gruppe wurde aufgel\u00f6st
Party.ShareType.Exp=Exp
Party.ShareType.Item=Item
Party.ShareMode.None=Nicht
Party.ShareMode.Random=Zuf\u00e4llig
Commands.XPGain.Acrobatics=Fallen
Commands.XPGain.Archery=Monster angreifen
Commands.XPGain.Axes=Monster angreifen
@@ -444,15 +452,18 @@ Commands.xprate.started.1=[[GOLD]]Die mcMMO XP RATE liegt nun bei {0}x!
XPRate.Event=[[GOLD]]mcMMO hat gerade ein XP-RATE Event. Derzeitige XP Rate: {0}x!
Effects.Effects=EFFEKTE
Effects.Level=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Parent=[[GOLD]]{0} -
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Acrobatics=[[DARK_AQUA]]\u00dcber Akrobatik:\n[[YELLOW]]Akrobatik ist die Kunst, sich in mcMMO anmutig zu bewegen.\n[[YELLOW]]Es bietet Kampf- und Umgebungsschaden-Boni.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]Um XP in diesem Skill zu bekommen, musst du im Kapf Ausweichen\n[[YELLOW]]oder St\u00fcrze aus grosser H\u00f6he \u00fcberlebe.\n\n[[DARK_AQUA]]Wie funktioniert Abrollen?\n[[YELLOW]]Du hast eine passive Chance Fallschaden zu negieren.\n[[YELLOW]]W\u00e4hrend du f\u00e4llst, kannst du dich b\u00fccken um\n[[YELLOW]]um die Chancen zu verdoppeln!\n[[YELLOW]]Dies l\u00f6st eine grazi\u00f6se Rolle aus anstatt einer Normalen.\n[[YELLOW]]Grazi\u00f6se Rollen sind wie Normale, haben aber die doppelte Chance\n[[YELLOW]]ausgel\u00f6st zu werden und bieten mehr Sicherheit gegen Schaden.\n[[YELLOW]]Die Chance auf Abrollen ist an dein Skill-Level gebunden.\n[[DARK_AQUA]]Wie funktionier Ausweichen?\n[[YELLOW]]Ausweichen bietet eine passive Chance auf halben Schaden\n[[YELLOW]]falls du im Kampf verletzt wirst.\n[[YELLOW]]Ausweichen ist an dein Skill-Level gebunden.
Guides.Axes=[[DARK_AQUA]]About Axes:\n[[YELLOW]]With the Axes skill you can use your axe for much more then\n[[YELLOW]]just deforesting! You can hack and chop away at mobs\n[[YELLOW]]and players to gain XP, hitting mobs with the effect of\n[[YELLOW]]knockback and inflicting DEADLY criticals on mobs and players.\n[[YELLOW]]Your axe also becomes a hand-held woodchipper,\n[[YELLOW]]breaking down the enemy\'s armor with ease as your level\n[[YELLOW]]increases.\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill you need hit other mobs or players\n[[YELLOW]]with an Axe.\n\n[[DARK_AQUA]]How does Skull Splitter work?\n[[YELLOW]]This ability allows you to deal an AoE (Area of Effect) hit.\n[[YELLOW]]This AoE hit will deal half as much damage as you did to the\n[[YELLOW]]main target, so it\'s great for clearing out large piles of mobs.\n[[DARK_AQUA]]How does Critical Strikes work?\n[[YELLOW]]Critical Strikes is a passive ability which gives players a\n[[YELLOW]]chance to deal additional damage.\n[[YELLOW]]With the default settings, every 2 skill levels in Axes awards a\n[[YELLOW]]0.1% chance to deal a Critical Strike, causing 2.0 times damage\n[[YELLOW]]to mobs or 1.5 times damage against other players.\n\n\n[[DARK_AQUA]]How does Axe Mastery work?\n[[YELLOW]]Axe Mastery is a passive ability that will add additional damage\n[[YELLOW]]to your hits when using Axes.\n[[YELLOW]]By default, the bonus damage increases by 1 every 50 levels,\n[[YELLOW]]up to a cap of 4 extra damage at level 200.\n\n\n\n[[DARK_AQUA]]How does Armor Impact work?\n[[YELLOW]]Strike with enough force to shatter armor!\n[[YELLOW]]Armor Impact has a passive chance to damage your\n[[YELLOW]]opponent\'s armor. This damage increases as you level in Axes.\n\n\n\n\n[[DARK_AQUA]]How does Greater Impact work?\n[[YELLOW]]You have a passive chance to achieve a greater impact when\n[[YELLOW]]hitting mobs or players with your axe.\n[[YELLOW]]By default this chance is 25%. This passive ability has an\n[[YELLOW]]extreme knockback effect, similar to the Knockback II\n[[YELLOW]]enchantment. In addition, it deals bonus damage to the target.
Guides.Available=[[DARK_AQUA]]Guide for {0} available - type /{1} ? [page]
Guides.Excavation=[[DARK_AQUA]]\u00dcber Graben:\n[[YELLOW]]Graben ist die Kunst, beim Graben im Dreck Sch\u00e4tze zu finden.\n[[YELLOW]]Beim Ausgraben kannst du Sch\u00e4tze finden.\n[[YELLOW]]Um so mehr du gr\u00e4bst, um so mehr Sch\u00e4tze findest du.\n\n[[DARK_AQUA]]XP Zuwachs:\n[[YELLOW]]Um XP in diesem Skill zu bekommen, musst du mit einer Schaufel in der Hand buddeln.\n[[YELLOW]]Nur das Ausgraben von bestimmten Materialen bietet Sch\u00e4tze und XP.\n[[DARK_AQUA]]Materialien:\n[[YELLOW]]Grass, Dreck, Sand, Lehm, Kies, Myzel & Seelensand\n\n[[DARK_AQUA]]Nutzung des Giga-Bohrer:\n[[YELLOW]]Rechtsklicke mit einer Schaufel in deiner Hand um dich zu vorzubereiten.\n[[YELLOW]]Bist zu vorbereitet, hast du 4 Sekunden um\n[[YELLOW]]um im geeigneten Material mit dem Graben zu beginnen, dies\n[[YELLOW]]aktiviert den Gigabohrer.\n[[DARK_AQUA]]Was macht der Giga-Bohrer?\n[[YELLOW]]Der Giga-Bohrer ist eine F\u00e4higkeit mit Abklingzeit,\n[[YELLOW]]welche an den Graben Skill gebunden ist. Sie verdreifacht die Chance\n[[YELLOW]]Sch\u00e4tze zu finden und aktiviert Instant-Abbau\n[[YELLOW]]von ausgrabbaren Materialien.\n\n[[DARK_AQUA]]Wie funktioniert Schatz-J\u00e4ger?\n[[YELLOW]]Jeder verf\u00fcgbare Schatz beim Graben hat seine eigene\n[[YELLOW]]Skill Level Anferderungen um zu droppen, wo diese jeweils liegen\n[[YELLOW]]w\u00e4re zu schwierig um sie hier zu nennen.\n[[YELLOW]]Behalte dir einfach, dass je h\u00f6her dein Skill im Graben,\n[[YELLOW]]desto mehr Sch\u00e4tze kannst du finden.\n[[YELLOW]]Zudem hat jedes Material seine eigene, einzigartige \n[[YELLOW]]Liste an findbaren Sch\u00e4tzen.\n[[YELLOW]]In anderen Worten, du wirst in Erde andere Sch\u00e4tze als in Kies finden.\n[[DARK_AQUA]]Infos \u00fcber Graben:\n[[YELLOW]]Graben ist komplett anpassbar, somit sind die Sch\u00e4tze\n[[YELLOW]]und XP von Server zu Server unterschiedlich!
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Guide[[GOLD]]=-
Guides.Herbalism=[[DARK_AQUA]]Pflanzenkunde:\n[[YELLOW]]Herbalism is about collecting herbs and plants.\n\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]Collect plants and herbs.\n\n\n[[DARK_AQUA]]Compatible Blocks\n[[YELLOW]]Wheat, Potatoes, Carrots, Melons,\n[[YELLOW]]Pumpkins, Sugar Canes, Cocoa Beans, Flowers, Cacti, Mushrooms,\n[[YELLOW]]Nether Wart, Lily Pads, and Vines.\n\n\n\n\n[[DARK_AQUA]]How does Green Terra work?\n[[YELLOW]]Green Terra is an active ability, you can right-click\n[[YELLOW]]while holding a hoe to activate Green Terra.\n[[YELLOW]]Green Terra grants players a chance to get 3x drops from\n[[YELLOW]]harvesting plants. It also gives players the ability to\n[[YELLOW]]spread life into blocks and transform them using seeds\n[[YELLOW]]from your inventory.\n\n[[DARK_AQUA]]How does Green Thumb (Crops) work?\n[[YELLOW]]This passive ability will automatically replant crops when\n[[YELLOW]]harvesting.\n[[YELLOW]]Your chance of success depends on your Herbalism skill.\n[[DARK_AQUA]]How does Green Thumb (Cobble/Stone Brick/Dirt) work?\n[[YELLOW]]This active ability allows you to turn blocks into their\n[[YELLOW]]\"plant-related\" counterparts. You can do this by right-clicking\n[[YELLOW]]a block, while holding seeds. This will consume 1 seed.\n[[DARK_AQUA]]How does Farmer\'s Diet work?\n[[YELLOW]]This passive skill increases the amount of hunger restored\n[[YELLOW]]when eating Bread, Cookies, Melons, Mushroom Soup, Carrots,\n[[YELLOW]]and Potatoes.\n[[DARK_AQUA]]How does Hylian Luck work?\n[[YELLOW]]This passive ability gives you a chance to find rare items\n[[YELLOW]]when certain blocks are broken with a sword.\n[[DARK_AQUA]]How do Double Drops work?\n[[YELLOW]]This passive ability gives players more yield from their\n[[YELLOW]]harvests.
Guides.Mining=[[DARK_AQUA]]\u00dcber Bergbau:\n[[YELLOW]]Bergbau beinhaltet das Abbauen von Steinen und Erzen. Es bietet Boni\n[[YELLOW]]auf die Anzahl der Drops beim Abbau.\n\n[[DARK_AQUA]]XP Zuwachs:\n[[YELLOW]]Um XP in diesem Skill zu bekommen XP, musst du mit einer Spitzhacke in der Hand abbauen.\n[[YELLOW]]Nur bestimmte Materialien gew\u00e4hren XP.\n\n[[DARK_AQUA]]Kompatible Materialien:\n[[YELLOW]]Stein, Kogleerz, Eisenerz, Gilderz, Diemanterz, Redstoneerz,\n[[YELLOW]]Lapiserz, Obsidian, Moosiger Pflasterstein, Endstein,\n[[YELLOW]]Glowstone und Netherstein.\n\n[[DARK_AQUA]]Super-Brecher benutzen:\n[[YELLOW]]Rechtsklicke mit einer Spitzhacke in deiner Hand um dich zu vorzubereiten.\n[[YELLOW]]Bist zu vorbereitet, hast du 4 Sekunden um\n[[YELLOW]]um im geeigneten Material mit dem Abbau zu beginnen, dies\n[[YELLOW]]aktiviert den Super-Brecher.\n\n[[DARK_AQUA]]Was ist der Super-Brecher?\n[[YELLOW]]Der Super-Brecher ist eine F\u00e4higkeit mit Abklingzeit, welche an\n[[YELLOW]]den Bergbau Skill gebunden ist. Sie bitet die Chance\n[[YELLOW]]auf dreifach Drops und aktiviert Instant-Abbau von abbaubaren Materialien.\n\n[[DARK_AQUA]]How to use Blast Mining:\n[[YELLOW]]With a detonator in hand, which is a flint & steel by default,\n[[YELLOW]]right-click on TNT from a distance. This will cause the TNT\n[[YELLOW]]to instantly explode.\n\n[[DARK_AQUA]]Funktion von Z\u00fcndstoff?\n[[YELLOW]]Z\u00fcndstoff ist eine F\u00e4higkeit mit Abklingzeit, welche an den Bergbauskill gebunden ist.\n[[YELLOW]]Sie vergibt Boni, falls mit TNT Abgebaut wird und erlaubt\n[[YELLOW]]TNT aus Entfernung zu z\u00fcnden. Z\u00fcndstoff besteht aus 3 Teilen.\n[[YELLOW]]Teil 1 ist Sprengmeister, welcher den Sprengradius erh\u00f6ht.\n[[YELLOW]]Teil 2 ist Explosions-Experte, welcher den Schaden von\n[[YELLOW]]TNT Explosionen minimiert. Teil 3 erh\u00f6ht einfach\n[[YELLOW]]die Anzahl von gefundenen Erzen und minimiert dabei den Schutt.
Guides.Page.Invalid=Not a valid page number!
Guides.Page.OutOfRange=Diese Seite existiert nicht, es gibt insgesamt nur {0} Seiten.
Guides.Smelting=Kommt d\u00e4mn\u00e4chst
Guides.Usage=[[RED]] Usage is /{0} ? [page]
Inspect.Offline=[[RED]]Du hast keine Rechte um ausgeloggte Spieler zu inspizieren!
Inspect.OfflineStats=mcMMO Werte f\u00fcr ausgeloggte Spieler [[YELLOW]]{0}
@@ -464,6 +475,7 @@ Item.Injured.Wait=[[WHITE]]Du wurdest k\u00fcrzlich verletzt und musst [[YELLOW]
Skills.Disarmed=[[DARK_RED]]Du wurdest entwaffnet!
Skills.Header=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Du ben\u00f6tigst mehr [[GRAY]]{0}
Skills.Parents=Eltern
Skills.Stats=[[YELLOW]]{0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=[[RED]]Du bist zu ausgelaugt, um diese F\u00e4higkeit wieder nutzen zu k\u00f6nnen. [[YELLOW]]({0}s)
Stats.Header.Combat=[[GOLD]]-=KAMPF SKILLS=-
@@ -503,3 +515,7 @@ MOTD.PerksPrefix=[[RED]][mcMMO Perks]
MOTD.Vampire.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Vampirism Stat Leech: [[DARK_RED]]{0}%
MOTD.Version=[[GOLD]][mcMMO] Running version [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO Website
Smelting.Effect.0=Brennstoff Effektivit\u00e4t
Smelting.Effect.2=Doppelte Schmelzchance
Smelting.Listener=Schmelzen:
Smelting.SkillName=Schmelzen

View File

@@ -101,8 +101,10 @@ Excavation.Skillup=[[YELLOW]]Excavation skill increased by {0}. Total ({1})
Fishing.Ability.Chance=[[RED]]Bite Chance: [[YELLOW]]{0}
Fishing.Ability.Info=[[RED]]Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
Fishing.Ability.Locked.0=LOCKED UNTIL {0}+ SKILL (SHAKE)
Fishing.Ability.Locked.1=LOCKED UNTIL {0}+ SKILL (ICE FISHING)
Fishing.Ability.Rank=[[RED]]Treasure Hunter Rank: [[YELLOW]]{0}/5
Fishing.Ability.Shake=[[RED]]Shake Chance: [[YELLOW]]{0}
Fishing.Ability.IceFishing=[[RED]]Ice Fishing: Go fishing in ice
Fishing.Ability.FD=[[RED]]Fisherman''s Diet: [[YELLOW]]Rank {0}
Fishing.Effect.0=Treasure Hunter (Passive)
Fishing.Effect.1=Fish up misc. objects
@@ -114,6 +116,8 @@ Fishing.Effect.6=Fisherman's Diet
Fishing.Effect.7=Improves hunger restored from fished foods
Fishing.Effect.8=Master Angler
Fishing.Effect.9=Improves chance of getting a bite while fishing
Fishing.Effect.10=Ice Fishing
Fishing.Effect.11=Allows you to fish in icy biomes
Fishing.Enchant.Chance=[[RED]]Magic Hunter Chance: [[YELLOW]]{0}
Fishing.Chance.Raining=[[BLUE]] Rain Bonus
Fishing.ItemFound=[[GRAY]]Treasure found!
@@ -236,6 +240,8 @@ Repair.Skills.Mastery=[[RED]]Repair Mastery: [[YELLOW]]Extra {0} durability rest
Repair.Skills.StackedItems=[[DARK_RED]]You can't repair stacked items.
Repair.Skills.Super.Chance=[[RED]]Super Repair Chance: [[YELLOW]]{0}
Repair.Skillup=[[YELLOW]]Repair skill increased by {0}. Total ({1})
Repair.Pretty.Name=Repair
Salvage.Pretty.Name=Salvage
#Arcane Forging
Repair.Arcane.Chance.Downgrade=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
@@ -324,6 +330,7 @@ Taming.Skillup=[[YELLOW]]Taming skill increased by {0}. Total ({1})
Taming.Summon.Complete=[[GREEN]]Summoning complete
Taming.Summon.Fail.Ocelot=[[RED]]You have too many ocelots nearby to summon any more.
Taming.Summon.Fail.Wolf=[[RED]]You have too many wolves nearby to summon any more.
Taming.Summon.Name.Format={0}s {1}
#UNARMED
Unarmed.Ability.Berserk.Length=[[RED]]Berserk Length: [[YELLOW]]{0}s
@@ -522,6 +529,8 @@ Party.Help.5=[[RED]]To password protect your party, use [[DARK_AQUA]]{0} <passwo
Party.Help.6=[[RED]]To kick a player from your party, use [[DARK_AQUA]]{0} <player>
Party.Help.7=[[RED]]To transfer ownership of your party, use [[DARK_AQUA]]{0} <player>
Party.Help.8=[[RED]]To disband your party, use [[DARK_AQUA]]{0}
Party.Help.9=[[RED]]Use [[DARK_AQUA]]{0} [[RED]]to share items with party members
Party.Help.10=[[RED]]Use [[DARK_AQUA]]{0} [[RED]]to enable XP sharing with party members
Party.InformedOnJoin={0} [[GREEN]]has joined your party
Party.InformedOnQuit={0} [[GREEN]]has left your party
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]has set the party name to [[WHITE]]{1}
@@ -563,6 +572,11 @@ Party.ShareMode.Equal=EQUAL
Party.ShareMode.Random=RANDOM
Party.ExpShare.Disabled=[[RED]]Party experience sharing is disabled.
Party.ItemShare.Disabled=[[RED]]Party item sharing is disabled.
Party.ItemShare.Category.Loot=Loot
Party.ItemShare.Category.Mining=Mining
Party.ItemShare.Category.Herbalism=Herbalism
Party.ItemShare.Category.Woodcutting=Woodcutting
Party.ItemShare.Category.Misc=Misc
##xp
Commands.XPGain.Acrobatics=Falling
@@ -627,8 +641,15 @@ Inspect.TooFar=[[RED]]You are too far away to inspect that player!
#ITEMS
Item.ChimaeraWing.Fail=**CHIMAERA WING FAILED!**
Item.ChimaeraWing.Pass=**CHIMAERA WING**
Item.ChimaeraWing.Name=Chimaera Wing
Item.ChimaeraWing.Lore=[[GRAY]]Teleports you to your bed.
Item.Generic.Wait=[[RED]]You need to wait before you can use this again! [[YELLOW]]({0}s)
Item.Injured.Wait=You were injured recently and must wait to use this. [[YELLOW]]({0}s)
#TELEPORTATION
Teleport.Commencing=[[GRAY]]Commencing teleport in [[GOLD]]({0}) [[GRAY]]seconds, please stand still...
Teleport.Cancelled=[[DARK_RED]]Teleportation canceled!
#SKILLS
Skills.Child=[[GOLD]](CHILD SKILL)
Skills.Disarmed=[[DARK_RED]]You have been disarmed!
@@ -637,6 +658,8 @@ Skills.NeedMore=[[DARK_RED]]You need more [[GRAY]]{0}
Skills.Parents = PARENTS
Skills.Stats=[[YELLOW]]{0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=[[RED]]You are too tired to use that ability again. [[YELLOW]]({0}s)
Skills.Cancelled=[[RED]]{0} cancelled!
Skills.ConfirmOrCancel=[[GREEN]]Right-click again to confirm [[GOLD]]{0} [[GREEN]]. Left-click to cancel.
#STATISTICS
Stats.Header.Combat=[[GOLD]]-=COMBAT SKILLS=-

View File

@@ -72,10 +72,12 @@ Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]La tua capacit\u00e0 [[YELLO
Excavation.Skills.GigaDrillBreaker.Other.Off=[[RED]]Giga-Trivella Demolitrice[[GREEN]] si \u00e8 esaurita per [[YELLOW]]{0}
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Giga-Trivella Demolitrice!
Excavation.Skillup=[[YELLOW]]L\'abilit\u00e0 Escavazione \u00e8 aumentata di {0}. Totale ({1})
Fishing.Ability.Chance=[[RED]]Possibilit\u00e0 di Morso: [[YELLOW]]{0}
Fishing.Ability.Info=[[RED]]Cacciatore di Magia: [[GRAY]] **Migliora insieme al Grado di Cacciatore di Tesori**
Fishing.Ability.Locked.0=BLOCCATO FINO AD ABILIT\u00c0 {0}+ (SCUOTERE)
Fishing.Ability.Rank=[[RED]]Grado di Cacciatore di Tesori: [[YELLOW]]{0}/5
Fishing.Ability.Shake=[[RED]]Probabilit\u00e0 di Scuotere: [[YELLOW]]{0}%
Fishing.Ability.IceFishing=[[RED]]Pesca sul Ghiaccio: Vai a pescare sul ghiaccio
Fishing.Ability.FD=[[RED]]Dieta del Pescatore: [[YELLOW]]Grado {0}
Fishing.Effect.0=Cacciatore di Tesori (Passivo)
Fishing.Effect.1=Ripesca oggetti vari
@@ -85,6 +87,10 @@ Fishing.Effect.4=Scuotere (contro Entit\u00e0)
Fishing.Effect.5=Scrolla oggetti di dosso ai mob con una canna da pesca
Fishing.Effect.6=Dieta del Pescatore
Fishing.Effect.7=Aumenta la fame recuperata tramite cibi pescati
Fishing.Effect.8=Pescatore Provetto
Fishing.Effect.9=Migliore le possibilit\u00e0 di ricevere un morso mentre si pesca
Fishing.Effect.10=Pesca sul Ghiaccio
Fishing.Effect.11=Ti permette di pescare nei biomi ghiacciati
Fishing.Enchant.Chance=[[RED]]Possibilit\u00e0 di Cacciatore di Magia: [[YELLOW]]{0}
Fishing.Chance.Raining=[[BLUE]] Bonus Pioggia
Fishing.ItemFound=[[GRAY]]Hai trovato un tesoro!
@@ -155,6 +161,7 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]S
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]La tua capacit\u00e0 [[YELLOW]]Super Demolitore [[GREEN]]si \u00e8 rigenerata!
Mining.Skillup=[[YELLOW]]L\'abilit\u00e0 Estrazione \u00e8 aumentata di {0}. Totale ({1})
Mining.Blast.Boom=[[GRAY]]**BOOM**
Mining.Blast.Effect=+{0} minerale raccolto, -{1} macerie prodotte, drop x{2}
Mining.Blast.Radius.Increase=[[RED]]Incremento del Raggio di Esplosione: [[YELLOW]]+{0}
Mining.Blast.Rank=[[RED]]Estrazione Esplosiva: [[YELLOW]] Grado {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Estrazione Esplosiva!
@@ -198,6 +205,8 @@ Repair.Skills.Mastery=[[RED]]Maestria nella Riparazione: [[YELLOW]]{0} di durata
Repair.Skills.StackedItems=[[DARK_RED]]Non puoi riparare oggetti ammucchiati.
Repair.Skills.Super.Chance=[[RED]]Possibilit\u00e0 Super Riparazione: [[YELLOW]]{0}
Repair.Skillup=[[YELLOW]]L\'abilit\u00e0 Riparazione \u00e8 aumentata di {0}. Totale ({1})
Repair.Pretty.Name=Riparazione
Salvage.Pretty.Name=Rottamazione
Repair.Arcane.Chance.Downgrade=[[GRAY]]Probabilit\u00e0 di Degradazione di FA: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]Tasso di Successo di FA: [[YELLOW]]{0}%
Repair.Arcane.Downgrade=[[RED]]Il potere arcano di questo oggetto \u00e8 diminuito.
@@ -459,6 +468,8 @@ Party.Help.5=[[RED]]Per proteggere la tua compagnia con una parola d\'ordine, us
Party.Help.6=[[RED]]Per espellere un giocatore dalla tua compagnia, usa [[DARK_AQUA]]{0} <giocatore>
Party.Help.7=[[RED]]Per trasferire la propriet\u00e0 della tua compagnia, usa [[DARK_AQUA]]{0} <giocatore>
Party.Help.8=[[RED]]Per sciogliere la tua compagnia, usa [[DARK_AQUA]]{0}
Party.Help.9=[[RED]]Usa [[DARK_AQUA]]{0} [[RED]]per condividere oggetti con i membri della tua compagnia
Party.Help.10=[[RED]]Usa [[DARK_AQUA]]{0} [[RED]]per abilitare la condivisione di XP con i membri della tua compagnia
Party.InformedOnJoin={0} [[GREEN]]si \u00e8 unito alla tua compagnia
Party.InformedOnQuit={0} [[GREEN]]ha abbandonato la tua compagnia
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]ha impostato il nome della compagnia come [[WHITE]]{1}
@@ -499,9 +510,12 @@ Party.ShareMode.Equal=EQUA
Party.ShareMode.Random=CASUALE
Party.ExpShare.Disabled=[[RED]]La condivisione di esperienza di compagnia \u00e8 disabilitata.
Party.ItemShare.Disabled=[[RED]]La condivisione di oggetti di compagnia \u00e8 disabilitata.
Party.ItemShare.Category.Loot=Bottino
Party.ItemShare.Category.Herbalism=Erboristeria
Commands.XPGain.Acrobatics=Cadere
Commands.XPGain.Archery=Attaccare Mostri
Commands.XPGain.Axes=Attaccare Mostri
Commands.XPGain.Child=Ottiene livelli dall\'Abilit\u00e0 Madre
Commands.XPGain.Excavation=Scavare e trovare tesori
Commands.XPGain.Fishing=Pescare (ma va\'?!)
Commands.XPGain.Herbalism=Raccogliere Piante
@@ -523,7 +537,9 @@ Commands.xprate.started.0=[[GOLD]]E\' INIZIATO UN EVENTO XP PER mcMMO!
Commands.xprate.started.1=[[GOLD]]IL TASSO DI XP DI mcMMO ORA E\' {0}x!
XPRate.Event=[[GOLD]]E\' in corso un evento mcMMO sul tasso XP! Il tasso XP \u00e8 {0}x!
Effects.Effects=EFFETTI
Effects.Child=[[DARK_GRAY]]LVL: [[GREEN]]{0}
Effects.Level=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Parent=[[GOLD]]{0} -
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Acrobatics=[[DARK_AQUA]]Riguardo Acrobatica:\n[[YELLOW]]Acrobatica \u00e8 l\'arte di muoversi agilmente in mcMMO.\n[[YELLOW]]Fornisce bonus in combattimento e contro i danni ambientali.\n\n[[DARK_AQUA]]GUADAGNARE XP:\n[[YELLOW]]Per guadagnare XP in questa capacit\u00e0 devi eseguire una\n[[YELLOW]]schivata in combattimento o sopravvivere a una caduta da\n[[YELLOW]]altezze che ti farebbero danni.\n\n[[DARK_AQUA]]Come funziona Capriola?\n[[YELLOW]]Hai una possibilit\u00e0 passiva quando subisci danno da caduta\n[[YELLOW]]di annullare il danno fatto. Puoi tenere premuto il tasto furtivo\n[[YELLOW]]durante la caduta per raddoppiare le possibilit\u00e0.\n[[YELLOW]]Questo attiva una Capriola Aggraziata invece di una normale.\n[[YELLOW]]Le Capriole Aggraziate sono come le capriole normali ma hanno\n[[YELLOW]]il doppio di possibilit\u00e0 di avvenire e forniscono pi\u00f9 incolumit\u00e0 dai\n[[YELLOW]]danni rispetto alle capriole normali. Le possibilit\u00e0 di fare una\n[[YELLOW]]capriola sono legate al tuo livello di abilit\u00e0.\n\n[[DARK_AQUA]]Come funziona Schivata?\n[[YELLOW]]La Schivata \u00e8 una possibilit\u00e0 passiva di dimezzare il danno\n[[YELLOW]]quando vieni ferito in combattimento.\n[[YELLOW]]\u00c8 legata al tuo livello di abilit\u00e0.
Guides.Archery=[[DARK_AQUA]]Riguardo Tiro con l\'Arco:\n[[YELLOW]]Tiro con \'Arco riguarda scoccare frecce col tuo arco.\n[[YELLOW]]Fornisce vari bonus di combattimento, per esempio pi\u00f9 danni\n[[YELLOW]]in proporzione al tuo livello e la capacit\u00e0 di confondere i tuoi\n[[YELLOW]]avversari in PVP. Oltre a questo, puoi recuperare\n[[YELLOW]]dai cadaveri dei tuoi nemici alcune delle frecce usate.\n\n[[DARK_AQUA]]GUADAGNARE XP:\n[[YELLOW]]Per guadagnare XP in questa abilit\u00e0 devi colpire a distanza\n[[YELLOW]]mob o altri giocatori.\n\n[[DARK_AQUA]]Come funziona Tiro da Maestro?\n[[YELLOW]]Tiro da Maestro fornisce danno addizionale ai tuoi tiri.\n[[YELLOW]]Il bonus al danno da TIro da Maestro aumenta man mano che\n[[YELLOW]]sali di livello in Tiro con l\'Arco.\n[[YELLOW]]Con le impostazioni di base, il tuo danno con l\'arco aumenta del\n[[YELLOW]]10% ogni 50 livelli, fino a un massimo del 200% di danno bonus.\n\n[[DARK_AQUA]]Come funziona Stordire?\n[[YELLOW]]Hai una probabilit\u00e0 passiva di stordire altri giocatori quando\n[[YELLOW]]li colpisci. Quando Stordire si attiva, forza i tuoi avversari\n[[YELLOW]]a guardare dritto in alto per un breve periodo.\n[[YELLOW]]Un colpo Stordente infligge anche 4 danni addizionali (2 cuori).\n\n[[DARK_AQUA]]Come funziona Recupero Frecce?\n[[YELLOW]]Hai una probabilit\u00e0 passiva di di recuperare alcune\n[[YELLOW]]delle tue frecce quando uccidi un mob con l\'arco.\n[[YELLOW]]Questa probabilit\u00e0 aumenta man mano che sali di livello\n[[YELLOW]]in Tiro con l\'Arco.\n[[YELLOW]]Di base, questa abilit\u00e0 aumenta dello 0,1% per livello, fino al 100%\n[[YELLOW]]a livello 1.000.
@@ -546,14 +562,23 @@ Inspect.Offline=[[RED]]Non hai il permesso di esaminare giocatori disconnessi!
Inspect.OfflineStats=Statistiche mcMMO del Giocatore Disconnesso [[YELLOW]]{0}
Inspect.Stats=[[GREEN]]Statistiche mcMMO di [[YELLOW]]{0}
Inspect.TooFar=[[RED]]Sei troppo lontano da quel giocatore per esaminarlo!
Item.ChimaeraWing.Fail=**ALA CHIMERA FALLITA!**
Item.ChimaeraWing.Pass=**ALA CHIMERA**
Item.ChimaeraWing.Fail=**ALA CHIMERICA FALLITA!**
Item.ChimaeraWing.Pass=**ALA CHIMERICA**
Item.ChimaeraWing.Name=Ala Chimerica
Item.ChimaeraWing.Lore=[[GRAY]]Ti teletrasporta verso il tuo letto.
Item.Generic.Wait=[[RED]]Bisogna che aspetti prima di poter usarlo di nuovo! [[YELLOW]]({0}s)
Item.Injured.Wait=Sei stato ferito di recente e devi aspettare per usarla. [[YELLOW]]({0}s)
Teleport.Commencing=[[GRAY]]Il teletrasporto avr\u00e0 inizio fra [[GOLD]]({0}) [[GRAY]]second, resta fermo per favore...
Teleport.Cancelled=[[DARK_RED]]Teletrasporto annullato!
Skills.Child=[[GOLD]](ABILIT\u00c0 FIGLIA)
Skills.Disarmed=[[DARK_RED]]Sei stato disarmato!!
Skills.Header=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Hai bisogno di piu
Skills.Parents=ABILIT\u00c0 MADRI
Skills.Stats=[[YELLOW]]{0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=[[RED]]Sei troppo stanco per poter riutilizzare questa abilita attendi.
Skills.Cancelled=[[RED]]{0} annullata!
Skills.ConfirmOrCancel=[[GREEN]]Clic destro per confermare [[GOLD]]{0} [[GREEN]]. Clic sinistro per annullare.
Stats.Header.Combat=[[GOLD]]-=ABILITA\' DI COMBATTIMENTO=-
Stats.Header.Gathering=[[GOLD]]-=ABILITA\' DI RACCOLTA=-
Stats.Header.Misc=[[GOLD]]-=ABILITA\' VARIE=-
@@ -597,6 +622,10 @@ MOTD.PerksPrefix=[[RED]][Vantaggi mcMMO]
MOTD.Vampire.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Salasso di Statistiche da Vampirismo: [[DARK_RED]]{0}%
MOTD.Version=[[GOLD]][mcMMO] versione [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - Sito di mcMMO
Smelting.Ability.FuelEfficiency=[[RED]]Moltiplicatore di Efficienza Combustibile: [[YELLOW]]x{0}
Smelting.Effect.0=Efficienza Combustibile
Smelting.Effect.5=Aumenta i normali XP ottenuti fondendo
Smelting.Effect.7=Probabilit\u00e0 che i minerali siano fusi istantaneamente mentre li si estrae
Commands.Description.addlevels=Aggiungi XP di mcMMO a un utente
Commands.Description.adminchat=Attiva o disattiva la chat amministratori di mcMMO o invia messaggi in chat amministratori
Commands.Description.addxp=Aggiunge XP mcMMO a un utente

View File

@@ -0,0 +1,58 @@
Acrobatics.Combat.Proc=[[GREEN]]**\u907f\u3051\u3089\u308c\u307e\u3059**
Acrobatics.SkillName=\u30a2\u30af\u30ed\u30d0\u30c3\u30c8
Acrobatics.Skillup=[[YELLOW]\u30de\u30a4\u30cb\u30f3\u30b0\u304c{0}\u4e0a\u6607\u3057\u305f\u3002\u5408\u8a08\uff08{1}\uff09
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u306f [[RED]]\u30b9\u30ab\u30eb\u30b9\u30d7\u30ea\u30c3\u30bf\u30fc[[DARK_GREEN]]\u3092\u4f7f\u7528\u3057\u305f\uff01
Excavation.SkillName=\u767a\u6398
Herbalism.Listener=\u85ac\u8349\u5b66\uff1a
Mining.Ability.Length=[[RED]]\u30b9\u30fc\u30d1\u30fc\u30d6\u30ec\u30a4\u30ab\u30fc\u306e\u767a\u52d5\u6642\u9593: [[YELLOW]]{0}\u79d2
Mining.Ability.Ready=[[GREEN]]**\u3042\u306a\u305f\u306f\u3001\u30d4\u30c3\u30b1\u30eb\u3092\u7528\u610f**
Mining.Listener=\u30de\u30a4\u30cb\u30f3\u30b0:
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u3042\u306a\u305f\u306e[[YELLOW]]\u30b9\u30fc\u30d1\u30fc\u30d6\u30ec\u30a4\u30ab\u30fc[[GREEN]]\u30a2\u30d3\u30ea\u30c6\u30a3\u304c\u518d\u4f7f\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3057\u305f\uff01
Mining.Skillup=[[YELLOW]\u30de\u30a4\u30cb\u30f3\u30b0\u30b9\u30ad\u30eb{0}\u306f\u5897\u3048\u305f\u3002\u5408\u8a08\uff08{1}\uff09
Mining.Blast.Refresh=[[GREEN]]\u3042\u306a\u305f\u306e[[YELLOW]]\u30d6\u30e9\u30b9\u30c8\u30de\u30a4\u30cb\u30f3\u30b0[[GREEN]]\u30a2\u30d3\u30ea\u30c6\u30a3\u306f\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3057\u305f\uff01
Repair.Effect.4=\u30b9\u30fc\u30d1\u30fc\u30ea\u30da\u30a2
Repair.Effect.7=\u30c0\u30a4\u30e4\u30e2\u30f3\u30c9\u306e\u30c4\u30fc\u30eb & \u9632\u5177\u3092\u4fee\u7e55
Repair.Effect.9=\u9b54\u6cd5\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u4fee\u5fa9
Repair.Listener=\u4fee\u7e55:
Repair.Skills.AdeptDiamond=[[DARK_RED]]\u30c0\u30a4\u30e4\u30e2\u30f3\u30c9\u30c4\u30fc\u30eb\u3092\u4fee\u5fa9\u3059\u308b\u70ba\u306e\u5341\u5206\u306a\u30b9\u30ad\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\uff01
Repair.Skills.AdeptGold=[[DARK_RED]]\u3042\u306a\u305f\u306f\u91d1\u3092\u4fee\u5fa9\u3059\u308b\u305f\u3081\u306b\u5341\u5206\u306a\u30b9\u30ad\u30eb\u3092\u6301\u3063\u3066\u3044\u306a\u3044\u3002
Repair.Skills.AdeptStone=[[DARK_RED]]\u77f3\u30c4\u30fc\u30eb\u3092\u4fee\u5fa9\u3059\u308b\u70ba\u306e\u5341\u5206\u306a\u30b9\u30ad\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\uff01
Repair.Skillup=[[YELLOW]]\u30ea\u30da\u30a2\u304c{0}\u4e0a\u6607\u3057\u305f\u3002\u5408\u8a08({1})
Repair.Arcane.Fail=[[RED]]\u79d8\u5100\u30d1\u30ef\u30fc\u304c\u6c38\u4e45\u30a2\u30a4\u30c6\u30e0\u3092\u6b8b\u3057\u3066\u3044\u308b\u3002
Swords.Combat.Bleeding.Stopped=[[GRAY]]\u51fa\u8840\u306f [[GREEN]]\u6b62\u307e\u308a\u307e\u3057\u305f[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**\u6575\u304c\u51fa\u8840**
Swords.Combat.Countered=[[GREEN]]**\u30ab\u30a6\u30f3\u30bf\u30fc\u30a2\u30bf\u30c3\u30af\uff01**
Swords.Skills.SS.On=[[GREEN]]**\u8d77\u52d5\u3059\u308b\u30ae\u30b6\u30ae\u30b6\u306e\u30b9\u30c8\u30e9\u30a4\u30ad**
Taming.Ability.Bonus.2=\u539a\u3044\u6bdb\u76ae
Taming.Listener.Wolf=[[DARK_GRAY]]\u3042\u306a\u305f\u306e\u72fc\u306f\u3042\u306a\u305f\u306b\u3064\u3044\u3066\u3044\u304d\u307e\u3059
Unarmed.Listener=\u7d20\u624b:
Unarmed.Skills.Berserk.Off=[[RED]]**\u30d0\u30fc\u30b5\u30fc\u30af\u304c\u30aa\u30d5\u306b\u306a\u308a\u307e\u3057\u305f**
Woodcutting.Ability.0=\u30ea\u30fc\u30d5\u30d6\u30ed\u30ef\u30fc
Woodcutting.Ability.1=\u8449\u3063\u3071\u3092\u5439\u304d\u98db\u3070\u3059
Woodcutting.SkillName=\u304d\u3053\u308a
Woodcutting.Skills.TreeFeller.Other.Off=[[RED]]\u304d\u3053\u308a[[GREEN]]\u30b9\u30ad\u30eb\u306f\u3042\u3068[[YELLOW]]{0}\u79d2\u9593[[GREEN]]\u4f7f\u3048\u307e\u305b\u3093\u3002
Ability.Generic.Template=[[RED]]{0}: [[YELLOW]]{1}
Combat.TouchedFuzzy=[[DARK_RED]]\u3042\u3044\u307e\u3044\u306a\u611f\u3058\u304c\u3057\u307e\u3057\u305f\u3002\u30d5\u30a7\u30eb\u30c8\u30fb\u30c7\u30a3\u30b8\u30fc\u3002
Commands.AdminChat.Off=\u7ba1\u7406\u8005\u5c02\u7528\u30c1\u30e3\u30c3\u30c8\u306f[[RED]]off[[WHITE]]\u3067\u3059\u3002
Commands.DoesNotExist=[[RED]]\u305d\u306e\u30d7\u30ec\u30fc\u30e4\u30fc\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - \u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u5909\u66f4\u3057\u307e\u3059
Commands.Party.Kick=[[RED]]\u3042\u306a\u305f\u306f\u3001\u30d1\u30fc\u30c6\u30a3\u30fc{0}\u304b\u3089\u8ffd\u3044\u51fa\u3055\u308c\u307e\u3057\u305f
Commands.PowerLevel=[[DARK_RED]]\u30d1\u30ef\u30fc\u30ec\u30d9\u30eb:[[GREEN]]{0}
Commands.Usage.PartyName=\u540d\u524d
Party.Player.Invalid=[[RED]]\u6709\u52b9\u306a\u30d7\u30ec\u30fc\u30e4\u30fc\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
Party.Unlocked=[[GRAY]]\u30d1\u30fc\u30c6\u30a3\u30fc\u306e\u30ed\u30c3\u30af\u304c\u89e3\u9664\u3055\u308c\u305f
Commands.XPGain.Excavation=\u6398\u524a\u3057\u3066\u5b9d\u7269\u3092\u898b\u3064\u3051\u3088\u3046
Commands.XPGain.Herbalism=\u85ac\u8349\u306e\u53ce\u7a6b
Commands.XPGain.Mining=\u9271\u696d\u77f3\u3068\u9271\u77f3
Commands.XPGain.Taming=\u52d5\u7269\u3092\u98fc\u3044\u6163\u3089\u3059\u3001\u307e\u305f\u306f\u6226\u95d8\u3092\u3059\u308b/\u3042\u306a\u305f\u306e\u72fc
Commands.XPGain=[[DARK_GRAY]]\u7d4c\u9a13\u5024\u3092\u624b\u306b\u5165\u308c\u305f: [[WHITE]]{0}
Effects.Effects=\u52b9\u679c
Guides.Excavation=[[DARK_AQUA]]\u63a1\u6398\u306b\u3064\u3044\u3066:\n[[YELLOW]]\u767a\u6398\u306f\u3001\u5b9d\u7269\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u884c\u70ba\u3067\u3042\u308b\u3002\n[[YELLOW]]\u3042\u306a\u305f\u306f\u571f\u5730\u3092\u6398\u308b\u3053\u3068\u306b\u3088\u308a\u5b9d\u7269\u3092\u898b\u3064\u3051\u3089\u308c\u308b\u3002\n[[YELLOW]]\u3088\u308a\u591a\u304f\u5b9d\u7269\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002\n\n[[DARK_AQUA]]\u7d4c\u9a13\u5024\u3092\u7372\u5f97:\n[[YELLOW]]\u3042\u306a\u305f\u304c\u30b7\u30e3\u30d9\u30eb\u3092\u6301\u3061\u3001\u6398\u308b\u3053\u3068\u3067\u3053\u306e\u30b9\u30ad\u30eb\u306e\u7d4c\u9a13\u5024\u3092\u7372\u5f97\u3059\u308b\u3002\n[[YELLOW]]\u7279\u5b9a\u306e\u7269\u3092\u6398\u308b\u3053\u3068\u3067\u5b9d\u7269\u304a\u3088\u3073\u7d4c\u9a13\u5024\u3092\u7372\u5f97\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002\n[[DARK_AQUA]]\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u7269:\n[[YELLOW]]\u8349\u30d6\u30ed\u30c3\u30af\u3001\u571f\u3001\u7802\u3001\u7c98\u571f\u3001\u7802\u5229\u3001\u83cc\u7cf8\u3001\u30bd\u30a6\u30eb\u30b5\u30f3\u30c9\n\n[[DARK_AQUA]]\u30ae\u30ac\u30c9\u30ea\u30eb\u30d6\u30ec\u30a4\u30ab\u30fc\u306e\u4f7f\u3044\u65b9:\n[[YELLOW]]\u30b7\u30e3\u30d9\u30eb\u3092\u6301\u3061\u3001\u53f3\u30af\u30ea\u30c3\u30af\u3059\u308b\u3053\u3068\u3067\u6e96\u5099\u3067\u304d\u308b\u3002\n[[YELLOW]]\u3053\u306e\u72b6\u614b\u306f\u30014\u79d2\u9593\u30ad\u30fc\u30d7\u3055\u308c\u308b\u3002\n[[YELLOW]]\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u7269\u3092\u6398\u308d\u3046\u3068\u3059\u308b\u3068\n[[YELLOW]]\u30ae\u30ac\u30c9\u30ea\u30eb\u30d6\u30ec\u30a4\u30ab\u30fc\u304c\u767a\u52d5\u3057\u307e\u3059\u3002\n[[DARK_AQUA]]\u30ae\u30ac\u30c9\u30ea\u30eb\u30d6\u30ec\u30a4\u30ab\u30fc\u3068\u306f\u306a\u3093\u3067\u3059\u304b?\n[[YELLOW]]\u30ae\u30ac\u30c9\u30ea\u30eb\u30d6\u30ec\u30a4\u30ab\u30fc\u3068\u306f\u80fd\u529b\u3067\u3042\u308b\u3002\n[[YELLOW]]\u63a1\u6398\u30b9\u30ad\u30eb\u3002\u4e09\u56de\u306e\u30c1\u30e3\u30f3\u30b9\u304c\u3042\u308b\n[[YELLOW]]\u5b9d\u7269\u3092\u898b\u3064\u3051\u308b\u3068\u30a4\u30f3\u30b9\u30bf\u30f3\u30c8\u30d6\u30ec\u30fc\u30af\u304c\u53ef\u80fd\n[[YELLOW]]\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u7269\u306b\u9650\u308b\u3002\n\n[[DARK_AQUA]]\u30c8\u30ec\u30b8\u30e3\u30fc\u30cf\u30f3\u30bf\u30fc\u306f\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3057\u307e\u3059\u304b?\n[[YELLOW]]Every possible treasure for Excavation has its own\n[[YELLOW]]skill level requirement for it to drop, as a result it\'s\n[[YELLOW]]difficult to say how much it is helping you.\n[[YELLOW]]\u3042\u306a\u305f\u306e\u63a1\u6398\u30b9\u30ad\u30eb\u304c\u9ad8\u3051\u308c\u3070\u9ad8\u3044\u307b\u3069\n[[YELLOW]]\u3088\u308a\u591a\u304f\u306e\u5b9d\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n[[YELLOW]]And also keep in mind that each type of Excavation\n[[YELLOW]]compatible material has its own unique list of treasures.\n[[YELLOW]]In other words you will find different treasures in Dirt\n[[YELLOW]]than you would in Gravel.\n[[DARK_AQUA]]Notes about Excavation:\n[[YELLOW]]Excavation drops are completely customizeable\n[[YELLOW]]So results vary server to server.
Item.ChimaeraWing.Pass=**\u30ad\u30de\u30a4\u30e9\u306e\u7ffc**
Skills.Disarmed=[[DARK_RED]]\u3042\u306a\u305f\u306f\u65e2\u306b\u6b66\u88c5\u89e3\u9664\u3057\u3066\u3044\u307e\u3059!
Stats.Header.Combat=[[GOLD]]\u6226\u95d8\u306e\u6280\u8853
Stats.Header.Gathering=[[GOLD]]-=\u53ce\u96c6\u30b9\u30ad\u30eb=-
Stats.Own.Stats=[[GREEN]][mcMMO] \u7d71\u8a08\u60c5\u5831
Commands.Description.mcremove=mcMMO\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30e6\u30fc\u30b6\u3092\u524a\u9664\u3057\u307e\u3059\u3002
UpdateChecker.outdated=\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306emcMMO\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059!
UpdateChecker.newavailable=BukkitDev\u306b\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u3002

View File

@@ -1,19 +1,57 @@
Acrobatics.Combat.Proc=[[GREEN]]**TRIKS**
Acrobatics.SkillName=AKROB\u0100TIKA
Axes.Ability.Bonus.1=Bonus {0} boj\u0101jumi
Axes.Combat.CritChance=[[RED]]Iesp\u0113ja kritiskajam uzbrukumam: [[YELLOW]]{0}%
Axes.Skills.SS.On=[[GREEN]]**Galvaskausu \u0161\u0137\u0113l\u0113js AKTIVIZ\u0112TS**
Axes.Skills.SS.Refresh=[[GREEN]]Tava [[YELLOW]]Galvaskausu \u0160\u0137\u0113l\u0101ja [[GREEN]]sp\u0113ja ir atjaunota!
Axes.Skillup=[[YELLOW]]Cirt\u0113ja prasme palielin\u0101j\u0101s par {0}. Kopum\u0101 ({1})
Excavation.SkillName=EKSKAV\u0100CIJA
Fishing.Listener=Zvejo\u0161ana:
Herbalism.Listener=D\u0101rzniec\u012bba:
Mining.Ability.Ready=[[GREEN]]**TU SAGATAVOJI SAVU CIRTNI**
Mining.Listener=Rak\u0161anas:
Mining.Skillup=[[TELLOW]]Rak\u0161anas prasme palielin\u0101j\u0101s par {0}. Kopum\u0101 ({1})
Repair.Effect.0=Salabot
Repair.Effect.9=Salabot ma\u0123iskos priek\u0161metus
Repair.Listener=Salabot:
Repair.SkillName=SALABOT
Repair.Skills.FeltEasy=[[GRAY]]Tas lik\u0101s viegli.
Repair.Arcane.Fail=[[RED]]Mistisk\u0101 ener\u0123ija pameta lietu
Swords.Combat.Bleeding.Stopped=[[GRAY]]Tu [[GREEN]]beidzi[[GRAY]] asi\u0146ot!
Swords.Combat.SS.Struck=[[DARK_RED]]Skarts no SERRATED STRIKES!
Swords.Effect.0=Pretsitiens
Swords.Skills.SS.Other.Off=[[RED]]Serrated Stikes[[GREEN]]sp\u0113ja beidz\u0101s sp\u0113l\u0113t\u0101jam [[YELLOW]]{0}
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] izmantoja [[RED]]Serrated Strikes
Taming.Ability.Bonus.8=\u0100tro \u0112dienu Pakalpojumi
Taming.Effect.16=\u0100tro \u0112dienu Pakalpojumi
Unarmed.Effect.2=Atbru\u0146ot(Sp\u0113l\u0113t\u0101ju)
Unarmed.Listener=Atbru\u0146ots:
Unarmed.SkillName=NEAPBRU\u0145OTS
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]Tavas[[YELLOW]]Koka G\u0101z\u0113ja [[GREEN]]prasmes atjaunotas!
Woodcutting.Skills.TreeFellerThreshold=[[RED]]Tas koks ir par lielu!
Ability.Generic.Template.Lock=[[GRAY]]{0}
Combat.BeastLoreHealth=[[DARK_AQUA]]DZ\u012aV\u012aBA ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.TouchedFuzzy=[[DARK_RED]]Piek\u0101ries pl\u016bdu\u0161am. Apdulli.
Commands.AdminChat.Off=Tikai Adminu \u010dats [[RED]]Izsl\u0113gt
Commands.AdminToggle=[[RED]]- Tikai administratoru \u010dats
Commands.Disabled=[[RED]]\u0160\u012b komanda ir atsl\u0113gta
Commands.Invite.Accepted=[[GREEN]]Iel\u016bgums Apstiprin\u0101ts. Tu pievienojies PARTY\'am {0}
Commands.NoConsole=\u0160\u012b komanda neatbalsta konsules izmanto\u0161anu.
Commands.Party.Invite.0=[[RED]]BR\u012aDIN\u0100JUMS: [[GREEN]]Tu sa\u0146\u0113mi PARTY uzaicin\u0101jumu uz {0} no {1}
Commands.Party.Kick=[[RED]]Tu tiki izmests no PARTY {0}!
Commands.Party.Leave=[[RED]]Tu pameti PARTY
Commands.Stats.Self=TAVI STATI
mcMMO.NoPermission=[[DARK_RED]]Nepietiekama at\u013cauja.
Party.Teleport.Target=[[GREEN]]{0} teleport\u0113j\u0101s pie tevis.
Party.Unlocked=[[GRAY]] Party tika atv\u0113rts
Commands.XPGain.Fishing=Mak\u0161\u0137er\u0113\u0161ana (Ej izdom\u0101!)
Commands.XPGain.Mining=Rokot Akmeni & R\u016bdu
Commands.XPGain.Swords=Uzbr\u016bkot briesmo\u0146iem
Commands.XPGain.Taming=Dz\u012bvnieku pieradin\u0101\u0161ana vai prasme w/ tavi su\u0146i
Commands.XPGain=[[DARK_GRAY]]XP GUVUMS: [[WHITE]]{0}
Effects.Effects=EFEKTI
Guides.Excavation=[[DARK_AQUA]]Par RAK\u0160ANU:\n[[YELLOW]]Rak\u0161ana ir da\u013ca no centieniem, rokot zemi, atrast d\u0101rgumus\n[[YELLOW]]Rokot zemi tu atrad\u012bs d\u0101rgumus\n[[YELLOW]]Jo vair\u0101k tu to dari, jo vair\u0101k d\u0101rgumus tu atrodi\n\n[[DARK_AQUA]]XP GUVUMS:\n[[YELLOW]]Lai ieg\u016btu XP, tev ir j\u0101rok ar l\u0101pstu, nevis roku.\n[[YELLOW]]Tikai da\u017eu materi\u0101lu rak\u0161ana tev dos d\u0101rgumus un XP.\n[[DARK_AQUA]]Materi\u0101li, kas dod pieredzi.\n[[YELLOW]]Z\u0101le, Dub\u013ci, Smilts, M\u0101ls, Grants, Mic\u0113lijs, Soul Sand\'s\n\n[[DARK_AQUA]]K\u0101 izmantot Giga Drill Breaker:\n[[YELLOW]]Ar l\u0101pstu rok\u0101s uzspied labo-klik\u0161\u0137i, lai sagatavotu instrumentu\n[[YELLOW]]Kad esi uzspiedis labo klik\u0161\u0137i, tev ir 4 sekundes, lai\n[[YELLOW]]g\u016btu kontaktu ar at\u013cautajiem materi\u0101liem, lai\n[[YELLOW]]izmantotu Giga Drill Breaker.\n[[DARK_AQUA]]Kas ir Giga Drill Breaker?\n[[YELLOW]]Giga Drill Breaker ir sp\u0113ja ar ierobe\u017eojumu\n[[YELLOW]]lai piesaist\u012btu Rak\u0161anas Pieredzi. Tas tr\u012bsk\u0101r\u0161o\n[[YELLOW]]iesp\u0113ju atrast d\u0101rgumus un uzreiz izn\u012bcina\n[[YELLOW]]at\u013cauto materi\u0101lu blokus.\n\n[[DARK_AQUA]]K\u0101 str\u0101d\u0101 D\u0101rgumu Mekl\u0113t\u0101js?\n[[YELLOW]]Every possible treasure for Excavation has its own\n[[YELLOW]]skill level requirement for it to drop, as a result it\'s\n[[YELLOW]]difficult to say how much it is helping you.\n[[YELLOW]]Just keep in mind that the higher your Excavation skill\n[[YELLOW]]is, the more treasures that can be found.\n[[YELLOW]]And also keep in mind that each type of Excavation\n[[YELLOW]]compatible material has its own unique list of treasures.\n[[YELLOW]]In other words you will find different treasures in Dirt\n[[YELLOW]]than you would in Gravel.\n[[DARK_AQUA]]Notes about Excavation:\n[[YELLOW]]Excavation drops are completely customizeable\n[[YELLOW]]So results vary server to server.
Item.ChimaeraWing.Pass=**CHIMAERA SP\u0100RNI**
Skills.Disarmed=[[DARK_RED]]Tevi ir atbru\u0146oju\u0161i!
Stats.Header.Combat=[[GOLD]]-=KARA PRASMES=-
Stats.Own.Stats=[[GREEN]][mcMMO] Statistika

View File

@@ -7,6 +7,7 @@ Acrobatics.Skillup=[[YELLOW]]Acrobatiek toegenomen met {0}. Totaal ({1})
Archery.Effect.0=Ervaringsschot
Archery.Effect.1=Neemt de schade van bogen toe
Archery.Effect.2=Verdoven (Spelers)
Archery.Effect.3=Verward tegenstanders en doet {0} schade
Archery.Effect.5=Kans om pijlen te krijgen van lijken
Archery.Listener=Boogschieten:
Archery.SkillName=BOOGSCHIETEN
@@ -27,11 +28,14 @@ Excavation.Listener=Uitgraving:
Excavation.SkillName=Uitgraving
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**GIGA DRILL BREKER GEACTIVEERD**
Excavation.Skillup=[[YELLOW]]Uitgravings ervaring toegenomen met {0}. Totaal ({1})
Fishing.Effect.8=Meester Hengelaar
Fishing.Chance.Raining=[[BLUE]] Regen Bonus
Fishing.ItemFound=[[GRAY]]Schat gevonden!
Fishing.Listener=Vissen:
Fishing.MagicFound=[[GRAY]]Jij voelt een vleugje magie met deze vangst...
Herbalism.Ability.GTh=[[GREEN]]**GROEN DUIMPJE**
Herbalism.Effect.10=Hylian Geluk
Herbalism.Effect.11=Geeft een kleine kans om zeldzame voorwerpen te vinden
Herbalism.Listener=Kruidenkunde:
Herbalism.Skills.GTe.Refresh=[[GREEN]]Jou [[YELLOW]]groene Vingers [[GREEN]]kracht is hersteld!
Herbalism.Skills.GTe.Other.Off=[[RED]]Groene vingers[[GREEN]] is uitgewerkt voor [[YELLOW]]{0}
@@ -65,13 +69,17 @@ Repair.Arcane.Chance.Success=[[GRAY]] Mystiek Smeden Succes Percentage: [[YELLOW
Repair.Arcane.Fail=[[RED]]Mysterieuze kracht heeft het voorwerp voorgoed verlaten.
Repair.Arcane.Lost=[[RED]]Je hebt niet genoeg ervaring om de betoveringen te behouden
Swords.Ability.Ready=[[GREEN]]**JIJ HOUD JOU WAPEN GEREED**
Swords.Combat.Bleeding.Started=[[DARK_RED]] Jij bloedt!
Swords.Combat.Bleeding.Stopped=[[GRAY]]Het bloeden is [[GREEN]]Gestopt[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**VIJAND BLOED**
Swords.Combat.Counter.Hit=[[DARK_RED]]Geraakt door een tegenaanval
Swords.Combat.Countered=[[GREEN]]**TEGEN-AANVAL**
Swords.Combat.SS.Struck=[[DARK_RED]]Geraakt door GEKARTELDE SLAG!
Swords.Effect.1=Reflecteer {0} van de opgelopen schade
Swords.Effect.2=Gekartelde Slag (Vermogen)
Swords.Effect.3={0} DMG AoE, Bloeden+ AoE
Swords.Effect.4=Gekartelde Slag Bloed+
Swords.Effect.5={0} Tick Bloeden
Swords.Effect.6=Bloeden
Swords.Listener=Zwaarden:
Swords.SkillName=ZWAARDEN
@@ -90,11 +98,15 @@ Taming.Effect.15=[[GRAY]]COTW (Wolf): Buk en linkermuisknop met {0} Botten in je
Taming.Effect.16=Fast Food Service
Taming.Effect.17=Kans voor wolven na een aanval te regeneren
Taming.Listener.Wolf=[[DARK_GRAY]]Jouw wolf dribbelt terug naar je...
Taming.Listener=Temming:
Taming.Listener=Temmen:
Taming.Skillup=[[YELLOW]]Temmings ervaring toegenomen met {0}. Totaal ({1})
Taming.Summon.Complete=[[GREEN]]Oproepen voltooid
Unarmed.Ability.Berserk.Length=[[RED]]Razernij Lengte: [[YELLOW]]{0}s
Unarmed.Effect.0=Razernij (KRACHT)
Unarmed.Effect.6=Pijlen afweren
Unarmed.Effect.7=Pijlen afweren
Unarmed.Effect.8=Ijzeren Grip
Unarmed.Effect.9=Voorkomt dat je ontwapend wordt
Unarmed.Listener=Ongewapend:
Unarmed.Skills.Berserk.Off=[[RED]]**Razernij is uitgewerkt**
Unarmed.Skills.Berserk.On=[[GREEN]]**RAZERNIJ GEACTIVEERD**
@@ -129,6 +141,8 @@ Commands.Invite.Accepted=[[GREEN]]Uitnodiging geacepteerd. Jij hebt de groep {0
Commands.mcgod=[[RED]]- GodModus Schakelen
Commands.mcrank.Player=[[RED]]DOELWIT: [[WHITE]]{0}
Commands.mmoedit=[player] <Kracht> <Nieuwe waarde> [[RED]] - Pas doel aan
Commands.mmoedit.Modified.1=[[GREEN]]Uw level in {0} is veranderd naar {1}
Commands.mmoedit.Modified.2=[[RED]]{0} is aangepast voor {1}.
Commands.mmoupdate.Start=[[GRAY]]Beginnen met converteren...
Commands.ModDescription=[[RED]]- Lees instructie mod beschrijving
Commands.NoConsole=Deze commando wordt niet ondersteund vanuit de console.
@@ -141,6 +155,7 @@ Commands.Party.Invite.0=[[RED]]ALERT: [[GREEN]]Jij hebt een groep uitnodiging on
Commands.Party.Invite=[[RED]]- Verstuur groepsuitnodiging
Commands.Party.Create=[[GRAY]]Groep aangemaakt: {0}
Commands.Party.Rename=[[GRAY]]Groep\'s naan veranderd naar: [[WHITE]]{0}
Commands.Party.ToggleShareCategory=[[GRAY]]Groep item delen in [[GOLD]]{0} [[GRAY]]is nu [[DARK_AQUA]]{1}
Commands.Party.AlreadyExists=[[DARK_RED]]Groep {0} bestaat al!
Commands.Party.Kick=[[RED]]Je bent verwijderd uit de groep {0}!
Commands.Party.Leave=[[RED]]Je hebt de groep verlaten
@@ -159,7 +174,7 @@ Commands.Usage.PartyName=naam
Commands.Usage.Password=wachtwoord
Commands.Usage.XP=xp
mcMMO.NoSkillNote=[[DARK_GRAY]]als je geen toegang hebt tot een vermogen, wordt die hier niet getoont
Party.Forbidden=[mcMMO] Groepen niet toegestaan op deze wereld (zie Machtigingen)
Party.Forbidden=[mcMMO] Groepen zijn niet toegestaan in deze wereld (zie Machtigingen)
Party.InformedOnQuit={0} [[GREEN]]heeft de groep verlaten
Party.InvalidName=[[DARK_RED]]Dat is geen geldige groep\'s naam.
Party.IsLocked=[[RED]]Deze groep is al gesloten!
@@ -180,8 +195,10 @@ Party.Player.InSameParty=[[RED]]{0} zit al in uw groep!
Party.PlayerNotInParty=[[DARK_RED]]{0} zit niet in een groep
Party.Specify=[[RED]]Je moet een groep invullen.
Party.Teleport.Dead=[RED]Je kan niet naar een dode speler teleporteren.
Party.Teleport.Hurt=[[RED]]Je hebt schade opgelopen in de afgelopen {0} seconden en je kan niet teleporten.
Party.Teleport.Target=[[GREEN]]{0} is naar jou toe gedeporteerd.
Party.Teleport.Disabled=[[RED]]{0} staat groeps-teleportaties niet toe.
Party.Rename.Same=[[RED]]Dat is al de naam van uw groep!
Party.Join.Self=[[RED]]Je kan niet meedoen met jezelf!
Party.Unlocked=[[GRAY]]Groep is ontgrendeld
Party.Status.Unlocked=[[DARK_GREEN]](OPEN)
@@ -199,6 +216,8 @@ Commands.XPGain.Mining=Het Mijnen van Steen & Erts
Commands.XPGain.Repair=Repareren
Commands.XPGain.Swords=Monsters aanvallen
Commands.XPGain.Taming=Dieren Temmen, of vechten met je wolven
Commands.XPGain.Unarmed=Monsters aanvallen
Commands.XPGain.Woodcutting=Bomen omhakken
Commands.XPGain=[[DARK_GRAY]]XP GEWONNEN: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]Jou XP BALK is nu bevroren op {0}!
Commands.xplock.unlocked=[[GOLD]]Jou XP BALK is nu[[GREEN]]ONTGRENDELD[[GOLD]]!
@@ -206,9 +225,13 @@ Commands.xprate.over=[[RED]]mcMMO XP Verdubbeling Evenement is VOORBIJ!!
Commands.xprate.proper.0=[[RED]]Juiste gebruiking om de XP snelheid te veranderen is /xprate <integer> <true/false>
XPRate.Event=[[GOLD]]mcMMO is momenteel in een XP verdubbeling evenement! XP verdubbeling is {0}x!
Effects.Effects=EFFECTEN
Effects.Child=[[DARK_GRAY]]LVL: [[GREEN]]{0}
Effects.Parent=[[GOLD]]{0} -
Guides.Axes=Guide coming soon...
Guides.Excavation=[[DARK_AQUA]]About Excavation:\n[[YELLOW]]Excavation is the act of digging up dirt to find treasures.\n[[YELLOW]]By excavating the land you will find treasures.\n[[YELLOW]]The more you do this the more treasures you can find.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill you must dig with a shovel in hand.\n[[YELLOW]]Only certain materials can be dug up for treasures and XP.\n[[DARK_AQUA]]Compatible Materials:\n[[YELLOW]]Grass, Dirt, Sand, Clay, Gravel, Mycelium, Soul Sand\n\n[[DARK_AQUA]]How to use Giga Drill Breaker:\n[[YELLOW]]With a shovel in hand right click to ready your tool.\n[[YELLOW]]Once in this state you have about 4 seconds to make\n[[YELLOW]]contact with Excavation compatible materials this will\n[[YELLOW]]activate Giga Drill Breaker.\n[[DARK_AQUA]]What is Giga Drill Breaker?\n[[YELLOW]]Giga Drill Breaker is an ability with a cooldown\n[[YELLOW]]tied to Excavation skill. It triples your chance\n[[YELLOW]]of finding treasures and enables instant break\n[[YELLOW]]on Excavation materials.\n\n[[DARK_AQUA]]How does Treasure Hunter work?\n[[YELLOW]]Every possible treasure for Excavation has its own\n[[YELLOW]]skill level requirement for it to drop, as a result it\'s\n[[YELLOW]]difficult to say how much it is helping you.\n[[YELLOW]]Just keep in mind that the higher your Excavation skill\n[[YELLOW]]is, the more treasures that can be found.\n[[YELLOW]]And also keep in mind that each type of Excavation\n[[YELLOW]]compatible material has its own unique list of treasures.\n[[YELLOW]]In other words you will find different treasures in Dirt\n[[YELLOW]]than you would in Gravel.\n[[DARK_AQUA]]Notes about Excavation:\n[[YELLOW]]Excavation drops are completely customizeable\n[[YELLOW]]So results vary server to server.
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Handleiding[[GOLD]]=-
Guides.Mining=[[DARK_AQUA]]About Mining:\n[[YELLOW]]Mining consists of mining stone and ores. It provides bonuses\n[[YELLOW]]to the amount of materials dropped while mining.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill, you must mine with a pickaxe in hand.\n[[YELLOW]]Only certain blocks award XP.\n\n[[DARK_AQUA]]Compatible Materials:\n[[YELLOW]]Stone, Coal Ore, Iron Ore, Gold Ore, Diamond Ore, Redstone Ore,\n[[YELLOW]]Lapis Ore, Obsidian, Mossy Cobblestone, Ender Stone,\n[[YELLOW]]Glowstone, and Netherrack.\n\n[[DARK_AQUA]]How to use Super Breaker:\n[[YELLOW]]With a pickaxe in your hand, right click to ready your tool.\n[[YELLOW]]Once in this state, you have about 4 seconds to make contact\n[[YELLOW]]with Mining compatible materials, which will activate Super\n[[YELLOW]]Breaker.\n\n[[DARK_AQUA]]What is Super Breaker?\n[[YELLOW]]Super Breaker is an ability with a cooldown tied to the Mining\n[[YELLOW]]skill. It triples your chance of extra items dropping and\n[[YELLOW]]enables instant break on Mining materials.\n\n[[DARK_AQUA]]How to use Blast Mining:\n[[YELLOW]]With a detonator in hand, which is a flint & steel by default,\n[[YELLOW]]right-click on TNT from a distance. This will cause the TNT\n[[YELLOW]]to instantly explode.\n\n[[DARK_AQUA]]How does Blast Mining work?\n[[YELLOW]]Blast Mining is an ability with a cooldown tied to the Mining\n[[YELLOW]]skill. It gives bonuses when mining with TNT and allows you\n[[YELLOW]]to remote detonate TNT. There are three parts to Blast Mining.\n[[YELLOW]]The first part is Bigger Bombs, which increases blast radius.\n[[YELLOW]]The second is Demolitions Expert, which decreases damage\n[[YELLOW]]from TNT explosions. The third part simply increases the\n[[YELLOW]]amount of ores dropped from TNT and decreases the\n[[YELLOW]]debris dropped.
Guides.Page.OutOfRange=Deze pagina bestaat niet, er zijn in totaal {0} pagina\'s.
Inspect.OfflineStats=mcMMO statistieken voor offline-speler [[YELLOW]]{0}
Inspect.Stats=[[GREEN]]mcMMO Statistieken voor [[YELLOW]]{0}
Inspect.TooFar=[[RED]]Jij bent te ver weg om deze speler te inspecteren!
@@ -221,3 +244,10 @@ Stats.Header.Combat=[[GOLD]]-=Strijd Ervaring=-
Stats.Header.Gathering=[[GOLD]]-=VERZAMELAAR VAARDIGHEDEN=-
Stats.Header.Misc=[[GOLD]]-=MISC ERVARING=-
Stats.Own.Stats=[[GREEN]][mcMMO] Stats
Perks.lucky.name=Geluk
Perks.lucky.bonus=[[GOLD]] ({0} met Geluks Perk)
Perks.activationtime.name=Uithoudingsvermogen
Smelting.Listener=Smelten:
Commands.Description.ptp=Teleport naar een groepslid
UpdateChecker.outdated=U gebruikt een verouderde versie van mcMMO!
UpdateChecker.newavailable=Er is een nieuwe versie beschikbaar op BukkitDev.

View File

@@ -1,116 +1,419 @@
Acrobatics.Ability.Proc=[[GREEN]]**Mi\u0119kkie L\u0105dowanie**
Acrobatics.Combat.Proc=[[GREEN]]**Unikni\u0119to**
Acrobatics.DodgeChance=[[RED]]Szansa na Unik: [[YELLOW]]{0}
Acrobatics.Effect.0=Przewr\u00f3t
Acrobatics.Effect.1=Redukuje lub te\u017c ca\u0142kowicie usuwa obra\u017cenia od upadku
Acrobatics.Effect.2=\u0141agodny Przewr\u00f3t
Acrobatics.Effect.3=Dwukrotnie bardziej efektywne niz zwykly Przewrot
Acrobatics.Effect.4=Unik
Acrobatics.Effect.5=Redukuje obrazenia od upadku o polowe
Acrobatics.Effect.5=Redukuje obra\u017cenia o po\u0142owe
Acrobatics.Listener=Akrobatyka:
Acrobatics.Roll.Chance=[[RED]]Szansa na Przewr\u00f3t: [[YELLOW]]{0}
Acrobatics.Roll.GraceChance=[[RED]]Szansa na \u0141agodny Przewr\u00f3t: [[YELLOW]]{0}
Acrobatics.Roll.Text=**Przewr\u00f3t**
Acrobatics.SkillName=AKROBATYKA
Acrobatics.Skillup=[[YELLOW]]Umiejetnosc akrobatyka wzrosla o {0}. Razem ({1})
Archery.Combat.DazeChance=[[RED]]Szansa na Oszolomienie: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=[[RED]]Szansa na Odzyskanie Strza\u0142: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=[[RED]]Dodatkowe Obra\u017cenia dla Umiej\u0119tno\u015bci: [[YELLOW]]{0}
Archery.Effect.0=Umiej\u0119tno\u015b\u0107 Aktywna
Archery.Effect.1=Zwi\u0119ksza obra\u017cenia zadane z \u0142uku
Archery.Effect.2=Oszo\u0142omienie
Archery.Effect.4=Odzyskiwanie Strza\u0142
Archery.Effect.5=Szansa na wyci\u0105gni\u0119cie strza\u0142 z martwego cia\u0142a
Archery.Listener=Lucznictwo
Archery.SkillName=LUCZNICTWO
Archery.Skillup=[[YELLOW]]Umiejetnosc lucznictwo wzrosla o {0}. Razem ({1})
Axes.Ability.Bonus.0=Mistrzostwo pos\u0142ugiwania si\u0119 siekier\u0105
Axes.Ability.Bonus.1={0} Bonusowych obra\u017ce\u0144
Axes.Ability.Bonus.2=Wstrz\u0105s od Zbroi
Axes.Ability.Bonus.3=Zadaje {0} dodatkowych obra\u017ce\u0144 dla opancerzonych cel\u00f3w
Axes.Ability.Bonus.4=Trafienie Krytyczne
Axes.Ability.Bonus.5=Zadaje {0} dodatkowych obra\u017ce\u0144 dla nieopancerzonych cel\u00f3w
Axes.Ability.Lower=[[GRAY]]**CHOWASZ SIEKIERE**
Axes.Ability.Ready=[[GREEN]]**PRZYGOTOWUJESZ SWOJ\u0104 SIEKIERE**
Axes.Combat.CritStruck=[[DARK_RED]]Trafiono cie krytycznie!
Axes.Combat.CritChance=[[RED]]Szansa na Trafienie Krytyczne: [[YELLOW]]{0}
Axes.Combat.CriticalHit=[[RED]]TRAFIENIE KRYTYCZNE!
Axes.Combat.GI.Proc=[[GREEN]]**UDERZONO Z WIELK\u0104 MOC\u0104**
Axes.Combat.GI.Struck=[[RED]]TRAFIENIE KRYTYCZNE!
Axes.Combat.SS.Length=[[RED]]D\u0142ugo\u015bc \u0141amacza Czaszki: [[YELLOW]]{0}s
Axes.Effect.0=\u0141amacz Czaszek
Axes.Effect.1=Zadaje obra\u017cenia obszarowe
Axes.Effect.2=Krytyczne Uderzenia
Axes.Effect.3=Podwojne obrazania
Axes.Effect.4=Mistrzostwo pos\u0142ugiwania si\u0119 siekier\u0105
Axes.Effect.5=Dodaje bonus do obrazen
Axes.Effect.6=Wstrz\u0105s od Zbroi
Axes.Effect.7=Uderz z odpowiedni\u0105 si\u0142a aby przebi\u0107 zbroj\u0119
Axes.Effect.8=Trafienie Krytyczne
Axes.Effect.9=Zadaje dodatkowe obra\u017cenia nieopancerzonym celom
Axes.Listener=Siekiery:
Axes.SkillName=TOPORY
Axes.Skillup=[[YELLOW]]Umiejetnosc scinanie wzrosla o {0}. Razem ({1})
Axes.Skills.SS.Off=[[RED]]**\u0141amacz Czaszek si\u0119 sko\u0144czy\u0142**
Axes.Skills.SS.On=[[GREEN]]**\u0141amacz Czaszek AKTYWOWANY**
Axes.Skills.SS.Refresh=[[GREEN]]Twoja zdolno\u015b\u0107 [[YELLOW]]\u0141amacz Czaszek [[GREEN]]jest ju\u017c dost\u0119pna!
Axes.Skills.SS.Other.Off=[[RED]]\u0141amacz Czaszek[[GREEN]] si\u0119 sko\u0144czy\u0142 [[YELLOW]]{0}
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]\u0141amacza Czaszki!
Axes.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 \u015bcinania wzros\u0142a o {0}. Razem ({1})
Excavation.Ability.Lower=[[GRAY]]**CHOWASZ \u0141OPAT\u0118**
Excavation.Ability.Ready=[[GREEN]]**PRZYGOTOWUJESZ SWOJ\u0104 \u0141OPAT\u0118**
Excavation.Effect.0=Mia\u017cdz\u0105ce Wiert\u0142o
Excavation.Effect.1=3x Szansa na znalezienie przedmiotu, 3x mno\u017cnik zdobywania do\u015bwiadczenia, +pr\u0119dko\u015b\u0107
Excavation.Effect.2=Lowca Skarbow
Excavation.Listener=Kopanie
Excavation.Effect.3=Umiej\u0119tno\u015b\u0107 wykopywania skarb\u00f3w.
Excavation.Effect.Length=[[RED]]D\u0142ugo\u015bc Mia\u017cdz\u0105cego Wiert\u0142a: [[YELLOW]]{0}s
Excavation.Listener=Wykopaliska:
Excavation.SkillName=KOPANIE
Excavation.Skillup=[[YELLOW]]Umiejetnosc kopania wzrosla o {0}. Razem({1})
Excavation.Skills.GigaDrillBreaker.Off=[[RED]]**Mia\u017cdz\u0105ce Wiert\u0142o si\u0119 sko\u0144czy\u0142o**
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**MIA\u017bDZ\u0104CE WIERT\u0141O AKTYWOWANE**
Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]Twoja zdolno\u015b\u0107 [[YELLOW]]Mia\u017cdz\u0105ce Wiert\u0142o [[GREEN]]jest ju\u017c dost\u0119pna!
Excavation.Skills.GigaDrillBreaker.Other.Off=[[RED]]Mia\u017cdz\u0105ce Wiert\u0142o[[GREEN]] si\u0119 sko\u0144czy\u0142o [[YELLOW]]{0}
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]Mia\u017cdz\u0105ce Wiert\u0142o!
Excavation.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 wykopalisk wzros\u0142a o {0}. Razem({1})
Fishing.Ability.Info=[[RED]]Magiczny \u0141owca: [[GRAY]] **Ulepsza si\u0119 wraz z rang\u0105 Poszukiwacza Skarb\u00f3w**
Fishing.Ability.Locked.0=ZABLOKOWANY DO POZIOMU {0}+ SKILL
Fishing.Ability.Rank=[[RED]]Ranga lowienia skarbow: [[YELLOW]]{0}/5
Fishing.Ability.Shake=[[RED]]Szansa na Wstrz\u0105s: [[YELLOW]]{0}
Fishing.Ability.FD=[[RED]]Dieta Rybaka: [[YELLOW]]Ranga {0}
Fishing.Effect.0=Lowca Skarbow (Pasywna)
Fishing.Effect.1=\u0141owi\u0107 r\u00f3\u017cne obiekty
Fishing.Effect.2=Magiczny Lowca
Fishing.Effect.3=Znajdowanie Zakletych Przedmiotow
Fishing.ItemFound=[[GRAY]]Treasure found!
Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
Fishing.SkillName=LOWIENIE RYB
Fishing.Effect.4=Potrz\u0105\u015bni\u0119cie (przeciwko jednostkom)
Fishing.Effect.5=Okradaj potwory z przedmiot\u00f3w u\u017cywaj\u0105c w\u0119dki.
Fishing.Effect.6=Dieta Rybaka
Fishing.Effect.7=Zwi\u0119ksza nasycenie posi\u0142k\u00f3w (ryby)
Fishing.Enchant.Chance=[[RED]]Szanse na Magicznego \u0141owc\u0119: [[YELLOW]]{0}
Fishing.Chance.Raining=[[BLUE]] Bonus od Deszczu
Fishing.ItemFound=[[GRAY]]Znaleziono skarb!
Fishing.Listener=Rybactwo
Fishing.MagicFound=[[GRAY]]Wyczuwasz w pobli\u017cu \u017ar\u00f3d\u0142o magii...
Fishing.SkillName=RYBACTWO
Fishing.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 \u0142owienia wzros\u0142a o {0}. Razem ({1})
Herbalism.Ability.DoubleDropChance=[[RED]]Szansa na Podw\u00f3jny Drop: [[YELLOW]]{0}
Herbalism.Ability.GTe.Length=[[RED]]D\u0142ugo\u015b\u0107 ?Green Terra?: [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=[[RED]]Potrzebujesz wi\u0119cej nasion aby u\u017cy\u0107 Zielonego \u017bycia.
Herbalism.Ability.GTh.Chance=[[RED]]Szansa na Zielony Palec: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=[[GREEN]]**ZIELONY PALEC SI\u0118 NIE UDA\u0141**
Herbalism.Ability.GTh.Stage=[[RED]]Etap Zielonego Dotyku: [[YELLOW]] Ro\u015bliny rosn\u0105 w etapie {0}
Herbalism.Ability.GTh=[[GREEN]]**ZIELONY PALEC**
Herbalism.Ability.Lower=[[GRAY]]**CHOWASZ SWOJ\u0104 MOTYKE**
Herbalism.Ability.Ready=[[GREEN]]**PRZYGOTOWUJESZ MOTYKE**
Herbalism.Effect.0=Zielone \u017bycie (ZDOLNO\u015a\u0106)
Herbalism.Effect.1=Rozprzestrzenia \u017cycie na powierzchni, 3x wi\u0119ksza szansa na zdobycie przedmiot\u00f3w
Herbalism.Effect.2=Zielony palec (Pszenica)
Herbalism.Effect.3=Automatycznie zasadza ro\u015bliny podczas ich zbierania
Herbalism.Effect.4=Zielony Dotyk (Brukowiec/Kamienna Ceg\u0142a/Ziemia)
Herbalism.Effect.5=Oplata ceg\u0142y zieleni\u0105, lub te\u017c wspomaga rozw\u00f3j trawy.
Herbalism.Effect.6=Dieta Farmerska
Herbalism.Effect.7=Zwi\u0119ksza nasycenie posi\u0142k\u00f3w
Herbalism.Effect.8=Podw\u00f3jny Drop (Wszystkie Zielska)
Herbalism.Effect.9=Podwaja ilo\u015b\u0107 zdobywanych przedmiot\u00f3w
Herbalism.Listener=Zielarstwo
Herbalism.SkillName=ZIELARSTWO
Herbalism.Skills.GTe.Off=[[RED]]**?Green Terra? si\u0119 sko\u0144czy\u0142**
Herbalism.Skills.GTe.On=[[GREEN]]**?GREEN TERRA? AKTYWOWANA**
Herbalism.Skills.GTe.Refresh=[[GREEN]]Twoja zdolno\u015b\u0107 [[YELLOW]]?Green Terra?[[GREEN]]jest ju\u017c gotowa!
Herbalism.Skills.GTe.Other.Off=[[RED]]?Green Terra?[[GREEN]] si\u0119 sko\u0144czy\u0142o [[YELLOW]]{0}
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]?Green Terra?!
Herbalism.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 zielarstwa wzros\u0142a o {0}. Ca\u0142kowicie ({1})
Mining.Ability.Length=[[RED]]D\u0142ugo\u015bc Super Kopacza: [[YELLOW]]{0}s
Mining.Ability.Locked.0=ZABLOKOWANE DO POZIOMU {0}+ SKILL
Mining.Ability.Locked.1=ZABLOKOWANE DO POZIOMU {0}+ SKILL
Mining.Ability.Locked.2=ZABLOKOWANE DO POZIOMU {0}+ SKILL
Mining.Ability.Lower=[[GRAY]]**CHOWASZ SW\u00d3J KILOF**
Mining.Ability.Ready=[[GREEN]]**PRZYGOTOWUJESZ SWOJA SIEKIERE**
Mining.Effect.0=Super \u0141amacz (ZDOLNO\u015a\u0106)
Mining.Effect.1=Szybko\u015b\u0107+, Szansa potr\u00f3jnego dropa
Mining.Effect.2=Podwojny Drop
Mining.Effect.3=Podwaja ilo\u015b\u0107 zdobywanych przedmiot\u00f3w
Mining.Effect.4=Szybki Kopacz
Mining.Effect.5=Bonus do wydobycia z TNT
Mining.Effect.6=Wieksze bomby
Mining.Effect.7=Zwieksza zasieg wybuchu TNT
Mining.Effect.8=Mistrzostwo w pos\u0142ugiwaniu si\u0119 materia\u0142ami wybuchowymi
Mining.Effect.9=Zmniejsza obrazenia od explozji TNT
Mining.Effect.Decrease=[[RED]]Redukcja Obra\u017ce\u0144 od Materia\u0142\u00f3w Wybuchowych: [[YELLOW]]{0}
Mining.Effect.DropChance=[[RED]]Szansa na Podw\u00f3jny Drop: [[YELLOW]]{0}
Mining.Listener=G\u00f3rnictwo
Mining.SkillName=GORNICTWO
Mining.Skills.SuperBreaker.Off=[[RED]]**Super \u0141amacz si\u0119 sko\u0144czy\u0142**
Mining.Skills.SuperBreaker.On=[[GREEN]]**SUPER \u0141AMACZ AKTYWOWANY**
Mining.Skills.SuperBreaker.Other.Off=[[RED]]Super Kopacz[[GREEN]] si\u0119 sko\u0144czy\u0142 [[YELLOW]]{0}
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]Super Kopacza!
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Twoja zdolno\u015b\u0107 [[YELLOW]]Super \u0141amacz [[GREEN]]jest ju\u017c dost\u0119pna!
Mining.Skillup=[[YELLOW]]Umiejetnosc Gornictwa wzrosla o {0}. Calkowicie ({1})
Mining.Blast.Boom=[[GRAY]]**BOOM**
Mining.Blast.Radius.Increase=[[RED]]Zasi\u0119g zwi\u0119kszony o: [[YELLOW]]+{0}
Mining.Blast.Rank=[[RED]]Szybki Kopacz: [[YELLOW]] Ranga {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]Szybkiego Kopacza!
Mining.Blast.Refresh=[[GREEN]]Twoja zdolno\u015b\u0107 [[YELLOW]]B\u0142yskawiczny Kopacz [[GREEN]]jest ju\u017c dost\u0119pna!
Repair.AnvilPlaced.Spout1=[mcMMO] Kowad\u0142o Postawione
Repair.AnvilPlaced.Spout2=Kliknij PPM aby naprawi\u0107!
Repair.Effect.0=Naprawa
Repair.Effect.1=Naprawa Narz\u0119dzi i Pancerza
Repair.Effect.10=Naprawa Z\u0142ota ({0}+ SKILL)
Repair.Effect.11=Naprawa Z\u0142otych Narz\u0119dzi i Pancerza
Repair.Effect.12=Naprawa \u017belaza ({0}+ SKILL)
Repair.Effect.13=Naprawa \u017belaznych Narz\u0119dzi i Pancerza
Repair.Effect.14=Naprawa Kamienia ({0}+ SKILL)
Repair.Effect.15=Naprawa Kamiennych Narz\u0119dzi
Repair.Effect.2=Mistrzostwo napraw
Repair.Effect.3=Zwi\u0119kszono ilo\u015b\u0107 napraw
Repair.Effect.4=Super Naprawa
Repair.Effect.5=Podw\u00f3jnie efektywne
Repair.Effect.5=Podw\u00f3jnia efektywno\u015b\u0107
Repair.Effect.6=Naprawa Diamentu ({0}+ SKILL)
Repair.Effect.7=Naprawa diamentowych narzedzi i pancerza
Repair.Effect.8=Kowalstwo Ezoteryczne
Repair.Effect.9=Naprawa rzeczy magicznych
Repair.Effect.16=Odzyskiwanie ({0}+ SKILL)
Repair.Effect.17=Odzyskiwanie Narz\u0119dzi i Pancerza
Repair.Error=[[DARK_RED]]mcMMO napotka\u0142 problem pr\u00f3buj\u0105c naprawi\u0107 ten przedmiot!
Repair.Listener.Anvil=[[DARK_RED]]Postawi\u0142e\u015b kowad\u0142o - kowad\u0142a s\u0142u\u017c\u0105 do naprawiania narz\u0119dzi i zbroi.
Repair.Listener.Anvil2=[[DARK_RED]]Postawi\u0142e\u015b kowad\u0142o Odzysku, u\u017cyj go aby Odzyska\u0107 narz\u0119dzia oraz zbroj\u0119.
Repair.Listener=Naprawa:
Repair.SkillName=Naprawa
Repair.Skills.AdeptGold=[[DARK_RED]]Masz za niski poziom aby naprawiac zloto.
Repair.Skills.AdeptStone=[[DARK_RED]]Masz za niski poziom aby naprawic kamien.
Repair.Skills.Super.Chance=[[RED]]Szansa na Super Naprawe: [[YELLOW]]{0}
Repair.Skills.AdeptSalvage=[[DARK_RED]]Nie masz odpowiedniego poziomu aby Odzyskiwa\u0107 przedmioty.
Repair.Skills.AdeptDiamond=[[DARK_RED]]Masz za niski poziom aby naprawia\u0107 diament.
Repair.Skills.AdeptGold=[[DARK_RED]]Masz za niski poziom aby naprawia\u0107 z\u0142oto.
Repair.Skills.AdeptIron=[[DARK_RED]]Masz za niski poziom aby naprawia\u0107 \u017celazo.
Repair.Skills.AdeptStone=[[DARK_RED]]Masz za niski poziom aby naprawi\u0107 kamie\u0144.
Repair.Skills.Adept=[[RED]]Musisz mie\u0107 [[YELLOW]]{0}[[RED]] poziom \u017ceby naprawi\u0107 [[YELLOW]]{1}
Repair.Skills.FeltEasy=[[GRAY]]Bu\u0142ka z mas\u0142em.
Repair.Skills.FullDurability=[[GRAY]]Ten przedmiot jest ju\u017c w pe\u0142ni sprawny.
Repair.Skills.SalvageSuccess=[[GRAY]]Przedmiot Odzyskany!
Repair.Skills.NotFullDurability=[[DARK_RED]]Nie mo\u017cesz odzyska\u0107 uszkodzonych przedmiot\u00f3w.
Repair.Skills.Mastery=[[RED]]Mistrzostwo Napraw: [[YELLOW]] {0} dodatkowej wytrzyma\u0142o\u015bci dla przedmiot\u00f3w
Repair.Skills.StackedItems=[[DARK_RED]]Nie mo\u017cesz naprawia\u0107 zestackowanych przedmiot\u00f3w.
Repair.Skills.Super.Chance=[[RED]]Szansa Super Naprawy: [[YELLOW]]{0}
Repair.Skillup=[[YELLOW]]Umiejetnosc naprawiania wzrosla o {0}. Razem ({1})
Repair.Arcane.Chance.Downgrade=[[GRAY]]AF Szansa na zdegradowanie: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]AF Szanse na sukces: [[YELLOW]]{0}%
Repair.Arcane.Downgrade=[[RED]]Energia magiczna tego przedmiotu spad\u0142a.
Repair.Arcane.Fail=[[RED]]Moc Arcane na zawsze opuscila przedmiot !
Repair.Arcane.Lost=[[RED]]Nie posiada\u0142e\u015b wystarczaj\u0105co du\u017co do\u015bwiadczenia aby zatrzyma\u0107 ulepszenia.
Repair.Arcane.Perfect=[[GREEN]]Nasyci\u0142e\u015b ten przedmiot magiczn\u0105 moc\u0105.
Repair.Arcane.Rank=[[RED]]Kowalstwo Ezoteryczne: [[YELLOW]]Ranga {0}/4
Swords.Ability.Lower=[[GRAY]]**CHOWASZ SW\u00d3J MIECZ**
Swords.Ability.Ready=[[GREEN]] **PODNIOSLES SWOJ MIECZ**
Swords.Combat.Bleed.Chance=[[RED]]Szansa na Krwawienie: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=[[RED]]D\u0142ugo\u015bc Krwotoku: [[YELLOW]]{0} ticks
Swords.Combat.Bleed.Note=[[GRAY]]NOTE: [[YELLOW]]1 tykni\u0119cie zdarza si\u0119 co 2 sekundy
Swords.Combat.Bleeding.Started=[[DARK_RED]] Krwawisz!
Swords.Combat.Bleeding.Stopped=[[GRAY]]Krwawienie [[GREEN]]usta\u0142o[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**PRZECIWNIK KRAWI**
Swords.Combat.Counter.Chance=[[RED]]Szansa na Kontratak: [[YELLOW]]{0}
Swords.Combat.Counter.Hit=[[DARK_RED]]Kontratak!
Swords.Combat.Countered=[[GREEN]]**KONTR-ATAK**
Swords.Combat.SS.Struck=[[DARK_RED]]Zosta\u0142e\u015b powalony przez Z\u0104BKOWANY ATAK!
Swords.Effect.0=Kontratak
Swords.Effect.2=Z\u0105bkowany Atak (ZDOLNO\u015a\u0106)
Swords.Effect.4=Z\u0105bkowany Atak spowodowa\u0142 krwawienie
Swords.Effect.6=Krwawienie
Swords.Effect.7=Spowodowano krwawienie
Swords.Listener=Miecze
Swords.SkillName=MIECZE
Swords.Skills.SS.Off=[[RED]]**Z\u0105bkowany Atak si\u0119 sko\u0144czy\u0142**
Swords.Skills.SS.On=[[GREEN]]**?Z\u0104BKOWANY? ATAK AKTYWOWANY**
Swords.Skills.SS.Refresh=[[GREEN]]Tw\u00f3j [[YELLOW]]Z\u0105bkowany Atak [[GREEN]]jest ju\u017c dost\u0119pny!
Swords.Skills.SS.Other.Off=[[RED]]Z\u0105bkowany Atak[[GREEN]] si\u0119 sko\u0144czy\u0142 [[YELLOW]]{0}
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]Z\u0105bkowanego Ciosu!
Swords.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 Pos\u0142ugiwania si\u0119 Mieczem wzros\u0142a o {0}. Ca\u0142kowicie ({1})
Swords.SS.Length=[[RED]]D\u0142ugo\u015b\u0107 Z\u0105bkowanego Ataku: [[YELLOW]]{0}s
Taming.Ability.Bonus.0=Przyjazne dla \u015brodowiska
Taming.Ability.Bonus.1=Wilki unikn\u0119\u0142y zagro\u017cenia
Taming.Ability.Bonus.2=Grube Futro
Taming.Ability.Bonus.4=Odporno\u015b\u0107 na wstrz\u0105sy
Taming.Ability.Bonus.6=Zaostrzone Pazury
Taming.Ability.Bonus.7=+{0} Obrazen
Taming.Ability.Bonus.8=Serwis FastFood\'u
Taming.Ability.Bonus.9={0} Szansa przy ataku na odnowienie \u017cycia
Taming.Ability.Locked.0=ZABLOKOWANE DO POZIOMU {0}+ SKILL
Taming.Ability.Locked.1=ZABLOKOWANE DO POZIOMU {0}+ SKILL
Taming.Ability.Locked.2=ZABLOKOWANE DO POZIOMU {0}+ SKILL
Taming.Ability.Locked.3=ZABLOKOWANE DO POZIOMU {0}+ SKILL
Taming.Ability.Locked.4=ZABLOKOWANE DO POZIOMU {0}+ SKILL
Taming.Combat.Chance.Gore=[[RED]]Szansa na Brutalno\u015b\u0107: [[YELLOW]]{0}
Taming.Effect.0=Wiedza o zwierz\u0119tach
Taming.Effect.1=Ko\u015b\u0107 - przyci\u0105ga uwag\u0119 wilk\u00f3w i ocelot\u00f3w
Taming.Effect.10=Odporno\u015b\u0107 na wstrz\u0105sy
Taming.Effect.11=Redukcja obra\u017ce\u0144 wybuchowych
Taming.Effect.12=Wezwanie Dzikich
Taming.Effect.13=Przywo\u0142uje zwierze po twojej stronie
Taming.Effect.14=[[GRAY]]COTW (Ocelot): Kucnij i kliknij LPM {0} z ryb\u0105 w r\u0119ce
Taming.Effect.15=[[GRAY]]COTW (Wolf): Kucnij i kliknij LPM {0} z ko\u015bci\u0105 w d\u0142oni
Taming.Effect.16=Serwis FastFood\'u
Taming.Effect.17=Szansa dla wilk\u00f3w na odnowienie \u017cycia przy ataku
Taming.Effect.2=Brutalno\u015b\u0107
Taming.Effect.3=Cios krytyczny kt\u00f3ry wywo\u0142uje krwawienie
Taming.Effect.4=Zaostrzone Pazury
Taming.Effect.5=Dodatkowe Obra\u017cenia
Taming.Effect.6=Przyjazne dla \u015brodowiska
Taming.Effect.7=Strach przed Kaktusami/Law\u0105, Odporno\u015b\u0107 obra\u017cenia ze spadania
Taming.Effect.8=Grube Futro
Taming.Effect.9=Redukcja Obra\u017ce\u0144, Odporno\u015b\u0107 na ogie\u0144
Taming.Listener.Wolf=[[DARK_GRAY]]Tw\u00f3j wilk biegnie do ciebie...
Taming.Listener=Oswajanie:
Taming.Skillup=[[YELLOW]]Umiejetnosc oswajania wzrosla o {0}. Razem ({1})
Taming.SkillName=OSWAJANIE
Taming.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 oswajania wzros\u0142a o {0}. Razem ({1})
Taming.Summon.Complete=[[GREEN]]Przywo\u0142ywanie uko\u0144czone
Taming.Summon.Fail.Ocelot=[[RED]]Obecnie masz przy sobie zbyt du\u017co ocelot\u00f3w aby przywo\u0142a\u0107 kolejnego.
Taming.Summon.Fail.Wolf=[[RED]]Obecnie masz przy sobie zbyt du\u017co wilk\u00f3w aby przywo\u0142a\u0107 kolejnego.
Unarmed.Ability.Berserk.Length=[[RED]]D\u0142ugo\u015b\u0107 Berserka: [[YELLOW]]{0}s
Unarmed.Ability.Bonus.0=Styl \u017belaznej D\u0142oni
Unarmed.Ability.Bonus.1=Ulepszenie obra\u017ce\u0144 +{0}
Unarmed.Ability.Chance.ArrowDeflect=[[RED]]Szansa na Odbicie Strza\u0142y: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=[[RED]]Szansa na Rozbrojenie: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=[[RED]]Tw\u00f3j przeciwnik ma \u017celazny u\u015bcisk!
Unarmed.Ability.IronGrip.Defender=[[GREEN]]Tw\u00f3j \u017belazny Uchwyt uchroni\u0142 ci\u0119 przed Rozbrojeniem!
Unarmed.Ability.Lower=[[GRAY]]**OPUSZCZASZ SWOJE PI\u0118\u015aCI**
Unarmed.Ability.Ready=[[GREEN]]**PRZYGOTOWUJESZ SWOJE PIESCI**
Unarmed.Effect.0=Berserk (Zdolnosc)
Unarmed.Effect.1=+50% DMG, Niszczy slabe materialy
Unarmed.Effect.2=Rozbrojenie
Unarmed.Effect.3=Rozbraja przeciwnika z przedmiotu trzymanego przez niego w r\u0119ku
Unarmed.Effect.4=Styl zelaznego ramienia
Unarmed.Effect.5=Wzmacnia twoj\u0105 d\u0142o\u0144 w czasie
Unarmed.Effect.6=Odbicie strzaly
Unarmed.Effect.7=Odbijanie strzal
Unarmed.Listener=Bezbronny:
Unarmed.Listener=NIEUZBROJONY
Unarmed.SkillName=NIEUZBROJONY
Unarmed.Skills.Berserk.Off=[[RED]]**Berserk si\u0119 sko\u0144czy\u0142**
Unarmed.Skills.Berserk.On=[[GREEN]]**BERSERK AKTYWOWANY**
Unarmed.Skills.Berserk.Other.Off=[[RED]]Berserk[[GREEN]] si\u0119 sko\u0144czy\u0142 [[YELLOW]]{0}
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]Berserka!
Unarmed.Skills.Berserk.Refresh=[[GREEN]]Twoja zdolno\u015b\u0107 [[YELLOW]]Berserka [[GREEN]]jest ju\u017c dost\u0119pna!
Unarmed.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 boksowania zwi\u0119kszona o {0}. Ca\u0142kowicie ({1})
Woodcutting.Ability.0=Dmucharka do li\u015bci
Woodcutting.Ability.1=Zdmuchuje li\u015bcie
Woodcutting.Ability.Chance.DDrop=[[RED]]Szansa na Dwukrotny Drop: [[YELLOW]]{0}
Woodcutting.Ability.Length=[[RED]]D\u0142ugo\u015bc Powalacza Drzew: [[YELLOW]]{0}s
Woodcutting.Ability.Locked.0=ZABLOKOWANY DO POZIOMU {0}+ SKILL
Woodcutting.Effect.0=Powalacz Drzew
Woodcutting.Effect.1=Sprawia, i\u017c drzewa eksploduj\u0105
Woodcutting.Effect.2=Dmucharka do li\u015bci
Woodcutting.Effect.3=Zdmuchuje li\u015bcie
Woodcutting.Effect.4=Podwojny Drop
Woodcutting.Effect.5=Podwaja ilo\u015b\u0107 zdobywanych przedmiot\u00f3w
Woodcutting.Listener=\u015aCINANIE DRZEW
Woodcutting.SkillName=\u015aCINANIE DRZEW
Woodcutting.Skills.TreeFeller.Off=[[RED]]**Powalacz Drzew si\u0119 sko\u0144czy\u0142**
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**POWALACZ DRZEW AKTYWOWANY**
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]Twoja zdolno\u015b\u0107 [[YELLOW]]Powalacz Drzew [[GREEN]] jest ju\u017c dost\u0119pna!
Woodcutting.Skills.TreeFeller.Other.Off=[[RED]]Powalenie Drzewa[[GREEN]] si\u0119 sko\u0144czy\u0142o [[YELLOW]]{0}
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]Powalacza Drzew!
Woodcutting.Skills.TreeFeller.Splinter=[[RED]]TWOJA SIEKIERA ROZPAD\u0141A SI\u0118 NA DRZAZGI!
Woodcutting.Skills.TreeFellerThreshold=[[RED]]To drzewo jest zbyt du\u017ce!
Woodcutting.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 \u015bcinania wzros\u0142a o {0}. Razem ({1})
Ability.Generic.Refresh=[[GREEN]]**UMIEJ\u0118TNO\u015aCI DOST\u0118PNE!**
Ability.Generic.Template.Lock=[[GRAY]]{0}
Ability.Generic.Template=[[RED]]{0}: [[YELLOW]]{1}
Combat.ArrowDeflect=[[WHITE]]**ODBICIE STRZALY**
Combat.BeastLore=[[GREEN]]**WIEDZA O ZWIERZETACH**
Combat.BeastLoreHealth=[[DARK_AQUA]]Zycie ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreHealth=[[DARK_AQUA]]\u017bycie ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreOwner=[[DARK_AQUA]]Wlasciciel ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]**KRWOTOK**
Combat.StruckByGore=[[RED]]**WYKRWAWIENIE**
Combat.StruckByGore=[[RED]]**WYKRWAWIASZ SI\u0118**
Combat.TargetDazed=Cel zostal [[DARK_RED]]oszolomiony.
Combat.TouchedFuzzy=[[DARK_RED]]Zostales oszolomiony.
Commands.addlevels.AwardAll.1=[[GREEN]]Otrzyma\u0142e\u015b {0} poziom\u00f3w we wszystkich dziedzinach!
Commands.addlevels.AwardAll.2=[[RED]]Wszystkie dziedziny zosta\u0142y zmienione na poziom {0}.
Commands.addlevels.AwardSkill.1=[[GREEN]]Zdoby\u0142e\u015b {0} poziom\u00f3w w dziedzinie {1}!
Commands.addlevels.AwardSkill.2=[[RED]]{0} zosta\u0142 zmieniony dla {1}.
Commands.addxp.AwardAll=[[GREEN]]Otrzyma\u0142e\u015b {0} XP\'a we wszystkich dziedzinach!
Commands.addxp.AwardSkill=[[GREEN]]Otrzyma\u0142e\u015b {0} XP\'a we dziedzinie {1}!
Commands.Ability.Off=Umiej\u0119tno\u015b\u0107 wy\u0142\u0105czona [[RED]]
Commands.Ability.On=Umiej\u0119tno\u015b\u0107 w\u0142\u0105czona [[GREEN]]
Commands.AdminChat.Off=Czat tylko dla adminow [[RED]] Wylaczony
Commands.AdminChat.On=Czat tylko dla adminow [[RED]] W\u0142\u0105czony
Commands.AdminToggle=[[RED]]- Wlacza/wylacza czat adminow
Commands.Chat.Console=\"Konsola\"
Commands.Disabled=[[RED]]Komenda ta jest wylaczona.
Commands.DoesNotExist=[[RED]]Player does not exist in the database!
Commands.Invite.Accepted=[[GREEN]]Zaproszenie zaakceptowane. Dolaczyles do grupy {0}
Commands.DoesNotExist=[[RED]]Nie ma takiego gracza!
Commands.GodMode.Disabled=[[YELLOW]]Nie\u015bmiertelno\u015b\u0107 wy\u0142\u0105czona
Commands.GodMode.Enabled=[[YELLOW]]Nie\u015bmiertelno\u015b\u0107 w\u0142\u0105czona
Commands.GodMode.Forbidden=[mcMMO] Nie\u015bmiertelno\u015b\u0107 nie jest dozwolona na tym \u015bwiecie.
Commands.Inspect=<player> [[RED]]- Pokazuje informacje o graczu
Commands.Invite.Accepted=[[GREEN]]Zaproszenie zaakceptowane. Do\u0142\u0105czy\u0142e\u015b do dru\u017cyny {0}
Commands.Invite.Success=[[GREEN]]Pomyslnie wyslano zaproszenie
Commands.Leaderboards=<skill> <page> [[RED]]- Rankingi
Commands.mcgod=[[RED]]- Przelacz Niesmiertelnosc
Commands.NoConsole=This command does not support console usage.
Commands.mcc.Header=[[RED]]---[][[YELLOW]]mcMMO Komendy[[RED]][]---
Commands.mcgod=[[RED]]- W\u0142\u0105cza/Wy\u0142\u0105cza Nie\u015bmiertelno\u015b\u0107
Commands.mchud.Invalid=[[RED]]Nie ma takiego Typu Interfejsu.
Commands.mcpurge.Success=[[GREEN]]Baza danych zosta\u0142a wyczyszczona!
Commands.mcrank.Heading=[[GOLD]]-=OSOBISTE RANKINGI=-
Commands.mcrank.Overall=[[YELLOW]]Og\u00f3lne Statystyki[[GREEN]] - [[GOLD]]Ranga [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=[[RED]]CEL: [[WHITE]]{0}
Commands.mcrank.Skill=[[YELLOW]]{0}[[GREEN]] - [[GOLD]]Ranga [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]Bez Rangi
Commands.mcremove.Success=[[GREEN]]{0} zosta\u0142 usuni\u0119ty z bazy danych!
Commands.mctop.Tip=[[GOLD]]Porada: Wpisz [[RED]]/mcrank[[GOLD]] aby zobaczy\u0107 swoje rankingi!
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - Modyfikuje cel
Commands.mmoedit.Modified.1=[[GREEN]]Tw\u00f3j poziom w {0} zosta\u0142 zmieniony na {1}!
Commands.mmoedit.Modified.2=[[RED]]{0} zosta\u0142 zmieniony na {1}.
Commands.mmoupdate.Start=[[GRAY]]Zaczynam konwersje...
Commands.mmoupdate.Finish=[[GREEN]]Konwersja uko\u0144czona!
Commands.ModDescription=[[RED]]- Przeczytaj opis
Commands.NoConsole=Konsola nie obs\u0142uguje tej komendy.
Commands.Other=[[GREEN]]--POZOSTA\u0141E KOMENDY--
Commands.Party.Accept=[[RED]]- Akceptuje zaproszenie grupy
Commands.Party.Chat.Off=Czat wy\u0142acznie dla dru\u017cyny [[RED]]Off
Commands.Party.Chat.On=Czat wy\u0142acznie dla dru\u017cyny w\u0142\u0105czony [[RED]]
Commands.Party.Chat.Prefix=[[GREEN]]([[WHITE]]{0}[[GREEN]])
Commands.Party.Commands=[[GREEN]]--KOMENDY DLA DRU\u017bYN--
Commands.Party.Invite.0=[[RED]]ALERT: [[GREEN]]Otrzyma\u0142e\u015b zaproszenie do dru\u017cyny {0} od {1}
Commands.Party.Kick=[[RED]]Zosta\u0142e\u015b wyrzucony z dru\u017cyny {0}!
Commands.Party.Leave=[[RED]]Opusciles grupe
Commands.Party.Leave=[[RED]]Opu\u015bci\u0142e\u015b dru\u017cyn\u0119.
Commands.Party.None=[[RED]]Nie jestes w druzynie.
Commands.Party.Quit=[[RED]]- Opuszcza obecn\u0105 dru\u017cyne
Commands.Party.Teleport=<player> [[RED]]- Teleportacja do czlonka grupy.
Commands.Party.Toggle=[[RED]]- W\u0142\u0105cza/Wy\u0142\u0105cza czat dla dru\u017cyn
Commands.PowerLevel.Leaderboard=[[YELLOW]]--mcMMO[[BLUE]] Poziom Mocy [[YELLOW]]Ranking--
Commands.PowerLevel.Capped=[[DARK_RED]]POZIOM MOCY: [[GREEN]]{0} [[DARK_RED]]MAKSYMALNY POZIOM: [[YELLOW]]{1}
Commands.PowerLevel=[[DARK_RED]]POZIOM MOCY: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]Wszystkie twoje umiej\u0119tno\u015bci zosta\u0142y zresetowane.
Commands.Reset.Single=[[GREEN]]Tw\u00f3j poziom w {0} zosta\u0142 zresetowany.
Commands.Reset=[[RED]]Resetuje poziom umiej\u0119tno\u015bci do 0
Commands.Skill.Invalid=[[RED]]Nie ma takiej umiej\u0119tno\u015bci!
Commands.Skill.Leaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Ranking--
Commands.SkillInfo=/<skill> [[RED]]- Pokazuje szczegolowe informacje na temat umiejetnosci
Commands.Stats.Self=TWOJE STATYSTYKI
Commands.Stats=[[RED]]- Zobacz swoje statystyki
Commands.ToggleAbility=[[RED]]- W\u0142\u0105cza/Wy\u0142\u0105cza zdolno\u015b\u0107 PPM
Commands.Usage.1=[[RED]]W\u0142a\u015bciwa komenda to /{0} {1}
Commands.Usage.2=[[RED]]W\u0142a\u015bciwa komenda to /{0} {1} {2}
Commands.Usage.3=[[RED]]W\u0142a\u015bciwa komenda to /{0} {1} {2} {3}
Commands.Usage.Level=poziom
Commands.Usage.Message=wiadomo\u015b\u0107
Commands.Usage.Page=strona
Commands.Usage.Player=gracz
Commands.Usage.Skill=zdolno\u015b\u0107
Commands.Usage.XP=xp
mcMMO.NoInvites=[[RED]]Nie masz zadnych zaproszen
Party.Forbidden=[mcMMO] Parties not permitted on this world (See Permissions)
mcMMO.NoPermission=[[DARK_RED]]Nie wystarczaj\u0105ce uprawnienia.
mcMMO.NoSkillNote=[[DARK_GRAY]]Je\u015bli nie posiadasz dost\u0119pu do zdolno\u015bci, nie b\u0119dzie ona tu ukazana.
Party.Forbidden=[mcMMO] Dru\u017cyny nie s\u0105 dozwolone na tym \u015bwiecie
Party.InvalidName=[[DARK_RED]]Nie istnieje dru\u017cyna o takiej nazwie!
Party.IsLocked=[[RED]]Ta grupa jest juz zamknieta!
Party.IsntLocked=[[RED]]Ta grupa nie jest zamkni\u0119ta!
Party.Locked=[[RED]]Grupa jest zamknieta, tylko wlasciciel moze dodac graczy.
Party.NotInYourParty=[[DARK_RED]]{0} nie jest czlonkiem twojej grupy.
Party.NotInYourParty=[[DARK_RED]]{0} nie jest cz\u0142onkiem twojej dru\u017cyny.
Party.NotOwner=[[DARK_RED]]Nie jeste\u015b liderem grupy.
Party.Owner.New=[[GREEN]]{0} jest nowym liderem grupy.
Party.Owner.NotLeader=[[DARK_RED]]Nie jeste\u015b ju\u017c liderem grupy.
Party.Owner.Player=[[GREEN]]Jeste\u015b teraz liderem grupy.
Party.Password.Incorrect=[[RED]]Has\u0142o grupy nieprawid\u0142owe.
Party.Password.Set=[[GREEN]]Haslo grupy zmienione na: {0}
Party.Player.Invalid=[[RED]]Nie ma takiego gracza.
Party.Teleport.Dead=[[RED]]Nie mo\u017cesz si\u0119 teleportowa\u0107 do zmar\u0142ego gracza.
Party.Teleport.Target=[[GREEN]]{0} zostal teleportowany do Ciebie.
Party.Teleport.Player=[[GREEN]]Teleportowa\u0142e\u015b si\u0119 do {0}.
Party.Teleport.Self=[[RED]]Nie mo\u017cesz teleportowa\u0107 si\u0119 do samego siebie!
Party.Teleport.Target=[[GREEN]]{0} teleportowa\u0142 si\u0119 do Ciebie.
Party.Unlocked=[[GRAY]]Grupa jest otwarta dla wszystkich.
Commands.XPGain.Acrobatics=Upadanie
Commands.XPGain.Archery=Atak potworow
Commands.XPGain.Axes=Atak potworow
Commands.XPGain.Excavation=Kopanie i odnajdywanie skarb\u00f3w
Commands.XPGain.Fishing=Rybactwo
Commands.XPGain.Herbalism=Zbieranie Zi\u00f3\u0142
@@ -118,25 +421,77 @@ Commands.XPGain.Mining=Wydobywa Kamie\u0144 i Surowce
Commands.XPGain.Repair=Naprawianie
Commands.XPGain.Swords=Atak potworow
Commands.XPGain.Taming=Oswoj zwierze, lub walcz ze swoimi wilkami.
Commands.XPGain.Unarmed=Atak potworow
Commands.XPGain.Woodcutting=\u015acina drzewa
Commands.XPGain=[[DARK_GRAY]Zdobyte do\u015bwiadczenie: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]Your XP BAR is now locked to {0}!
Commands.xplock.unlocked=[[GOLD]]Your XP BAR is now [[GREEN]]UNLOCKED[[GOLD]]!
Commands.xprate.over=[[RED]]mcMMO XP Rate Event is OVER!!
Commands.xplock.locked=[[GOLD]]Tw\u00f3j pasek XP\'a jest zablokowany {0}!
Commands.xplock.unlocked=[[GOLD]]Tw\u00f3j pasek XP\'a jest odblokowany {0}!
Commands.xprate.modified=[[RED]]Modyfikator zdobywania do\u015bwiadczenia zosta\u0142 zmieniony na {0}
Commands.xprate.over=[[GOLD]]Event[[RED]] zwi\u0119kszonego zdobywania XP\'a jest zako\u0144czony!
Commands.xprate.proper.0=[[RED]]Aby zmieni\u0107 mno\u017cnik XP - /xprate <mno\u017cnik> <true/false>
Commands.xprate.proper.1=[[RED]]Aby przywr\u00f3ci\u0107 normalny mno\u017cnik zdobywania XP\'a - /xprate reset
Commands.xprate.proper.2=[[RED]]Wpisz true/false aby okre\u015bli\u0107 czy jest to EVENT czy te\u017c nie
Commands.xprate.started.0=[[GOLD]]EVENT zwi\u0119kszonego zdobywania XP\'a w\u0142a\u015bnie si\u0119 zacz\u0105\u0142!
Commands.xprate.started.1=[[GOLD]]Mno\u017cnik zdobywania XP\'a wynosi {0}x!
XPRate.Event=[[GOLD]]mcMMO is currently in an XP rate event! XP rate is {0}x!
Effects.Effects=EFEKTY
Effects.Level=[[DARK_GRAY]]Poziom: [[GREEN]]{0} [[DARK_AQUA]]Doswiadczenie[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Acrobatics=[[DARK_AQUA]]Akrobatyka:\n[[YELLOW]]Akrobatyka to sztuka poruszania si\u0119.\n[[YELLOW]]Zapewnia ona bonusy w trakcie walki a tak\u017ce w trakcie poruszania si\u0119..\n\n[[DARK_AQUA]]Zdobywanie XP\'a:\n[[YELLOW]]Aby zdoby\u0107 XP\'a w tej dziedzinie musisz wykona\u0107 unik\n[[YELLOW]]w trakcie walki lub te\u017c przetrwa\u0107 upadek z du\u017cej wysoko\u015bci.\n\n[[DARK_AQUA]]Jak dzia\u0142aj\u0105 przewroty?\n[[YELLOW]]Masz szans\u0119 podczas spadania aby znegowa\u0107 obra\u017cenia od\n[[YELLOW]]upadku. Mo\u017cesz tak\u017ce w\u0142\u0105czy\u0107 skradanie w trakcie spadania\n[[YELLOW]]aby podwoi\u0107 twoj\u0105 szans\u0119 na przewr\u00f3t.\n[[YELLOW]]W\u0142\u0105czenie skradania w trakcie spadania mo\u017ce wywo\u0142ac \u0141agodny Przewr\u00f3t.\n[[YELLOW]]\u0141agodne przewroty s\u0105 podobne do zwyczajnych przewrot\u00f3w, jednak\u017ce\n[[YELLOW]]zdarzaj\u0105 si\u0119 dwukrotnie cz\u0119\u015bciej oraz redukuj\u0105 wi\u0119cej obra\u017ce\u0144.\n[[YELLOW]]Szansa na przewr\u00f3t zale\u017cy od twojego poziomu w akrobatyce.\n\n[[DARK_AQUA]]Jak dzia\u0142a unik?\n[[YELLOW]]Unik to pasywna mo\u017cliwo\u015b\u0107 zredukowania\n[[YELLOW]]w po\u0142owie obra\u017ce\u0144 wywo\u0142anych w walce.\n[[YELLOW]]Szansa na unik zale\u017cy od twojego poziomu w akrobatyce.
Guides.Archery=[[DARK_AQUA]]O \u0141ucznictwie:\n[[YELLOW]]\u0141ucznictwo polega na strzelaniu z \u0142uku.\n[[YELLOW]]Zapewnia ono wiele bonus\u00f3w w trakcie gry, tak jak\n[[YELLOW]]zwi\u0119kszenie obra\u017ce\u0144, kt\u00f3re wzrasta wraz z twoim\n[[YELLOW]]poziomem oraz umiej\u0119tno\u015bciami. Na dodatek mo\u017cesz\n[[YELLOW]]odzyska\u0107 cz\u0119\u015b\u0107 swych strza\u0142 z zw\u0142ok przeciwnik\u00f3w.\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill you need to shoot mobs or\n[[YELLOW]]other players.\n[[DARK_AQUA]]How does Skill Shot work?\n[[YELLOW]]Skill Shot provides additional damage to your shots.\n[[YELLOW]]The bonus damage from Skill Shot increases as you\n[[YELLOW]]level in Archery.\n[[YELLOW]]With the default settings, your archery damage increases 10%\n[[YELLOW]]every 50 levels, to a maximum of 200% bonus damage.\n[[DARK_AQUA]]How does Daze work?\n[[YELLOW]]You have a passive chance to daze other players when\n[[YELLOW]]you shoot them. When Daze triggers it forces your opponents\n[[YELLOW]]to look straight up for a short duration.\n[[YELLOW]]A Daze shot also deals an additional 4 damage (2 hearts).\n[[DARK_AQUA]]How does Arrow Retrieval work?\n[[YELLOW]]You have a passive chance to retrieve some of your arrows\n[[YELLOW]]when you kill a mob with your bow.\n[[YELLOW]]This chance increases as you level in Archery.\n[[YELLOW]]By default, this ability increases by 0.1% per level, up to 100%\n[[YELLOW]]at level 1000.
Guides.Axes=Guide coming soon...
Guides.Excavation=[[DARK_AQUA]]About Excavation:\n[[YELLOW]]Excavation is the act of digging up dirt to find treasures.\n[[YELLOW]]By excavating the land you will find treasures.\n[[YELLOW]]The more you do this the more treasures you can find.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill you must dig with a shovel in hand.\n[[YELLOW]]Only certain materials can be dug up for treasures and XP.\n[[DARK_AQUA]]Compatible Materials:\n[[YELLOW]]Grass, Dirt, Sand, Clay, Gravel, Mycelium, Soul Sand\n\n[[DARK_AQUA]]How to use Giga Drill Breaker:\n[[YELLOW]]With a shovel in hand right click to ready your tool.\n[[YELLOW]]Once in this state you have about 4 seconds to make\n[[YELLOW]]contact with Excavation compatible materials this will\n[[YELLOW]]activate Giga Drill Breaker.\n[[DARK_AQUA]]What is Giga Drill Breaker?\n[[YELLOW]]Giga Drill Breaker is an ability with a cooldown\n[[YELLOW]]tied to Excavation skill. It triples your chance\n[[YELLOW]]of finding treasures and enables instant break\n[[YELLOW]]on Excavation materials.\n\n[[DARK_AQUA]]How does Treasure Hunter work?\n[[YELLOW]]Every possible treasure for Excavation has its own\n[[YELLOW]]skill level requirement for it to drop, as a result it\'s\n[[YELLOW]]difficult to say how much it is helping you.\n[[YELLOW]]Just keep in mind that the higher your Excavation skill\n[[YELLOW]]is, the more treasures that can be found.\n[[YELLOW]]And also keep in mind that each type of Excavation\n[[YELLOW]]compatible material has its own unique list of treasures.\n[[YELLOW]]In other words you will find different treasures in Dirt\n[[YELLOW]]than you would in Gravel.\n[[DARK_AQUA]]Notes about Excavation:\n[[YELLOW]]Excavation drops are completely customizeable\n[[YELLOW]]So results vary server to server.
Guides.Available=[[DARK_AQUA]]Przewodnik dla {0} jest dost\u0119pny - wpisz /{1} ? [strona]
Guides.Excavation=[[DARK_AQUA]]Wykopaliska:\n[[YELLOW]]Wykopaliska umo\u017cliwiaj\u0105 znalezienie skarb\u00f3w.\n[[YELLOW]]Przekopywuj\u0105c ziemie mo\u017cesz znale\u017a\u0107 przer\u00f3\u017cne skarby.\n[[YELLOW]]Im wi\u0119cej przekopiesz ziemi tym wi\u0119cej znajdziesz skarb\u00f3w.\n\n[[DARK_AQUA]]Zdobywanie XP\'a:\n[[YELLOW]]Aby zdoby\u0107 XP\'a w tej dziedzinie musisz kopa\u0107 \u0142opat\u0105.\n[[YELLOW]]Lecz tylko kompatybilne materia\u0142y dadz\u0105 ci XP\'a oraz skarby.\n\n[[DARK_AQUA]]Kompatybilne materia\u0142y:\n[[YELLOW]]Trawa, Ziemia, Piasek, Glina, \u017bwir, Grzybnia, Piasek Dusz\n\n[[DARK_AQUA]]Jak u\u017cywa\u0107 Ogromnej Wiertarki:\n[[YELLOW]]Trzymaj\u0105c \u0142opat\u0119 przyci\u015bnij PPM aby przygotowa\u0107 zdolno\u015b\u0107.\n[[YELLOW]]Od tej chwili masz 4 sekundy na u\u017cycie zdolno\u015bci \n[[YELLOW]]poprzez kopanie w ziemi.\n\n[[DARK_AQUA]]Czym\u017ce jest Ogromna Wiertarka?\n[[YELLOW]]Ogromna Wiertarka to zdolno\u015b\u0107 aktywowana\n[[YELLOW]]przydatna podczas wykopalisk. Potraja ona twoj\u0105 szanse\n[[YELLOW]]na znalezienie skarb\u00f3w a tak\u017ce natychmiastowo\n[[YELLOW]]prze\u0142amuje wi\u0119kszo\u015b\u0107 blok\u00f3w.\n\n[[DARK_AQUA]]Jak dzia\u0142a zdobywanie skarb\u00f3w?\n[[YELLOW]]Ka\u017cdy skarb kt\u00f3ry mo\u017cna znale\u017a\u0107\n[[YELLOW]]wymaga danego poziomu w danej umiej\u0119tno\u015bci, \n[[YELLOW]]kt\u00f3ry jednak nie jest jasno okre\u015blony dla graczy.\n[[YELLOW]]Dlatego te\u017c warto wiedzie\u0107 , i\u017c\n[[YELLOW]]im wi\u0119kszy masz poziom w owej umiej\u0119tno\u015bci,\n[[YELLOW]]tym wi\u0119cej rodzaj\u00f3w skarb\u00f3w mo\u017cesz znale\u017a\u0107.\n[[YELLOW]]Jednak\u017ce warto te\u017c pami\u0119ta\u0107, \u017ce\n[[YELLOW]]w ka\u017cdym materiale mo\u017cesz znale\u017a\u0107 inny skarb.\n[[YELLOW]]M\u00f3wi\u0105c pro\u015bciej - mo\u017cesz znale\u017a\u0107 co\u015b innego kopi\u0105c\n[[YELLOW]]w piasku ni\u017c kopi\u0105c w ziemi.\n\n[[DARK_AQUA]]Dodatkowe informacje:\n[[YELLOW]]Lista skarb\u00f3w jakie mo\u017cesz znale\u017a\u0107\n[[YELLOW]]jest w pe\u0142ni konfigurowalna, a zatem\n[[YELLOW]]to jaki skarb mo\u017cesz zdoby\u0107,\n[[YELLOW]]zale\u017cy wy\u0142\u0105cznie od serwera.
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Przewodnik[[GOLD]]=-
Guides.Mining=[[DARK_AQUA]]About Mining:\n[[YELLOW]]Mining consists of mining stone and ores. It provides bonuses\n[[YELLOW]]to the amount of materials dropped while mining.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill, you must mine with a pickaxe in hand.\n[[YELLOW]]Only certain blocks award XP.\n\n[[DARK_AQUA]]Compatible Materials:\n[[YELLOW]]Stone, Coal Ore, Iron Ore, Gold Ore, Diamond Ore, Redstone Ore,\n[[YELLOW]]Lapis Ore, Obsidian, Mossy Cobblestone, Ender Stone,\n[[YELLOW]]Glowstone, and Netherrack.\n\n[[DARK_AQUA]]How to use Super Breaker:\n[[YELLOW]]With a pickaxe in your hand, right click to ready your tool.\n[[YELLOW]]Once in this state, you have about 4 seconds to make contact\n[[YELLOW]]with Mining compatible materials, which will activate Super\n[[YELLOW]]Breaker.\n\n[[DARK_AQUA]]What is Super Breaker?\n[[YELLOW]]Super Breaker is an ability with a cooldown tied to the Mining\n[[YELLOW]]skill. It triples your chance of extra items dropping and\n[[YELLOW]]enables instant break on Mining materials.\n\n[[DARK_AQUA]]How to use Blast Mining:\n[[YELLOW]]With a detonator in hand, which is a flint & steel by default,\n[[YELLOW]]right-click on TNT from a distance. This will cause the TNT\n[[YELLOW]]to instantly explode.\n\n[[DARK_AQUA]]How does Blast Mining work?\n[[YELLOW]]Blast Mining is an ability with a cooldown tied to the Mining\n[[YELLOW]]skill. It gives bonuses when mining with TNT and allows you\n[[YELLOW]]to remote detonate TNT. There are three parts to Blast Mining.\n[[YELLOW]]The first part is Bigger Bombs, which increases blast radius.\n[[YELLOW]]The second is Demolitions Expert, which decreases damage\n[[YELLOW]]from TNT explosions. The third part simply increases the\n[[YELLOW]]amount of ores dropped from TNT and decreases the\n[[YELLOW]]debris dropped.
Guides.Page.Invalid=Niew\u0142a\u015bciwa strona!
Guides.Swords=[[DARK_AQUA]]O mieczach:\n[[YELLOW]]Ta umiej\u0119tno\u015b\u0107 dodaje bonusy do walki mieczem ka\u017cdemu\n[[YELLOW]]walcz\u0105cemu mieczem.\n\n[[DARK_AQUA]]UZYSKIWANIE DO\u015aWIADCZENIA:\n[[YELLOW]]Uzyskiwanie do\u015bwiadczenia jest bazowane na ilo\u015bci obra\u017ce\u0144\n[[YELLOW]]zadanych potworom lub innym graczom dzier\u017c\u0105c miecz.\n\n[[DARK_AQUA]]Jak dzia\u0142aj\u0105 Ostre Ci\u0119cia\n[[YELLOW]]Ostre Ci\u0119cia s\u0105 aktywn\u0105 zdolno\u015bci\u0105, kt\u00f3r\u0105 mo\u017cesz aktywowa\u0107\n[[YELLOW]]klikaj\u0105c prawym przyciskiem myszy maj\u0105c miecz w r\u0119ku. Ta\n[[YELLOW]]zdolno\u015b\u0107 pozwala zadawa\u0107 uderzenia o zwi\u0119szonym zasi\u0119gu.\n[[YELLOW]]Zada to 25% wi\u0119cej obra\u017ce\u0144 i spowoduje krwawienie na 5 tick\u00f3w.
Guides.Smelting=Wkrotce...
Inspect.OfflineStats=mcMMO Stats for Offline Player [[YELLOW]]{0}
Inspect.Stats=[[GREEN]]mcMMO Stats for [[YELLOW]]{0}
Inspect.TooFar=[[RED]]You are too far away to inspect that player!
Guides.Usage=[[RED]] W\u0142a\u015bciwa Komenda to /{0} ? [strona]
Inspect.Offline=[[RED]]Nie masz odpowiednich uprawnie\u0144 aby przygl\u0105da\u0107 si\u0119 graczom offline!
Inspect.OfflineStats=Statystyki Gracza Offline [[YELLOW]]{0}
Inspect.Stats=[[GREEN]]Statystyki Gracza [[YELLOW]]{0}
Inspect.TooFar=[[RED]]Jeste\u015b zbyt daleko aby przyjrze\u0107 si\u0119 temu graczowi!
Item.ChimaeraWing.Fail=**U\u017bYCIE SKRZYD\u0141A CHIMERY NIE POWIOD\u0141O SI\u0118**
Item.ChimaeraWing.Pass=**SKRZYD\u0141O CHIMERY**
Item.Injured.Wait=Zosta\u0142e\u015b ostatnio ranny i musisz poczeka\u0107 aby tego u\u017cy\u0107. [[YELLOW]]({0}s)
Skills.Disarmed=[[DARK_RED]]Zostales rozbrojony!
Skills.Header=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Potrzebujesz wiecej
Skills.Stats=[[YELLOW]]{0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=[[RED]]Musisz odpoczac zanim ponownie uzyjesz tej umiejetnosci.
Stats.Header.Combat=[[GOLD]]-=UMIEJ\u0118TNO\u015aCI BOJOWE=-
Stats.Header.Gathering=[[GOLD]]-=Umiejetnosci zbierania=-
Stats.Header.Gathering=[[GOLD]]-=UMIEJ\u0118TNO\u015aCI ZBIERANIA=-
Stats.Header.Misc=[[GOLD]]-=ROZNE UMIEJETNOSCI=-
Stats.Own.Stats=[[GREEN]][mcMMO] Statystyki
Perks.xp.name=Do\u015bwiadczenie
Perks.xp.desc=Otrzymuje {0}x XP\'a.
Perks.lucky.name=Szcz\u0119\u015bcie
Perks.lucky.desc=Daje {0} i umiej\u0119tno\u015bciom o 33.3% lepsz\u0105 szanse na aktywacj\u0119.
Perks.lucky.desc.login=Daje wybranym skillom i umiej\u0119tno\u015bciom o 33.3% lepsz\u0105 szanse na aktywacj\u0119.
Perks.lucky.bonus=[[GOLD]] ({0} ze zdolno\u015bci\u0105 Szcz\u0119\u015bcia)
Perks.cooldowns.name=Szybka Regeneracja
Perks.cooldowns.desc=Zmniejsza czas odnowienia zdolno\u015bci o {0}.
Perks.activationtime.name=Wytrzyma\u0142o\u015b\u0107
Perks.activationtime.desc=Zwi\u0119ksza czas na u\u017cycie zdolno\u015bci o {0} sekund.
Perks.activationtime.bonus=[[GOLD]] ({0}s ze zdolno\u015bci\u0105 Wytrzyma\u0142o\u015bci)
Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] by\u0142 zbyt ma\u0142o do\u015bwiadczony aby czegokolwiek Ciebie nauczy\u0107.
Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]Ukrad\u0142e\u015b [[BLUE]]{0}[[DARK_AQUA]] poziom\u00f3w od [[YELLOW]]{1}.
Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] pr\u00f3bowa\u0142 ukra\u015b\u0107 od ciebie zdolno\u015bci!
Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]] ukrad\u0142 [[BLUE]]{1}[[DARK_RED]] poziom\u00f3w od ciebie!
Spout.Donate=[[YELLOW]][mcMMO] Dotacja!
Spout.LevelUp.2=[[YELLOW]]{0}[[DARK_AQUA]] ([[GREEN]]{1}[[DARK_AQUA]])
Spout.Menu.Exit=[[GRAY]]Wci\u015bnij ESCAPE aby wyj\u015b\u0107!
Spout.Menu.ExitButton=WYJ\u015aCIE
Spout.Menu.HudButton.1=Typ Interfejsu: {0}
Spout.Menu.HudButton.2=Zmie\u0144 Styl Interfejsu!
Spout.Menu.Title=[[GOLD]]~mcMMO Menu~
Spout.Title={0}\n[[YELLOW]]P[[GOLD]]lvl[[WHITE]].[[GREEN]]{1}
MOTD.Donate=[[DARK_AQUA]]Informacje o Dotacji:
MOTD.Hardcore.VampireOff=[[GOLD]][mcMMO] [[DARK_RED]]Tryb Hardcore & Wampiryzm aktywowany.
MOTD.Hardcore.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Kara za \u015amier\u0107: [[DARK_RED]]{0}%
MOTD.Hardcore.VampireOn=[[GOLD]][mcMMO] [[DARK_RED]]Tryb Hardcore aktywowany.
MOTD.PerksPrefix=[[RED]][mcMMO Zdolno\u015bci]
MOTD.Vampire.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Statystyki Wampirycznych Pijawek: [[DARK_RED]]{0}%
MOTD.Version=[[GOLD]][mcMMO] Obecna Wersja [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - Strona mcMMO

View File

@@ -1,70 +1,165 @@
Acrobatics.Combat.Proc=[[GREEN]]**Esquivou**
Acrobatics.Effect.0=Rolar
Acrobatics.Effect.4=Esquivou
Acrobatics.Listener=Acrobacias:
Acrobatics.Roll.Text=**Rolou**
Acrobatics.SkillName=ACROBACIA
Acrobatics.SkillName=Acrobacia
Acrobatics.Skillup=[[AMARELO]]Habilidade Acrobacia aumentada em {0}. Total ({1})
Archery.Effect.0=Tiro Habilidoso
Archery.Effect.1=Aumenta o dano feito com arcos
Archery.Effect.5=Chance de recuperar flechas dos corpos
Archery.Listener=Arqueiro
Archery.SkillName=ARQUEIRO
Archery.Skillup=[[AMARELO]]Habilidade Arqueiro aumentada em {0}. Total ({1})
Axes.Ability.Bonus.0=Machado
Axes.Ability.Lower=[[GRAY]]**VOC\u00ca ABAIXA SEU MACHADO**
Axes.Ability.Ready=[[GREEN]]**VOC\u00ca PREPARA SEU MACHADO**
Axes.Combat.GI.Struck=[[RED]]**GOLPEADO POR UM GRANDE IMPACTO**
Axes.Effect.3=Dano Duplo
Axes.Effect.5=Adiciona dano extra
Axes.Listener=Machados:
Axes.SkillName=Machado
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Racha Cranios!
Axes.Skillup=[[AMARELO]]Habilidade Machado aumentada em {0}. Total ({1})
Excavation.Ability.Lower=[[GRAY]]**VOC\u00ca ABAIXA SUA P\u00c1**
Excavation.Ability.Ready=[[GREEN]]**VOC\u00ca PREPARA SUA P\u00c1**
Excavation.Effect.3=Habilidade de cavar tesouros
Excavation.Listener=Escava\u00e7\u00e3o:
Excavation.SkillName=Escava\u00e7\u00e3o
Excavation.Skillup=[[AMARELO]]Habilidade Escava\u00e7\u00e3o aumentada em {0}. Total ({1})
Fishing.ItemFound=[[GRAY]]Tesouro encontrado!
Fishing.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
Fishing.SkillName=PESCARIA
Herbalism.Ability.GTh=[[GREEN]]**DED\u00c3O VERDE**
Herbalism.Ability.Lower=[[GRAY]]**VOC\u00ca ABAIXA SUA ENXADA**
Herbalism.Ability.Ready=[[GREEN]]**VOC\u00ca PREPARA SUA ENXADA**
Herbalism.Listener=Herbalismo
Herbalism.SkillName=HERBALISMO
Mining.Ability.Ready=[[VERDE]]**VOC\u00ca PREPARA A SUA PICARETA**
Herbalism.Skills.GTe.Other.Off=[[RED]]Terra Verde[[GREEN]] acabou para o [[YELLOW]]{0}
Mining.Ability.Length=[[RED]]Super Partir Duracao: [[YELLOW]]{0}s
Mining.Ability.Lower=[[GRAY]]**VOC\u00ca ABAIXA SUA PICARETA**
Mining.Ability.Ready=[[GREEN]]**VOC\u00ca PREPARA SUA PICARETA**
Mining.Listener=Minera\u00e7\u00e3o:
Mining.SkillName=MINERAR
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]A tua [[YELLOW]]abilidade Super Partir [[GREEN]]esta pronta!
Mining.Skillup=[[YELLOW]]Habilidade Minerar aumentada em {0}. Total ({1})
Mining.Blast.Boom=[[GRAY]]**BOOM**
Mining.Blast.Refresh=[[GREEN]]A tua [[YELLOW]]abilidade de explosao [[GREEN]]esta pronta!
Repair.Effect.0=Reparar
Repair.Effect.4=Super Reparo
Repair.Effect.6=Reparar Diamante ({0}+ SKILL)
Repair.Effect.7=Reparar ferramentas e armadura de Diamante
Repair.Effect.9=Reparar itens m\u00e1gicos
Repair.Listener=Reparar:
Repair.SkillName=REPARAR
Repair.Skills.AdeptDiamond=[[DARK_RED]]Voc\u00ea n\u00e3o tem nivel suficiente pra reparar Diamante.
Repair.Skills.AdeptGold=[[DARK_RED]]Voc\u00ea n\u00e3o tem nivel suficiente pra reparar Ouro.
Repair.Skills.AdeptStone=[[DARK_RED]]Voc\u00ea n\u00e3o tem nivel suficiente pra reparar Pedra.
Repair.Skills.FeltEasy=[[GRAY]]Isso pareceu f\u00e1cil.
Repair.Skillup=[[YELLOW]]Habilidade Reparar aumentada em {0}. Total ({1})
Repair.Arcane.Chance.Success=[[GRAY]]AF Percentagem de Sucesso: [[YELLOW]]{0}%
Repair.Arcane.Fail=[[VERMELHO]]Poder misterioso saiu permanentemente do item.
Repair.Arcane.Lost=[[RED]]Voc\u00ea n\u00e3o foi habilidoso o suficiente para manter os encantamentos.
Swords.Ability.Lower=[[GRAY]]**VOC\u00ca ABAIXA SUA ESPADA**
Swords.Ability.Ready=[[GREEN]]**VOC\u00ca PREPARA SUA ESPADA**
Swords.Combat.Bleeding.Stopped=[[GRAY]]O sangramento[[GREEN]]parou[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**INIMIGO A SANGRAR**
Swords.Combat.Countered=[[GREEN]]**CONTRA-ATACADO**
Swords.Effect.0=Contra-ataque
Swords.Effect.6=Sangrou
Swords.Listener=Espadas:
Swords.SkillName=Espada
Swords.Skills.SS.On=[[GREEN]]**ATAQUE DE SERRA ACTIVADO**
Taming.Ability.Bonus.1=Lobos evitam o perigo
Taming.Ability.Bonus.6=Garras Afiadas
Taming.Effect.11=Redu\u00e7\u00e3o de dano explosivo
Taming.Effect.12=Chamado da Selva
Taming.Effect.13=Invoca um animal ao seu lado
Taming.Effect.17=Chance dos lobos se curarem ao atacarem
Taming.Effect.4=Garras Afiadas
Taming.Effect.5=Dano B\u00f4nus
Taming.Listener.Wolf=[[DARK_GRAY]]O seu lobo correu de volta \u00e0 voc\u00ea...
Taming.Listener=Domar
Taming.SkillName=DOMAR
Taming.Skillup=[[YELLOW]]Habilidade Domesticar aumentada em {0}. Total ({1})
Unarmed.Listener=Desarmado:
Unarmed.SkillName=DESARMAR
Unarmed.Skills.Berserk.Off=[[RED]]**Berserk acabou**
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] usou [[RED]]Berserk!
Woodcutting.Ability.0=Soprador de Folhas
Woodcutting.Ability.1=Soprar Folhas
Woodcutting.Effect.1=Faz \u00e1rvores explodirem.
Woodcutting.Effect.4=Drops duplos
Woodcutting.Listener=Lenhador
Woodcutting.SkillName=Lenhador
Woodcutting.Skills.TreeFeller.Other.Off=[[RED]]Corta Arvores[[GREEN]] acabou para o [[YELLOW]]{0}
Woodcutting.Skills.TreeFeller.Splinter=[[RED]]SEU MACHADO QUEBRA EM DEZENAS DE PEDA\u00c7OS!
Woodcutting.Skills.TreeFellerThreshold=[[RED]]Essa \u00e1rvore \u00e9 muito grande!
Ability.Generic.Template=[[VERMELHO]]{0}:[[AMARELO]]{1}
Combat.ArrowDeflect=[[WHITE]]*DESVIOU A FLECHA*
Combat.BeastLore=[[GREEN]]*CONHECIMENTO DE FERAS*
Combat.BeastLore=[[GREEN]]*CONHECIMENTO DE ANIMAIS*
Combat.BeastLoreHealth=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreOwner=[[DARK_AQUA]]Dono ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]*MORDIDA*
Combat.StruckByGore=[[RED]]*ATINGIDO POR MORDIDA*
Combat.TargetDazed=Alvo foi [[DARK_RED]]Atordoado
Combat.TouchedFuzzy=[[DARK_RED]]Visao turva. Sente Tonturas.
Commands.AdminChat.Off=Chat Admin [[RED]]Desligado
Commands.AdminChat.On=Chat de Admin [[GREEN]]Ligado
Commands.Disabled=[[RED]]Este comando est\u00e1 desabilitado.
Commands.DoesNotExist=[[RED]]Player n\u00e3o existe na database!
Commands.GodMode.Disabled=[[YELLOW]]mcMMO Modo God desabilitado
Commands.Invite.Accepted=[[GREEN]]Convite aceito. Voc\u00ea se juntou ao grupo {0}
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - Modifica alvo
Commands.ModDescription=[[RED]]- Leia a descri\u00e7\u00e3o breve do mod
Commands.NoConsole=Esse comando n\u00e3o suporta uso no console
Commands.Party.Kick=[[RED]]Voc\u00ea foi kickado da party {0}!
Commands.Party.Accept=[[RED]]- Aceitar convite de grupo
Commands.Party.Chat.Off=Chat de grupo [[RED]]Desligado
Commands.Party.Commands=[[GREEN]]--COMANDOS DE GRUPO--
Commands.Party.Invite.0=[[RED]]ALERT: [[GREEN]]Voc\u00ea recebeu um convite para o grupo {0} de {1}
Commands.Party.Kick=[[RED]]Voc\u00ea foi kickado do grupo {0}!
Commands.Party.Leave=[[RED]]Voc\u00ea saiu do grupo
Commands.Party.None=[[RED]]Voc\u00ea n\u00e3o est\u00e1 em um grupo.
Commands.Party.Quit=[[RED]]- Deixe seu grupo atual
Commands.PowerLevel.Leaderboard=[[YELLOW]]--mcMMO[[BLUE]] Nivel de Poder [[YELLOW]]Podium--
Commands.PowerLevel=[[DARK_RED]]N\u00cdVEL DE PODER: [[GREEN]]{0}
Commands.Stats.Self=SEUS STATS
mcMMO.NoPermission=[[DARK_RED]]Permiss\u00f5es insuficientes.
Party.Forbidden=[mcMMO] Parties not permitted on this world (See Permissions)
Party.InvalidName=[[DARK_RED]]Isto n\u00e3o \u00e9 um nome v\u00e1lido.
Party.Locked=[[RED]]Equipe est\u00e1 bloqueada, s\u00f3 o l\u00edder pode convidar.
Party.NotInYourParty=[[DARK_RED]]{0} nao est\u00e1 na sua equipe
Party.Password.Set=[[GREEN]]Senha da equipe: {0}
Party.Player.Invalid=[[RED]]Isto n\u00e3o \u00e9 um jogador v\u00e1lido.
Party.Teleport.Dead=[[RED]]Voc\u00ea n\u00e3o pode teleportar para um jogador morto.
Party.Teleport.Player=[[GREEN]]Voc\u00ea teleportou para {0}.
Party.Teleport.Target=[[GREEN]]{0} teleportou-se para voc\u00ea.
Party.Unlocked=[[GRAY]]Equipe foi Destrancada
Commands.XPGain.Acrobatics=CAINDO
Commands.XPGain.Archery=Atacando Monstros
Commands.XPGain.Axes=Atacando Monstros
Commands.XPGain.Excavation=Cavando e achando tesouros
Commands.XPGain.Herbalism=Colhendo Ervas
Commands.XPGain.Mining=Minerar Pedra & Min\u00e9rio
Commands.XPGain.Swords=Atacando Monstros
Commands.XPGain.Taming=Domesticar animais, ou combater com os seus lobos
Commands.XPGain=[[DARK_GRAY]]XP ADQUIRIDO: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]Sua barra de XP BAR est\u00e1 travada em {0}!
Commands.xplock.unlocked=[[GOLD]]Sua barra de XP foi [[GREEN]]DESTRAVADA[[GOLD]]!
Commands.xprate.over=[[RED]]Evento de XP Rate acabou!!
XPRate.Event=[[GOLD]]mcMMO is currently in an XP rate event! XP rate is {0}x!
XPRate.Event=[[GOLD]]mcMMO est\u00e1 em um evento de XP aumentada! O aumento de XP \u00e9 {0}x!
Effects.Effects=EFEITOS
Guides.Axes=Guide coming soon...
Guides.Excavation=[[DARK_AQUA]] Sobre escava\u00e7\u00e3o:.. \\ N [[YELLOW]] Escava\u00e7\u00e3o \u00e9 o ato de cavar terra para encontrar tesouros \\ n [[YELLOW]] Por escavando a terra que voc\u00ea vai encontrar tesouros \\ n [[YELLOW]] Quanto mais voc\u00ea fizer isso mais os tesouros que voc\u00ea pode encontrar \\ n \\ n [[DARK_AQUA]] gANHO XP:. \\ n [[YELLOW]] Para ganhar XP neste habilidade que voc\u00ea tem que cavar com uma p\u00e1 na m\u00e3o \\ n [[. YELLOW]] Apenas certos materiais pode ser desenterrado para tesouros e XP \\ n [[DARK_AQUA]] Materiais compat\u00edveis:. \\ n [[YELLOW]] grama, terra, areia, argila, cascalho, Mic\u00e9lio, Areia Alma \\ n \\ n [[DARK_AQUA]] Como usar Broca Giga Breaker: \\ n [[YELLOW]] com uma p\u00e1 na m\u00e3o direita clique para pronta sua ferramenta \\ n [[YELLOW]] uma vez neste estado tem cerca de 4 segundos para fazer \\. n [[YELLOW]] contato com materiais de escava\u00e7\u00e3o compat\u00edveis esta \\ n [[YELLOW]] ativar disjuntor Broca Giga. \\ n [[DARK_AQUA]] O que \u00e9 o Giga disjuntor broca? \\ n [[YELLOW]] Disjuntor Broca Giga \u00e9 uma habilidade com um cooldown \\ n [[YELLOW]] ligada \u00e0 habilidade de escava\u00e7\u00e3o. Triplica sua chance \\ n [[YELLOW]] de encontrar tesouros e permite quebra instant\u00e2nea \\ n [[YELLOW]] em materiais de escava\u00e7\u00e3o. \\ N \\ n [[DARK_AQUA]] Como Treasure Hunter trabalho? \\ N [[] YELLOW ] Cada tesouro poss\u00edvel para escava\u00e7\u00e3o tem a sua pr\u00f3pria \\ n [[YELLOW]] exig\u00eancia de n\u00edvel de habilidade para a sua queda, como resultado, \u00e9 \\ n [[YELLOW]] dif\u00edcil dizer o quanto ele est\u00e1 ajudando voc\u00ea. \\ n [[YELLOW ]] Basta ter em mente que a habilidade maior escava\u00e7\u00e3o sua \\ n [[YELLOW]] \u00e9, os mais tesouros que podem ser encontrados. \\ n [[YELLOW]] E tamb\u00e9m ter em mente que cada tipo de escava\u00e7\u00e3o \\ n [[YELLOW]] material compat\u00edvel tem sua pr\u00f3pria lista \u00fanica de tesouros. \\ n [[YELLOW]] em outras palavras, voc\u00ea vai encontrar tesouros diferentes na sujeira \\ n [[YELLOW]] do que voc\u00ea em cascalho. \\ n [[DARK_AQUA]] notas sobre a escava\u00e7\u00e3o: \\ n [[YELLOW]] gotas de escava\u00e7\u00e3o s\u00e3o completamente customizeable \\ n [[YELLOW]] Ent\u00e3o, os resultados variam de servidor para servidor.\n
Guides.Mining=[[DARK_AQUA]]About Mining:\n[[YELLOW]]Mining consists of mining stone and ores. It provides bonuses\n[[YELLOW]]to the amount of materials dropped while mining.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill, you must mine with a pickaxe in hand.\n[[YELLOW]]Only certain blocks award XP.\n\n[[DARK_AQUA]]Compatible Materials:\n[[YELLOW]]Stone, Coal Ore, Iron Ore, Gold Ore, Diamond Ore, Redstone Ore,\n[[YELLOW]]Lapis Ore, Obsidian, Mossy Cobblestone, Ender Stone,\n[[YELLOW]]Glowstone, and Netherrack.\n\n[[DARK_AQUA]]How to use Super Breaker:\n[[YELLOW]]With a pickaxe in your hand, right click to ready your tool.\n[[YELLOW]]Once in this state, you have about 4 seconds to make contact\n[[YELLOW]]with Mining compatible materials, which will activate Super\n[[YELLOW]]Breaker.\n\n[[DARK_AQUA]]What is Super Breaker?\n[[YELLOW]]Super Breaker is an ability with a cooldown tied to the Mining\n[[YELLOW]]skill. It triples your chance of extra items dropping and\n[[YELLOW]]enables instant break on Mining materials.\n\n[[DARK_AQUA]]How to use Blast Mining:\n[[YELLOW]]With a detonator in hand, which is a flint & steel by default,\n[[YELLOW]]right-click on TNT from a distance. This will cause the TNT\n[[YELLOW]]to instantly explode.\n\n[[DARK_AQUA]]How does Blast Mining work?\n[[YELLOW]]Blast Mining is an ability with a cooldown tied to the Mining\n[[YELLOW]]skill. It gives bonuses when mining with TNT and allows you\n[[YELLOW]]to remote detonate TNT. There are three parts to Blast Mining.\n[[YELLOW]]The first part is Bigger Bombs, which increases blast radius.\n[[YELLOW]]The second is Demolitions Expert, which decreases damage\n[[YELLOW]]from TNT explosions. The third part simply increases the\n[[YELLOW]]amount of ores dropped from TNT and decreases the\n[[YELLOW]]debris dropped.
Inspect.OfflineStats=mcMMO Statsde player offline[[YELLOW]]{0}
Inspect.Stats=[[GREEN]]mcMMO Stats for [[YELLOW]]{0}
Inspect.TooFar=[[RED]]You are too far away to inspect that player!
Item.ChimaeraWing.Fail=**ASAS DE QUIMERA FALHARAM!**
Item.ChimaeraWing.Pass=**ASAS DE QUIMERA**
Item.Injured.Wait=Voc\u00ea foi ferido recentemente e deve esperar para usar isto. [[YELLOW]]({0}s)
Skills.Disarmed=[[DARK_RED]]Voc\u00ea foi Desarmado!
Skills.NeedMore=[[DARK_RED]]Voc\u00ea precisa de mais
Skills.TooTired=[[RED]]Voc\u00ea est\u00e1 cansado pra usar essa habilidade.
Stats.Header.Combat=[[GOLD]]-=SKILLS DE COMBATE=-
Stats.Header.Gathering=[[GOLD]]-=SKILLS DE RECOLHA=-

View File

@@ -458,6 +458,7 @@ Party.NotOwner=[[DARK_RED]]\u0412\u044b \u043d\u0435 \u043b\u0438\u0434\u0435\u0
Party.Owner.New=[[GREEN]]{0} \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u043e\u0432\u044b\u0439 \u043b\u0438\u0434\u0435\u0440 \u0433\u0440\u0443\u043f\u043f\u044b.
Party.Owner.NotLeader=[[DARK_RED]]\u0412\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043b\u0438\u0434\u0435\u0440 \u0433\u0440\u0443\u043f\u043f\u044b.
Party.Owner.Player=[[GREEN]]\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043b\u0438\u0434\u0435\u0440 \u0433\u0440\u0443\u043f\u043f\u044b.
Party.Password.None=[[RED]]\u042d\u0442\u0430 \u0433\u0440\u0443\u043f\u043f\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u0435\u043c. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0435\u043d\u0438\u0442\u044c\u0441\u044f.
Party.Password.Incorrect=[[RED]]\u041f\u0430\u0440\u043e\u043b\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439.
Party.Password.Set=[[GREEN]]\u041f\u0430\u0440\u043e\u043b\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d {0}
Party.Password.Removed=[[GREEN]]\u041f\u0430\u0440\u043e\u043b\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0435\u043d.
@@ -597,6 +598,7 @@ Commands.Description.hardcore=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \
Commands.Description.inspect=\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e mcMMO \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0434\u0440\u0443\u0433\u043e\u043c \u0438\u0433\u0440\u043e\u043a\u0435
Commands.Description.mcability=\u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u0443\u043c\u0435\u043d\u0438\u0439 mcMMO \u043a\u043b\u0438\u043a\u043e\u043c \u041f\u041a\u041c
Commands.Description.mcgod=\u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0440\u0435\u0436\u0438\u043c-\u0431\u043e\u0433\u0430 mcMMO
Commands.Description.mchud=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0438\u043b\u044c \u041f\u0430\u043d\u0435\u043b\u0438 \u0412\u0430\u0436\u043d\u043e\u0439 \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 mcMMO!
Commands.Description.mcmmo=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 mcMMO
Commands.Description.mcpurge=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u0435\u0437 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 mcMMO \u0438 \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 {0} \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 mcMMO.
Commands.Description.mcrank=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c mcMMO \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0438\u0433\u0440\u043e\u043a\u0430
@@ -607,9 +609,11 @@ Commands.Description.mctop=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u04
Commands.Description.mmoedit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c mcMMO \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
Commands.Description.mmoupdate=\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 mcMMO \u0438\u0437 Flatfile \u0432 MySQL
Commands.Description.party=\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u0430\u0442\u0438 mcMMO
Commands.Description.partychat=\u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0439 \u0447\u0430\u0442 \u0438\u043b\u0438 \u043e\u0442\u043e\u0441\u043b\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
Commands.Description.ptp=\u0422\u0435\u043b\u0435\u043f\u043e\u0440\u0442 \u043a mcMMO \u0447\u043b\u0435\u043d\u0430\u043c \u0433\u0440\u0443\u043f\u043f\u044b
Commands.Description.Skill=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0430\u0432\u044b\u043a\u0430\u0445 mcMMO \u0434\u043b\u044f {0}
Commands.Description.skillreset=\u0421\u0431\u0440\u043e\u0441 mcMMO \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
Commands.Description.vampirism=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 mcMMO \u043a\u0440\u043e\u0432\u043e\u0436\u0430\u0434\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u043a\u0440\u043e\u0432\u043e\u0436\u0430\u0434\u043d\u043e\u0441\u0442\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c
Commands.Description.xplock=\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u041f\u0430\u043d\u0435\u043b\u044c \u041e\u043f\u044b\u0442\u0430 mcMMO \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0432\u044b\u043a\u0430.
UpdateChecker.outdated=\u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e mcMMO!
UpdateChecker.newavailable=\u0415\u0441\u0442\u044c \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u043d\u0430 BukkitDev.

View File

@@ -1,4 +1,5 @@
Acrobatics.Ability.Proc=[[GREEN]]**\u0e43\u0e0a\u0e49\u0e17\u0e31\u0e01\u0e29\u0e30 Graceful Landing**
Acrobatics.Combat.Proc=[[GREEN]]**Dodged**
Acrobatics.DodgeChance=[[RED]]Dodge \u0e42\u0e2d\u0e01\u0e32\u0e2a: [[YELLOW]]{0}
Acrobatics.Effect.0=Roll
Acrobatics.Effect.1=\u0e25\u0e14\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e22\u0e2b\u0e32\u0e22\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e15\u0e01\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07
@@ -71,6 +72,7 @@ Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]\u0e04\u0e27\u0e32\u0e21\u0e
Excavation.Skills.GigaDrillBreaker.Other.Off=[[RED]]Giga Drill Breaker[[GREEN]] \u0e23\u0e2d\u0e01\u0e32\u0e23\u0e04\u0e39\u0e25\u0e14\u0e32\u0e27\u0e19\u0e4c [[YELLOW]]{0}
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e31\u0e01\u0e29\u0e30 [[RED]]Giga Drill Breaker!
Excavation.Skillup=[[YELLOW]]\u0e17\u0e31\u0e01\u0e29\u0e30 Excavation \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19 {0}. \u0e21\u0e35\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 ({1})
Fishing.Ability.Chance=[[RED]]Bite \u0e42\u0e2d\u0e01\u0e32\u0e2a: [[YELLOW]]{0}
Fishing.Ability.Info=[[RED]]\u0e17\u0e31\u0e01\u0e29\u0e30 Magic Hunter: [[GRAY]] **\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e42\u0e14\u0e22\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e17\u0e31\u0e01\u0e29\u0e30 Treasure Hunter**
Fishing.Ability.Locked.0=\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e25\u0e14\u0e25\u0e47\u0e2d\u0e01\u0e44\u0e14\u0e49\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e30\u0e14\u0e31\u0e1a {0}+ (SHAKE)
Fishing.Ability.Rank=[[RED]]Treasure Hunter \u0e23\u0e30\u0e14\u0e31\u0e1a: [[YELLOW]]{0}/5
@@ -84,6 +86,8 @@ Fishing.Effect.4=Shake (vs. Entities)
Fishing.Effect.5=\u0e40\u0e02\u0e22\u0e48\u0e32\u0e40\u0e2d\u0e32\u0e2a\u0e34\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e08\u0e32\u0e01 monster w/ \u0e14\u0e49\u0e27\u0e22\u0e04\u0e31\u0e19\u0e40\u0e1a\u0e47\u0e14
Fishing.Effect.6=Fisherman\'s Diet
Fishing.Effect.7=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e01\u0e34\u0e19\u0e1b\u0e25\u0e32
Fishing.Effect.8=Master Angler
Fishing.Effect.9=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e42\u0e2d\u0e01\u0e32\u0e2a\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1b\u0e25\u0e32\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e15\u0e01\u0e1b\u0e25\u0e32
Fishing.Enchant.Chance=[[RED]]Magic Hunter \u0e42\u0e2d\u0e01\u0e32\u0e2a: [[YELLOW]]{0}
Fishing.Chance.Raining=[[BLUE]] Rain Bonus
Fishing.ItemFound=[[GRAY]]\u0e44\u0e14\u0e49\u0e1e\u0e1a\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34!
@@ -370,6 +374,7 @@ Commands.mcpurge.Success=[[GREEN]]\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e
Commands.mcrank.Heading=[[GOLD]]-=\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2d\u0e31\u0e19\u0e14\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e1a\u0e38\u0e04\u0e04\u0e25=-
Commands.mcrank.Overall=[[YELLOW]]\u0e23\u0e27\u0e21\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14[[GREEN]] - [[GOLD]]\u0e23\u0e30\u0e14\u0e31\u0e1a [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=[[RED]]\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22: [[WHITE]]{0}
Commands.mcrank.Skill=[[YELLOW]]{0}[[GREEN]] - [[GOLD]]\u0e25\u0e33\u0e14\u0e31\u0e1a [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]Unranked
Commands.mcrefresh.Success=[[RED]]{0}\'\'\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 \u0e04\u0e39\u0e25\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08.
Commands.mcremove.Success=[[GREEN]]{0} \u0e08\u0e30\u0e16\u0e39\u0e01\u0e25\u0e1a\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08!
@@ -573,6 +578,7 @@ Perks.xp.name=\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c
Perks.xp.desc=\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a {0}x EXP.
Perks.lucky.name=\u0e42\u0e0a\u0e04
Perks.lucky.desc=\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e01\u0e29\u0e30 {0} \u0e41\u0e25\u0e30\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e21\u0e35\u0e42\u0e2d\u0e01\u0e32\u0e2a 33.3% \u0e14\u0e35\u0e01\u0e27\u0e48\u0e32\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
Perks.lucky.desc.login=\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e01\u0e29\u0e30\u0e1a\u0e32\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e25\u0e30\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e19\u0e42\u0e2d\u0e01\u0e32\u0e2a\u0e17\u0e35\u0e48 33.3% \u0e14\u0e35\u0e01\u0e27\u0e48\u0e32\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
Perks.lucky.bonus=[[GOLD]] ({0} \u0e14\u0e49\u0e27\u0e22 Lucky Perk)
Perks.cooldowns.name=Fast Recovery
Perks.cooldowns.desc=\u0e25\u0e14\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e04\u0e39\u0e25\u0e14\u0e32\u0e27\u0e19\u0e4c {0}.
@@ -652,5 +658,3 @@ Commands.Description.xplock=\u0e25\u0e47\u0e2d\u0e04 mcMMO \u0e1a\u0e32\u0e23\u0
Commands.Description.xprate=\u0e41\u0e01\u0e49\u0e44\u0e02\u0e2d\u0e31\u0e15\u0e23\u0e32 mcMMO EXP \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e40\u0e2b\u0e15\u0e38\u0e01\u0e32\u0e23\u0e13\u0e4c mcMMO EXP
UpdateChecker.outdated=You are using an outdated version of mcMMO!
UpdateChecker.newavailable=There is a new version available on BukkitDev.
Salvage.Listener=\u0e17\u0e31\u0e01\u0e29\u0e30 Salvage:
Salvage.SkillName=SALVAGE

View File

@@ -19,6 +19,7 @@ Archery.Combat.SkillshotBonus=[[RED]]\u6280\u5de7\u5c04\u51fb\u5956\u52b1\u4f24\
Archery.Effect.0=\u6280\u5de7\u5c04\u51fb
Archery.Effect.1=\u589e\u52a0\u5f13\u7bad\u4f24\u5bb3
Archery.Effect.2=\u51fb\u6655 (\u9650\u73a9\u5bb6\u4e4b\u95f4)
Archery.Effect.3=\u8ff7\u60d1\u654c\u4eba\u5e76\u9020\u6210 {0} \u4f24\u5bb3
Archery.Effect.4=\u56de\u6536\u5f13\u7bad
Archery.Effect.5=\u6709\u51e0\u7387\u4ece\u5c38\u4f53\u4e0a\u56de\u6536\u7bad\u77e2
Archery.Listener=\u7bad\u672f:(ARCHERY)
@@ -48,8 +49,8 @@ Axes.Effect.6=\u51b2\u51fb
Axes.Effect.7=\u7528\u8db3\u591f\u7684\u529b\u91cf\u51fb\u788e\u62a4\u7532
Axes.Effect.8=\u5f3a\u70c8\u51b2\u51fb
Axes.Effect.9=\u5bf9\u65e0\u62a4\u7532\u654c\u4eba\u9020\u6210\u989d\u5916\u4f24\u5bb3
Axes.Listener=\u65a7\u5934(Axes):
Axes.SkillName=\u65a7\u5934
Axes.Listener=\u65a7\u6280(Axes):
Axes.SkillName=\u65a7\u6280
Axes.Skills.SS.Off=[[RED]]**\u65a9\u9996\u8005\u6280\u80fd\u5df2\u7ed3\u675f**
Axes.Skills.SS.On=[[GREEN]]**\u65a9\u9996\u8005\u6280\u80fd\u542f\u52a8**
Axes.Skills.SS.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u65a9\u9996\u8005 [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u4f7f\u7528\uff01\uff01\uff01
@@ -71,9 +72,11 @@ Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u66b
Excavation.Skills.GigaDrillBreaker.Other.Off=[[RED]]\u66b4\u8d70\u94bb\u5934[[GREEN]] \u8fdb\u5165\u51b7\u5374 [[YELLOW]]{0}
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u66b4\u8d70\u94bb\u5934!
Excavation.Skillup=[[YELLOW]]\u6316\u6398\u6280\u80fd\u63d0\u5347 {0}. \u603b\u5171 ({1})
Fishing.Ability.Chance=[[RED]]\u6495\u54ac\u51e0\u7387: [[YELLOW]]{0}
Fishing.Ability.Info=[[RED]]\u9b54\u6cd5\u730e\u4eba: [[GRAY]] ** \u968f\u7740\u5b9d\u85cf\u730e\u4eba\u7b49\u7ea7\u63d0\u9ad8 **
Fishing.Ability.Locked.0=\u9501\u5b9a\u72b6\u6001\uff0c\u76f4\u5230 {0}+ \u6280\u80fd\uff08\u6447\uff09
Fishing.Ability.Rank=[[RED]]\u5b9d\u7269\u730e\u4eba\u7b49\u7ea7: [[YELLOW]]{0}/5
Fishing.Ability.Shake=[[RED]]\u9c7c\u94a9\u7a83\u53d6\u51e0\u7387: [[YELLOW]]{0}
Fishing.Ability.FD=[[RED]]\u6e14\u6c11\u7684\u98df\u8c31: [[YELLOW]]\u6392\u540d {0}
Fishing.Effect.0=\u5b9d\u7269\u730e\u4eba (\u88ab\u52a8\u6280\u80fd)
Fishing.Effect.1=\u9493\u5230\u6742\u7269
@@ -81,20 +84,30 @@ Fishing.Effect.2=\u9b54\u6cd5\u730e\u4eba
Fishing.Effect.3=\u627e\u5230\u9644\u9b54\u7269\u54c1
Fishing.Effect.4=\u6643\u52a8\u602a\u7269 (\u5bf9\u602a\u7269\u4f7f\u7528)
Fishing.Effect.5=\u7528\u9c7c\u7aff\u628a\u602a\u7269\u8eab\u4e0a\u7684\u4e1c\u897f\u6447\u4e0b\u6765
Fishing.Effect.6=\u6e14\u592b\u98df\u8c31
Fishing.Effect.7=\u63d0\u9ad8\u9c7c\u7c7b\u98df\u7269\u6062\u590d\u7684\u9965\u997f\u503c
Fishing.Effect.8=\u9493\u9c7c\u5927\u5e08
Fishing.Effect.9=\u63d0\u9ad8\u9493\u9c7c\u54ac\u94a9\u51e0\u7387
Fishing.Enchant.Chance=[[RED]]\u9b54\u6cd5\u730e\u4eba\u51e0\u7387: [[YELLOW]]{0}
Fishing.Chance.Raining=[[BLUE]] \u5927\u91cf\u5956\u52b1
Fishing.ItemFound=[[GRAY]]\u53d1\u73b0\u5b9d\u7269\u4e86\uff01
Fishing.Listener=\u9493\u9c7c(Fishing):
Fishing.MagicFound=[[GRAY]]\u4f60\u611f\u5230\u4e00\u80a1\u9b54\u529b\u7684\u6ce2\u52a8...
Fishing.SkillName=\u9493\u9c7c
Fishing.Skillup=[[YELLOW]]\u9493\u9c7c\u6280\u80fd\u63d0\u5347\u4e86 {0}. \u603b\u5171 ({1})
Herbalism.Ability.DoubleDropChance=[[RED]]\u53cc\u500d\u6389\u843d\u51e0\u7387: [[YELLOW]]{0}
Herbalism.Ability.FD=[[RED]]\u519c\u592b\u98df\u8c31: [[YELLOW]]\u6392\u540d {0}
Herbalism.Ability.GTe.Length=[[RED]]\u571f\u795e\u5e87\u4f51\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=[[RED]]\u4f60\u9700\u8981\u66f4\u591a\u7684\u79cd\u5b50\u8fdb\u884c\u7eff\u5316
Herbalism.Ability.GTh.Chance=[[RED]]\u7eff\u5316\u51e0\u7387: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=[[RED]]**\u7eff\u5316\u5931\u8d25**
Herbalism.Ability.GTh.Stage=[[RED]]\u7eff\u5316:[[YELLOW]]\u519c\u4f5c\u7269\u751f\u957f\u671f{0}
Herbalism.Ability.GTh=[[GREEN]]**\u7eff\u5316**
Herbalism.Ability.HylianLuck=[[RED]]\u6d77\u62c9\u5c14\u7684\u795d\u798f\u89e6\u53d1\u51e0\u7387: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u9504\u5934**
Herbalism.Ability.Ready=[[GREEN]]**\u4f60\u6311\u8d77\u4e86\u4f60\u7684\u9504\u5934**
Herbalism.Ability.ShroomThumb.Chance=[[RED]]\u83cc\u4e1d\u5316\u51e0\u7387: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=[[RED]]**\u83cc\u4e1d\u5316\u5931\u8d25**
Herbalism.Effect.0=\u571f\u795e\u5e87\u4f51 (\u4e3b\u52a8\u6280\u80fd)
Herbalism.Effect.1=\u64ad\u6492\u5973\u795e\u7684\u6069\u60e0, \u83b7\u5f973\u500d\u6389\u7387
Herbalism.Effect.2=\u7eff\u5316 (\u5c0f\u9ea6)
@@ -105,7 +118,11 @@ Herbalism.Effect.6=\u519c\u592b\u98df\u8c31
Herbalism.Effect.7=\u98df\u7528\u519c\u4ea7\u54c1\u65f6\u989d\u5916\u56de\u590d\u9965\u997f\u5ea6
Herbalism.Effect.8=\u53cc\u500d\u6389\u843d (\u6240\u6709\u7684\u690d\u7269)
Herbalism.Effect.9=\u53cc\u500d\u7269\u54c1
Herbalism.Effect.10=\u6d77\u62c9\u5c14\u7684\u795d\u798f
Herbalism.Effect.11=\u7ed9\u4e88\u5c0f\u51e0\u7387\u627e\u5230\u7a00\u6709\u7269\u54c1\u7684\u80fd\u529b
Herbalism.Effect.12=\u83cc\u4e1d\u5316
Herbalism.Effect.13=\u5411\u6ce5\u571f&\u8349\u5730\u6563\u64ad\u83cc\u4e1d
Herbalism.HylianLuck=[[GREEN]]\u613f\u6d77\u62c9\u5c14\u7684\u795d\u798f\u4e0e\u4f60\u540c\u5728!
Herbalism.Listener=\u8349\u836f\u5b66:(HERBALISM)
Herbalism.SkillName=\u8349\u836f\u5b66
Herbalism.Skills.GTe.Off=[[RED]]**\u571f\u795e\u5e87\u4f51\u5df2\u7ecf\u505c\u6b62\u4e86**
@@ -141,16 +158,19 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e8
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u8d85\u7ea7\u77ff\u5de5 [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u518d\u6b21\u4f7f\u7528\u4e86\uff01
Mining.Skillup=[[YELLOW]]\u6316\u77ff\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u7b49\u7ea7 ({1})
Mining.Blast.Boom=[[GRAY]]**\u5623**
Mining.Blast.Effect=+{0} \u77ff\u7269\u91cf, -{1} \u788e\u7247\u91cf, {2}x \u6389\u843d
Mining.Blast.Radius.Increase=[[RED]]\u7206\u70b8\u534a\u5f84\u63d0\u5347: [[YELLOW]]+{0}
Mining.Blast.Rank=[[RED]]\u7206\u7834\u5f00\u91c7: [[YELLOW]] \u6392\u540d {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u7206\u7834\u5f00\u91c7!
Mining.Blast.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u7206\u7834\u5f00\u91c7 [[GREEN]]\u6280\u80fd\u51b7\u5374\u5b8c\u6bd5!
Repair.AnvilPlaced.Spout1=[mcMMO] \u94c1\u7827\u5df2\u653e\u7f6e
Repair.AnvilPlaced.Spout2=\u53f3\u952e\u8fdb\u884c\u4fee\u7406!
Repair.Effect.0=\u4fee\u7406
Repair.Effect.1=\u4fee\u7406\u5de5\u5177\u548c\u88c5\u5907
Repair.Effect.10=\u4fee\u7406\u9ec4\u91d1 ({0}+ SKILL)
Repair.Effect.11=\u4fee\u7406\u9ec4\u91d1\u5de5\u5177\u548c\u88c5\u5907
Repair.Effect.12=\u4fee\u7406\u94c1\u8d28\u7269\u54c1 ({0}+ SKILL)
Repair.Effect.13=\u4fee\u7406\u94c1\u8d28\u5de5\u5177\u548c\u88c5\u5907
Repair.Effect.13=\u4fee\u7406\u94c1\u8d28\u5de5\u5177\u548c\u62a4\u7532
Repair.Effect.14=\u4fee\u7406\u77f3\u5934\u7269\u54c1 ({0}+ SKILL)
Repair.Effect.15=\u4fee\u7406\u77f3\u5934\u5de5\u5177
Repair.Effect.2=\u4fee\u7406\u7cbe\u901a
@@ -165,25 +185,25 @@ Repair.Effect.16=\u5206\u89e3 ({0}+ SKILL)
Repair.Effect.17=\u5206\u89e3\u5de5\u5177\u548c\u62a4\u7532
Repair.Error=[[DARK_RED]]mcMMO \u5728\u5c1d\u8bd5\u4fee\u7406\u6b64\u7269\u54c1\u65f6\u53d1\u751f\u4e86\u9519\u8bef!
Repair.Listener.Anvil=[[DARK_RED]]\u4f60\u653e\u7f6e\u7684\u94c1\u65b9\u5757\u53ef\u4ee5\u7528\u6765\u4fee\u7406\u5de5\u5177\u548c\u9632\u5177.
Repair.Listener.Anvil2=[[DARK_RED]]\u60a8\u653e\u7f6e\u4e86\u4e00\u4e2a\u6253\u635e\u7827\uff0c\u7528\u6b64\u6765\u6253\u635e\u5de5\u5177\u548c\u88c5\u7532\u3002
Repair.Listener.Anvil2=[[DARK_RED]]\u60a8\u653e\u7f6e\u4e86\u4e00\u4e2a\u5206\u89e3\u7827\uff0c\u7528\u6b64\u6765\u5206\u89e3\u5de5\u5177\u548c\u88c5\u7532\u3002
Repair.Listener=\u4fee\u7406\uff1a
Repair.SkillName=\u4fee\u7406
Repair.Skills.AdeptSalvage=[[DARK_RED]]\u4f60\u4e0d\u80fd\u5206\u89e3\u8fd9\u4e2a\u7269\u54c1.
Repair.Skills.AdeptSalvage=[[DARK_RED]]\u4f60\u7684\u6280\u80fd\u4e0d\u8db3\u4ee5\u5206\u89e3\u8fd9\u4e2a\u7269\u54c1.
Repair.Skills.AdeptDiamond=[[DARK_RED]]\u4f60\u7684\u6280\u80fd\u7b49\u7ea7\u4e0d\u8db3\u4ee5\u4fee\u7406\u94bb\u77f3\u88c5\u5907.
Repair.Skills.AdeptGold=[[DARK_RED]]\u4f60\u7684\u6280\u80fd\u7b49\u7ea7\u4e0d\u8db3\u4ee5\u4fee\u7406\u9ec4\u91d1\u88c5\u5907.
Repair.Skills.AdeptIron=[[DARK_RED]]\u4f60\u7684\u6280\u80fd\u4e0d\u8db3\u4ee5\u4fee\u590d\u94c1\u8d28\u88c5\u5907.
Repair.Skills.AdeptStone=[[DARK_RED]]\u4f60\u7684\u6280\u80fd\u7b49\u7ea7\u4e0d\u8db3\u4ee5\u4fee\u590d\u77f3\u5934\u88c5\u5907\u77f3\u5934\u88c5\u5907.
Repair.Skills.AdeptStone=[[DARK_RED]]\u4f60\u7684\u6280\u80fd\u7b49\u7ea7\u4e0d\u8db3\u4ee5\u4fee\u590d\u77f3\u5934\u88c5\u5907
Repair.Skills.Adept=[[RED]]\u4f60\u5fc5\u987b\u8fbe\u5230\u7b49\u7ea7 [[YELLOW]]{0}[[RED]] \u624d\u80fd\u4fee\u7406 [[YELLOW]]{1}
Repair.Skills.FeltEasy=[[GRAY]]\u90a3\u770b\u8d77\u6765\u5f88\u7b80\u5355.
Repair.Skills.FullDurability=[[GRAY]]\u4f60\u7684\u88c5\u5907\u5df2\u7ecf\u6ee1\u8010\u4e45\u5ea6\u4e86
Repair.Skills.SalvageSuccess=[[GRAY]]\u7269\u54c1\u5df2\u5206\u89e3!
Repair.Skills.NotFullDurability=[[DARK_RED]]\u60a8\u4e0d\u80fd\u633d\u6551\u53d7\u635f\u7684\u9879\u76ee\u3002
Repair.Skills.Mastery=[[RED]]\u4fee\u7406\u7cbe\u901a: [[YELLOW]]\u989d\u5916\u56de\u590d {0}% \u8010\u4e45\u5ea6
Repair.Skills.NotFullDurability=[[DARK_RED]]\u4f60\u4e0d\u80fd\u5206\u89e3\u53d7\u635f\u7684\u7269\u54c1
Repair.Skills.Mastery=[[RED]]\u4fee\u7406\u7cbe\u901a: [[YELLOW]]\u989d\u5916\u56de\u590d {0} \u8010\u4e45\u5ea6
Repair.Skills.StackedItems=[[DARK_RED]]\u4f60\u65e0\u6cd5\u4fee\u7406\u5df2\u53e0\u52a0\u7684\u7269\u54c1.
Repair.Skills.Super.Chance=[[RED]]\u8d85\u7ea7\u4fee\u7406\u51e0\u7387: [[YELLOW]]{0}
Repair.Skillup=[[YELLOW]]\u4fee\u7406\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u5171 ({1})
Repair.Arcane.Chance.Downgrade=[[GRAY]]\u9644\u9b54\u964d\u7ea7\u51e0\u7387: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]\u81ea\u52a8\u5bf9\u7126\u7684\u6210\u529f\u7387: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]\u795e\u79d8\u953b\u9020\u6210\u529f\u7387: [[YELLOW]]{0}%
Repair.Arcane.Downgrade=[[RED]]\u8fd9\u4ef6\u7269\u54c1\u7684\u9644\u9b54\u7b49\u7ea7\u5df2\u4e0b\u964d.
Repair.Arcane.Fail=[[RED]]\u8fd9\u4ef6\u7269\u54c1\u7684\u9644\u9b54\u5df2\u6d88\u5931.
Repair.Arcane.Lost=[[RED]]\u4f60\u7684\u6280\u80fd\u7b49\u7ea7\u4e0d\u8db3\u4ee5\u4fdd\u7559\u9644\u9b54\u5c5e\u6027.
@@ -202,8 +222,11 @@ Swords.Combat.Counter.Hit=[[DARK_RED]]\u4f60\u53cd\u51fb\u4e86\u5bf9\u624b!
Swords.Combat.Countered=[[GREEN]]**\u53cd\u51fb\u4e86\u654c\u4eba**
Swords.Combat.SS.Struck=[[DARK_RED]]\u53d1\u52a8\u952f\u9f7f\u653b\u51fb\uff01
Swords.Effect.0=\u53cd\u51fb
Swords.Effect.1=\u53cd\u5c04 {0} \u6240\u53d7\u4f24\u5bb3
Swords.Effect.2=\u952f\u9f7f\u653b\u51fb (\u4e3b\u52a8\u6280\u80fd)
Swords.Effect.3={0} \u4f24\u5bb3\u8303\u56f4; \u6d41\u8840\u8303\u56f4
Swords.Effect.4=\u952f\u9f7f\u653b\u51fb\u6d41\u8840\u4f24\u5bb3\u589e\u52a0
Swords.Effect.5={0} \u523b \u6d41\u8840
Swords.Effect.6=\u6d41\u8840
Swords.Effect.7=\u4ea7\u751f\u6d41\u8840\u70b9
Swords.Listener=\u5251\u672f(Swords):
@@ -218,13 +241,22 @@ Swords.SS.Length=[[RED]]\u952f\u9f7f\u5229\u5203\u6301\u7eed\u65f6\u95f4: [[YELL
Taming.Ability.Bonus.0=\u73af\u5883\u611f\u77e5
Taming.Ability.Bonus.1=\u72fc\u4f1a\u907f\u514d\u5371\u9669
Taming.Ability.Bonus.2=\u539a\u5b9e\u7684\u76ae\u6bdb
Taming.Ability.Bonus.3=1/{0} \u4f24\u5bb3, \u706b\u7130\u62b5\u6297
Taming.Ability.Bonus.4=\u51b2\u51fb\u62b5\u6297
Taming.Ability.Bonus.5=\u7206\u70b8\u9020\u6210 1/{0} \u666e\u901a\u4f24\u5bb3
Taming.Ability.Bonus.6=\u5229\u722a
Taming.Ability.Bonus.7=+{0} \u4f24\u5bb3
Taming.Ability.Bonus.8=\u5feb\u9910\u670d\u52a1
Taming.Ability.Bonus.9={0} \u7684\u51e0\u7387\u653b\u51fb\u65f6\u56de\u8840
Taming.Ability.Bonus.10=\u72ac\u795e\u7684\u5e87\u62a4
Taming.Ability.Bonus.11=\u53d7\u5230\u9b54\u6cd5\u6216\u4e2d\u6bd2\u4f24\u5bb3\u65f6\u6062\u590d\u751f\u547d\u503c
Taming.Ability.Locked.0= {0}+ \u7ea7\u540e\u89e3\u9501 (\u73af\u5883\u611f\u77e5)
Taming.Ability.Locked.1=\u9501\u5b9a\u76f4\u5230 {0}+ \u6280\u80fd (\u539a\u5b9e\u7684\u76ae\u6bdb)
Taming.Ability.Locked.2=\u9501\u5b9a\u76f4\u5230 {0}+ \u6280\u80fd (\u51b2\u51fb\u62b5\u6297)
Taming.Ability.Locked.3=\u9501\u5b9a\u76f4\u5230 {0}+ \u6280\u80fd (\u5229\u722a)
Taming.Combat.Chance.Gore=[[RED]]\u6d41\u8840\u51e0\u7387: [[YELLOW]]{0}
Taming.Ability.Locked.4={0}+ \u7ea7\u540e\u89e3\u9501 (FAST FOOD SERVICE)
Taming.Ability.Locked.5={0}+ \u7ea7\u540e\u89e3\u9501 (\u72ac\u795e\u7684\u5e87\u62a4)
Taming.Combat.Chance.Gore=[[RED]]\u55dc\u8840\u51e0\u7387: [[YELLOW]]{0}
Taming.Effect.0=\u9a6f\u517d\u77e5\u8bc6
Taming.Effect.1=\u7528\u9aa8\u5934\u53f3\u952e\u5355\u51fb\u72fc\u6216\u8005\u8c79\u732b\u4ee5\u68c0\u67e5\u5b83\u4eec\u7684\u72b6\u51b5
Taming.Effect.10=\u51b2\u51fb\u62b5\u6297
@@ -235,7 +267,9 @@ Taming.Effect.14=[[GRAY]]\u53ec\u5524 (\u8c79\u732b): \u6309\u4f4fshift\u540c\u6
Taming.Effect.15=[[GRAY]]\u53ec\u5524 (\u72fc): \u6309\u4f4fshift\u540c\u65f6\u5355\u51fb\u5de6\u952e \u8fd8\u9700\u8981\u62ff {0} \u6839\u9aa8\u5934\u5728\u624b\u91cc
Taming.Effect.16=\u5feb\u9910\u670d\u52a1
Taming.Effect.17=\u4e00\u5b9a\u51e0\u7387\u4f7f\u72fc\u5728\u653b\u51fb\u65f6\u56de\u590d\u81ea\u8eab\u8840\u91cf
Taming.Effect.2=\u6d41\u8840
Taming.Effect.18=\u72ac\u795e\u7684\u5e87\u62a4
Taming.Effect.19=\u5df2\u88ab\u9b54\u6cd5 & \u4e2d\u6bd2\u6548\u679c\u6cbb\u6108
Taming.Effect.2=\u55dc\u8840
Taming.Effect.3=\u81f4\u547d\u653b\u51fb\u4f1a\u4f7f\u76ee\u6807\u6d41\u8840
Taming.Effect.4=\u5229\u722a
Taming.Effect.5=\u4f24\u5bb3\u5956\u52b1
@@ -255,24 +289,29 @@ Unarmed.Ability.Bonus.0=\u94c1\u8155\u6a21\u5f0f
Unarmed.Ability.Bonus.1=\u589e\u52a0{0}\u70b9\u4f24\u5bb3
Unarmed.Ability.Chance.ArrowDeflect=[[RED]]\u7bad\u77e2\u504f\u5411\u51e0\u7387: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=[[RED]]\u7f34\u68b0\u51e0\u7387: [[YELLOW]]{0}
Unarmed.Ability.Chance.IronGrip=[[RED]]\u8d85\u5f3a\u63e1\u529b\u89e6\u53d1\u51e0\u7387: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=[[RED]]\u4f60\u7684\u5bf9\u624b\u6709\u8d85\u5f3a\u63e1\u529b!
Unarmed.Ability.IronGrip.Defender=[[GREEN]]\u4f60\u7684\u8d85\u5f3a\u63e1\u529b\u62b5\u6321\u4f4f\u4e86\u5bf9\u65b9\u7684\u7f34\u68b0\u653b\u51fb!
Unarmed.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u62f3\u5934**
Unarmed.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7d27\u4e86\u4f60\u7684\u62f3\u5934**
Unarmed.Effect.0=\u72c2\u66b4 (\u4e3b\u52a8\u6280\u80fd)
Unarmed.Effect.1=+50% \u4f24\u5bb3, \u80fd\u7834\u574f\u786c\u5ea6\u4f4e\u7684\u65b9\u5757
Unarmed.Effect.2=\u6389\u843d\u6b66\u5668 (\u50c5\u9650\u65bc\u73a9\u5bb6)
Unarmed.Effect.2=\u7f34\u68b0 (\u4ec5\u9650\u73a9\u5bb6)
Unarmed.Effect.3=\u4f7f\u654c\u4eba\u624b\u4e2d\u6b66\u5668\u6389\u843d
Unarmed.Effect.4=\u94c1\u8155\u6a21\u5f0f
Unarmed.Effect.5=\u4f7f\u4f60\u7684\u62a4\u7532\u968f\u65f6\u95f4\u589e\u52a0\u800c\u589e\u5f3a
Unarmed.Effect.6=\u7bad\u77e2\u504f\u5411
Unarmed.Effect.7=\u8ba9\u7bad\u77e2\u504f\u5411
Unarmed.Listener=\u672a\u88c5\u5907\uff1a
Unarmed.Effect.8=\u8d85\u5f3a\u63e1\u529b
Unarmed.Effect.9=\u9632\u6b62\u4f60\u88ab\u7f34\u68b0
Unarmed.Listener=\u683c\u6597:
Unarmed.SkillName=\u683c\u6597
Unarmed.Skills.Berserk.Off=[[RED]]**\u72c2\u66b4\u6280\u80fd\u5df2\u7ed3\u675f**
Unarmed.Skills.Berserk.On=[[GREEN]]**\u72c2\u66b4\u6fc0\u6d3b**
Unarmed.Skills.Berserk.Other.Off=[[RED]]\u72c2\u66b4[[GREEN]] \u5df2\u7ecf\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u72c2\u66b4!
Unarmed.Skills.Berserk.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u72c2\u66b4 [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u4f7f\u7528\u4e86!
Unarmed.Skillup=[[YELLOW]]\u5f92\u624b\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u7b49\u7ea7 ({1})
Unarmed.Skillup=[[YELLOW]]\u683c\u6597\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u7b49\u7ea7 ({1})
Woodcutting.Ability.0=\u79cb\u98ce\u626b\u843d\u53f6
Woodcutting.Ability.1=\u626b\u9664\u6811\u53f6
Woodcutting.Ability.Chance.DDrop=[[RED]]\u53cc\u500d\u6389\u843d\u51e0\u7387: [[YELLOW]]{0}
@@ -305,15 +344,18 @@ Combat.Gore=[[GREEN]]**\u6d41\u8840**
Combat.StruckByGore=[[RED]]**\u4f60\u5f00\u59cb\u6d41\u8840\u4e86**
Combat.TargetDazed=\u76ee\u6807\u88ab [[DARK_RED]]\u88ab\u51fb\u6655
Combat.TouchedFuzzy=[[DARK_RED]]\u5934\u6655\u76ee\u7729
mcMMO.Description=[[DARK_AQUA]]\u5173\u4e8e [[YELLOW]]mcMMO[[DARK_AQUA]]:,[[GOLD]]mcMMO \u662f\u4e00\u4e2a [[RED]]\u5f00\u6e90[[GOLD]] RPG mod \u521b\u5efa\u4e8e2011\u5e742\u6708,[[GOLD]]by [[BLUE]]nossr50[[GOLD]]. \u76ee\u6807\u4e3a\u73a9\u5bb6\u63d0\u4f9b\u4e00\u4e2a\u9ad8\u8d28\u91cf\u7684RPG\u4f53\u9a8c.,[[DARK_AQUA]]\u63d0\u793a:,[[GOLD]] - [[GREEN]]\u4f7f\u7528 [[RED]]/mcmmo help[[GREEN]] \u67e5\u770b\u6307\u4ee4,[[GOLD]] - [[GREEN]]\u8f93\u5165 [[RED]]/\u6280\u80fd\u540d[[GREEN]] \u67e5\u770b\u8be6\u7ec6\u7684\u6280\u80fd\u4fe1\u606f,[[DARK_AQUA]]\u5f00\u53d1\u8005:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](\u521b\u59cb\u4eba),[[GOLD]] - [[GREEN]]GJ [[BLUE]](\u9879\u76ee\u7ec4\u957f),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](\u5f00\u53d1\u8005),[[DARK_AQUA]]\u6709\u7528\u7684\u94fe\u63a5:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] \u62a5\u544aBUG,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,[[YELLOW]]\u53c2\u4e0e\u8fc7\u6c49\u5316\u7684\u4eba[[DARK_AQUA]]:,[[GREEN]]664365842 hzk11o11k11o JGG Cirno zesty wolski,[[YELLOW]]\u90e8\u5206\u4fee\u6b63 [[DARK_AQUA]]by [[GREEN]]wolski,[[DARK_AQUA]]\u4fee\u6b63\u8865\u6f0f\u5de5\u4f5c\u8fd8\u5728\u7ee7\u7eed...
Commands.addlevels.AwardAll.1=[[GREEN]]\u4f60\u7684\u6240\u6709\u7b49\u7ea7\u88ab\u5956\u52b1\u4e0a\u5347\u4e86 {0} \u7ea7!
Commands.addlevels.AwardAll.2=[[RED]]\u6240\u6709\u6280\u80fd\u7b49\u7ea7\u5df2\u88ab\u8bbe\u7f6e\u4e3a {0}.
Commands.addlevels.AwardSkill.1=[[GREEN]]\u4f60\u5728 {1} \u91cc\u5347\u4e86 {0} \u7ea7!
Commands.addlevels.AwardSkill.2=[[RED]]{0} \u56e0\u4e3a {1} \u800c\u88ab\u4fee\u6539.
Commands.addxp.AwardAll=[[GREEN]]\u4f60\u7684\u6240\u6709\u6280\u80fd\u83b7\u5f97 {0} \u70b9\u7ecf\u9a8c!
Commands.addxp.AwardSkill=[[GREEN]]\u4f60\u5728 {1} \u88ab\u5956\u52b1\u4e86 {0} \u70b9\u7ecf\u9a8c!
Commands.Ability.Off=\u6280\u80fd\u4f7f\u7528 [[GREEN]]\u5173\u95ed
Commands.Ability.On=\u6280\u80fd\u4f7f\u7528 [[GREEN]]\u5f00\u542f
Commands.AdminChat.Off=\u4ec5\u7ba1\u7406\u804a\u5929\u6a21\u5f0f [[RED]]\u5173\u95ed
Commands.AdminChat.On=\u4ec5\u7ba1\u7406\u804a\u5929\u6a21\u5f0f [[GREEN]]\u5f00\u542f
Commands.AdminChat.Prefix=[[AQUA]][[[WHITE]]{0}[[AQUA]]]
Commands.AdminToggle=[[RED]]- \u5207\u6362\u7ba1\u7406\u5458\u804a\u5929
Commands.Chat.Console=*\u63a7\u5236\u53f0*
Commands.Disabled=[[RED]]\u8fd9\u4e2a\u6307\u4ee4\u88ab\u7981\u7528\u4e86.
@@ -329,61 +371,148 @@ Commands.mcc.Header=[[RED]]---[][[YELLOW]]mcMMO \u6307\u4ee4[[RED]][]---
Commands.mcgod=[[RED]]- \u5207\u6362\u4e0a\u5e1d\u6a21\u5f0f
Commands.mchud.Invalid=[[RED]]\u90a3\u5e76\u4e0d\u662f\u53ef\u7528\u7684HUD\u7c7b\u578b.
Commands.mcpurge.Success=[[GREEN]]\u6570\u636e\u5e93\u5df2\u88ab\u6210\u529f\u6e05\u7a7a!
Commands.mcrank.Heading=[[GOLD]]-=\u4e2a\u4eba\u6392\u540d=-
Commands.mcrank.Overall=[[YELLOW]]\u7efc\u5408[[GREEN]] - [[GOLD]]\u6392\u540d [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=[[RED]]\u76ee\u6807: [[WHITE]]{0}
Commands.mcrank.Skill=[[YELLOW]]{0}[[GREEN]] - [[GOLD]]\u6392\u540d [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]\u65e0\u6392\u540d
Commands.mcrefresh.Success=[[RED]]{0} \u7684\u51b7\u5374\u65f6\u95f4\u5df2\u5237\u65b0
Commands.mcremove.Success=[[GREEN]]{0} \u5df2\u4ece\u6570\u636e\u5e93\u4e2d\u6210\u529f\u79fb\u9664!
Commands.mctop.Tip=[[GOLD]]\u63d0\u793a: \u4f7f\u7528 [[RED]]/mcrank[[GOLD]] \u6765\u67e5\u770b\u4f60\u6240\u6709\u7684\u4e2a\u4eba\u6392\u540d!
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - \u7f16\u8f91\u76ee\u6807
Commands.mmoedit.AllSkills.1=[[GREEN]]\u4f60\u7684\u6240\u6709\u6280\u80fd\u7b49\u7ea7\u8bbe\u7f6e\u4e3a {0}!
Commands.mmoedit.Modified.1=[[GREEN]]\u4f60\u7684\u7b49\u7ea7 {0} \u88ab\u8bbe\u7f6e\u4e3a {1}!
Commands.mmoedit.Modified.2=[[RED]]{0} \u5df2\u66f4\u6539\u4e3a {1}.
Commands.mmoupdate.Start=[[GRAY]]\u5f00\u59cb\u8f6c\u6362...
Commands.mmoupdate.Finish=[[GREEN]]\u8f6c\u6362\u5b8c\u6bd5!
Commands.ModDescription=[[RED]]- \u8bf7\u9605\u8bfb\u7b80\u8981\u63d2\u4ef6\u63cf\u8ff0
Commands.NoConsole=\u8fd9\u4e2a\u6307\u4ee4\u4e0d\u652f\u6301\u5728\u63a7\u5236\u53f0\u4f7f\u7528.
Commands.Notifications.Off=\u6280\u80fd\u63d0\u793a [[RED]]\u5173\u95ed
Commands.Notifications.On=\u6280\u80fd\u63d0\u793a [[GREEN]]\u5f00\u542f
Commands.Offline=[[RED]]\u8fd9\u4e2a\u6307\u4ee4\u5bf9\u79bb\u7ebf\u73a9\u5bb6\u65e0\u6548
Commands.Other=[[GREEN]]--\u5176\u4ed6\u547d\u4ee4--
Commands.Party.Header=[[RED]]-----[][[GREEN]]\u961f\u4f0d[[RED]][]-----
Commands.Party.Status=[[DARK_GRAY]]\u540d\u5b57: [[WHITE]]{0} {1}
Commands.Party.ShareMode=[[DARK_GRAY]]\u5171\u4eab\u6a21\u5f0f:
Commands.Party.ItemShare=[[GRAY]]\u7269\u54c1 [[DARK_AQUA]]({0})
Commands.Party.ExpShare=[[GRAY]]\u7ecf\u9a8c [[DARK_AQUA]]({0})
Commands.Party.ItemShareCategories=[[DARK_GRAY]]\u7269\u54c1\u5206\u914d: [[GRAY]][[ITALIC]]{0}
Commands.Party.MembersNear=[[DARK_GRAY]]\u4f60\u9644\u8fd1 [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
Commands.Party.Accept=[[RED]]- \u63a5\u53d7\u961f\u4f0d\u9080\u8bf7
Commands.Party.Chat.Off=\u53ea\u5141\u8bb8\u961f\u4f0d\u804a\u5929 [[RED]]\u5173\u95ed
Commands.Party.Chat.On=\u56e2\u961f\u804a\u5929 [[GREEN]]\u5f00\u542f
Commands.Party.Chat.Prefix=[[GREEN]]([[WHITE]]{0}[[GREEN]])
Commands.Party.Commands=[[GREEN]]--\u7ec4\u961f\u547d\u4ee4--
Commands.Party.Invite.0=[[RED]]\u6ce8\u610f: [[GREEN]]\u4f60\u6536\u5230\u4e86\u4e00\u4e2a\u7ec4\u961f\u9080\u8bf7 {0} \u6765\u81ea {1}
Commands.Party.Invite.1=[[YELLOW]]\u8f93\u5165 [[GREEN]]/party accept[[YELLOW]] \u6765\u63a5\u53d7\u9080\u8bf7
Commands.Party.Invite=[[RED]]- \u53d1\u9001\u7ec4\u961f\u9080\u8bf7
Commands.Party.Join=[[GRAY]]\u52a0\u5165\u7684\u961f\u4f0d: {0}
Commands.Party.Create=[[GRAY]]\u5df2\u521b\u5efa\u961f\u4f0d: {0}
Commands.Party.Rename=[[GRAY]]\u961f\u4f0d\u540d\u53d8\u66f4\u4e3a: [[WHITE]]{0}
Commands.Party.SetSharing=[[GRAY]]\u961f\u4f0d {0} \u5171\u4eab\u8bbe\u7f6e\u4e3a: [[DARK_AQUA]]{1}
Commands.Party.ToggleShareCategory=[[GRAY]]\u961f\u4f0d\u7269\u54c1\u5206\u914d\u7531 [[GOLD]]{0} [[GRAY]] \u53d8\u4e3a [[DARK_AQUA]]{1}
Commands.Party.AlreadyExists=[[DARK_RED]]\u961f\u4f0d {0} \u5df2\u5b58\u5728!
Commands.Party.Kick=[[RED]]\u4f60\u5df2\u88ab {0} \u8e22\u51fa!
Commands.Party.Leave=[[RED]]\u4f60\u79bb\u5f00\u4e86\u8fd9\u652f\u961f\u4f0d
Commands.Party.Members.Header=[[RED]]-----[][[GREEN]]\u6210\u5458[[RED]][]-----
Commands.Party.None=[[RED]]\u4f60\u4e0d\u5728\u961f\u4f0d\u4e2d.
Commands.Party.Quit=[[RED]]- \u79bb\u5f00\u4f60\u73b0\u6709\u7684\u961f\u4f0d
Commands.Party.Teleport=<player> [[RED]]- \u4f20\u9001\u5230\u961f\u4f0d\u6210\u5458
Commands.Party.Toggle=[[RED]]- \u5207\u6362\u961f\u4f0d\u804a\u5929
Commands.Party1=[[RED]]- \u521b\u5efa\u4e00\u4e2a\u65b0\u961f\u4f0d
Commands.Party2=[[RED]]- \u52a0\u5165\u4e00\u4e2a\u73a9\u5bb6\u7684\u961f\u4f0d
Commands.ptp.Enabled=\u961f\u4f0d\u4f20\u9001 [[GREEN]]\u542f\u7528
Commands.ptp.Disabled=\u961f\u4f0d\u4f20\u9001 [[RED]]\u7981\u7528
Commands.ptp.NoRequests=[[RED]]\u5f53\u524d\u6ca1\u6709\u4f20\u9001\u8bf7\u6c42
Commands.ptp.NoWorldPermissions=[[RED]][mcMMO] \u4f60\u6ca1\u6709\u6743\u9650\u4f20\u9001\u5230\u4e16\u754c {0}.
Commands.ptp.Request1=[[YELLOW]]{0} [[GREEN]]\u5df2\u7ecf\u5411\u4f60\u53d1\u51fa\u8bf7\u6c42\u4f20\u9001
Commands.ptp.Request2=[[GREEN]]\u540c\u610f\u4f20\u9001\u8f93\u5165 [[YELLOW]]/ptp accept. [[GREEN]]\u8bf7\u6c42\u5c06\u5728 [[RED]]{0} [[GREEN]] \u79d2\u540e\u5931\u6548
Commands.ptp.AcceptAny.Enabled=\u961f\u4f0d\u4f20\u9001\u8bf7\u6c42\u786e\u8ba4 [[GREEN]]\u542f\u7528
Commands.ptp.AcceptAny.Disabled=\u961f\u4f0d\u4f20\u9001\u8bf7\u6c42\u786e\u8ba4 [[RED]]\u7981\u7528
Commands.ptp.RequestExpired=[[RED]]\u961f\u4f0d\u4f20\u9001\u8bf7\u6c42\u5df2\u5931\u6548!
Commands.PowerLevel.Leaderboard=[[YELLOW]]--mcMMO[[BLUE]] \u80fd\u529b\u7b49\u7ea7 [[YELLOW]]\u6392\u884c\u699c--
Commands.PowerLevel.Capped=[[DARK_RED]]\u80fd\u529b\u7b49\u7ea7: [[GREEN]]{0} [[DARK_RED]]\u6700\u9ad8\u7b49\u7ea7: [[YELLOW]]{1}
Commands.PowerLevel=[[DARK_RED]]\u80fd\u529b\u7b49\u7ea7: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]\u4f60\u7684\u6280\u672f\u6c34\u5e73\u5df2\u590d\u4f4d\u6210\u529f.
Commands.Reset.Single=[[GREEN]]\u60a8\u7684 {0} \u6280\u672f\u6c34\u5e73\u5df2\u590d\u4f4d\u6210\u529f\u3002
Commands.Reset=[[RED]]\u91cd\u7f6e\u6280\u80fd\u7b49\u7ea7\u4e3a0
Commands.Skill.Invalid=[[RED]]\u8fd9\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u6280\u80fd\u540d\u5b57!
Commands.Skill.Leaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] \u6392\u884c\u699c--
Commands.SkillInfo=/<skill> [[RED]]- \u67e5\u770b\u6280\u80fd\u7684\u8be6\u7ec6\u4fe1\u606f
Commands.Stats.Self=\u4f60\u7684\u4fe1\u606f
Commands.Stats=[[RED]]- \u67e5\u770b\u4f60\u7684mcMMO\u7edf\u8ba1\u4fe1\u606f
Commands.ToggleAbility=[[RED]]- \u7528\u9f20\u6807\u53f3\u952e\u5207\u6362\u6280\u80fd\u6fc0\u6d3b\u6a21\u5f0f
Commands.Usage.0=[[RED]]\u6b63\u786e\u7684\u7528\u6cd5 /{0}
Commands.Usage.1=[[RED]]\u6b63\u786e\u7684\u7528\u6cd5\u5e94\u4e3a /{0} {1}
Commands.Usage.2=[[RED]]\u6b63\u786e\u7684\u7528\u6cd5 /{0} {1} {2}
Commands.Usage.3=[[RED]]\u6b63\u786e\u7684\u7528\u6cd5 /{0} {1} {2} {3}
Commands.Usage.Level=\u7b49\u7ea7
Commands.Usage.Message=\u6d88\u606f
Commands.Usage.Page=\u9875
Commands.Usage.PartyName=\u540d\u79f0
Commands.Usage.Password=\u5bc6\u7801
Commands.Usage.Player=\u73a9\u5bb6
Commands.Usage.Rate=\u6bd4\u7387
Commands.Usage.Skill=\u6280\u80fd
Commands.Usage.XP=\u7ecf\u9a8c\u503c
mcMMO.NoInvites=[[RED]]\u4f60\u73b0\u5728\u6ca1\u6709\u6536\u5230\u4efb\u4f55\u9080\u8bf7
mcMMO.NoPermission=[[DARK_RED]]\u6743\u9650\u4e0d\u8db3.
mcMMO.NoSkillNote=[[DARK_GRAY]]\u5982\u679c\u4f60\u6ca1\u6709\u67d0\u4e2a\u6280\u80fd\u7684\u4f7f\u7528\u6743\u9650\u90a3\u4e48\u4ed6\u5c06\u4e0d\u4f1a\u5728\u8fd9\u91cc\u663e\u793a.
Party.Forbidden=[mcMMO] \u961f\u4f0d\u529f\u80fd\u4e0d\u5141\u8bb8\u5728\u8fd9\u4e2a\u4e16\u754c\u5f00\u542f (\u8be6\u60c5\u8bf7\u770b\u6743\u9650\u914d\u7f6e)
Party.Help.0=[[RED]]\u6b63\u786e\u7684\u7528\u6cd5 [[DARK_AQUA]]{0} <player> [password].
Party.Help.1=[[RED]]\u521b\u5efa\u4e00\u4e2a\u961f\u4f0d, \u4f7f\u7528 [[DARK_AQUA]]{0} <name> [password].
Party.Help.2=[[RED]]\u67e5\u9605 [[DARK_AQUA]]{0} [[RED]]\u83b7\u53d6\u66f4\u591a\u4fe1\u606f
Party.Help.3=[[RED]]\u4f7f\u7528 [[DARK_AQUA]]{0} <player> [password] [[RED]]\u52a0\u5165\u6216 [[DARK_AQUA]]{1} [[RED]]\u9000\u51fa
Party.Help.4=[[RED]]\u9501\u5b9a\u6216\u89e3\u9501\u4f60\u7684\u961f\u4f0d, \u4f7f\u7528 [[DARK_AQUA]]{0}
Party.Help.5=[[RED]]\u8bbe\u7f6e\u961f\u4f0d\u5bc6\u7801, \u4f7f\u7528 [[DARK_AQUA]]{0} <password>
Party.Help.6=[[RED]]\u4ece\u4f60\u7684\u961f\u4f0d\u4e2d\u8e22\u51fa\u73a9\u5bb6, \u4f7f\u7528 [[DARK_AQUA]]{0} <player>
Party.Help.7=[[RED]]\u79fb\u4ea4\u961f\u957f, \u4f7f\u7528 [[DARK_AQUA]]{0} <player>
Party.Help.8=[[RED]]\u89e3\u6563\u961f\u4f0d, \u4f7f\u7528 [[DARK_AQUA]]{0}
Party.InformedOnJoin={0} [[GREEN]]\u5df2\u7ecf\u52a0\u5165\u4f60\u7684\u961f\u4f0d
Party.InformedOnQuit={0} [[GREEN]]\u79bb\u5f00\u4e86\u961f\u4f0d
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]\u5df2\u8bbe\u7f6e\u961f\u4f0d\u540d\u4e3a [[WHITE]]{1}
Party.InvalidName=[[DARK_RED]]\u90a3\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u961f\u4f0d\u540d\u5b57.
Party.Invite.Self=[[RED]]\u4f60\u4e0d\u80fd\u9080\u8bf7\u81ea\u5df1!
Party.IsLocked=[[RED]]\u8fd9\u4e2a\u961f\u4f0d\u5df2\u7ecf\u9501\u5b9a!
Party.IsntLocked=[[RED]]\u8fd9\u4e2a\u961f\u4f0d\u5e76\u6ca1\u6709\u9501\u5b9a!
Party.Locked=[[RED]]\u961f\u4f0d\u88ab\u9501\u5b9a, \u53ea\u6709\u961f\u957f\u53ef\u4ee5\u9080\u8bf7.
Party.NotInYourParty=[[DARK_RED]]{0} \u4f60\u4e0d\u5728\u4f60\u7684\u56e2\u961f
Party.NotOwner=[[DARK_RED]]\u4f60\u4e0d\u662f\u961f\u957f
Party.Owner.New=[[GREEN]]{0} \u73b0\u5728\u662f\u65b0\u7684\u6d3e\u7cfb\u9886\u961f.
Party.Owner.NotLeader=[[DARK_RED]]\u4f60\u5df2\u7ecf\u4e0d\u518d\u662f\u6d3e\u7cfb\u5185\u7684\u9886\u961f.
Party.Owner.Player=[[GREEN]]\u4f60\u73b0\u5728\u4e0d\u662f\u961f\u957f\u4e86
Party.Password.None=[[RED]]\u52a0\u5165\u8fd9\u4e2a\u961f\u4f0d\u9700\u8981\u5bc6\u7801. \u8bf7\u63d0\u4f9b\u5bc6\u7801\u518d\u52a0\u5165
Party.Password.Incorrect=[[RED]]\u961f\u4f0d\u5bc6\u7801\u9519\u8bef
Party.Password.Set=[[GREEN]]\u961f\u4f0d\u5bc6\u7801\u8bbe\u7f6e\u4e3a {0}
Party.Password.Removed=[[GREEN]]\u961f\u4f0d\u5bc6\u7801\u5df2\u88ab\u6e05\u9664
Party.Player.Invalid=[[RED]]\u8fd9\u4e0d\u662f\u4e00\u540d\u6709\u6548\u7684\u73a9\u5bb6
Party.NotOnline=[[DARK_RED]]{0} \u4e0d\u5728\u7ebf!
Party.Player.InSameParty=[[RED]]{0} \u5df2\u7ecf\u5728\u961f\u4f0d\u4e2d!
Party.PlayerNotInParty=[[DARK_RED]]{0} \u4e0d\u5728\u961f\u4f0d\u91cc
Party.Specify=[[RED]]\u4f60\u5fc5\u987b\u6307\u5b9a\u4e00\u4e2a\u961f\u4f0d
Party.Teleport.Dead=[[RED]]\u4f60\u4e0d\u80fd\u4f20\u9001\u5230\u6b7b\u4ea1\u7684\u73a9\u5bb6\u8eab\u8fb9
Party.Teleport.Hurt=[[RED]]\u4f60\u53d7\u5230\u4f24\u5bb3, \u81f3\u5c11 {0} \u79d2\u5185\u4e0d\u80fd\u4f20\u9001
Party.Teleport.Player=[[GREEN]]\u4f60\u5df2\u7ecf\u4f20\u9001\u5230 {0}.
Party.Teleport.Self=[[RED]]\u4f60\u4e0d\u80fd\u4f20\u9001\u5230\u4f60\u81ea\u5df1\u90a3\u91cc!
Party.Teleport.Target=[[GREEN]]{0} \u5df2\u7ecf\u4f20\u9001\u5230\u4f60\u8eab\u8fb9.
Party.Teleport.Disabled=[[RED]]{0} \u4e0d\u5141\u8bb8\u961f\u4f0d\u4f20\u9001
Party.Rename.Same=[[RED]]\u8fd9\u5df2\u7ecf\u662f\u4f60\u7684\u961f\u4f0d\u540d\u5b57\u4e86!
Party.Join.Self=[[RED]]\u4f60\u4e0d\u80fd\u52a0\u5165\u4f60\u81ea\u5df1!
Party.Unlocked=[[GRAY]]\u961f\u4f0d\u5df2\u89e3\u9501
Party.Disband=[[GRAY]]\u961f\u4f0d\u5df2\u89e3\u6563
Party.Status.Locked=[[DARK_RED]](\u4ec5\u9080\u8bf7)
Party.Status.Unlocked=[[DARK_GREEN]](\u5f00\u542f)
Party.ShareType.Exp=\u7ecf\u9a8c
Party.ShareType.Item=\u7269\u54c1
Party.ShareMode.None=\u65e0
Party.ShareMode.Equal=\u5747\u5206
Party.ShareMode.Random=\u968f\u673a
Party.ExpShare.Disabled=[[RED]]\u961f\u4f0d\u7ecf\u9a8c\u5171\u4eab\u5df2\u7981\u7528
Party.ItemShare.Disabled=[[RED]]\u961f\u4f0d\u7269\u54c1\u5206\u914d\u5df2\u5173\u95ed
Commands.XPGain.Acrobatics=\u6389\u843d
Commands.XPGain.Archery=\u7a7a\u624b\u653b\u51fb\u602a\u7269
Commands.XPGain.Axes=\u653b\u51fb\u602a\u7269
Commands.XPGain.Child=\u4ece\u4e3b\u6280\u80fd\u83b7\u53d6\u7b49\u7ea7
Commands.XPGain.Excavation=\u6316\u5230\u5b9d\u7269
Commands.XPGain.Fishing=\u9493\u9c7c (\u53bb\u60f3\u60f3\u5427\uff01)
Commands.XPGain.Herbalism=\u6536\u83b7\u4f5c\u7269
@@ -392,10 +521,11 @@ Commands.XPGain.Repair=\u4fee\u7406
Commands.XPGain.Swords=\u653b\u51fb\u602a\u7269
Commands.XPGain.Taming=\u9a6f\u517d, \u548c\u4f60\u7684\u72fc\u4e00\u8d77\u6218\u6597
Commands.XPGain.Unarmed=\u653b\u51fb\u602a\u7269
Commands.XPGain.Woodcutting=\u6b63\u5728\u780d\u5012\u6811\u6728
Commands.XPGain=[[DARK_GRAY]]\u83b7\u5f97\u7ecf\u9a8c: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]\u4f60\u7684\u7ecf\u9a8c\u6761\u9501\u5b9a\u5728 {0}!
Commands.xplock.unlocked=[[GOLD]]\u4f60\u7684\u7ecf\u9a8c\u6761\u73b0\u5728 [[GREEN]]\u89e3\u9664\u9501\u5b9a\u4e86[[GOLD]]!
Commands.xprate.modified=[[RED]]\u7ecf\u9a8c\u6c47\u7387\u5df2\u88ab\u8bbe\u7f6e\u4e3a {0}
Commands.xprate.modified=[[RED]]\u7ecf\u9a8c\u500d\u7387\u5df2\u8bbe\u7f6e\u4e3a {0}
Commands.xprate.over=[[RED]]mcMMO \u9ad8\u7ecf\u9a8c\u4e8b\u4ef6\u7ed3\u675f!!
Commands.xprate.proper.0=[[RED]]\u60f3\u4fee\u6539\u7ecf\u9a8c\u83b7\u53d6\u7387\u8bf7\u8f93\u5165 /xprate <integer> <true/false>
Commands.xprate.proper.1=[[RED]]\u60f3\u628a\u7ecf\u9a8c\u83b7\u53d6\u7387\u8c03\u6574\u4e3a\u9ed8\u8ba4\u8bf7\u8f93\u5165 /xprate reset
@@ -404,14 +534,28 @@ Commands.xprate.started.0=[[GOLD]] mcMMO \u9ad8\u7ecf\u9a8c\u4e8b\u4ef6\u5df2\u
Commands.xprate.started.1=[[GOLD]]mcMMO \u7ecf\u9a8c\u83b7\u53d6\u7387\u73b0\u5728\u4e3a {0}x!
XPRate.Event=[[GOLD]]mcMMO \u73b0\u5728\u6b63\u5904\u4e8e\u9ad8\u7ecf\u9a8c\u4e8b\u4ef6\u9636\u6bb5! \u7ecf\u9a8c\u83b7\u53d6\u7387\u4e3a {0}\u500d
Effects.Effects=\u6548\u679c
Effects.Child=[[DARK_GRAY]]\u7b49\u7ea7: [[GREEN]]{0}
Effects.Level=[[DARK_GRAY]]\u7b49\u7ea7: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Parent=[[GOLD]]{0} -
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Acrobatics=[[DARK_AQUA]]\u5173\u4e8e\u6742\u6280:\n[[YELLOW]]\u6742\u6280\u662f\u4e00\u95e8\u4f18\u96c5\u7684\u79fb\u52a8\u827a\u672f.\n[[YELLOW]]\u4ed6\u53ef\u4ee5\u63d0\u4f9b\u6218\u6597\u65f6\u7684\u989d\u5916\u5c5e\u6027\u5956\u52b1\u5e76\u4e14\u662f\u4f60\u7684\u79fb\u52a8\u66f4\u52a0\u65b9\u4fbf.\n[[DARK_AQUA]]\u63d0\u5347\u7ecf\u9a8c:\n[[YELLOW]]\u901a\u8fc7\u5728\u6218\u6597\u4e2d\u95ea\u907f\u5bf9\u624b\u6216\u8005\u4ece\u9ad8\u5904\u8dcc\u843d\u4e0d\u6b7b\u6765\u63d0\u5347\u8be5\u6280\u80fd\u7684\u7ecf\u9a8c.\n[[DARK_AQUA]]\u7ffb\u6eda\u662f\u5982\u4f55\u5de5\u4f5c\u7684?\n[[YELLOW]]\u7ffb\u6eda\u65f6\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd,\u5728\u4f60\u4ece\u9ad8\u7a7a\u6389\u843d\u65f6\uff0c\u4ed6\u6709\u4e00\u5b9a\u51e0\u7387\u51cf\u5c11\u6216\u8005\u5b8c\u5168\u6d88\u9664\u4f60\u6240\u53d7\u5230\u7684\u4f24\u5bb3\n[[YELLOW]]This triggers a Graceful Roll instead of a standard one.\n[[YELLOW]]Graceful Rolls are like regular rolls but are twice as likely to\n[[YELLOW]]occur and provide more damage safety than regular rolls.\n[[YELLOW]]\u7ffb\u6eda\u7684\u51e0\u7387\u548c\u4f60\u7684\u6280\u80fd\u7b49\u7ea7\u6709\u5173\n[[DARK_AQUA]]\u95ea\u907f\u662f\u5982\u4f55\u5de5\u4f5c\u7684?\n[[YELLOW]]\u95ea\u907f\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\uff0c\u4ed6\u5728\u4f60\u88ab\u653b\u51fb\u65f6\u6709\u4e00\u5b9a\u51e0\u7387\u88ab\u6fc0\u53d1.\n[[YELLOW]]\u8fd9\u4e2a\u51e0\u7387\u548c\u4f60\u7684\u6280\u80fd\u7b49\u7ea7\u6709\u5173.
Guides.Axes=\u8bf4\u660e\u5373\u5c06\u5230\u6765...
Guides.Archery=[[DARK_AQUA]]\u5173\u4e8e \u7bad\u672f:\n[[YELLOW]]\u7528\u4f60\u7684\u5f13\u548c\u7bad\u8fdb\u884c\u5c04\u51fb\n[[YELLOW]]\u5b83\u63d0\u4f9b\u4e30\u5bcc\u7684\u989d\u5916\u6218\u6597\u52a0\u6210, \u5982\u4f24\u5bb3\u52a0\u6210\u968f\u7740\n[[YELLOW]]\u6280\u80fd\u7b49\u7ea7\u63d0\u9ad8, PVP\u65f6\u51fb\u6655\u4f60\u7684\u5bf9\u624b\n[[YELLOW]]\u53e6\u5916, \u4f60\u53ef\u4ee5\u4ece\u654c\u4eba\u7684\u5c38\u4f53\u4e0a\u53d6\u56de\u7bad\n[[YELLOW]]\u4ece\u800c\u8282\u7701\u4f60\u7684\u7bad\u77e2\u7528\u91cf\n[[DARK_AQUA]]\u7ecf\u9a8c\u83b7\u53d6:\n[[YELLOW]]\u7ecf\u9a8c\u83b7\u53d6\u91cf\n[[YELLOW]]\u53d6\u51b3\u4e8e\u4f60\u5bf9\u751f\u7269\u6216\u73a9\u5bb6\u9020\u6210\u7684\u4f24\u5bb3\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u719f\u7ec3\u5c04\u51fb?\n[[YELLOW]]\u4e3a\u4f60\u7684\u5c04\u51fb\u63d0\u4f9b\u989d\u5916\u4f24\u5bb3\n[[YELLOW]]\u989d\u5916\u4f24\u5bb3\u4e0e\u4f60\u7684\u7bad\u672f\u7b49\u7ea7\u6709\u5173\n[[YELLOW]]\u9ed8\u8ba4\u7684\n[[YELLOW]]\u6bcf50\u7ea7\u63d0\u9ad810%\u4f24\u5bb3\n[[YELLOW]]\u6700\u9ad8200%\n[[DARK_AQUA]]\u5982\u4f55\u51fb\u6655?\n[[YELLOW]]\u7528\u5f13\u7bad\u5c04\u51fb\u5176\u4ed6\u73a9\u5bb6\u65f6\u4e00\u5b9a\u51e0\u7387\n[[YELLOW]]\u4f7f\u4f60\u7684\u5bf9\u624b\u8fdb\u5165\u7729\u6655\u72b6\u6001\n[[YELLOW]]\u7729\u6655\u7684\u73a9\u5bb6\u89c6\u89d2\u5f3a\u5236\u671b\u5929\u6301\u7eed\u4e00\u6bb5\u65f6\u95f4\n[[YELLOW]]\u51fb\u6655\u540c\u65f6\u9644\u52a04\u70b9\u989d\u5916\u4f24\u5bb3 (2 \u5fc3).\n[[DARK_AQUA]]\u7bad\u77e2\u56de\u6536\u662f\u4ec0\u4e48?\n[[YELLOW]]\u4f60\u6709\u4e00\u5b9a\u51e0\u7387\u4ece\u6740\u6b7b\u7684\u751f\u7269\n[[YELLOW]]\u8eab\u4e0a\u53d6\u56de\u4e00\u4e9b\u7bad\u77e2\n[[YELLOW]]\u51e0\u7387\u4e0e\u7bad\u672f\u7b49\u7ea7\u6709\u5173\n[[YELLOW]]\u9ed8\u8ba4\u7684, \u6bcf\u5347\u4e00\u7ea7\u63d0\u9ad80.1%\n[[YELLOW]]\u6700\u9ad8100% (1000\u7ea7)
Guides.Axes=[[DARK_AQUA]]\u5173\u4e8e \u65a7\u6280:\n[[YELLOW]]\u7528\u4e86\u65a7\u5934\u6280\u80fd, \u65a7\u5b50\u4e0d\u518d\u53ea\u662f\u780d\u6811\u7528\u4e86\n[[YELLOW]]\u4f60\u8fd8\u53ef\u4ee5\u780d\u5176\u4ed6\u751f\u7269\u548c\u73a9\u5bb6\u6765\u8d5a\u53d6\u7ecf\u9a8c\n[[YELLOW]]\u6253\u51fb\u751f\u7269\u65f6\u9644\u52a0\u51fb\u9000\u6548\u679c\n[[YELLOW]]\u8fd8\u4f1a\u5bf9\u751f\u7269\u548c\u73a9\u5bb6\u9020\u6210\u81f4\u547d\u4f24\u5bb3\n[[YELLOW]]\u4f60\u7684\u65a7\u5b50\u4f1a\u50cf\u4f10\u6728\u673a\u4e00\u6837\n[[YELLOW]]\u8f7b\u677e\u524a\u6389\u654c\u4eba\u7684\u62a4\u7532\n[[YELLOW]]\u6548\u679c\u968f\u7740\u6280\u80fd\u7b49\u7ea7\u63d0\u9ad8\n[[DARK_AQUA]]\u7ecf\u9a8c\u7684\u83b7\u53d6:\n[[YELLOW]]\u624b\u6301\u65a7\u5b50\n[[YELLOW]]\u653b\u51fb\u5176\u4ed6\u751f\u7269\u6216\u73a9\u5bb6\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u65a9\u9996\u8005?\n[[YELLOW]]\u8fd9\u4e2a\u6280\u80fd\u4f1a\u9020\u6210\u8303\u56f4\u6253\u51fb\u4f24\u5bb3\n[[YELLOW]]\u8303\u56f4\u6253\u51fb\u4f24\u5bb3\u7b49\u4e8e\u5bf9\u4e3b\u8981\u653b\u51fb\u76ee\u6807\u9020\u6210\u4f24\u5bb3\u768450%\n[[YELLOW]]\u6240\u4ee5\u5f88\u5bb9\u6613\u6e05\u7406\u6389\u4e00\u5927\u7247\u602a\u7269\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u81f4\u547d\u6253\u51fb?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u4e00\u5b9a\u51e0\u7387\u5bf9\u76ee\u6807\u9020\u6210\u989d\u5916\u4f24\u5bb3\n[[YELLOW]]\u9ed8\u8ba4\u7684, \u6bcf2\u7ea7\u589e\u52a0 0.1%\u51e0\u7387\n[[YELLOW]]\u5bf9\u751f\u7269\u9020\u62102\u500d\u4f24\u5bb3\n[[YELLOW]]\u5bf9\u73a9\u5bb6\u9020\u62101.5\u500d\u4f24\u5bb3\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u65a7\u7cbe\u901a?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u4f7f\u7528\u65a7\u5b50\u653b\u51fb\u65f6\u9644\u52a0\u989d\u5916\u4f24\u5bb3\n[[YELLOW]]\u9ed8\u8ba4\u7684, \u6bcf50\u7ea7\u989d\u5916\u63d0\u9ad81\u70b9\u4f24\u5bb3\n[[YELLOW]]4\u70b9\u989d\u5916\u4f24\u5bb3\u5c01\u9876\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u88c5\u7532\u51b2\u51fb?\n[[YELLOW]]\u51fb\u788e\u654c\u4eba\u7684\u88c5\u7532\u5427!\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd, \u4e00\u5b9a\u51e0\u7387\u91cd\u521b\u5bf9\u624b\u7684\u88c5\u7532\n[[YELLOW]]\u4f24\u5bb3\u968f\u7740\u6280\u80fd\u7684\u7b49\u7ea7\u63d0\u9ad8\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u5f3a\u529b\u51b2\u51fb?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u4f7f\u7528\u65a7\u5b50\u653b\u51fb\u65f6\u4e00\u5b9a\u51e0\u7387\u7ed9\u751f\u7269\u6216\u73a9\u5bb6\u5e26\u6765\u5de8\u5927\u7684\u51b2\u51fb\u529b\n[[YELLOW]]\u9ed8\u8ba4\u51e0\u7387\u4e3a 25%. \u9644\u52a0\u6781\u5927\u7684\u51fb\u9000\u6548\u679c\n[[YELLOW]]\u6548\u679c\u76f8\u5f53\u4e8e \u51fb\u9000 II \u7684\u9644\u9b54\u6548\u679c\n[[YELLOW]]\u989d\u5916\u7684, \u8fd8\u4f1a\u5bf9\u76ee\u6807\u9020\u6210\u989d\u5916\u4f24\u5bb3
Guides.Available=[[DARK_AQUA]]{0} \u7684\u5411\u5bfc - \u8f93\u5165/{1} ? [\u9875\u6570]
Guides.Excavation=[[DARK_AQUA]]\u5173\u4e8e\u6316\u6398:\n[[YELLOW]]\u6316\u6398\u662f\u4ece\u4e0d\u8d77\u773c\u7684\u4e1c\u897f\u4e2d\u627e\u51fa\u5b9d\u85cf\u7684\u827a\u672f.\n[[YELLOW]]\u901a\u8fc7\u6316\u6398\u4f60\u5c06\u627e\u5230\u5b9d\u85cf.\n[[YELLOW]]\u6316\u5f97\u8d8a\u591a\uff0c\u56de\u62a5\u8d8a\u591a.\n\n[[DARK_AQUA]]\u7ecf\u9a8c\u503c\u589e\u957f:\n[[YELLOW]]\u4e3a\u4e86\u589e\u957f\u8fd9\u4e2a\u6280\u80fd\u7684\u7ecf\u9a8c\uff0c\u4f60\u5fc5\u987b\u7528\u94f2\u5b50\u6765\u6316\u6398.\n[[YELLOW]]\u53ea\u6709\u6316\u6398\u6b63\u786e\u7684\u7269\u4f53\u624d\u80fd\u83b7\u5f97\u8d22\u5b9d\u548c\u7ecf\u9a8c\u503c.\n[[DARK_AQUA]]\u517c\u5bb9\u7684\u7269\u4f53:\n[[YELLOW]]\u8349\u65b9\u5757, \u6ce5\u571f, \u6c99\u5b50, \u7c98\u571f, \u7802\u783e, \u83cc\u4e1d\u4f53, \u7075\u9b42\u6c99\n\n[[DARK_AQUA]]\u5982\u4f55\u4f7f\u7528\u66b4\u8d70\u94bb\u5934:\n[[YELLOW]]\u624b\u91cc\u62ff\u7740\u94f2\u5b50\u5e76\u70b9\u51fb\u9f20\u6807\u53f3\u952e.\n[[YELLOW]]\u7136\u540e\u4f60\u67094\u79d2\u7684\u65f6\u95f4\u6765\u6fc0\u53d1\u8fd9\u4e2a\u6280\u80fd\n[[YELLOW]]\u6316\u90a3\u4e9b\u517c\u5bb9\u7684\u65b9\u5757\n[[YELLOW]]\u542f\u52a8\u66b4\u8d70\u94bb\u5934.\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u66b4\u8d70\u94bb\u5934?\n[[YELLOW]]\u66b4\u8d70\u94bb\u5934\u662f\u4e00\u4e2a\u9700\u8981\u51b7\u5374\u65f6\u95f4\u7684\u6280\u80fd\n[[YELLOW]\u4ed6\u548c\u6316\u6398\u6280\u80fd\u6709\u76f8\u540c\u6548\u679c\uff0c\u4e0d\u8fc7\u5b83\u80fd\u63d0\u9ad8\u4f603\u500d\u7684\u51e0\u7387\n[[YELLOW]]\u6765\u6316\u6398\u5b9d\u85cf\u548c\u77ac\u95f4\u6316\u6398\n[[YELLOW]]\u5bf9\u4e8e\u90a3\u4e9b\u517c\u5bb9\u7684\u7269\u54c1.\n\n[[DARK_AQUA]]\u5b9d\u85cf\u730e\u624b\u662f\u5982\u4f55\u5de5\u4f5c\u7684?\n[[YELLOW]]\u6bcf\u4e00\u79cd\u53ef\u80fd\u7684\u8d22\u5b9d\u90fd\u9700\u8981\u8fbe\u5230\u4e00\u5b9a\u7684\n[[YELLOW]]\u6280\u80fd\u7b49\u7ea7\u6765\u4f7f\u5176\u6389\u51fa\uff0c\u6240\u4ee5\u4f60\u80fd\u77e5\u9053\n[[YELLOW]]\u8fd9\u4e2a\u6280\u80fd\u80fd\u5e2e\u52a9\u4f60\u89e3\u51b3\u5f88\u591a\u7684\u56f0\u96be\n[[YELLOW]]\u4f60\u53ea\u9700\u8981\u77e5\u9053\u8d8a\u9ad8\u7684\u6316\u6398\u6280\u80fd\u7b49\u7ea7\n[[YELLOW]]\u4f60\u5c31\u80fd\u627e\u5230\u8d8a\u591a\u7684\u5b9d\u85cf\n[[YELLOW]]\u540c\u65f6\uff0c\u4f60\u4e5f\u8981\u4e86\u89e3\u6bcf\u4e00\u79cd\u517c\u5bb9\u7684\u6316\u6398\u6750\u6599\u4f1a\u6389\u843d\u51fa\u5bf9\u5e94\u7684\u5b9d\u85cf\n[[YELLOW]]\u8fd9\u5c31\u610f\u5473\u7740\u76f8\u5bf9\u4e8e\u6c99\u783e\uff0c\u4f60\u53ef\u80fd\u4f1a\u5728\u6ce5\u571f\u4e2d\u627e\u51fa\u66f4\u591a\u7684\u4e1c\u897f\n[[DARK_AQUA]]\u6316\u6398\u6280\u80fd\u5c0f\u63d0\u793a:\n[[YELLOW]]\u6316\u6398\u65f6\u6389\u843d\u7684\u4e1c\u897f\u53ef\u4ee5\u81ea\u884c\u7f16\u8f91\n[[YELLOW]]\u6240\u4ee5\u670d\u52a1\u5668\u4e4b\u95f4\u53ef\u80fd\u4f1a\u5b8c\u5168\u4e0d\u540c
Guides.Fishing=[[DARK_AQUA]]\u5173\u4e8e\u9493\u9c7c:\n[[YELLOW]]\u62e5\u6709\u9493\u9c7c\u6280\u80fd\uff0c\u4f1a\u4f7f\u5f97\u9493\u9c7c\u53d8\u5f97\u632f\u594b\u4eba\u5fc3!\n[[YELLOW]]\u53d1\u73b0\u5b9d\u85cf\uff0c\u83b7\u5f97\u602a\u7269\u6389\u843d\u7684\u7269\u54c1.\n\n[[DARK_AQUA]]\u7ecf\u9a8c\u589e\u957f:\n[[YELLOW]]\u6293\u5230\u9c7c.
Guides.Mining=[[DARK_AQUA]]\u5173\u4e8e\u91c7\u77ff\uff1a\n[[YELLOW]]\u5728\u91c7\u77ff\u7684\u65f6\u5019\uff0c\u91c7\u77ff\u6280\u80fd\u63d0\u4f9b\u591a\u91cd\u77ff\u7269\u6389\u843d\u7684\u5956\u52b1\n[[DARK_AQUA]]\u63d0\u5347\u7ecf\u9a8c\uff1a\n[[YELLOW]]\u4f60\u5fc5\u987b\u4f7f\u7528\u9550\u5b50\u6765\u589e\u52a0\u672c\u6280\u80fd\u7684\u7ecf\u9a8c\n[[YELLOW]]\u53ea\u6709\u6b63\u786e\u7684\u65b9\u5757\u80fd\u589e\u52a0\u7ecf\u9a8c\n[[DARK_AQUA]]\u517c\u5bb9\u7684\u539f\u6599\uff1a\n[[YELLOW]]\u77f3\u5934\uff0c\u7164\u77ff\uff0c\u94c1\u77ff\uff0c\u91d1\u77ff\uff0c\u94bb\u77f3\u77ff\uff0c\u7ea2\u77f3\u77ff\n[[YELLOW]]\u9752\u91d1\u77f3\u77ff\uff0c\u9ed1\u66dc\u77f3\uff0c\u82d4\u77f3\uff0c\u672b\u5f71\u77f3\n[[YELLOW]]\u8424\u77f3\uff0c\u5730\u72f1\u5ca9\n[[DARK_AQUA]]\u5982\u4f55\u4f7f\u7528\u8d85\u7ea7\u77ff\u5de5\uff1a\n[[YELLOW]]\u628a\u9550\u5b50\u62ff\u5728\u624b\u4e0a\uff0c\u4f7f\u7528\u9f20\u6807\u53f3\u952e\u6765\u51c6\u5907\u4f60\u7684\u9550\u5b50\n[[YELLOW]]\u4f60\u5c06\u67094\u79d2\u949f\u7684\u65f6\u95f4\u6765\u6fc0\u53d1\u4f60\u7684\u6280\u80fd\n[[YELLOW]]\u5f53\u6316\u6398\u517c\u5bb9\u7684\u65b9\u5757\u65f6\uff0c\u8d85\u7ea7\u77ff\u5de5\u5c06\u88ab\u6fc0\u6d3b\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u8d85\u7ea7\u77ff\u5de5\uff1f\n[[YELLOW]]\u8d85\u7ea7\u77ff\u5de5\u662f\u9700\u8981\u51b7\u5374\u7684\u6316\u77ff\u6280\u80fd\n[[YELLOW]]\u5b83\u4f7f\u4f60\u5728\u6316\u77ff\u65f6\u67093\u500d\u7684\u673a\u4f1a\u6765\u6389\u843d\u66f4\u591a\u7684\u4e1c\u897f\uff0c\u5e76\u6fc0\u53d1\u77ac\u95f4\u7834\u574f\u529f\u80fd\n[[DARK_AQUA]\u5982\u4f55\u4f7f\u7528\u7206\u7834\u5f00\u91c7\uff1a\n[[YELLOW]]\u628a\u96f7\u7ba1\u62ff\u5728\u624b\u4e0a\uff0c\u9ed8\u8ba4\u7684\u60c5\u51b5\u4e0b\u662f\u6253\u706b\u5668\n[[YELLOW]]\u5728\u4e00\u5b9a\u8ddd\u79bb\u5185\u53f3\u952e\u70b9\u51fbTNT\uff0c\u8fd9\u5c06\u4f1a\u4f7f\u5f97TNT\u5728\u77ac\u95f4\u5185\u7206\u70b8\n[[DARK_AQUA]]\u7206\u7834\u5f00\u91c7\u662f\u5982\u4f55\u5de5\u4f5c\u7684\uff1f\n[[YELLOW]]\u7206\u7834\u5f00\u91c7\u662f\u9700\u8981\u51b7\u5374\u7684\u6316\u77ff\u6280\u80fd\n[[YELLOW]]\u5b83\u53ef\u4ee5\u5728\u4f60\u4f7f\u7528TNT\u6316\u77ff\u65f6\u7ed9\u4f60\u989d\u5916\u7684\u77ff\u7269\u5956\u52b1\u5e76\u4e14\u5141\u8bb8\u4f60\u5728\u8f83\u8fdc\u7684\u5730\u65b9\u5f15\u7206TNT\n[[YELLOW]]\u7206\u7834\u5f00\u91c7\u5206\u4e3a3\u4e2a\u90e8\u5206\n[[YELLOW]]\u7b2c\u4e00\u4e2a\u90e8\u5206\u662f\u201c\u66f4\u5927\u7684\u7206\u7834\u201d\uff0c\u53ef\u4ee5\u63d0\u9ad8\u7206\u70b8\u7684\u8303\u56f4\n[[YELLOW]]\u90fd\u4e8c\u4e2a\u90e8\u5206\u662f\u201c\u7834\u574f\u4e13\u5bb6\u201d\uff0c\u53ef\u4ee5\u51cf\u5c11\u6765\u81eaTNT\u7684\u7206\u70b8\u4f24\u5bb3\n[[YELLOW]\u7b2c\u4e09\u4e2a\u90e8\u5206\u662f\u63d0\u5347\u77ff\u7269\u6389\u843d\u7684\u6570\u91cf\u5e76\u4e14\u51cf\u5c11\u4e0d\u9700\u8981\u7684\u4e1c\u897f\u7684\u6389\u843d
Guides.Repair=[[DARK_AQUA]]\u5173\u4e8e\u4fee\u7406:\n[[YELLOW]]\u4fee\u7406\u529f\u80fd\u53ef\u4ee5\u4e3a\u4f60\u63d0\u4f9b\u4e86\u7528\u4e00\u4e2a\u94c1\u65b9\u5757\u6765\u4fee\u7406\u62a4\u7532\u548c\n[[YELLOW]]\u5de5\u5177\u7684\u5730\u65b9, \u6216\u8005\u7528\u4e00\u4e2a\u91d1\u8272\u65b9\u5757\u6765\u633d\u6551\u62a4\u7532\u548c\u5de5\u5177.\n[[DARK_AQUA]]\u83b7\u53d6\u7ecf\u9a8c:\n[[YELLOW]]\u4f7f\u7528mcMMO\u7684\u94c1\u6be1\u6765\u4fee\u7406\u5de5\u5177\u6216\u62a4\u7532. \u8fd9\u4e2a\u94c1\u7827\u53ef\u4ee5\u662f\n[[YELLOW]]\u9ed8\u8ba4\u7684\u94c1\u5757\u4e14\u4e0d\u80fd\u548c\u539f\u7248\u7684Minecraft\u94c1\u6be1\u6df7\u6dc6.\n[[DARK_AQUA]]\u6211\u600e\u4e48\u624d\u80fd\u4fee\u7406?\n[[YELLOW]]\u653e\u7f6e\u4e00\u4e2a mcMMO \u7684\u94c1\u7827\u5e76\u4e14\u70b9\u51fb\u53f3\u952e\u6765\u4fee\u7406 \n[[YELLOW]]\u4f60\u76ee\u524d\u62ff\u5728\u624b\u4e0a\u7684\u7269\u54c1. \u6bcf\u70b9\u51fb\u4e00\u6b21\u6d88\u8017\u4e00\u4e2a\u7269\u54c1.\n[[DARK_AQUA]]How does Repair Mastery work?\n[[YELLOW]]Repair Mastery increases the repair amount. The extra amount\n[[YELLOW]]repaired is influenced by your Repair skill level.\n[[DARK_AQUA]]How does Super Repair work?\n[[YELLOW]]Super Repair is a passive ability. When repairing an item,\n[[YELLOW]]it grants players a chance to repair an item with\n[[YELLOW]]double effectiveness.\n[[DARK_AQUA]]How does Arcane Forging work?\n[[YELLOW]]This passive ability allows you to repair items with a certain\n[[YELLOW]]chance of maintaining its enchantments. The enchants may be\n[[YELLOW]]kept at their existing levels, downgraded to a lower level,\n[[YELLOW]]or lost entirely.\n[[DARK_AQUA]]How does Salvage work?\n[[YELLOW]]Place down a mcMMO Salvage Anvil and right-click to salvage\n[[YELLOW]]the item you\'re currently holding.\n[[YELLOW]]This will break the item apart en give back the used ingots.\n[[YELLOW]]Note: You can only salvage fully repaired tools or armor.
Guides.Header=[[GOLD]]-=[[GREEN]]{0} \u5411\u5bfc[[GOLD]]=-
Guides.Herbalism=[[DARK_AQUA]]\u5173\u4e8e\u690d\u7269\u5b66:\n[[YELLOW]]\u690d\u7269\u5b66\u662f\u5173\u4e8e\u91c7\u96c6\u690d\u7269\u548c\u4f5c\u7269\n[[DARK_AQUA]]\u7ecf\u9a8c\u83b7\u53d6\u65b9\u5f0f:\n[[YELLOW]]\u91c7\u96c6\u690d\u7269\u548c\u4f5c\u7269\n[[DARK_AQUA]]\u6709\u6548\u65b9\u5757\n[[YELLOW]]\u5c0f\u9ea6, \u571f\u8c46, \u80e1\u841d\u535c, \u897f\u74dc, \n[[YELLOW]]\u5357\u74dc, \u7518\u8517, \u53ef\u53ef\u8c46, \u82b1, \u4ed9\u4eba\u638c, \u8611\u83c7,\n[[YELLOW]]\u5730\u72f1\u75a3, \u7761\u83b2, \u85e4\u8513\n[[DARK_AQUA]]\u5982\u4f55\u4f7f\u7528\u5927\u5730\u4e4b\u795d\u798f?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd, \u53f3\u952e\n[[YELLOW]]\u5e76\u624b\u6301\u9504\u5934\u6fc0\u6d3b\u8be5\u6280\u80fd\n[[YELLOW]]\u73a9\u5bb6\u6709\u51e0\u7387\u5728\u6536\u83b7\u4f5c\u7269\u65f6\u89e6\u53d1\u4e09\u500d\u6389\u843d\n[[YELLOW]]\u8be5\u6280\u80fd\u4e5f\u7ed9\u4e88\u73a9\u5bb6\u8f6c\u53d8\u4e00\u4e9b\u65b9\u5757\u7684\u80fd\u529b\n[[YELLOW]]\u5982\u5706\u77f3, \u77f3\u7816, \u6ce5\u571f\u5757\n[[YELLOW]]\u540c\u65f6\u6d88\u8017\u80cc\u5305\u91cc\u7684\u79cd\u5b50\n[[DARK_AQUA]]\u7eff\u624b\u6307 (\u4f5c\u7269) \u5982\u4f55\u5de5\u4f5c?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u6536\u83b7\u4f5c\u7269\u65f6\u4e00\u5b9a\u51e0\u7387\u81ea\u52a8\u8865\u79cd\u56de\u53bb\n[[YELLOW]]\u6210\u529f\u51e0\u7387\u4e0e\u690d\u7269\u5b66\u6280\u80fd\u7b49\u7ea7\u6709\u5173\n[[DARK_AQUA]]\u7eff\u624b\u6307 (\u5706\u77f3, \u77f3\u7816, \u6ce5\u571f\u5757) \u5982\u4f55\u5de5\u4f5c?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd\n[[YELLOW]]\u7528\u4e8e\u8f6c\u53d8\u4e00\u4e9b\u65b9\u5757(\u5706\u77f3, \u77f3\u7816, \u6ce5\u571f\u5757), \u4f7f\u4e4b\u8986\u76d6\u4e0a\u7eff\u8272\u690d\u88ab\n[[YELLOW]]\u624b\u6301\u79cd\u5b50, \u53f3\u952e\u65b9\u5757. \u65e0\u8bba\u6210\u529f\u4e0e\u5426, \u90fd\u4f1a\u6d88\u8017\u79cd\u5b50\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u519c\u592b\u98df\u8c31?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd, \u63d0\u9ad8\u9965\u997f\u503c\u56de\u590d\u91cf\n[[YELLOW]]\u6709\u6548\u98df\u7269: \u9762\u5305, \u66f2\u5947, \u897f\u74dc, \u8611\u83c7\u6c64\n[[YELLOW]]\u80e1\u841d\u535c, \u571f\u8c46\n[[DARK_AQUA]]\u6d77\u62c9\u5c14\u7684\u795d\u798f\u662f\u4ec0\u4e48?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u5f53\u4f60\u624b\u6301\u5251\u7834\u574f\u6307\u5b9a\u65b9\u5757\u65f6\u6709\u51e0\u7387\u83b7\u5f97\u7a00\u6709\u7269\u54c1\n[[DARK_AQUA]]\u53cc\u500d\u6389\u843d\u5982\u4f55\u8fd0\u4f5c?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u73a9\u5bb6\u6536\u83b7\u4f5c\u7269\u65f6\u4e00\u5b9a\u51e0\u7387\u89e6\u53d1
Guides.Mining=[[DARK_AQUA]]\u5173\u4e8e\u91c7\u77ff\uff1a\n[[YELLOW]]\u5728\u91c7\u77ff\u7684\u65f6\u5019\uff0c\u91c7\u77ff\u6280\u80fd\u63d0\u4f9b\u591a\u91cd\u77ff\u7269\u6389\u843d\u7684\u5956\u52b1\n[[DARK_AQUA]]\u63d0\u5347\u7ecf\u9a8c\uff1a\n[[YELLOW]]\u4f60\u5fc5\u987b\u4f7f\u7528\u9550\u5b50\u6765\u589e\u52a0\u672c\u6280\u80fd\u7684\u7ecf\u9a8c\n[[YELLOW]]\u53ea\u6709\u6b63\u786e\u7684\u65b9\u5757\u80fd\u589e\u52a0\u7ecf\u9a8c\n[[DARK_AQUA]]\u6709\u6548\u6750\u6599\uff1a\n[[YELLOW]]\u77f3\u5934\uff0c\u7164\u77ff\uff0c\u94c1\u77ff\uff0c\u91d1\u77ff\uff0c\u94bb\u77f3\u77ff\uff0c\u7ea2\u77f3\u77ff\n[[YELLOW]]\u9752\u91d1\u77f3\u77ff\uff0c\u9ed1\u66dc\u77f3\uff0c\u82d4\u77f3\uff0c\u672b\u5f71\u77f3\n[[YELLOW]]\u8424\u77f3\uff0c\u5730\u72f1\u5ca9\n[[DARK_AQUA]]\u5982\u4f55\u4f7f\u7528\u8d85\u7ea7\u77ff\u5de5\uff1a\n[[YELLOW]]\u628a\u9550\u5b50\u62ff\u5728\u624b\u4e0a\uff0c\u4f7f\u7528\u9f20\u6807\u53f3\u952e\u6765\u51c6\u5907\u4f60\u7684\u9550\u5b50\n[[YELLOW]]\u4f60\u5c06\u67094\u79d2\u949f\u7684\u65f6\u95f4\u6765\u6fc0\u53d1\u4f60\u7684\u6280\u80fd\n[[YELLOW]]\u5f53\u6316\u6398\u517c\u5bb9\u7684\u65b9\u5757\u65f6\uff0c\u8d85\u7ea7\u77ff\u5de5\u5c06\u88ab\u6fc0\u6d3b\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u8d85\u7ea7\u77ff\u5de5\uff1f\n[[YELLOW]]\u8d85\u7ea7\u77ff\u5de5\u662f\u9700\u8981\u51b7\u5374\u7684\u6316\u77ff\u6280\u80fd\n[[YELLOW]]\u5b83\u4f7f\u4f60\u5728\u6316\u77ff\u65f6\u67093\u500d\u7684\u673a\u4f1a\u6765\u6389\u843d\u66f4\u591a\u7684\u4e1c\u897f\uff0c\u5e76\u6fc0\u53d1\u77ac\u95f4\u7834\u574f\u529f\u80fd\n[[DARK_AQUA]\u5982\u4f55\u4f7f\u7528\u7206\u7834\u5f00\u91c7\uff1a\n[[YELLOW]]\u628a\u96f7\u7ba1\u62ff\u5728\u624b\u4e0a\uff0c\u9ed8\u8ba4\u7684\u60c5\u51b5\u4e0b\u662f\u6253\u706b\u5668\n[[YELLOW]]\u5728\u4e00\u5b9a\u8ddd\u79bb\u5185\u53f3\u952e\u70b9\u51fbTNT\uff0c\u8fd9\u5c06\u4f1a\u4f7f\u5f97TNT\u5728\u77ac\u95f4\u5185\u7206\u70b8\n[[DARK_AQUA]]\u7206\u7834\u5f00\u91c7\u662f\u5982\u4f55\u5de5\u4f5c\u7684\uff1f\n[[YELLOW]]\u7206\u7834\u5f00\u91c7\u662f\u9700\u8981\u51b7\u5374\u7684\u6316\u77ff\u6280\u80fd\n[[YELLOW]]\u5b83\u53ef\u4ee5\u5728\u4f60\u4f7f\u7528TNT\u6316\u77ff\u65f6\u7ed9\u4f60\u989d\u5916\u7684\u77ff\u7269\u5956\u52b1\u5e76\u4e14\u5141\u8bb8\u4f60\u5728\u8f83\u8fdc\u7684\u5730\u65b9\u5f15\u7206TNT\n[[YELLOW]]\u7206\u7834\u5f00\u91c7\u5206\u4e3a3\u4e2a\u90e8\u5206\n[[YELLOW]]\u7b2c\u4e00\u4e2a\u90e8\u5206\u662f\u201c\u66f4\u5927\u7684\u7206\u7834\u201d\uff0c\u53ef\u4ee5\u63d0\u9ad8\u7206\u70b8\u7684\u8303\u56f4\n[[YELLOW]]\u90fd\u4e8c\u4e2a\u90e8\u5206\u662f\u201c\u7834\u574f\u4e13\u5bb6\u201d\uff0c\u53ef\u4ee5\u51cf\u5c11\u6765\u81eaTNT\u7684\u7206\u70b8\u4f24\u5bb3\n[[YELLOW]\u7b2c\u4e09\u4e2a\u90e8\u5206\u662f\u63d0\u5347\u77ff\u7269\u6389\u843d\u7684\u6570\u91cf\u5e76\u4e14\u51cf\u5c11\u4e0d\u9700\u8981\u7684\u4e1c\u897f\u7684\u6389\u843d
Guides.Page.Invalid=\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u9875\u6570!
Guides.Page.OutOfRange=\u90a3\u9875\u4e0d\u5b58\u5728, \u603b\u5171\u53ea\u6709 {0} \u9875
Guides.Repair=[[DARK_AQUA]]\u5173\u4e8e\u4fee\u7406:\n[[YELLOW]]\u4fee\u7406\u529f\u80fd\u53ef\u4ee5\u4e3a\u4f60\u63d0\u4f9b\u4e86\u7528\u4e00\u4e2a\u94c1\u65b9\u5757\u6765\u4fee\u7406\u62a4\u7532\u548c\n[[YELLOW]]\u5de5\u5177\u7684\u5730\u65b9, \u6216\u8005\u7528\u4e00\u4e2a\u91d1\u8272\u65b9\u5757\u6765\u5206\u89e3\u62a4\u7532\u548c\u5de5\u5177.\n[[DARK_AQUA]]\u83b7\u53d6\u7ecf\u9a8c:\n[[YELLOW]]\u4f7f\u7528mcMMO\u7684\u94c1\u6be1\u6765\u4fee\u7406\u5de5\u5177\u6216\u62a4\u7532. \u8fd9\u4e2a\u94c1\u7827\u53ef\u4ee5\u662f\n[[YELLOW]]\u9ed8\u8ba4\u7684\u94c1\u5757\u4e14\u4e0d\u80fd\u548c\u539f\u7248\u7684Minecraft\u94c1\u7827\u6df7\u6dc6.\n[[DARK_AQUA]]\u6211\u600e\u4e48\u624d\u80fd\u4fee\u7406?\n[[YELLOW]]\u653e\u7f6e\u4e00\u4e2a mcMMO \u7684\u94c1\u7827\u5e76\u4e14\u70b9\u51fb\u53f3\u952e\u6765\u4fee\u7406 \n[[YELLOW]]\u4f60\u76ee\u524d\u62ff\u5728\u624b\u4e0a\u7684\u7269\u54c1. \u6bcf\u70b9\u51fb\u4e00\u6b21\u6d88\u8017\u4e00\u4e2a\u7269\u54c1.\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u4fee\u7406\u7cbe\u901a?\n[[YELLOW]]\u63d0\u9ad8\u4fee\u7406\u8010\u4e45\u91cf\n[[YELLOW]]\u989d\u5916\u56de\u590d\u91cf\u4e0e\u4fee\u7406\u7b49\u7ea7\u6709\u5173\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u8d85\u7ea7\u4fee\u7406?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u5f53\u73a9\u5bb6\u8fdb\u884c\u4fee\u7406\u65f6\n[[YELLOW]]\u6062\u590d\u53cc\u500d\u7684\u8010\u4e45\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u795e\u79d8\u953b\u9020?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u4fee\u7406\u9644\u9b54\u88c5\u5907\u65f6\u4e00\u5b9a\u51e0\u7387\u4fdd\u6301\u9644\u9b54\n[[YELLOW]]\u4e14\u4fdd\u7559\u7b49\u7ea7, \u6216\u964d\u7ea7\n[[YELLOW]]\u6216\u5931\u53bb\u9644\u9b54\u6548\u679c\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u5206\u89e3\u7827?\n[[YELLOW]]\u653e\u7f6e\u4e00\u4e2a mcMMO \u5206\u89e3\u7827\n[[YELLOW]]\u624b\u6301\u7269\u54c1\u53f3\u952e\u5b83\n[[YELLOW]]\u5c06\u4f1a\u5206\u89e3\u6389\u7269\u54c1, \u8fd4\u8fd8\u4e00\u4e9b\u6750\u6599\n[[YELLOW]]\u6ce8\u610f: \u53ea\u80fd\u5206\u89e3\u65e0\u635f\u7684\u5de5\u5177\u6216\u62a4\u7532\u88c5\u5907
Guides.Swords=[[DARK_AQUA]]\u5173\u4e8e \u5251\u672f:\n[[YELLOW]]\u4f7f\u7528\u5251\u8fdb\u884c\u6218\u6597\u65f6\n[[YELLOW]]\u9644\u52a0\u989d\u5916\u6548\u679c\n[[DARK_AQUA]]\u5982\u4f55\u83b7\u5f97\u7ecf\u9a8c:\n[[YELLOW]]\u4f7f\u7528\u5251\u6218\u6597\n[[YELLOW]]\u7ecf\u9a8c\u503c\u53d6\u51b3\u4e8e\u5bf9\u751f\u7269\u548c\u5176\u4ed6\u73a9\u5bb6\u9020\u6210\u7684\u4f24\u5bb3\n[[DARK_AQUA]]\u5982\u4f55\u4f7f\u7528\u952f\u9f7f\u653b\u51fb?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd, \u624b\u6301\u5251\u53f3\u952e\u4ee5\u6fc0\u6d3b\n[[YELLOW]]\u8fd9\u4e2a\u6280\u80fd\u4f1a\u9020\u6210\u8303\u56f4\u6253\u51fb\u6548\u679c\n[[YELLOW]]\u8be5\u8303\u56f4\u5185\u670925%\u989d\u5916\u4f24\u5bb3\u52a0\u6210\n[[YELLOW]]\u5e76\u9644\u52a05\u523b(tick)\u6d41\u8840\u6548\u679c\n[[DARK_AQUA]]\u53cd\u51fb\u5982\u4f55\u5de5\u4f5c?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd. \n[[YELLOW]]\u5f53\u4f60\u53d7\u5230\u751f\u7269\u7684\u653b\u51fb\n[[YELLOW]]\u6709\u4e00\u5b9a\u51e0\u7387\u53cd\u51fb\u6240\u53d7\u4f24\u5bb3\u768450%\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u6d41\u8840?\n[[YELLOW]]\u6d41\u8840\u7684\u654c\u4eba\u6bcf2\u79d2\u53d7\u5230\u4e00\u6b21\u4f24\u5bb3 \n[[YELLOW]]\u76ee\u6807\u6d41\u8840\u6548\u679c\u76f4\u5230\u6548\u679c\u6d88\u5931 \n[[YELLOW]]\u6216\u76ee\u6807\u6b7b\u4ea1\n[[YELLOW]]\u6301\u7eed\u65f6\u95f4\u4e0e\u5251\u672f\u7b49\u7ea7\u6709\u5173
Guides.Smelting=\u5373\u5c06\u5230\u6765...
Guides.Taming=[[DARK_AQUA]]\u5173\u4e8e \u9a6f\u517d:\n[[YELLOW]]\u5f53\u73a9\u5bb6\u4f7f\u7528\u9a6f\u670d\u7684\u72fc\u6218\u6597\u65f6\n[[YELLOW]]\u7ed9\u73a9\u5bb6\u63d0\u4f9b\u4e30\u5bcc\u7684\u989d\u5916\u6218\u6597\u52a0\u6210\n[[DARK_AQUA]]\u7ecf\u9a8c\u83b7\u53d6:\n[[YELLOW]]\u9a6f\u670d\u72fc/\u8c79\u732b\n[[YELLOW]]\u4e0e\u4f60\u7684\u72fc\u4e00\u540c\u6218\u6597\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u91ce\u6027\u547c\u5524?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd\n[[YELLOW]]\u53ec\u5524\u4e00\u53ea\u72fc\u6216\u8c79\u732b\u5230\u4f60\u8eab\u8fb9\n[[YELLOW]]\u624b\u6301\u9aa8\u5934\u6216\u751f\u9c7c\u5de6\u952e\u8fdb\u884c\u53ec\u5524\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u517d\u738b\u6280\u80fd?\n[[YELLOW]]\u5141\u8bb8\u73a9\u5bb6\u67e5\u770b\u5ba0\u7269\n[[YELLOW]]\u68c0\u67e5\u72fc\u548c\u8c79\u732b\u72b6\u6001\n[[YELLOW]]\u5de6\u952e\u4e00\u53ea\u72fc\u6216\u8c79\u732b\u4f7f\u7528\u8be5\u6280\u80fd\n[[DARK_AQUA]]\u4ec0\u4e48\u55dc\u8840?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u72fc\u653b\u51fb\u76ee\u6807\u65f6\u4e00\u5b9a\u51e0\u7387\u4f7f\u4e4b\u6d41\u8840\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u5229\u722a?\n[[YELLOW]]\u4e3a\u72fc\u7684\u653b\u51fb\u63d0\u4f9b\u989d\u5916\u4f24\u5bb3\n[[YELLOW]]\u989d\u5916\u4f24\u5bb3\u53d6\u51b3\u4e8e\u9a6f\u517d\u7b49\u7ea7\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u73af\u5883\u611f\u77e5?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u5f53\u72fc\u611f\u77e5\u5230\u5468\u56f4\u7684\u5371\u9669\u65f6\u4f20\u9001\u5230\u4f60\u8eab\u8fb9, \u5982\u4ed9\u4eba\u638c,\u5ca9\u6d46\n[[YELLOW]]\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u4f1a\u514d\u75ab\u6389\u843d\u4f24\u5bb3\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u539a\u5b9e\u7684\u76ae\u6bdb?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u51cf\u5c11\u72fc\u6240\u53d7\u4f24\u5bb3, \u63d0\u9ad8\u706b\u7130\u6297\u6027\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u7206\u7834\u9632\u5fa1?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u51cf\u5c11\u7206\u70b8\u6548\u679c\u5bf9\u72fc\u9020\u6210\u7684\u4f24\u5bb3\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u5feb\u9910\u670d\u52a1\uff08\u5438\u8840\uff09?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u653b\u51fb\u65f6\u6062\u590d\u751f\u547d\u503c
Guides.Unarmed=[[DARK_AQUA]]\u5173\u4e8e \u683c\u6597:\n[[YELLOW]]\u5f53\u73a9\u5bb6\u4ee5\u62f3\u5934\u4f5c\u4e3a\u6b66\u5668\u65f6\n[[YELLOW]]\u7ed9\u4e88\u73a9\u5bb6\u4e30\u5bcc\u7684\u6218\u6597\u6548\u679c\u52a0\u6210\n[[DARK_AQUA]]\u7ecf\u9a8c\u83b7\u53d6:\n[[YELLOW]]\u7ecf\u9a8c\u91cf\u53d6\u51b3\u4e8e\n[[YELLOW]]\u7a7a\u624b\u5bf9\u751f\u7269\u6216\u73a9\u5bb6\u9020\u6210\u7684\u4f24\u5bb3\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u72c2\u66b4?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd, \u53f3\u952e\u89e6\u53d1\n[[YELLOW]]\u5904\u4e8e\u72c2\u66b4\u72b6\u6001\u65f6, \u9644\u52a0 50% \u989d\u5916\u4f24\u5bb3\n[[YELLOW]]\u5e76\u7acb\u5373\u51fb\u788e\u4e00\u4e9b\u65b9\u5757\n[[YELLOW]]\u5982\u6ce5\u571f, \u8349\u5730\n[[DARK_AQUA]]\u94c1\u62f3\u662f\u4ec0\u4e48?\n[[YELLOW]]\u7a7a\u624b\u65f6, \u63d0\u9ad8\u4f60\u5bf9\u602a\u7269\n[[YELLOW]]\u6216\u73a9\u5bb6\u9020\u6210\u7684\u4f24\u5bb3 \n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u7bad\u77e2\u62b5\u5fa1?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u62b5\u5fa1\u9ab7\u9ac5\u6216\u73a9\u5bb6\u5c04\u6765\u7684\u7bad\u77e2\n[[YELLOW]]\u7bad\u77e2\u4f1a\u65e0\u5bb3\u7684\u6389\u843d\u5230\u5730\u4e0a\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u8d85\u5f3a\u63e1\u529b?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd, \u7528\u6765\u5bf9\u4ed8\u7f34\u68b0\n[[YELLOW]]\u683c\u6597\u6280\u80fd\u8d8a\u9ad8, \u62b5\u5fa1\u7f34\u68b0\u7684\u51e0\u7387\u8d8a\u5927\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u7f34\u68b0?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd, \u4f7f\u5176\u4ed6\u73a9\u5bb6\u88ab\u7f34\u68b0\n[[YELLOW]]\u76ee\u6807\u88c5\u5907\u4f1a\u6389\u5230\u5730\u4e0a
Guides.Usage=[[RED]] \u7528\u6cd5 /{0} ? [\u9875\u6570]
Guides.Woodcutting=[[DARK_AQUA]]\u5173\u4e8e \u4f10\u6728:\n[[YELLOW]]\u5373\u4e0e\u780d\u6811\u76f8\u5173\u7684\u6240\u6709\u4e1c\u897f\n[[DARK_AQUA]]\u7ecf\u9a8c\u83b7\u53d6:\n[[YELLOW]]\u901a\u8fc7\u7528\u65a7\u5b50\u780d\u6811\u83b7\u5f97\u7ecf\u9a8c\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u4f10\u6728\u673a?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd\n[[YELLOW]]\u624b\u6301\u65a7\u5b50\u53f3\u952e\u8fdb\u5165\u6fc0\u6d3b\u72b6\u6001\n[[YELLOW]]\u780d\u4f10\u5e95\u90e8, \u7acb\u5373\u780d\u5012\u5927\u6811\n[[YELLOW]]\u6389\u843d\u6240\u6709\u6728\u5757\n[[DARK_AQUA]]\u9664\u53f6\u673a?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u624b\u6301\u65a7\u5b50\u4e00\u51fb\u6572\u788e\u6811\u53f6\n[[YELLOW]]\u8be5\u6280\u80fd\u9ed8\u8ba4100\u7ea7\u89e3\u9501\n[[DARK_AQUA]]\u4ec0\u4e48\u662f\u53cc\u500d\u6389\u843d?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u780d\u6811\u65f6\u989d\u5916\u6389\u843d\u4e00\u4e2a\u6728\u5757
Inspect.Offline=[[RED]]\u4f60\u6ca1\u6709\u67e5\u8be2\u4e0d\u5728\u7ebf\u73a9\u5bb6\u4fe1\u606f\u7684\u6743\u9650!
Inspect.OfflineStats=\u4e0d\u5728\u7ebf\u73a9\u5bb6\u7684mcmmo\u7edf\u8ba1\u4fe1\u606f [[YELLOW]]{0}
Inspect.Stats=[[YELLOW]]{0} \u7684 [[GREEN]]mcMMO \u7edf\u8ba1\u4fe1\u606f
@@ -419,9 +563,11 @@ Inspect.TooFar=[[RED]]\u4f60\u65e0\u6cd5\u68c0\u67e5\u90a3\u4e2a\u73a9\u5bb6\u56
Item.ChimaeraWing.Fail=**\u5947\u7f8e\u62c9\u4e4b\u7ffc\u5931\u8d25\u4e86!**
Item.ChimaeraWing.Pass=**\u5947\u7f8e\u62c9\u4e4b\u7ffc**
Item.Injured.Wait=\u4f60\u6700\u8fd1\u53d7\u4f24\u4e86\u6240\u4ee5\u4f60\u5fc5\u987b\u7b49\u4e00\u6bb5\u65f6\u95f4\u624d\u80fd\u4f7f\u7528\u8fd9\u4e2a. [[YELLOW]]({0}s)
Skills.Child=[[GOLD]](\u5206\u652f\u6280\u80fd)
Skills.Disarmed=[[DARK_RED]]\u4f60\u88ab\u7f34\u68b0\u4e86!
Skills.Header=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]\u4f60\u9700\u8981\u66f4\u591a
Skills.Parents=\u4e3b\u6280\u80fd
Skills.Stats=[[YELLOW]]{0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=[[RED]]\u4f60\u73b0\u5728\u592a\u7d2f\u4e86\u6240\u4ee5\u4f60\u65e0\u6cd5\u4f7f\u7528\u8fd9\u4e2a\u6280\u80fd.
Stats.Header.Combat=[[GOLD]]-=\u683c\u6597\u6280\u80fd=-
@@ -433,10 +579,82 @@ Perks.xp.desc=\u83b7\u5f97 {0}x \u7ecf\u9a8c.
Perks.lucky.name=\u5e78\u8fd0
Perks.lucky.desc=\u7ed9\u4e88 {0} \u6280\u80fd\u548c\u80fd\u529b33.3%\u7684\u66f4\u9ad8\u51e0\u7387\u89e6\u53d1
Perks.lucky.desc.login=\u7ed9\u4e88\u6280\u80fd\u548c\u80fd\u529b33.3%\u5f97\u66f4\u9ad8\u51e0\u7387\u89e6\u53d1
Perks.lucky.bonus=[[GOLD]] ({0} \u7684\u597d\u8fd0\u52a0\u6210)
Perks.cooldowns.name=\u5feb\u901f\u6062\u590d
Perks.cooldowns.desc=\u51cf\u5c11\u51b7\u5374\u65f6\u95f4 {0}.
Perks.activationtime.name=\u8010\u529b
Perks.activationtime.desc=\u63d0\u9ad8\u80fd\u529b\uff0c\u6fc0\u6d3b\u65f6\u95f4 {0} \u79d2.
Perks.activationtime.bonus=[[GOLD]] ({0} \u79d2\u989d\u5916\u6301\u7eed\u65f6\u95f4)
Hardcore.Player.Loss=[[GOLD]][mcMMO] [[DARK_RED]]\u4f60\u5728\u6b7b\u4ea1\u4e2d\u4e22\u5931 [[BLUE]]{0}[[DARK_RED]].
Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] \u719f\u7ec3\u5ea6\u4e0d\u8db3, \u65e0\u6cd5\u5438\u53d6\u77e5\u8bc6
Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]\u4f60\u4ece [[YELLOW]]{1} \u5077\u53d6 [[BLUE]]{0}[[DARK_AQUA]] \u7ea7
Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] \u65e0\u6cd5\u4ece\u4f60\u90a3\u91cc\u7a83\u53d6\u77e5\u8bc6!
Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]] \u4ece\u4f60\u90a3\u91cc\u5077\u53d6 [[BLUE]]{1}[[DARK_RED]] \u7b49\u7ea7!
Hardcore.Disabled=[[GOLD]][mcMMO] Hardcore \u6a21\u5f0f\u5df2\u7981\u7528
Hardcore.Enabled=[[GOLD]][mcMMO] \u542f\u7528\u786c\u6838\u6a21\u5f0f
Hardcore.PercentageChanged=[[GOLD]][mcMMO] \u72b6\u6001\u4e22\u5931\u767e\u5206\u6bd4\u8bbe\u7f6e\u4e3a {0}.
Vampirism.Disabled=[[GOLD]][mcMMO] Vampirism \u6a21\u5f0f\u5df2\u5173\u95ed
Vampirism.Enabled=[[GOLD]][mcMMO] Vampirism \u6a21\u5f0f\u5df2\u5f00\u542f
Vampirism.PercentageChanged=[[GOLD]][mcMMO] \u72b6\u6001\u69a8\u53d6\u767e\u5206\u6bd4\u8bbe\u7f6e\u4e3a {0}.
Spout.Donate=[[YELLOW]][mcMMO] \u6350\u6b3e!
Spout.LevelUp.1=[[GREEN]]\u5347\u7ea7!
Spout.LevelUp.2=[[YELLOW]]{0}[[DARK_AQUA]] ([[GREEN]]{1}[[DARK_AQUA]])
Spout.Menu.Exit=[[GRAY]]\u6309\u7a7a\u683c\u952e\u9000\u51fa!
Spout.Menu.ExitButton=\u9000\u51fa
Spout.Menu.HudButton.1=HUD \u7c7b\u578b: {0}
Spout.Menu.HudButton.2=\u53d8\u66f4HUD\u6837\u5f0f!
Spout.Menu.Title=[[GOLD]]~mcMMO \u83dc\u5355~
Spout.Title={0}\n[[YELLOW]]P[[GOLD]]lvl[[WHITE]].[[GREEN]]{1}
MOTD.Donate=[[DARK_AQUA]]\u6350\u8d60\u4fe1\u606f:
MOTD.Hardcore.VampireOff=[[GOLD]][mcMMO] [[DARK_RED]]Hardcore & Vampirism \u542f\u7528
MOTD.Hardcore.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]\u6280\u80fd\u6b7b\u4ea1\u60e9\u7f5a: [[DARK_RED]]{0}%
MOTD.Hardcore.VampireOn=[[GOLD]][mcMMO] [[DARK_RED]]Hardcore \u542f\u7528
MOTD.PerksPrefix=[[RED]][mcMMO \u80fd\u529b]
MOTD.Vampire.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Vampirism\u7edf\u8ba1: [[DARK_RED]]{0}%
MOTD.Version=[[GOLD]][mcMMO] \u6b63\u5728\u8fd0\u884c\u7248\u672c [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO \u7f51\u5740
Smelting.Ability.FluxMining=[[RED]]\u70bd\u70ed\u7684\u9550\u5b50\u89e6\u53d1\u51e0\u7387: [[YELLOW]]{0}
Smelting.Ability.FuelEfficiency=[[RED]]\u71c3\u6599\u6548\u7387\u52a0\u500d: [[YELLOW]]{0}x
Smelting.Ability.Locked.0={0}+ \u7ea7\u540e\u89e3\u9501 (\u66f4\u591a\u51b6\u70bc\u7ecf\u9a8c\u7403)
Smelting.Ability.Locked.1={0}+ \u7ea7\u540e\u89e3\u9501 (FLUX MINING)
Smelting.Ability.SecondSmelt=[[RED]]\u4e8c\u6b21\u7194\u70bc\u51e0\u7387: [[YELLOW]]{0}
Smelting.Ability.VanillaXPBoost=[[RED]]\u7ecf\u9a8c\u52a0\u500d: [[YELLOW]]{0}x
Smelting.Effect.0=\u71c3\u6599\u6548\u7387
Smelting.Effect.1=\u7194\u70bc\u65f6\u63d0\u9ad8\u7194\u7089\u5185\u71c3\u6599\u7684\u71c3\u70e7\u65f6\u95f4
Smelting.Effect.2=\u4e8c\u6b21\u7194\u70bc
Smelting.Effect.3=\u901a\u8fc7\u51b6\u70bc\u83b7\u5f97\u53cc\u500d\u8d44\u6e90
Smelting.Effect.4=\u66f4\u591a\u51b6\u70bc\u7ecf\u9a8c\u7403
Smelting.Effect.5=\u63d0\u9ad8\u51b6\u70bc\u83b7\u53d6\u7684\u7ecf\u9a8c\u7403
Smelting.Effect.6=\u70bd\u70ed\u7684\u9550\u5b50
Smelting.Effect.7=\u91c7\u77ff\u65f6\u4e00\u5b9a\u51e0\u7387\u4f7f\u77ff\u77f3\u7acb\u5373\u88ab\u7194\u70bc
Smelting.FluxMining.Success=[[GREEN]]\u90a3\u4e2a\u77ff\u77f3\u81ea\u5df1\u7194\u5316\u4e86!
Smelting.Listener=\u51b6\u70bc:
Smelting.SkillName=\u51b6\u70bc
Commands.Description.addlevels=\u7ed9\u73a9\u5bb6\u589e\u52a0 mcMMO\u7b49\u7ea7
Commands.Description.adminchat=\u5207\u6362mcMMO\u7ba1\u7406\u5458\u804a\u5929\u6216\u53d1\u9001\u7ba1\u7406\u5458\u804a\u5929\u4fe1\u606f
Commands.Description.addxp=\u7ed9\u73a9\u5bb6\u589e\u52a0 mcMMO\u7ecf\u9a8c
Commands.Description.hardcore=\u4fee\u6539 mcMMO hardcore \u767e\u5206\u6bd4\u6216\u5207\u6362 hardcore \u6a21\u5f0f\u5f00/\u5173
Commands.Description.inspect=\u67e5\u770b\u73a9\u5bb6\u8be6\u7ec6\u7684mcMMO\u4fe1\u606f
Commands.Description.mcability=\u5207\u6362 mcMMO\u6280\u80fd \u80fd\u5426\u88ab\u53f3\u952e\u6fc0\u6d3b
Commands.Description.mcgod=\u5207\u6362mcMMO\u4e0a\u5e1d\u6a21\u5f0f
Commands.Description.mchud=\u53d8\u66f4\u4f60\u7684 mcMMO HUD \u6837\u5f0f
Commands.Description.mcmmo=\u663e\u793amcMMO\u7684\u7b80\u5355\u63cf\u8ff0
Commands.Description.mcnotify=\u5207\u6362mcMMO\u6280\u80fd\u63d0\u793a\u5f00\u5173
Commands.Description.mcpurge=\u6e05\u9664\u6ca1\u6709 mcMMO\u7b49\u7ea7\u7684\u73a9\u5bb6\u548c\u8d85\u8fc7 {0} \u4e2a\u6708\u6ca1\u6709\u767b\u5f55\u7684\u73a9\u5bb6\u7684 mcMMO\u6570\u636e
Commands.Description.mcrank=\u663e\u793a\u73a9\u5bb6\u7684mcMMO\u6392\u540d
Commands.Description.mcrefresh=\u5237\u65b0\u6240\u6709\u7684 mcMMO\u51b7\u5374\u65f6\u95f4
Commands.Description.mcremove=\u4ecemcMMO\u6570\u636e\u5e93\u4e2d\u79fb\u9664\u4e00\u4e2a\u73a9\u5bb6
Commands.Description.mcstats=\u663e\u793a\u4f60\u7684 mcMMO \u7b49\u7ea7\u548c\u7ecf\u9a8c
Commands.Description.mctop=\u663e\u793a mcMMO\u6392\u884c\u699c
Commands.Description.mmoedit=\u7ed9\u73a9\u5bb6\u8bbe\u7f6e mcMMO\u7b49\u7ea7
Commands.Description.mmoupdate=\u8f6c\u6362mcMMO\u6570\u636e, \u5c06 Flatfile \u8f6c\u6362\u4e3a MySQL
Commands.Description.party=\u63a7\u5236\u5404\u79cd mcMMO \u961f\u4f0d\u8bbe\u7f6e
Commands.Description.partychat=\u5207\u6362mcMMO\u961f\u4f0d\u804a\u5929\u6216\u53d1\u9001\u961f\u4f0d\u804a\u5929\u6d88\u606f
Commands.Description.ptp=\u4f20\u9001\u81f3mcMMO\u961f\u4f0d\u6210\u5458
Commands.Description.Skill=\u663e\u793a {0} \u8be6\u7ec6\u7684mcMMO\u6280\u80fd\u4fe1\u606f
Commands.Description.skillreset=\u91cd\u7f6e mcMMO\u7b49\u7ea7
Commands.Description.vampirism=\u66f4\u6539 mcMMO \u69a8\u53d6\u767e\u5206\u6bd4 \u6216\u5207\u6362 vampirism \u6a21\u5f0f\u5f00/\u5173
Commands.Description.xplock=\u9501\u5b9a\u6307\u5b9amcMMO\u6280\u80fd\u7684\u7ecf\u9a8c\u6761
Commands.Description.xprate=\u66f4\u6539mcMMO\u7ecf\u9a8c\u500d\u7387\u6216\u5f00\u542f\u4e00\u4e2amcMMO\u7ecf\u9a8c\u7ffb\u500d\u4e8b\u4ef6
UpdateChecker.outdated=\u4f60\u6b63\u4f7f\u7528\u7740\u4e00\u4e2a\u8fc7\u65f6\u7248\u672c\u7684mcMMO!
UpdateChecker.newavailable=\u53d1\u73b0BukkitDev\u4e0a\u6709\u53ef\u7528\u65b0\u7248\u672c.

View File

@@ -7,18 +7,19 @@ Acrobatics.Effect.2=\u6f02\u4eae\u7ffb\u6efe
Acrobatics.Effect.3=\u5169\u500d\u7684\u7ffb\u6efe\u6548\u679c
Acrobatics.Effect.4=\u9583\u907f
Acrobatics.Effect.5=\u6e1b\u5c11\u4e00\u534a\u7684\u50b7\u5bb3
Acrobatics.Listener=\u654f\u6377:
Acrobatics.Listener=\u96dc\u6280:
Acrobatics.Roll.Chance=[[RED]]\u7ffb\u6efe\u6a5f\u7387: [[YELLOW]]{0}
Acrobatics.Roll.GraceChance=[[RED]]\u6f02\u4eae\u7ffb\u6efe\u6a5f\u7387: [[YELLOW]]{0}
Acrobatics.Roll.Text=**\u7ffb\u6efe**
Acrobatics.SkillName=\u654f\u6377
Acrobatics.Skillup=[[YELLOW]]\u654f\u6377\u6280\u80fd\u4e0a\u5347\u4e86 {0}! \u7e3d\u7b49\u7d1a({1})!
Acrobatics.SkillName=\u96dc\u6280
Acrobatics.Skillup=[[YELLOW]]\u96dc\u6280\u7b49\u7d1a\u4e0a\u5347\u4e86{0}\u7b49. \u5171({1})\u7b49
Archery.Combat.DazeChance=[[RED]]\u6688\u7729\u6a5f\u7387: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=[[RED]]\u56de\u6536\u7bad\u77e2\u7684\u6a5f\u7387: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=[[RED]]\u6280\u8853\u5c04\u64ca\u734e\u52f5\u50b7\u5bb3: [[YELLOW]]{0}
Archery.Effect.0=\u6280\u8853\u5c04\u64ca
Archery.Effect.1=\u589e\u52a0\u5f13\u7bad\u50b7\u5bb3
Archery.Effect.2=\u6688\u7729(\u9650\u5b9a\u73a9\u5bb6)
Archery.Effect.3=\u8ff7\u60d1\u6575\u4eba\u4e26\u9020\u6210 {0}\u9ede\u50b7\u5bb3
Archery.Effect.4=\u56de\u6536\u5f13\u7bad
Archery.Effect.5=\u6709\u6a5f\u7387\u5f9e\u5c4d\u9ad4\u4e0a\u53d6\u5f97\u7bad\u77e2
Archery.Listener=\u7bad\u8853:
@@ -37,7 +38,7 @@ Axes.Combat.CritChance=[[RED]]\u66b4\u64ca\u6a5f\u7387: [[YELLOW]]{0}%
Axes.Combat.CriticalHit=[[RED]]\u6703\u5fc3\u4e00\u64ca!
Axes.Combat.GI.Proc=[[GREEN]]**\u66b4\u529b\u6253\u64ca**
Axes.Combat.GI.Struck=[[RED]]**\u88ab\u5f37\u529b\u5c04\u64ca\u64ca\u4e2d**
Axes.Combat.SS.Length=[[RED]]\u65b7\u982d\u8005\u6301\u7e8c\u6642\u9593: [[YELLOW]]{0}s
Axes.Combat.SS.Length=[[RED]]\u5288\u9871\u65ac\u6301\u7e8c\u6642\u9593: [[YELLOW]]{0}s
Axes.Effect.0=\u65b7\u982d\u8005 (\u4e3b\u52d5\u6280\u80fd)
Axes.Effect.1=\u9020\u6210\u7bc4\u570d\u50b7\u5bb3
Axes.Effect.2=\u6703\u5fc3\u4e00\u64ca
@@ -50,11 +51,11 @@ Axes.Effect.8=\u5f37\u529b\u5c04\u64ca
Axes.Effect.9=\u5c0d\u7121\u88dd\u7532\u6575\u4eba\u9020\u6210\u66f4\u591a\u50b7\u5bb3
Axes.Listener=\u65a7\u982d:
Axes.SkillName=\u65a7\u982d
Axes.Skills.SS.Off=[[RED]]**\u65b7\u982d\u8005\u6280\u80fd\u5df2\u7d50\u675f**
Axes.Skills.SS.Off=[[RED]]**\u5288\u9871\u65ac\u5df2\u7d50\u675f**
Axes.Skills.SS.On=[[GREEN]]**\u65b7\u982d\u8005\u6280\u80fd\u4f7f\u7528**
Axes.Skills.SS.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u65b7\u982d\u8005 [[GREEN]]\u6280\u80fd\u5df2\u7d93\u53ef\u4ee5\u4f7f\u7528\uff01
Axes.Skills.SS.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u5288\u9871\u65ac [[GREEN]]\u80fd\u529b\u5df2\u53ef\u4f7f\u7528\uff01
Axes.Skills.SS.Other.Off=[[RED]]\u65b7\u982d\u8005[[GREEN]] \u5df2\u7d93\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\u4f7f\u7528\u4e86 [[RED]]\u65b7\u982d\u8005!
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\u4f7f\u7528\u4e86 [[RED]]\u5288\u9871\u65ac!
Axes.Skillup=[[YELLOW]]\u65a7\u982d\u6280\u80fd\u4e0a\u5347\u4e86 {0}! \u7e3d\u7b49\u7d1a ({1})!
Excavation.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u93df\u5b50**
Excavation.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7dca\u4e86\u4f60\u7684\u93df\u5b50**
@@ -71,6 +72,7 @@ Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u66b
Excavation.Skills.GigaDrillBreaker.Other.Off=[[RED]]\u66b4\u8d70\u947d\u982d[[GREEN]] \u5df2\u7d93\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u66b4\u8d70\u947d\u982d!
Excavation.Skillup=[[YELLOW]]\u6316\u6398\u6280\u80fd\u4e0a\u5347\u4e86 {0}! \u7e3d\u7b49\u7d1a ({1})!
Fishing.Ability.Chance=[[RED]]\u54ac\u788e\u6a5f\u7387: [[YELLOW]]{0}
Fishing.Ability.Info=[[RED]]\u9b54\u6cd5\u7375\u4eba: [[GRAY]] ** \u96a8\u8457\u5bf6\u85cf\u7375\u4eba\u7b49\u7d1a\u63d0\u9ad8 **
Fishing.Ability.Locked.0=\u5c07\u9396\u5b9a\uff0c\u76f4\u5230 {0}+ \u6280\u80fd\uff08\u6416\u6643\uff09
Fishing.Ability.Rank=[[RED]]\u5bf6\u7269\u7375\u4eba\u7b49\u7d1a: [[YELLOW]]{0}/5
@@ -84,6 +86,8 @@ Fishing.Effect.4=\u6416\u6643 (\u5c0d\u602a\u7269\u4f7f\u7528)
Fishing.Effect.5=\u7528\u91e3\u7aff\u628a\u602a\u7269\u7684\u7269\u54c1\u53d6\u4e0b\u4f86
Fishing.Effect.6=\u6f01\u592b\u751f\u6d3b
Fishing.Effect.7=\u98df\u7528\u9b5a\u98df\u54c1\u6642\u984d\u5916\u6062\u5fa9\u98fd\u98df\u5ea6
Fishing.Effect.8=\u91e3\u9b5a\u5927\u5e2b
Fishing.Effect.9=\u589e\u52a0\u5728\u91e3\u9b5a\u6642\u4e0a\u9264\u7684\u6a5f\u7387
Fishing.Enchant.Chance=[[RED]]\u9b54\u6cd5\u7375\u4eba\u6a5f\u7387: [[YELLOW]]{0}
Fishing.Chance.Raining=[[BLUE]] \u5927\u91cf\u734e\u52f5
Fishing.ItemFound=[[GRAY]]\u767c\u73fe\u5bf6\u7269\u4e86\uff01
@@ -97,9 +101,13 @@ Herbalism.Ability.GTe.Length=[[RED]]\u571f\u795e\u795d\u798f\u6301\u7e8c\u6642\u
Herbalism.Ability.GTe.NeedMore=[[RED]]\u4f60\u9700\u8981\u66f4\u591a\u7a2e\u5b50\u624d\u53ef\u7da0\u5316.
Herbalism.Ability.GTh.Chance=[[RED]]\u7da0\u5316\u6a5f\u7387: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=[[RED]]**\u7da0\u5316\u5931\u6557**
Herbalism.Ability.GTh.Stage=[[RED]]\u7da0\u624b\u6307\u968e\u6bb5: [[YELLOW]]\u4f5c\u7269\u6210\u9577\u81f3\u968e\u6bb5 {0}
Herbalism.Ability.GTh=[[GREEN]]**\u7da0\u5316**
Herbalism.Ability.HylianLuck=[[RED]]\u6d77\u502b\u7684\u795d\u798f\u6a5f\u7387: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u92e4\u982d**
Herbalism.Ability.Ready=[[GREEN]]**\u4f60\u8209\u9ad8\u4e86\u4f60\u7684\u92e4\u982d**
Herbalism.Ability.ShroomThumb.Chance=[[RED]]\u8611\u83c7\u624b\u89f8\u767c\u6a5f\u7387: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=[[RED]]**\u78e8\u83c7\u624b\u4f7f\u7528\u5931\u6557**
Herbalism.Effect.0=\u571f\u795e\u795d\u798f (\u4e3b\u52d5\u6280\u80fd)
Herbalism.Effect.1=\u6563\u64ad\u4e0a\u5e1d\u7684\u6069\u60e0,3\u500d\u6389\u843d\u7269
Herbalism.Effect.2=\u7da0\u5316 (\u5c0f\u9ea5)
@@ -110,12 +118,16 @@ Herbalism.Effect.6=\u8fb2\u592b\u751f\u6d3b
Herbalism.Effect.7=\u98df\u7528\u8fb2\u98df\u54c1\u6642\u984d\u5916\u6062\u5fa9\u98fd\u98df\u5ea6
Herbalism.Effect.8=\u96d9\u500d\u6389\u843d (\u6240\u6709\u7684\u690d\u7269)
Herbalism.Effect.9=\u96d9\u500d\u6389\u843d\u7269\u54c1
Herbalism.Effect.11=\u7d66\u4e88\u4e00\u500b\u5f88\u5c0f\u7684\u6a5f\u6703\u4f86\u627e\u5230\u7269\u54c1
Herbalism.Effect.10=\u6d77\u502b\u7684\u795d\u798f
Herbalism.Effect.11=\u4f7f\u4f60\u64c1\u6709\u5fae\u5c0f\u6a5f\u7387\u767c\u73fe\u7a00\u6709\u7269\u54c1
Herbalism.Effect.12=\u8611\u83c7\u624b
Herbalism.Effect.13=\u6563\u64ad\u83cc\u7d72\u9ad4\u81f3\u571f\u548c\u8349
Herbalism.HylianLuck=[[GREEN]]\u8c50\u6536\u5973\u795e\u4eca\u65e5\u8207\u4f60\u540c\u5728!
Herbalism.Listener=\u8fb2\u696d\u77e5\u8b58:
Herbalism.SkillName=\u8fb2\u696d\u77e5\u8b58
Herbalism.Skills.GTe.Off=[[RED]]**\u571f\u795e\u795d\u798f\u5df2\u7ed3\u675f**
Herbalism.Skills.GTe.On=[[GREEN]]**\u555f\u52d5\u571f\u795e\u795d\u798f\u6280\u80fd**
Herbalism.Skills.GTe.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u571f\u795e\u795d\u798f [[GREEN]]\u6280\u80fd\u5df2\u7d93\u53ef\u4ee5\u4f7f\u7528\u4e86\uff01
Herbalism.Skills.GTe.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u571f\u795e\u795d\u798f [[GREEN]]\u80fd\u529b\u5df2\u53ef\u4f7f\u7528!
Herbalism.Skills.GTe.Other.Off=[[RED]]\u571f\u795e\u795d\u798f[[GREEN]] \u5df2\u7d93\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u571f\u795e\u795d\u798f!
Herbalism.Skillup=[[YELLOW]]\u8fb2\u696d\u77e5\u8b58\u4e0a\u5347\u4e86 {0}! \u7e3d\u7b49\u7d1a ({1})!
@@ -123,7 +135,7 @@ Mining.Ability.Length=[[RED]]\u8d85\u7d1a\u5de5\u4eba\u6301\u7e8c\u6642\u9593: [
Mining.Ability.Locked.0=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u6316\u7926\u7206\u767c)
Mining.Ability.Locked.1=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u66f4\u5927\u7684\u70b8\u5f48)
Mining.Ability.Locked.2=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u7206\u7834\u5c08\u5bb6)
Mining.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u7a3f\u5b50**
Mining.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u93ac\u5b50**
Mining.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7dca\u4e86\u4f60\u7684\u7a3f\u5b50**
Mining.Effect.0=\u8d85\u7d1a\u5de5\u4eba (\u4e3b\u52d5\u6280\u80fd)
Mining.Effect.1=\u901f\u5ea6+, 3\u500d\u6389\u843d\u7387
@@ -143,13 +155,15 @@ Mining.Skills.SuperBreaker.Off=[[RED]]**\u8d85\u7d1a\u5de5\u4eba\u5df2\u7ed3\u67
Mining.Skills.SuperBreaker.On=[[GREEN]]**\u8d85\u7d1a\u5de5\u4eba\u4f7f\u7528**
Mining.Skills.SuperBreaker.Other.Off=[[RED]]\u8d85\u7d1a\u5de5\u4eba[[GREEN]] \u5df2\u7d93\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u8d85\u7d1a\u5de5\u4eba!
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u8d85\u7d1a\u5de5\u4eba [[GREEN]]\u6280\u80fd\u5df2\u7d93\u53ef\u4ee5\u518d\u6b21\u4f7f\u7528\u4e86\uff01
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u8d85\u7d1a\u5de5\u4eba [[GREEN]]\u80fd\u529b\u5df2\u53ef\u518d\u6b21\u4f7f\u7528\uff01
Mining.Skillup=[[YELLOW]]\u6316\u7926\u6280\u80fd\u4e0a\u5347\u4e86 {0}! \u7e3d\u7b49\u7d1a ({1})!
Mining.Blast.Boom=[[GRAY]]**BOOM!**
Mining.Blast.Effect=+{0} \u7926\u7269\u7522\u91cf, -{1}\u5783\u573e\u7522\u91cf, {2}x \u6389\u843d\u91cf
Mining.Blast.Radius.Increase=[[RED]]\u7206\u70b8\u534a\u5f91\u63d0\u5347: [[YELLOW]]+{0}
Mining.Blast.Rank=[[RED]]\u6316\u7926\u7206\u767c: [[YELLOW]] \u6392\u540d {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u6316\u7926\u7206\u767c!
Mining.Blast.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u6316\u7926\u7206\u767c [[GREEN]]\u51b7\u537b\u6642\u9593\u5df2\u7d50\u675f!
Repair.AnvilPlaced.Spout1=[mcMMO] \u4f60\u653e\u7f6e\u4e86\u4e00\u500b\u9435\u7827
Repair.AnvilPlaced.Spout2=\u8acb\u9ede\u5de6\u9375\u4f86\u4fee\u5fa9!
Repair.Effect.0=\u4fee\u7406
Repair.Effect.1=\u4fee\u7406\u5de5\u5177\u548c\u88dd\u5099
@@ -188,7 +202,7 @@ Repair.Skills.Mastery=[[RED]]\u4fee\u7406\u7cbe\u901a: [[YELLOW]]\u984d\u5916\u5
Repair.Skills.StackedItems=[[DARK_RED]]\u4f60\u7121\u6cd5\u4fee\u7406\u758a\u52a0\u7684\u7269\u54c1
Repair.Skills.Super.Chance=[[RED]]\u8d85\u7d1a\u4fee\u7406\u6a5f\u7387: [[YELLOW]]{0}
Repair.Skillup=[[YELLOW]]\u4fee\u7406\u6280\u80fd\u4e0a\u5347\u4e86 {0}! \u7e3d\u7b49\u7d1a ({1})!
Repair.Arcane.Chance.Downgrade=[[GRAY]]AF\u964d\u7d1a\u6a5f\u7387: [[YELLOW]]{0}%
Repair.Arcane.Chance.Downgrade=[[GRAY]]\u9644\u9b54\u964d\u7d1a\u6a5f\u7387: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]\u81ea\u52d5\u7784\u6e96\u7684\u6210\u529f\u7387: [[YELLOW]]{0}%
Repair.Arcane.Downgrade=[[RED]]\u9019\u4ef6\u7269\u54c1\u7684\u9644\u9b54\u7b49\u7d1a\u5df2\u4e0b\u964d
Repair.Arcane.Fail=[[RED]]\u9019\u4ef6\u7269\u54c1\u7684\u9644\u9b54\u5df2\u6d88\u5931!
@@ -196,7 +210,7 @@ Repair.Arcane.Lost=[[RED]]\u4f60\u7684\u6280\u80fd\u7b49\u7d1a\u4e0d\u8db3\u4ee5
Repair.Arcane.Perfect=[[GREEN]]\u4f60\u6210\u529f\u5730\u4fdd\u7559\u4e86\u9019\u4ef6\u7269\u54c1\u7684\u9644\u9b54.
Repair.Arcane.Rank=[[RED]]\u79d8\u6cd5\u935b\u9020: [[YELLOW]]\u7b49\u7ea7 {0}/4
Swords.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u528d**
Swords.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7dca\u4e86\u4f60\u7684\u528d**
Swords.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7dca\u8457\u4f60\u7684\u528d**
Swords.Combat.Bleed.Chance=[[RED]]\u6d41\u8840\u6a5f\u7387: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=[[RED]]\u6d41\u8840\u6301\u7e8c\u6642\u9593: [[YELLOW]]{0} ticks
Swords.Combat.Bleed.Note=[[GRAY]]\u6ce8\u610f: [[YELLOW]]\u6bcf\u5169\u79d2\u6e1b\u4e00\u6ef4\u8840
@@ -205,11 +219,14 @@ Swords.Combat.Bleeding.Stopped=[[GRAY]]\u6d41\u8840\u6548\u679c\u5df2[[GREEN]]\u
Swords.Combat.Bleeding=[[GREEN]]**\u6575\u4eba\u6b63\u5728\u4e0d\u65b7\u6d41\u8840**
Swords.Combat.Counter.Chance=[[RED]]\u53cd\u64ca\u6a5f\u7387: [[YELLOW]]{0}
Swords.Combat.Counter.Hit=[[DARK_RED]]\u4f60\u53cd\u64ca\u4e86\u5c0d\u624b!
Swords.Combat.Countered=[[GREEN]]**\u5c0d\u6575\u4eba\u53cd\u64ca\u4e86**
Swords.Combat.Countered=[[GREEN]]**\u53cd\u5c04\u4e86\u6575\u4eba\u7684\u653b\u64ca**
Swords.Combat.SS.Struck=[[DARK_RED]]\u555f\u52d5\u6c23\u7d55\u528d\uff01
Swords.Effect.0=\u53cd\u64ca
Swords.Effect.1=\u53cd\u5f48{0}\u9ede\u50b7\u5bb3
Swords.Effect.2=\u6c23\u7d55\u528d (\u4e3b\u52d5\u6280\u80fd)
Swords.Effect.3={0} \u50b7\u5bb3\u7bc4\u570d, \u6d41\u8840\u7bc4\u570d
Swords.Effect.4=\u6c23\u7d55\u528d\u6d41\u8840\u50b7\u5bb3\u589e\u52a0
Swords.Effect.5={0} \u6b21\u6d41\u8840
Swords.Effect.6=\u6d41\u8840
Swords.Effect.7=\u7522\u751f\u6d41\u8840\u8655
Swords.Listener=\u528d:
@@ -226,16 +243,19 @@ Taming.Ability.Bonus.1=\u72fc\u6703\u907f\u958b\u5371\u96aa
Taming.Ability.Bonus.2=\u539a\u5be6\u7684\u76ae\u6bdb
Taming.Ability.Bonus.3=1/{0} \u50b7\u5bb3/\u706b\u7130\u50b7\u5bb3
Taming.Ability.Bonus.4=\u885d\u64ca\u683c\u64cb
Taming.Ability.Bonus.5=\u7206\u70b8\u50b7\u5bb3\u6e1b\u514d\u70ba 1/{0}
Taming.Ability.Bonus.6=\u5229\u722a
Taming.Ability.Bonus.7=+{0} \u50b7\u5bb3
Taming.Ability.Bonus.8=\u5feb\u9910\u670d\u52d9
Taming.Ability.Bonus.9={0} \u4e00\u5b9a\u6a5f\u7387\u5728\u653b\u64ca\u6642\u6062\u5fa9\u8840\u91cf
Taming.Ability.Bonus.11=\u88ab\u6709\u5bb3\u7684\u9b54\u6cd5\u50b7\u5bb3\u6216\u4e2d\u6bd2\u6642\uff0c\u6062\u5fa9\u5065\u5eb7
Taming.Ability.Bonus.10=\u795e\u72ac
Taming.Ability.Bonus.11=\u7576\u88ab\u6cd5\u8853\u653b\u64ca\u6216\u4e2d\u6bd2\u6642\u6062\u5fa9\u751f\u547d\u503c
Taming.Ability.Locked.0=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u8fc5\u9748\u654f\u6377)
Taming.Ability.Locked.1=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u539a\u5be6\u7684\u76ae\u6bdb)
Taming.Ability.Locked.2=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u885d\u64ca\u683c\u64cb)
Taming.Ability.Locked.3=\u9396\u5b9a\u76f4\u5230 {0}+ \u6280\u80fd (\u5229\u722a)
Taming.Ability.Locked.4=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u5feb\u9910\u670d\u52d9)
Taming.Ability.Locked.5=\u9396\u5b9a\u6280\u80fd(\u795e\u72ac)\u76f4\u5230\u7b49\u7d1a\u8d85\u904e{0}+
Taming.Combat.Chance.Gore=[[RED]]\u6d41\u8840\u6a5f\u7387: [[YELLOW]]{0}
Taming.Effect.0=\u8a13\u7378\u4e4b\u80fd
Taming.Effect.1=\u62ff\u8457\u9aa8\u982d\u4e26\u4f7f\u7528\u6ed1\u9f20\u53f3\u9375\u4f86\u78ba\u8a8d\u72fc\u8207\u5c71\u8c93\u7684\u72c0\u6cc1
@@ -247,6 +267,8 @@ Taming.Effect.14=[[GRAY]]\u53ec\u559a (\u5c71\u8c93): \u6309\u4f4fshift\u540c\u6
Taming.Effect.15=[[GRAY]]\u53ec\u559a (\u72fc): \u6309\u4f4fshift\u540c\u6642\u4e26\u6309\u4f4f\u5de6\u9375 \u9084\u9700\u8981\u62ff {0} \u6839\u9aa8\u982d\u5728\u624b\u88e1
Taming.Effect.16=\u5feb\u9910\u670d\u52d9
Taming.Effect.17=\u4e00\u5b9a\u6a5f\u7387\u4f7f\u72fc\u5728\u653b\u64ca\u6642\u6062\u5fa9\u8840\u91cf
Taming.Effect.18=\u795e\u72ac
Taming.Effect.19=\u6cd5\u8853&\u4e2d\u6bd2\u5c07\u6703\u89f8\u767c\u6cbb\u7642.
Taming.Effect.2=\u6d41\u8840
Taming.Effect.3=\u6703\u5fc3\u4e00\u64ca\u4f7f\u76ee\u6a19\u6d41\u8840
Taming.Effect.4=\u5229\u722a
@@ -267,6 +289,9 @@ Unarmed.Ability.Bonus.0=\u9435\u8155\u5927\u5e2b
Unarmed.Ability.Bonus.1=\u589e\u52a0{0}\u50b7\u5bb3
Unarmed.Ability.Chance.ArrowDeflect=[[RED]]\u5f13\u7bad\u504f\u5411\u6a5f\u7387: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=[[RED]]\u63a0\u596a\u6b66\u5668\u6a5f\u7387: [[YELLOW]]{0}
Unarmed.Ability.Chance.IronGrip=[[RED]]\u92fc\u9435\u624b\u6307\u6a5f\u7387: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=[[RED]]\u4f60\u7684\u5c0d\u624b\u6709\u92fc\u9435\u624b\u6307!
Unarmed.Ability.IronGrip.Defender=[[GREEN]]\u4f60\u7684\u8d85\u5f37\u63e1\u529b\u4f7f\u4f60\u7684\u6b66\u5668\u514d\u65bc\u88ab\u64ca\u843d!
Unarmed.Ability.Lower=[[GRAY]]**\u4f60\u653e\u9b06\u4e86\u4f60\u7684\u62f3\u982d**
Unarmed.Ability.Ready=[[GREEN]]**\u4f60\u7dca\u63e1\u8457\u4f60\u7684\u62f3\u982d**
Unarmed.Effect.0=\u72c2\u66b4 (\u4e3b\u52d5\u6280\u80fd)
@@ -277,8 +302,9 @@ Unarmed.Effect.4=\u9435\u8155\u5927\u5e2b
Unarmed.Effect.5=\u4f7f\u4f60\u7684\u88dd\u7532\u96a8\u6642\u9593\u589e\u52a0\u800c\u589e\u5f37
Unarmed.Effect.6=\u5f13\u7bad\u504f\u5411
Unarmed.Effect.7=\u8b93\u5f13\u7bad\u504f\u5411
Unarmed.Effect.8=[[RED]]\u4f60\u7684\u5c0d\u624b\u6709\u8d85\u5f37\u63e1\u529b!
Unarmed.Effect.9=\u9632\u6b62\u4f60\u88ab\u596a\u53d6\u6b66\u5668
Unarmed.Listener=\u5c1a\u672a\u88dd\u5099:
Unarmed.Listener=\u7a7a\u624b\u9053:
Unarmed.SkillName=\u5c1a\u672a\u88dd\u5099
Unarmed.Skills.Berserk.Off=[[RED]]**\u72c2\u66b4\u6280\u80fd\u5df2\u7ed3\u675f**
Unarmed.Skills.Berserk.On=[[GREEN]]**\u72c2\u66b4\u6280\u80fd\u4f7f\u7528**
@@ -318,9 +344,10 @@ Combat.Gore=[[GREEN]]**\u6d41\u8840**
Combat.StruckByGore=[[RED]]**\u4f60\u958b\u59cb\u6d41\u8840\u4e86**
Combat.TargetDazed=\u76ee\u6a19\u5df2\u88ab [[DARK_RED]] \u64ca\u6688
Combat.TouchedFuzzy=[[DARK_RED]]\u982d\u6688\u76ee\u7729...
mcMMO.Description=[[DARK_AQUA]]\u95dc\u65bc [[YELLOW]]mcMMO[[DARK_AQUA]] \u5c08\u6848:,[[GOLD]]mcMMO\u662f\u4e00\u500b[[RED]]\u958b\u653e\u539f\u59cb\u78bc\u7684[[GOLD]] RPG \u6a21\u7d44\u59cb\u65bc2011\u5e74\u4e8c\u6708,[[GOLD]]\u5efa\u7acb\u8005 [[BLUE]]nossr50[[GOLD]]. \u65e8\u5728\u63d0\u4f9b\u4e00\u500b\u9ad8\u54c1\u8ceaRPG\u9ad4\u9a57.,[[DARK_AQUA]]\u5c0f\u6280\u5de7:,[[GOLD]] - [[GREEN]]\u8f38\u5165 [[RED]]/mcmmo help[[GREEN]] \u4ee5\u4e86\u89e3\u6240\u6709\u6307\u4ee4,[[GOLD]] - [[GREEN]]\u8f38\u5165 [[RED]]/\u6280\u80fd\u540d\u7a31[[GREEN]]\u4ee5\u4e86\u89e3\u6280\u80fd\u7d30\u7bc0,[[DARK_AQUA]]\u958b\u767c\u8005:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](\u8d0a\u52a9\u8005),[[GOLD]] - [[GREEN]]GJ [[BLUE]](\u5c08\u6848\u9818\u5c0e\u4eba),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](\u958b\u767c\u8005),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](\u958b\u767c\u8005),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](\u958b\u767c\u8005),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](\u958b\u767c\u8005),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](\u958b\u767c\u8005),[[DARK_AQUA]]\u5be6\u7528\u9023\u7d50:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] \u932f\u8aa4\u56de\u5831,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC \u983b\u9053,
Commands.addlevels.AwardAll.1=[[GREEN]]\u5728\u5168\u90e8\u7684\u6280\u80fd\u88e1\u4f60\u9084\u5dee {0} \u7b49\u7d1a!
Commands.addlevels.AwardAll.2=[[RED]]\u6240\u6709\u6280\u80fd\u7b49\u7d1a\u5df2\u88ab\u8a2d\u5b9a\u70ba {0}.
Commands.addlevels.AwardSkill.1=[[GREEN]]\u4f60\u4e0a\u5347\u4e86{0} \u7d1a\u5728 {1} \u9019\u7b49\u7d1a!
Commands.addlevels.AwardSkill.1=[[GREEN]]{1}\u6280\u80fd\u5df2\u589e\u52a0{0}\u7b49!
Commands.addlevels.AwardSkill.2=[[RED]]{0} \u56e0\u70ba {1} \u800c\u4fee\u6539.
Commands.addxp.AwardAll=[[GREEN]]\u5728\u5168\u90e8\u7684\u6280\u80fd\u88e1\u4f60\u9084\u5dee {0} \u7d93\u9a57\u503c!
Commands.addxp.AwardSkill=[[GREEN]]\u4f60\u5728 {1} \u4e2d\u88ab\u734e\u52f5\u4e86 {0} \u7d93\u9a57\u503c!
@@ -331,13 +358,13 @@ Commands.AdminChat.On=\u7ba1\u7406\u804a\u5929\u6a21\u5f0f [[GREEN]]\u958b\u555f
Commands.AdminChat.Prefix=[[AQUA]][[[WHITE]]{0}[[AQUA]]]
Commands.AdminToggle=[[RED]]- \u5207\u63db\u7ba1\u7406\u54e1\u804a\u5929
Commands.Chat.Console=*\u63a7\u5236\u53f0*
Commands.Disabled=[[RED]]\u9019\u500b\u6307\u4ee4\u88ab\u53d6\u6d88\u4e86.
Commands.Disabled=[[RED]]\u9019\u500b\u6307\u4ee4\u88ab\u7981\u7528\u4e86.
Commands.DoesNotExist=[[RED]]\u6b64\u73a9\u5bb6\u4e0d\u5b58\u5728\uff01
Commands.GodMode.Disabled=[[YELLOW]]mcMMO \u795e\u4e4b\u6a21\u5f0f\u53d6\u6d88
Commands.GodMode.Enabled=[[YELLOW]]mcMMO \u795e\u4e4b\u6a21\u5f0f\u958b\u555f
Commands.GodMode.Forbidden=[mcMMO] \u795e\u4e4b\u6a21\u5f0f\u4e0d\u5141\u8a31\u5728\u9019\u4e16\u754c\u958b\u555f (\u8acb\u89c0\u770b\u6b0a\u9650\u8a2d\u5b9a)
Commands.Inspect=<player> [[RED]]-\u67e5\u770b\u73a9\u5bb6\u8a73\u7d30\u8a0a\u606f
Commands.Invite.Accepted=[[GREEN]]\u63a5\u53d7\u9080\u8acb\uff0c\u4f60\u6210\u70ba\u4e86\u6b64\u968a\u4f0d\u7684\u968a\u54e1 {0}
Commands.Invite.Accepted=[[GREEN]]\u63a5\u53d7\u9080\u8acb\uff0c\u4f60\u52a0\u5165\u4e86\u968a\u4f0d {0}
Commands.Invite.Success=[[GREEN]]\u9080\u8acb\u8a0a\u606f\u767c\u9001\u6210\u529f
Commands.Leaderboards=<skill> <page> [[RED]]- \u6392\u884c\u699c
Commands.mcc.Header=[[RED]]---[][[YELLOW]]mcMMO \u6307\u4ee4[[RED]][]---
@@ -351,6 +378,7 @@ Commands.mcrank.Skill=[[YELLOW]]{0}[[GREEN]] - [[GOLD]]\u6392\u540d [[WHITE]]#[[
Commands.mcrank.Unranked=[[WHITE]]\u6392\u884c\u699c\u5916
Commands.mcrefresh.Success=[[RED]]{0} \u79d2\u5f8c\u51b7\u537b\u6642\u9593\u5b8c\u7562.
Commands.mcremove.Success=[[GREEN]]{0} \u5df2\u6210\u529f\u5f9e\u6578\u64da\u88e1\u79fb\u9664!
Commands.mctop.Tip=[[GOLD]]\u5c0f\u6487\u6b65: \u6253 [[RED]]/mcrank[[GOLD]] \u53ef\u4ee5\u89c0\u770b\u4f60\u7684\u6392\u540d!
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - \u7de8\u8f2f\u76ee\u6a19
Commands.mmoedit.AllSkills.1=[\u7da0\u8272]\u60a8\u6240\u6709\u7684\u6280\u80fd\u7b49\u7d1a\u88ab\u8a2d\u5b9a\u70ba{0}\uff01
Commands.mmoedit.Modified.1=[[GREEN]]\u4f60\u7684 {0} \u7b49\u7d1a\u88ab\u8a2d\u5b9a\u70ba {1}!
@@ -359,8 +387,8 @@ Commands.mmoupdate.Start=[[GRAY]]\u78ba\u8a8d\u7248\u672c\u4e2d...
Commands.mmoupdate.Finish=[[GREEN]]\u8b80\u53d6\u7248\u672c\u5b8c\u7562!
Commands.ModDescription=[[RED]]- \u8acb\u95b1\u8b80\u63d2\u4ef6\u63cf\u8ff0
Commands.NoConsole=\u9019\u500b\u6307\u4ee4\u4e0d\u53ef\u4f7f\u7528
Commands.Notifications.Off=<FONT> <FONT> [\u7da0\u8272]\u5207\u63db\u80fd\u529b\u7684\u901a\u77e5</ FONT> </ FONT>
Commands.Notifications.On=<FONT> <FONT> [\u7da0\u8272]\u5207\u63db\u80fd\u529b\u7684\u901a\u77e5</ FONT> </ FONT>
Commands.Notifications.Off=\u5207\u63db\u80fd\u529b\u901a\u77e5\u70ba [[RED]]\u95dc\u9589
Commands.Notifications.On=\u5207\u63db\u80fd\u529b\u901a\u77e5\u70ba [[GREEN]]\u958b\u555f
Commands.Offline=[RED]]\u6b64\u547d\u4ee4\u4e26\u4e0d\u9069\u7528\u65bc\u96e2\u7dda\u73a9\u5bb6\u3002
Commands.Other=[[GREEN]]--\u5176\u4ed6\u6307\u4ee4--
Commands.Party.Header=[[RED]]-----[][[GREEN]]\u968a\u4f0d[[RED]][]-----
@@ -368,23 +396,25 @@ Commands.Party.Status=[[DARK_GRAY]]\u540d\u5b57: [[WHITE]]{0} {1}
Commands.Party.ShareMode=[[DARK_GRAY]]\u5206\u4eab\u6a21\u5f0f:
Commands.Party.ItemShare=[[GRAY]]\u7269\u54c1 [[DARK_AQUA]]({0})
Commands.Party.ExpShare=[[GRAY]]\u7d93\u9a57\u503c [[DARK_AQUA]]({0})
Commands.Party.ItemShareCategories=[[DARK_GRAY]]\u5171\u4eab\u9805\u76ee: [[GRAY]][[ITALIC]]{0}
Commands.Party.ItemShareCategories=[[DARK_GRAY]]\u5171\u4eab\u7269\u54c1: [[GRAY]][[ITALIC]]{0}
Commands.Party.MembersNear=[[DARK_GRAY]]\u63a5\u8fd1\u4f60 [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
Commands.Party.Accept=[[RED]]- \u63a5\u53d7\u968a\u4f0d\u9080\u8acb
Commands.Party.Chat.Off=\u968a\u4f0d\u804a\u5929\u6a21\u5f0f[[RED]]\u53d6\u6d88
Commands.Party.Chat.On=\u968a\u4f0d\u804a\u5929\u6a21\u5f0f [[GREEN]]\u958b\u555f
Commands.Party.Chat.Prefix=[[GREEN]]([[WHITE]]{0}[[GREEN]])
Commands.Party.Commands=[[GREEN]]--\u7d44\u968a\u6307\u4ee4--
Commands.Party.Invite.0=[[RED]]\u6ce8\u610f: [[GREEN]]\u4f60\u6536\u5230\u4e86\u4e00\u500b\u968a\u4f0d\u9080\u8acb {0} \u4f86\u81ea {1}
Commands.Party.Invite.0=[[RED]]\u6ce8\u610f: [[GREEN]]\u4f60\u6536\u5230\u4e86\u4f86\u81ea {1} \u7684\u968a\u4f0d\u9080\u8acb {0}
Commands.Party.Invite.1=[[YELLOW]]\u8f38\u5165 [[GREEN]]/party accept[[YELLOW]] \u4f86\u63a5\u53d7\u9080\u8acb
Commands.Party.Invite=[[RED]]- \u5df2\u767c\u9001\u968a\u4f0d\u9080\u8acb
Commands.Party.Join=[[GRAY]]\u52a0\u5165\u7684\u968a\u4f0d: {0}
Commands.Party.Create=[[GRAY]]\u5275\u5efa\u7684\u968a\u4f0d\u540d\u7a31: {0}
Commands.Party.Rename=[[GRAY]]\u968a\u4f0d\u540d\u7a31\u5df2\u66f4\u6539\u70ba: [[WHITE]]{0}
Commands.Party.SetSharing=[[GRAY]]\u968a\u4f0d {0} \u5206\u4eab\u8a2d\u5b9a\u70ba: [[DARK_AQUA]]{1}
Commands.Party.ToggleShareCategory=[[GRAY]]\u968a\u4f0d\u5171\u4eab\u7684\u7269\u54c1[[GOLD]]{0} [[GRAY]] \u5df2\u7d93 [[DARK_AQUA]]{1}
Commands.Party.AlreadyExists=[[DARK_RED]]\u5c0d\u4f0d{0} \u5df2\u5b58\u5728!
Commands.Party.Kick=[[RED]]\u4f60\u5df2\u88ab {0} \u8e22\u51fa!
Commands.Party.Leave=[[RED]]\u4f60\u96e2\u958b\u4e86\u9019\u652f\u968a\u4f0d
Commands.Party.Members.Header=[RED]] ----- [] [GREEN]\u6703\u54e1[RED] [] -----
Commands.Party.Members.Header=[RED]] ----- [] [GREEN]\u6210\u54e1[RED] [] -----
Commands.Party.None=[[RED]]\u4f60\u4e0d\u5728\u968a\u4f0d\u4e2d.
Commands.Party.Quit=[[RED]]- \u96e2\u958b\u4f60\u73fe\u5728\u7684\u968a\u4f0d
Commands.Party.Teleport=<player> [[RED]]- \u50b3\u9001\u5230\u968a\u4f0d\u6210\u54e1\u65c1
@@ -397,6 +427,8 @@ Commands.ptp.NoRequests=[[RED]]\u4f60\u73fe\u5728\u4e0d\u53ef\u4ee5\u50b3\u9001
Commands.ptp.NoWorldPermissions=[[RED]] [mcMMO]\u60a8\u6c92\u6709\u6b0a\u9650\u50b3\u9001\u5230\u6b64\u4e16\u754c{0}\u3002
Commands.ptp.Request1=[[YELLOW]]{0} [[GREEN]]\u5df2\u50b3\u9001\u81f3\u4f60\u65c1\u908a.
Commands.ptp.Request2=[[GREEN]]\u4f60\u50b3\u9001\u7684\u8a71\u8acb\u8f38\u5165[[YELLOW]]/ptp accept. [[GREEN]]\u5728[[RED]]{0} [[GREEN]]\u79d2\u5167\u5fc5\u9808\u5b8c\u6210
Commands.ptp.AcceptAny.Enabled=\u968a\u4f0d\u50b3\u9001\u8acb\u6c42\u78ba\u8a8d [[GREEN]]\u555f\u7528
Commands.ptp.AcceptAny.Disabled=\u968a\u4f0d\u50b3\u9001\u8acb\u6c42\u78ba\u8a8d[[RED]]\u7981\u7528
Commands.ptp.RequestExpired=[[RED]]\u968a\u4f0d\u50b3\u9001\u5df2\u6210\u529f!
Commands.PowerLevel.Leaderboard=[[YELLOW]]--mcMMO[[BLUE]] \u80fd\u529b\u7b49\u7d1a [[YELLOW]]\u6392\u884c\u699c--
Commands.PowerLevel.Capped=[[DARK_RED]]\u80fd\u529b\u7b49\u7d1a: [[GREEN]]{0} [[DARK_RED]]\u6700\u9ad8\u7b49\u7d1a: [[YELLOW]]{1}
@@ -410,35 +442,37 @@ Commands.SkillInfo=/<skill> [[RED]]- \u67e5\u770b\u6280\u80fd\u7684\u8a73\u7ec6\
Commands.Stats.Self=\u4f60\u7684\u8a0a\u606f
Commands.Stats=[[RED]]- \u67e5\u770b\u4f60\u7684mcMMO\u7d71\u8a08\u8a0a\u606f
Commands.ToggleAbility=[[RED]]- \u7528\u6ed1\u9f20\u53f3\u9375\u5207\u63db\u6280\u80fd\u4f7f\u7528\u6a21\u5f0f
Commands.Usage.0=[RED]]\u6b63\u78ba\u4f7f\u7528/ {0}
Commands.Usage.0=[[RED]]\u6b63\u78ba\u7528\u6cd5\u70ba/{0}
Commands.Usage.1=[[RED]]\u8acb\u8f38\u5165 /{0} {1}
Commands.Usage.2=[[RED]]\u8acb\u8f38\u5165 /{0} {1} {2}
Commands.Usage.3=[[RED]]\u8acb\u8f38\u5165 /{0} {1} {2} {3}
Commands.Usage.Level=\u7b49\u7d1a
Commands.Usage.Message=\u8a0a\u606f
Commands.Usage.Page=\u9801\u6578
Commands.Usage.PartyName=<FONT> <FONT>\u540d\u7a31</ FONT> </ FONT>
Commands.Usage.PartyName=\u540d\u7a31
Commands.Usage.Password=\u5bc6\u78bc
Commands.Usage.Player=\u73a9\u5bb6
Commands.Usage.Rate=\u6a5f\u7387
Commands.Usage.Skill=\u6280\u80fd
Commands.Usage.XP=\u7d93\u9a57\u503c
mcMMO.NoInvites=[[RED]]\u4f60\u6c92\u6709\u6536\u5230\u4efb\u4f55\u968a\u4f0d\u9080\u8acb
mcMMO.NoPermission=[[DARK_RED]]\u6b0a\u9650\u4e0d\u8db3
mcMMO.NoSkillNote=[[DARK_GRAY]]\u5982\u679c\u4f60\u7121\u6cd5\u4f7f\u7528\u90a3\u4e9b\u6280\u80fd\u5c31\u4e0d\u6703\u51fa\u73fe\u5728\u9019\u88e1
Party.Forbidden=[mcMMO] \u968a\u4f0d\u529f\u80fd\u4e0d\u5141\u8a31\u5728\u9019\u4e16\u754c\u958b\u555f (\u8acb\u89c0\u770b\u6b0a\u9650\u8a2d\u5b9a)
Party.Help.0=[RED]]\u6b63\u78ba\u4f7f\u7528[DARK_AQUA] {0} <player> [\u5bc6\u78bc]\u3002
Party.Help.1=[RED]]\u8981\u5275\u5efa\u4e00\u500b\u968a\u4f0d\uff0c\u8acb\u4f7f\u7528[DARK_AQUA] {0} <\u540d\u7a31> [\u5bc6\u78bc]\u3002
Party.Help.0=[[RED]]\u6b63\u78ba\u7528\u6cd5\u70ba[[DARK_AQUA]]{0} <player> [password].
Party.Help.1=[[RED]]\u8981\u5275\u5efa\u4e00\u500b\u968a\u4f0d\uff0c\u8acb\u4f7f\u7528[[DARK_AQUA]] {0} <name> [password].
Party.Help.2=[[RED]]\u66f4\u591a\u8cc7\u8a0a\u8acb\u8aee\u8a62[[DARK_AQUA]]{0}
Party.Help.3=[[RED]]\u4f7f\u7528 [[DARK_AQUA]]{0} <player> [password] [[RED]]\u4f86\u52a0\u5165\u6216\u4f7f\u7528 [[DARK_AQUA]]{1} [[RED]]\u4f86\u96e2\u958b
Party.Help.4=[RED]]\u8981\u9396\u5b9a\u6216\u89e3\u9396\u4f60\u7684\u968a\u4f0d\uff0c\u4f7f\u7528[DARK_AQUA]] {0}
Party.Help.5=[[RED]]\u4f7f\u7528\u5bc6\u78bc\u4fdd\u8b77\u4f60\u7684\u968a\u4f0d\uff0c\u8acb\u4f7f\u7528[DARK_AQUA] {0}<\u5bc6\u78bc>
Party.Help.6=[[RED]]\u8981\u8e22\u7684\u7403\u54e1\u5f9e\u968a\u4f0d\u4e2d\uff0c\u4f7f\u7528[DARK_AQUA] {0} <player>
Party.Help.7=[RED]]\u8981\u8cb4\u968a\u4f0d\u7684\u6240\u6709\u6b0a\u8f49\u79fb\uff0c\u4f7f\u7528[DARK_AQUA] {0} <player>
Party.Help.8=[RED]\u8981\u89e3\u6563\u968a\u4f0d\uff0c\u4f7f\u7528[DARK_AQUA] {0}
Party.Help.4=[RED]]\u6b32\u9396\u5b9a\u6216\u89e3\u9396\u4f60\u7684\u968a\u4f0d\uff0c\u4f7f\u7528[[DARK_AQUA]] {0}
Party.Help.5=[[RED]]\u6b32\u4f7f\u7528\u5bc6\u78bc\u4fdd\u8b77\u4f60\u7684\u968a\u4f0d\uff0c\u8acb\u4f7f\u7528[[DARK_AQUA]] {0}<password>
Party.Help.6=[[RED]]\u8981\u5f9e\u968a\u4f0d\u4e2d\u8e22\u6389\u6210\u54e1\uff0c\u4f7f\u7528[[DARK_AQUA]] {0} <player>
Party.Help.7=[[RED]]\u8981\u8f49\u79fb\u4f60\u7684\u968a\u4f0d\u6240\u6709\u6b0a\uff0c\u4f7f\u7528[[DARK_AQUA]] {0} <player>
Party.Help.8=[[RED]]\u8981\u89e3\u6563\u968a\u4f0d\uff0c\u4f7f\u7528[[DARK_AQUA]] {0}
Party.InformedOnJoin={0} [[GREEN]]\u52a0\u5165\u4e86\u4f60\u7684\u968a\u4f0d
Party.InformedOnQuit={0} [[GREEN]]\u96e2\u958b\u4e86\u4f60\u7684\u968a\u4f0d
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]\u5c07\u968a\u4f0d\u540d\u7a31\u8a2d\u5b9a\u70ba [[WHITE]]{1}
Party.InvalidName=[[DARK_RED]]\u90a3\u4e0d\u662f\u4e00\u500b\u6709\u6548\u7684\u968a\u4f0d\u540d\u7a31.
Party.Invite.Self=[RED]\u4f60\u80fd\u4e0d\u80fd\u9080\u8acb\u81ea\u5df1\uff01
Party.Invite.Self=[[RED]]\u4f60\u80fd\u4e0d\u80fd\u9080\u8acb\u81ea\u5df1\uff01
Party.IsLocked=[[RED]]\u9019\u500b\u968a\u4f0d\u5df2\u7d93\u9396\u5b9a\u4e86!
Party.IsntLocked=[[RED]]\u9019\u500b\u968a\u4f0d\u4e26\u6c92\u6709\u9396\u5b9a!
Party.Locked=[[RED]]\u9019\u500b\u968a\u4f0d\u5df2\u9396\u5b9a!\u53ea\u6709\u968a\u9577\u53ef\u4ee5\u9080\u8acb!
@@ -447,7 +481,7 @@ Party.NotOwner=[[DARK_RED]]\u4f60\u4e26\u975e\u968a\u9577.
Party.Owner.New=[[GREEN]]{0} \u6210\u70ba\u65b0\u968a\u9577.
Party.Owner.NotLeader=[[DARK_RED]]\u56e0\u9592\u7f6e\u904e\u4e45,\u968a\u9577\u81ea\u52d5\u8f49\u8b93.
Party.Owner.Player=[[GREEN]]\u4f60\u6210\u70ba\u4e86\u968a\u9577.
Party.Password.None=[RED]\u9019\u500b\u968a\u4f0d\u662f\u6709\u5bc6\u78bc\u4fdd\u8b77\u7684\u3002\u8acb\u63d0\u4f9b\u5bc6\u78bc\u624d\u80fd\u52a0\u5165\u3002
Party.Password.None=[[RED]]\u9019\u500b\u968a\u4f0d\u6709\u5bc6\u78bc\u4fdd\u8b77. \u8acb\u63d0\u4f9b\u5bc6\u78bc\u4f86\u52a0\u5165.
Party.Password.Incorrect=[[RED]]\u968a\u4f0d\u5bc6\u78bc\u932f\u8aa4.
Party.Password.Set=[[GREEN]]\u968a\u4f0d\u5bc6\u78bc\u8a2d\u5b9a\u70ba {0}
Party.Password.Removed=[[GREEN]]\u968a\u4f0d\u5bc6\u78bc\u5df2\u522a\u9664.
@@ -457,11 +491,12 @@ Party.Player.InSameParty=[[RED]]{0} \u5df2\u7d93\u5728\u4f60\u968a\u4f0d\u88e1\u
Party.PlayerNotInParty=[[DARK_RED]]{0} \u5df2\u4e0d\u5728\u4f60\u7684\u5718\u968a
Party.Specify=[RED]\u60a8\u5fc5\u9808\u6307\u5b9a\u4e00\u500b\u968a\u4f0d\u3002
Party.Teleport.Dead=[[RED]]\u4f60\u4e0d\u80fd\u50b3\u9001\u81f3\u6b7b\u4ea1\u7684\u73a9\u5bb6\u65c1
Party.Teleport.Hurt=[[RED]]\u4f60\u5728{0}\u79d2\u524d\u88ab\u653b\u64ca\u6240\u4ee5\u7121\u6cd5\u50b3\u9001.
Party.Teleport.Player=[[GREEN]]\u4f60\u5df2\u7d93\u50b3\u9001\u5230 {0}.
Party.Teleport.Self=[[RED]]\u4f60\u7121\u6cd5\u50b3\u9001\u5230\u4f60\u81ea\u5df1\u8eab\u65c1!
Party.Teleport.Target=[[GREEN]]{0} \u5df2\u7d93\u50b3\u9001\u5230\u4f60\u8eab\u908a
Party.Teleport.Target=[[GREEN]]{0} \u5df2\u7d93\u50b3\u9001\u5230\u4f60\u8eab\u908a.
Party.Teleport.Disabled=[[RED]]{0} \u4e0d\u5141\u8a31\u968a\u4f0d\u50b3\u9001.
Party.Rename.Same=[RED]] {0}\u4f60\u5df2\u7d93\u5728\u968a\u4f0d\u88e1\u4e86\uff01
Party.Rename.Same=[[RED]] {0}\u4f60\u7684\u968a\u4f0d\u5df2\u7d93\u662f\u9019\u500b\u540d\u5b57\u4e86!
Party.Join.Self=[RED]\u4e0d\u80fd\u52a0\u5165\u4f60\u81ea\u5df1\uff01
Party.Unlocked=[[GRAY]]\u968a\u4f0d\u4ee5\u89e3\u9396!
Party.Disband=[[GRAY]]\u968a\u4f0d\u5df2\u89e3\u6563
@@ -470,11 +505,14 @@ Party.Status.Unlocked=[[DARK_GREEN]](\u958b\u555f)
Party.ShareType.Exp=\u7d93\u9a57\u503c
Party.ShareType.Item=\u7269\u54c1
Party.ShareMode.None=\u7121
Party.ShareMode.Equal=\u5e73\u5206
Party.ShareMode.Random=\u96a8\u6a5f
Party.ExpShare.Disabled=<FONT> <FONT> [RED]\u968a\u4f0d\u7684\u7d93\u9a57\u5171\u4eab\u88ab\u7981\u7528\u3002</ FONT> </ FONT>
Party.ExpShare.Disabled=[[RED]]\u968a\u4f0d\u7d93\u9a57\u5171\u4eab\u5df2\u505c\u7528.
Party.ItemShare.Disabled=[[RED]]\u968a\u4f0d\u7684\u7269\u54c1\u5206\u4eab\u95dc\u9589.
Commands.XPGain.Acrobatics=\u6389\u843d
Commands.XPGain.Archery=\u653b\u64ca\u602a\u7269
Commands.XPGain.Axes=\u653b\u64ca\u602a\u7269
Commands.XPGain.Child=\u5f9e\u524d\u7f6e\u6280\u80fd\u7372\u53d6\u7b49\u7d1a
Commands.XPGain.Excavation=\u6316\u5230\u5bf6\u7269
Commands.XPGain.Fishing=\u91e3\u9b5a!(\u53bb\u60f3\u60f3\u5427!)
Commands.XPGain.Herbalism=\u6536\u7a6b\u8fb2\u4f5c\u7269
@@ -500,12 +538,24 @@ Effects.Child=[[DARK_GRAY]]\u7b49\u7d1a: [[GREEN]]{0}
Effects.Level=[[DARK_GRAY]]\u7b49\u7d1a: [[GREEN]]{0} [[DARK_AQUA]]\u7d93\u9a57\u503c[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Parent=[[GOLD]]{0} -
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Excavation=[[DARK_AQUA]]About Excavation:\n[[YELLOW]]Excavation is the act of digging up dirt to find treasures.\n[[YELLOW]]By excavating the land you will find treasures.\n[[YELLOW]]The more you do this the more treasures you can find.\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill you must dig with a shovel in hand.\n[[YELLOW]]Only certain materials can be dug up for treasures and XP.\n[[DARK_AQUA]]Compatible Materials:\n[[YELLOW]]Grass, Dirt, Sand, Clay, Gravel, Mycelium, Soul Sand\n[[DARK_AQUA]]How to use Giga Drill Breaker:\n[[YELLOW]]With a shovel in hand right click to ready your tool.\n[[YELLOW]]Once in this state you have about 4 seconds to make\n[[YELLOW]]contact with Excavation compatible materials this will\n[[YELLOW]]activate Giga Drill Breaker.\n[[DARK_AQUA]]What is Giga Drill Breaker?\n[[YELLOW]]Giga Drill Breaker is an ability with a cooldown\n[[YELLOW]]tied to Excavation skill. It triples your chance\n[[YELLOW]]of finding treasures and enables instant break\n[[YELLOW]]on Excavation materials.\n[[DARK_AQUA]]How does Treasure Hunter work?\n[[YELLOW]]Every possible treasure for Excavation has its own\n[[YELLOW]]skill level requirement for it to drop, as a result it\'s\n[[YELLOW]]difficult to say how much it is helping you.\n[[YELLOW]]Just keep in mind that the higher your Excavation skill\n[[YELLOW]]is, the more treasures that can be found.\n[[YELLOW]]And also keep in mind that each type of Excavation\n[[YELLOW]]compatible material has its own unique list of treasures.\n[[YELLOW]]In other words you will find different treasures in Dirt\n[[YELLOW]]than you would in Gravel.\n[[DARK_AQUA]]Notes about Excavation:\n[[YELLOW]]Excavation drops are completely customizeable\n[[YELLOW]]So results vary server to server.
Guides.Acrobatics=[[DARK_AQUA]]\u95dc\u65bc\u96dc\u6280:\n[[YELLOW]]\u96dc\u6280\u53ef\u4ee5\u8b93\u4f60\u5728MMO\u88e1\u73a9\u5f97\u5f88\u512a\u96c5.\n[[YELLOW]]\u5b83\u53ef\u4ee5\u8b93\u4f60\u5728\u6230\u9b25\u4e2d\u53ca\u74b0\u5883\u4e2d\u53d6\u5f97\u512a\u52e2.\n[[DARK_AQUA]]\u7d93\u9a57\u5982\u4f55\u7372\u53d6:\n[[YELLOW]]\u5728\u6230\u9b25\u4e2d\u9583\u8eb2\u653b\u64ca\u6216\u5f9e\u9ad8\u8655\u589c\u843d\n[[YELLOW]]\u53ef\u4ee5\u7372\u5f97\u7d93\u9a57.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6efe\u5730?\n[[YELLOW]]\u4f60\u6709\u4e00\u5b9a\u7684\u6a5f\u7387\u53ef\u4ee5\u6e1b\u514d\u5f9e\u9ad8\u8655\u589c\u843d\n[[YELLOW]]\u7684\u50b7\u5bb3. \u4f60\u53ef\u4ee5\u6309\u4f4f\u6f5b\u884c\u9375(\u9810\u8a2dshift)\n[[YELLOW]]\u5c07\u64c1\u6709\u96d9\u500d\u7684\u6efe\u5730\u6a5f\u7387.\n[[YELLOW]]\u9019\u5c07\u89f8\u767c\u5b8c\u7f8e\u8457\u9678.\n[[YELLOW]]\u5b8c\u7f8e\u8457\u9678\u6548\u679c\u8207\u6efe\u5730\u985e\u4f3c,\u53ea\u662f\u6709\u5169\u500d\n[[YELLOW]]\u7684\u89f8\u767c\u6a5f\u7387\u4e14\u53ef\u6e1b\u514d\u66f4\u591a\u50b7\u5bb3.\n[[YELLOW]]\u6efe\u5730\u6a5f\u7387\u95dc\u4fc2\u5230\u4f60\u7684\u96dc\u6280\u7b49\u7d1a.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8ff4\u907f?\n[[YELLOW]]\u8ff4\u907f\u662f\u6709\u6a5f\u7387\u6e1b\u514d\u5728\u6230\u9b25\u4e2d\n[[YELLOW]]\u6575\u4eba\u5c0d\u4f60\u7684\u50b7\u5bb3.\n[[YELLOW]]\u9019\u6a5f\u7387\u95dc\u4fc2\u5230\u4f60\u7684\u96dc\u6280\u7b49\u7d1a.
Guides.Archery=[[DARK_AQUA]]\u5c04\u85dd:\n[[YELLOW]]\u5c04\u85dd\u662f\u7528\u5f13\u5c04\u7bad\u7684\u6280\u80fd.\n[[YELLOW]]\u5c04\u85dd\u6709\u5404\u7a2e\u52a0\u4e58\u6548\u679c,\u5982\u52a0\u4e58\u653b\u64ca\n[[YELLOW]]\u6688\u7729\u5c0d\u624b\u7b49\u6548\u679c.\n[[YELLOW]]\u6b64\u5916\u4f60\u4e5f\u6709\u6a5f\u7387\u56de\u6536\u5df2\u7d93\u5c04\u4e2d\u6575\u4eba\u7684\u7bad\n[[YELLOW]]\u4ee5\u4e0a\u6a5f\u7387\u95dc\u4fc2\u5230\u7b49\u7d1a.\n[[DARK_AQUA]]\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u8981\u7372\u5f97\u7d93\u9a57\u5fc5\u9808\u7528\u5f13\u5c04\u4e2d\u602a\u7269\u6216\u73a9\u5bb6\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u5f13\u7bad\u719f\u7df4?\n[[YELLOW]]\u5f13\u7bad\u719f\u7df4\u5c07\u52a0\u4e58\u4f60\u7684\u5c04\u7bad\u57fa\u672c\u653b\u64ca\u529b.\n[[YELLOW]]\u52a0\u4e58\u7a0b\u5ea6\u95dc\u4fc2\u5230\u4f60\u7684\u5c04\u85dd\u7b49\u7d1a.\n[[YELLOW]]\n[[YELLOW]]\u9810\u8a2d\u4e2d\u6bcf\u534750\u7d1a\u52a0\u4e5810%\u653b\u64ca\u529b,\u6700\u9ad8200%\u52a0\u4e58.\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6688\u7729\u6548\u679c?\n[[YELLOW]]\u4f60\u6709\u88ab\u52d5\u6a5f\u7387\u4f7f\u76ee\u6a19\u6688\u7729\n[[YELLOW]]\u6688\u7729\u6548\u679c\u6709\u52a0\u4e584\u9ede\u50b7\u5bb3(2\u5fc3)\n[[YELLOW]]\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u7bad\u56de\u6536?\n[[YELLOW]]\u4f60\u6709\u6a5f\u7387\u5728\u6bba\u6b7b\u602a\u7269\u5f8c\u56de\u6536\u5c04\u51fa\u53bb\u7684\u7bad.\n[[YELLOW]]\u6a5f\u7387\u95dc\u4fc2\u5230\u4f60\u7684\u5c04\u85dd\u7b49\u7d1a.\n[[YELLOW]]\u9810\u8a2d\u4e2d,\u6bcf\u5347\u4e00\u7b49\u589e\u52a00.1%\u6a5f\u7387\n[[YELLOW]]\n[[YELLOW]]
Guides.Axes=[[DARK_AQUA]]\u95dc\u65bc\u64cd\u65a7\u8853:\n[[YELLOW]]\u6709\u4e86\u64cd\u65a7\u8853\u6280\u80fd, \u4f60\u5c31\u53ef\u4ee5\u4e0d\u5fc5\u53ea\u662f\u4e82\u63ee\u4e82\u780d\n[[YELLOW]]\u4f60\u53ef\u4ee5\u66f4\u6709\u6548\u5730\u64ca\u6bba\u53ef\u60e1\u7684\u602a\u7269\u5011!\n[[YELLOW]]\u800c\u4e14\u53ef\u4ee5\u5728\u63ee\u64ca\u6642\u70b8\u98db\u6216\u767c\u51fa\u81f4\u547d\u7684\u66b4\u64ca\n[[YELLOW]]\u4ee5\u91cd\u5275\u5c0d\u624b.\n[[YELLOW]]\u4f60\u7684\u65a7\u982d\u4e5f\u53ef\u4ee5\u6210\u70ba\u4e00\u53f0\u6bba\u4eba\u96fb\u92f8,\n[[YELLOW]]\u91cd\u5275\u5c0d\u624b\u7684\u88dd\u7532,\u96a8\u8457\u64cd\u65a7\u6280\u80fd\u5347\u9ad8\u800c\n[[YELLOW]]\u63d0\u5347\u6548\u679c.\n[[DARK_AQUA]]\u5982\u4f55\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u8981\u7372\u53d6\u7d93\u9a57\u4f60\u5fc5\u9808\u7528\u65a7\u982d\u653b\u64ca\u73a9\u5bb6\u6216\u602a\u7269\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u795e\u65a7\u9739\u9742?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd(\u7bc4\u570d\u6280).\n[[YELLOW]]\u9031\u906d\u88ab\u6ce2\u53ca\u7684\u50b7\u5bb3\u70ba\u4e3b\u8981\u76ee\u6a19\u7684\u4e00\u534a\n[[YELLOW]]\u662f\u5c0d\u4ed8\u7fa4\u6bc6\u7684\u5fc5\u5099\u7d55\u62db.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u66b4\u64ca?\n[[YELLOW]]\u66b4\u64ca\u662f\u4e00\u500b\u53ef\u4ee5\u9020\u6210\u52a0\u4e58\u50b7\u5bb3\u7684\u88ab\u52d5\u6280\u80fd.\n[[YELLOW]]\u9810\u8a2d\u64cd\u65a7\u8853\u6bcf\u5347\u5169\u7b49,\u53ef\u589e\u52a00.1%\u66b4\u64ca\u7387\n[[YELLOW]]\u5c0d\u602a\u7269\u67092\u500d\u653b\u64ca\u529b\u5c0d\u73a9\u5bb6\u67091.5\u500d\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u65a7\u6280\u719f\u7df4?\n[[YELLOW]]\u65a7\u6280\u719f\u7df4\u53ef\u4ee5\u52a0\u4e58\u65a7\u982d\u7684\u57fa\u672c\u653b\u64ca\u529b\n[[YELLOW]]\u9810\u8a2d\u4e2d\u6bcf50\u7b49\u589e\u52a01\u9ede\u50b7\u5bb3(\u534a\u5fc3)\n[[YELLOW]]200\u7b49\u9054\u5230\u6975\u96504\u9ede\u50b7\u5bb3.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u9632\u5177\u7834\u58de\u8005?\n[[YELLOW]]\u9632\u5177\u7834\u58de\u8005\u6709\u88ab\u52d5\u6a5f\u7387\u5c0d\u5c0d\u624b\u9632\u5177\u6709\u52a0\u4e58\u50b7\u5bb3!\n[[YELLOW]]\u50b7\u5bb3\u7a0b\u5ea6\u95dc\u4fc2\u5230\u4f60\u7684\u64cd\u65a7\u8853\u7b49\u7d1a.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u70b8\u98db\u5c0d\u624b?\n[[YELLOW]]\u5728\u653b\u64ca\u73a9\u5bb6\u6216\u602a\u7269\u6642\u6709\u88ab\u52d5\u6a5f\u7387\u70b8\u98db\u5c0d\u624b\n[[YELLOW]]\u9810\u8a2d\u6a5f\u7387\u70ba25%. \u70b8\u98db\u6548\u679c\u76f8\u7576\u65bc\u64ca\u9000II\u7684\u9644\u9b54\n[[YELLOW]]\u5916\u52a0\u5c0d\u76ee\u6a19\u7684\u52a0\u4e58\u653b\u64ca.
Guides.Available=[[DARK_AQUA]] \u95dc\u65bc{0}\u7684\u89e3\u8aaa - \u6253 /{1} ? [\u9801\u6578]
Guides.Excavation=[[DARK_AQUA]]\u95dc\u65bc\u6316\u6398:\n[[YELLOW]]\u6316\u6398\u662f\u4e00\u500b\u95dc\u65bc\u6316\u571f\u8207\u6316\u5bf6\u7684\u6280\u80fd.\n[[YELLOW]]\u6316\u6398\u5730\u9762\u53ef\u4ee5\u627e\u5230\u5bf6\u7269.\n[[YELLOW]]\u6316\u6108\u591a\u5bf6\u7269\u6108\u591a.\n[[DARK_AQUA]]\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u8981\u7372\u53d6\u7d93\u9a57\u5fc5\u9808\u6301\u6709\u93df\u5b50.\n[[YELLOW]]\u53ea\u6709\u7279\u5b9a\u7269\u8cea\u624d\u80fd\u6316\u5230\u5bf6\u7269\u6216\u7d93\u9a57.\n[[DARK_AQUA]]\u7279\u5b9a\u7269\u8cea:\n[[YELLOW]]\u8349\u76ae, \u571f, \u6c99, \u9ecf\u571f, \u792b\u77f3, \u83cc\u7d72\u9ad4, \u9748\u9b42\u6c99\n[[DARK_AQUA]]\u5982\u4f55\u7528\u8d85\u5f37\u529b\u947d\u982d:\n[[YELLOW]]\u624b\u6301\u93df\u5b50\u4e26\u9ede\u53f3\u9375.\n[[YELLOW]]\u9032\u5165\u6b64\u72c0\u614b\u7d04\u80fd\u7dad\u63014\u79d2\n[[YELLOW]]\u4e00\u65e6\u63a5\u89f8\u5230\u7279\u5b9a\u6750\u8cea\u4fbf\u80fd\n[[YELLOW]]\u89f8\u767c\u8d85\u5f37\u529b\u947d\u982d.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8d85\u5f37\u529b\u947d\u982d?\n[[YELLOW]]\u8d85\u5f37\u529b\u947d\u982d\u662f\u4e3b\u52d5\u6280\u80fd,\u6301\u7e8c\u6642\u9593\u95dc\u4fc2\u5230\n[[YELLOW]]\u6316\u6398\u6280\u80fd\u7b49\u7d1a,\u5b83\u53ef\u4ee5\u8b93\u4f60\u6709\u6a5f\u7387\u7372\u5f97\u5bf6\u7269\n[[YELLOW]]\u9084\u6709\u76f4\u63a5\u6467\u6bc0\u6307\u5b9a\u65b9\u584a.\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u5bf6\u7269\u7375\u4eba?\n[[YELLOW]]\u6240\u6709\u5bf6\u7269\u90fd\u6709\u81ea\u5df1\u7684\u6700\u4f4e\u6389\u843d\u7b49\u7d1a\n[[YELLOW]]\u6240\u4ee5\u5bf6\u7269\u5c0d\u4f60\u4e0d\u898b\u5f97\u6709\u7528.\n[[YELLOW]]\u53ea\u9700\u8981\u8a18\u5f97\u6108\u6316\u6398\u7b49\u7d1a\u6108\u9ad8,\n[[YELLOW]]\u5c31\u80fd\u6316\u9053\u6108\u591a\u5bf6.\n[[YELLOW]]\u9084\u6709\u6bcf\u4e00\u7a2e\u4e0d\u540c\u7684\u6750\u8cea,\n[[YELLOW]]\u53ef\u80fd\u6389\u51fa\u4f86\u7684\u5bf6\u7269\u90fd\u4e0d\u540c\n[[YELLOW]]\u63db\u53e5\u8a71\u8aaa\u4f60\u80fd\u5f9e\u571f\u88e1\u6316\u51fa\u6bd4\u792b\u77f3\n[[YELLOW]]\u66f4\u591a\u7a2e\u985e\u7684\u5bf6\u7269.\n[[YELLOW]]\n[[DARK_AQUA]]\u8a3b:\n[[YELLOW]]\u5bf6\u7269\u6389\u843d\u662f\u53ef\u8abf\u6574\u7684,\n[[YELLOW]]\u6240\u4ee5\u53ef\u80fd\u5404\u4f3a\u670d\u5668\u6709\u6240\u4e0d\u540c.
Guides.Fishing=[[DARK_AQUA]]\u95dc\u65bc\u91e3\u9b5a:\n[[YELLOW]]\u6709\u4e86\u91e3\u9b5a\u6280\u80fd,\u91e3\u9b5a\u66f4\u6709\u8da3\u4e86!\n[[YELLOW]]\u53ef\u4ee5\u6389\u5bf6\u7269,\u5f9e\u602a\u7269\u8eab\u4e0a\u76dc\u5bf6\n[[DARK_AQUA]]\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u91e3\u9b5a.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u91e3\u5bf6\u7269?\n[[YELLOW]]\u9019\u500b\u6280\u80fd\u8b93\u4f60\u5728\u91e3\u9b5a\u6642\u91e3\u5230\u5bf6\u7269\n[[YELLOW]]\u6709\u5c0f\u6a5f\u7387\u91e3\u5230\u9644\u9b54\u9053\u5177.\n[[YELLOW]]\u6bcf\u7a2e\u5bf6\u7269\u7684\u51fa\u73fe\u95dc\u4fc2\u5230\n[[YELLOW]]\u4f60\u7684\u91e3\u9b5a\u7b49\u7d1a\n[[YELLOW]]\u91e3\u9b5a\u7b49\u7d1a\u6108\u9ad8\n[[YELLOW]]\u5c31\u80fd\u91e3\u9053\u6108\u591a\u6108\u597d\u7684\u5bf6\u7269\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u76dc\u5bf6?\n[[YELLOW]]\u9019\u500b\u6280\u80fd\u8b93\u4f60\u53ef\u4ee5\u5f9e\u602a\u7269\u8eab\u4e0a\u626f\u4e0b\u5bf6\u7269\n[[YELLOW]]\u53ea\u8981\u4f7f\u7528\u91e3\u7aff\u91e3\u602a\u7269\n[[YELLOW]]\u80fd\u91e3\u51fa\u602a\u7269\u6b7b\u4ea1\u6642\u6703\u6389\u7684\u5bf6\u7269.\n[[YELLOW]]\u9019\u6280\u80fd\u751a\u81f3\u80fd\u91e3\u51fa\u8eab\u5b58\u6a21\u5f0f\u7121\u6cd5\u7372\u5f97\u7684\n[[YELLOW]]\u602a\u7269\u982d\u9871.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6f01\u4eba\u4fbf\u7576?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd\u8b93\u4f60\u80fd\u5728\u5403\u9b5a\u6642\u6709\n[[YELLOW]]\u66f4\u591a\u7684\u98fd\u98df\u5ea6.\n[[DARK_AQUA]]\u8a3b:\n[[YELLOW]]\u6389\u843d\u8a2d\u5b9a\u662f\u53ef\u8abf\u6574\u7684,\n[[YELLOW]]\u5404\u4f3a\u670d\u5668\u53ef\u80fd\u6709\u6240\u4e0d\u540c.\n
Guides.Header=[[GOLD]]-=[[GREEN]]{0} \u6307\u5357[[GOLD]]=-
Guides.Herbalism=[[DARK_AQUA]]\u95dc\u65bc\u8349\u85e5\u5b78:\n[[YELLOW]]\u8349\u85e5\u5b78\u662f\u95dc\u65bc\u63a1\u6536\u8349\u85e5\u8207\u690d\u7269\u7684\u6280\u80fd..\n[[DARK_AQUA]]\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u63a1\u6536\u8349\u85e5\u6216\u690d\u7269.\n[[DARK_AQUA]]\u6307\u5b9a\u6750\u8cea\n[[YELLOW]]\u5c0f\u9ea5, \u99ac\u9234\u85af, \u80e1\u863f\u8514, \u897f\u74dc, \n[[YELLOW]]\u5357\u74dc, \u7518\u8517, \u53ef\u53ef\u8c46, \u82b1, \u4ed9\u4eba\u638c, \u9999\u83c7,\n[[YELLOW]]\u5730\u7344\u7599\u7629, \u84ee\u8449, \u8207\u85e4.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u7948\u79b1\u8c50\u6536?\n[[YELLOW]]\u7948\u79b1\u8c50\u6536\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd, \u624b\u6301\u92e4\u982d\n[[YELLOW]]\u9ede\u64ca\u53f3\u9375\u53ef\u767c\u52d5\u6280\u80fd.\n[[YELLOW]]\u7948\u79b1\u8c50\u6536\u63d0\u9ad8\u4e09\u88ab\u6536\u7a6b\u7684\u6a5f\u7387.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u7da0\u624b\u6307(\u4f5c\u7269)?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd,\u8b93\u4f5c\u7269\u5728\u63a1\u6536\u6642\n[[YELLOW]]\u81ea\u52d5\u7a2e\u56de\u53bb.\n[[YELLOW]]\u6210\u529f\u7387\u95dc\u4fc2\u5230\u4f60\u7684\u8349\u85e5\u5b78\u6280\u80fd\u7b49\u7d1a.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u7da0\u624b\u6307(\u5375\u77f3/\u77f3\u78da/\u571f)?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd,\u8b93\u4f60\u5728\u624b\u62ff\u8457\u7a2e\u5b50\u6642,\n[[YELLOW]]\u5c0d\u5375\u77f3/\u77f3\u78da/\u571f,\u9ede\u64ca\u53f3\u9375,\u53ef\u4f7f\u5b83\u5011\u8b8a\u6210\n[[YELLOW]]\u690d\u7269\u5f62\u614b,\u6703\u6d88\u8017\u4e00\u9846\u7a2e\u5b50.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8fb2\u592b\u79c1\u623f\u83dc?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd,\u53ef\u589e\u52a0\u4e0b\u5217\u98df\u7269\u7684\u98fd\u98df\u5ea6\u56de\u5fa9,\n[[YELLOW]]\u9eb5\u5305, \u9905\u4e7e, \u897f\u74dc, \u8611\u83c7\u6e6f, \u80e1\u863f\u8514,\u99ac\u9234\u85af.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6d77\u502b\u7684\u795d\u798f?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd,\u6709\u6a5f\u7387\u5728\u7528\u528d\u7834\u58de\u7279\u5b9a\n[[YELLOW]]\u65b9\u584a\u6642\u7372\u5f97\u7a00\u6709\u9053\u5177.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u96d9\u500d\u6389\u843d?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd\u4f7f\u73a9\u5bb6\u80fd\u52a0\u500d\u6536\u7372.
Guides.Mining=[[DARK_AQUA]]\u95dc\u65bc\u6316\u7926\u6280\u80fd:\n[[YELLOW]]\u6316\u7926\u6280\u80fd\u7531\u63a1\u77f3\u8207\u63a1\u7926\u7d44\u6210. \u5b83\u53ef\u4ee5\u8b93\n[[YELLOW]]\u6709\u6389\u843d\u7269\u6578\u91cf\u52a0\u4e58\u7684\u6a5f\u6703.\n[[DARK_AQUA]]\u5982\u4f55\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u8981\u589e\u8fd1\u6316\u7926\u6280\u80fd,\u4f60\u5fc5\u9808\u7528\u93ac\u5b50\u6316\u7926.\n[[YELLOW]]\u53ea\u6709\u6316\u6398\u6307\u5b9a\u7926\u7269\u80fd\u589e\u52a0\u7d93\u9a57.\n[[DARK_AQUA]]\u6307\u5b9a\u7926\u7269:\n[[YELLOW]]\u77f3\u982d, \u70ad\u7926\u8108, \u9435\u7926\u8108, \u91d1\u7926\u8108, \u947d\u77f3\u7926\u8108, \u7d05\u77f3\u7926\u8108,\n[[YELLOW]]\u9752\u91d1\u77f3\u7926\u8108, \u9ed1\u66dc\u77f3, \u9752\u82d4\u77f3, \u7d42\u754c\u77f3,\n[[YELLOW]]\u87a2\u5149\u77f3, \u9084\u6709\u5730\u7344\u77f3.\n[[DARK_AQUA]]\u5982\u4f55\u4f7f\u7528\u8d85\u7d1a\u6316\u6398:\n[[YELLOW]]\u624b\u62ff\u8457\u93ac\u5b50\u9ede\u6ed1\u9f20\u53f3\u9375\u4ee5\u6e96\u5099\u597d\u958b\u555f\u6280\u80fd.\n[[YELLOW]]\u4e00\u65e6\u958b\u555f\u6280\u80fd\u5c07\u6709\u6578\u79d2\u7684\u6642\u9593\u53ef\u4ee5\u8b93\u4f60\n[[YELLOW]]\u5feb\u901f\u7834\u58de\u6307\u5b9a\u7926\u7269,\u53ea\u6709\u6307\u5b9a\u7926\u7269\u53ef\u4ee5\n[[YELLOW]]\u89f8\u767c\u6280\u80fd.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8d85\u7d1a\u6316\u6398?\n[[YELLOW]]\u8d85\u7d1a\u6316\u6398\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd, \u51b7\u537b\u6642\u9593\u95dc\u4fc2\u5230\u4f60\u7684\u6316\u7926\n[[YELLOW]]\u6280\u80fd\u7b49\u7d1a. \u5b83\u53ef\u4ee5\u89f8\u767c\u66f4\u591a\u6389\u843d\u7269\u7684\u6a5f\u7387\n[[YELLOW]]\u800c\u4e14\u53ef\u4ee5\u76f4\u63a5\u7c89\u788e\u6307\u5b9a\u7926\u7269.\n[[DARK_AQUA]]\u5982\u4f55\u4f7f\u7528\u7206\u7834\u6316\u6398:\n[[YELLOW]]\u624b\u6301\u6253\u706b\u77f3, \u9810\u8a2d\u7531\u71e7\u77f3\u53ca\u9435\u9320\u7d44\u6210,\n[[YELLOW]]\u8e72\u4e0b\u4e26\u7528\u53f3\u9375\u9ede\u53caTNT. \u9019\u6703\u4f7fTNT\n[[YELLOW]]\u76f4\u63a5\u7206\u70b8, \u6700\u597d\u7ad9\u9060\u4e00\u9ede.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u7206\u7834\u6316\u6398?\n[[YELLOW]]\u7206\u7834\u6316\u6398\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd, \u51b7\u537b\u6642\u9593\u95dc\u4fc2\u5230\u4f60\u7684\u6316\u7926\n[[YELLOW]]\u6280\u80fd\u7b49\u7d1a. \u5b83\u53ef\u4ee5\u8b93\u4f60\u5728\u4f7f\u7528TNT\u6316\u7926\u77f3\u6709\u66f4\u591a\u798f\u5229\n[[YELLOW]]\u4e14\u53ef\u4ee5\u9059\u63a7\u5f15\u7206TNT. \u7206\u7834\u6316\u6398\u5206\u6210\u4e09\u90e8\u5206.\n[[YELLOW]]\u7b2c\u4e00\u90e8\u5206\u7a31\u70ba\u5de8\u5927\u7206\u7834, \u53ef\u4ee5\u64f4\u5927\u4f60\u7684\u7206\u7834\u7bc4\u570d.\n[[YELLOW]]\u7b2c\u4e8c\u90e8\u5206\u7a31\u70ba\u7206\u7834\u5c08\u5bb6, \u53ef\u4ee5\u6e1b\u514dTNT\u5c0d\u4f60\u7684\u50b7\u5bb3\n[[YELLOW]]\u7b2c\u4e09\u90e8\u5206\u7a31\u70ba\u7cbe\u6e96\u7206\u7834, \u589e\u52a0\u6389\u843d\u7269\u6578\u91cf, \u6e1b\u5c11\u5783\u573e\u6389\n[[YELLOW]]\u843d\u7269\u6578\u91cf, \u5f88\u68d2\u5427.
Guides.Page.Invalid=\u4e0d\u5b58\u5728\u7684\u9801\u6578
Guides.Page.OutOfRange=\u9019\u9801\u78bc\u4e0d\u5b58\u5728,\u7e3d\u5171\u53ea\u6709{0} \u9801.
Guides.Repair=[[DARK_AQUA]]\u4fee\u5fa9:\n[[YELLOW]]\u4fee\u5fa9\u6280\u80fd\u8b93\u4f60\u53ef\u4ee5\u4f7f\u7528\u9435\u78da(MMO\u9435\u7827)\n[[YELLOW]]\u4fee\u5fa9\u5de5\u5177,\u6216\u4f7f\u7528\u91d1\u78da\u56de\u6536\u5de5\u5177.\n[[DARK_AQUA]]\u7d93\u9a57\u7372\u53d6:\n[[YELLOW]]\u7528MMO\u9435\u7827\u4fee\u5fa9\u5de5\u5177.\n[[YELLOW]]\u9810\u8a2d\u662f\u9435\u78da.\n[[YELLOW]]\n[[DARK_AQUA]]\u5982\u4f55\u4fee\u5fa9?\n[[YELLOW]]\u624b\u6301\u8981\u4fee\u5fa9\u7684\u5de5\u5177\u5c0d\u9435\u78da\u9ede\u64ca\u53f3\u9375\n[[YELLOW]]\u6703\u6d88\u80171\u500b\u4e3b\u539f\u6599.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u4fee\u5fa9\u719f\u7df4?\n[[YELLOW]]\u55ae\u6b21\u4fee\u5fa9\u7684\u8010\u4e45\u5ea6\u52a0\u4e58.\n[[YELLOW]]\u9019\u95dc\u4fc2\u5230\u4f60\u7684\u4fee\u5fa9\u7b49\u7d1a.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8d85\u7d1a\u4fee\u5fa9?\n[[YELLOW]]\u8d85\u7d1a\u4fee\u5fa9\u662f\u88ab\u52d5\u6a5f\u7387\u4fee\u5fa9\u5169\u500d\u8010\u4e45\u5ea6.\n[[YELLOW]]\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u935b\u9020\u79d8\u8f9b?\n[[YELLOW]]\u935b\u9020\u79d8\u8f9b\u8b93\u4f60\u6709\u6a5f\u7387\u7559\u4f4f\u5de5\u5177\u7684\u9644\u9b54.\n[[YELLOW]]\u9644\u9b54\u53ef\u80fd\u5728\u4fee\u5fa9\u6642\u964d\u7d1a\u6216\u6d88\u5931.\n[[YELLOW]]\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u56de\u6536?\n[[YELLOW]]\u653e\u4e00\u500bMMO\u56de\u6536\u7827(\u9810\u8a2d\u91d1\u78da)\n[[YELLOW]]\u624b\u6301\u7121\u8017\u640d\u5de5\u5177\u5c0d\u91d1\u78da\u9ede\u53f3\u9375\u53ef\u5c07\u4e3b\u539f\u6599\u56de\u6536\n[[YELLOW]]\n[[YELLOW]]
Guides.Swords=[[DARK_AQUA]]:\u528d\u8853\n[[YELLOW]]\u9019\u500b\u6280\u80fd\u8b93\u4f60\u7528\u528d\u6230\u9b25\u6642\u6709\u52a0\u4e58\u6548\u679c.\n[[DARK_AQUA]]\u5982\u4f55\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u7d93\u9a57\u4f86\u81ea\u7528\u528d\u653b\u64ca\u602a\u7269\u6216\u73a9\u5bb6.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8ffd\u9b42\u596a\u547d\u528d?\n[[YELLOW]]\u8ffd\u9b42\u596a\u547d\u528d\u662f\u4e00\u500b\u6301\u528d\u6642\u6309\u53f3\u9375\u53ef\u767c\u52d5\u7684\u7bc4\u570d\u6280\n[[YELLOW]]\u540c\u6642\u52a0\u4e5825%\u7684\u653b\u64ca\u5229\u4e26\u9810\u8a2d\u8b93\u6575\u4eba\u6d41\u8840\u4e94\u6b21\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u9006\u9c57?\n[[YELLOW]]\u9006\u9c57\u662f\u88ab\u52d5\u6280\u80fd. \u7576\u88ab\u5c0d\u624b\u653b\u64ca\u6642,\n[[YELLOW]]\u4f60\u6709\u6a5f\u6703\u53cd\u5f4850%\u50b7\u5bb3\u7d66\u5c0d\u624b.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6d41\u8840?\n[[YELLOW]]\u6d41\u8840\u6bcf\u5169\u79d2\u50b7\u5bb3\u5c0d\u624b\u4e00\u6b21.\n[[YELLOW]]\u6548\u679c\u6642\u7e8c\u81f3\u6642\u9593\u505c\u6b62\u6216\u6b7b\u4ea1.\n[[YELLOW]]\u6301\u7e8c\u6642\u9593\u95dc\u4fc2\u5230\u4f60\u7684\u528d\u6280\u7b49\u7d1a.
Guides.Smelting=\u4e0b\u6b21\u9084\u6709...
Guides.Taming=[[DARK_AQUA]]\u8a13\u7378:\n[[YELLOW]]\u8a13\u7378\u6280\u80fd\u8b93\u73a9\u5bb6\u80fd\u5728\u7528\u72fc\u6230\u9b25\u6642\n[[YELLOW]]\u6642\u6709\u52a0\u4e58\u6548\u679c.\n[[DARK_AQUA]]\u7d93\u9a57\u7372\u53d6:\n[[YELLOW]]\u8981\u7372\u53d6\u7d93\u9a57,\u9808\u8a13\u670d\u72fc\u6216\u8c79\u8c93,\n[[YELLOW]]\u6216\u8207\u4f60\u7684\u72fc\u4e00\u540c\u6230\u9b25.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u91ce\u6027\u547c\u558a?\n[[YELLOW]]\u91ce\u6027\u547c\u558a\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd\u8b93\u4f60\n[[YELLOW]]\u53ef\u4ee5\u53ec\u559a\u4e00\u96bb\u72fc\u6216\u8c79\u8c93,\n[[YELLOW]]\u53ea\u8981\u624b\u630110\u8ddf\u9aa8\u982d\u6216\u751f\u9b5a,\u9ede\u5de6\u9375.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u52d5\u7269\u5b78?\n[[YELLOW]]\u52d5\u7269\u5b78\u8b93\u4f60\u80fd\u4e86\u7c21\u5bf5\u7269\u7684\u8fd1\u6cc1,\n[[YELLOW]]\u53ea\u8981\u5c0d\u5bf5\u7269\u9ede\u64ca\u5de6\u9375.\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u55dc\u8840\u653b\u64ca?\n[[YELLOW]]\u55dc\u8840\u653b\u64ca\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd,\u80fd\u9020\u6210\n[[YELLOW]]\u72fc\u7684\u653b\u64ca\u76ee\u6a19\u6709\u6a5f\u7387\u9677\u5165\u6d41\u8840\u72c0\u614b.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u54ac\u529b\u5f37\u5316?\n[[YELLOW]]\u54ac\u529b\u5f37\u5316\u4f7f\u72fc\u7684\u653b\u64ca\u529b\u96a8\u8457\u8a13\u7378\u7b49\u7d1a\n[[YELLOW]]\u589e\u52a0\u800c\u589e\u52a0.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u5371\u6a5f\u610f\u8b58?\n[[YELLOW]]\u9019\u500b\u88ab\u52d5\u6280\u80fd\u80fd\u8b93\u72fc\u5728\u9047\u5230\u5371\u96aa\u6642\n[[YELLOW]]\u8fc5\u901f\u56de\u5230\u4f60\u8eab\u908a,(\u5982\u4ed9\u4eba\u638c\u6216\u5ca9\u6f3f)\n[[YELLOW]]\u4e5f\u53ef\u4ee5\u6e1b\u514d\u6454\u843d\u50b7\u5bb3.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6bdb\u76ae\u5f37\u5316?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd\u80fd\u8b93\u72fc\n[[YELLOW]]\u53d7\u5230\u653b\u64ca\u6216\u71c3\u71d2\u6642\u6e1b\u514d\u50b7\u5bb3.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u7206\u70b8\u9632\u79a6?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd,\u8b93\u72fc\u7fa4\n[[YELLOW]]\u6e1b\u514d\u7206\u70b8\u50b7\u5bb3.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u5403\u73fe\u6210?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd,\u8b93\u72fc\u7fa4\u5728\u653b\u64ca\u6642\n[[YELLOW]]\u6709\u6a5f\u7387\u56de\u5fa9\u8840\u91cf.
Guides.Unarmed=[[DARK_AQUA]]\u7a7a\u624b\u9053:\n[[YELLOW]]\u7a7a\u624b\u9053\u8b93\u73a9\u5bb6\u5728\u4f7f\u7528\u62f3\u982d\u4f5c\u6230\u6642\u6709\n[[YELLOW]]\u5404\u7a2e\u52a0\u4e58\u6548\u679c.\n[[DARK_AQUA]]\u7d93\u9a57\u7372\u53d6:\n[[YELLOW]]\u5728\u7528\u624b\u653b\u64ca\u602a\u7269\u6216\u73a9\u5bb6\u6642\u53ef\u4ee5\u7372\u53d6\u7d93\u9a57.\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u9435\u7802\u638c?\n[[YELLOW]]\u9435\u7802\u638c\u662f\u4e3b\u52d5\u6280\u80fd,\u7a7a\u624b\u6642\u9ede\u64ca\u53f3\u9375\u767c\u52d5.\n[[YELLOW]]\u9435\u7802\u9577\u53ef\u4ee5\u52a0\u4e5850%\u5c0d\u65b9\u584a\u7684\u50b7\u5bb3,\n[[YELLOW]]\u4f7f\u4f60\u53ef\u4ee5\u8f15\u9b06\u7834\u58de\u8106\u5f31\u7269\u9ad4,\n[[YELLOW]]\u5982\u571f\u8207\u7802.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u91d1\u525b\u81c2?\n[[YELLOW]]\u91d1\u525b\u81c2\u80fd\u589e\u52a0\u5f92\u624b\u653b\u64ca\u602a\u7269\u6216\n[[YELLOW]]\u73a9\u5bb6\u7684\u5a01\u529b.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u7a7a\u624b\u596a\u7bad?\n[[YELLOW]]\u7a7a\u624b\u596a\u7bad\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd,\u8b93\u4f60\u6709\u6a5f\u7387\n[[YELLOW]]\u80fd\u64ca\u843d\u9ab7\u9acf\u7372\u73a9\u5bb6\u5c04\u5411\u4f60\u7684\u7bad.\n[[YELLOW]]\u7bad\u6703\u88ab\u64ca\u843d\u81f3\u5730\u9762.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8d85\u5f37\u63e1\u529b?\n[[YELLOW]]\u8d85\u5f37\u63e1\u529b\u53ef\u4ee5\u6709\u6a5f\u7387\u4f7f\u64ca\u843d\u6b66\u5668\u7121\u6548\u5316.\n[[YELLOW]]\u6a5f\u7387\u95dc\u4fc2\u5230\u7a7a\u624b\u9053\u6280\u80fd\u7b49\u7d1a,\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u64ca\u843d\u6b66\u5668?\n[[YELLOW]]\u9019\u500b\u88ab\u52d5\u6280\u80fd\u8b93\u73a9\u5bb6\u80fd\u64ca\u843d\n[[YELLOW]]\u76ee\u6a19\u7684\u88dd\u5099.
Guides.Usage=[[RED]]\u8acb\u8f38\u5165 /{0}
Guides.Woodcutting=[[DARK_AQUA]]\u95dc\u65bc\u4f10\u6728\u8853:\n[[YELLOW]]\u9019\u662f\u4f10\u6728\u76f8\u95dc\u7684\u6280\u80fd.\n[[DARK_AQUA]]\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u7834\u58de\u6a39\u5e79\u53ef\u7372\u53d6\u7d93\u9a57.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6a39\u6728\u8f5f\u70b8?\n[[YELLOW]]\u6a39\u6728\u8f5f\u70b8\u662f\u4e3b\u52d5\u6280\u80fd,\u6301\u6709\u65a7\u982d\u6642\u9ede\u53f3\u9375\n[[YELLOW]]\u53ef\u4ee5\u767c\u52d5.\u5c07\u5c0e\u81f4\u6574\u68f5\u6a39\u6728\u76f4\u63a5\u7834\u58de,\n[[YELLOW]]\u6240\u6709\u679d\u8449\u90fd\u5c07\u6389\u843d.\n[[YELLOW]]\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u79cb\u98a8\u6383\u843d\u8449?\n[[YELLOW]]\u79cb\u98a8\u6383\u843d\u8449\u662f\u4e00\u500b\u88ab\u52d5\u6280\u80fd,\n[[YELLOW]]\u7576\u4f60\u7528\u65a7\u982d\u7834\u58de\u6a39\u8449\u6642,\u6a39\u8449\u5c07\u76f4\u63a5\u6467\u6bc0\n[[YELLOW]]\u9019\u500b\u6280\u80fd\u9810\u8a2d\u5728100\u7b49\u958b\u653e.\n[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u96d9\u500d\u6389\u843d?\n[[YELLOW]]\u9019\u500b\u88ab\u52d5\u6280\u80fd\u53ef\u4ee5\u8b93\u4f60\u6709\u6a5f\u7387\u5728\u4f10\u6728\n[[YELLOW]]\u6642\u6a39\u6728\u6389\u843d\u66f4\u591a\u539f\u6728.
Inspect.Offline=[[RED]]\u4f60\u6c92\u6709\u67e5\u8a62\u96e2\u7dda\u73a9\u5bb6\u8a0a\u606f\u7684\u6b0a\u9650!
Inspect.OfflineStats=\u96e2\u7dda\u73a9\u5bb6\u7684 [mcMMO] \u7d71\u8a08\u8a0a\u606f [[YELLOW]]{0}
Inspect.Stats=[[GREEN]][mcMMO] \u7684\u7d71\u8a08\u8a0a\u606f [[YELLOW]]{0}
@@ -513,30 +563,39 @@ Inspect.TooFar=[[RED]]\u56e0\u8ddd\u96e2\u592a\u9060\u7121\u6cd5\u67e5\u770b\u90
Item.ChimaeraWing.Fail=**\u5947\u7f8e\u62c9\u4e4b\u7ffc\u4f7f\u7528\u5931\u6557\u4e86!**
Item.ChimaeraWing.Pass=**\u5947\u7f8e\u62c9\u4e4b\u7ffc**
Item.Injured.Wait=\u4f60\u904e\u5ea6\u75b2\u52de\u5fc5\u9808\u7b49\u5f85\u4e00\u6bb5\u6642\u9593\u5f8c\u624d\u53ef\u4f7f\u7528. [[YELLOW]]({0}s)
Skills.Child=[[GOLD]](\u5c0f\u5b69\u6280\u80fd)
Skills.Disarmed=[[DARK_RED]]\u4f60\u7684\u6b66\u5668\u88ab\u63a0\u596a\u4e86!
Skills.Child=[[GOLD]](\u5b50\u6280\u80fd)
Skills.Disarmed=[[DARK_RED]]\u4f60\u7684\u6b66\u5668\u88ab\u64ca\u843d!
Skills.Header=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]\u4f60\u9700\u8981\u66f4\u591a[[GRAY]]{0}
Skills.Parents=\u7236\u6bcd
Skills.Parents=\u524d\u7f6e
Skills.Stats=[[YELLOW]]{0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=[[RED]]\u6b64\u6280\u80fd\u6b63\u8655\u65bc\u51b7\u537b\u6642\u9593. [[YELLOW]]({0}s)
Stats.Header.Combat=[[GOLD]]-=\u683c\u9b25\u6280\u80fd=-
Stats.Header.Gathering=[[GOLD]]-=\u63a1\u96c6\u6280\u80fd=-
Stats.Header.Misc=[[GOLD]]-=\u96dc\u985e\u6280\u80fd=-
Stats.Own.Stats=[[GREEN]][mcMMO] \u7d71\u8a08\u8a0a\u606f
Stats.Own.Stats=[[GREEN]][mcMMO] \u72c0\u614b
Perks.xp.name=\u7d93\u9a57\u503c
Perks.xp.desc=\u7372\u5f97 {0}x \u7d93\u9a57\u503c
Perks.lucky.name=\u5e78\u904b
Perks.lucky.desc=\u7d66\u4e88 {0} \u6280\u80fd\u9ad8\u65bc33.3%\u4ee5\u4e0a\u7684\u6a5f\u7387\u89f8\u767c
Perks.lucky.desc.login=\u7d66\u4e88\u6280\u80fd\u9ad8\u65bc33.3%\u4ee5\u4e0a\u7684\u6a5f\u7387\u89f8\u767c
Perks.lucky.bonus=[[GOLD]] ({0}\u5f88\u8d70\u904b)
Perks.cooldowns.name=\u5feb\u901f\u56de\u5fa9
Perks.cooldowns.desc=\u6e1b\u5c11\u51b7\u537b\u6642\u9593 {0}
Perks.activationtime.name=\u8010\u529b
Perks.activationtime.desc=\u63d0\u9ad8\u80fd\u529b \u6301\u7e8c\u6642\u9593: {0} \u79d2
Perks.activationtime.bonus=[[GOLD]] ({0}\u8010\u4e45\u52a0\u4e58)
Hardcore.Player.Loss=[[GOLD]][mcMMO] [[DARK_RED]]\u4f60\u5728\u6b7b\u4ea1\u4e2d\u5931\u53bb\u4e86[[BLUE]]{0}[[DARK_RED]].
Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] \u592a\u5ae9\u5c0e\u81f4\u81f3\u4f60\u7121\u6cd5\u7372\u5f97\u4efb\u4f55\u80fd\u529b.
Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]\u4f60\u5077\u4e86 [[BLUE]]{0}[[DARK_AQUA]] \u7b49\u4f86\u81ea\u65bc[[YELLOW]]{1}.
Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] \u4e0d\u5141\u8a31\u5f9e\u4f60\u90a3\u596a\u53d6\u7d93\u9a57\u503c!
Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]] \u596a\u8d70\u4e86\u4f60 [[BLUE]]{1}[[DARK_RED]] \u7b49!
Hardcore.Disabled=[[GOLD]][mcMMO] \u786c\u6d3e\u6a21\u5f0f\u95dc\u9589.
Hardcore.Enabled=[[GOLD]][mcMMO]\u786c\u6d3e\u6a21\u5f0f\u958b\u555f.
Hardcore.PercentageChanged=[[GOLD]][mcMMO] \u72c0\u614b\u640d\u5931\u6bd4\u7387\u8abf\u6574\u81f3{0}.
Vampirism.Disabled=[[GOLD]][mcMMO] \u5438\u8840\u6a21\u5f0f\u95dc\u9589
Vampirism.Enabled=[[GOLD]][mcMMO] \u5438\u8840\u6a21\u5f0f\u958b\u555f
Vampirism.PercentageChanged=[[GOLD]][mcMMO] \u72c0\u614b\u5438\u53d6\u6bd4\u4f8b\u8abf\u6574\u81f3{0}.
Spout.Donate=[[YELLOW]] [mcMMO\u6350\u52a9\uff01
Spout.LevelUp.1=[[GREEN]]\u5347\u7d1a!
Spout.LevelUp.2=[[YELLOW]]{0}[[DARK_AQUA]] ([[GREEN]]{1}[[DARK_AQUA]])
@@ -546,28 +605,56 @@ Spout.Menu.HudButton.1=HUD\u985e\u578b: {0}
Spout.Menu.HudButton.2=\u66f4\u63db\u4f60\u7684HUD\u985e\u578b!
Spout.Menu.Title=[[GOLD]]~mcMMO \u9078\u55ae~
Spout.Title={0}\n[[YELLOW]]P[[GOLD]]\u7b49\u7d1a[[WHITE]].[[GREEN]]{1}
MOTD.Donate=[[DARK_AQUA]]\u8d0a\u52a9\u8cc7\u8a0a:
MOTD.Hardcore.VampireOff=[[GOLD]][mcMMO] [[DARK_RED]]\u6b63\u7248 & \u5438\u8840\u9b3c \u555f\u7528.
MOTD.Hardcore.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]\u6b7b\u4ea1\u6280\u80fd\u61f2\u7f70: [[DARK_RED]]{0}%
MOTD.Hardcore.VampireOn=[[GOLD]][mcMMO] [[DARK_RED]]\u6b63\u7248\u6a21\u5f0f\u958b\u555f.
MOTD.PerksPrefix=[[RED]][mcMMO \u984d\u5916\u734e\u52f5]
MOTD.Vampire.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]\u5438\u8840\u8005\u9b3c\u7d71\u8a08: [[DARK_RED]]{0}%
MOTD.Version=[[GOLD]][mcMMO] \u6b63\u904b\u4f5c\u7684\u7248\u672c [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO \u9996\u9801
Smelting.Ability.FluxMining=[[RED]]\u9ad8\u71b1\u6316\u6398\u6a5f\u7387: [[YELLOW]]{0}
Smelting.Ability.FuelEfficiency=[[RED]]\u71c3\u71d2\u6548\u7387\u52a0\u4e58: [[YELLOW]]{0}x
Smelting.Ability.Locked.0=\u9396\u5b9a\u72c0\u614b\uff0c\u76f4\u5230{0} +\u6280\u80fd\uff08VANILLA XP BOOST\uff09
Smelting.Ability.Locked.1=\u9396\u5b9a\u72c0\u614b\uff0c\u76f4\u5230{0} +\u6280\u80fd\uff08FLUX\u7926\u696d\uff09
Smelting.Effect.6=Flux \u6316\u7926
Smelting.Ability.SecondSmelt=[[RED]]\u518d\u51b6\u7149\u6a5f\u7387: [[YELLOW]]{0}
Smelting.Ability.VanillaXPBoost=[[RED]]\u4e00\u822c\u7d93\u9a57\u52a0\u4e58: [[YELLOW]]{0}x
Smelting.Effect.0=\u71c3\u6599\u6548\u7387
Smelting.Effect.1=\u589e\u52a0\u71c3\u6599\u5728\u7194\u7210\u88e1\u71c3\u71d2\u7684\u6642\u9593
Smelting.Effect.2=\u518d\u51b6\u7149
Smelting.Effect.3=\u51b6\u7149\u7926\u7269\u52a0\u500d
Smelting.Effect.4=\u4e00\u822c\u7d93\u9a57\u52a0\u4e58
Smelting.Effect.5=\u589e\u52a0\u51b6\u7149\u6642\u7684\u9999\u8349\u7d93\u9a57
Smelting.Effect.6=\u6d41\u80fd\u6316\u7926
Smelting.Effect.7=\u6316\u539f\u7926\u6642\u6709\u6a5f\u7387\u76f4\u63a5\u6389\u51fa\u51b6\u7149\u597d\u7684\u7926\u7269
Smelting.FluxMining.Success=[[GREEN]]\u7926\u7269\u81ea\u52d5\u51b6\u7149!
Smelting.Listener=\u51b6\u7149:
Smelting.SkillName=\u51b6\u7149
Commands.Description.addlevels=\u7d66\u4e88\u73a9\u5bb6McMMO\u7b49\u7d1a
Commands.Description.adminchat=<FONT> <font class=\"\">\u5207\u63dbmcMMO\u7ba1\u7406\u804a\u5929\u958b/\u95dc\u6216\u767c\u9001\u7d66\u7ba1\u7406\u54e1\u7684\u804a\u5929\u6d88\u606f</ FONT> </ FONT>
Commands.Description.addxp=\u7d66\u4e88\u73a9\u5bb6McMMO\u7d93\u9a57\u503c
Commands.Description.mcgod=\u5207\u63db\u795e\u4e4b\u6a21\u5f0f on/off
Commands.Description.mchud=\u66f4\u63db\u4f60\u7684McMMO HUD\u985e\u578b!
Commands.Description.mcmmo=\u986f\u793a\u4e00\u500bmcMMO\u7684\u7c21\u55ae\u63cf\u8ff0
Commands.Description.mcnotify=\u5207\u63dbmcMMO\u7684\u804a\u5929\u986f\u793a\u901a\u77e5 \u958b/\u95dc
Commands.Description.adminchat=\u5207\u63dbmcMMO\u7ba1\u7406\u54e1\u804a\u5929\u958b/\u95dc\u6216\u767c\u9001\u7d66\u7ba1\u7406\u54e1\u7684\u804a\u5929\u6d88\u606f
Commands.Description.addxp=\u7d66\u4e88\u73a9\u5bb6mcMMO\u7d93\u9a57\u503c
Commands.Description.hardcore=\u8abf\u6574mcMMO\u786c\u6d3e\u6bd4\u4f8b\u6216\u5207\u63db\u786c\u6d3e\u6a21\u5f0f (\u958b/\u95dc)
Commands.Description.inspect=\u89c0\u770b\u5176\u5b83\u4f7f\u7528\u8005\u7684\u8a73\u7d30mcMMO\u8cc7\u8a0a
Commands.Description.mcability=\u4f7f\u7528\u53f3\u9375\u767c\u52d5mcMMO\u6280\u80fd(\u958b/\u95dc)
Commands.Description.mcgod=\u5207\u63dbmcMMo\u795e\u4e4b\u6a21\u5f0f(\u958b/\u95dc)
Commands.Description.mchud=\u66f4\u63db\u4f60\u7684McMMO HUD\u98a8\u683c
Commands.Description.mcmmo=\u986f\u793amcMMO\u7684\u7c21\u8981\u8aaa\u660e
Commands.Description.mcnotify=\u5207\u63dbmcMMO\u7684\u804a\u5929\u986f\u793a\u901a\u77e5 (\u958b/\u95dc)
Commands.Description.mcpurge= \u6e05\u9664mcMMO\u6280\u80fd\u7b49\u7d1a\u70ba0\u6216\u8d85\u904e{0}\u500b\u6708\u672a\u767b\u5165\u7684\u7528\u6236\u8cc7\u6599.
Commands.Description.mcrank=\u986f\u793a\u6240\u6709mcMMO\u7684\u6392\u540d
Commands.Description.mcrefresh=\u5237\u65b0\u6240\u6709McMMO\u6280\u80fd\u51b7\u537b\u6642\u9593
Commands.Description.mcremove=<font><font class=\"\">\u5f9emcMMO\u6578\u64da\u5eab\u4e2d\u522a\u9664\u7528\u6236</font></font>
Commands.Description.mctop=<font><font>\u986f\u793amcMMO\u6392\u884c\u699c</font></font>
Commands.Description.mmoedit=\u65b0\u589e\u73a9\u5bb6McMMO\u7b49\u7d1a
Commands.Description.party=<FONT> <FONT>\u63a7\u5236\u5404\u7a2emcMMO\u968a\u4f0d\u7684\u8a2d\u7f6e</ FONT> </ FONT>
Commands.Description.mcrefresh=\u66f4\u65b0\u6240\u6709McMMO\u6280\u80fd\u51b7\u537b\u6642\u9593
Commands.Description.mcremove=\u5f9emcMMO\u8cc7\u6599\u5eab\u4e2d\u522a\u9664\u4f7f\u7528\u8005
Commands.Description.mcstats=\u986f\u793a\u4f60\u7684MMO\u7b49\u7d1a\u8207\u7d93\u9a57
Commands.Description.mctop=\u986f\u793amcMMO\u6392\u884c\u699c
Commands.Description.mmoedit=\u4fee\u6539\u73a9\u5bb6McMMO\u7b49\u7d1a
Commands.Description.mmoupdate=\u8f49\u63dbmcMMO\u6578\u64da\u5eab\u5f9e\u4e00\u822c\u6a94\u6848\u5230MySQL
Commands.Description.party=\u63a7\u5236\u5404\u7a2emcMMO\u968a\u4f0d\u8a2d\u7f6e
Commands.Description.partychat=\u5207\u63dbmcMMO\u958b/\u95dc\u968a\u4f0d\u7684\u804a\u5929\u6216\u767c\u9001\u65b9\u7684\u804a\u5929\u4fe1\u606f
Commands.Description.ptp=\u50b3\u9001\u5230\u4e00\u500bmcMMO\u968a\u4f0d\u6210\u54e1\u65c1
Commands.Description.Skill=\u986f\u793a\u7684\u8a73\u7d30mcMMO\u6280\u80fd\u4fe1\u606f{0}
Commands.Description.Skill=\u986f\u793a\u8a73\u7d30\u7684{0}mcMMO\u6280\u80fd\u8cc7\u8a0a
Commands.Description.skillreset=\u91cd\u7f6e\u73a9\u5bb6McMMO\u7b49\u7d1a
Commands.Description.vampirism=\u8abf\u6574mcMMO\u5438\u8840\u6bd4\u4f8b\u6216\u5207\u63db\u5438\u8840\u6a21\u5f0f (\u958b/\u95dc)
Commands.Description.xplock=\u9396\u4f4f\u4f60\u4e00\u500b\u7279\u5b9amcMMO\u6280\u80fd\u7684\u7d93\u9a57\u6b04
Commands.Description.xprate=\u8abf\u6574mcMMO\u7d93\u9a57\u503c\u6bd4\u4f8b\u6216\u8209\u8fa6mcMMO\u7d93\u9a57\u503c\u52a0\u500d\u6d3b\u52d5
UpdateChecker.outdated=\u60a8\u4f7f\u7528\u7684\u662f\u904e\u6642\u7684\u7248\u672cmcMMO\uff01
UpdateChecker.newavailable=\u6709\u65b0\u7684\u7248\u672cBukkitDev\u3002
UpdateChecker.newavailable=BukkitDev\u4e0a\u5df2\u6709\u65b0\u7248\u672c\u91cb\u51fa\u3002

View File

@@ -16,7 +16,7 @@ authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1]
website: http://dev.bukkit.org/server-mods/mcmmo/
main: com.gmail.nossr50.mcMMO
softdepend: [Spout]
softdepend: [Spout, CombatTag]
load: STARTUP
commands:
@@ -107,6 +107,11 @@ commands:
mobhealth:
aliases: [mcmobhealth]
description: Change the style of the mob healthbar
mcscoreboard:
description: Change the current mcMMO scoreboard being displayed
kraken:
aliases: [mckraken]
description: Unleash the kraken!
permissions:
mcmmo.*:
default: false
@@ -253,6 +258,7 @@ permissions:
description: Allows access to all Fishing abilities
children:
mcmmo.ability.fishing.fishermansdiet: true
mcmmo.ability.fishing.icefishing: true
mcmmo.ability.fishing.magic: true
mcmmo.ability.fishing.masterangler: true
mcmmo.ability.fishing.shakemob: true
@@ -260,6 +266,8 @@ permissions:
mcmmo.ability.fishing.vanillaxpboost: true
mcmmo.ability.fishing.fishermansdiet:
description: Allows access to the Fishermans's Diet ability
mcmmo.ability.fishing.icefishing:
description: Allows access to the Ice Fishing ability
mcmmo.ability.fishing.magic:
description: Allows enchanted drops from Fishing
mcmmo.ability.fishing.masterangler:
@@ -602,6 +610,7 @@ permissions:
children:
mcmmo.bypass.arcanebypass: true
mcmmo.bypass.hardcoremode: true
mcmmo.bypass.kraken: true
mcmmo.commands.inspect.far: true
mcmmo.commands.inspect.offline: true
mcmmo.bypass.arcanebypass:
@@ -610,6 +619,9 @@ permissions:
mcmmo.bypass.hardcoremode:
default: false
description: Allows user to bypass negative penalties of Hardcore mode
mcmmo.bypass.kraken:
default: false
description: Allows user to bypass the effects of the exploit prevention when Fishing
mcmmo.bypass.inspect.distance:
default: false
description: Allows user to bypass Inspect's distance requirements
@@ -665,6 +677,7 @@ permissions:
mcmmo.commands.mcmmo.all: true
mcmmo.commands.mcnotify: true
mcmmo.commands.mcrank: true
mcmmo.commands.mcscoreboard: true
mcmmo.commands.mcstats: true
mcmmo.commands.mctop.all: true
mcmmo.commands.mining: true
@@ -689,14 +702,19 @@ permissions:
mcmmo.commands.hardcore.all: true
mcmmo.commands.inspect.far: true
mcmmo.commands.inspect.offline: true
mcmmo.commands.kraken: true
mcmmo.commands.kraken.others: true
mcmmo.commands.mcability.others: true
mcmmo.commands.mcgod: true
mcmmo.commands.mcgod.others: true
mcmmo.commands.mcpurge: true
mcmmo.commands.mcrank.others.all: true
mcmmo.commands.mcrefresh: true
mcmmo.commands.mcrefresh.others: true
mcmmo.commands.mcremove: true
mcmmo.commands.mmoedit: true
mcmmo.commands.mmoedit.others: true
mcmmo.commands.mmoupdate: true
mcmmo.commands.ptp.world.all: true
mcmmo.commands.skillreset.all: true
mcmmo.commands.vampirism.all: true
@@ -761,6 +779,10 @@ permissions:
description: Allows access to the inspect command for far players
mcmmo.commands.inspect.offline:
description: Allows access to the inspect command for offline players
mcmmo.commands.kraken:
description: Allows access to the kraken command
mcmmo.commands.kraken.others:
description: Allows access to the kraken command for other players
mcmmo.commands.mcability:
description: Allows access to the mcability command
mcmmo.commands.mcability.others:
@@ -793,7 +815,6 @@ permissions:
mcmmo.commands.mcnotify:
description: Allows access to the mcnotify command
mcmmo.commands.mcpurge:
default: false
description: Allows access to the mcpurge command
mcmmo.commands.mcrank:
description: Allows access to the mcrank command
@@ -819,8 +840,9 @@ permissions:
mcmmo.commands.mcrefresh.others:
description: Allows access to the mcrefresh command for other players
mcmmo.commands.mcremove:
default: false
description: Allows access to the mcremove command
mcmmo.commands.mcscoreboard:
description: Allows access to the mcscoreboard command
mcmmo.commands.mcstats:
description: Allows access to the mcstats command
mcmmo.commands.mctop.*:
@@ -880,7 +902,6 @@ permissions:
mcmmo.commands.mmoedit.others:
description: Allows access to the mmoedit command for other players
mcmmo.commands.mmoupdate:
default: false
description: Allows access to the mmoupdate command
mcmmo.commands.mobhealth:
default: true

View File

@@ -70,3 +70,8 @@ HUD:
BLUE: 0.75
GREEN: 0.3
RED: 0.3
Notifications:
Tier1: 200
Tier2: 400
Tier3: 600
Tier4: 800