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

Compare commits

..

6 Commits

Author SHA1 Message Date
TfT_02
9e04e437e3 Compile with RELEASE 2014-02-28 19:50:20 +01:00
TfT_02
30e1d3fff3 No such thing as cancelled events 2014-02-28 19:49:53 +01:00
TfT_02
bada2f5d0d Remove reflection 2014-02-28 19:15:11 +01:00
GJ
1edc12af3b This is ugly & awful, but may keep us from needing to add Tag-API as a dependency. 2014-02-28 10:46:34 -05:00
TfT_02
f9a73c38d8 Step two 2014-02-27 22:25:54 +01:00
TfT_02
ccdab96650 First step in starting to fix this issue 2014-02-27 22:25:34 +01:00
702 changed files with 31932 additions and 51163 deletions

344
.gitignore vendored
View File

@@ -1,330 +1,42 @@
# Eclipse stuff
/.classpath
/.project
/.settings
### Eclipse template
# netbeans
/nbproject
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# we use maven!
/build.xml
# External tool builders
.externalToolBuilders/
# maven
/target
# Locally stored "Eclipse launch configurations"
*.launch
# vim
.*.sw[a-p]
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# various other potential build files
/build
/bin
/dist
/manifest.mf
# CDT-specific (C/C++ Development Tooling)
.cproject
/world
# CDT- autotools
.autotools
# Mac filesystem dust
*.DS_Store
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Android template
# Built application files
*.apk
*.ap_
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
gen/
out/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# IntelliJ
# intellij
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/caches
# Keystore files
# Uncomment the following line if you do not want to check your keystore files in.
#*.jks
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
# Google Services (e.g. APIs or Firebase)
google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
### Dropbox template
# Dropbox settings and caches
.dropbox
.dropbox.attr
.dropbox.cache
### Windows template
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
### Maven template
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
### NetBeans template
nbproject/private/
nbbuild/
dist/
nbdist/
.nb-gradle/
### macOS template
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Linux template
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### GPG template
secring.*
### Gradle template
.gradle
/build/
# Ignore Gradle GUI config
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Cache of project
.gradletasknamecache
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties
### SBT template
# Simple Build Tool
# http://www.scala-sbt.org/release/docs/Getting-Started/Directories.html#configuring-version-control
dist/*
lib_managed/
src_managed/
project/boot/
project/plugins/project/
.history
.cache
.lib/
### Example user template template
### Example user template
# IntelliJ project files
.idea
out
gen### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.ipr
*.iws
.idea/
# IntelliJ
# mpeltonen/sbt-idea plugin
.idea_modules/
# Project Stuff
/src/main/resources/mcMMO
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
### Kotlin template
# Compiled class file
# Log file
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
# Other Libraries
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### Java template
# Compiled class file
# Log file
# BlueJ files
# Mobile Tools for Java (J2ME)
# Package Files #
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
# Atlassian Stuff
/atlassian-ide-plugin.xml

View File

@@ -7,416 +7,7 @@ Key:
! Change
- Removal
Version 2.2.0
mcMMO has a new config system (WIP)
mcMMO for Bukkit no longer requires Spigot in order to play, you can now use Bukkit instead (WIP)
mcMMO is now abstracted from the Bukkit API in order to support more platforms (WIP)
mcMMO has changed from using maven to gradle!
mcMMO is now a gradle project (this makes it much easier for us to support older versions of MC and other APIs)
Version 2.1.12
Salvage config entries are no longer case sensitive
Fixed a bug where Fishing was not rewarding vanilla XP orbs
Version 2.1.11
Fixed a bug where Rupture was using the wrong permission node (new permission node: mcmmo.ability.swords.rupture)
Version 2.1.10
Fishing command did an oopsie
Endstone now gives the same XP as Stone (update your experience.yml)
Version 2.1.9
Fixed a bug where grabbing the version of WG would throw classnotdefined errors
Version 2.1.8
mcMMO now checks for WG 7 before attempting to use the WG API
Made some optimizations for our WG integration
Fixed a bug where Bite chance for Master Angler was displaying too many decimal places
Fixed a bug where Abilities didn't check for permission nodes before activating
MaxBonusLevel now has specific entries for Standard and Retro in advanced.yml
MaxBonusLevel for Critical Strikes changed from 75/750 to 100/1000
MaxBonusLevel of Dodge changed from 80/800 to 100/1000
MaxBonusLevel of Rupture changed from 20/200 to 100/1000
MaxBonusLevel of Counter Attack changed from 60/600 to 100/1000
Version 2.1.7
Fixed an almost 6 year old bug where Salvage materials did not have a defined material count so they defaulted to 2 (which could lead to shovels giving back more diamonds than normal)
Added spam detection for Unarmed's bonus damage and disarm
Corrected an error where master angler for retro only required level 150 instead of 500 (update your skillranks.yml)
Fixed a bug where Players could see hidden party members in the party member listings
(API) Added addXpFromBlocks to ExperienceAPI to help make adding XP for a player easier
(API) Added addXpFromBlocksBySkill to ExperienceAPI to help make adding XP for a player easier
(API) Added addXpFromBlock to ExperienceAPI to help make adding XP for a player easier
(API) Added addXpFromBlockBySkill to ExperienceAPI to help make adding XP for a player easier
Version 2.1.6
Fixed a bug where Arcane Salvage could never fail
Recolored some lines in the locale related to failure from white to red
Fixed a bug where Salvage was giving back too many resources
SubSkillFailure renamed to SubSkillFailed in config.yml
SubSkillFailed now sends copies to chat by default
SubSkillFailed no longer sends messages to the action bar by default
Version 2.1.5
mcMMO no longer ignores cancelled events relating to the player left or right clicking
Version 2.1.4
Fixed a bug where Alchemy didn't gain XP
Fixed a bug where Archery gained XP from mob spawned entities
Fixed a display bug with Roll on /acrobatics command
Fixed a display bug for bite chance on Fishing
Fixed a display bug for treasure drop chances on Fishing
Fixed a display bug for Arcane Forging on Repair
Fixed a display bug for Super Repair on Repair
Fixed a display bug for Repair Mastery on Repair
Fixed a display bug for Second Smelt on Smelting
Repair Mastery now uses a rank system
Super Repair now uses a rank system
Changed the stat for bite chance to be more clear that its additive chance
Fixed Styling for the /salvage command
Temporarily disabled Flux Mining
Removed XP from entities that target endermite to prevent easy exploitation (Credits to TheBentoBox for the tip!) [Can be turned off in experience.yml]
Fixed a bug where static chance skills like Arcane Salvage were using incorrect calculations for success
Advanced Salvage now uses a rank system
Arcane Salvage now goes by your rank to determine the maximum amount of materials salvaged and is no longer percentage based
Fixed a bug where Iron Arm was checking for Iron Grip to be unlocked instead of itself
(Plugin Compatibility) mcMMO no longer ignores cancelled block place events (this is to prevent XP gains from placed blocks)
(Plugin Compatibility) mcMMO now ignores cancelled events relating to the player left or right clicking
(Locale) Changed the string for "Salvage.Ability.Bonus.1" to fit the new material recovery mechanics of Salvage
(Config) Added a toggle for the new endermite enderman xp farm fix in experience.yml "ExploitFix.EndermanEndermiteFarms"
(Config) Cleaned up some leftover 'unlocklevel' settings, this stuff is now handled in skillranks.yml
(Config) Removed Salvage.MaxPercentage
(Config) Removed Salvage.MaxPercentageChance
(Config) Added Salvage.ArcaneSalvage.MaxBonusLevel
(Config) Added Salvage.ArcaneSalvage.MaxChance
Version 2.1.3
Temporarily removed the unarmed no-item pickup feature until its fixed
Version 2.1.2
(Compatibility) mcMMO now deals custom damage type for all damage sources to be more compatible with other plugins (such as anti-cheat)
(Perks) Fixed a bug where the Lucky perk wasn't adding to success
(Skills) mcMMO will now listen to cancelled events to remove our temporary enchantments from tools
(Skills) Fixing a bug where Shake didn't calculate success correctly
(Skills) Fixed a bug where Arcane Forging didn't calculate success and failure correctly
(Skills) Fixed a bug where Salvage didn't calculate success and failure correctly
(Skills) Fixed a bug where Flux Mining didn't calculate success correctly
(Skills) Fixed a bug where Shake didn't calculate correctly
(Skills) Fixed a bug where Pummel didn't calculate correctly
(Skills) Tree Feller now works on Mushroom Stems
(Skills) Fixed a bug where magic chance would show as null
(Skills) Fixed a bug where Trap percentages were added to Fishing even though they no longer exist
(Skills) Magic Hunter now uses a rank system
(Skills) Fixed a bug where Magic Hunter would work without treasure hunter
(Skills) As long are you are empty handed mcMMO will no longer put items into your hands
(Skills) Improved the styling on /smelting
(Skills) Iron Arm Style can now reach a bonus damage of 10 (up from 8)
(Skills) Iron Arm Style now uses a rank system
(Skills) Iron Grip now uses a rank system
(Skills) Disarm now uses a rank system
(Skills) Arrow Deflect now uses a rank system
(Skills) Flux Mining is now a passive effect when you mine ore instead of requiring a special pickaxe
(Skills) Removed the Flux Mining mcMMO Pickaxe Item
(Style) Locked skills now are styled differently in the skill command display
(Experience) Phantoms have been added to the default experience.yml with a value of 4.0 (update your config!)
(Experience) Default XP value for witch set to 0.1 instead of 0.0
(Experience) Default XP value for ender dragon set to 1.0 instead of 0.0
(Style) Added @ symbol styling for hover tooltips to the locale
(Style) Added the skill names in the skill commands display to the locale so it can now be edited and styled
(Experience) Renamed Grass to Grass_Block in treasures.yml to allow grass to give items again (update your configs manually or delete to regen)
(Experience) Wood blocks now give XP and are affected by Tree Feller (6 sided bark blocks)
(API) Moved XPGainReason from skills to experience package
(API) Added XpGainSource for tracking sources of XP
(API) You can now specify XpGainSource when adding xp to players
(Config) The Extra Stats option for XP bars now overrides the setting for updating XP bars every time XP is gained
(Config) Added an option for Party XP gains to not update XP bars
(Config) Added an option for Passive XP gains to not update XP bars (smelting/brewing)
(Config) Added warnings if mcMMO finds a MaxBonusLevel of 0 for any skill that incorporates RNG
(Config) Removed config options for Iron Arm
(Config) Removed the options related to the Flux Mining Item
(Config) Second Smelt has a max activation chance of 50% instead of 100% (you can update your configs or gen new ones to get this change)
Version 2.1.1
= Fixed an issue where excavation wasn't using the correct permission node
= Added protection against AFK fishing
= Acrobatics now uses much better anti-exploit detection
Version 2.1.0
+ mcMMO now features XP bars! Configurable in experience.yml
+ Locale files now support & codes for colors and formatting!
+ Prevented exploits involving blocks made from entities (snowmen, etc..)
+ Added JSON integration to all Skill Commands
+ Added config setting to enable or disable old mcMMO skill scaling (General.RetroMode) this is on by default for existing installs
+ You can now disable specific skills in coreskills.yml without the need for permissions
+ Added links to mcMMO related websites to various commands
+ Certain elements of mcMMO's UI have been restyled
+ Added the tagline "Overhaul Era" to various locations until 3.0.0 comes out
+ You can now disable mcMMO completely for specific worlds via world_blacklist.txt in /plugins/mcMMO/
+ (WorldGuard) mcMMO now supports worldguard, you can use the flags "mcmmo" and "mcmmo-xp" on regions (they default to on unless otherwise specified)
! (Scoreboards) Scoreboards are now disabled by default, I don't like them. You can turn them back on in config.yml
+ (Sounds) Rolling now plays a sound (Graceful Roll has a different sound :) )
+ (Sounds) Activating Super abilities plays a sound (other plays can hear this)
+ (Sounds) Skill Unlock Notifications have sounds
+ (Sounds) Readying a tool for a super ability now plays a sound
+ (Sounds) Bleed DOT now plays a sound
+ (Experience) mcMMO now notifies you when you progress in a skill!
+ (Experience) Coral (blocks) now give Mining XP
+ (Experience) Coral (plants) now give Herbalism XP
+ (Experience) Blue Ice now gives Mining XP
+ (Experience) Dolphins now give combat XP
+ (Experience) Drowned mobs now count towards combat XP
+ (Experience) You can now set guaranteed minimum values for XP gained if diminishing returns are enabled, this value defaults to 5% (experience.yml)
+ (Events) Starting an XP event will now use the title API (toggle this in advanced.yml)
+ (Sound) Volume and Pitch of sounds can now be configured in the new sounds.yml file
+ (MySQL) Added support for SSL for MySQL/MariaDB (On by default)
! (Skills) Taming's Gore now uses Rupture Rank 1 for its DoT calculations
! (Skills) Sword's Bleed has been renamed to Rupture
! (Skills) Sword's Rupture no longer has an internal hard coded limit
! (Skills) Sword's Serrated Strikes now uses your Rupture rank to determine the damage/ticks for its bleed effect.
! (Skills) Sword's Rupture now ticks four times as fast
! (Skills) Sword's Rupture now refreshes bleed duration instead of adding duration when applying bleed to the same target
! (Skills) Sword's Rupture will now deal lethal damage
= (Skills) Fixed a bug where Rupture would apply an incorrect amount of bleed ticks
! (Skills) Sword's Rupture now reaches its max proc chance at level 20 (200 in Retro)
! (Skills) Sword's Rupture now has a max chance to proc of 33% instead of 70%
! (Skills) Sword's Rupture now deals 50% more damage at above Rank 3 and can last much longer! The base damage for Bleed has been increased as well (update your advanced.yml admins)
! (Skills) Sword's Rupture no longer triggers invincibility frames when damaging your opponent
= (Skills) Furnaces now give XP to the last person to modify their inventory instead of the first person to open them
+ (Skills) Ability Lengths now have a default skill cap at which they stop increasing in length, configurable in advanced.yml (endurance perks extend this limit)
+ (Skills) Added a new subskill to some skills 'Understanding The Art' this adds nothing new, but tracks benefits that increase together that seemed unrelated, which was previously a bit obfuscated.
+ (Skills) Tool alerts now are sent to the Action Bar
+ (Skills) Super Ability activation alerts are now sent to the Action Bar
+ (Skills) Certain Skill messages are now sent to the Action Bar
+ (Skills) Added some missing information to skill stats
+ (Config) Skill Rank requirements are now defined in skillranks.yml you cannot add or remove ranks from this file
+ (Config) Added option to use SSL for MySQL in config.yml
+ (Config) Added option to disable the new URL links to config.yml
+ (Config) New config file added coreskills.yml
+ (Config) Added rank settings for the new Woodcutting skill
+ (Config) Added configurable parameters for the new Tree Feller
+ (Config) Added retro toggle for Tree Feller
+ (Config) Added toggle to disable all scoreboards
+ (Chat) Added ability for admins to spy on party chat (off unless toggled on)
+ (Commands) Added new info command /mmoinfo or /mcinfo
+ (Commands) Added toggle command /mcchatspy
+ (API) Added many missing SubSkills to SubSkillType class
+ (Permissions) Added permission node mcmmo.commands.mcchatspy & mcmmo.commands.mcchatspy.others
+ (Permissions) Added permission nodes for Harvest Lumber, Splinter, Nature's Bounty, and Bark Surgeon
+ (Permissions) Added mcmmo.commands.mmoinfo for the new mmoinfo/mcinfo command
! (Permissions) Call of the wild now uses mcmmo.ability.taming.callofthewild instead of mcmmo.ability.taming.callofthewild.all
+ (Locale) Added locale strings for new Woodcutting abilities
+ (Locale) Added locale strings for mcchatspy command
+ (Locale) Added locale strings for JSON integration
+ (Locale) Added locale strings for Taming's Pummel SubSkill
+ (Locale) Added locale strings for Unarmed's Block Cracker SubSkill
- (Locale) Removed localizations with the following codes for being almost empty: id, HR_hr, et_EE, lv, lt, no, pl_PL, pt_PT, tr_TR
- (Config) Removed SkillShot's IncreaseLevel & IncreasePercentage (replaced by RankDamageMultiplier)
- (Config) Removed AxeMastery's MaxBonus & MaxBonusLevel (replaced by RankDamageMultiplier)
= (Events) Fixed bug where XP rate could be a negative number
= (Experience) Fixed a bug where you could set a players levels into the negative and bad things would happen
= (Plugin Compatibility) mcMMO now fires new custom events relating to changes it makes to player scoreboards, plugin authors can listen to these events to improve compatibility
= (Items) Chimaera Wing now tracks cooldowns between sessions for players (no more disconnect abuse)
= (Skills) Added missing mushroom blocks to experience.yml defaults
= (Skills) Tridents will no longer be considered unarmed
= (MySQL) You can now inspect offline players
= (MySQL) When converting from MySQL to flatfile mcMMO will now properly include all users in the conversion process
= (Commands) '/mcMMO help' no longer displays the other/special commands category to players lacking permissions
+ (Party) Parties can now have size limits (configurable in config.yml), party size is unlimited by default
+ (Party) You can now turn on Friendly Fire for parties in config.yml
+ (Debug Stick) The Debug stick can now tell you about properties of a block related to Excavation
! (Deaths) Fixed the bug where mob names would be replaced by hearts
! (Experience) The XP values of fish are now based on their rarity and have been drastically changed
! (Experience) Skills now start at level 1 (configurable in advanced.yml)
! (Item) Improved some of the messages sent to the player regarding the Chimaera Wing
! (Party) Party member list will only include members of the party that you can see (aren't vanished)
! (Skills) Excavation Treasure Hunter is renamed to Archaeology
! (Skills) Swords no longer require blocking with a shield to trigger counter attacks
! (Skills) Stripping wood and right clicking on stripped wood will no longer ready your Axe
! (Skills) Some skill level rank requirements have changed
! (Skills) Green Thumb now uses a rank system
! (Skills) Farmer's Diet & Fisherman's Diet now use a rank system
! (Skills) Fixed an edge case bug where Blast Mining wouldn't inform the player that it was on cooldown
! (Skills) mcMMO skills will now be on a scale from 1-100 instead of 0-1000 (for existing mcMMO installs this is opt-in and off by default)
! (Skills) Skill Super Powers now use a rank system, almost all of them unlocking first at level 10
! (Skills) Acrobatics' Roll exploit detection was tweaked to still allow for Roll to trigger even if it rewards no XP
! (Skills) Acrobatics' Roll & Gracefull Roll are now considered the same skill (both mechanics are still there)
! (Skills) Woodcutting's Double Drop subskill is now named Harvest Lumber
! (Skills) Archery's Skill Shot now uses a rank system
! (Skills) Swords' Bleed now uses a rank system
! (Skills) Swords' Counter Attack now uses a rank system
! (Skills) Axe's Axe Mastery now uses a rank system
! (Skills) Axe's Impact now uses a rank system
! (Skills) Herbalism's Farmer's Diet now uses a rank system
! (Skills) Herbalism's Green Thumb now uses a rank system
! (Skills) Shake now uses a rank system
! (Skills) Flux Mining now uses a rank system
! (Skills) Removed traps from fishing
! (Skills) Dodge now uses a rank system
! (Skills) Arrow Retrieval now uses a rank system
! (Skills) Axes' Critical Strikes now uses a rank system
! (Skills) Axes' Greater Impact now uses a rank system
! (Skills) Taming's Beast Lore now uses a rank system
! (Skills) Taming's Gore now uses a rank system
! (Skills) Taming's Call of the Wild now uses a rank system
! (Skills) Taming's Pummel now uses a rank system
! (Kraken) Removed everything involving the kraken
= (Skills) Shake now sends custom damage types for better nocheat compat
! (Config) Unarmed.IronArm in advanced.yml is now Unarmed.IronArmStyle
! (Config) Unarmed.Deflect in advanced.yml is now Unarmed.ArrowDeflect
! (Config) Swords.Counter in advanced.yml is now Swords.CounterAttack
! (Config) Archery.Retrieve in advanced.yml is now Archery.ArrowRetrieval
! (Config) Axes.CriticalHit in advanced.yml is now Axes.CriticalStrikes
! (Config) Archery's Skill Shot now uses RankDamageMultiplier for its damage bonus calculations
! (Config) Axe's Axe mastery now uses RankDamageMultiplier for its damage bonus calculations
! (Permissions) Replaced the old Double Drop permission node for woodcutting with a new Harvest Lumber permission node
! (Permissions) Fast Food Service permission node renamed to mcmmo.ability.taming.fastfoodservice
! (Permissions) Counter Attack permission node renamed to mcmmo.ability.swords.counterattack
! (Permissions) Arrow Deflect permission node renamed to mcmmo.ability.unarmed.arrowdeflect
! (Permissions) Iron Arm Style permission node renamed to mcmmo.ability.unarmed.ironarmstyle
! (Permissions) Remove all mob health bar permissions, this is no longer a per-player setting.
! (Commands) Removed the mobhealthbar command, this is no longer a per-player setting.
! (Locale) The descriptions of a few skills have changed
! (Locale) Removed redundant information from some skill names and descriptions en_US (other locales will need to be updated)
! (Locale) SubSkill locale keys are now located at {ParentSkill}.SubSkill.SubSkillName
! (Locale) Super Abilities no longer have (ABILITY) in their Skill.Effect strings
! (API) mcMMO is now built against Spigot-API instead of Bukkit
! (API) Moved a lot of methods from SkillCommand to SkillUtils
! (API) SkillType is now PrimarySkillType
! (API) SecondarySkill is now SubSkillType
! (API) AbilityType is now SuperAbilityType
! (API) SecondaryAbilityEvent is now SubSkillEvent
! (API) SubSkillType has had many helpful methods added to it
! (API) GREEN_THUMB_PLANT & GREEN_THUMB_BLOCK are replaced by GREEN_THUMB
! (Code) Refactored some unreadable code relating to SecondaryAbilityType activation in SkillUtils
Version 2.0.0
= Fixed an interaction between Tree Feller and Stripped Wood
! Fireworks no longer fire by default for ability activation/deactivation
! Website has been changed and the MOTD string relating to it reflects this
! Discord link added to mcMMO command
! Updated misc strings relating to mcMMO
Version 1.5.05-SNAPSHOT
Version 1.5.04
+ Added option to config.yml to control mcMMO generated sound volume
+ Added option to config.yml to truncate existing player skill levels that exceed the skill level cap
+ Falling blocks persist mcMMO natural data
= Woodcutting double drops correctly identify acacia and dark oak logs
= Skill Reset command now correctly identifies arguments
= Hylian Treasure config options are now actually used
= Child skills now use parent skills configured skill caps properly
= Auto Update config now properly works
! Item dropped from blocks now drop from the center
! Potions Config updated for 1.9
! Flux mining now simulates a block break event for other plugins to act upon
! Zombie Pigmen spawned from nether portals are now considered spawner mobs
! Flux Pickaxe lore now appends to existing lore as opposed to replacing it
! Party chat no longer displays colors when logged in server console
- Treefeller no longer lowers exp for big trees
- No longer supports 1.8 :(
- Removed plugin metrics
Version 1.5.03
= Fixed bug where absorption hearts could be attacked by allied players
= Fixed bug where new forms of stone would drop the wrong type when mined with Silk Touch
= Fixed bug where blocks would not get tracked correctly when using sticky pistons and slime blocks in certain situations
= Fixed bug where config value for Daze damage was ignored
= Fixed UUID updater to not lose data on errors
= Fixed bug where uuid update could result in large amounts of user data being deleted
= Fixed bug where custom potions were missed in potion stage calculation
= Fixed piston dupe bugs permanently
= Fixed bug involving user name changes
= Fixed old user purge to properly calculate months
= Fixed bug where Repair would incorrectly check items
= Fixed bug where apostrophes in locale files would not read correctly
= Fixed bug where treasure data was limited to 255 instead of Short.MAX_VALUE
! Moved more user loading calculations to async loading thread to reduce lag on login
Version 1.5.02
+ Added option to config.yml for Chimaera Wings to stop using bed spawn points
+ Added option to config.yml to let non-tools in hand count as unarmed
+ Added option to experience.yml to control XP gained by killing bred animals
+ Added support for 1.8 mobs and features
= Fixed bug where no Mining XP was granted when Flux Mining was successful
= Fixed bug with UUID conversions in Flatfile
= Fixed a couple Dupe bugs that were introduced recently
= Fixed bug where MobHealthbarTypes were not saved between server restarts
! Changed Flux Mining mechanics. In order to use the ability, you need to infuse a pickaxe with furnace powers first.
! Scoreboard tips are only shown a couple of times to the player, instead of once per login session
! Changed Archery distance multiplier to be configurable
! Archery distance XP bonus cannot exceed indefinitely anymore
Version 1.5.01
+ Added new child skill; Salvage
+ Added UUID support!
+ Added SQL connection pooling and async loading!
+ Added the long awaited Diminished Returns feature
+ Added new feature to Herbalism. Instantly-regrown crops are protected from being broken for 1 second
+ Added option to config.yml to show the /mcstats scoreboard automatically after logging in
+ Added option to config.yml for Alchemy. Skills.Alchemy.Prevent_Hopper_Transfer_Bottles
+ Added option to config.yml for Scoreboards, display "Ability" instead of ability names on the scoreboards
+ Added options to experience.yml for Dirt and Sand variations
+ Added support for `MATERIAL|data` format in treasures.yml
+ Added API to experience events to get XP gain reason
+ Added API to check if an entity is bleeding
+ Added API to ExperienceAPI to get the amount of XP needed for a level
+ Added API class SkillAPI used to get a list of valid skill names
+ Added API events for hardcore features, McMMOPlayerPreDeathPenaltyEvent, McMMOPlayerStatLossEvent and McMMOPlayerVampirismEvent
+ Added API to ExperienceAPI to specify if XP can be shared
+ Added options to tools.yml and armor.yml config files to set a pretty repair material name
+ Added full support for repairables in tools.yml and armor.yml config files
+ Added magical mod config file import command, for Cauldron 1.7+. Check wiki for usage
+ Added particle effects and sounds to "Call of the Wild" (Taming)
+ Added summon length to "Call of the Wild". Summons will now commit suicide after their lifespan expires
+ Added feature which makes tamed wolves attack a target shot by the owner
= Fixed bug where pistons would mess with the block tracking
= Fixed bug where the Updater was running on the main thread.
= Fixed bug when players would use /ptp without being in a party
= Fixed bug where player didn't have a mcMMOPlayer object in AsyncPlayerChatEvent
= Fixed bug where dodge would check the wrong player skill level
= Fixed bug which causes /party teleport to stop working
= Fixed bug where SaveTimerTask would produce an IndexOutOfBoundsException
= Fixed bug where Alchemy would not fire BrewEvents
= Fixed bug with setting custom names and lore in treasures config
= Fixed bug which would cause a NullPointerException with getFlowerAndGrassXp()
= Fixed bug which could cause and SQLException regarding the connection property 'maxReconnects'.
= Fixed bug where falling blocks were incorrectly tracked
= Fixed bug where items would get deleted when in Berserk with a full inventory
= Fixed bug where the console would not correctly show party chat colors
= Fixed bug where party chat was using non thread safe methods
= Fixed bug where Blast Mining unlock levels could be to high in certain occasions
= Fixed bug where Blast Minings ability "Demolition Expert" would not work
= Fixed bug where Repair_Material_Quantity wasn't read in mod config files
! Changed SecondaryAbilityEvent to implement Cancellable and it now gets fired for damage related secondary abilities
! Changed the way mcMMO handles bonus damage, updated for the new damage event API
! Changed player data saving. Save tasks are now asynchronous
! Vanished players no longer get hit by AoE effects
! Changed Alchemy config option 'Prevent_Hopper_Transfer' renamed to 'Prevent_Hopper_Transfer_Ingredients'
! Changed Alchemy XP distribution. XP is granted based on the stage of the potion.
! Changed behavior of the Blast Mining ability "Demolition Expert"; now only decreases damage for the ability user
! Updated for new getOnlinePlayers() behavior
! Updated for new blocks and entities
! Changed McMMOPlayerDeathPenaltyEvent to get fired after hardcore penalty calculations, use McMMOPlayerPreDeathPenaltyEvent for old behavior
! Moved Refresh_Chunks setting from hidden.yml to config.yml
- Removed salvage ability from Repair, salvage has it's own (child) skill now
Version 1.5.00
+ Added Podzol & Red Sand to Excavation
+ Added Hardened Clay, Stained Clay, and Packed Ice to Mining blocks
+ Added Acacia and Dark Oak to Woodcutting blocks
+ Added Salmon, Clownfish, and Pufferfish to Fishing XP
+ Added new flowers and grasses to Herbalism XP
+ Added option to config.yml which allows players to always catch fish, even when a treasure is found
+ Added option to config.yml to override vanilla Minecraft treasures
! Fishing XP now depends on the type of fish.
! Woodcutting XP in experience.yml and Woodcutting double drops in config.yml now use the tree species names. Oak is now Generic, and Spruce is now Redwood.
! Red_Rose was replaced by Poppy, and so the key in experience.yml has been updated accordingly.
- Removed deprecated permission nodes
- Removed "Treasure found!" message
Version 1.4.08
Version 1.4.08-dev
+ Added a new skill; Alchemy. Special thanks to EasyMFnE for creating this!
+ Added SecondaryAbilityType enum, and new SecondaryAbilityWeightedActivationCheckEvent, fired when a secondary ability checkes its activation chances
+ Added the possibility to gain experience when using Fishing "Shake"
@@ -430,10 +21,6 @@ Version 1.4.08
+ Added new experience bonus perk 'mcmmo.perks.xp.customboost.<skillname>' multiplies incoming XP by the boost amount defined in the experience config
+ Added Ender Dragon, Wither, and Witch to combat experience multipliers - they do not give XP by default
+ Added support for multiple mod config files, naming can be done as either armor.<modname>.yml or <modname>.armor.yml
+ Added config options to configure the items used in "Call of the Wild"
+ Added config option to configure the database command cooldown
= Fixed bug where healthbars wouldn't display if skills were disabled
= Fixed bug with "Call of the Wild" entities despawning
= Fixed bug with updating (very) old user data.
= Fixed bug with checking maximum durability of mod items.
= Fixed exploit involving Call of The Wild.
@@ -446,16 +33,13 @@ Version 1.4.08
= Fixed bug which prevented players from gaining Acrobatics XP when the setting 'Prevent_XP_After_Teleport' was set to false
= Fixed bug where cooldown donor perks were reducing more than expected
= Fixed bug where disabling hardcore mode for specific skills didn't work
= Fixed bug which caused the net.shatteredlands.shatt.backup cleanup to delete old backups while it should have kept those
= Fixed bug which caused the backup cleanup to delete old backups while it should have kept those
= Fixed bug where party chat broke if the display name contained special characters
= Fixed bug where `/addlevels all` and `/skillreset all` didn't work
= Fixed bug which made it possible to gain XP by taming the same horse multiple times, if a player "untamed" that horse
= Fixed bug where some horses summoned with "Call of the Wild" were unable to jump
= Fixed bug where the /ptp request expiration time was checked wrongly - preventing players from using the command
= Fixed bug where Hylian Luck was broken
= Fixed bug where Snow would never drop treasures
= Fixed issues with commands giving away vanished players.
= Fixed bug where the Repair lucky perk would increase the Arcane Forging downgrade chance, instead of decreasing it
! Changed party system. Parties now have XP and Levels. Party features such as party teleport and party chat have to be unlocked before they can be used by the party members
! Changed appearance of party member list. Gold = party leader, White = online, Gray = offline, Italic = not nearby
! Updated localization files
@@ -465,8 +49,6 @@ Version 1.4.08
! Changed /ptp config setting, Commands.ptp.Confirm_Required is now Commands.ptp.Accept.Required
! Changed config validation for UnlockLevels, they can now also be 0
! Changed config validation for Rank_Levels, successive Ranks can now be less than or equal to each other
! Changed default amount of XP gained from mining Quartz Ore. From 250 to 100 XP.
! Changed Acrobatics config setting, Skills.Acrobatics.Prevent_XP_After_Teleport is now Skills.Acrobatics.XP_After_Teleport_Cooldown
- Removed /stats alias for /mcstats
Version 1.4.07
@@ -794,7 +376,7 @@ Version 1.4.00
! Changed Excavation to have individual XP values for each block type, rather than a base XP value.
! Changed the way party teleportation works. When using /ptp, the target player needs to confirm the teleport before it takes place. (Configurable)
! Changed BeastLore: Now also displays offline player names
! Changed net.shatteredlands.shatt.backup task to include ALL config files
! Changed backup task to include ALL config files
! Deprecated most functions in ExperienceAPI, replaced them with identical versions that use a String for the SkillName rather than the SkillType enum values
! Changed Super Breaker & Giga Drill Breaker to be an enchantment-based boost, rather than an instabreak. Option exists in hidden.yml to change this to an potion-based buff.
! Changed locales to fall back on English when translated strings cannot be found.
@@ -1017,7 +599,7 @@ Version 1.3.07
+ Added permission nodes for Treasure & Magic Hunter for Fishing
+ Added a permission node for Farmer's Diet
+ Added config options for enabling/disabling specific double drops
+ Added automatic zip net.shatteredlands.shatt.backup of flatfile database & config files
+ Added automatic zip backup of flatfile database & config files
+ Added config options to enable/disable specific skills for PVP & PVE
= Fixed bug where Tree Feller was looking at the wrong blocks for determining how much to take down.
= Fixed bug where Green Terra consumed seeds even on Mossy Stone Brick
@@ -1603,7 +1185,7 @@ Fixed bug with randomly receiving Taming XP
mcmmo.users file moved into /plugins/mcMMO/FlatFileStuff/
Leaderboard files now moved into /plugins/mcMMO/FlatFileStuff/Leaderboards
Locale files now have the prefix locale_ instead of messages_
Locale files are now located inside com/com.gmail/com.gmail.nossr50/locale/ instead of com/com.gmail/com.gmail.nossr50/
Locale files are now located inside com/gmail/nossr50/locale/ instead of com/gmail/nossr50/
Updated the code that handles permissions (this may mean 3.1.6 will finally play well!)
Some more source code organization
Fixed warnings for compiler

View File

@@ -1,234 +0,0 @@
# **Version 2.1.0+**
### Please use Spigot or Paper!
* **mcMMO is now built against Spigot-API instead of Bukkit**
### New Level Scaling
* mcMMO now features an optional 1-100 scaling mode!
* This is on by default for new installs, if you are upgrading mcMMO you will be put into Retro Mode instead (1-1000) scaling.
* The two scaling modes are the same, the changes are completely cosmetic!
* Skill Requirements in the config file will be multiplied by 10 if you are using Retro mode unless the setting has Retro in its name, keep this in mind if you need to edit anything!
### WorldGuard Support
* Added support for WorldGuard regions!
* `mcmmo` region flag turns on or off a players ability to use anything related to mcMMO other than commands
* `mcmmo-xp` region flag turns on or off a player's ability to gain XP
* These flags default to on unless you specify otherwise
### World Blacklist
* You can now disable mcMMO completely for specific worlds via `world_blacklist.txt` in /plugins/mcMMO/
* This file appears once mcMMO has been run at least once
* Every line of this file should be the name of a world where you don't want mcMMO to be enabled!
### Rank System
* Skills that are not yet unlocked will show up as `???` until learned
* Many skills now make use of a rank system!
* Rank level requirements are modified in `skillranks.yml`
* Woodcutting's Double Drop subskill is now named Harvest Lumber
* Archery's Skill Shot now uses a rank system
* Swords' Bleed now uses a rank system
* Swords' Counter Attack now uses a rank system
* Axe's Axe Mastery now uses a rank system
* Axe's Impact now uses a rank system
* Herbalism's Farmer's Diet now uses a rank system
* Herbalism's Green Thumb now uses a rank system
* Shake now uses a rank system
* Flux Mining now uses a rank system
* Removed traps from fishing
* Dodge now uses a rank system
* Arrow Retrieval now uses a rank system
* Axes' Critical Strikes now uses a rank system
* Axes' Greater Impact now uses a rank system
* Taming's Beast Lore now uses a rank system
* Taming's Gore now uses a rank system
* Taming's Call of the Wild now uses a rank system
* Taming's Pummel now uses a rank system
* Green Thumb now uses a rank system
* Farmer's Diet & Fisherman's Diet now use a rank system
### mcMMO Chat Alerts
* mcMMO no longer spams your chat!
* Most messages are sent to your action bar instead!
* Completely configurable! You can have mcMMO spam your chat again if you want!
* You can configure it so that messages will be sent to your action bar AND your chat system!
* Improved some of the messages sent to the player regarding the Chimaera Wing
### Localization File
* The descriptions of a few skills have changed
* Locale files now support & codes for colors and formatting!
* Added locale strings for new Woodcutting abilities
* Added locale strings for mcchatspy command
* Added locale strings for JSON integration
* Added locale strings for Taming's Pummel SubSkill
* Added locale strings for Unarmed's Block Cracker SubSkill
* Removed localizations with the following codes for being almost empty: `id`, `HR_hr`, `et_EE`, `lv`, `lt`, `no`, `pl_PL`, `pt_PT`, `tr_TR`
* Removed redundant information from some skill names and descriptions `en_US` (other locales will need to be updated)
* SubSkill locale keys are now located at `{ParentSkill}.SubSkill.SubSkillName`
* Super Abilities no longer have `(ABILITY)` in their `Skill.Effect` strings
### UI
* Certain elements of mcMMO's UI have been restyled
* Skills can now be clicked on and hovered over for more information!
* Added links to mcMMO related websites to various commands
* Customizeable and optional XP Bars
* Added the tagline "Overhaul Era" to various locations until 3.0.0 comes out
* Added option to disable the new URL links to `config.yml`
### Sounds
* Volume and Pitch of sounds can now be configured in the new `sounds.yml` file
### Super Ability Changes
* Skill Super Abilities now use a rank system, the default rank to unlock is level 5
* Activating Super abilities plays a sound (other plays can hear this)
* Ability Lengths now have a default skill cap at which they stop increasing in length
* Setting the cap to 0 removes it!
* Configurable in `advanced.yml` (endurance perks extend this limit)
### Skills
* mcMMO now notifies you when you progress in a skill!
* Excavation Treasure Hunter is renamed to Archaeology
* Readying a tool for a super ability now plays a sound
* Skill Unlock Notifications have sounds
* Stripping wood and right clicking on stripped wood will no longer ready your Axe
* Added new skill 'Understanding The Art' which adds nothing new but tracks previously hidden benefits of raising a skill
* Tool alerts now are sent to the Action Bar
* Super Ability activation alerts are now sent to the Action Bar
* Almost all Skill-related messages are now sent to the Action Bar
* Added some missing information to skill stats
* Swords no longer require blocking with a shield to trigger counter attacks
* Sword's Bleed has been renamed to Rupture
* Sword's Rupture no longer has an internal hard coded limit
* Sword's Serrated Strikes now uses your Rupture rank to determine the damage/ticks for its bleed effect.
* Sword's Rupture now ticks four times as fast
* Sword's Rupture now refreshes bleed duration instead of adding duration when applying bleed to the same target
* Sword's Rupture will now deal lethal damage
* Sword's Rupture now reaches its max proc chance at level 20 (200 in Retro)
* Sword's Rupture now has a max chance to proc of 33% instead of 70%
* Sword's Rupture now deals 50% more damage at above Rank 3 and can last much longer!
* The base damage for Bleed has been increased as well (update your `advanced.yml` admins)
* Sword's Rupture no longer triggers invincibility frames when damaging your opponent
* Sword's Rupture now plays a sound
* Taming's Gore now uses Rupture Rank 1 for its DoT calculations
* Furnaces now give XP to the last person to modify their inventory instead of the first person to open them
* Rolling now plays a sound (Graceful Roll has a different sound :) )
* Acrobatics' Roll exploit detection was tweaked to still allow for Roll to trigger even if it rewards no XP
* Acrobatics' Roll & Gracefull Roll are now considered the same skill (both mechanics are still there)
* Some skill level rank requirements have changed
### Experience
* Skills now start at level 1 (configurable in advanced.yml)
* Starting an XP event will now use the title API (toggle this in `advanced.yml`)
* The XP values of fish are now based on their rarity and have been drastically changed
* Coral (blocks) now give Mining XP
* Coral (plants) now give Herbalism XP
* Blue Ice now gives Mining XP
* Dolphins now give combat XP
* Drowned mobs now count towards combat XP
* Added missing mushroom blocks for XP
* You can now set guaranteed minimum values for XP gained if diminishing returns are enabled, this value defaults to 5% (`experience.yml`)
### Bug Fixes
* Fixed the bug where mob names would be replaced by hearts
* Fixed a bug where Rupture would apply an incorrect amount of bleed ticks
* Fixed bug where XP rate could be a negative number
* Fixed a bug where you could set a players levels into the negative and bad things would happen
* Fixed an edge case bug where Blast Mining wouldn't inform the player that it was on cooldown
### Plugin Compatibility
* mcMMO now fires new custom events relating to changes it makes to player scoreboards, plugin authors can listen to these events to improve compatibility
### Exploit Fixes
* Prevented exploits involving blocks made from entities (snowmen, etc..)
* Chimaera Wing now tracks cooldowns between sessions for players (no more disconnect abuse)
* Tridents will no longer be considered unarmed
* Prevented exploits involving 2 high herbs and chorus flowers
* Vastly Improved the Acrobatics exploit detection checks
### Parties
* Parties can now have size limits (configurable in `config.yml`), party size is unlimited by default
* You can now turn on Friendly Fire for parties in `config.yml`
* Party member list will only include members of the party that you can see (aren't vanished)
### Scoreboards
* Scoreboards are now disabled by default since most of their functionality is handled better by XP bars.
* Added toggle to disable all scoreboards (previously you had to disable them one by one)
* You can turn them back on in `config.yml`
* You can have XP bars and scoreboards on at the same time
### MySQL
* Added support for SSL for MySQL/MariaDB in config.yml (On by default)
* mcMMO no longer spams your console if you are not using SSL for your MySQL server
* You can now inspect offline players
* When converting from MySQL to flatfile mcMMO will now properly include all users in the conversion process
### Admins
* Added ability for admins to spy on party chat (off unless toggled on) /mcchatspy
* The Debug stick can now tell you about properties of a block related to Excavation
### API
* Detailed guide to API changes is available at http://api.mcmmo.org
* Added many missing `SubSkills` to `SubSkillType` class
* Moved a lot of methods from `SkillCommand` to `SkillUtils`
* `SkillType` is now `PrimarySkillType`
* `SecondarySkill` is now `SubSkillType`
* `AbilityType` is now `SuperAbilityType`
* `SecondaryAbilityEvent` is now `SubSkillEvent`
* `SubSkillType` has had many helpful methods added to it
* `GREEN_THUMB_PLANT` & `GREEN_THUMB_BLOCK` are replaced by `GREEN_THUMB`
### Permissions
* Removed all mob health bar permissions, this is no longer a per-player setting.
* Added permission node `mcmmo.commands.mcchatspy` & `mcmmo.commands.mcchatspy.others`
* Added `mcmmo.commands.mmoinfo` for the new `mmoinfo`/`mcinfo` command
* Added permission nodes for Harvest Lumber, Splinter, Nature's Bounty, and Bark Surgeon
* Call of the wild now uses `mcmmo.ability.taming.callofthewild` instead of `mcmmo.ability.taming.callofthewild.all`
* Replaced the old Double Drop permission node for woodcutting with a new Harvest Lumber permission node
* Fast Food Service permission node renamed to `mcmmo.ability.taming.fastfoodservice`
* Counter Attack permission node renamed to `mcmmo.ability.swords.counterattack`
* Arrow Deflect permission node renamed to `mcmmo.ability.unarmed.arrowdeflect`
* Iron Arm Style permission node renamed to `mcmmo.ability.unarmed.ironarmstyle`
### Commands
* Added new info command `/mmoinfo` or `/mcinfo`
* Added toggle command `/mcchatspy`
* `/mcMMO help` no longer displays the other/special commands category to players lacking permissions
* Removed the `mobhealthbar` command, this is no longer a per-player setting.
### Misc Config Changes
* Removed `SkillShot`'s `IncreaseLevel` & `IncreasePercentage` (replaced by `RankDamageMultiplier`)
* Removed `AxeMastery`'s `MaxBonus` & `MaxBonusLevel` (replaced by `RankDamageMultiplier`)
* `Unarmed.IronArm` in `advanced.yml` is now `Unarmed.IronArmStyle`
* `Unarmed.Deflect` in `advanced.yml` is now `Unarmed.ArrowDeflect`
* `Swords.Counter` in `advanced.yml` is now `Swords.CounterAttack`
* `Archery.Retrieve` in `advanced.yml` is now `Archery.ArrowRetrieval`
* `Axes.CriticalHit` in `advanced.yml` is now `Axes.CriticalStrikes`
* Archery's Skill Shot now uses `RankDamageMultiplier` for its damage bonus calculations
* Axe's Axe mastery now uses `RankDamageMultiplier` for its damage bonus calculations
### Misc Changes
* Removed everything involving the kraken
* Code cleanup in a lot of places... unfortunately there is still much left to do!

View File

@@ -1,56 +1,40 @@
# mcMMO
## The RPG lovers mod
## Website
I'm working on a brand new website for mcMMO
You can check it out here http://www.mcmmo.org
I plan to post links to our new wiki (its still under development), downloads, and dev blogs there.
### Contributing
As the plugin is being developed for multiple Minecraft versions, and multiple Minecraft platforms (read: [sponge](https://spongepowered.org/), [spigot](https://spigotmc.org/), bukkit, and [paper](https://papermc.io)), the
overall build process is handled by [Gradle](https://gradle.org/) with [Kotlin-dsl](https://github.com/gradle/kotlin-dsl) based scripts.
As such, an IDE is strongly recommended when attempting to contribute features, additions, changes, bug fixes, etc. to mcMMO as the scripts handle a
majority of our dependencies and rebuilding a production worthy jar.
To get started, a few things need to be installed:
- JDK 8 (not 9, 10, 11, or 7)
- git
- Your favorite IDE (can be [Eclipse](https://eclipse.org/), [IntelliJ](https://jetbrains.org/)
- BuildTools.jar from [Spigot](https://www.spigotmc.org/wiki/buildtools/)
##### Using BuildTools
BuildTools is used to generate the craftbukkit/spigot dependencies used for varoius versions of Minecraft.
The key with this tool is that it can build and deploy multiple vesions of Minecraft based on "reviewions".
### Builds
Currently, you can obtain our builds via the Spigot resource page: https://spigot.mcmmo.org
### Dev builds
Our latest development builds are available ~~[here](http://ci.mcmmo.info)~~. Unfortunately, the mcMMO site is down; a temporary dev build location is hosted [here](http://ci.ecocitycraft.com/job/mcMMO/).
### Brief Description
The goal of mcMMO is to take core Minecraft game mechanics and expand them into add an extensive and quality RPG experience. Everything in mcMMO has been carefully thought out and is constantly being improved upon. Currently, mcMMO adds fourteen unique skills to train and level in. Each of these skills is highly customizable through our configuration files, allowing server admins to tweak mcMMO to best suit the needs of his or her server. Know that the mcMMO team is dedicated to providing an ever-evolving experience, and that we carefully read all feedback and bug reports in order to evaluate and balance the mechanics of mcMMO in every update.
## About the Team
mcMMO is currently developed by a team of individuals from all over the world.
### Project Lead & Founder
[![com.gmail.nossr50](http://www.gravatar.com/avatar/f2ee41eedfd645fb4a3a2c8f6cb1b18c.png)](https://github.com/com.gmail.nossr50)
### Former Lead
[![gmcferrin](http://www.gravatar.com/avatar/b64c52daf25d206b27650788b5813b7b.png)](https://github.com/gmcferrin)
### Glorious Leader
[![gmcferrin](http://www.gravatar.com/avatar/b64c52daf25d206b27650788b5813b7b.png)]
(https://github.com/gmcferrin)
### Developers
[![bm01](http://www.gravatar.com/avatar/ec8146f5358177f12e9a252271bbc391.png)](https://github.com/bm01)
[![Glitchfinder](http://www.gravatar.com/avatar/5aa4cce22f72ae9c002ecec30f061d00.png)](https://github.com/Glitchfinder)
[![NuclearW](http://www.gravatar.com/avatar/90926bdcf1c8a75918df5ea5fa801ce6.png)](https://github.com/NuclearW)
[![shatteredbeam](http://www.gravatar.com/avatar/cad3b5d7d39cf5387afb87f494389610.png)](https://github.com/shatteredbeam)
[![TfT_02](http://www.gravatar.com/avatar/b8914f9970e1f6ffd5281ce4770e20a7.png)](https://github.com/TfT-02)
[![t00thpick1](http://www.gravatar.com/avatar/ee23c7794a0c40120c3474287c7bce06.png)](https://github.com/t00thpick1)
[![riking](https://1.gravatar.com/avatar/aca9f37e569ac3a63929920035a91ba4.png)](https://github.com/riking)
[![bm01](http://www.gravatar.com/avatar/ec8146f5358177f12e9a252271bbc391.png)]
(https://github.com/bm01)
[![Glitchfinder](http://www.gravatar.com/avatar/5aa4cce22f72ae9c002ecec30f061d00.png)]
(https://github.com/Glitchfinder)
[![nossr50](http://www.gravatar.com/avatar/f2ee41eedfd645fb4a3a2c8f6cb1b18c.png)]
(https://github.com/nossr50)
[![NuclearW](http://www.gravatar.com/avatar/90926bdcf1c8a75918df5ea5fa801ce6.png)]
(https://github.com/NuclearW)
[![shatteredbeam](http://www.gravatar.com/avatar/cad3b5d7d39cf5387afb87f494389610.png)]
(https://github.com/shatteredbeam)
[![TfT_02](http://www.gravatar.com/avatar/b8914f9970e1f6ffd5281ce4770e20a7.png)]
(https://github.com/TfT-02)
[![t00thpick1](http://www.gravatar.com/avatar/ee23c7794a0c40120c3474287c7bce06.png)]
(https://github.com/t00thpick1)
[![riking](https://1.gravatar.com/avatar/aca9f37e569ac3a63929920035a91ba4.png)]
(https://github.com/riking)
### Special thanks
[![EasyMFnE](https://www.gravatar.com/avatar/99c9a1fa3bbf957791ceac7b45daadb0.png)](https://github.com/EasyMFnE)
[![EasyMFnE](https://www.gravatar.com/avatar/99c9a1fa3bbf957791ceac7b45daadb0.png)]
(https://github.com/EasyMFnE)
Added the Alchemy skill
## Compiling
@@ -60,7 +44,9 @@ mcMMO uses Maven 3 to manage dependencies, packaging, and shading of necessary c
The typical command used to build mcMMO is: `mvn clean package install`
Required Libraries:
* Bukkit
* JUnit
* EMetrics
* Bukkit
* TagAPI
https://spigot.mcmmo.org for more up to date information.
http://dev.bukkit.org/server-mods/mcmmo for more up to date information.

View File

@@ -1,139 +0,0 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
/*
* Declares the version of the Gradle wrapper. We need 4.9 for now because
* ForgeGradle 3+ is a hard dependency for Gradle 4.9, 4.10 is not compatible
*/
val wrapper by tasks.getting(Wrapper::class) {
gradleVersion = "4.9"
}
/*
* Sets up project references to be used in child scripts, like
* ":bukkit", ":core", ":sponge" where these projects need to be
* referred to for dependencies, paths, outputs etc.
* Projects is specifically an object stored in <root>/buildSrc/src/main/java/Config.kt
* It's a nullable variable, but we just store it here and use it elsewhere.
*/
Projects.core = project("core")
Projects.bukkit = project("bukkit")
Projects.sponge = project("sponge")
/*
Declares the various other projects and stores them to Gradle's `extra` properties.
These are potentially usable for other purposes, but for now, they're here only to
declare the values for this root project's dependency (for shadowjar)
*/
var core: Project by extra { project("core") }
val bukkit by extra { project("bukkit") }
val bukkit_18 by extra { bukkit.project("1_8_8") }
val bukkit_112 by extra { bukkit.project("1_12") }
val bukkit_113 by extra { bukkit.project("1_13") }
val sponge by extra { project("sponge") }
val sponge_7 by extra { sponge.project("api7") }
group = properties["pluginGroup"]!!
version = properties["pluginVersion"]!!
/*
Even though all projects declares some of these plugins, we want to declare them the traditional
way so that we can have IDE utiliziation and processing, it helps with writing these scripts.
*/
plugins {
`java-library`
`maven-publish`
id("com.github.johnrengelman.shadow") version "4.0.4"
}
/*
Default management for ALL projects, not just root, or ":bukkit", but all projects and
their children projects.
*/
allprojects {
/*
We need the java library processing, and shadow allows us to run
shadowJar to relocate dependencies and bundle dependencies into a fat jar.
*/
apply(plugin="java-library")
apply(plugin="com.github.johnrengelman.shadow")
/*
Defines all the repositories for all project dependency resolutions. Some of these
repositories are meant for specific dependencies, so the content filters will
prevent attempts at resolving those dependencies being requested at those repositories.
Constants are defined in <root>/buildSrc/src/main/java/Config.kt
*/
repositories {
mavenCentral()
maven(Repos.sk89q) // WorldEdit/WorldGuard
maven(Repos.bstats) // bstats
maven(Repos.sponge) // Sponge, Configurate, and some other things
maven(Repos.spigot) // Spigot and Bukkit
maven(Repos.sonatype) // General Maven
mavenLocal() // For nms packages
}
// Sets all projects compatibility level to Java 8
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
// Encoding for all packages is UTF-8
tasks.getting(JavaCompile::class) {
options.encoding = "UTF-8"
}
// Default shadow jar configuration. Sub projects will override and add on,
// but this sets up at the very least the jdbc connection dependencies to be relocated
val shadowJar by tasks.getting(ShadowJar::class) { // Configure basics of relocation
relocate(Shadow.Origin.juli, Shadow.Target.juli)
relocate(Shadow.Origin.tomcat, Shadow.Target.tomcat)
exclude(Shadow.Exclude.ForgeGradle.dummyThing)
exclude(Shadow.Exclude.ForgeGradle.template)
}
}
/*
All subprojects shadowjar tasks that will exclude various dependencies, while
the root project will include some of these dependencies (like jdbc, configurate)
so that the sub project jars are already somewhat minimized, in the event those
platform jars are to be deployed individually versus an overall "all platforms"
jar.
*/
subprojects {
val shadowJar by tasks.getting(ShadowJar::class) {
dependencies {
exclude(dependency("${Deps.Groups.sponge}:${Deps.Modules.configurate_yaml}"))
exclude(dependency(Shadow.Exclude.guava))
exclude(dependency(Shadow.Exclude.snakeyaml))
exclude(dependency(Shadow.Exclude.tomcat))
exclude(dependency(Shadow.Exclude.juli))
}
}
}
// Sets up this root project to depend on all the implementations supported.
// By default, they all already should have shadow relocations and packaging,
// and their dependencies should not be leaking into this project.
dependencies {
compile(bukkit)
compile(sponge)
compile(bukkit_18)
compile(bukkit_112)
compile(bukkit_113)
compile(sponge_7)
}
// Configure shadow for the root project, we want to relocate bstats-bukkit
// and whatever else is configured in the allProjects configuration
val shadowJar by tasks.getting(ShadowJar::class) { // Root shadow relocation
relocate(Shadow.Origin.bstatsBukkit, Shadow.Target.bstatsBukkit)
baseName = "mcMMO"
classifier = "bundle"
}
// Tell the build task to depend on shadowjar.
val build by tasks
build.dependsOn(shadowJar)

View File

@@ -1,8 +0,0 @@
plugins {
`kotlin-dsl`
}
repositories {
jcenter()
}

View File

@@ -1,191 +0,0 @@
@file:Suppress("MayBeConstant", "unused")
import org.gradle.api.Project
object Plugins {
const val spongeGradleId = "${Deps.Groups.sponge}.plugin"
object FG2_3 {
const val classpath = "net.minecraftforge.gradle:ForgeGradle:${Versions.fg23}"
const val extensionName = "minecraft"
const val id = "net.minecraftforge.gradle.forge"
}
}
object Repos {
const val sk89q = "https://maven.sk89q.com/repo"
// bStats
const val bstats = "https://repo.codemc.org/repository/maven-public"
// configurate
const val sponge = "https://repo.spongepowered.org/maven/"
const val spigot = "https://hub.spigotmc.org/nexus/content/repositories/snapshots"
const val sonatype = "https://oss.sonatype.org/content/repositories/snapshots"
const val forge = "https://files.minecraftforge.net/maven/"
}
object Config {
object Libs {
const val configurate = "${Deps.Groups.sponge}:${Deps.Modules.configurate_yaml}:${Versions.configurate}"
const val jdbc = "${Deps.Groups.tomcat}:${Deps.Modules.jdbc}:${Versions.jdbc}"
const val juli = "${Deps.Groups.tomcat}:${Deps.Modules.juli}:${Versions.jdbc}"
const val junitDep = "${Deps.Groups.junit}:${Deps.Modules.junit}:${Versions.junit}"
const val flowmath = "${Deps.Groups.flowpowered}:${Deps.Modules.flowmath}:${Versions.flowmath}"
object Bukkit {
object `1_8` {
const val api = "$bukkit:${Versions.bukkit18}"
const val spigotApi = "${Bukkit.spigotApi}:${Versions.bukkit18}"
const val spigot = "$${Bukkit.spigot}:${Versions.bukkit18}"
const val nms = "$craftbukkit:${Versions.bukkit18}"
// only legacy existed at this point, no core.
const val wgLegacy = "${Bukkit.wgLegacy}:${Versions.wg18}"
}
object `1_12` {
const val api = "$bukkit:${Versions.bukkit112}"
const val spigotApi = "${Bukkit.spigotApi}:${Versions.bukkit112}"
const val spigot = "$${Bukkit.spigot}:${Versions.bukkit112}"
const val nms = "$craftbukkit:${Versions.bukkit112}"
// only legacy existed at this point, no core.
const val wgLegacy = "${Bukkit.wgLegacy}:${Versions.wg112}"
}
object `1_13` {
const val api = "$bukkit:${Versions.bukkit113}"
const val spigotApi = "${Bukkit.spigotApi}:${Versions.bukkit113}"
const val spigot = "$${Bukkit.spigot}:${Versions.bukkit113}"
const val nms = "$craftbukkit:${Versions.bukkit113}"
const val wgCore = "${Bukkit.wgCore}:${Versions.wg113}"
const val wgLegacy = "${Bukkit.wgLegacy}:${Versions.wg113}"
}
const val bukkit = "${Deps.Groups.bukkit}:${Deps.Modules.bukkit}"
const val craftbukkit = "${Deps.Groups.bukkit}:${Deps.Modules.craftbukkit}"
const val wgCore = "${Deps.Groups.worldguard}:${Deps.Modules.wgCore}"
const val wgLegacy = "${Deps.Groups.worldguard}:${Deps.Modules.wgLegacy}"
const val spigotApi = "${Deps.Groups.spigot}:${Deps.Modules.spigotApi}"
const val spigot = "${Deps.Groups.spigot}:${Deps.Modules.spigot}"
const val bstats = "${Deps.Groups.bstats}:${Deps.Modules.bstatsBukit}:${Versions.bstats}"
}
object Sponge {
object API7 { // All of these are specific to the API7 module, API8 will change
const val forgeGradleId = "net.minecraftforge.gradle.forge"
const val spongeGradleId = "${Deps.Groups.sponge}.plugin"
const val spongeGradleVersion = "0.9.0"
const val api = "${Sponge.api}:${Versions.sapi7}"
const val common = "${Sponge.common}:${Versions.spongeImpl7}"
const val forge_version = "14.23.5.2768"
const val minecraftVersion = "1.12.2-$forge_version"
const val mappings = "snapshot_20180808"
}
object Exclude {
const val group = Deps.Groups.sponge
const val module = Deps.Modules.spongeAPI
}
const val api = "${Deps.Groups.sponge}:${Deps.Modules.spongeAPI}"
const val common = "${Deps.Groups.sponge}:${Deps.Modules.spongecommon}"
const val bstats = "${Deps.Groups.bstats}:${Deps.Modules.bstatsSponge}:${Versions.bstats}"
}
}
}
object Deps {
object Groups {
const val nossr = "com.gmail.nossr50"
const val google = "com.google"
const val guava = "com.google.guava"
const val gson = "com.google.code.gson"
const val yaml = "org.yaml"
const val sk89q = "com.sk89q"
const val apache = "org.apache"
const val worldguard = "$sk89q.worldguard"
const val worldedit = "$sk89q.worldedit"
const val sponge = "org.spongepowered"
const val spigot = "org.spigotmc"
const val md5 = "net.md_5"
const val bukkit = "org.bukkit"
const val bstats = "org.bstats"
const val tomcat = "org.apache.tomcat"
const val junit = "junit"
const val checker = "org.checkerframework"
const val flowpowered = "com.flowpowered"
}
object Modules {
const val guava = "guava"
const val gson = "gson"
const val snakeyaml = "snakeyaml"
const val wgCore = "worldguard-core"
const val wgLegacy = "worldguard-legacy"
const val bungeecordChat = "bungeecord-chat"
const val spongeAPI = "spongeapi"
const val spongecommon = "spongecommon"
const val spongeforge = "spongeforge"
const val spongevanilla = "spongevanilla"
const val bukkit = "bukkit"
const val craftbukkit = "craftbukkit"
const val bstatsBukit = "bstats-bukkit"
const val bstatsSponge = "bstats-sponge"
const val spigotApi = "spigot-api"
const val spigot = "spigot"
const val configurate = "configurate"
const val configurate_core = "${configurate}-core"
const val configurate_yaml = "${configurate}-yaml"
const val jdbc = "tomcat-jdbc"
const val juli = "tomcat-juli"
const val junit = "junit"
const val checker = "checker-qual"
const val flowmath = "flow-math"
}
}
object Projects {
var core: Project? = null
var bukkit: Project? = null
var sponge: Project? = null
}
object Shadow {
object Origin {
const val juli = "${Deps.Groups.apache}.juli"
const val tomcat = "${Deps.Groups.apache}.tomcat"
const val apache = "${Deps.Groups.apache}.commons.logging"
const val bstatsBukkit = "${Deps.Groups.bstats}.bukkit"
const val configurate = "ninja.leaping.configurate"
const val checker = "org.checkerframework"
}
object Target {
const val juli = "${Deps.Groups.nossr}.database.tomcat.juli"
const val tomcat = "${Deps.Groups.nossr}.database.tomcat"
const val apache = "${Deps.Groups.nossr}.commons.logging"
const val bstatsBukkit = "${Deps.Groups.nossr}.metrics.bstat"
const val configurate = "${Deps.Groups.nossr}.${Deps.Modules.configurate}"
const val checker = "${Deps.Groups.nossr}.${Deps.Modules.configurate}.checkerframework"
}
object Exclude {
const val tomcat = "${Deps.Groups.tomcat}:${Deps.Modules.jdbc}"
const val juli = "${Deps.Groups.apache}:${Deps.Modules.juli}"
const val guava = "${Deps.Groups.guava}:${Deps.Modules.guava}"
const val snakeyaml = "${Deps.Groups.yaml}:${Deps.Modules.snakeyaml}"
const val bukkit = Deps.Groups.bukkit
const val spigot = Deps.Groups.spigot
const val sk89q = "com.sk89q"
const val wg = "$sk89q.worldguard"
const val intake = "$sk89q.intake"
const val flyway = "com.flywaydb"
const val khelekore = "org.khelekore"
const val findbugs = "com.google.code.findbugs"
const val bstats = "${Deps.Groups.bstats}"
object ForgeGradle {
const val dummyThing = "dummyThing"
const val template = "Version.java.template"
}
}
}

View File

@@ -1,16 +0,0 @@
object Versions {
const val configurate = "3.6" // Latest configurate
const val flowmath = "1.0.4-SNAPSHOT"
const val bukkit18 = "1.8.8-R0.1-SNAPSHOT" // Last bukkit 1.8.8
const val bukkit112 = "1.12.2-R0.1-SNAPSHOT" // Last bukkit 1.12.2
const val bukkit113 = "1.13.2-R0.1-SNAPSHOT" // Latest bukkit
const val sapi7 = "7.1.0" // Latest SpongeAPI stable
const val spongeImpl7 = "7.1.5" // Latest SpongeCommon stable
const val jdbc = "7.0.52"
const val junit = "4.12"
const val fg23 = "2.3-SNAPSHOT" // ForgeGradle to support MC 1.12.2
const val wg18 = "6.1.2" // Bukkit/CraftBukkit/Spigot 1.8.8 supported build, works on newer, but last one to support 1.8.8
const val wg112 = "6.2" // Last WorldGuard to support 1.12
const val wg113 = "7.0.0-SNAPSHOT" // Latest WorldGuard to support 1.13.2
const val bstats = "1.4" // Supports all backwards compatible. Always relocated
}

View File

@@ -1,27 +0,0 @@
import Config.Libs.Bukkit.`1_12` as Bukkit
// Config is located in <root>/buildSrc/src/main/java/Config.kt
// It provides a bunch of constant values we use as dependency
// strings, so we don't have to duplicate a bunch of them in
// various scripts.
plugins {
java // This is already provided, but for static compilation,
// we declare it here so we can use the IDE static type references
}
/*
Dependency inheritance is as follows
- ":core", which provides
configurate, tomcat jdbc/juli, and flowmath. It excludes sub
dependencies like guava and apache commons lang.
- ":bukkit", which provides nothing on it's own, except the
core bukkit classes that can be built on 1.13.2 API (which may change).
It also defines all subprojects to depend on ":core", and ":bukkit",
and bstats-bukkit.
*/
dependencies {
compileOnly(Bukkit.api) // Bukkit API for 1.12.2
compileOnly(Bukkit.nms) // CraftBukkit for 1.12.2
compileOnly(Bukkit.wgLegacy) // WorldGuard for 1.12.2 bukkit
}

View File

@@ -1,106 +0,0 @@
package com.gmail.nossr50.bukkit.v1_12;
import com.gmail.nossr50.VersionedHandler;
import com.gmail.nossr50.mcMMO;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
import net.minecraft.server.v1_12_R1.Chunk;
import net.minecraft.server.v1_12_R1.EntityTypes;
import net.minecraft.server.v1_12_R1.IBlockData;
import net.minecraft.server.v1_12_R1.IBlockState;
import net.minecraft.server.v1_12_R1.MinecraftKey;
import net.minecraft.server.v1_12_R1.RegistryBlocks;
import net.minecraft.server.v1_12_R1.RegistryMaterials;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.v1_12_R1.CraftChunk;
import org.bukkit.craftbukkit.v1_12_R1.block.CraftBlockState;
import org.bukkit.craftbukkit.v1_12_R1.entity.CraftEntity;
import org.bukkit.entity.Entity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class NmsHandler extends VersionedHandler {
/**
* Static reference to the block registry. Don't really care about the fact that
* it is being stored as a reference here, but for imports reasons, it's smaller
* line length makes it optimal to read for method usages.
*/
private static final RegistryBlocks<MinecraftKey, net.minecraft.server.v1_12_R1.Block> BLOCK_REGISTRY = net.minecraft.server.v1_12_R1.Block.REGISTRY;
/**
* We can keep track of block state id's by generating them on demand, i.e., when
* they're being requested from Blocks, or BlockDatas.
*/
private static final RegistryMaterials<MinecraftKey, IBlockData> BLOCK_STATE_REGISTRY = new RegistryMaterials<>();
NmsHandler(mcMMO plugin) {
super(plugin);
}
@Override
public String getIdFor(Block block) {
// We have to get the underlying nms block by the block, which might as well just be the type id.
final Chunk chunk = ((CraftChunk) block.getChunk()).getHandle();
// Get the block state from the underlying chunk (stored by reference in CraftBlock)
final IBlockData blockState = chunk.a(block.getX(), block.getY(), block.getZ());
// Sadly, Mojang doesn't store the string id onto blocks, states, or any of their types, they just call the registry.
final MinecraftKey key = BLOCK_REGISTRY.b(blockState.getBlock());
return key.toString();
}
@Override
public String getIdFor(Entity entity) {
// Every entity knows it's "type". Here, we just use the right method getter to get the EntityTypes instance for that entity
final net.minecraft.server.v1_12_R1.Entity nmsEntity = ((CraftEntity) entity).getHandle();
// And then... well. we get the string id from the registry, based on the entity class to id mapping in EntityTypes.
final MinecraftKey key = EntityTypes.a(nmsEntity);
// If the key is null, well, we've got bigger problems...
return key == null ? "minecraft:slime" : key.toString();
}
@SuppressWarnings("Duplicates")
@Override
public String getIdFor(BlockState block) {
// Since we don't really want to trust what "BlockState" gives us, and the API doesn't give us anything but
// what the API wants to give us, we have to dig into internals to get the true BlockState representation
final CraftBlockState craftState = (CraftBlockState) block;
// Because CraftBlock also stores the chunk reference, we can short cut in to use the chunk, instead of pinging
// the chunk map on WorldServer
final CraftChunk craftChunk = (CraftChunk) craftState.getChunk();
// Then query for the block state from the chunk.
final IBlockData nmsState = craftChunk.getHandle().a(block.getX(), block.getY(), block.getZ());
// And then we're gucci
final net.minecraft.server.v1_12_R1.Block nmsBlock = nmsState.getBlock();
final MinecraftKey blockKey = BLOCK_REGISTRY.b(nmsBlock);
// Now we can check if our blockstate registry actually has the block state.
final MinecraftKey stateKey = BLOCK_STATE_REGISTRY.b(nmsState);
if (stateKey != null) { // If the state has been registered by the handler, then by all means.
return stateKey.toString();
}
// If not, well, it needs to have a key generated and registered.
final String nameSpace = blockKey.getKey();
StringBuilder builder = new StringBuilder();
builder.append(nameSpace); // We only want to get the block id, not the domain id, since that's going to be appended later
// Get the full Property -> Value mapping for the block state
final ImmutableMap<IBlockState<?>, Comparable<?>> properties = nmsState.t();
if (!properties.isEmpty()) {
builder.append('[');
Joiner joiner = Joiner.on(',');
List<String> propertyValues = new ArrayList<>();
// Yadadadada, go through all property entries and add each as a string for the "propertyName=value" (like "variant=oak")
for (Map.Entry<IBlockState<?>, Comparable<?>> entry : properties.entrySet()) {
// a() gets the inputted "name" for the state, the value, well, that gets the value, which is always toStringable.
propertyValues.add(entry.getKey().a() + "=" + entry.getValue());
}
builder.append(joiner.join(propertyValues));
builder.append(']');
}
// Now we can make the MinecraftKey...
final MinecraftKey newKey = new MinecraftKey(builder.toString());
BLOCK_STATE_REGISTRY.a(newKey, nmsState);
return newKey.toString();
}
}

View File

@@ -1,27 +0,0 @@
import Config.Libs.Bukkit.`1_13` as Bukkit
// Config is located in <root>/buildSrc/src/main/java/Config.kt
// It provides a bunch of constant values we use as dependency
// strings, so we don't have to duplicate a bunch of them in
// various scripts. The import allows us to "import as" for shorthand
plugins {
`java-library` // This is already provided, but for static compilation,
// we declare it here so we can use the IDE static type references
}
/*
Dependency inheritance is as follows
- ":core", which provides
configurate, tomcat jdbc/juli, and flowmath. It excludes sub
dependencies like guava and apache commons lang.
- ":bukkit", which provides nothing on it's own, except the
core bukkit classes that can be built on 1.13.2 API (which may change).
It also defines all subprojects to depend on ":core", and ":bukkit",
and bstats-bukkit.
*/
dependencies {
compileOnly(Bukkit.api) // Bukkit API for 1.13.2 - Defined in <root>/buildSrc/src/main/java/Config.kt
compileOnly(Bukkit.nms) // CraftBukkit-1.13.2-R0.1-SNAPSHOT - Defined in <root>/buildSrc/src/main/java/Config.kt
compileOnly(Bukkit.wgCore) // WorldGuard-core - Defined in <root>/buildSrc/src/main/java/Config.kt
compileOnly(Bukkit.wgLegacy) // WorldGuard-legacy - Defined in <root>/buildSrc/src/main/java/Config.kt
}

View File

@@ -1,101 +0,0 @@
package com.gmail.nossr50.bukkit.v1_13;
import com.gmail.nossr50.VersionedHandler;
import com.gmail.nossr50.mcMMO;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
import net.minecraft.server.v1_13_R2.EntityTypes;
import net.minecraft.server.v1_13_R2.IBlockData;
import net.minecraft.server.v1_13_R2.IBlockState;
import net.minecraft.server.v1_13_R2.IRegistry;
import net.minecraft.server.v1_13_R2.MinecraftKey;
import net.minecraft.server.v1_13_R2.RegistryMaterials;
import net.minecraft.server.v1_13_R2.WorldServer;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.v1_13_R2.block.CraftBlock;
import org.bukkit.craftbukkit.v1_13_R2.block.CraftBlockState;
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftEntity;
import org.bukkit.entity.Entity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class NmsHandler extends VersionedHandler {
private static final IRegistry<net.minecraft.server.v1_13_R2.Block> BLOCK_REGISTRY = IRegistry.BLOCK;
private static final IRegistry<EntityTypes<?>> ENTITY_REGISTRY = IRegistry.ENTITY_TYPE;
/**
* We use {@link RegistryMaterials} because we don't want to default to another block state,
* if a {@link IBlockData} is not registered, we need to generate an ID and register that key to
* that {@link IBlockData}. By default, this should be populated during plugin startup by
* calling some init method, but that will be determined later.
*/
private static final IRegistry<IBlockData> BLOCK_STATE_REGISTRY = new RegistryMaterials<>();
NmsHandler(mcMMO plugin) {
super(plugin);
}
@Override
public String getIdFor(Block block) {
// We have to get the underlying nms block by the block, which might as well just be the type id.
final WorldServer world = ((CraftBlock) block).getCraftWorld().getHandle();
// The registry.c(T) will return MinecraftKey, and the toString() returns the "$mod:$name", so "minecraft:stone"
final IBlockData blockState = world.getType(((CraftBlock) block).getPosition());
// Sadly, Mojang doesn't store the string id onto blocks, states, or any of their types, they just call the registry.
final MinecraftKey key = BLOCK_REGISTRY.getKey(blockState.getBlock());
// Sometimes, there's a rare case with mods where the key is going to be null, but should never happen in bukkit/spigot.
return key == null ? "minecraft:air" : key.toString();
}
@Override
public String getIdFor(Entity entity) {
// Every entity knows it's "type". Here, we just use the right method getter to get the EntityTypes instance for that entity
final EntityTypes<?> entityType = ((CraftEntity) entity).getHandle().P();
// And then... well. we get the string id from the registry!
final MinecraftKey key = ENTITY_REGISTRY.getKey(entityType);
// If the key is null, well, we've got bigger problems...
return key == null ? "minecraft:slime" : key.toString();
}
@SuppressWarnings("Duplicates")
@Override
public String getIdFor(BlockState block) {
// Much like #getIdFor(Block) except here we have the "state" by numerical id. So.. we have to grab it from
// the world.
final CraftBlockState craftState = (CraftBlockState) block;
final IBlockData nmsState = craftState.getHandle();
final net.minecraft.server.v1_13_R2.Block nmsBlock = nmsState.getBlock();
final MinecraftKey blockKey = BLOCK_REGISTRY.getKey(nmsBlock);
// Now we can check if our blockstate registry actually has the block state.
final MinecraftKey stateKey = BLOCK_STATE_REGISTRY.getKey(nmsState);
if (stateKey != null) { // If the state has been registered by the handler, then by all means.
return stateKey.toString();
}
// If not, well, it needs to have a key generated and registered.
final String nameSpace = blockKey.getKey();
StringBuilder builder = new StringBuilder();
builder.append(nameSpace); // We only want to get the block id, not the domain id, since that's going to be appended later
// Get the full Property -> Value mapping for the block state
final ImmutableMap<IBlockState<?>, Comparable<?>> properties = nmsState.getStateMap();
if (!properties.isEmpty()) {
builder.append('[');
Joiner joiner = Joiner.on(',');
List<String> propertyValues = new ArrayList<>();
// Yadadadada, go through all property entries and add each as a string for the "propertyName=value" (like "variant=oak")
for (Map.Entry<IBlockState<?>, Comparable<?>> entry : properties.entrySet()) {
// a() gets the inputted "name" for the state, the value, well, that gets the value, which is always toStringable.
propertyValues.add(entry.getKey().a() + "=" + entry.getValue());
}
builder.append(joiner.join(propertyValues));
builder.append(']');
}
// Now we can make the MinecraftKey...
final MinecraftKey newKey = new MinecraftKey(builder.toString());
BLOCK_STATE_REGISTRY.a(newKey, nmsState);
return newKey.toString();
}
}

View File

@@ -1,23 +0,0 @@
import Config.Libs.Bukkit.`1_8` as Bukkit
plugins {
java
}
/*
Dependency inheritance is as follows
- ":core", which provides
configurate, tomcat jdbc/juli, and flowmath. It excludes sub
dependencies like guava and apache commons lang.
- ":bukkit", which provides nothing on it's own, except the
core bukkit classes that can be built on 1.13.2 API (which may change).
It also defines all subprojects to depend on ":core", and ":bukkit",
and bstats-bukkit.
*/
dependencies {
compileOnly(Bukkit.api) // Bukkit API for 1.8.8 - Defined in <root>/buildSrc/src/main/java/Config.kt
compileOnly(Bukkit.nms) // CraftBukkit-1.8.8-R0.3-SNAPSHOT - Defined in <root>/buildSrc/src/main/java/Config.kt
compileOnly(Bukkit.wgLegacy) // Old worldguard - Defined in <root>/buildSrc/src/main/java/Config.kt
}

View File

@@ -1,93 +0,0 @@
package com.gmail.nossr50.bukkit.v1_8;
import com.gmail.nossr50.VersionedHandler;
import com.gmail.nossr50.mcMMO;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
import net.minecraft.server.v1_8_R3.Blocks;
import net.minecraft.server.v1_8_R3.EntityTypes;
import net.minecraft.server.v1_8_R3.IBlockData;
import net.minecraft.server.v1_8_R3.IBlockState;
import net.minecraft.server.v1_8_R3.MinecraftKey;
import net.minecraft.server.v1_8_R3.RegistryBlocks;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers;
import org.bukkit.entity.Entity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@SuppressWarnings({"unused", "Duplicates"}) // We use reflection to load this handler on 1.8 versions
public class NmsHandler extends VersionedHandler {
/**
* Static reference to the block registry. Don't really care about the fact that
* it is being stored as a reference here, but for imports reasons, it's smaller
* line length makes it optimal to read for method usages.
*/
private static final RegistryBlocks<MinecraftKey, net.minecraft.server.v1_8_R3.Block> BLOCK_REGISTRY = net.minecraft.server.v1_8_R3.Block.REGISTRY;
/**
* We can keep track of block state id's by generating them on demand, i.e., when
* they're being requested from Blocks, or BlockDatas.
*/
private static final RegistryBlocks<MinecraftKey, IBlockData> BLOCK_STATE_REGISTRY = new RegistryBlocks<>(BLOCK_REGISTRY.c(Blocks.AIR)); // Default to AIR
NmsHandler(mcMMO plugin) {
super(plugin);
}
@Override
public String getIdFor(Block block) {
// We have to get the underlying nms block by the block, which might as well just be the type id.
final net.minecraft.server.v1_8_R3.Block block1 = CraftMagicNumbers.getBlock(block);
// The registry.c(T) will return MinecraftKey, and the toString() returns the "$mod:$name", so "minecraft:stone"
final MinecraftKey key = BLOCK_REGISTRY.c(block1);
return key.toString();
}
@Override
public String getIdFor(Entity entity) {
// EntityTypes maintains the maps of Class<? extends nms.Entity> to String for id's and to numerical id numbers.
// We of course are using the method that gets us the String id of the entity, such as "minecraft:creeper"
return EntityTypes.b(((CraftEntity) entity).getHandle());
}
@Override
public String getIdFor(BlockState block) {
// Much like #getIdFor(Block) except here we have the "state" by numerical id. So.. we have to grab it from
// the world.
final net.minecraft.server.v1_8_R3.Block nmsBlock = net.minecraft.server.v1_8_R3.Block.REGISTRY.a(block.getTypeId());
final MinecraftKey blockKey = net.minecraft.server.v1_8_R3.Block.REGISTRY.c(nmsBlock);
final IBlockData blockState = nmsBlock.fromLegacyData(block.getRawData());
// Now we can check if our blockstate registry actually has the block state.
final MinecraftKey stateKey = BLOCK_STATE_REGISTRY.c(blockState);
if (stateKey != null) { // If the state has been registered by the handler, then by all means.
return stateKey.toString();
}
// If not, well, it needs to have a key generated and registered.
final String nameSpace = blockKey.a();
StringBuilder builder = new StringBuilder();
builder.append(blockKey.a()); // We only want to get the block id, not the domain id, since that's going to be appended later
// Get the full Property -> Value mapping for the block state
final ImmutableMap<IBlockState, Comparable> properties = blockState.b();
if (!properties.isEmpty()) {
builder.append('[');
Joiner joiner = Joiner.on(',');
List<String> propertyValues = new ArrayList<>();
for (Map.Entry<IBlockState, Comparable> entry : properties.entrySet()) {
// a() gets the inputted "name" for the state, the value, well, that gets the value, which is always toStringable.
propertyValues.add(entry.getKey().a() + "=" + entry.getValue());
}
builder.append(joiner.join(propertyValues));
builder.append(']');
}
// Now we can make the MinecraftKey...
final MinecraftKey newKey = new MinecraftKey(builder.toString());
BLOCK_STATE_REGISTRY.a(newKey, blockState);
return newKey.toString();
}
}

View File

@@ -1,12 +0,0 @@
package com.gmail.nossr50.platform.bukkit;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_8_R3.block.CraftBlock;
public class Testing18 {
Material material;
CraftBlock block;
}

View File

@@ -1,77 +0,0 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import Config.Libs.Bukkit as Bukkit
// Config is located in <root>/buildSrc/src/main/java/Config.kt
// It provides a bunch of constant values we use as dependency
// strings, so we don't have to duplicate a bunch of them in
// various scripts. The import as allows for shorthand.
val bukkit: Project = Projects.bukkit!! // Static project references
val core: Project = Projects.core!! // Stored by Config.kt and created in <root>/build.gradle.kts
/* This configures ":bukkit" and it's dependent projects:
- ":bukkit:1_8_8"
- ":bukkit:1_12"
- ":bukkit:1_13"
Basically sets up all projects to depend on ":core" and
bstats-bukkit. Also sets up shadow to relocate bukkit related
packages to limit platform interference
*/
allprojects {
dependencies {
compile(core) // includes junit for tests
implementation(Bukkit.bstats) // Bukkit bstats
}
// TODO dunno if this works yet... project needs to compile.
val shadowJar by tasks.getting(ShadowJar::class) {
// Relocate bstats for bukkit, as per requirement for bstats
relocate(Shadow.Origin.bstatsBukkit, Shadow.Target.bstatsBukkit)
// Relocate the bukkit platform classes of mcmmo so we don't
// interfere with other platform classes (or core)
relocate(Deps.Groups.nossr, "${Deps.Groups.nossr}.bukkit") {
exclude("${Deps.Groups.nossr}.core")
}
}
}
// Tells all subprojects of ":bukkit" (":bukkit:1_8_8", ":bukkit:1_12",etc.)
// to depend on this project (":bukkit") to inherit the dependencies, and
// does NOT inherit the same configurations (anything configured outside
// here does not persist to child projects).
subprojects {
dependencies {
// Provide the base bukkit plugin dependency for plugin classloading.
// All "versioned" implementations will be properly classloaded by the bukkit parent
compileOnly(bukkit)
}
}
plugins {
`java-library` // This is already provided, but for static compilation,
// we declare it here so we can use the IDE static type references
}
dependencies {
// Temporary dependencies while things are being moved.
compileOnly(Bukkit.`1_13`.spigotApi) { // Spigot API for generic usage. Based on 1.13.2
isTransitive = true // We don't want the dependencies
}
compileOnly(Bukkit.`1_13`.api) { // Bukkit API for generic usage. Based on 1.13.2
isTransitive = true // We don't want the dependencies
}
compileOnly(Bukkit.`1_13`.wgCore) { // WorldGuard dependency, again, for 1.13.2
isTransitive = true // We don't want the dependencies
exclude(group = Shadow.Exclude.sk89q)
exclude(group = Shadow.Exclude.intake, module = "intake")
exclude(group = Shadow.Exclude.sk89q, module = "squirrelid")
exclude(group = Shadow.Exclude.flyway)
exclude(group = Shadow.Exclude.khelekore)
exclude(group = Shadow.Exclude.findbugs)
}
compileOnly(Bukkit.`1_13`.wgLegacy) {
isTransitive = true // We don't want the dependencies
exclude(group = Shadow.Exclude.bukkit)
exclude(group = Shadow.Exclude.sk89q, module = "commandbook")
exclude(group = Shadow.Exclude.bstats)
}
}

View File

@@ -1,12 +0,0 @@
package com.gmail.nossr50;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
public class BukkitBlockType {
private Material material;
private BlockData blockData;
}

View File

@@ -1,74 +0,0 @@
package com.gmail.nossr50;
import com.sk89q.worldedit.extension.platform.NoCapablePlatformException;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity;
public abstract class VersionedHandler {
private static VersionedHandler instance;
private final mcMMO plugin;
protected VersionedHandler(mcMMO plugin) {
this.plugin = plugin;
}
/**
* Gets the string value id of the BlockType, note that this is not the
* blockstate.
*
* Examples include: "minecraft:stone", "minecraft:chest", "thaumcraft:log2"
* BlockStates are more specific like "minecraft:log[variant=oak,axis=x]"
*
* This should be casting down and retrieving the id from the block registry maintained by vanilla.
*
* @param block The block instance (holds byte/numerical id or sometimes block state in newer versions)
* @return The string id of the block type
*/
public abstract String getIdFor(Block block);
/**
* Gets the string value id of the Entity, much like blocks, this is not
* the full string representation of the entity, just the string id of the
* TYPE.
*
* Examples include: "minecraft:creeeper", "minecraft:sheep", "thaumcraft:wisp"
*
* @param entity The entity instance
* @return The string id of the entity's registered type.
*/
public abstract String getIdFor(Entity entity);
// Technically can be TileEntity snapshot references as well.
public abstract String getIdFor(BlockState block);
/**
* Gets the {@link VersionedHandler} instance for this running platform.
* Note that all the handler does is perform various operations necessitated
* by either a lack of, or bridging an implementation of some API/core aspects
* that are not available through Bukkit API (like getting BlockType id's, or
* BlockState id's).
*
* @param plugin The mcmmo plugin
* @return The version handler instance
*/
public VersionedHandler getInstance(mcMMO plugin) {
if (instance == null) {
final String serverPackage = mcMMO.p.getServer().getClass().getPackage().getName();
final String serverVersion = serverPackage.substring(serverPackage.lastIndexOf(".") + 1);
try {
final Class<?> clazz = Class.forName("com.gmail.nossr50.bukkit." + serverVersion + ".NmsHandler");
if (VersionedHandler.class.isAssignableFrom(clazz)) {
instance = (VersionedHandler) clazz.getConstructor(mcMMO.class).newInstance(plugin);
}
} catch (Exception e) {
e.printStackTrace();
throw new NoCapablePlatformException("Could not discover a valid mcMMO VersionedHandler for version:" + serverVersion);
}
}
return instance;
}
}

View File

@@ -1,45 +0,0 @@
package com.gmail.nossr50.commands;
import com.gmail.nossr50.core.config.MainConfig;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.data.database.FlatfileDatabaseManager;
import com.gmail.nossr50.core.data.database.SQLDatabaseManager;
import com.gmail.nossr50.core.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import java.util.List;
public class MHDCommand implements TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (mcMMO.getDatabaseManager() instanceof SQLDatabaseManager) {
SQLDatabaseManager m = (SQLDatabaseManager) mcMMO.getDatabaseManager();
m.resetMobHealthSettings();
for (McMMOPlayer player : UserManager.getPlayers()) {
player.getProfile().setMobHealthbarType(MainConfig.getInstance().getMobHealthbarDefault());
}
sender.sendMessage("Mob health reset");
return true;
}
if (mcMMO.getDatabaseManager() instanceof FlatfileDatabaseManager) {
FlatfileDatabaseManager m = (FlatfileDatabaseManager) mcMMO.getDatabaseManager();
m.resetMobHealthSettings();
for (McMMOPlayer player : UserManager.getPlayers()) {
player.getProfile().setMobHealthbarType(MainConfig.getInstance().getMobHealthbarDefault());
}
sender.sendMessage("Mob health reset");
return true;
}
return false;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return ImmutableList.of();
}
}

View File

@@ -1,325 +0,0 @@
package com.gmail.nossr50.commands;
import com.gmail.nossr50.core.skills.ModConfigType;
import com.gmail.nossr50.core.util.Misc;
import com.gmail.nossr50.mcMMO;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
public class McImportCommand implements CommandExecutor {
int fileAmount;
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
switch (args.length) {
case 0:
importModConfig();
return true;
default:
return false;
}
}
public boolean importModConfig() {
String importFilePath = mcMMO.getModDirectory() + File.separator + "import";
File importFile = new File(importFilePath, "import.log");
mcMMO.p.getLogger().info("Starting import of mod materials...");
fileAmount = 0;
HashMap<ModConfigType, ArrayList<String>> materialNames = new HashMap<ModConfigType, ArrayList<String>>();
BufferedReader in = null;
try {
// Open the file
in = new BufferedReader(new FileReader(importFile));
String line;
String materialName;
String modName;
// While not at the end of the file
while ((line = in.readLine()) != null) {
String[] split1 = line.split("material ");
if (split1.length != 2) {
continue;
}
String[] split2 = split1[1].split(" with");
if (split2.length != 2) {
continue;
}
materialName = split2[0];
// Categorise each material under a mod config type
ModConfigType type = ModConfigType.getModConfigType(materialName);
if (!materialNames.containsKey(type)) {
materialNames.put(type, new ArrayList<String>());
}
materialNames.get(type).add(materialName);
continue;
}
} catch (FileNotFoundException e) {
mcMMO.p.getLogger().warning("Could not find " + importFile.getAbsolutePath() + " ! (No such file or directory)");
mcMMO.p.getLogger().warning("Copy and paste latest.log to " + importFile.getParentFile().getAbsolutePath() + " and rename it to import.log");
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
tryClose(in);
}
createOutput(materialNames);
mcMMO.p.getLogger().info("Import finished! Created " + fileAmount + " files!");
return true;
}
private void createOutput(HashMap<ModConfigType, ArrayList<String>> materialNames) {
for (ModConfigType modConfigType : materialNames.keySet()) {
HashMap<String, ArrayList<String>> materialNamesType = new HashMap<String, ArrayList<String>>();
for (String materialName : materialNames.get(modConfigType)) {
String modName = Misc.getModName(materialName);
if (!materialNamesType.containsKey(modName)) {
materialNamesType.put(modName, new ArrayList<String>());
}
materialNamesType.get(modName).add(materialName);
}
createOutput(modConfigType, materialNamesType);
}
}
private void tryClose(Closeable c) {
if (c == null) {
return;
}
try {
c.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void createOutput(ModConfigType modConfigType, HashMap<String, ArrayList<String>> materialNames) {
File outputFilePath = new File(mcMMO.getModDirectory() + File.separator + "output");
if (!outputFilePath.exists() && !outputFilePath.mkdirs()) {
mcMMO.p.getLogger().severe("Could not create output directory! " + outputFilePath.getAbsolutePath());
}
FileWriter out = null;
String type = modConfigType.name().toLowerCase();
for (String modName : materialNames.keySet()) {
File outputFile = new File(outputFilePath, modName + "." + type + ".yml");
mcMMO.p.getLogger().info("Creating " + outputFile.getName());
try {
if (outputFile.exists() && !outputFile.delete()) {
mcMMO.p.getLogger().severe("Not able to delete old output file! " + outputFile.getAbsolutePath());
}
if (!outputFile.createNewFile()) {
mcMMO.p.getLogger().severe("Could not create output file! " + outputFile.getAbsolutePath());
continue;
}
StringBuilder writer = new StringBuilder();
HashMap<String, ArrayList<String>> configSections = getConfigSections(modConfigType, modName, materialNames);
if (configSections == null) {
mcMMO.p.getLogger().severe("Something went wrong!! type is " + type);
return;
}
// Write the file, go through each skill and write all the materials
for (String configSection : configSections.keySet()) {
if (configSection.equals("UNIDENTIFIED")) {
writer.append("# This isn't a valid config section and all materials in this category need to be").append("\r\n");
writer.append("# copy and pasted to a valid section of this config file.").append("\r\n");
}
writer.append(configSection).append(":").append("\r\n");
for (String line : configSections.get(configSection)) {
writer.append(line).append("\r\n");
}
writer.append("\r\n");
}
out = new FileWriter(outputFile);
out.write(writer.toString());
} catch (IOException e) {
e.printStackTrace();
return;
} catch (Exception e) {
e.printStackTrace();
return;
} finally {
tryClose(out);
fileAmount++;
}
}
}
private HashMap<String, ArrayList<String>> getConfigSections(ModConfigType type, String modName, HashMap<String, ArrayList<String>> materialNames) {
switch (type) {
case BLOCKS:
return getConfigSectionsBlocks(modName, materialNames);
case TOOLS:
return getConfigSectionsTools(modName, materialNames);
case ARMOR:
return getConfigSectionsArmor(modName, materialNames);
case UNKNOWN:
return getConfigSectionsUnknown(modName, materialNames);
}
return null;
}
private HashMap<String, ArrayList<String>> getConfigSectionsBlocks(String modName, HashMap<String, ArrayList<String>> materialNames) {
HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
// Go through all the materials and categorise them under a skill
for (String materialName : materialNames.get(modName)) {
String skillName = "UNIDENTIFIED";
if (materialName.contains("ORE")) {
skillName = "Mining";
} else if (materialName.contains("LOG") || materialName.contains("LEAVES")) {
skillName = "Woodcutting";
} else if (materialName.contains("GRASS") || materialName.contains("FLOWER") || materialName.contains("CROP")) {
skillName = "Herbalism";
} else if (materialName.contains("DIRT") || materialName.contains("SAND")) {
skillName = "Excavation";
}
if (!configSections.containsKey(skillName)) {
configSections.put(skillName, new ArrayList<String>());
}
ArrayList<String> skillContents = configSections.get(skillName);
skillContents.add(" " + materialName + "|0:");
skillContents.add(" " + " " + "XP_Gain: 99");
skillContents.add(" " + " " + "Double_Drops_Enabled: true");
if (skillName.equals("Mining")) {
skillContents.add(" " + " " + "Smelting_XP_Gain: 9");
} else if (skillName.equals("Woodcutting")) {
skillContents.add(" " + " " + "Is_Log: " + materialName.contains("LOG"));
}
}
return configSections;
}
private HashMap<String, ArrayList<String>> getConfigSectionsTools(String modName, HashMap<String, ArrayList<String>> materialNames) {
HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
// Go through all the materials and categorise them under a tool type
for (String materialName : materialNames.get(modName)) {
String toolType = "UNIDENTIFIED";
if (materialName.contains("PICKAXE")) {
toolType = "Pickaxes";
} else if (materialName.contains("AXE")) {
toolType = "Axes";
} else if (materialName.contains("BOW")) {
toolType = "Bows";
} else if (materialName.contains("HOE")) {
toolType = "Hoes";
} else if (materialName.contains("SHOVEL") || materialName.contains("SPADE")) {
toolType = "Shovels";
} else if (materialName.contains("SWORD")) {
toolType = "Swords";
}
if (!configSections.containsKey(toolType)) {
configSections.put(toolType, new ArrayList<String>());
}
ArrayList<String> skillContents = configSections.get(toolType);
skillContents.add(" " + materialName + ":");
skillContents.add(" " + " " + "XP_Modifier: 1.0");
skillContents.add(" " + " " + "Tier: 1");
skillContents.add(" " + " " + "Ability_Enabled: true");
addRepairableLines(materialName, skillContents);
}
return configSections;
}
private HashMap<String, ArrayList<String>> getConfigSectionsArmor(String modName, HashMap<String, ArrayList<String>> materialNames) {
HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
// Go through all the materials and categorise them under an armor type
for (String materialName : materialNames.get(modName)) {
String toolType = "UNIDENTIFIED";
if (materialName.contains("BOOT") || materialName.contains("SHOE")) {
toolType = "Boots";
} else if (materialName.contains("CHESTPLATE") || materialName.contains("CHEST")) {
toolType = "Chestplates";
} else if (materialName.contains("HELM") || materialName.contains("HAT")) {
toolType = "Helmets";
} else if (materialName.contains("LEGGINGS") || materialName.contains("LEGS") || materialName.contains("PANTS")) {
toolType = "Leggings";
}
if (!configSections.containsKey(toolType)) {
configSections.put(toolType, new ArrayList<String>());
}
ArrayList<String> skillContents = configSections.get(toolType);
skillContents.add(" " + materialName + ":");
addRepairableLines(materialName, skillContents);
}
return configSections;
}
private void addRepairableLines(String materialName, ArrayList<String> skillContents) {
skillContents.add(" " + " " + "Repairable: true");
skillContents.add(" " + " " + "Repair_Material: REPAIR_MATERIAL_NAME");
skillContents.add(" " + " " + "Repair_Material_Data_Value: 0");
skillContents.add(" " + " " + "Repair_Material_Quantity: 9");
skillContents.add(" " + " " + "Repair_Material_Pretty_Name: Repair Item Name");
skillContents.add(" " + " " + "Repair_MinimumLevel: 0");
skillContents.add(" " + " " + "Repair_XpMultiplier: 1.0");
Material material = Material.matchMaterial(materialName);
short durability = (material == null) ? (short) 9999 : material.getMaxDurability();
skillContents.add(" " + " " + "Durability: " + ((durability > 0) ? durability : (short) 9999));
}
private HashMap<String, ArrayList<String>> getConfigSectionsUnknown(String modName, HashMap<String, ArrayList<String>> materialNames) {
HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
// Go through all the materials and print them
for (String materialName : materialNames.get(modName)) {
String configKey = "UNIDENTIFIED";
if (!configSections.containsKey(configKey)) {
configSections.put(configKey, new ArrayList<String>());
}
ArrayList<String> skillContents = configSections.get(configKey);
skillContents.add(" " + materialName);
}
return configSections;
}
}

View File

@@ -1,30 +0,0 @@
package com.gmail.nossr50.commands.chat;
import com.gmail.nossr50.commands.ToggleCommand;
import com.gmail.nossr50.core.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.util.Permissions;
import org.bukkit.command.CommandSender;
public class McChatSpy extends ToggleCommand {
@Override
protected boolean hasOtherPermission(CommandSender sender) {
return Permissions.adminChatSpyOthers(sender);
}
@Override
protected boolean hasSelfPermission(CommandSender sender) {
return Permissions.adminChatSpy(sender);
}
@Override
protected void applyCommandAction(McMMOPlayer mcMMOPlayer) {
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.AdminChatSpy." + (mcMMOPlayer.isPartyChatSpying() ? "Disabled" : "Enabled")));
mcMMOPlayer.togglePartyChatSpying();
}
@Override
protected void sendSuccessMessage(CommandSender sender, String playerName) {
sender.sendMessage(LocaleLoader.getString("Commands.AdminChatSpy.Toggle", playerName));
}
}

View File

@@ -1,15 +0,0 @@
package com.gmail.nossr50.commands.server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
/**
* This command facilitates switching the skill system scale between classic and modern scale
*/
public class Mcmmoupgrade implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return false;
}
}

View File

@@ -1,98 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.subskills.AbstractSubSkill;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.random.RandomChanceSkill;
import com.gmail.nossr50.core.util.random.RandomChanceUtil;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import com.gmail.nossr50.listeners.InteractionManager;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class AcrobaticsCommand extends SkillCommand {
private String dodgeChance;
private String dodgeChanceLucky;
private boolean canDodge;
private boolean canRoll;
public AcrobaticsCommand() {
super(PrimarySkillType.ACROBATICS);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// ACROBATICS_DODGE
if (canDodge) {
String[] dodgeStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ACROBATICS_DODGE);
dodgeChance = dodgeStrings[0];
dodgeChanceLucky = dodgeStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canDodge = canUseSubskill(player, SubSkillType.ACROBATICS_DODGE);
canRoll = canUseSubskill(player, SubSkillType.ACROBATICS_ROLL);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canDodge) {
messages.add(getStatMessage(SubSkillType.ACROBATICS_DODGE, dodgeChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", dodgeChanceLucky) : ""));
}
if (canRoll) {
AbstractSubSkill abstractSubSkill = InteractionManager.getAbstractByName("Roll");
if (abstractSubSkill != null) {
double rollChance, graceChance;
//Chance to roll at half
RandomChanceSkill roll_rcs = new RandomChanceSkill(player, SubSkillType.ACROBATICS_ROLL);
//Chance to graceful roll
RandomChanceSkill grace_rcs = new RandomChanceSkill(player, SubSkillType.ACROBATICS_ROLL);
grace_rcs.setSkillLevel(grace_rcs.getSkillLevel() * 2); //Double Odds
//Chance Stat Calculations
rollChance = RandomChanceUtil.getRandomChanceExecutionChance(roll_rcs);
graceChance = RandomChanceUtil.getRandomChanceExecutionChance(grace_rcs);
//damageThreshold = AdvancedConfig.getInstance().getRollDamageThreshold();
String rollStrings[] = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ACROBATICS_ROLL);
//Format
double rollChanceLucky = rollChance * 1.333D;
double graceChanceLucky = graceChance * 1.333D;
messages.add(getStatMessage(SubSkillType.ACROBATICS_ROLL, rollStrings[0])
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", rollStrings[1]) : ""));
/*messages.add(getStatMessage(true, false, SubSkillType.ACROBATICS_ROLL, String.valueOf(graceChance))
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", String.valueOf(graceChanceLucky)) : ""));*/
}
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.ACROBATICS);
return textComponents;
}
}

View File

@@ -1,96 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.primary.alchemy.AlchemyManager;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class AlchemyCommand extends SkillCommand {
private String brewSpeed;
private String brewSpeedLucky;
private int tier;
private int ingredientCount;
private String ingredientList;
private boolean canCatalysis;
private boolean canConcoctions;
public AlchemyCommand() {
super(PrimarySkillType.ALCHEMY);
}
protected String[] calculateAbilityDisplayValues(Player player) {
AlchemyManager alchemyManager = UserManager.getPlayer(player).getAlchemyManager();
String[] displayValues = new String[2];
boolean isLucky = Permissions.lucky(player, PrimarySkillType.ALCHEMY);
displayValues[0] = decimal.format(alchemyManager.calculateBrewSpeed(false)) + "x";
displayValues[1] = isLucky ? decimal.format(alchemyManager.calculateBrewSpeed(true)) + "x" : null;
return displayValues;
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// ALCHEMY_CATALYSIS
if (canCatalysis) {
String[] catalysisStrings = calculateAbilityDisplayValues(player);
brewSpeed = catalysisStrings[0];
brewSpeedLucky = catalysisStrings[1];
}
// ALCHEMY_CONCOCTIONS
if (canConcoctions) {
AlchemyManager alchemyManager = UserManager.getPlayer(player).getAlchemyManager();
tier = alchemyManager.getTier();
ingredientCount = alchemyManager.getIngredients().size();
ingredientList = alchemyManager.getIngredientList();
}
}
@Override
protected void permissionsCheck(Player player) {
canCatalysis = canUseSubskill(player, SubSkillType.ALCHEMY_CATALYSIS);
canConcoctions = canUseSubskill(player, SubSkillType.ALCHEMY_CONCOCTIONS);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canCatalysis) {
messages.add(getStatMessage(SubSkillType.ALCHEMY_CATALYSIS, brewSpeed)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", brewSpeedLucky) : ""));
}
if (canConcoctions) {
messages.add(getStatMessage(false, true, SubSkillType.ALCHEMY_CONCOCTIONS, String.valueOf(tier), String.valueOf(RankUtils.getHighestRank(SubSkillType.ALCHEMY_CONCOCTIONS))));
messages.add(getStatMessage(true, true, SubSkillType.ALCHEMY_CONCOCTIONS, String.valueOf(ingredientCount), ingredientList));
//messages.add(LocaleLoader.getString("Alchemy.Concoctions.Rank", tier, RankUtils.getHighestRank(SubSkillType.ALCHEMY_CONCOCTIONS)));
//messages.add(LocaleLoader.getString("Alchemy.Concoctions.Ingredients", ingredientCount, ingredientList));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.ALCHEMY);
return textComponents;
}
}

View File

@@ -1,202 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.util.HolidayManager.FakeSkillType;
import com.gmail.nossr50.core.util.Misc;
import com.gmail.nossr50.core.util.StringUtils;
import com.gmail.nossr50.core.util.commands.CommandUtils;
import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
public class AprilCommand implements TabExecutor {
protected DecimalFormat percent = new DecimalFormat("##0.00%");
protected DecimalFormat decimal = new DecimalFormat("##0.00");
private String skillName;
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (CommandUtils.noConsoleUsage(sender)) {
return true;
}
skillName = StringUtils.getCapitalized(label);
switch (args.length) {
case 0:
Player player = (Player) sender;
FakeSkillType fakeSkillType = FakeSkillType.getByName(skillName);
float skillValue = Misc.getRandom().nextInt(99);
player.sendMessage(LocaleLoader.getString("Skills.Header", skillName));
player.sendMessage(LocaleLoader.getString("Commands.XPGain", getXPGainString(fakeSkillType)));
player.sendMessage(LocaleLoader.getString("Effects.Level", (int) skillValue, Misc.getRandom().nextInt(1000), 1000 + Misc.getRandom().nextInt(1000)));
List<String> effectMessages = effectsDisplay(fakeSkillType);
if (!effectMessages.isEmpty()) {
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Effects.Effects")));
for (String message : effectMessages) {
player.sendMessage(message);
}
}
List<String> statsMessages = statsDisplay(fakeSkillType);
if (!statsMessages.isEmpty()) {
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Commands.Stats.Self")));
for (String message : statsMessages) {
player.sendMessage(message);
}
}
player.sendMessage(LocaleLoader.formatString("[[DARK_AQUA]]Guide for {0} available - type /APRIL FOOLS ! :D", skillName));
return true;
default:
return true;
}
}
private String getXPGainString(FakeSkillType fakeSkillType) {
switch (fakeSkillType) {
case MACHO:
return "Get beaten up";
case JUMPING:
return "Kris Kross will make ya Jump Jump";
case THROWING:
return "Chuck your items on the floor";
case WRECKING:
return "I'M GONNA WRECK IT!";
case CRAFTING:
return "Craft apple pies";
case WALKING:
return "Walk around the park";
case SWIMMING:
return "Like a fish on a bicycle";
case FALLING:
return "Faceplant the floor, headbutt the ground";
case CLIMBING:
return "Climb the highest mountain";
case FLYING:
return "I believe I can fly";
case DIVING:
return "Scuba club 4000";
case PIGGY:
return "OINK! OINK!";
default:
return "Sit and wait?";
}
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
switch (args.length) {
case 1:
return ImmutableList.of("?");
default:
return ImmutableList.of();
}
}
private List<String> effectsDisplay(FakeSkillType fakeSkillType) {
List<String> messages = new ArrayList<String>();
switch (fakeSkillType) {
case MACHO:
messages.add(LocaleLoader.getString("Effects.Template", "Punching bag", "Absorb damage, like a bag of sand"));
break;
case JUMPING:
messages.add(LocaleLoader.getString("Effects.Template", "Jump", "PRESS SPACE TO JUMP"));
messages.add(LocaleLoader.getString("Effects.Template", "Jump Twice", "PRESS SPACE TWICE TO JUMP TWICE"));
break;
case THROWING:
messages.add(LocaleLoader.getString("Effects.Template", "Drop Item", "Randomly drop items, at random"));
break;
case WRECKING:
messages.add(LocaleLoader.getString("Effects.Template", "Ralphinator", "Smash windows with your fists"));
break;
case CRAFTING:
messages.add(LocaleLoader.getString("Effects.Template", "Crafting", "Chance of successful craft"));
break;
case WALKING:
messages.add(LocaleLoader.getString("Effects.Template", "Walk", "Traveling gracefully by foot"));
break;
case SWIMMING:
messages.add(LocaleLoader.getString("Effects.Template", "Swim", "Just keep swimming, swimming, swimming"));
break;
case FALLING:
messages.add(LocaleLoader.getString("Effects.Template", "Skydiving", "Go jump of a cliff. No, seriously."));
break;
case CLIMBING:
messages.add(LocaleLoader.getString("Effects.Template", "Rock Climber", "Use string to climb mountains faster"));
break;
case FLYING:
messages.add(LocaleLoader.getString("Effects.Template", "Fly", "Throw yourself at the ground and miss"));
break;
case DIVING:
messages.add(LocaleLoader.getString("Effects.Template", "Hold Breath", "Press shift to hold your breath longer"));
break;
case PIGGY:
messages.add(LocaleLoader.getString("Effects.Template", "Carrot Turbo", "Supercharge your pigs with carrots"));
break;
}
return messages;
}
private List<String> statsDisplay(FakeSkillType fakeSkillType) {
List<String> messages = new ArrayList<String>();
switch (fakeSkillType) {
case MACHO:
messages.add(LocaleLoader.formatString("[[RED]]Damage Taken: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(77))));
break;
case JUMPING:
messages.add(LocaleLoader.formatString("[[RED]]Double Jump Chance: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(27))));
break;
case THROWING:
messages.add(LocaleLoader.formatString("[[RED]]Drop Item Chance: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(87))));
break;
case WRECKING:
messages.add(LocaleLoader.formatString("[[RED]]Wrecking Chance: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(14))));
break;
case CRAFTING:
messages.add(LocaleLoader.formatString("[[RED]]Crafting Success: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(27))));
break;
case WALKING:
messages.add(LocaleLoader.formatString("[[RED]]Walk Chance: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(27))));
break;
case SWIMMING:
messages.add(LocaleLoader.formatString("[[RED]]Swim Chance: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(27))));
break;
case FALLING:
messages.add(LocaleLoader.formatString("[[RED]]Skydiving Success: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(37))));
break;
case CLIMBING:
messages.add(LocaleLoader.formatString("[[RED]]Rock Climber Chance: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(27))));
break;
case FLYING:
messages.add(LocaleLoader.formatString("[[RED]]Fly Chance: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(27))));
break;
case DIVING:
messages.add(LocaleLoader.formatString("[[RED]]Hold Breath Chance: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(27))));
break;
case PIGGY:
messages.add(LocaleLoader.formatString("[[RED]]Carrot Turbo Boost: [[YELLOW]]{0}%", decimal.format(Misc.getRandom().nextInt(80)) + 10));
break;
}
return messages;
}
}

View File

@@ -1,88 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.primary.archery.Archery;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class ArcheryCommand extends SkillCommand {
private String skillShotBonus;
private String dazeChance;
private String dazeChanceLucky;
private String retrieveChance;
private String retrieveChanceLucky;
private boolean canSkillShot;
private boolean canDaze;
private boolean canRetrieve;
public ArcheryCommand() {
super(PrimarySkillType.ARCHERY);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// ARCHERY_ARROW_RETRIEVAL
if (canRetrieve) {
String[] retrieveStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ARCHERY_ARROW_RETRIEVAL);
retrieveChance = retrieveStrings[0];
retrieveChanceLucky = retrieveStrings[1];
}
// ARCHERY_DAZE
if (canDaze) {
String[] dazeStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ARCHERY_DAZE);
dazeChance = dazeStrings[0];
dazeChanceLucky = dazeStrings[1];
}
// SKILL SHOT
if (canSkillShot) {
skillShotBonus = percent.format(Archery.getDamageBonusPercent(player));
}
}
@Override
protected void permissionsCheck(Player player) {
canSkillShot = canUseSubskill(player, SubSkillType.ARCHERY_SKILL_SHOT);
canDaze = canUseSubskill(player, SubSkillType.ARCHERY_DAZE);
canRetrieve = canUseSubskill(player, SubSkillType.ARCHERY_ARROW_RETRIEVAL);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canRetrieve) {
messages.add(getStatMessage(SubSkillType.ARCHERY_ARROW_RETRIEVAL, retrieveChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", retrieveChanceLucky) : ""));
}
if (canDaze) {
messages.add(getStatMessage(SubSkillType.ARCHERY_DAZE, dazeChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", dazeChanceLucky) : ""));
}
if (canSkillShot) {
messages.add(getStatMessage(SubSkillType.ARCHERY_SKILL_SHOT, skillShotBonus));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.ARCHERY);
return textComponents;
}
}

View File

@@ -1,109 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.primary.axes.Axes;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class AxesCommand extends SkillCommand {
private String critChance;
private String critChanceLucky;
private double axeMasteryDamage;
private double impactDamage;
private String skullSplitterLength;
private String skullSplitterLengthEndurance;
private boolean canSkullSplitter;
private boolean canCritical;
private boolean canAxeMastery;
private boolean canImpact;
private boolean canGreaterImpact;
public AxesCommand() {
super(PrimarySkillType.AXES);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// ARMOR IMPACT
if (canImpact) {
impactDamage = UserManager.getPlayer(player).getAxesManager().getImpactDurabilityDamage();
}
// AXE MASTERY
if (canAxeMastery) {
axeMasteryDamage = Axes.getAxeMasteryBonusDamage(player);
}
// CRITICAL HIT
if (canCritical) {
String[] criticalHitStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.AXES_CRITICAL_STRIKES);
critChance = criticalHitStrings[0];
critChanceLucky = criticalHitStrings[1];
}
// SKULL SPLITTER
if (canSkullSplitter) {
String[] skullSplitterStrings = calculateLengthDisplayValues(player, skillValue);
skullSplitterLength = skullSplitterStrings[0];
skullSplitterLengthEndurance = skullSplitterStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canSkullSplitter = Permissions.skullSplitter(player) && RankUtils.hasUnlockedSubskill(player, SubSkillType.AXES_SKULL_SPLITTER);
canCritical = canUseSubskill(player, SubSkillType.AXES_CRITICAL_STRIKES);
canAxeMastery = canUseSubskill(player, SubSkillType.AXES_AXE_MASTERY);
canImpact = canUseSubskill(player, SubSkillType.AXES_ARMOR_IMPACT);
canGreaterImpact = canUseSubskill(player, SubSkillType.AXES_GREATER_IMPACT);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canImpact) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Axes.Ability.Bonus.2"), LocaleLoader.getString("Axes.Ability.Bonus.3", impactDamage)));
}
if (canAxeMastery) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Axes.Ability.Bonus.0"), LocaleLoader.getString("Axes.Ability.Bonus.1", axeMasteryDamage)));
}
if (canCritical) {
messages.add(getStatMessage(SubSkillType.AXES_CRITICAL_STRIKES, critChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", critChanceLucky) : ""));
}
if (canGreaterImpact) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Axes.Ability.Bonus.4"), LocaleLoader.getString("Axes.Ability.Bonus.5", Axes.greaterImpactBonusDamage)));
}
if (canSkullSplitter) {
messages.add(getStatMessage(SubSkillType.AXES_SKULL_SPLITTER, skullSplitterLength)
+ (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", skullSplitterLengthEndurance) : ""));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.AXES);
return textComponents;
}
}

View File

@@ -1,64 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class ExcavationCommand extends SkillCommand {
private String gigaDrillBreakerLength;
private String gigaDrillBreakerLengthEndurance;
private boolean canGigaDrill;
private boolean canTreasureHunt;
public ExcavationCommand() {
super(PrimarySkillType.EXCAVATION);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// GIGA DRILL BREAKER
if (canGigaDrill) {
String gigaDrillStrings[] = calculateLengthDisplayValues(player, skillValue);
gigaDrillBreakerLength = gigaDrillStrings[0];
gigaDrillBreakerLengthEndurance = gigaDrillStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canGigaDrill = Permissions.gigaDrillBreaker(player) && RankUtils.hasUnlockedSubskill(player, SubSkillType.EXCAVATION_GIGA_DRILL_BREAKER);
canTreasureHunt = canUseSubskill(player, SubSkillType.EXCAVATION_ARCHAEOLOGY);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canGigaDrill) {
messages.add(getStatMessage(SubSkillType.EXCAVATION_GIGA_DRILL_BREAKER, gigaDrillBreakerLength)
+ (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", gigaDrillBreakerLengthEndurance) : ""));
//messages.add(LocaleLoader.getString("Excavation.Effect.Length", gigaDrillBreakerLength) + (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", gigaDrillBreakerLengthEndurance) : ""));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.EXCAVATION);
return textComponents;
}
}

View File

@@ -1,177 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.config.AdvancedConfig;
import com.gmail.nossr50.core.config.treasure.TreasureConfig;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.primary.fishing.Fishing;
import com.gmail.nossr50.core.skills.primary.fishing.FishingManager;
import com.gmail.nossr50.core.skills.treasure.Rarity;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.random.RandomChanceUtil;
import com.gmail.nossr50.core.util.skills.RankUtils;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class FishingCommand extends SkillCommand {
private int lootTier;
private String shakeChance;
private String shakeChanceLucky;
private int fishermansDietRank;
private String biteChance;
private String trapTreasure;
private String commonTreasure;
private String uncommonTreasure;
private String rareTreasure;
private String epicTreasure;
private String legendaryTreasure;
private String recordTreasure;
private String magicChance;
private boolean canTreasureHunt;
private boolean canMagicHunt;
private boolean canShake;
private boolean canFishermansDiet;
private boolean canMasterAngler;
private boolean canIceFish;
public FishingCommand() {
super(PrimarySkillType.FISHING);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
FishingManager fishingManager = UserManager.getPlayer(player).getFishingManager();
// TREASURE HUNTER
if (canTreasureHunt) {
lootTier = fishingManager.getLootTier();
// ItemStack drop rates
commonTreasure = percent.format(TreasureConfig.getInstance().getItemDropRate(lootTier, Rarity.COMMON) / 100.0);
uncommonTreasure = percent.format(TreasureConfig.getInstance().getItemDropRate(lootTier, Rarity.UNCOMMON) / 100.0);
rareTreasure = percent.format(TreasureConfig.getInstance().getItemDropRate(lootTier, Rarity.RARE) / 100.0);
epicTreasure = percent.format(TreasureConfig.getInstance().getItemDropRate(lootTier, Rarity.EPIC) / 100.0);
legendaryTreasure = percent.format(TreasureConfig.getInstance().getItemDropRate(lootTier, Rarity.LEGENDARY) / 100.0);
recordTreasure = percent.format(TreasureConfig.getInstance().getItemDropRate(lootTier, Rarity.RECORD) / 100.0);
// Magic hunter drop rates
double totalEnchantChance = 0;
for (Rarity rarity : Rarity.values()) {
if (rarity != Rarity.RECORD) {
totalEnchantChance += TreasureConfig.getInstance().getEnchantmentDropRate(lootTier, rarity);
}
}
if (totalEnchantChance >= 1)
magicChance = percent.format(totalEnchantChance / 100.0);
else
magicChance = percent.format(0);
}
// FISHING_SHAKE
if (canShake) {
String[] shakeStrings = RandomChanceUtil.calculateAbilityDisplayValuesStatic(player, PrimarySkillType.FISHING, fishingManager.getShakeChance());
shakeChance = shakeStrings[0];
shakeChanceLucky = shakeStrings[1];
}
// FISHERMAN'S DIET
if (canFishermansDiet) {
fishermansDietRank = calculateRank(skillValue, Fishing.fishermansDietMaxLevel, Fishing.fishermansDietRankLevel1);
}
// MASTER ANGLER
if (canMasterAngler) {
double rawBiteChance = 1.0 / (player.getWorld().hasStorm() ? 300 : 500);
Location location = fishingManager.getHookLocation();
if (location == null) {
location = player.getLocation();
}
if (Fishing.masterAnglerBiomes.contains(location.getBlock().getBiome())) {
rawBiteChance = rawBiteChance * AdvancedConfig.getInstance().getMasterAnglerBiomeModifier();
}
if (player.isInsideVehicle() && player.getVehicle().getType() == EntityType.BOAT) {
rawBiteChance = rawBiteChance * AdvancedConfig.getInstance().getMasterAnglerBoatModifier();
}
double luckyModifier = Permissions.lucky(player, PrimarySkillType.FISHING) ? 1.333D : 1.0D;
biteChance = percent.format((rawBiteChance * 100.0D) * luckyModifier);
}
}
@Override
protected void permissionsCheck(Player player) {
canTreasureHunt = canUseSubskill(player, SubSkillType.FISHING_TREASURE_HUNTER);
canMagicHunt = canUseSubskill(player, SubSkillType.FISHING_MAGIC_HUNTER) && canUseSubskill(player, SubSkillType.FISHING_TREASURE_HUNTER);
canShake = canUseSubskill(player, SubSkillType.FISHING_SHAKE);
canFishermansDiet = canUseSubskill(player, SubSkillType.FISHING_FISHERMANS_DIET);
canMasterAngler = canUseSubskill(player, SubSkillType.FISHING_MASTER_ANGLER);
canIceFish = canUseSubskill(player, SubSkillType.FISHING_ICE_FISHING);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canFishermansDiet) {
messages.add(getStatMessage(false, true, SubSkillType.FISHING_FISHERMANS_DIET, String.valueOf(fishermansDietRank)));
}
if (canIceFish) {
messages.add(getStatMessage(SubSkillType.FISHING_ICE_FISHING, SubSkillType.FISHING_ICE_FISHING.getLocaleStatDescription()));
}
if (canMagicHunt) {
messages.add(getStatMessage(SubSkillType.FISHING_MAGIC_HUNTER, magicChance));
}
if (canMasterAngler) {
//TODO: Update this with more details
messages.add(getStatMessage(false, true, SubSkillType.FISHING_MASTER_ANGLER, biteChance));
}
if (canShake) {
messages.add(getStatMessage(SubSkillType.FISHING_SHAKE, shakeChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", shakeChanceLucky) : ""));
}
if (canTreasureHunt) {
messages.add(getStatMessage(false, true, SubSkillType.FISHING_TREASURE_HUNTER, String.valueOf(lootTier), String.valueOf(RankUtils.getHighestRank(SubSkillType.FISHING_TREASURE_HUNTER))));
messages.add(getStatMessage(true, true, SubSkillType.FISHING_TREASURE_HUNTER,
String.valueOf(commonTreasure),
String.valueOf(uncommonTreasure),
String.valueOf(rareTreasure),
String.valueOf(epicTreasure),
String.valueOf(legendaryTreasure),
String.valueOf(recordTreasure)));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.FISHING);
return textComponents;
}
}

View File

@@ -1,152 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class HerbalismCommand extends SkillCommand {
private String greenTerraLength;
private String greenTerraLengthEndurance;
private String greenThumbChance;
private String greenThumbChanceLucky;
private int greenThumbStage;
private int farmersDietRank;
private String doubleDropChance;
private String doubleDropChanceLucky;
private String hylianLuckChance;
private String hylianLuckChanceLucky;
private String shroomThumbChance;
private String shroomThumbChanceLucky;
private boolean hasHylianLuck;
private boolean canGreenTerra;
private boolean canGreenThumbPlants;
private boolean canGreenThumbBlocks;
private boolean canFarmersDiet;
private boolean canDoubleDrop;
private boolean canShroomThumb;
public HerbalismCommand() {
super(PrimarySkillType.HERBALISM);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// DOUBLE DROPS
if (canDoubleDrop) {
String[] doubleDropStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.HERBALISM_DOUBLE_DROPS);
;
doubleDropChance = doubleDropStrings[0];
doubleDropChanceLucky = doubleDropStrings[1];
}
// FARMERS DIET
if (canFarmersDiet) {
farmersDietRank = RankUtils.getRank(player, SubSkillType.HERBALISM_FARMERS_DIET);
}
// GREEN TERRA
if (canGreenTerra) {
String[] greenTerraStrings = calculateLengthDisplayValues(player, skillValue);
greenTerraLength = greenTerraStrings[0];
greenTerraLengthEndurance = greenTerraStrings[1];
}
// GREEN THUMB
if (canGreenThumbBlocks || canGreenThumbPlants) {
greenThumbStage = RankUtils.getRank(player, SubSkillType.HERBALISM_GREEN_THUMB);
String[] greenThumbStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.HERBALISM_GREEN_THUMB);
greenThumbChance = greenThumbStrings[0];
greenThumbChanceLucky = greenThumbStrings[1];
}
// HYLIAN LUCK
if (hasHylianLuck) {
String[] hylianLuckStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.HERBALISM_HYLIAN_LUCK);
hylianLuckChance = hylianLuckStrings[0];
hylianLuckChanceLucky = hylianLuckStrings[1];
}
// SHROOM THUMB
if (canShroomThumb) {
String[] shroomThumbStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.HERBALISM_SHROOM_THUMB);
shroomThumbChance = shroomThumbStrings[0];
shroomThumbChanceLucky = shroomThumbStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
hasHylianLuck = canUseSubskill(player, SubSkillType.HERBALISM_HYLIAN_LUCK);
canGreenTerra = Permissions.greenTerra(player);
canGreenThumbPlants = RankUtils.hasUnlockedSubskill(player, SubSkillType.HERBALISM_GREEN_THUMB) && (Permissions.greenThumbPlant(player, Material.WHEAT) || Permissions.greenThumbPlant(player, Material.CARROT) || Permissions.greenThumbPlant(player, Material.POTATO) || Permissions.greenThumbPlant(player, Material.BEETROOT) || Permissions.greenThumbPlant(player, Material.NETHER_WART) || Permissions.greenThumbPlant(player, Material.COCOA));
canGreenThumbBlocks = RankUtils.hasUnlockedSubskill(player, SubSkillType.HERBALISM_GREEN_THUMB) && (Permissions.greenThumbBlock(player, Material.DIRT) || Permissions.greenThumbBlock(player, Material.COBBLESTONE) || Permissions.greenThumbBlock(player, Material.COBBLESTONE_WALL) || Permissions.greenThumbBlock(player, Material.STONE_BRICKS));
canFarmersDiet = canUseSubskill(player, SubSkillType.HERBALISM_FARMERS_DIET);
canDoubleDrop = canUseSubskill(player, SubSkillType.HERBALISM_DOUBLE_DROPS) && !skill.getDoubleDropsDisabled();
canShroomThumb = canUseSubskill(player, SubSkillType.HERBALISM_SHROOM_THUMB);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canDoubleDrop) {
messages.add(getStatMessage(SubSkillType.HERBALISM_DOUBLE_DROPS, doubleDropChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
}
if (canFarmersDiet) {
messages.add(getStatMessage(false, true, SubSkillType.HERBALISM_FARMERS_DIET, String.valueOf(farmersDietRank)));
}
if (canGreenTerra) {
messages.add(getStatMessage(SubSkillType.HERBALISM_GREEN_TERRA, greenTerraLength)
+ (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", greenTerraLengthEndurance) : ""));
//messages.add(LocaleLoader.getString("Herbalism.Ability.GTe.Length", greenTerraLength) + (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", greenTerraLengthEndurance) : ""));
}
if (canGreenThumbBlocks || canGreenThumbPlants) {
messages.add(getStatMessage(SubSkillType.HERBALISM_GREEN_THUMB, greenThumbChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", greenThumbChanceLucky) : ""));
//messages.add(LocaleLoader.getString("Herbalism.Ability.GTh.Chance", greenThumbChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", greenThumbChanceLucky) : ""));
}
if (canGreenThumbPlants) {
messages.add(getStatMessage(true, true, SubSkillType.HERBALISM_GREEN_THUMB, String.valueOf(greenThumbStage)));
}
if (hasHylianLuck) {
messages.add(getStatMessage(SubSkillType.HERBALISM_HYLIAN_LUCK, hylianLuckChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", hylianLuckChanceLucky) : ""));
}
if (canShroomThumb) {
messages.add(getStatMessage(SubSkillType.HERBALISM_SHROOM_THUMB, shroomThumbChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", shroomThumbChanceLucky) : ""));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.HERBALISM);
return textComponents;
}
}

View File

@@ -1,121 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.primary.mining.MiningManager;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class MiningCommand extends SkillCommand {
private String doubleDropChance;
private String doubleDropChanceLucky;
private String superBreakerLength;
private String superBreakerLengthEndurance;
private int blastMiningRank;
private int bonusTNTDrops;
private double blastRadiusIncrease;
private String oreBonus;
private String debrisReduction;
private String blastDamageDecrease;
private boolean canSuperBreaker;
private boolean canDoubleDrop;
private boolean canBlast;
private boolean canBiggerBombs;
private boolean canDemoExpert;
public MiningCommand() {
super(PrimarySkillType.MINING);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// BLAST MINING
if (canBlast || canDemoExpert || canBiggerBombs) {
MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
blastMiningRank = miningManager.getBlastMiningTier();
bonusTNTDrops = miningManager.getDropMultiplier();
oreBonus = percent.format(miningManager.getOreBonus() / 30.0D); // Base received in TNT is 30%
debrisReduction = percent.format(miningManager.getDebrisReduction() / 30.0D); // Base received in TNT is 30%
blastDamageDecrease = percent.format(miningManager.getBlastDamageModifier() / 100.0D);
blastRadiusIncrease = miningManager.getBlastRadiusModifier();
}
// DOUBLE DROPS
if (canDoubleDrop) {
String[] doubleDropStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.MINING_DOUBLE_DROPS);
doubleDropChance = doubleDropStrings[0];
doubleDropChanceLucky = doubleDropStrings[1];
}
// SUPER BREAKER
if (canSuperBreaker) {
String[] superBreakerStrings = calculateLengthDisplayValues(player, skillValue);
superBreakerLength = superBreakerStrings[0];
superBreakerLengthEndurance = superBreakerStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canBiggerBombs = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_BIGGER_BOMBS) && Permissions.biggerBombs(player);
canBlast = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_BLAST_MINING) && Permissions.remoteDetonation(player);
canDemoExpert = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_DEMOLITIONS_EXPERTISE) && Permissions.demolitionsExpertise(player);
canDoubleDrop = Permissions.isSubSkillEnabled(player, SubSkillType.MINING_DOUBLE_DROPS) && !skill.getDoubleDropsDisabled();
canSuperBreaker = RankUtils.hasUnlockedSubskill(player, SubSkillType.MINING_SUPER_BREAKER) && Permissions.superBreaker(player);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canBiggerBombs) {
messages.add(getStatMessage(true, true, SubSkillType.MINING_BLAST_MINING, String.valueOf(blastRadiusIncrease)));
//messages.add(LocaleLoader.getString("Mining.Blast.Radius.Increase", blastRadiusIncrease));
}
if (canBlast) {
messages.add(getStatMessage(false, true, SubSkillType.MINING_BLAST_MINING, String.valueOf(blastMiningRank), String.valueOf(RankUtils.getHighestRank(SubSkillType.MINING_BLAST_MINING)), LocaleLoader.getString("Mining.Blast.Effect", oreBonus, debrisReduction, bonusTNTDrops)));
//messages.add(LocaleLoader.getString("Mining.Blast.Rank", blastMiningRank, RankUtils.getHighestRank(SubSkillType.MINING_BLAST_MINING), LocaleLoader.getString("Mining.Blast.Effect", oreBonus, debrisReduction, bonusTNTDrops)));
}
if (canDemoExpert) {
messages.add(getStatMessage(SubSkillType.MINING_DEMOLITIONS_EXPERTISE, blastDamageDecrease));
//messages.add(LocaleLoader.getString("Mining.Effect.Decrease", blastDamageDecrease));
}
if (canDoubleDrop) {
messages.add(getStatMessage(SubSkillType.HERBALISM_DOUBLE_DROPS, doubleDropChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
//messages.add(LocaleLoader.getString("Mining.Effect.DropChance", doubleDropChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
}
if (canSuperBreaker) {
messages.add(getStatMessage(SubSkillType.MINING_SUPER_BREAKER, superBreakerLength)
+ (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", superBreakerLengthEndurance) : ""));
//messages.add(LocaleLoader.getString("Mining.Ability.Length", superBreakerLength) + (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", superBreakerLengthEndurance) : ""));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.MINING);
return textComponents;
}
}

View File

@@ -1,94 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.subskills.AbstractSubSkill;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.listeners.InteractionManager;
import com.google.common.collect.ImmutableList;
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 java.util.ArrayList;
import java.util.List;
/**
* This is the command that retrieves data about skills from in-game sources
*/
public class MmoInfoCommand implements TabExecutor {
@Override
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
/*
* Only allow players to use this command
*/
if (commandSender instanceof Player) {
if (args.length < 1)
return false;
Player player = (Player) commandSender;
if (Permissions.mmoinfo(player)) {
if (args == null || args[0] == null)
return false;
if (args[0].equalsIgnoreCase("???")) {
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.Header"));
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.SubSkillHeader", "???"));
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.DetailsHeader"));
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.Mystery"));
return true;
} else if (InteractionManager.getAbstractByName(args[0]) != null || PrimarySkillType.SUBSKILL_NAMES.contains(args[0])) {
displayInfo(player, args[0]);
return true;
}
//Not a real skill
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.NoMatch"));
return true;
}
}
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], PrimarySkillType.SUBSKILL_NAMES, new ArrayList<String>(PrimarySkillType.SUBSKILL_NAMES.size()));
default:
return ImmutableList.of();
}
}
private void displayInfo(Player player, String subSkillName) {
//Check to see if the skill exists in the new system
AbstractSubSkill abstractSubSkill = InteractionManager.getAbstractByName(subSkillName);
if (abstractSubSkill != null) {
/* New System Skills are programmable */
abstractSubSkill.printInfo(player);
//TextComponentFactory.sendPlayerUrlHeader(player);
} else {
/*
* Skill is only in the old system
*/
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.Header"));
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.SubSkillHeader", subSkillName));
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.DetailsHeader"));
player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.OldSkill"));
}
for (SubSkillType subSkillType : SubSkillType.values()) {
if (subSkillType.getNiceNameNoSpaces(subSkillType).equalsIgnoreCase(subSkillName))
subSkillName = subSkillType.getWikiName(subSkillType.toString());
}
//Send Player Wiki Link
TextComponentFactory.sendPlayerSubSkillWikiLink(player, subSkillName);
}
}

View File

@@ -1,131 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.MaterialType;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.primary.repair.ArcaneForging;
import com.gmail.nossr50.core.skills.primary.repair.Repair;
import com.gmail.nossr50.core.skills.primary.repair.RepairManager;
import com.gmail.nossr50.core.skills.primary.repair.repairables.Repairable;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import com.gmail.nossr50.mcMMO;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class RepairCommand extends SkillCommand {
private String repairMasteryBonus;
private String superRepairChance;
private String superRepairChanceLucky;
private boolean canSuperRepair;
private boolean canMasterRepair;
private boolean canArcaneForge;
private boolean canRepairStone;
private boolean canRepairIron;
private boolean canRepairGold;
private boolean canRepairDiamond;
private boolean canRepairString;
private boolean canRepairLeather;
private boolean canRepairWood;
private boolean arcaneBypass;
private int diamondLevel;
private int goldLevel;
private int ironLevel;
private int stoneLevel;
public RepairCommand() {
super(PrimarySkillType.REPAIR);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// We're using pickaxes here, not the best but it works
Repairable diamondRepairable = mcMMO.getRepairableManager().getRepairable(Material.DIAMOND_PICKAXE);
Repairable goldRepairable = mcMMO.getRepairableManager().getRepairable(Material.GOLDEN_PICKAXE);
Repairable ironRepairable = mcMMO.getRepairableManager().getRepairable(Material.IRON_PICKAXE);
Repairable stoneRepairable = mcMMO.getRepairableManager().getRepairable(Material.STONE_PICKAXE);
// TODO: This isn't really accurate - if they don't have pickaxes loaded it doesn't always mean the repair level is 0
diamondLevel = (diamondRepairable == null) ? 0 : diamondRepairable.getMinimumLevel();
goldLevel = (goldRepairable == null) ? 0 : goldRepairable.getMinimumLevel();
ironLevel = (ironRepairable == null) ? 0 : ironRepairable.getMinimumLevel();
stoneLevel = (stoneRepairable == null) ? 0 : stoneRepairable.getMinimumLevel();
// REPAIR MASTERY
if (canMasterRepair) {
repairMasteryBonus = percent.format(Math.min(((Repair.repairMasteryMaxBonus / Repair.repairMasteryMaxBonusLevel) * skillValue), Repair.repairMasteryMaxBonus) / 100D);
}
// SUPER REPAIR
if (canSuperRepair) {
String[] superRepairStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.REPAIR_SUPER_REPAIR);
superRepairChance = superRepairStrings[0];
superRepairChanceLucky = superRepairStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canSuperRepair = canUseSubskill(player, SubSkillType.REPAIR_SUPER_REPAIR);
canMasterRepair = canUseSubskill(player, SubSkillType.REPAIR_REPAIR_MASTERY);
canArcaneForge = canUseSubskill(player, SubSkillType.REPAIR_ARCANE_FORGING);
canRepairDiamond = Permissions.repairMaterialType(player, MaterialType.DIAMOND);
canRepairGold = Permissions.repairMaterialType(player, MaterialType.GOLD);
canRepairIron = Permissions.repairMaterialType(player, MaterialType.IRON);
canRepairStone = Permissions.repairMaterialType(player, MaterialType.STONE);
canRepairString = Permissions.repairMaterialType(player, MaterialType.STRING);
canRepairLeather = Permissions.repairMaterialType(player, MaterialType.LEATHER);
canRepairWood = Permissions.repairMaterialType(player, MaterialType.WOOD);
arcaneBypass = Permissions.arcaneBypass(player);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canArcaneForge) {
RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
messages.add(getStatMessage(false, true,
SubSkillType.REPAIR_ARCANE_FORGING,
String.valueOf(RankUtils.getRank(player, SubSkillType.REPAIR_ARCANE_FORGING)),
RankUtils.getHighestRankStr(SubSkillType.REPAIR_ARCANE_FORGING)));
if (ArcaneForging.arcaneForgingEnchantLoss || ArcaneForging.arcaneForgingDowngrades) {
messages.add(getStatMessage(true, true, SubSkillType.REPAIR_ARCANE_FORGING,
String.valueOf(arcaneBypass ? 100 : repairManager.getKeepEnchantChance()),
String.valueOf(arcaneBypass ? 0 : repairManager.getDowngradeEnchantChance()))); //Jesus those parentheses
}
}
if (canMasterRepair) {
messages.add(getStatMessage(false, true, SubSkillType.REPAIR_REPAIR_MASTERY, repairMasteryBonus));
}
if (canSuperRepair) {
messages.add(getStatMessage(SubSkillType.REPAIR_SUPER_REPAIR, superRepairChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", superRepairChanceLucky) : ""));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.REPAIR);
return textComponents;
}
}

View File

@@ -1,72 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.child.salvage.Salvage;
import com.gmail.nossr50.core.skills.child.salvage.SalvageManager;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class SalvageCommand extends SkillCommand {
private boolean canAdvancedSalvage;
private boolean canArcaneSalvage;
public SalvageCommand() {
super(PrimarySkillType.SALVAGE);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// TODO Auto-generated method stub
}
@Override
protected void permissionsCheck(Player player) {
canAdvancedSalvage = canUseSubskill(player, SubSkillType.SALVAGE_ADVANCED_SALVAGE);
canArcaneSalvage = canUseSubskill(player, SubSkillType.SALVAGE_ARCANE_SALVAGE);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
SalvageManager salvageManager = UserManager.getPlayer(player).getSalvageManager();
if (canAdvancedSalvage) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Salvage.Ability.Bonus.0"),
LocaleLoader.getString("Salvage.Ability.Bonus.1", salvageManager.getSalvageableAmount())));
}
if (canArcaneSalvage) {
messages.add(getStatMessage(false, true, SubSkillType.SALVAGE_ARCANE_SALVAGE,
String.valueOf(salvageManager.getArcaneSalvageRank()),
String.valueOf(RankUtils.getHighestRank(SubSkillType.SALVAGE_ARCANE_SALVAGE))));
if (Salvage.arcaneSalvageEnchantLoss) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Salvage.Arcane.ExtractFull"), percent.format(salvageManager.getExtractFullEnchantChance() / 100)));
}
if (Salvage.arcaneSalvageDowngrades) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Salvage.Arcane.ExtractPartial"), percent.format(salvageManager.getExtractPartialEnchantChance() / 100)));
}
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.SALVAGE);
return textComponents;
}
}

View File

@@ -1,290 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.config.AdvancedConfig;
import com.gmail.nossr50.core.config.MainConfig;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.child.FamilyTree;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.StringUtils;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.commands.CommandUtils;
import com.gmail.nossr50.core.util.random.RandomChanceUtil;
import com.gmail.nossr50.core.util.scoreboards.ScoreboardManager;
import com.gmail.nossr50.core.util.skills.PerksUtils;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import com.google.common.collect.ImmutableList;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public abstract class SkillCommand implements TabExecutor {
protected PrimarySkillType skill;
protected DecimalFormat percent = new DecimalFormat("##0.00%");
protected DecimalFormat decimal = new DecimalFormat("##0.00");
private String skillName;
private CommandExecutor skillGuideCommand;
public SkillCommand(PrimarySkillType skill) {
this.skill = skill;
skillName = skill.getName();
skillGuideCommand = new SkillGuideCommand(skill);
}
public static String[] addItemToFirstPositionOfArray(String itemToAdd, String... existingArray) {
String[] newArray = new String[existingArray.length + 1];
newArray[0] = itemToAdd;
System.arraycopy(existingArray, 0, newArray, 1, existingArray.length);
return newArray;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (CommandUtils.noConsoleUsage(sender)) {
return true;
}
if (!CommandUtils.hasPlayerDataKey(sender)) {
return true;
}
switch (args.length) {
case 0:
Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
boolean isLucky = Permissions.lucky(player, skill);
boolean hasEndurance = (PerksUtils.handleActivationPerks(player, 0, 0) != 0);
float skillValue = mcMMOPlayer.getSkillLevel(skill);
//Send the players a few blank lines to make finding the top of the skill command easier
if (AdvancedConfig.getInstance().doesSkillCommandSendBlankLines())
for (int i = 0; i < 2; i++) {
player.sendMessage("");
}
permissionsCheck(player);
dataCalculations(player, skillValue);
sendSkillCommandHeader(player, mcMMOPlayer, (int) skillValue);
//Make JSON text components
List<TextComponent> subskillTextComponents = getTextComponents(player);
//Subskills Header
player.sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", LocaleLoader.getString("Effects.SubSkills.Overhaul")));
//Send JSON text components
TextComponentFactory.sendPlayerSubSkillList(player, subskillTextComponents);
/*for(TextComponent tc : subskillTextComponents)
{
player.spigot().sendMessage(new TextComponent[]{tc, new TextComponent(": TESTING")});
}*/
//Stats
getStatMessages(player, isLucky, hasEndurance, skillValue);
//Header
//Link Header
if (MainConfig.getInstance().getUrlLinksEnabled()) {
player.sendMessage(LocaleLoader.getString("Overhaul.mcMMO.Header"));
TextComponentFactory.sendPlayerUrlHeader(player);
}
if (MainConfig.getInstance().getScoreboardsEnabled() && MainConfig.getInstance().getSkillUseBoard()) {
ScoreboardManager.enablePlayerSkillScoreboard(player, skill);
}
return true;
default:
return skillGuideCommand.onCommand(sender, command, label, args);
}
}
private void getStatMessages(Player player, boolean isLucky, boolean hasEndurance, float skillValue) {
List<String> statsMessages = statsDisplay(player, skillValue, hasEndurance, isLucky);
if (!statsMessages.isEmpty()) {
player.sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", LocaleLoader.getString("Commands.Stats.Self.Overhaul")));
for (String message : statsMessages) {
player.sendMessage(message);
}
}
player.sendMessage(LocaleLoader.getString("Guides.Available", skillName, skillName.toLowerCase()));
}
private void sendSkillCommandHeader(Player player, McMMOPlayer mcMMOPlayer, int skillValue) {
ChatColor hd1 = ChatColor.DARK_AQUA;
ChatColor c1 = ChatColor.GOLD;
ChatColor c2 = ChatColor.RED;
player.sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", skillName));
if (!skill.isChildSkill()) {
/*
* NON-CHILD SKILLS
*/
//XP GAIN METHOD
player.sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain." + StringUtils.getCapitalized(skill.toString()))));
//LEVEL
player.sendMessage(LocaleLoader.getString("Effects.Level.Overhaul", skillValue, mcMMOPlayer.getSkillXpLevel(skill), mcMMOPlayer.getXpToLevel(skill)));
} else {
/*
* CHILD SKILLS
*/
Set<PrimarySkillType> parents = FamilyTree.getParents(skill);
ArrayList<PrimarySkillType> parentList = new ArrayList<>();
//TODO: Add JSON here
for (PrimarySkillType parent : parents) {
parentList.add(parent);
/*player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level.Overhaul", mcMMOPlayer.getSkillLevel(parent), mcMMOPlayer.getSkillXpLevel(parent), mcMMOPlayer.getXpToLevel(parent)))*/
;
}
String parentMessage = "";
for (int i = 0; i < parentList.size(); i++) {
if (i + 1 < parentList.size()) {
parentMessage += LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getName(), mcMMOPlayer.getSkillLevel(parentList.get(i)));
parentMessage += ChatColor.GRAY + ", ";
} else {
parentMessage += LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getName(), mcMMOPlayer.getSkillLevel(parentList.get(i)));
}
}
//XP GAIN METHOD
player.sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain.Child")));
player.sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, parentMessage));
//LEVEL
//player.sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, skillValue));
}
/*
if (!skill.isChildSkill()) {
player.sendMessage(LocaleLoader.getString("Skills.Header", skillName));
player.sendMessage(LocaleLoader.getString("Commands.XPGain", LocaleLoader.getString("Commands.XPGain." + StringUtils.getCapitalized(skill.toString()))));
player.sendMessage(LocaleLoader.getString("Effects.Level", skillValue, mcMMOPlayer.getSkillXpLevel(skill), mcMMOPlayer.getXpToLevel(skill)));
} else {
player.sendMessage(LocaleLoader.getString("Skills.Header", skillName + " " + LocaleLoader.getString("Skills.Child")));
player.sendMessage(LocaleLoader.getString("Commands.XPGain", LocaleLoader.getString("Commands.XPGain.Child")));
player.sendMessage(LocaleLoader.getString("Effects.Child", skillValue));
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Skills.Parents")));
Set<PrimarySkillType> parents = FamilyTree.getParents(skill);
for (PrimarySkillType parent : parents) {
player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level", mcMMOPlayer.getSkillLevel(parent), mcMMOPlayer.getSkillXpLevel(parent), mcMMOPlayer.getXpToLevel(parent)));
}
}
*/
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
switch (args.length) {
case 1:
return ImmutableList.of("?");
default:
return ImmutableList.of();
}
}
protected int calculateRank(float skillValue, int maxLevel, int rankChangeLevel) {
return Math.min((int) skillValue, maxLevel) / rankChangeLevel;
}
protected String[] getAbilityDisplayValues(SkillActivationType skillActivationType, Player player, SubSkillType subSkill) {
return RandomChanceUtil.calculateAbilityDisplayValues(skillActivationType, player, subSkill);
}
protected String[] calculateLengthDisplayValues(Player player, float skillValue) {
int maxLength = skill.getAbility().getMaxLength();
int abilityLengthVar = AdvancedConfig.getInstance().getAbilityLength();
int abilityLengthCap = AdvancedConfig.getInstance().getAbilityLengthCap();
int length;
if (abilityLengthCap <= 0) {
length = 2 + (int) (skillValue / abilityLengthVar);
} else {
length = 2 + (int) (Math.min(abilityLengthCap, skillValue) / abilityLengthVar);
}
int enduranceLength = PerksUtils.handleActivationPerks(player, length, maxLength);
if (maxLength != 0) {
length = Math.min(length, maxLength);
}
return new String[]{String.valueOf(length), String.valueOf(enduranceLength)};
}
protected String getStatMessage(SubSkillType subSkillType, String... vars) {
return getStatMessage(false, false, subSkillType, vars);
}
protected String getStatMessage(boolean isExtra, boolean isCustom, SubSkillType subSkillType, String... vars) {
String templateKey = isCustom ? "Ability.Generic.Template.Custom" : "Ability.Generic.Template";
String statDescriptionKey = !isExtra ? subSkillType.getLocaleKeyStatDescription() : subSkillType.getLocaleKeyStatExtraDescription();
if (isCustom)
//Cast to Object[] to suppress warnings
return LocaleLoader.getString(templateKey, LocaleLoader.getString(statDescriptionKey, (Object[]) vars));
else {
String[] mergedList = addItemToFirstPositionOfArray(LocaleLoader.getString(statDescriptionKey), vars);
//Cast to Object[] to suppress warnings
return LocaleLoader.getString(templateKey, (Object[]) mergedList);
}
}
protected abstract void dataCalculations(Player player, float skillValue);
protected abstract void permissionsCheck(Player player);
//protected abstract List<String> effectsDisplay();
protected abstract List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky);
protected abstract List<TextComponent> getTextComponents(Player player);
/**
* Checks if a player can use a skill
*
* @param player target player
* @param subSkillType target subskill
* @return true if the player has permission and has the skill unlocked
*/
protected boolean canUseSubskill(Player player, SubSkillType subSkillType) {
return Permissions.isSubSkillEnabled(player, subSkillType) && RankUtils.hasUnlockedSubskill(player, subSkillType);
}
}

View File

@@ -1,99 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.child.smelting.Smelting;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class SmeltingCommand extends SkillCommand {
private String burnTimeModifier;
private String str_secondSmeltChance;
private String str_secondSmeltChanceLucky;
private String str_fluxMiningChance;
private String str_fluxMiningChanceLucky;
private boolean canFuelEfficiency;
private boolean canSecondSmelt;
private boolean canFluxMine;
private boolean canUnderstandTheArt;
public SmeltingCommand() {
super(PrimarySkillType.SMELTING);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// FUEL EFFICIENCY
if (canFuelEfficiency) {
burnTimeModifier = decimal.format(1 + ((skillValue / Smelting.burnModifierMaxLevel) * Smelting.burnTimeMultiplier));
}
// FLUX MINING
/*if (canFluxMine) {
String[] fluxMiningStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.SMELTING_FLUX_MINING);
str_fluxMiningChance = fluxMiningStrings[0];
str_fluxMiningChanceLucky = fluxMiningStrings[1];
}*/
// SECOND SMELT
if (canSecondSmelt) {
String[] secondSmeltStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.SMELTING_SECOND_SMELT);
str_secondSmeltChance = secondSmeltStrings[0];
str_secondSmeltChanceLucky = secondSmeltStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canFuelEfficiency = canUseSubskill(player, SubSkillType.SMELTING_FUEL_EFFICIENCY);
canSecondSmelt = canUseSubskill(player, SubSkillType.SMELTING_SECOND_SMELT);
canFluxMine = canUseSubskill(player, SubSkillType.SMELTING_FLUX_MINING);
canUnderstandTheArt = Permissions.vanillaXpBoost(player, skill) && RankUtils.hasUnlockedSubskill(player, SubSkillType.SMELTING_UNDERSTANDING_THE_ART);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
/*if (canFluxMine) {
messages.add(getStatMessage(SubSkillType.SMELTING_FLUX_MINING, str_fluxMiningChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", str_fluxMiningChanceLucky) : ""));
//messages.add(LocaleLoader.getString("Smelting.Ability.FluxMining", str_fluxMiningChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", str_fluxMiningChanceLucky) : ""));
}*/
if (canFuelEfficiency) {
messages.add(getStatMessage(false, true, SubSkillType.SMELTING_FUEL_EFFICIENCY, burnTimeModifier));
}
if (canSecondSmelt) {
messages.add(getStatMessage(SubSkillType.SMELTING_SECOND_SMELT, str_secondSmeltChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", str_secondSmeltChanceLucky) : ""));
}
if (canUnderstandTheArt) {
messages.add(getStatMessage(false, true, SubSkillType.SMELTING_UNDERSTANDING_THE_ART,
String.valueOf(UserManager.getPlayer(player).getSmeltingManager().getVanillaXpMultiplier())));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.SMELTING);
return textComponents;
}
}

View File

@@ -1,108 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.config.AdvancedConfig;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class SwordsCommand extends SkillCommand {
private String counterChance;
private String counterChanceLucky;
private int bleedLength;
private String bleedChance;
private String bleedChanceLucky;
private String serratedStrikesLength;
private String serratedStrikesLengthEndurance;
private boolean canCounter;
private boolean canSerratedStrike;
private boolean canBleed;
public SwordsCommand() {
super(PrimarySkillType.SWORDS);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// SWORDS_COUNTER_ATTACK
if (canCounter) {
String[] counterStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.SWORDS_COUNTER_ATTACK);
counterChance = counterStrings[0];
counterChanceLucky = counterStrings[1];
}
// SWORDS_RUPTURE
if (canBleed) {
bleedLength = UserManager.getPlayer(player).getSwordsManager().getRuptureBleedTicks();
String[] bleedStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.SWORDS_RUPTURE);
bleedChance = bleedStrings[0];
bleedChanceLucky = bleedStrings[1];
}
// SERRATED STRIKES
if (canSerratedStrike) {
String[] serratedStrikesStrings = calculateLengthDisplayValues(player, skillValue);
serratedStrikesLength = serratedStrikesStrings[0];
serratedStrikesLengthEndurance = serratedStrikesStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canBleed = canUseSubskill(player, SubSkillType.SWORDS_RUPTURE);
canCounter = canUseSubskill(player, SubSkillType.SWORDS_COUNTER_ATTACK);
canSerratedStrike = RankUtils.hasUnlockedSubskill(player, SubSkillType.SWORDS_SERRATED_STRIKES) && Permissions.serratedStrikes(player);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
int ruptureTicks = UserManager.getPlayer(player).getSwordsManager().getRuptureBleedTicks();
double ruptureDamagePlayers = RankUtils.getRank(player, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamagePlayer() * 1.5D : AdvancedConfig.getInstance().getRuptureDamagePlayer();
double ruptureDamageMobs = RankUtils.getRank(player, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamageMobs() * 1.5D : AdvancedConfig.getInstance().getRuptureDamageMobs();
if (canCounter) {
messages.add(getStatMessage(SubSkillType.SWORDS_COUNTER_ATTACK, counterChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", counterChanceLucky) : ""));
}
if (canBleed) {
messages.add(getStatMessage(SubSkillType.SWORDS_RUPTURE, bleedChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", bleedChanceLucky) : ""));
messages.add(getStatMessage(true, true, SubSkillType.SWORDS_RUPTURE,
String.valueOf(ruptureTicks),
String.valueOf(ruptureDamagePlayers),
String.valueOf(ruptureDamageMobs)));
messages.add(LocaleLoader.getString("Swords.Combat.Rupture.Note"));
}
if (canSerratedStrike) {
messages.add(getStatMessage(SubSkillType.SWORDS_SERRATED_STRIKES, serratedStrikesLength)
+ (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", serratedStrikesLengthEndurance) : ""));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.SWORDS);
return textComponents;
}
}

View File

@@ -1,102 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.primary.taming.Taming;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class TamingCommand extends SkillCommand {
private String goreChance;
private String goreChanceLucky;
private boolean canBeastLore;
private boolean canGore;
private boolean canSharpenedClaws;
private boolean canEnvironmentallyAware;
private boolean canThickFur;
private boolean canShockProof;
private boolean canCallWild;
private boolean canFastFood;
private boolean canHolyHound;
public TamingCommand() {
super(PrimarySkillType.TAMING);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
if (canGore) {
String[] goreStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.TAMING_GORE);
goreChance = goreStrings[0];
goreChanceLucky = goreStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canBeastLore = canUseSubskill(player, SubSkillType.TAMING_BEAST_LORE);
canCallWild = Permissions.callOfTheWild(player, EntityType.HORSE) || Permissions.callOfTheWild(player, EntityType.WOLF) || Permissions.callOfTheWild(player, EntityType.OCELOT);
canEnvironmentallyAware = canUseSubskill(player, SubSkillType.TAMING_ENVIRONMENTALLY_AWARE);
canFastFood = canUseSubskill(player, SubSkillType.TAMING_FAST_FOOD_SERVICE);
canGore = canUseSubskill(player, SubSkillType.TAMING_GORE);
canSharpenedClaws = canUseSubskill(player, SubSkillType.TAMING_SHARPENED_CLAWS);
canShockProof = canUseSubskill(player, SubSkillType.TAMING_SHOCK_PROOF);
canThickFur = canUseSubskill(player, SubSkillType.TAMING_THICK_FUR);
canHolyHound = canUseSubskill(player, SubSkillType.TAMING_HOLY_HOUND);
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canEnvironmentallyAware) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.0"), LocaleLoader.getString("Taming.Ability.Bonus.1")));
}
if (canFastFood) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.8"), LocaleLoader.getString("Taming.Ability.Bonus.9", percent.format(Taming.fastFoodServiceActivationChance / 100D))));
}
if (canGore) {
messages.add(LocaleLoader.getString("Ability.Generic.Template",
LocaleLoader.getString("Taming.Combat.Chance.Gore"),
goreChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", goreChanceLucky) : ""));
}
if (canHolyHound) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.10"), LocaleLoader.getString("Taming.Ability.Bonus.11")));
}
if (canSharpenedClaws) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.6"), LocaleLoader.getString("Taming.Ability.Bonus.7", Taming.sharpenedClawsBonusDamage)));
}
if (canShockProof) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.4"), LocaleLoader.getString("Taming.Ability.Bonus.5", Taming.shockProofModifier)));
}
if (canThickFur) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.2"), LocaleLoader.getString("Taming.Ability.Bonus.3", Taming.thickFurModifier)));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, this.skill);
return textComponents;
}
}

View File

@@ -1,129 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class UnarmedCommand extends SkillCommand {
private String berserkLength;
private String berserkLengthEndurance;
private String deflectChance;
private String deflectChanceLucky;
private String disarmChance;
private String disarmChanceLucky;
private String ironGripChance;
private String ironGripChanceLucky;
private double ironArmBonus;
private boolean canBerserk;
private boolean canDisarm;
private boolean canIronArm;
private boolean canDeflect;
private boolean canIronGrip;
public UnarmedCommand() {
super(PrimarySkillType.UNARMED);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// UNARMED_ARROW_DEFLECT
if (canDeflect) {
String[] deflectStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.UNARMED_ARROW_DEFLECT);
;
deflectChance = deflectStrings[0];
deflectChanceLucky = deflectStrings[1];
}
// BERSERK
if (canBerserk) {
String[] berserkStrings = calculateLengthDisplayValues(player, skillValue);
berserkLength = berserkStrings[0];
berserkLengthEndurance = berserkStrings[1];
}
// UNARMED_DISARM
if (canDisarm) {
String[] disarmStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.UNARMED_DISARM);
;
disarmChance = disarmStrings[0];
disarmChanceLucky = disarmStrings[1];
}
// IRON ARM
if (canIronArm) {
ironArmBonus = UserManager.getPlayer(player).getUnarmedManager().getIronArmDamage();
}
// IRON GRIP
if (canIronGrip) {
String[] ironGripStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.UNARMED_IRON_GRIP);
ironGripChance = ironGripStrings[0];
ironGripChanceLucky = ironGripStrings[1];
}
}
@Override
protected void permissionsCheck(Player player) {
canBerserk = RankUtils.hasUnlockedSubskill(player, SubSkillType.UNARMED_BERSERK) && Permissions.berserk(player);
canIronArm = canUseSubskill(player, SubSkillType.UNARMED_IRON_ARM_STYLE);
canDeflect = canUseSubskill(player, SubSkillType.UNARMED_ARROW_DEFLECT);
canDisarm = canUseSubskill(player, SubSkillType.UNARMED_DISARM);
canIronGrip = canUseSubskill(player, SubSkillType.UNARMED_IRON_GRIP);
// TODO: Apparently we forgot about block cracker?
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canDeflect) {
messages.add(getStatMessage(SubSkillType.UNARMED_ARROW_DEFLECT, deflectChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", deflectChanceLucky) : ""));
//messages.add(LocaleLoader.getString("Unarmed.Ability.Chance.ArrowDeflect", deflectChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", deflectChanceLucky) : ""));
}
if (canBerserk) {
messages.add(getStatMessage(SubSkillType.UNARMED_BERSERK, berserkLength)
+ (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", berserkLengthEndurance) : ""));
//messages.add(LocaleLoader.getString("Unarmed.Ability.Berserk.Length", berserkLength) + (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", berserkLengthEndurance) : ""));
}
if (canDisarm) {
messages.add(getStatMessage(SubSkillType.UNARMED_DISARM, disarmChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", disarmChanceLucky) : ""));
//messages.add(LocaleLoader.getString("Unarmed.Ability.Chance.Disarm", disarmChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", disarmChanceLucky) : ""));
}
if (canIronArm) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Unarmed.Ability.Bonus.0"), LocaleLoader.getString("Unarmed.Ability.Bonus.1", ironArmBonus)));
}
if (canIronGrip) {
messages.add(getStatMessage(SubSkillType.UNARMED_IRON_GRIP, ironGripChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", ironGripChanceLucky) : ""));
//messages.add(LocaleLoader.getString("Unarmed.Ability.Chance.IronGrip", ironGripChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", ironGripChanceLucky) : ""));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.UNARMED);
return textComponents;
}
}

View File

@@ -1,96 +0,0 @@
package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.TextComponentFactory;
import com.gmail.nossr50.core.util.skills.RankUtils;
import com.gmail.nossr50.core.util.skills.SkillActivationType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class WoodcuttingCommand extends SkillCommand {
private String treeFellerLength;
private String treeFellerLengthEndurance;
private String doubleDropChance;
private String doubleDropChanceLucky;
private boolean canTreeFell;
private boolean canLeafBlow;
private boolean canDoubleDrop;
private boolean canSplinter;
private boolean canBarkSurgeon;
private boolean canNaturesBounty;
public WoodcuttingCommand() {
super(PrimarySkillType.WOODCUTTING);
}
@Override
protected void dataCalculations(Player player, float skillValue) {
// DOUBLE DROPS
if (canDoubleDrop) {
setDoubleDropClassicChanceStrings(player);
}
// TREE FELLER
if (canTreeFell) {
String[] treeFellerStrings = calculateLengthDisplayValues(player, skillValue);
treeFellerLength = treeFellerStrings[0];
treeFellerLengthEndurance = treeFellerStrings[1];
}
}
private void setDoubleDropClassicChanceStrings(Player player) {
String[] doubleDropStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.WOODCUTTING_HARVEST_LUMBER);
;
doubleDropChance = doubleDropStrings[0];
doubleDropChanceLucky = doubleDropStrings[1];
}
@Override
protected void permissionsCheck(Player player) {
canTreeFell = RankUtils.hasUnlockedSubskill(player, SubSkillType.WOODCUTTING_TREE_FELLER) && Permissions.treeFeller(player);
canDoubleDrop = canUseSubskill(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) && !skill.getDoubleDropsDisabled() && RankUtils.getRank(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) >= 1;
canLeafBlow = canUseSubskill(player, SubSkillType.WOODCUTTING_LEAF_BLOWER);
/*canSplinter = canUseSubskill(player, SubSkillType.WOODCUTTING_SPLINTER);
canBarkSurgeon = canUseSubskill(player, SubSkillType.WOODCUTTING_BARK_SURGEON);
canNaturesBounty = canUseSubskill(player, SubSkillType.WOODCUTTING_NATURES_BOUNTY);*/
}
@Override
protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<String>();
if (canDoubleDrop) {
messages.add(getStatMessage(SubSkillType.WOODCUTTING_HARVEST_LUMBER, doubleDropChance)
+ (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", doubleDropChanceLucky) : ""));
}
if (canLeafBlow) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Woodcutting.Ability.0"), LocaleLoader.getString("Woodcutting.Ability.1")));
}
if (canTreeFell) {
messages.add(getStatMessage(SubSkillType.WOODCUTTING_TREE_FELLER, treeFellerLength)
+ (hasEndurance ? LocaleLoader.getString("Perks.ActivationTime.Bonus", treeFellerLengthEndurance) : ""));
}
return messages;
}
@Override
protected List<TextComponent> getTextComponents(Player player) {
List<TextComponent> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.WOODCUTTING);
return textComponents;
}
}

View File

@@ -1,566 +0,0 @@
package com.gmail.nossr50.listeners;
import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.core.config.MainConfig;
import com.gmail.nossr50.core.config.ChunkConversionOptions;
import com.gmail.nossr50.core.config.WorldBlacklist;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.SuperAbilityType;
import com.gmail.nossr50.core.skills.ToolType;
import com.gmail.nossr50.core.skills.child.salvage.Salvage;
import com.gmail.nossr50.core.skills.primary.alchemy.Alchemy;
import com.gmail.nossr50.core.skills.primary.excavation.ExcavationManager;
import com.gmail.nossr50.core.skills.primary.herbalism.Herbalism;
import com.gmail.nossr50.core.skills.primary.herbalism.HerbalismManager;
import com.gmail.nossr50.core.skills.primary.mining.MiningManager;
import com.gmail.nossr50.core.skills.primary.repair.Repair;
import com.gmail.nossr50.core.skills.primary.woodcutting.WoodcuttingManager;
import com.gmail.nossr50.core.util.BlockUtils;
import com.gmail.nossr50.core.util.EventUtils;
import com.gmail.nossr50.core.util.ItemUtils;
import com.gmail.nossr50.core.util.Permissions;
import com.gmail.nossr50.core.util.skills.SkillUtils;
import com.gmail.nossr50.core.util.sounds.SoundManager;
import com.gmail.nossr50.core.util.sounds.SoundType;
import com.gmail.nossr50.core.worldguard.WorldGuardManager;
import com.gmail.nossr50.core.worldguard.WorldGuardUtils;
import com.gmail.nossr50.core.events.fake.FakeBlockBreakEvent;
import com.gmail.nossr50.core.events.fake.FakeBlockDamageEvent;
import com.gmail.nossr50.mcMMO;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Tag;
import org.bukkit.block.*;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.*;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.metadata.MetadataValue;
import java.util.List;
public class BlockListener implements Listener {
private final mcMMO plugin;
public BlockListener(final mcMMO plugin) {
this.plugin = plugin;
}
/**
* Monitor BlockPistonExtend events.
*
* @param event The event to monitor
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockPistonExtend(BlockPistonExtendEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
BlockFace direction = event.getDirection();
Block movedBlock = event.getBlock();
movedBlock = movedBlock.getRelative(direction, 2);
for (Block b : event.getBlocks()) {
if (BlockUtils.shouldBeWatched(b.getState()) && mcMMO.getPlaceStore().isTrue(b)) {
movedBlock = b.getRelative(direction);
mcMMO.getPlaceStore().setTrue(movedBlock);
}
}
}
/**
* Monitor BlockPistonRetract events.
*
* @param event The event to watch
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
// Get opposite direction so we get correct block
BlockFace direction = event.getDirection();
Block movedBlock = event.getBlock().getRelative(direction);
mcMMO.getPlaceStore().setTrue(movedBlock);
for (Block block : event.getBlocks()) {
movedBlock = block.getRelative(direction);
mcMMO.getPlaceStore().setTrue(movedBlock);
}
}
/**
* Monitor blocks formed by entities (snowmen)
*
* @param event The event to watch
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityBlockFormEvent(EntityBlockFormEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
if (BlockUtils.shouldBeWatched(event.getBlock().getState())) {
mcMMO.getPlaceStore().setTrue(event.getBlock());
}
}
/**
* Monitor falling blocks.
*
* @param event The event to watch
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onFallingBlock(EntityChangeBlockEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
if (BlockUtils.shouldBeWatched(event.getBlock().getState()) && event.getEntityType().equals(EntityType.FALLING_BLOCK)) {
if (event.getTo().equals(Material.AIR) && mcMMO.getPlaceStore().isTrue(event.getBlock())) {
event.getEntity().setMetadata("mcMMOBlockFall", new FixedMetadataValue(plugin, event.getBlock().getLocation()));
} else {
List<MetadataValue> values = event.getEntity().getMetadata("mcMMOBlockFall");
if (!values.isEmpty()) {
if (values.get(0).value() == null) return;
Block spawn = ((org.bukkit.Location) values.get(0).value()).getBlock();
mcMMO.getPlaceStore().setTrue(event.getBlock());
mcMMO.getPlaceStore().setFalse(spawn);
}
}
}
}
/**
* Monitor BlockPlace events.
*
* @param event The event to watch
*/
@EventHandler(priority = EventPriority.MONITOR)
public void onBlockPlace(BlockPlaceEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
Player player = event.getPlayer();
if (!UserManager.hasPlayerDataKey(player)) {
return;
}
BlockState blockState = event.getBlock().getState();
/* Check if the blocks placed should be monitored so they do not give out XP in the future */
if (BlockUtils.shouldBeWatched(blockState)) {
// Don't count de-barking wood
if (!Tag.LOGS.isTagged(event.getBlockReplacedState().getType()) || !Tag.LOGS.isTagged(event.getBlockPlaced().getType()))
mcMMO.getPlaceStore().setTrue(blockState);
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
if (blockState.getType() == Repair.anvilMaterial && PrimarySkillType.REPAIR.getPermissions(player)) {
mcMMOPlayer.getRepairManager().placedAnvilCheck();
} else if (blockState.getType() == Salvage.anvilMaterial && PrimarySkillType.SALVAGE.getPermissions(player)) {
mcMMOPlayer.getSalvageManager().placedAnvilCheck();
}
}
/**
* Monitor BlockMultiPlace events.
*
* @param event The event to watch
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockMultiPlace(BlockMultiPlaceEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
Player player = event.getPlayer();
if (!UserManager.hasPlayerDataKey(player)) {
return;
}
for (BlockState replacedBlockState : event.getReplacedBlockStates()) {
BlockState blockState = replacedBlockState.getBlock().getState();
/* Check if the blocks placed should be monitored so they do not give out XP in the future */
if (BlockUtils.shouldBeWatched(blockState)) {
mcMMO.getPlaceStore().setTrue(blockState);
}
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockGrow(BlockGrowEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
BlockState blockState = event.getBlock().getState();
if (!BlockUtils.shouldBeWatched(blockState)) {
return;
}
mcMMO.getPlaceStore().setFalse(blockState);
}
/**
* Monitor BlockBreak events.
*
* @param event The event to monitor
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
/* WORLD GUARD MAIN FLAG CHECK */
if (WorldGuardUtils.isWorldGuardLoaded()) {
if (!WorldGuardManager.getInstance().hasMainFlag(event.getPlayer()))
return;
}
if (event instanceof FakeBlockBreakEvent) {
return;
}
BlockState blockState = event.getBlock().getState();
Location location = blockState.getLocation();
if (!BlockUtils.shouldBeWatched(blockState)) {
return;
}
/* ALCHEMY - Cancel any brew in progress for that BrewingStand */
if (blockState instanceof BrewingStand && Alchemy.brewingStandMap.containsKey(location)) {
Alchemy.brewingStandMap.get(location).cancelBrew();
}
Player player = event.getPlayer();
if (!UserManager.hasPlayerDataKey(player) || player.getGameMode() == GameMode.CREATIVE) {
return;
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
ItemStack heldItem = player.getInventory().getItemInMainHand();
/* HERBALISM */
if (BlockUtils.affectedByGreenTerra(blockState)) {
HerbalismManager herbalismManager = mcMMOPlayer.getHerbalismManager();
/* Green Terra */
if (herbalismManager.canActivateAbility()) {
mcMMOPlayer.checkAbilityActivation(PrimarySkillType.HERBALISM);
}
/*
* We don't check the block store here because herbalism has too many unusual edge cases.
* Instead, we check it inside the drops handler.
*/
if (PrimarySkillType.HERBALISM.getPermissions(player)) {
herbalismManager.herbalismBlockCheck(blockState);
}
}
/* MINING */
else if (BlockUtils.affectedBySuperBreaker(blockState) && ItemUtils.isPickaxe(heldItem) && PrimarySkillType.MINING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
MiningManager miningManager = mcMMOPlayer.getMiningManager();
miningManager.miningBlockCheck(blockState);
}
/* WOOD CUTTING */
else if (BlockUtils.isLog(blockState) && ItemUtils.isAxe(heldItem) && PrimarySkillType.WOODCUTTING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
WoodcuttingManager woodcuttingManager = mcMMOPlayer.getWoodcuttingManager();
if (woodcuttingManager.canUseTreeFeller(heldItem)) {
woodcuttingManager.processTreeFeller(blockState);
} else {
woodcuttingManager.woodcuttingBlockCheck(blockState);
}
}
/* EXCAVATION */
else if (BlockUtils.affectedByGigaDrillBreaker(blockState) && ItemUtils.isShovel(heldItem) && PrimarySkillType.EXCAVATION.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
ExcavationManager excavationManager = mcMMOPlayer.getExcavationManager();
excavationManager.excavationBlockCheck(blockState);
if (mcMMOPlayer.getAbilityMode(SuperAbilityType.GIGA_DRILL_BREAKER)) {
excavationManager.gigaDrillBreaker(blockState);
}
}
/* Remove metadata from placed watched blocks */
mcMMO.getPlaceStore().setFalse(blockState);
}
/**
* Handle BlockBreak events where the event is modified.
*
* @param event The event to modify
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreakHigher(BlockBreakEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
/* WORLD GUARD MAIN FLAG CHECK */
if (WorldGuardUtils.isWorldGuardLoaded()) {
if (!WorldGuardManager.getInstance().hasMainFlag(event.getPlayer()))
return;
}
if (event instanceof FakeBlockBreakEvent) {
return;
}
Player player = event.getPlayer();
if (!UserManager.hasPlayerDataKey(player) || player.getGameMode() == GameMode.CREATIVE) {
return;
}
BlockState blockState = event.getBlock().getState();
ItemStack heldItem = player.getInventory().getItemInMainHand();
if (Herbalism.isRecentlyRegrown(blockState)) {
event.setCancelled(true);
return;
}
if (ItemUtils.isSword(heldItem)) {
HerbalismManager herbalismManager = UserManager.getPlayer(player).getHerbalismManager();
if (herbalismManager.canUseHylianLuck()) {
if (herbalismManager.processHylianLuck(blockState)) {
blockState.update(true);
event.setCancelled(true);
} else if (blockState.getType() == Material.FLOWER_POT) {
blockState.setType(Material.AIR);
blockState.update(true);
event.setCancelled(true);
}
}
}
/*else if (!heldItem.containsEnchantment(Enchantment.SILK_TOUCH)) {
SmeltingManager smeltingManager = UserManager.getPlayer(player).getSmeltingManager();
if (smeltingManager.canUseFluxMining(blockState)) {
if (smeltingManager.processFluxMining(blockState)) {
blockState.update(true);
event.setCancelled(true);
}
}
}*/
}
/**
* Monitor BlockDamage events.
*
* @param event The event to watch
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockDamage(BlockDamageEvent event) {
Player player = event.getPlayer();
BlockState blockState = event.getBlock().getState();
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
/* WORLD GUARD MAIN FLAG CHECK */
if (WorldGuardUtils.isWorldGuardLoaded()) {
if (!WorldGuardManager.getInstance().hasMainFlag(event.getPlayer()))
return;
}
if (event instanceof FakeBlockDamageEvent) {
return;
}
if (!UserManager.hasPlayerDataKey(player)) {
return;
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
/*
* ABILITY PREPARATION CHECKS
*
* We check permissions here before processing activation.
*/
if (BlockUtils.canActivateAbilities(blockState)) {
ItemStack heldItem = player.getInventory().getItemInMainHand();
if (mcMMOPlayer.getToolPreparationMode(ToolType.HOE) && ItemUtils.isHoe(heldItem) && (BlockUtils.affectedByGreenTerra(blockState) || BlockUtils.canMakeMossy(blockState)) && Permissions.greenTerra(player)) {
mcMMOPlayer.checkAbilityActivation(PrimarySkillType.HERBALISM);
} else if (mcMMOPlayer.getToolPreparationMode(ToolType.AXE) && ItemUtils.isAxe(heldItem) && BlockUtils.isLog(blockState) && Permissions.treeFeller(player)) {
mcMMOPlayer.checkAbilityActivation(PrimarySkillType.WOODCUTTING);
} else if (mcMMOPlayer.getToolPreparationMode(ToolType.PICKAXE) && ItemUtils.isPickaxe(heldItem) && BlockUtils.affectedBySuperBreaker(blockState) && Permissions.superBreaker(player)) {
mcMMOPlayer.checkAbilityActivation(PrimarySkillType.MINING);
} else if (mcMMOPlayer.getToolPreparationMode(ToolType.SHOVEL) && ItemUtils.isShovel(heldItem) && BlockUtils.affectedByGigaDrillBreaker(blockState) && Permissions.gigaDrillBreaker(player)) {
mcMMOPlayer.checkAbilityActivation(PrimarySkillType.EXCAVATION);
} else if (mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockUtils.affectedByGigaDrillBreaker(blockState) || blockState.getType() == Material.SNOW || BlockUtils.affectedByBlockCracker(blockState) && Permissions.berserk(player))) {
mcMMOPlayer.checkAbilityActivation(PrimarySkillType.UNARMED);
}
}
/*
* TREE FELLER SOUNDS
*
* We don't need to check permissions here because they've already been checked for the ability to even activate.
*/
if (mcMMOPlayer.getAbilityMode(SuperAbilityType.TREE_FELLER) && BlockUtils.isLog(blockState) && MainConfig.getInstance().getTreeFellerSoundsEnabled()) {
SoundManager.sendSound(player, blockState.getLocation(), SoundType.FIZZ);
}
}
private Player getPlayerFromFurnace(Block furnaceBlock) {
List<MetadataValue> metadata = furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey);
if (metadata.isEmpty()) {
return null;
}
return plugin.getServer().getPlayerExact(metadata.get(0).asString());
}
/**
* Handle BlockDamage events where the event is modified.
*
* @param event The event to modify
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockDamageHigher(BlockDamageEvent event) {
/* WORLD BLACKLIST CHECK */
if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
return;
/* WORLD GUARD MAIN FLAG CHECK */
if (WorldGuardUtils.isWorldGuardLoaded()) {
if (!WorldGuardManager.getInstance().hasMainFlag(event.getPlayer()))
return;
}
if (event instanceof FakeBlockDamageEvent) {
return;
}
Player player = event.getPlayer();
if (!UserManager.hasPlayerDataKey(player)) {
return;
}
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
ItemStack heldItem = player.getInventory().getItemInMainHand();
Block block = event.getBlock();
BlockState blockState = block.getState();
/*
* ABILITY TRIGGER CHECKS
*
* We don't need to check permissions here because they've already been checked for the ability to even activate.
*/
if (mcMMOPlayer.getAbilityMode(SuperAbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState)) {
if (mcMMOPlayer.getHerbalismManager().processGreenTerra(blockState)) {
blockState.update(true);
}
} else if (mcMMOPlayer.getAbilityMode(SuperAbilityType.BERSERK) && heldItem.getType() == Material.AIR) {
if (SuperAbilityType.BERSERK.blockCheck(block.getState()) && EventUtils.simulateBlockBreak(block, player, true)) {
event.setInstaBreak(true);
SoundManager.sendSound(player, block.getLocation(), SoundType.POP);
} else if (mcMMOPlayer.getUnarmedManager().canUseBlockCracker() && BlockUtils.affectedByBlockCracker(blockState) && EventUtils.simulateBlockBreak(block, player, true)) {
if (mcMMOPlayer.getUnarmedManager().blockCrackerCheck(blockState)) {
blockState.update();
}
}
} else if (mcMMOPlayer.getWoodcuttingManager().canUseLeafBlower(heldItem) && BlockUtils.isLeaves(blockState) && EventUtils.simulateBlockBreak(block, player, true)) {
event.setInstaBreak(true);
SoundManager.sendSound(player, block.getLocation(), SoundType.POP);
}
}
@EventHandler(priority = EventPriority.MONITOR)
public void onBlockDamageCleanup(BlockDamageEvent event) {
Player player = event.getPlayer();
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
BlockState blockState = event.getBlock().getState();
ItemStack heldItem = player.getInventory().getItemInMainHand();
cleanupAbilityTools(player, mcMMOPlayer, blockState, heldItem);
debugStickDump(player, blockState);
}
public void debugStickDump(Player player, BlockState blockState) {
if (player.getInventory().getItemInMainHand().getType() == Material.DEBUG_STICK) {
if (mcMMO.getPlaceStore().isTrue(blockState))
player.sendMessage("[mcMMO DEBUG] This block is not natural and does not reward treasures/XP");
else {
player.sendMessage("[mcMMO DEBUG] This block is considered natural by mcMMO");
UserManager.getPlayer(player).getExcavationManager().printExcavationDebug(player, blockState);
}
if (WorldGuardUtils.isWorldGuardLoaded()) {
if (WorldGuardManager.getInstance().hasMainFlag(player))
player.sendMessage("[mcMMO DEBUG] World Guard main flag is permitted for this player in this region");
else
player.sendMessage("[mcMMO DEBUG] World Guard main flag is DENIED for this player in this region");
if (WorldGuardManager.getInstance().hasXPFlag(player))
player.sendMessage("[mcMMO DEBUG] World Guard xp flag is permitted for this player in this region");
else
player.sendMessage("[mcMMO DEBUG] World Guard xp flag is not permitted for this player in this region");
}
if (blockState instanceof Furnace) {
Furnace furnace = (Furnace) blockState;
if (furnace.hasMetadata(mcMMO.furnaceMetadataKey)) {
player.sendMessage("[mcMMO DEBUG] This furnace has a registered owner");
Player furnacePlayer = getPlayerFromFurnace(furnace.getBlock());
if (furnacePlayer != null) {
player.sendMessage("[mcMMO DEBUG] This furnace is owned by player " + furnacePlayer.getName());
}
} else
player.sendMessage("[mcMMO DEBUG] This furnace does not have a registered owner");
}
if (ExperienceConfig.getInstance().isExperienceBarsEnabled())
player.sendMessage("[mcMMO DEBUG] XP bars are enabled, however you should check per-skill settings to make sure those are enabled.");
}
}
public void cleanupAbilityTools(Player player, McMMOPlayer mcMMOPlayer, BlockState blockState, ItemStack heldItem) {
if (ChunkConversionOptions.getInstance().useEnchantmentBuffs()) {
if ((ItemUtils.isPickaxe(heldItem) && !mcMMOPlayer.getAbilityMode(SuperAbilityType.SUPER_BREAKER)) || (ItemUtils.isShovel(heldItem) && !mcMMOPlayer.getAbilityMode(SuperAbilityType.GIGA_DRILL_BREAKER))) {
SkillUtils.removeAbilityBuff(heldItem);
}
} else {
if ((mcMMOPlayer.getAbilityMode(SuperAbilityType.SUPER_BREAKER) && !BlockUtils.affectedBySuperBreaker(blockState)) || (mcMMOPlayer.getAbilityMode(SuperAbilityType.GIGA_DRILL_BREAKER) && !BlockUtils.affectedByGigaDrillBreaker(blockState))) {
SkillUtils.handleAbilitySpeedDecrease(player);
}
}
}
}

View File

@@ -1,107 +0,0 @@
package com.gmail.nossr50.listeners;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.subskills.AbstractSubSkill;
import com.gmail.nossr50.core.skills.subskills.interfaces.InteractType;
import com.gmail.nossr50.core.skills.subskills.interfaces.Interaction;
import com.gmail.nossr50.mcMMO;
import org.bukkit.event.Event;
import java.util.ArrayList;
import java.util.HashMap;
public class InteractionManager {
private static HashMap<InteractType, ArrayList<Interaction>> interactRegister;
private static HashMap<String, AbstractSubSkill> subSkillNameMap; //Used for mmoinfo optimization
private static ArrayList<AbstractSubSkill> subSkillList;
/**
* Registers subskills with the Interaction registration
*
* @param abstractSubSkill the target subskill to register
*/
public static void registerSubSkill(AbstractSubSkill abstractSubSkill) {
/* INIT MAPS */
if (interactRegister == null)
interactRegister = new HashMap<>();
if (subSkillList == null)
subSkillList = new ArrayList<>();
if (subSkillNameMap == null)
subSkillNameMap = new HashMap<>();
//Store a unique copy of each subskill
if (!subSkillList.contains(abstractSubSkill))
subSkillList.add(abstractSubSkill);
//Init ArrayList
if (interactRegister.get(abstractSubSkill.getInteractType()) == null)
interactRegister.put(abstractSubSkill.getInteractType(), new ArrayList<>());
//Registration array reference
ArrayList<Interaction> arrayRef = interactRegister.get(abstractSubSkill.getInteractType());
//Register skill
arrayRef.add(abstractSubSkill);
String lowerCaseName = abstractSubSkill.getConfigKeyName().toLowerCase();
//Register in name map
if (subSkillNameMap.get(lowerCaseName) == null)
subSkillNameMap.put(lowerCaseName, abstractSubSkill);
System.out.println("[mcMMO] registered subskill: " + abstractSubSkill.getConfigKeyName());
}
/**
* Grabs the registered abstract skill by its name
* Is not case sensitive
*
* @param name name of subskill, not case sensitive
* @return null if the subskill is not registered
*/
public static AbstractSubSkill getAbstractByName(String name) {
return subSkillNameMap.get(name.toLowerCase());
}
/**
* Processes the associated Interactions for this event
*
* @param event target event
* @param plugin instance of mcMMO plugin
* @param curInteractType the associated interaction type
*/
public static void processEvent(Event event, mcMMO plugin, InteractType curInteractType) {
for (Interaction interaction : interactRegister.get(curInteractType)) {
interaction.doInteraction(event, plugin);
}
}
/**
* Returns the list that contains all unique instances of registered Interaction classes
* Interactions are extensions of abstract classes that represent modifying behaviours in Minecraft through events
*
* @return the unique collection of all registered Interaction classes
*/
public static ArrayList<AbstractSubSkill> getSubSkillList() {
return subSkillList;
}
public static boolean hasSubSkill(String name) {
return getAbstractByName(name) != null;
}
public static boolean hasSubSkill(SubSkillType subSkillType) {
return hasSubSkill(subSkillType.getNiceNameNoSpaces(subSkillType));
}
/**
* Returns the associative map which contains all registered interactions
*
* @return the interact register
*/
public static HashMap<InteractType, ArrayList<Interaction>> getInteractRegister() {
return interactRegister;
}
}

View File

@@ -1,133 +0,0 @@
package com.gmail.nossr50.listeners;
import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.core.config.MainConfig;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.datatypes.experience.XPGainReason;
import com.gmail.nossr50.core.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.util.scoreboards.ScoreboardManager;
import com.gmail.nossr50.core.worldguard.WorldGuardManager;
import com.gmail.nossr50.core.worldguard.WorldGuardUtils;
import com.gmail.nossr50.core.events.experience.McMMOPlayerLevelUpEvent;
import com.gmail.nossr50.core.events.experience.McMMOPlayerXpGainEvent;
import com.gmail.nossr50.core.events.skills.abilities.McMMOPlayerAbilityActivateEvent;
import com.gmail.nossr50.mcMMO;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
public class SelfListener implements Listener {
//Used in task scheduling and other things
private final mcMMO plugin;
public SelfListener(mcMMO plugin) {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerLevelUp(McMMOPlayerLevelUpEvent event) {
Player player = event.getPlayer();
PrimarySkillType skill = event.getSkill();
//Players can gain multiple levels especially during xprate events
for (int i = 0; i < event.getLevelsGained(); i++) {
int previousLevelGained = event.getSkillLevel() - i;
//Send player skill unlock notifications
UserManager.getPlayer(player).processUnlockNotifications(plugin, event.getSkill(), previousLevelGained);
}
if (MainConfig.getInstance().getScoreboardsEnabled())
ScoreboardManager.handleLevelUp(player, skill);
if (!MainConfig.getInstance().getLevelUpEffectsEnabled()) {
return;
}
if ((event.getSkillLevel() % MainConfig.getInstance().getLevelUpEffectsTier()) == 0) {
skill.celebrateLevelUp(player);
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerXp(McMMOPlayerXpGainEvent event) {
if (MainConfig.getInstance().getScoreboardsEnabled())
ScoreboardManager.handleXp(event.getPlayer(), event.getSkill());
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onAbility(McMMOPlayerAbilityActivateEvent event) {
if (MainConfig.getInstance().getScoreboardsEnabled())
ScoreboardManager.cooldownUpdate(event.getPlayer(), event.getSkill());
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onPlayerXpGain(McMMOPlayerXpGainEvent event) {
Player player = event.getPlayer();
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
PrimarySkillType primarySkillType = event.getSkill();
//WorldGuard XP Check
if (event.getXpGainReason() == XPGainReason.PVE ||
event.getXpGainReason() == XPGainReason.PVP ||
event.getXpGainReason() == XPGainReason.SHARED_PVE ||
event.getXpGainReason() == XPGainReason.SHARED_PVP) {
if (WorldGuardUtils.isWorldGuardLoaded()) {
if (!WorldGuardManager.getInstance().hasXPFlag(player)) {
event.setRawXpGained(0);
event.setCancelled(true);
}
}
}
if (event.getXpGainReason() == XPGainReason.COMMAND) {
return;
}
int threshold = ExperienceConfig.getInstance().getDiminishedReturnsThreshold(primarySkillType);
if (threshold <= 0 || !ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
// Diminished returns is turned off
return;
}
final float rawXp = event.getRawXpGained();
if (rawXp < 0) {
// Don't calculate for XP subtraction
return;
}
if (primarySkillType.isChildSkill()) {
return;
}
float guaranteedMinimum = ExperienceConfig.getInstance().getDiminishedReturnsCap() * rawXp;
float modifiedThreshold = (float) (threshold / primarySkillType.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
float difference = (mcMMOPlayer.getProfile().getRegisteredXpGain(primarySkillType) - modifiedThreshold) / modifiedThreshold;
if (difference > 0) {
// System.out.println("Total XP Earned: " + mcMMOPlayer.getProfile().getRegisteredXpGain(primarySkillType) + " / Threshold value: " + threshold);
// System.out.println(difference * 100 + "% over the threshold!");
// System.out.println("Previous: " + event.getRawXpGained());
// System.out.println("Adjusted XP " + (event.getRawXpGained() - (event.getRawXpGained() * difference)));
float newValue = rawXp - (rawXp * difference);
/*
* Make sure players get a guaranteed minimum of XP
*/
//If there is no guaranteed minimum proceed, otherwise only proceed if newValue would be higher than our guaranteed minimum
if (guaranteedMinimum <= 0 || newValue > guaranteedMinimum) {
if (newValue > 0) {
event.setRawXpGained(newValue);
} else {
event.setCancelled(true);
}
} else {
event.setRawXpGained(guaranteedMinimum);
}
}
}
}

View File

@@ -1,624 +0,0 @@
package util.java.mcMMO;
import org.bukkit.Material;
import org.bukkit.potion.PotionData;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.potion.PotionType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class PotionConfigGenerator {
public static void main(String[] args) {
Map<WriteablePotion, Map<Ingredient, WriteablePotion>> vanillaPotions = new HashMap<>();
populateVanillaPotions(vanillaPotions);
Map<WriteablePotion, Map<Ingredient, WriteablePotion>> mcMMOPotions = new HashMap<>();
populateCustomPotions(mcMMOPotions);
List<WriteablePotion> sorted = new ArrayList<>();
sorted.addAll(vanillaPotions.keySet());
sorted.addAll(mcMMOPotions.keySet());
sorted.sort((a, b) -> {
// All normal potions first
if (a.mat == Material.POTION && b.mat != Material.POTION) {
return -1;
}
if (b.mat == Material.POTION && a.mat != Material.POTION) {
return 1;
}
// All splash potions second
if (a.mat == Material.SPLASH_POTION && b.mat != Material.SPLASH_POTION) {
return -1;
}
if (b.mat == Material.SPLASH_POTION && a.mat != Material.SPLASH_POTION) {
return 1;
}
// Vanilla Potions first
if (a.effect == null && b.effect != null) {
return -1;
}
if (b.effect == null && a.effect != null) {
return 1;
}
// Vanilla potions
if (a.effect == null && b.effect == null) {
// Order by PotionType
if (a.data.getType() != b.data.getType()) {
return Integer.compare(a.data.getType().ordinal(), b.data.getType().ordinal());
}
// Plain before extended or upgraded
if (!a.data.isExtended() && !a.data.isUpgraded() && (b.data.isExtended() || b.data.isUpgraded())) {
return -1;
}
if (!b.data.isExtended() && !b.data.isUpgraded() && (a.data.isExtended() || a.data.isUpgraded())) {
return 1;
}
// Extended before Upgraded
if (a.data.isExtended() && b.data.isUpgraded()) {
return -1;
}
if (b.data.isExtended() && a.data.isUpgraded()) {
return -1;
}
// Same potion somehow?
return 0;
}
// mcMMO Potions
else {
if ((a.baseName.contains("II") || a.baseName.contains("EXTENDED")) && !(b.baseName.contains("II") || b.baseName.contains("EXTENDED"))) {
return 1;
}
if ((b.baseName.contains("II") || b.baseName.contains("EXTENDED")) && !(a.baseName.contains("II") || a.baseName.contains("EXTENDED"))) {
return -1;
}
if (!a.baseName.contains("II") && b.baseName.contains("II")) {
return -1;
}
if (!b.baseName.contains("II") && a.baseName.contains("II")) {
return 1;
}
return a.baseName.split("_")[0].compareTo(b.baseName.split("_")[0]);
}
});
for (WriteablePotion potion : sorted) {
System.out.println(" " + potion.name + ":");
Map<Ingredient, WriteablePotion> children;
if (vanillaPotions.containsKey(potion)) {
children = vanillaPotions.get(potion);
} else {
System.out.println(" Name: " + prettify(potion.name));
children = mcMMOPotions.get(potion);
}
System.out.println(" Material: " + potion.mat.name());
System.out.println(" PotionData:");
System.out.println(" PotionType: " + potion.data.getType().name());
if (potion.data.isExtended()) {
System.out.println(" Extended: true");
}
if (potion.data.isUpgraded()) {
System.out.println(" Upgraded: true");
}
if (potion.effect != null) {
System.out.println(" Effects: [\"" + getName(potion.effect.getType()) + " " + potion.effect.getAmplifier() + " " + potion.effect.getDuration() + "\"]");
}
if (children == null || children.isEmpty()) {
continue;
}
System.out.println(" Children:");
for (Entry<Ingredient, WriteablePotion> child : children.entrySet()) {
System.out.println(" " + child.getKey().name + ": " + child.getValue().name);
}
}
}
private static String prettify(String name) {
String[] substrings = name.split("_");
String prettyString = "";
int size = 1;
for (String string : substrings) {
prettyString = prettyString.concat(getCapitalized(string));
if (size < substrings.length) {
prettyString = prettyString.concat(" ");
}
size++;
}
return prettyString;
}
public static String getCapitalized(String target) {
if (target.equals("II")) { // hacks
return target;
}
return target.substring(0, 1).toUpperCase() + target.substring(1).toLowerCase();
}
private static String getName(PotionEffectType type) {
switch (type.getId()) {
case 1:
return "SPEED";
case 2:
return "SLOW";
case 3:
return "FAST_DIGGING";
case 4:
return "SLOW_DIGGING";
case 5:
return "INCREASE_DAMAGE";
case 6:
return "HEAL";
case 7:
return "HARM";
case 8:
return "JUMP";
case 9:
return "CONFUSION";
case 10:
return "REGENERATION";
case 11:
return "DAMAGE_RESISTANCE";
case 12:
return "FIRE_RESISTANCE";
case 13:
return "WATER_BREATHING";
case 14:
return "INVISIBILITY";
case 15:
return "BLINDNESS";
case 16:
return "NIGHT_VISION";
case 17:
return "HUNGER";
case 18:
return "WEAKNESS";
case 19:
return "POISON";
case 20:
return "WITHER";
case 21:
return "HEALTH_BOOST";
case 22:
return "ABSORPTION";
case 23:
return "SATURATION";
case 24:
return "GLOWING";
case 25:
return "LEVITATION";
case 26:
return "LUCK";
case 27:
return "UNLUCK";
case 28:
return "SLOW_FALLING";
case 29:
return "CONDUIT_POWER";
case 30:
return "DOLPHINS_GRACE";
default:
return "UNKNOWN_EFFECT_TYPE_" + type.getId();
}
}
private static void populateVanillaPotions(Map<WriteablePotion, Map<Ingredient, WriteablePotion>> vanillaPotions) {
for (PotionType type : PotionType.values()) {
for (Material material : new Material[]{Material.POTION, Material.SPLASH_POTION, Material.LINGERING_POTION}) {
WriteablePotion data = new WriteablePotion(material, type);
HashMap<Ingredient, WriteablePotion> children = new HashMap<>();
getChildren(data, children);
vanillaPotions.put(data, children);
if (type.isExtendable()) {
data = new WriteablePotion(material, new PotionData(type, true, false));
children = new HashMap<>();
getChildren(data, children);
vanillaPotions.put(data, children);
}
if (type.isUpgradeable()) {
data = new WriteablePotion(material, new PotionData(type, false, true));
children = new HashMap<>();
getChildren(data, children);
vanillaPotions.put(data, children);
}
}
}
for (Entry<WriteablePotion, Map<Ingredient, WriteablePotion>> entry : vanillaPotions.entrySet()) {
if (entry.getKey().mat == Material.POTION) {
entry.getValue().put(new Ingredient(Material.GUNPOWDER), new WriteablePotion(Material.SPLASH_POTION, entry.getKey().data));
}
if (entry.getKey().mat == Material.SPLASH_POTION) {
entry.getValue().put(new Ingredient(Material.DRAGON_BREATH), new WriteablePotion(Material.LINGERING_POTION, entry.getKey().data));
}
}
}
private static void getChildren(WriteablePotion current, HashMap<Ingredient, WriteablePotion> children) {
switch (current.data.getType()) {
case WATER:
assert (!current.data.isExtended());
assert (!current.data.isUpgraded());
children.put(new Ingredient(Material.NETHER_WART), new WriteablePotion(current.mat, PotionType.AWKWARD));
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, PotionType.WEAKNESS));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, PotionType.MUNDANE));
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, PotionType.THICK));
children.put(new Ingredient(Material.BLAZE_POWDER), new WriteablePotion(current.mat, PotionType.MUNDANE));
children.put(new Ingredient(Material.SUGAR), new WriteablePotion(current.mat, PotionType.MUNDANE));
children.put(new Ingredient(Material.RABBIT_FOOT), new WriteablePotion(current.mat, PotionType.MUNDANE));
children.put(new Ingredient(Material.SPIDER_EYE), new WriteablePotion(current.mat, PotionType.MUNDANE));
children.put(new Ingredient(Material.MAGMA_CREAM), new WriteablePotion(current.mat, PotionType.MUNDANE));
children.put(new Ingredient(Material.GLISTERING_MELON_SLICE), new WriteablePotion(current.mat, PotionType.MUNDANE));
children.put(new Ingredient(Material.GHAST_TEAR), new WriteablePotion(current.mat, PotionType.MUNDANE));
return;
case AWKWARD:
assert (!current.data.isExtended());
assert (!current.data.isUpgraded());
children.put(new Ingredient(Material.GOLDEN_CARROT), new WriteablePotion(current.mat, PotionType.NIGHT_VISION));
children.put(new Ingredient(Material.RABBIT_FOOT), new WriteablePotion(current.mat, PotionType.JUMP));
children.put(new Ingredient(Material.MAGMA_CREAM), new WriteablePotion(current.mat, PotionType.FIRE_RESISTANCE));
children.put(new Ingredient(Material.SUGAR), new WriteablePotion(current.mat, PotionType.SPEED));
children.put(new Ingredient(Material.PUFFERFISH), new WriteablePotion(current.mat, PotionType.WATER_BREATHING));
children.put(new Ingredient(Material.GLISTERING_MELON_SLICE), new WriteablePotion(current.mat, PotionType.INSTANT_HEAL));
children.put(new Ingredient(Material.SPIDER_EYE), new WriteablePotion(current.mat, PotionType.POISON));
children.put(new Ingredient(Material.GHAST_TEAR), new WriteablePotion(current.mat, PotionType.REGEN));
children.put(new Ingredient(Material.BLAZE_POWDER), new WriteablePotion(current.mat, PotionType.STRENGTH));
children.put(new Ingredient(Material.TURTLE_HELMET), new WriteablePotion(current.mat, PotionType.TURTLE_MASTER));
children.put(new Ingredient(Material.PHANTOM_MEMBRANE), new WriteablePotion(current.mat, PotionType.SLOW_FALLING));
// mcMMO custom potions
double mod = 1;
if (current.mat == Material.SPLASH_POTION) {
mod = 0.75;
}
if (current.mat == Material.LINGERING_POTION) {
mod = 0.25;
}
children.put(new Ingredient(Material.BROWN_MUSHROOM), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.CONFUSION, (int) (450 * mod), 0), "NAUSEA"));
children.put(new Ingredient(Material.CARROT), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.FAST_DIGGING, (int) (3600 * mod), 0), "HASTE"));
children.put(new Ingredient(Material.SLIME_BALL), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.SLOW_DIGGING, (int) (3600 * mod), 0), "DULLNESS"));
children.put(new Ingredient(Material.GOLDEN_APPLE), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, (int) (450 * mod), 0), "RESISTANCE"));
children.put(new Ingredient(Material.INK_SAC), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.BLINDNESS, (int) (225 * mod), 0), "BLINDNESS"));
children.put(new Ingredient(Material.ROTTEN_FLESH), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.HUNGER, (int) (900 * mod), 0), "HUNGER"));
children.put(new Ingredient(Material.POISONOUS_POTATO), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.WITHER, (int) (450 * mod), 0), "DECAY"));
children.put(new Ingredient(Material.QUARTZ), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.ABSORPTION, (int) (1800 * mod), 0), "ABSORPTION"));
children.put(new Ingredient(Material.FERN), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.SATURATION, (int) (8 * mod), 0), "SATURATION"));
children.put(new Ingredient(Material.APPLE), new WriteablePotion(current.mat, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.HEALTH_BOOST, (int) (1800 * mod), 0), "HEALTH_BOOST"));
return;
case FIRE_RESISTANCE:
assert (!current.data.isUpgraded());
if (current.data.isExtended()) {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, new PotionData(PotionType.SLOWNESS, true, false)));
} else {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, PotionType.SLOWNESS));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case INSTANT_DAMAGE:
assert (!current.data.isExtended());
if (!current.data.isUpgraded()) {
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, new PotionData(current.data.getType(), false, true)));
}
return;
case INSTANT_HEAL:
assert (!current.data.isExtended());
if (!current.data.isUpgraded()) {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, PotionType.INSTANT_DAMAGE));
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, new PotionData(current.data.getType(), false, true)));
} else {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, new PotionData(PotionType.INSTANT_DAMAGE, false, true)));
}
return;
case INVISIBILITY:
assert (!current.data.isUpgraded());
if (!current.data.isExtended()) {
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case JUMP:
if (!current.data.isUpgraded() && !current.data.isExtended()) {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, PotionType.SLOWNESS));
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, new PotionData(current.data.getType(), false, true)));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case NIGHT_VISION:
assert (!current.data.isUpgraded());
if (!current.data.isExtended()) {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, PotionType.INVISIBILITY));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
} else {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, new PotionData(PotionType.INVISIBILITY, true, false)));
}
return;
case POISON:
if (!current.data.isUpgraded() && !current.data.isExtended()) {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, PotionType.INSTANT_DAMAGE));
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, new PotionData(current.data.getType(), false, true)));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
} else {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, new PotionData(PotionType.INSTANT_DAMAGE, false, true)));
}
return;
case REGEN:
if (!current.data.isUpgraded() && !current.data.isExtended()) {
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, new PotionData(current.data.getType(), false, true)));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case SLOWNESS:
assert (!current.data.isUpgraded());
if (!current.data.isExtended()) {
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case SLOW_FALLING:
assert (!current.data.isUpgraded());
if (!current.data.isExtended()) {
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case SPEED:
if (!current.data.isUpgraded() && !current.data.isExtended()) {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, PotionType.SLOWNESS));
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, new PotionData(current.data.getType(), false, true)));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
} else {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, new PotionData(PotionType.SLOWNESS, true, false)));
}
return;
case STRENGTH:
if (!current.data.isUpgraded() && !current.data.isExtended()) {
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, new PotionData(current.data.getType(), false, true)));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case TURTLE_MASTER:
if (!current.data.isUpgraded() && !current.data.isExtended()) {
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(current.mat, new PotionData(current.data.getType(), false, true)));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case WATER_BREATHING:
assert (!current.data.isUpgraded());
if (!current.data.isExtended()) {
children.put(new Ingredient(Material.FERMENTED_SPIDER_EYE), new WriteablePotion(current.mat, PotionType.INSTANT_DAMAGE));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case WEAKNESS:
assert (!current.data.isUpgraded());
if (!current.data.isExtended()) {
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(current.mat, new PotionData(current.data.getType(), true, false)));
}
return;
case LUCK:
case MUNDANE:
case THICK:
case UNCRAFTABLE:
assert (!current.data.isExtended());
assert (!current.data.isUpgraded());
return;
default:
assert (false);
break;
}
}
private static void populateCustomPotions(Map<WriteablePotion, Map<Ingredient, WriteablePotion>> mcMMOPotions) {
for (Material material : new Material[]{Material.POTION, Material.SPLASH_POTION, Material.LINGERING_POTION}) {
WriteablePotion data;
double mod = 1;
if (material == Material.SPLASH_POTION) {
mod = 0.75;
}
if (material == Material.LINGERING_POTION) {
mod = 0.25;
}
HashMap<Ingredient, WriteablePotion> children;
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.CONFUSION, (int) (450 * mod), 0), "NAUSEA");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.FAST_DIGGING, (int) (3600 * mod), 0), "HASTE");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.SLOW_DIGGING, (int) (3600 * mod), 0), "DULLNESS");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, (int) (450 * mod), 0), "RESISTANCE");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.BLINDNESS, (int) (225 * mod), 0), "BLINDNESS");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.HUNGER, (int) (900 * mod), 0), "HUNGER");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.WITHER, (int) (450 * mod), 0), "DECAY");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.ABSORPTION, (int) (1800 * mod), 0), "ABSORPTION");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.SATURATION, (int) (8 * mod), 0), "SATURATION");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.HEALTH_BOOST, (int) (1800 * mod), 0), "HEALTH_BOOST");
children = new HashMap<>();
children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
for (WriteablePotion child : children.values()) {
mcMMOPotions.put(child, new HashMap<>());
}
mcMMOPotions.put(data, children);
}
// Add all material state changes
for (Entry<WriteablePotion, Map<Ingredient, WriteablePotion>> entry : mcMMOPotions.entrySet()) {
if (entry.getKey().mat == Material.POTION) {
PotionEffect effect = new PotionEffect(entry.getKey().effect.getType(), (int) (entry.getKey().effect.getDuration() * 0.75), entry.getKey().effect.getAmplifier());
entry.getValue().put(new Ingredient(Material.GUNPOWDER), new WriteablePotion(Material.SPLASH_POTION, entry.getKey().data, effect, entry.getKey().baseName));
} else if (entry.getKey().mat == Material.SPLASH_POTION) {
PotionEffect effect = new PotionEffect(entry.getKey().effect.getType(), (int) (entry.getKey().effect.getDuration() * 0.33), entry.getKey().effect.getAmplifier());
entry.getValue().put(new Ingredient(Material.DRAGON_BREATH), new WriteablePotion(Material.LINGERING_POTION, entry.getKey().data, effect, entry.getKey().baseName));
}
}
}
public static class Ingredient {
public Material mat;
public int data;
public String name;
public Ingredient(Material mat) {
this.mat = mat;
this.data = 0;
name = mat.name();
}
}
public static class WriteablePotion {
public String name;
public Material mat;
public PotionData data;
public PotionEffect effect;
public String baseName;
public WriteablePotion(PotionData data) {
this(Material.POTION, data);
}
public WriteablePotion(Material type, PotionData data) {
this(type, data, null, getMCName(data.getType()));
}
public WriteablePotion(Material mat, PotionType type, PotionEffect effect, String baseName) {
this(mat, new PotionData(type, false, false), effect, baseName);
}
public WriteablePotion(Material type, PotionData data, PotionEffect effect, String baseName) {
this.data = data;
this.effect = effect;
this.mat = type;
this.baseName = baseName;
this.name = "POTION_OF_" + baseName;
if (mat == Material.SPLASH_POTION) {
this.name = "SPLASH_" + this.name;
}
if (mat == Material.LINGERING_POTION) {
this.name = "LINGERING_" + this.name;
}
if (data.isExtended()) {
this.name += "_EXTENDED";
}
if (data.isUpgraded()) {
this.name += "_II";
}
}
public WriteablePotion(PotionType type) {
this(new PotionData(type, false, false));
}
public WriteablePotion(Material mat, PotionType type) {
this(mat, new PotionData(type, false, false));
}
private static String getMCName(PotionType type) {
switch (type) {
case INSTANT_DAMAGE:
return "HARMING";
case INSTANT_HEAL:
return "HEALING";
case JUMP:
return "LEAPING";
case REGEN:
return "REGENERATION";
case SPEED:
return "SWIFTNESS";
case UNCRAFTABLE:
return "EMPTY";
case LUCK:
case MUNDANE:
case NIGHT_VISION:
case POISON:
case INVISIBILITY:
case SLOWNESS:
case AWKWARD:
case STRENGTH:
case THICK:
case FIRE_RESISTANCE:
case WATER:
case WATER_BREATHING:
case WEAKNESS:
case TURTLE_MASTER:
case SLOW_FALLING:
return type.name();
default:
return "";
}
}
public int hashCode() {
return name.hashCode();
}
public boolean equals(Object obj) {
if (!(obj instanceof WriteablePotion)) {
return false;
}
return name.equals(((WriteablePotion) obj).name);
}
}
}

View File

@@ -1,3 +0,0 @@
Manifest-Version: 1.0
Main-Class: com.gmail.nossr50.mcMMO

View File

@@ -1,9 +0,0 @@
#
# This file includes a few settings for each skill in mcMMO
#Acrobatics
Acrobatics:
# turn this to false to disable all subskills for this skill
Enabled: true
Roll:
Enabled: true

View File

@@ -1,440 +0,0 @@
#
# Experience configuration
# Last updated on ${project.version}-b${BUILD_NUMBER}
#
# Configure the experience formula and experience settings here.
#
#####
# https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BarColor.html
# These are the only valid colors for Experience Bars, use the exact name found here
# BLUE, GREEN, PINK, PURPLE, RED, WHITE, YELLOW (As of the time of this update these are the only Bar colors available, this could change in the future so check the BarColor enum to see if it has)
# BarStyle Settings (USE THE EXACT NAME) :
#SEGMENTED_10
# Splits the boss bar into 10 segments
#SEGMENTED_12
# Splits the boss bar into 12 segments
#SEGMENTED_20
# Splits the boss bar into 20 segments
#SEGMENTED_6
# Splits the boss bar into 6 segments
#SOLID
# The bar is one solid piece
ExploitFix:
EndermanEndermiteFarms: true
Experience_Bars:
# Turn this to false if you wanna disable XP bars
Enable: true
Update:
# XP that you gained from your party but not yourself
Party: true
# Passive is stuff like smelting, brewing
Passive: true
# If you want to use a fancy edited title from the locale, then you'll probably want to turn this on, but it will make your server do a lot more work!
# I recommend leaving this off!
ThisMayCauseLag:
AlwaysUpdateTitlesWhenXPIsGained:
Enable: false
# You can make your own custom details in the locale file without having to use the ExtraDetails setting!
ExtraDetails: false
Acrobatics:
Enable: true
Color: PINK
BarStyle: SEGMENTED_6
Alchemy:
Enable: true
Color: PURPLE
BarStyle: SEGMENTED_6
Archery:
Enable: true
Color: BLUE
BarStyle: SEGMENTED_6
Axes:
Enable: true
Color: BLUE
BarStyle: SEGMENTED_6
Excavation:
Enable: true
Color: YELLOW
BarStyle: SEGMENTED_6
Fishing:
Enable: true
Color: PURPLE
BarStyle: SEGMENTED_6
Herbalism:
Enable: true
Color: GREEN
BarStyle: SEGMENTED_6
Mining:
Enable: true
Color: YELLOW
BarStyle: SEGMENTED_6
Repair:
Enable: true
Color: PURPLE
BarStyle: SEGMENTED_6
Salvage:
Enable: true
Color: PURPLE
BarStyle: SEGMENTED_6
Smelting:
Enable: true
Color: PURPLE
BarStyle: SEGMENTED_6
Swords:
Enable: true
Color: BLUE
BarStyle: SEGMENTED_6
Taming:
Enable: true
Color: RED
BarStyle: SEGMENTED_6
Unarmed:
Enable: true
Color: BLUE
BarStyle: SEGMENTED_6
Woodcutting:
Enable: true
Color: GREEN
BarStyle: SEGMENTED_6
#
# Settings for XP formula
###
Experience_Formula:
# Valid values are: LINEAR and EXPONENTIAL
# If an invalid value is entered, this will reset to the default setting, which is LINEAR
# LINEAR: base + (level * multiplier)
# EXPONENTIAL: multiplier * level ^ exponent + base
Curve: LINEAR
# If invalid values are entered mcMMO will not start and print an error in the console
Linear_Values:
base: 1020
multiplier: 20
Exponential_Values:
multiplier: 0.1
exponent: 1.80
base: 2000
# Cumulative experience curves will use a players power level instead of their skill level,
# players with high power levels will have to gain a lot more experience to reach the next level in every skill.
Cumulative_Curve: false
# Experience gained in every skill will get multiplied by this value. 1.0 by default, 2.0 means two times as much
Multiplier:
Global: 1.0
PVP: 1.0
# Experience gained from mobs not naturally spawned will get multiplied by this value. 0 by default.
Mobspawners:
Multiplier: 0
Breeding:
Multiplier: 1.0
# Experience gained will get divided by these values. 1.0 by default, 2.0 means two times less XP gained.
Modifier:
Swords: 1.0
Taming: 1.0
Acrobatics: 1.0
Excavation: 1.0
Herbalism: 1.0
Unarmed: 1.0
Woodcutting: 1.0
Mining: 1.0
Archery: 1.0
Axes: 1.0
Repair: 1.0
Fishing: 1.0
Alchemy: 1.0
# XP earned by players with the permission mcmmo.perks.xp.customboost.<skillname> will get multiplied
# with 1.25 by default, resulting in a 25% XP boost
Custom_XP_Perk:
Boost: 1.25
#
# Settings for Diminished Returns
###
Diminished_Returns:
#This is the minimum amount of XP a player will earn after reaching the timed threshold (this is to prevent punishing a player too hard for earning XP)
## A value of 1 would mean that a player gets FULL XP, which defeats the purpose of diminished returns, the default value is 0.05 (5% minimum XP)
### Set this value to 0 to turn it off
Guaranteed_Minimum_Percentage: 0.05
Enabled: false
# Limit the amount of experience a player can earn:
# Threshold (amount of experience) per Time_Interval (in minutes)
Threshold:
Swords: 20000
Taming: 20000
Acrobatics: 20000
Excavation: 20000
Herbalism: 20000
Unarmed: 20000
Woodcutting: 20000
Mining: 20000
Archery: 20000
Axes: 20000
Repair: 20000
Fishing: 20000
Alchemy: 20000
Time_Interval: 10
#
# Settings for XP conversion with '/mcconvert experience'
###
Conversion:
# Old experience will get divided by this modifier
Exp_Modifier: 1
#
# Settings for XP distribution
###
Experience:
PVP:
Rewards: true
Acrobatics:
Dodge: 120
Roll: 80
Fall: 120
# FeatherFall_Multiplier: Multiply Acrobatics XP by this value when wearing boots with the Feather Fall enchant
FeatherFall_Multiplier: 2.0
Alchemy:
# Alchemy potion stages are based on the number of ingredients added
# Potion_Stage_1 represents a base potion
# Potion_Stage_2 represents a base potion with one ingredient
# Potion_Stage_3 represents a base potion with one ingredient and one amplifier
# Potion_Stage_4 represents a base potion with one ingredient and two amplifiers
# Potion_Stage_5 represents a base potion with one ingredient where the amplifiers are swapped
Potion_Stage_1: 15
Potion_Stage_2: 30
Potion_Stage_3: 60
Potion_Stage_4: 120
Potion_Stage_5: 0
Archery:
Distance_Multiplier: 0.025
Fishing:
Cod: 100
Salmon: 600
Tropical_Fish: 10000
Pufferfish: 2400
Shake: 50
Excavation:
Clay: 40
Dirt: 40
Coarse_Dirt: 40
Podzol: 40
Grass_Block: 40
Gravel: 40
Mycelium: 40
Sand: 40
Red_Sand: 40
Snow: 20
Snow_Block: 40
Soul_Sand: 40
Woodcutting:
Oak_Log: 70
Spruce_Log: 80
Birch_Log: 90
Jungle_Log: 100
Acacia_Log: 90
Dark_Oak_Log: 90
Stripped_Oak_Log: 70
Stripped_Spruce_Log: 80
Stripped_Birch_Log: 90
Stripped_Jungle_Log: 100
Stripped_Acacia_Log: 90
Stripped_Dark_Oak_Log: 90
Oak_Wood: 70
Spruce_Wood: 70
Birch_Wood: 70
Jungle_Wood: 70
Acacia_Wood: 70
Dark_Oak_Wood: 70
Mycelium: 70
Red_Mushroom_Block: 70
Brown_Mushroom_Block: 70
Mushroom_Stem: 80
Herbalism:
Tube_Coral_Fan: 80
Brain_Coral: 90
Bubble_Coral: 75
Fire_Coral: 120
Horn_Coral: 175
Dead_Tube_Coral: 30
Dead_Brain_Coral: 30
Dead_Bubble_Coral: 30
Dead_Fire_Coral: 30
Dead_Horn_Coral: 30
Allium: 300
Azure_Bluet: 150
Beetroots_Ripe: 50
Blue_Orchid: 150
Brown_Mushroom: 150
Cactus: 30
Carrots_Ripe: 50
Chorus_Flower_Ripe: 25
Chorus_Plant: 1
Cocoa_Ripe: 30
Wheat_Ripe: 50
Dead_Bush: 30
Lilac: 50
Melon: 20
Nether_Wart_Ripe: 50
Orange_Tulip: 150
Oxeye_Daisy: 150
Peony: 50
Pink_Tulip: 150
Poppy: 100
Potatoes_Ripe: 50
Pumpkin: 20
Red_Mushroom: 150
Red_Tulip: 150
Rose_Bush: 50
Fern: 10
Grass: 10
Sugar_Cane: 30
Sunflower: 50
Tall_Grass: 50
Large_Fern: 50
Vine: 10
Lily_Pad: 100
White_Tulip: 150
Dandelion: 100
Mining:
Tube_Coral_Block: 75
Brain_Coral_Block: 80
Bubble_Coral_Block: 70
Fire_Coral_Block: 90
Horn_Coral_Block: 125
Coal_Ore: 100
Diamond_Ore: 750
Emerald_Ore: 1000
End_Bricks: 200
Nether_Brick: 50
End_Stone: 30
Glowstone: 30
Gold_Ore: 350
Terracotta: 30
Iron_Ore: 250
Lapis_Ore: 400
Mossy_Cobblestone: 30
Netherrack: 30
Obsidian: 150
Packed_Ice: 50
Blue_Ice: 100
Nether_Quartz_Ore: 100
Redstone_Ore: 150
Sandstone: 30
Black_Terracotta: 50
Blue_Terracotta: 50
Brown_Terracotta: 50
Cyan_Terracotta: 50
Gray_Terracotta: 50
Green_Terracotta: 50
Light_Blue_Terracotta: 50
Light_Gray_Terracotta: 50
Lime_Terracotta: 50
Magenta_Terracotta: 50
Orange_Terracotta: 50
Pink_Terracotta: 50
Purple_Terracotta: 50
Red_Terracotta: 50
White_Terracotta: 50
Yellow_Terracotta: 50
Stone: 30
Granite: 30
Andesite: 30
Diorite: 30
Red_Sandstone: 100
Prismarine: 70
Purpur_Block: 200
Purpur_Pillar: 250
Purpur_Slab: 150
Purpur_Stairs: 250
Repair:
Base: 1000.0
Wood: 0.6
Stone: 1.3
Iron: 2.5
Gold: 0.3
Diamond: 5.0
Leather: 1.6
String: 1.8
Other: 1.5
Smelting:
Coal_Ore: 10
Diamond_Ore: 75
Emerald_Ore: 100
Gold_Ore: 35
Iron_Ore: 25
Lapis_Ore: 40
Nether_Quartz_Ore: 25
Redstone_Ore: 15
Taming:
Animal_Taming:
Wolf: 250
Ocelot: 500
Horse: 1000
Donkey: 1000
Mule: 1000
Skeleton_Horse: 1000
Zombie_Horse: 1000
Combat:
Multiplier:
Animals: 1.0
Creeper: 4.0
Skeleton: 3.0
Spider: 2.0
Giant: 4.0
Zombie: 2.0
Slime: 2.0
Ghast: 3.0
Pig_Zombie: 3.0
Enderman: 1.0
Cave_Spider: 3.0
Silverfish: 3.0
Blaze: 3.0
Magma_Cube: 2.0
Ender_Dragon: 1.0
Wither: 1.0
Witch: 0.1
Iron_Golem: 2.0
Wither_Skeleton: 4.0
Endermite: 2.0
Guardian: 3.0
Elder_Guardian: 4.0
Shulker: 2.0
Donkey: 1.0
Mule: 1.0
Horse: 1.0
Zombie_Villager: 2.0
Skeleton_Horse: 1.0
Zombie_Horse: 1.2
Husk: 3.0
Evoker: 3.0
Polar_Bear: 2.0
Llama: 1.0
Vindicator: 3.0
Stray: 2.0
Rabbit: 1.0
Chicken: 1.0
Bat: 1.0
Mushroom_Cow: 1.2
Cow: 1.0
Turtle: 1.1
Sheep: 1.0
Pig: 1.0
Squid: 1.0
Ocelot: 1.0
Villager: 1.0
Snowman: 0.0
Parrot: 1.0
Illusioner: 3.0
Drowned: 1.0
Dolphin: 1.3
Phantom: 4.0

View File

@@ -1,96 +0,0 @@
#
# ItemStack Weights configuration
#
# This file is used to determine the value of an item. This will only
# happen when users are sharing items in a party using the EQUAL item share mode.
#
# Rare items should have a higher value than common items. If an item is not listed
# here, the value from "Default" will be used instead.
#
#####
Item_Weights:
Default: 5
Quartz: 200
Nether_Quartz_Ore: 200
Emerald: 150
Emerald_Ore: 150
Diamond: 100
Diamond_Ore: 100
Gold_Ingot: 50
Gold_Ore: 50
Iron_Ingot: 40
Iron_Ore: 40
Lapis_Ore: 30
Redstone: 30
Redstone_Ore: 30
Glowstone_Dust: 20
Coal: 10
Coal_Ore: 10
# ItemStack weights for armor and tools
Diamond_Sword: 150
Diamond_Shovel: 150
Diamond_Pickaxe: 150
Diamond_Axe: 150
Diamond_Helmet: 150
Diamond_Chestplate: 150
Diamond_Leggings: 150
Diamond_Boots: 150
Golden_Sword: 75
Golden_Shovel: 75
Golden_Pickaxe: 75
Golden_Axe: 75
Golden_Helmet: 75
Golden_Chestplate: 75
Golden_Leggings: 75
Golden_Boots: 75
Iron_Sword: 60
Iron_Shovel: 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:
Misc_Items:
- Diamond_Sword
- Diamond_Shovel
- Diamond_Pickaxe
- Diamond_Axe
- Golden_Sword
- Golden_Shovel
- Golden_Pickaxe
- Golden_Axe
- Iron_Sword
- Iron_Shovel
- Iron_Pickaxe
- Iron_Axe
- Stone_Sword
- Stone_Shovel
- Stone_Pickaxe
- Stone_Axe
- Wooden_Sword
- Wooden_Shovel
- Wooden_Pickaxe
- Wooden_Axe
- Bow
- Diamond_Helmet
- Diamond_Chestplate
- Diamond_Leggings
- Diamond_Boots
- Golden_Helmet
- Golden_Chestplate
- Golden_Leggings
- Golden_Boots
- Iron_Helmet
- Iron_Chestplate
- Iron_Leggings
- Iron_Boots
- Leather_Helmet
- Leather_Chestplate
- Leather_Leggings
- Leather_Boots

View File

@@ -1,467 +0,0 @@
Acrobatics.Ability.Proc=[[GREEN]]**Graceful Landing**
Acrobatics.Combat.Proc=[[GREEN]] **osgoi\'r**
Acrobatics.DodgeChance=Dodge Chance: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.Name=Roll
Acrobatics.SubSkill.Roll.Description=Reduces or Negates fall damage
Acrobatics.SubSkill.GracefulRoll.Name=Graceful Roll
Acrobatics.SubSkill.GracefulRoll.Description=Twice as effective as a normal Roll
Acrobatics.SubSkill.Dodge.Name=Dodge
Acrobatics.SubSkill.Dodge.Description=Reduce attack damage by half
Acrobatics.Listener=Acrobateg
Acrobatics.SubSkill.Roll.Chance=Roll Chance: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.GraceChance=Graceful Roll Chance: [[YELLOW]]{0}
Acrobatics.Roll.Text=**Rolled**
Acrobatics.SkillName=ACROBATEG
Acrobatics.Skillup=Acrobateg sgil cynyddu {0}. Cyfanswm ({1})
Archery.Combat.DazeChance=Chance to Daze: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=Chance to Retrieve Arrows: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=Skill Shot Bonus Damage: [[YELLOW]]{0}
Archery.SubSkill.SkillShot.Name=Skill Shot
Archery.SubSkill.SkillShot.Description=Increases damage done with bows
Archery.SubSkill.Daze.Name=Daze (Players)
Archery.SubSkill.ArrowRetrieval.Name=Arrow Retrieval
Archery.SubSkill.ArrowRetrieval.Description=Chance to retrieve arrows from corpses
Archery.Listener=Archery:
Archery.SkillName=ARCHERY
Archery.Skillup=sgiliau Saethyddiaeth cynyddu {0}. Cyfanswm ({1})
Axes.Ability.Bonus.0=Axe Mastery
Axes.Ability.Bonus.1=Bonus {0} damage
Axes.Ability.Bonus.2=Impact
Axes.Ability.Bonus.3=Deal {0} Bonus DMG to armor
Axes.Ability.Bonus.4=Greater Impact
Axes.Ability.Bonus.5=Deal {0} Bonus DMG to unarmored foes
Axes.Ability.Lower=[[GRAY]]**YOU LOWER YOUR AXE**
Axes.Ability.Ready=[[GREEN]]**YOU READY YOUR AXE**
Axes.Combat.CritStruck=[[DARK_RED]]You were CRITICALLY hit!
Axes.Combat.CritChance=Chance to critically strike: [[YELLOW]]{0}
Axes.Combat.CriticalHit=CRITICAL HIT!
Axes.Combat.GI.Proc=[[GREEN]]**STRUCK WITH GREAT FORCE**
Axes.Combat.GI.Struck=** ** BRIFO GAN EFFAITH FWYAF
Axes.Combat.SS.Length=Skull Splitter Length: [[YELLOW]]{0}s
Axes.SubSkill.SkullSplitter.Name=Skull Splitter
Axes.SubSkill.SkullSplitter.Description=Deal AoE Damage
Axes.SubSkill.CriticalStrikes.Name=Critical Strikes
Axes.SubSkill.CriticalStrikes.Description=Double Damage
Axes.SubSkill.AxeMastery.Name=Axe Mastery
Axes.SubSkill.AxeMastery.Description=Adds bonus DMG
Axes.SubSkill.ArmorImpact.Name=Impact
Axes.SubSkill.ArmorImpact.Description=Strike with enough force to shatter armor
Axes.SubSkill.GreaterImpact.Name=Greater Impact
Axes.SubSkill.GreaterImpact.Description=Deal bonus damage to unarmored foes
Axes.Listener=Axes:
Axes.SkillName=AXES
Axes.Skills.SS.Off=**Skull Splitter has worn off**
Axes.Skills.SS.On=actifadu Penglog Llorweddol
Axes.Skills.SS.Refresh=[[GREEN]] Eich [[YELLOW]] Penglog Llorweddol [[GREEN]] gallu ei hadnewyddu!
Axes.Skills.SS.Other.Off=Skull Splitter[[GREEN]] has worn off for [[YELLOW]]{0}
Axes.Skills.SS.Other.On=[[GREEN]] {0} [[DARK_GREEN]] wedi defnyddio [[RED]] Llorweddol Benglog!
Axes.Skillup=sgiliau Echelau cynyddu {0}. Cyfanswm ({1})
Excavation.Ability.Lower=[[GRAY]]**YOU LOWER YOUR SHOVEL**
Excavation.Ability.Ready=[[GREEN]]**YOU READY YOUR SHOVEL**
Excavation.SubSkill.GigaDrillBreaker.Name=Giga Drill Breaker
Excavation.SubSkill.GigaDrillBreaker.Description=3x Drop Rate, 3x EXP, +Speed
Excavation.SubSkill.TreasureHunter.Name=Treasure Hunter
Excavation.SubSkill.TreasureHunter.Description=Ability to dig for treasure
Excavation.Effect.Length=Giga Drill Breaker Length: [[YELLOW]]{0}s
Excavation.Listener=Cloddio:
Excavation.SkillName=CLODDIO
Excavation.Skills.GigaDrillBreaker.Off=**Giga Drill Breaker has worn off**
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**GIGA DRILL BREAKER ACTIVATED**
Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]Your [[YELLOW]]Giga Drill Breaker [[GREEN]]ability is refreshed!
Excavation.Skills.GigaDrillBreaker.Other.Off=Giga Drill Breaker[[GREEN]] has worn off for [[YELLOW]]{0}
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Giga Drill Breaker!
Excavation.Skillup=Excavation skill increased by {0}. Total ({1})
Fishing.Ability.Info=Magic Hunter: [[GRAY]] **Improves With Treasure Hunter Rank**
Fishing.Ability.Locked.0=LOCKED UNTIL {0}+ SKILL (SHAKE)
Fishing.Ability.Rank=Treasure Hunter Rank: [[YELLOW]]{0}/5
Fishing.Ability.TH.MagicRate=Magic Hunter Chance: [[YELLOW]]{0}
Fishing.Ability.Shake=Shake Chance: [[YELLOW]]{0}
Fishing.Ability.FD=Fisherman\'\'s Diet: [[YELLOW]]Rank {0}
Fishing.SubSkill.TreasureHunter.Name=Treasure Hunter (Passive)
Fishing.SubSkill.TreasureHunter.Description=Fish up misc. objects
Fishing.SubSkill.MagicHunter.Name=Magic Hunter
Fishing.SubSkill.MagicHunter.Description=Find Enchanted Items
Fishing.SubSkill.Shake.Name=Shake (vs. Entities)
Fishing.SubSkill.Shake.Description=Shake items off of mobs w/ fishing pole
Fishing.SubSkill.FishermansDiet.Name=Fisherman\'s Diet
Fishing.SubSkill.FishermansDiet.Description=Improves hunger restored from fished foods
Fishing.Chance.Raining=[[BLUE]] Rain Bonus
Fishing.Listener=Fishing:
Fishing.Ability.TH.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
Fishing.SkillName=FISHING
Fishing.Skillup=Fishing skill increased by {0}. Total ({1})
Herbalism.Ability.DoubleDropChance=Double Drop Chance: [[YELLOW]]{0}
Herbalism.Ability.GTe.Length=Green Terra Length: [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=You need more seeds to spread Green Terra.
Herbalism.Ability.GTh.Chance=Green Thumb Chance: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=**GREEN THUMB FAIL**
Herbalism.Ability.GTh.Stage=Green Thumb Stage: [[YELLOW]] Crops grow in stage {0}
Herbalism.Ability.GTh=[[GREEN]]**GREEN THUMB**
Herbalism.Ability.Lower=[[GRAY]]**YOU LOWER YOUR HOE**
Herbalism.Ability.Ready=[[GREEN]]**YOU READY YOUR HOE**
Herbalism.SubSkill.GreenTerra.Name=Green Terra
Herbalism.SubSkill.GreenTerra.Description=Spread the Terra, 3x Drops
Herbalism.SubSkill.GreenThumb.Name=Green Thumb (Wheat)
Herbalism.SubSkill.GreenThumb.Description=Auto-Plants crops when harvesting
Herbalism.SubSkill.GreenThumb.Description.2=Make bricks mossy, or make grass grow
Herbalism.SubSkill.FarmersDiet.Name=Farmer\'s Diet
Herbalism.SubSkill.FarmersDiet.Description=Improves hunger restored from farmed foods
Herbalism.SubSkill.DoubleDrops.Name=Double Drops (All Herbs)
Herbalism.SubSkill.DoubleDrops.Description=Double the normal loot
Herbalism.Listener=Meddygaeth lysieuol:
Herbalism.SkillName=HERBALISM
Herbalism.Skills.GTe.On=[[GREEN]]**GREEN TERRA ACTIVATED**
Herbalism.Skills.GTe.Refresh=[[GREEN]] Eich [[YELLOW]] Green Terra [[GREEN]] gallu ei hadnewyddu!
Herbalism.Skills.GTe.Other.Off=Green terra [[GREEN]] wedi gwisgo i ffwrdd ar gyfer [[YELLOW]] {0}
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Green Terra!
Herbalism.Skillup=Herbalism skill increased by {0}. Total ({1})
Mining.Ability.Length=Hyd Torri\'r Super: [[YELLOW]] {0} s
Mining.Ability.Locked.0=LOCKED UNTIL {0}+ SKILL (BLAST MINING)
Mining.Ability.Locked.1=LOCKED UNTIL {0}+ SKILL (BIGGER BOMBS)
Mining.Ability.Locked.2=LOCKED UNTIL {0}+ SKILL (DEMOLITIONS EXPERTISE)
Mining.Ability.Lower=[[GRAY]]You lower your Pickaxe.
Mining.Ability.Ready=[[GREEN]] ** CHI'N BAROD EICH PICKAXE **
Mining.SubSkill.SuperBreaker.Name=Super Breaker
Mining.SubSkill.SuperBreaker.Description=Speed+, Triple Drop Chance
Mining.SubSkill.DoubleDrops.Name=Double Drops
Mining.SubSkill.DoubleDrops.Description=Double the normal loot
Mining.SubSkill.BlastMining.Name=Blast Mining
Mining.SubSkill.BlastMining.Description=Bonuses to mining with TNT
Mining.SubSkill.BiggerBombs.Name=Bigger Bombs
Mining.SubSkill.BiggerBombs.Description=Increases TNT explosion radius
Mining.SubSkill.DemolitionsExpertise.Name=Demolitions Expertise
Mining.SubSkill.DemolitionsExpertise.Description=Decreases damage from TNT explosions
Mining.Effect.Decrease=Demolitions Expert Damage Decrease: [[YELLOW]]{0}
Mining.Effect.DropChance=Double Drop Chance: [[YELLOW]]{0}
Mining.Listener=Mwyngloddio:
Mining.SkillName=MINING
Mining.Skills.SuperBreaker.Off=**Super Breaker has worn off**
Mining.Skills.SuperBreaker.On=[[GREEN]]**SUPER BREAKER ACTIVATED**
Mining.Skills.SuperBreaker.Other.Off=Super Breaker[[GREEN]] has worn off for [[YELLOW]]{0}
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Super Breaker!
Mining.Skills.SuperBreaker.Refresh=[[GREEN]] Eich [[YELLOW]] Super Torri\'r [[GREEN]] gallu ei hadnewyddu!
Mining.Skillup=sgiliau Mwyngloddio cynyddu {0}. Cyfanswm ({1})
Mining.Blast.Boom=[[GRAY]]**BOOM**
Mining.Blast.Radius.Increase=Chwyth Cynnydd Radiws [[YELLOW]] {0}
Mining.Blast.Rank=Blast Mining: [[YELLOW]] Rank {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Blast Mining!
Mining.Blast.Refresh=[[GREEN]] Eich [[YELLOW]] Mwyngloddio Chwyth [[GREEN]] gallu ei hadnewyddu!
Repair.SubSkill.Repair.Name=Repair
Repair.SubSkill.Repair.Description=Repair Tools & Armor
Repair.SubSkill.GoldRepair.Name=Gold Repair ({0}+ SKILL)
Repair.SubSkill.GoldRepair.Description=Repair Gold Tools & Armor
Repair.SubSkill.IronRepair.Name=Iron Repair ({0}+ SKILL)
Repair.SubSkill.IronRepair.Description=Repair Iron Tools & Armor
Repair.SubSkill.StoneRepair.Name=Stone Repair ({0}+ SKILL)
Repair.SubSkill.StoneRepair.Description=Repair Stone Tools
Repair.SubSkill.RepairMastery.Name=Repair Mastery
Repair.SubSkill.RepairMastery.Description=Increased repair amount
Repair.SubSkill.SuperRepair.Name=Super Repair
Repair.SubSkill.SuperRepair.Description=Double effectiveness
Repair.SubSkill.DiamondRepair.Name=Diamond Repair ({0}+ SKILL)
Repair.SubSkill.DiamondRepair.Description=Repair Diamond Tools & Armor
Repair.SubSkill.ArcaneForging.Name=Arcane Forging
Repair.SubSkill.ArcaneForging.Description=Atgyweiriwch eitemau sydd hud
Repair.SubSkill.Salvage.Name=Salvage ({0}+ SKILL)
Repair.SubSkill.Salvage.Description=Salvage Tools & Armor
Repair.Error=[[DARK_RED]]mcMMO encountered an error attempting to repair this item!
Repair.Listener.Anvil=[[DARK_RED]]You have placed an anvil, anvils can repair tools and armor.
Repair.Listener.Anvil2=[[DARK_RED]]You have placed a Salvage anvil, use this to Salvage tools and armor.
Repair.Listener=Atgyweirio:
Repair.SkillName=ATGYWEIRIO:
Repair.Skills.AdeptSalvage=[[DARK_RED]]You\'re not skilled enough to Salvage items.
Repair.Skills.AdeptDiamond=[[DARK_RED]] Dydych chi ddim yn ddigon medrus i drwsio Diemwnt.
Repair.Skills.AdeptGold=[[DARK RED]] Dydych chi ddim yn ddigon medrus i drwsio Aur.
Repair.Skills.AdeptIron=[[DARK_RED]]You\'re not skilled enough to repair Iron.
Repair.Skills.AdeptStone=[[DARK_RED]] Dydych chi ddim yn ddigon medrus i drwsio cerrig.
Repair.Skills.Adept=You must be level [[YELLOW]]{0}[[RED]] to repair [[YELLOW]]{1}
Repair.Skills.FeltEasy=[[GRAY]]That felt easy.
Repair.Skills.FullDurability=[[GRAY]]That is at full durability.
Repair.Skills.SalvageSuccess=[[GRAY]]Item salvaged!
Repair.Skills.NotFullDurability=[[DARK_RED]]You can\'t salvage damaged items.
Repair.Skills.Mastery=Repair Mastery: [[YELLOW]]Extra {0} durability restored
Repair.Skills.StackedItems=[[DARK_RED]]You can\'t repair stacked items.
Repair.Skills.Super.Chance=Super Repair Chance: [[YELLOW]]{0}
Repair.Skillup=sgiliau Atgyweirio cynyddu {0}. Cyfanswm ({1})
Repair.Arcane.Chance.Downgrade=[[GRAY]]AF Downgrade Chance: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]] Cyfradd Llwyddiant AF: [[YELLOW]] {0}%
Repair.Arcane.Downgrade=Arcane power has decreased for this item.
Repair.Arcane.Fail=P\u0175er dirgel wedi gadael yr eitem barhaol
Repair.Arcane.Lost=You were not skilled enough to keep any enchantments.
Repair.Arcane.Perfect=[[GREEN]]You have sustained the arcane energies in this item.
Repair.Arcane.Rank=Arcane Forging: [[YELLOW]]Rank {0}/4
Swords.Ability.Lower=[[GRAY]] ** I LEIHAU EICH CLEDDYF **
Swords.Ability.Ready=[[GREEN]] ** CHI\'N BAROD EICH SWORD **
Swords.Combat.Bleed.Chance=Bleed Chance: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=Bleed Length: [[YELLOW]]{0} ticks
Swords.Combat.Bleed.Note=[[GRAY]]NOTE: [[YELLOW]]1 Tick happens every 2 seconds
Swords.Combat.Bleeding.Started=[[DARK_RED]] You\'re bleeding!
Swords.Combat.Bleeding.Stopped=[[GRAY]] y gwaedu wedi [[GREEN]] rhoi\'r gorau i [[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]** GELYN GWAEDU\'N**
Swords.Combat.Counter.Chance=Counter Attack Chance: [[YELLOW]]{0}
Swords.Combat.Counter.Hit=[[DARK_RED]]Hit with a counter-attack!
Swords.Combat.Countered=[[GREEN]] ** GWRTH-YMOSOD **
Swords.Combat.SS.Struck=[[DARK_RED]] Taro gan Streiciau danheddog!
Swords.SubSkill.CounterAttack.Name=Counter Attack
Swords.SubSkill.SerratedStrikes.Name=Serrated Strikes
Swords.Effect.4=Serrated Strikes Bleed+
Swords.SubSkill.Bleed.Name=Bleed
Swords.SubSkill.Bleed.Description=Apply a bleed DoT
Swords.Listener=Swords:
Swords.SkillName=SWORDS
Swords.Skills.SS.Off=**Serrated Strikes has worn off**
Swords.Skills.SS.On=[[GREEN]] ** Streiciau danheddog actifadu **
Swords.Skills.SS.Refresh=[[GREEN]]Your [[YELLOW]]Serrated Strikes [[GREEN]]ability is refreshed!
Swords.Skills.SS.Other.Off=Streiciau danheddog [[GREEN]] wedi gwisgo i ffwrdd ar gyfer [[YELLOW]] {0}
Swords.Skills.SS.Other.On=[[GREEN]] {0} [[DARK_GREEN]] wedi defnyddio [[RED]] Streiciau danheddog!
Swords.Skillup=Swords skill increased by {0}. Total ({1})
Swords.SS.Length=Serrated Strikes Length: [[YELLOW]]{0}s
Taming.Ability.Bonus.0=Environmentally Aware
Taming.Ability.Bonus.1=Wolves avoid danger
Taming.Ability.Bonus.2=Ffwr Trwchus
Taming.Ability.Bonus.4=Shock Proof
Taming.Ability.Bonus.6=Sharpened Claws
Taming.Ability.Bonus.8=Fast Food Service
Taming.Ability.Bonus.9={0}% Chance for heal on attack
Taming.Ability.Locked.0=LOCKED UNTIL {0}+ SKILL (ENVIRONMENTALLY AWARE)
Taming.Ability.Locked.1=LOCKED UNTIL {0}+ SKILL (THICK FUR)
Taming.Ability.Locked.2=LOCKED UNTIL {0}+ SKILL (SHOCK PROOF)
Taming.Ability.Locked.3=LOCKED UNTIL {0}+ SKILL (SHARPENED CLAWS)
Taming.Ability.Locked.4=LOCKED UNTIL {0}+ SKILL (FAST FOOD SERVICE)
Taming.Combat.Chance.Gore=Gore Chance: [[YELLOW]]{0}
Taming.SubSkill.BeastLore.Name=Beast Lore
Taming.SubSkill.BeastLore.Description=Bone-whacking inspects wolves & ocelots
Taming.SubSkill.ShockProof.Name=Shock Proof
Taming.SubSkill.ShockProof.Description=Explosive Damage Reduction
Taming.SubSkill.CallOfTheWild.Name=Call of the Wild
Taming.SubSkill.CallOfTheWild.Description=Summon an animal to your side
Taming.SubSkill.CallOfTheWild.Description.2=[[GRAY]]COTW (Ocelot): Crouch and left-click with {0} Fish in hand
Taming.Effect.15=[[GRAY]]COTW (Wolf): Crouch and left-click with {0} Bones in hand
Taming.SubSkill.FastFoodService.Name=Fast Food Service
Taming.SubSkill.FastFoodService.Description=Chance for wolves to heal on attack
Taming.SubSkill.Gore.Name=Gore
Taming.SubSkill.Gore.Description=Critical Strike that applies Bleed
Taming.SubSkill.SharpenedClaws.Name=Sharpened Claws
Taming.SubSkill.SharpenedClaws.Description=Damage Bonus
Taming.SubSkill.EnvironmentallyAware.Name=Environmentally Aware
Taming.SubSkill.EnvironmentallyAware.Description=Cactus/Lava Phobia, Fall DMG Immune
Taming.SubSkill.ThickFur.Name=Thick Fur
Taming.SubSkill.ThickFur.Description=DMG Reduction, Fire Resistance
Taming.Listener.Wolf=[[DARK_GRAY]] Eich sgrialu i blaidd yn \u00f4l i chi ...
Taming.Listener=Taming:
Taming.SkillName=TAMING
Taming.Skillup=sgiliau Ddofi cynyddu {0}.\u00a0Cyfanswm ({1})
Taming.Summon.Complete=[[GREEN]]Summoning complete
Taming.Summon.Fail.Ocelot=You have too many ocelots nearby to summon any more.
Taming.Summon.Fail.Wolf=You have too many wolves nearby to summon any more.
Unarmed.Ability.Berserk.Length=Berserk Length: [[YELLOW]]{0}s
Unarmed.Ability.Bonus.0=Iron Arm Style
Unarmed.Ability.Bonus.1=+{0} DMG Upgrade
Unarmed.Ability.Chance.ArrowDeflect=Saeth wyro cyfle: [[YELLOW]] {0}
Unarmed.Ability.Chance.Disarm=Disarm Chance: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=Your opponent has an iron grip!
Unarmed.Ability.IronGrip.Defender=[[GREEN]]Your iron grip kept you from being disarmed!
Unarmed.Ability.Lower=[[GRAY]]**YOU LOWER YOUR FISTS**
Unarmed.Ability.Ready=[[GREEN]]**YOU READY YOUR FISTS**
Unarmed.SubSkill.Berserk.Name=Berserk
Unarmed.SubSkill.Berserk.Description=+50% DMG, Breaks weak materials
Unarmed.SubSkill.Disarm.Name=Disarm (Players)
Unarmed.SubSkill.Disarm.Description=Drops the foes item held in hand
Unarmed.SubSkill.IronArmStyle.Name=Iron Arm Style
Unarmed.SubSkill.IronArmStyle.Description=Hardens your arm over time
Unarmed.SubSkill.ArrowDeflect.Name=Arrow Deflect
Unarmed.SubSkill.ArrowDeflect.Description=Deflect arrows
Unarmed.Listener=Dim Arfau:
Unarmed.SkillName=UNARMED
Unarmed.Skills.Berserk.Off=** arno\\\'i hun wedi gwisgo i ffwrdd **
Unarmed.Skills.Berserk.On=[[GREEN]]**BERSERK ACTIVATED**
Unarmed.Skills.Berserk.Other.Off=arno\'i hun [[GREEN]] wedi gwisgo i ffwrdd ar gyfer [[YELLOW]] {0}
Unarmed.Skills.Berserk.Other.On=[[GREEN]] {0} [[DARK_GREEN]] wedi defnyddio [[RED]] arno\'i hun!
Unarmed.Skills.Berserk.Refresh=[[GREEN]]Your [[YELLOW]]Berserk [[GREEN]]ability is refreshed!
Unarmed.Skillup=Unarmed skill increased by {0}. Total ({1})
Woodcutting.Ability.0=Chwythwr o ddail
Woodcutting.Ability.1=Chwythu i ffwrdd yn gadael
Woodcutting.Ability.Chance.DDrop=Double Drop Chance: [[YELLOW]]{0}
Woodcutting.Ability.Length=Tree Feller Length: [[YELLOW]]{0}s
Woodcutting.Ability.Locked.0=LOCKED UNTIL {0}+ SKILL (LEAF BLOWER)
Woodcutting.SubSkill.TreeFeller.Name=Tree Feller
Woodcutting.SubSkill.TreeFeller.Description=Make trees explode
Woodcutting.SubSkill.LeafBlower.Name=Leaf Blower
Woodcutting.SubSkill.LeafBlower.Description=Blow Away Leaves
Woodcutting.SubSkill.HarvestLumber.Name=Double Drops
Woodcutting.SubSkill.HarvestLumber.Description=Double the normal loot
Woodcutting.Listener=Woodcutting:
Woodcutting.SkillName=Torri coed
Woodcutting.Skills.TreeFeller.Off=**Tree Feller has worn off**
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**TREE FELLER ACTIVATED**
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]] Eich [[YELLOW]] Feller Coed [[GREEN]] gallu ei hadnewyddu!
Woodcutting.Skills.TreeFeller.Other.Off=Feller Coed [[GREEN]] wedi gwisgo i ffwrdd ar gyfer [[YELLOW]] {0}
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Tree Feller!
Woodcutting.Skills.TreeFeller.Splinter=EICH AXE GWAHANU I DDWSINAU O DARNAU!
Woodcutting.Skills.TreeFeller.Threshold=That tree is too large!
Woodcutting.Skillup=Woodcutting skill increased by {0}. Total ({1})
Ability.Generic.Refresh=[[GREEN]]**ABILITIES REFRESHED!**
Ability.Generic.Template.Lock=[[GRAY]]{0}
Ability.Generic.Template=[[GOLD]]{0}: [[DARK_AQUA]]{1}
Combat.ArrowDeflect=[[WHITE]]**ARROW DEFLECT**
Combat.BeastLore=[[GREEN]] ** bwystfil ll\u00ean **
Combat.BeastLoreHealth=[[DARK_AQUA]] Iechyd ([[GREEN]] {0} [[DARK_AQUA]] / {1})
Combat.BeastLoreOwner=[[DARK_AQUA]]Owner ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]**GORED**
Combat.StruckByGore=**YOU HAVE BEEN GORED**
Combat.TargetDazed=Target was [[DARK_RED]]Dazed
Combat.TouchedFuzzy=[[DARK_RED]] cyffwrdd Fuzzy. Teimlo benysgafn.
Commands.addlevels.AwardAll.1=[[GREEN]]You were awarded {0} levels in all skills!
Commands.addlevels.AwardAll.2=All skills have been modified for {0}.
Commands.addlevels.AwardSkill.1=[[GREEN]]You were awarded {0} levels in {1}!
Commands.addlevels.AwardSkill.2={0} has been modified for {1}.
Commands.addxp.AwardAll=[[GREEN]]You were awarded {0} experience in all skills!
Commands.addxp.AwardSkill=[[GREEN]]You were awarded {0} experience in {1}!
Commands.Ability.Off=Ability use toggled [[RED]]off
Commands.Ability.On=Ability use toggled [[GREEN]]on
Commands.AdminChat.Off=Admin Sgwrs unig [[RED]] Oddi ar
Commands.AdminChat.On=Admin Chat only [[GREEN]]On
Commands.AdminToggle=- sgwrs gweinyddol Toggle
Commands.Chat.Console=*Console*
Commands.Disabled=Mae\'r gorchymyn yn anabl.
Commands.DoesNotExist=nid Chwaraewr yn bodoli yn y gronfa ddata!
Commands.GodMode.Disabled=mcMMO Godmode Disabled
Commands.GodMode.Enabled=mcMMO Godmode Enabled
Commands.GodMode.Forbidden=[mcMMO] God Mode not permitted on this world (See Permissions)
Commands.Inspect=<player> [[RED]]- View detailed player info
Commands.Party.Invite.Accepted=[[GREEN]] Gwahodd Derbyniwyd. Yr ydych wedi ymuno parti {0}
Commands.Invite.Success=[[GREEN]]Invite sent successfully.
Commands.Leaderboards=<skill> <page> [[RED]]- Leaderboards
Commands.mcc.Header=---[][[YELLOW]]mcMMO Commands[[RED]][]---
Commands.mcgod=- Toggle GodMode
Commands.mchud.Invalid=That is not a valid HUD type.
Commands.mcpurge.Success=[[GREEN]]The database was successfully purged!
Commands.mcrank.Heading=[[GOLD]]-=PERSONAL RANKINGS=-
Commands.mcrank.Overall=Overall[[GREEN]] - [[GOLD]]Rank [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=TARGET: [[WHITE]]{0}
Commands.mcrank.Skill={0}[[GREEN]] - [[GOLD]]Rank [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]Unranked
Commands.mcremove.Success=[[GREEN]]{0} was successfully removed from the database!
Commands.mctop.Tip=[[GOLD]]Tip: Use [[RED]]/mcrank[[GOLD]] to view all of your personal rankings!
Commands.mmoedit=[chwaraewr] <skill> <newvalue> [[RED]] - Targed addasu
Commands.mmoedit.Modified.1=[[GREEN]]Your level in {0} was set to {1}!
Commands.mmoedit.Modified.2={0} has been modified for {1}.
Commands.ModDescription=- Read brief mod description
Commands.NoConsole=This command does not support console usage.
Commands.Other=[[GREEN]]--OTHER COMMANDS--
Commands.Party.Accept=- Accept party invite
Commands.Party.Chat.Off=Party Chat only [[RED]]Off
Commands.Party.Chat.On=Party Chat only [[GREEN]]On
Commands.Party.Commands=[[GREEN]]--PARTY COMMANDS--
Commands.Party.Invite.0=RHYBUDD: [[GREEN]] fod wedi derbyn gwahoddiad i barti {0} o {1}
Commands.Party.Kick=oeddech yn cicio o blaid {0}!
Commands.Party.Leave=Yr ydych wedi gadael y blaid honno
Commands.Party.None=You are not in a party.
Commands.Party.Quit=- Leave your current party
Commands.Party.Teleport=<player> [[RED]]- Teleport to party member
Commands.Party.Toggle=- Toggle Party Chat
Commands.PowerLevel.Leaderboard=--mcMMO [[BLUE]]{0}[[YELLOW]] Leaderboard--
Commands.PowerLevel=[[DARK_RED]]POWER LEVEL: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]All of your skill levels have been reset successfully.
Commands.Reset.Single=[[GREEN]]Your {0} skill level has been reset successfully.
Commands.Reset=Reset a skill\'s level to 0
Commands.Skill.Invalid=That is not a valid skillname!
Commands.Skill.Leaderboard=--mcMMO [[BLUE]]{0}[[YELLOW]] Leaderboard--
Commands.Stats.Self=YOUR STATS
Commands.Stats=- View your mcMMO stats
Commands.ToggleAbility=- Toggle ability activation with right click
Commands.Usage.1=Proper usage is /{0} {1}
Commands.Usage.2=Proper usage is /{0} {1} {2}
Commands.Usage.3=Proper usage is /{0} {1} {2} {3}
Commands.Usage.Level=level
Commands.Usage.Message=message
Commands.Usage.Page=page
Commands.Usage.Player=player
Commands.Usage.Skill=skill
Commands.Usage.XP=xp
mcMMO.NoInvites=You have no invites at this time
mcMMO.NoPermission=[[DARK_RED]]Insufficient permissions.
mcMMO.NoSkillNote=[[DARK_GRAY]]If you don\'t have access to a skill it will not be shown here.
Party.Forbidden=[mcMMO] Parties not permitted on this world (See Permissions)
Party.InvalidName=[[DARK_RED]]That is not a valid party name.
Party.IsLocked=This party is already locked!
Party.IsntLocked=This party is not locked!
Party.Locked=Party is locked, only party leader may invite.
Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
Party.NotOwner=[[DARK_RED]]You are not the party owner
Party.Owner.New=[[GREEN]]{0} is the new party leader.
Party.Owner.NotLeader=[[DARK_RED]]You are no longer the party leader.
Party.Owner.Player=[[GREEN]]You are now the party leader.
Party.Password.Incorrect=Party password is incorrect.
Party.Password.Set=[[GREEN]] Blaid cyfrinair wedi ei osod i {0}
Party.Player.Invalid=Nid yw hynny\'n chwaraewr ddilys.
Party.Teleport.Dead=Ni allwch teleport y chwaraewr yn farw.
Party.Teleport.Player=[[GREEN]]You have teleported to {0}.
Party.Teleport.Self=You can\'t teleport to yourself!
Party.Teleport.Target=[[GREEN]] {0} wedi teleported i chi.
Party.Unlocked=[[GRAY]] Blaid yn cael ei gloi
Commands.XPGain.Acrobatics=Falling
Commands.XPGain.Archery=Attacking Monsters
Commands.XPGain.Axes=Attacking Monsters
Commands.XPGain.Excavation=Cloddio a dod o hyd i drysorau
Commands.XPGain.Fishing=Pysgota (Ewch ffigur!)
Commands.XPGain.Herbalism=Perlysiau cynaeafu
Commands.XPGain.Mining=Mwyngloddio Cerrig a Mwyn
Commands.XPGain.Repair=Repairing
Commands.XPGain.Swords=Angenfilod ymosod
Commands.XPGain.Taming=Anifeiliaid Taming, neu ymladd \u00e2\'ch bleiddiaid
Commands.XPGain.Unarmed=Attacking Monsters
Commands.XPGain.Woodcutting=Chopping down trees
Commands.XPGain=[[DARK_GRAY]] Cael Profiad: [[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.modified=The XP RATE was modified to {0}
Commands.xprate.over=mcMMO XP Rate Event is OVER!!
Commands.xprate.proper.0=Proper usage to change the XP rate is /xprate <integer> <true/false>
Commands.xprate.proper.1=Proper usage to restore the XP rate to default is /xprate reset
Commands.xprate.proper.2=Please specify true or false to indicate if this is an xp event or not
Commands.xprate.started.0=[[GOLD]]XP EVENT FOR mcMMO HAS STARTED!
Commands.xprate.started.1=[[GOLD]]mcMMO XP RATE IS NOW {0}x!
XPRate.Event=[[GOLD]] mcMMO ar hyn o bryd mewn digwyddiad gyfradd XP! Gyfradd yn XP {0} x!
Effects.Effects=EFFEITHIAU
Effects.Level=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Available=[[GRAY]]Guide for {0} available - type /{1} ? [page]
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Guide[[GOLD]]=-
Guides.Page.Invalid=Not a valid page number!
Guides.Usage=Usage is /{0} ? [page]
Inspect.Offline=You do not have permission to inspect offline players!
Inspect.OfflineStats=mcMMO Stats for Offline Player [[YELLOW]]{0}
Inspect.Stats=[[GREEN]]mcMMO Stats for [[YELLOW]]{0}
Inspect.TooFar=You are too far away to inspect that player!
Item.ChimaeraWing.Fail=**CHIMAERA WING FAILED!**
Item.ChimaeraWing.Pass=**CHIMAERA ADAIN**
Item.Injured.Wait=You were injured recently and must wait to use this. [[YELLOW]]({0}s)
Skills.Disarmed=[[DARK_RED]] Rydych wedi cael eich diarfogi!
Skills.Header=-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]] y bydd angen mwy o [[GRAY]]{0}
Skills.Stats={0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=Yr ydych yn rhy flinedig i ddefnyddio\'r gallu eto. [[YELLOW]]({0}s)
Stats.Header.Combat=[GOLD]] - = GWRTHSEFYLL SGILIAU = -
Stats.Header.Gathering=[[GOLD]] -= CASGLU SGILIAU = = -
Stats.Header.Misc=[[GOLD]]-=MISC SKILLS=-
Stats.Own.Stats=[[GREEN]][mcMMO] Ystadegau
Perks.XP.Name=Experience
Perks.XP.Desc=Receive {0}x XP.
Perks.Lucky.Name=Luck
Perks.Lucky.Desc=Gives {0} skills and abilities a 33.3% better chance to activate.
Perks.Lucky.Desc.Login=Gives certain skills and abilities a 33.3% better chance to activate.
Perks.Lucky.Bonus=[[GOLD]] ({0} with Lucky Perk)
Perks.Cooldowns.Name=Fast Recovery
Perks.Cooldowns.Desc=Cuts cooldown duration by {0}.
Perks.ActivationTime.Name=Endurance
Perks.ActivationTime.Desc=Increases ability activation time by {0} seconds.
Perks.ActivationTime.Bonus=[[GOLD]] ({0}s with Endurance Perk)
MOTD.Donate=[[DARK_AQUA]]Donation Info:
MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Skill Death Penalty: [[DARK_RED]]{0}%
MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Vampirism Stat Leech: [[DARK_RED]]{0}%
MOTD.PerksPrefix=[mcMMO Perks]
MOTD.Version=[[GOLD]][mcMMO] Running version [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO Website
Skills.AbilityGateRequirementFail=
Smelting.SubSkill.UnderstandingTheArt.Name=

View File

@@ -1,466 +0,0 @@
Acrobatics.Ability.Proc=[[GREEN]]**Yndefuld Landing**
Acrobatics.Combat.Proc=[[GREEN]]**Undviget**
Acrobatics.DodgeChance=Afv\u00e6rgnings Chance: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.Name=Rul
Acrobatics.SubSkill.Roll.Description=Reducerer eller omvender Fald skade
Acrobatics.SubSkill.GracefulRoll.Name=Yndefuldt Rul
Acrobatics.SubSkill.GracefulRoll.Description=Dobbelt s\u00e5 effektiv som en normal rulning
Acrobatics.SubSkill.Dodge.Name=Afv\u00e6rg
Acrobatics.SubSkill.Dodge.Description=Reducer angrebs skade med halvdelen
Acrobatics.Listener=Akrobatik:
Acrobatics.SubSkill.Roll.Chance=Rulle Chance: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.GraceChance=Yndefuldt Rul Chance: [[YELLOW]]{0}
Acrobatics.Roll.Text=**Rullede**
Acrobatics.SkillName=AKROBATIK
Acrobatics.Skillup=Akrobatik evne for\u00f8get med {0}. Total ({1})
Archery.Combat.DazeChance=Chance for at blive forvirret: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=Chance for at Genbruge Pile: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=Skyde Evne Bonus Skade: [[YELLOW]]{0}
Archery.SubSkill.SkillShot.Name=Evne Skud
Archery.SubSkill.SkillShot.Description=For\u00f8ger skade for\u00e5rsaget med buer
Archery.SubSkill.Daze.Name=Lam (Spillere)
Archery.SubSkill.ArrowRetrieval.Name=Genbrug Pile
Archery.SubSkill.ArrowRetrieval.Description=Chance for at tage pile ud af lig
Archery.Listener=Bueskydning:
Archery.SkillName=BUESKYDNING
Archery.Skillup=Bueskydnings evne for\u00f8get med {0}. Total ({1})
Axes.Ability.Bonus.0=\u00d8kse Mestring
Axes.Ability.Bonus.1=Bonus {0} skade
Axes.Ability.Bonus.2=Rustnings Effekt
Axes.Ability.Bonus.3=P\u00e5f\u00f8r {0} Bonus Skade til rustning
Axes.Ability.Bonus.4=St\u00f8rre Slag
Axes.Ability.Bonus.5=P\u00e5f\u00f8r {0} Bonus Skade til ubev\u00e6bnede fjender
Axes.Ability.Lower=[[GRAY]]**DU S\u00c6NKER DIN \u00d8KSE**
Axes.Ability.Ready=[[GREEN]]**DU G\u00d8R DIN \u00d8KSE KLAR**
Axes.Combat.CritStruck=[[DARK_RED]]Du er blevet KRITISK ramt!
Axes.Combat.CritChance=Chance for at ramme kritisk: [[YELLOW]]{0}
Axes.Combat.CriticalHit=KRITISK SLAG!
Axes.Combat.GI.Proc=[[GREEN]]**RAMT AF STOR KRAFT**
Axes.Combat.GI.Struck=**RAMT AF ST\u00d8RRE SLAG**
Axes.Combat.SS.Length=Kranie Splitter L\u00e6ngde: [[YELLOW]]{0}s
Axes.SubSkill.SkullSplitter.Name=Kranie Splitter (Evne)
Axes.SubSkill.SkullSplitter.Description=For\u00e5rsag Omr\u00e5de Skade
Axes.SubSkill.CriticalStrikes.Name=Kritiske Slag
Axes.SubSkill.CriticalStrikes.Description=Fordoblet Skade
Axes.SubSkill.AxeMastery.Name=\u00d8kse Mestring
Axes.SubSkill.AxeMastery.Description=Tilf\u00f8jer bonus skade
Axes.SubSkill.ArmorImpact.Name=Rustnings Effekt
Axes.SubSkill.ArmorImpact.Description=Ram med nok kraft for at smadre rustningen
Axes.SubSkill.GreaterImpact.Name=St\u00f8rre Slag
Axes.SubSkill.GreaterImpact.Description=Giv bonus skade til ubev\u00e6bnede fjender
Axes.Listener=\u00d8kser:
Axes.SkillName=\u00d8KSER
Axes.Skills.SS.Off=**Berserker er aftaget**
Axes.Skills.SS.On=[[GREEN]]**Kranie Knuser AKTIVERET**
Axes.Skills.SS.Refresh=[[GREEN]]Din [[YELLOW]]Kranie Splitter [[GREEN]]evne er genindl\u00e6st!
Axes.Skills.SS.Other.Off=Kranie Knuser[[GREEN]] er aftaget i [[YELLOW]]{0}
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] har brugt [[RED]]Kranie Splitter!
Axes.Skillup=\u00d8kse evner forbedret med {0}. Ialt ({1})
Excavation.Ability.Lower=[[GRAY]]**DU S\u00c6NKER DIN SKOVL**
Excavation.Ability.Ready=[[GREEN]]**DU G\u00d8R DIN SKOVL KLAR**
Excavation.SubSkill.GigaDrillBreaker.Name=Giga Borer (EVNE)
Excavation.SubSkill.GigaDrillBreaker.Description=3x Tabs ratio for blokke, 3x EXP, +Fart
Excavation.SubSkill.TreasureHunter.Name=Skatte J\u00e6ger
Excavation.SubSkill.TreasureHunter.Description=Evne til at grave efter skatte
Excavation.Effect.Length=Giga Borer L\u00e6ngde: [[YELLOW]]{0}s
Excavation.Listener=Udgravning:
Excavation.SkillName=UDVINDING
Excavation.Skills.GigaDrillBreaker.Off=**Giga Borer er aftaget**
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**Super Bor AKTIVERET**
Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]Din [[YELLOW]]Giga Borer [[GREEN]]evne er genindl\u00e6st!
Excavation.Skills.GigaDrillBreaker.Other.Off=Giga Borer[[GREEN]] er aftaget i [[YELLOW]]{0}
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] har brugt [[RED]]Giga Borer!
Excavation.Skillup=Udgravningsevne for\u00f8get med {0}. Total ({1})
Fishing.Ability.Info=Magisk J\u00e6ger: [[GRAY]] **Forbedres med skattejagts ranken**
Fishing.Ability.Locked.0=L\u00c5ST INDTIL {0}+ EVNE (RYST)
Fishing.Ability.Rank=Skatte J\u00e6ger Rank: [[YELLOW]]{0}/5
Fishing.Ability.TH.MagicRate=Magi J\u00e6ger Chance: [[YELLOW]]{0}
Fishing.Ability.Shake=Ryste Chance: [[YELLOW]]{0}
Fishing.Ability.FD=Fiskers Diet: [[YELLOW]]Rank {0}
Fishing.SubSkill.TreasureHunter.Name=Skatte J\u00e6ger (Passiv)
Fishing.SubSkill.TreasureHunter.Description=Fisk diverse objekter op.
Fishing.SubSkill.MagicHunter.Name=Magi J\u00e6ger
Fishing.SubSkill.MagicHunter.Description=Find Fortryllede Ting.
Fishing.SubSkill.Shake.Name=Ryst (Mod V\u00e6sner)
Fishing.SubSkill.Shake.Description=Ryst ting ud af monstre med en fiskestang
Fishing.SubSkill.FishermansDiet.Name=Fiskers Diet
Fishing.SubSkill.FishermansDiet.Description=Forbedrer Sult genoprettet af Fisked mad
Fishing.Chance.Raining=[[BLUE]] Regn Bonus
Fishing.Listener=Fiskeri:
Fishing.Ability.TH.MagicFound=[[GRAY]]Du f\u00f8ler et strejf a magi med denne fangst...
Fishing.SkillName=FISKER
Fishing.Skillup=Fisker evne for\u00f8get med {0}. Total ({1})
Herbalism.Ability.DoubleDropChance=2x Tabs Chance: [[YELLOW]]{0}
Herbalism.Ability.GTe.Length=Gr\u00f8n Terra L\u00e6ngde: [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=Du mangler flere fr\u00f8 for at sprede Gr\u00f8n Terra.
Herbalism.Ability.GTh.Chance=Gr\u00f8nne Fingre Chance: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=**GR\u00d8NNE FINGRE MISLYKKEDES**
Herbalism.Ability.GTh.Stage=Gr\u00f8nne Fingre Stadie: [[YELLOW]] Planter gror i stadie {0}
Herbalism.Ability.GTh=[[GREEN]]**GR\u00d8NNE FINGRE**
Herbalism.Ability.Lower=[[GRAY]]**DU S\u00c6NKER DIt LUGEJERN**
Herbalism.Ability.Ready=[[GREEN]]**DU G\u00d8R DIT LUGEJERN KLAR**
Herbalism.SubSkill.GreenTerra.Name=Gr\u00f8n Terra (EVNE)
Herbalism.SubSkill.GreenTerra.Description=Spred Terra, 3x Tab
Herbalism.SubSkill.GreenThumb.Name=Gr\u00f8nne Fingre (Hvede)
Herbalism.SubSkill.GreenThumb.Description=Auto-Planter afgr\u00f8der mens du h\u00f8ster
Herbalism.SubSkill.GreenThumb.Description.2=Lav Mursten Mossede, eller f\u00e5 gr\u00e6s til at gro
Herbalism.SubSkill.FarmersDiet.Name=Farmer\'s Diet
Herbalism.SubSkill.FarmersDiet.Description=Forbedrer Sult genoprettet af farmed mad
Herbalism.SubSkill.DoubleDrops.Name=Dobble tab (alle planter)
Herbalism.SubSkill.DoubleDrops.Description=G\u00f8r din normale udbytte dobblet s\u00e5 stort
Herbalism.Listener=Urtekundskab
Herbalism.SkillName=NATURMEDICIN
Herbalism.Skills.GTe.On=[[GREEN]]**GR\u00d8N TERRA AKTIVERET**
Herbalism.Skills.GTe.Refresh=[[GREEN]Din [[YELLOW]]Gr\u00f8nne Terra [[GREEN]]evne er genindl\u00e6st!
Herbalism.Skills.GTe.Other.Off=Gr\u00f8n Terra[[GREEN]] er aftaget i [[YELLOW]]{0}
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] har brugt [[RED]]Gr\u00f8n Terra!
Herbalism.Skillup=Naturens Evne forbedret med {0}. Total ({1})
Mining.Ability.Length=Super \u00d8del\u00e6gger L\u00e6ngde: [[YELLOW]]{0}s
Mining.Ability.Locked.0=L\u00c5ST INDTIL {0}+ EVNE (BLAST MINING)
Mining.Ability.Locked.1=L\u00c5ST INDTIL {0}+ EVNE (ST\u00d8RRE BOMBER)
Mining.Ability.Locked.2=L\u00c5ST INDTIL {0}+ EVNE (NEDRIVNINGS EXPERTISE)
Mining.Ability.Lower=[[GRAY]]**DU S\u00c6NKER DIN HAKKE**
Mining.Ability.Ready=[[GREEN]]**DU G\u00d8R DIN HAKKE KLAR**
Mining.SubSkill.SuperBreaker.Name=Super \u00d8del\u00e6gger (EVNE)
Mining.SubSkill.SuperBreaker.Description=Fart+, 3x Tabs chance
Mining.SubSkill.DoubleDrops.Name=Dobble Tab
Mining.SubSkill.DoubleDrops.Description=Fordobble det normale udbytte
Mining.SubSkill.BlastMining.Name=Blast Mining
Mining.SubSkill.BlastMining.Description=Bonuser for at mine med TNT
Mining.SubSkill.BiggerBombs.Name=St\u00f8rre Bomber
Mining.SubSkill.BiggerBombs.Description=Forbedrer TNT explosions radius
Mining.SubSkill.DemolitionsExpertise.Name=Nedrivnings Expertise
Mining.SubSkill.DemolitionsExpertise.Description=Formindsker skade fra TNT explotioner
Mining.Effect.Decrease=Nedrivingings Expert Skade neds\u00e6ttelse: [[YELLOW]]{0}
Mining.Effect.DropChance=2x Tabs Chance: [[YELLOW]]{0}
Mining.Listener=Minedrift:
Mining.SkillName=MINER
Mining.Skills.SuperBreaker.Off=**Super \u00d8del\u00e6gger er aftaget**
Mining.Skills.SuperBreaker.On=[[GREEN]]**SUPER \u00d8DEL\u00c6GGER AKTIVERET**
Mining.Skills.SuperBreaker.Other.Off=Super \u00d8del\u00e6gger[[GREEN]] er aftaget i [[YELLOW]]{0}
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] har brugt [[RED]]Super \u00d8del\u00e6gger!
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Din [[YELLOW]]Super Smadrer [[GREEN]]evne er genindl\u00e6st!
Mining.Skillup=Minedriftsevne for\u00f8get med {0}. Total ({1})
Mining.Blast.Boom=[[GRAY]]**BOOM**
Mining.Blast.Radius.Increase=Eksplosions Radius For\u00f8gelse: [[YELLOW]]+{0}
Mining.Blast.Rank=Blast Mining: [[YELLOW]] Rank {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] her brugt [[RED]]Blast Mining!
Mining.Blast.Refresh=[[GREEN]]Din [[YELLOW]]Spring Mining [[GREEN]]evne er genindl\u00e6st!
Repair.SubSkill.Repair.Name=Reparer
Repair.SubSkill.Repair.Description=Reparer V\u00e6rkt\u00f8jer & Rustning
Repair.SubSkill.GoldRepair.Name=Guld Reparer ({0}+ EVNE)
Repair.SubSkill.GoldRepair.Description=Reparer Guld V\u00e6rkt\u00f8jer & Rustning
Repair.SubSkill.IronRepair.Name=Jern Reparer ({0}+ EVNE)
Repair.SubSkill.IronRepair.Description=Reparer Jern V\u00e6rkt\u00f8jer & Rustning
Repair.SubSkill.StoneRepair.Name=Sten Reparer ({0}+ EVNE)
Repair.SubSkill.StoneRepair.Description=Reparer Sten V\u00e6rkt\u00f8jer
Repair.SubSkill.RepairMastery.Name=Reperations Beherskelse
Repair.SubSkill.RepairMastery.Description=For\u00f8get reperations m\u00e6ngde
Repair.SubSkill.SuperRepair.Name=Super Reparering
Repair.SubSkill.SuperRepair.Description=Dobble effektivitet
Repair.SubSkill.DiamondRepair.Name=Diamant reperation ({0}+ SKILL)
Repair.SubSkill.DiamondRepair.Description=Reparer Diamant V\u00e6rkt\u00f8jer & udstyr
Repair.SubSkill.ArcaneForging.Name=Mystisk Smedning
Repair.SubSkill.ArcaneForging.Description=Reparer magiske genstande
Repair.SubSkill.Salvage.Name=Genbrug ({0}+ EVNE)
Repair.SubSkill.Salvage.Description=Genbrugelige V\u00e6rkt\u00f8jer og Rustninger
Repair.Error=[[DARK_RED]]mcMMO m\u00f8dte en fejl mens den fors\u00f8gte at reparere dette objekt!
Repair.Listener.Anvil=[[DARK_RED]]Du har placeret en armbolt, armbolte kan reparere v\u00e6rkt\u00f8j og rustning.
Repair.Listener.Anvil2=[[DARK_RED]]Du har placeret en Genbrugs Ambolt, Brug den til at Genbruge V\u00e6rkt\u00f8jer og Rustning (F\u00e5 materialer tilbage)
Repair.Listener=Reparer:
Repair.SkillName=REPARER
Repair.Skills.AdeptSalvage=[[DARK_RED]] Du har ikke Evner nok til at bruge Genbrug p\u00e5 Objekter.
Repair.Skills.AdeptDiamond=[[DARK_RED]]Du er ikke kvalificeret nok til at reparere diamant.
Repair.Skills.AdeptGold=[[DARK_RED]]Du er ikke kvalificeret nok til at reparere guld.
Repair.Skills.AdeptIron=[[DARK_RED]]Du har ikke evner nok til at reparere Jern.
Repair.Skills.AdeptStone=[[DARK_RED]]Du er ikke kvalificeret nok til at reparere sten.
Repair.Skills.Adept=Du skal v\u00e6re level [[YELLOW]]{0}[[RED]] for at reparere [[YELLOW]]{1}
Repair.Skills.FeltEasy=[[GRAY]]Det var nemt.
Repair.Skills.FullDurability=[[GRAY]]Det er p\u00e5 fuld holdbarhed
Repair.Skills.SalvageSuccess=[[GRAY]]Genstand genbrugt!
Repair.Skills.NotFullDurability=[[DARK_RED]]Du kan ikke genbruge \u00f8delagte v\u00e6rkt\u00f8jer og rustninger.
Repair.Skills.Mastery=Reperations Beherskelse: [[YELLOW]]Extra {0} Modstand gendannet
Repair.Skills.StackedItems=[[DARK_RED]]Du kan ikke reparere ting i stabler.
Repair.Skills.Super.Chance=Super Reparerings Chance: [[YELLOW]]{0}
Repair.Skillup=Reperations skill forbedret med {0}. Total ({1})
Repair.Arcane.Chance.Downgrade=[[GRAY]]AF Degraderings Chance: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]AF Success Ratio: [[YELLOW]]{0}%
Repair.Arcane.Downgrade=Magisk magt er nedsat for dette objekt.
Repair.Arcane.Fail=Magisk energi har forladt genstanden for altid.
Repair.Arcane.Lost=Du har ikke evner nok til at beholde nogle fortryllelser.
Repair.Arcane.Perfect=[[GREEN]]Du har vedligeholdt de magiske energier i dette objekt.
Repair.Arcane.Rank=Magisk Smedning: [[YELLOW]]Rank {0}/4
Swords.Ability.Lower=[[GRAY]]**DU S\u00c6NKER DIT SV\u00c6RD**
Swords.Ability.Ready=[[GREEN]]**DU HAR FORBEREDT DIT SV\u00c6RD**
Swords.Combat.Bleed.Chance=Bl\u00f8de Chance: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=Bl\u00f8dnings L\u00e6ngde: [[YELLOW]]{0} ticks
Swords.Combat.Bleed.Note=[[GRAY]]NOTER: [[YELLOW]]1 Tick sker hver 2 sekund
Swords.Combat.Bleeding.Started=[[DARK_RED]] Du Bl\u00f8der!
Swords.Combat.Bleeding.Stopped=[[GRAY]]Bl\u00f8dningen er [[GREEN]]stoppet[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**MODSTANDEREN BL\u00d8DER**
Swords.Combat.Counter.Chance=Modangrebs Chance: [[YELLOW]]{0}
Swords.Combat.Counter.Hit=[[DARK_RED]]Angrib med et modangreb!
Swords.Combat.Countered=[[GREEN]]**MODANGREBET**
Swords.Combat.SS.Struck=[[DARK_RED]]Ramt af F\u00e6gtekunstens S\u00e5r!
Swords.SubSkill.CounterAttack.Name=Modangreb
Swords.SubSkill.SerratedStrikes.Name=F\u00e6gteKunst (Evne)
Swords.Effect.4=F\u00e6gteKunst Bl\u00f8dning+
Swords.SubSkill.Bleed.Name=Bl\u00f8de
Swords.SubSkill.Bleed.Description=S\u00e6t en Bl\u00f8dning med skade over tid (DoT=Skade over tid)
Swords.Listener=Sv\u00e6rd:
Swords.SkillName=SV\u00c6RD
Swords.Skills.SS.Off=**Fokuseret F\u00e6gtekunst er aftaget**
Swords.Skills.SS.On=[[GREEN]]**F\u00c6GTEKUNST AKTIVERET**
Swords.Skills.SS.Refresh=[[GREEN]]Din [[YELLOW]]F\u00e6gtekunst [[GREEN]]evne er genindl\u00e6st!
Swords.Skills.SS.Other.Off=F\u00e6gtekunst[[GREEN]] er aftaget i [[YELLOW]]{0}
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] har brugt [[RED]]F\u00c6GTEKUNST!
Swords.Skillup=Sv\u00e6rd evne for\u00f8get med {0}. Total ({1})
Swords.SS.Length=F\u00e6gtekunstens L\u00e6ngde: [[YELLOW]]{0}s
Taming.Ability.Bonus.0=Omgivelses bevidst
Taming.Ability.Bonus.1=Ulve undviger fare
Taming.Ability.Bonus.2=Tyk Pels
Taming.Ability.Bonus.4=Shock Sikker
Taming.Ability.Bonus.6=Sk\u00e6rpet Kl\u00f8er
Taming.Ability.Bonus.8=Fast Food Service
Taming.Ability.Locked.0=L\u00c5ST INDTIL {0}+ EVNE (OMGIVELSES BEVIDST)
Taming.Ability.Locked.1=L\u00c5ST INDTIL {0}+ EVNE (TYK PELS)
Taming.Ability.Locked.2=L\u00c5ST INDTIL {0}+ EVNE (SHOCK SIKKER)
Taming.Ability.Locked.3=L\u00c5ST INDTIL {0}+ EVNE (SK\u00c6RPEDE KL\u00d8ER)
Taming.Ability.Locked.4=L\u00c5ST INDTIL {0}+ EVNE (FAST FOOD SERVICE)
Taming.Combat.Chance.Gore=Spidnings Chance: [[YELLOW]]{0}
Taming.SubSkill.BeastLore.Name=[[GREEN]]**TIGGENDE MONSTER**
Taming.SubSkill.BeastLore.Description=Sl\u00e5 p\u00e5 Ulve & Ocelotter med en Knogle for at incpicere dem.
Taming.SubSkill.ShockProof.Name=Shock Sikker
Taming.SubSkill.ShockProof.Description=Explosiv Skades Reduktion
Taming.SubSkill.CallOfTheWild.Name=Kaldet fra Naturen.
Taming.SubSkill.CallOfTheWild.Description=Lav et dyr ved din side
Taming.SubSkill.CallOfTheWild.Description.2=[[GRAY]]COTW (Ocelot): Crouch og venstre-click med {0} en Fisk i h\u00e5nden
Taming.Effect.15=[[GRAY]]COTW (Wolf): Crouch og venstre-click med {0} Knogler i din h\u00e5nd.
Taming.SubSkill.FastFoodService.Name=Fast Food Service
Taming.SubSkill.FastFoodService.Description=Chance for Ulve liver op n\u00e5r de angriber
Taming.SubSkill.Gore.Name=M\u00e5l Punkt.
Taming.SubSkill.Gore.Description=Kritisk slag some f\u00e5r dig til at Bl\u00f8de
Taming.SubSkill.SharpenedClaws.Name=Sk\u00e6rpet Kl\u00f8er
Taming.SubSkill.SharpenedClaws.Description=Skade Bonus
Taming.SubSkill.EnvironmentallyAware.Name=Omgivelses bevidst
Taming.SubSkill.EnvironmentallyAware.Description=Kaktus/Lava Phobi, Immun mod Fald Skade
Taming.SubSkill.ThickFur.Name=Tyk Pels
Taming.SubSkill.ThickFur.Description=Skades Reduktion, Ild Modstand
Taming.Listener.Wolf=[[DARK_GRAY]]Din ulv smutter tilbage til dig...
Taming.Listener=T\u00e6mning:
Taming.SkillName=T\u00c6MMER
Taming.Skillup=T\u00e6mningsevne for\u00f8get med {0}. Total ({1})
Taming.Summon.Complete=[[GREEN]]Skabelse Komplet
Taming.Summon.Fail.Ocelot=Der er for mange Ocelotter i n\u00e6rheden af dig til at du kan spawne flere.
Taming.Summon.Fail.Wolf=Der er for mange Ulve i n\u00e6rheden af dig til at du kan spawne flere.
Unarmed.Ability.Berserk.Length=Berserker L\u00e6ngde: [[YELLOW]]{0}s
Unarmed.Ability.Bonus.0=Jern Arm Stil
Unarmed.Ability.Bonus.1=+{0} DMG Upgradering
Unarmed.Ability.Chance.ArrowDeflect=Pile Undvignings Chance: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=Afv\u00e6bnings Chance: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=Din modstander har et Jerngreb!
Unarmed.Ability.IronGrip.Defender=[[GREEN]]Dit Jerngreb lod dig modst\u00e5 afv\u00e6bning!
Unarmed.Ability.Lower=[[GRAY]]**DU S\u00c6NKER DINE N\u00c6VER**
Unarmed.Ability.Ready=[[GREEN]]**DU KLARG\u00d8R DIN N\u00c6VE**
Unarmed.SubSkill.Berserk.Name=Berserker (EVNE)
Unarmed.SubSkill.Berserk.Description=+50% skade, \u00f8del\u00e6gger svage materialer
Unarmed.SubSkill.Disarm.Name=Afv\u00e6bn (Spiller)
Unarmed.SubSkill.Disarm.Description=F\u00e5 objektet i din fjendes h\u00e5nd til at ryge ned p\u00e5 jorden.
Unarmed.SubSkill.IronArmStyle.Name=Jern Arm Stil
Unarmed.SubSkill.IronArmStyle.Description=Forst\u00e6rker din arm over tiden
Unarmed.SubSkill.ArrowDeflect.Name=Pile Undvigning
Unarmed.SubSkill.ArrowDeflect.Description=Undvig Pile
Unarmed.Listener=Ubev\u00e6bnet:
Unarmed.SkillName=UBEV\u00c6BNET
Unarmed.Skills.Berserk.Off=**Berserker er nu aftaget**
Unarmed.Skills.Berserk.On=[[GREEN]]**BERSERKER AKTIVERET**
Unarmed.Skills.Berserk.Other.Off=Berserker[[GREEN]] er aftaget i [[YELLOW]]{0}
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] har brugt [[RED]]Berserker!
Unarmed.Skills.Berserk.Refresh=[[GREEN]]Dine [[YELLOW]]Berserker [[GREEN]]evner er genindl\u00e6st!
Unarmed.Skillup=Ubev\u00e6bnet evne for\u00f8get med {0}. Total ({1})
Woodcutting.Ability.0=Blad Bl\u00e6ser
Woodcutting.Ability.1=Bl\u00e6s blade v\u00e6k
Woodcutting.Ability.Chance.DDrop=2x Tabs Chance: [[YELLOW]]{0}
Woodcutting.Ability.Length=Tr\u00e6 Hugger L\u00e6ngde: [[YELLOW]]{0}s
Woodcutting.Ability.Locked.0=L\u00c5ST INDTIL {0}+ EVNE (BLAD BL\u00c6SER)
Woodcutting.SubSkill.TreeFeller.Name=Tr\u00e6 Hugger (EVNE)
Woodcutting.SubSkill.TreeFeller.Description=F\u00e5r tr\u00e6er til at explodere
Woodcutting.SubSkill.LeafBlower.Name=Blad Bl\u00e6ser
Woodcutting.SubSkill.LeafBlower.Description=Spr\u00e6ng blade v\u00e6k
Woodcutting.SubSkill.HarvestLumber.Name=Dobbel tab
Woodcutting.SubSkill.HarvestLumber.Description=Dobbel det normale udbytte
Woodcutting.Listener=Tr\u00e6f\u00e6ldning:
Woodcutting.SkillName=TR\u00c6F\u00c6LDNING
Woodcutting.Skills.TreeFeller.Off=**Tr\u00e6 Hugger er nu aftaget**
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**TR\u00c6 HUGGER AKTIVERET**
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]Din [[YELLOW]]Tr\u00e6 Hugger [[GREEN]]evne er genindl\u00e6st!
Woodcutting.Skills.TreeFeller.Other.Off=Tr\u00e6 hugger[[GREEN]] er aftaget i [[YELLOW]]{0}
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]] har brugt [[RED]]Tr\u00e6 hugger!
Woodcutting.Skills.TreeFeller.Splinter=DIN \u00d8KSE SPLINTRER I TUSINDER AF STYKKER!
Woodcutting.Skills.TreeFeller.Threshold=Det tr\u00e6 er for stort!
Woodcutting.Skillup=Tr\u00e6hugningsevne for\u00f8get med {0}. Total ({1})
Ability.Generic.Refresh=[[GREEN]]**EVNER GENINDL\u00c6ST!**
Ability.Generic.Template.Lock=[[GRAY]]{0}
Ability.Generic.Template=[[GOLD]]{0}: [[DARK_AQUA]]{1}
Combat.ArrowDeflect=[[WHITE]]**UNDVIGER PIL**
Combat.BeastLore=[[GREEN]]**TIGGENDE MONSTER**
Combat.BeastLoreHealth=[[DARK_AQUA]]Liv ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreOwner=[[DARK_AQUA]]Ejer ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]**SPIDDET**
Combat.StruckByGore=**DU ER BLEVET SPIDDET**
Combat.TargetDazed=M\u00e5let er nu [[DARK_RED]]Bed\u00f8vet
Combat.TouchedFuzzy=[[DARK_RED]]R\u00f8rte Plysse. F\u00f8lte mig svimmel.
Commands.addlevels.AwardAll.1=[[GREEN]]Du har f\u00e5et {0} Exp i alle evner!
Commands.addlevels.AwardAll.2=Alle evner er blevet \u00e6ndret til {0}.
Commands.addlevels.AwardSkill.1=[[GREEN]]Du har f\u00e5et{0} levels i {1}!
Commands.addlevels.AwardSkill.2={0} er blevet \u00e6ndret for {1}.
Commands.addxp.AwardAll=[[GREEN]]Du har f\u00e5et {0} Exp i alle evner!
Commands.addxp.AwardSkill=[[GREEN]]Du har f\u00e5et {0} Exp i {1}!
Commands.Ability.Off=Evne brug sat til [[GREEN]]Sand
Commands.Ability.On=Evne brug sat til [[GREEN]]Sand
Commands.AdminChat.Off=Admin Chat kun [[RED]]Slukket
Commands.AdminChat.On=Kun Admin Chat [[GREEN]]Rigtigt
Commands.AdminToggle=- Skift admin chatten
Commands.Chat.Console=*Konsol*
Commands.Disabled=Denne kommando er sl\u00e5et fra.
Commands.DoesNotExist=Spiller eksisterer ikke i databasen!
Commands.GodMode.Disabled=mcMMO GudeTilstand Slukket
Commands.GodMode.Enabled=mcMMO GudeTilstand Aktiveret
Commands.GodMode.Forbidden=[mcMMO] Gude Tilstand er ikke tilladt i denne verden (Se Tilladelser)
Commands.Inspect=<player> [[RED]]- Se detaljeret spiller Info
Commands.Party.Invite.Accepted=[[GREEN]]Invitation Accepteret. Du har sluttet dig til en gruppe {0}
Commands.Invite.Success=[[GREEN]]Invitation sendt successfuldt
Commands.Leaderboards=<skill> <page> [[RED]]- Ranglister
Commands.mcc.Header=---[][[YELLOW]]mcMMO Kommandoer[[RED]][]---
Commands.mcgod=- Skift GudeTilstand
Commands.mchud.Invalid=Det er ikke en tilladt HUD type.
Commands.mcpurge.Success=[[GREEN]]Databasen er blevet succesfuldt renset!
Commands.mcrank.Heading=[[GOLD]]-=PERSONLIGE RANGLISTER=-
Commands.mcrank.Overall=Overall[[GREEN]] - [[GOLD]]Rang [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=M\u00c5L: [[WHITE]]{0}
Commands.mcrank.Skill={0}[[GREEN]] - [[GOLD]]Rang [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]Degraderet
Commands.mcrefresh.Success={0}\'\'s nedk\u00f8ling er blevet genindl\u00e6st.
Commands.mcremove.Success=[[GREEN]]{0} er succesfuldt fjernet fra databasen!
Commands.mctop.Tip=[[GOLD]]Tip: Brug [[RED]]/mcrank[[GOLD]] for at se all dine personlige rangs!
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - \u00c6ndrer m\u00e5let
Commands.mmoedit.Modified.1=[[GREEN]]Dit level i {0} er sat til {1}!
Commands.mmoedit.Modified.2={0} er blevet \u00e6ndret for {1}.
Commands.ModDescription=- L\u00e6s den korte mod beskrivelse
Commands.NoConsole=Denne kommando er ikke supported af konsollen.
Commands.Other=[[GREEN]]--ANDRE KOMMANDOER--
Commands.Party.Accept=- Accepter gruppe invitation
Commands.Party.Chat.Off=Gruppe Chat kun [[RED]]Slukket
Commands.Party.Chat.On=Kun Gruppe Chat [[GREEN]]Rigtigt
Commands.Party.Commands=[[GREEN]]--GRUPPE KOMMANDOER--
Commands.Party.Invite.0=INFORMATION: [[GREEN]]Du har modtaget en gruppe invitation for {0} from {1}
Commands.Party.Kick=Du er blevet fjernet fra gruppen {0}!
Commands.Party.Leave=Du har forladt denne gruppe
Commands.Party.None=Du er ikke i en gruppe.
Commands.Party.Quit=- Forlad din nuv\u00e6rende Gruppe
Commands.Party.Teleport=<player> [[RED]]- Teleporter til gruppe medlem
Commands.Party.Toggle=- Skift Gruppe Chat
Commands.PowerLevel.Leaderboard=--mcMMO[[BLUE]] Kraft Level [[YELLOW]]Rangliste--
Commands.PowerLevel.Capped=[[DARK_RED]]KRAFT LEVEL: [[GREEN]]{0} [[DARK_RED]]MAX LEVEL: [[YELLOW]]{1}
Commands.PowerLevel=[[DARK_RED]]Kraft level: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]Dine {0} Evne levels er blevet gendannet succesfuldt
Commands.Reset.Single=[[GREEN]]Dine {0} Evne levels er blevet gendannet succesfuldt
Commands.Reset=Genindl\u00e6s en evnes level til 0
Commands.Skill.Invalid=Det er ikke et brugbart evnenavn!
Commands.Skill.Leaderboard=--mcMMO [[BLUE]]{0}[[YELLOW]] Rangliste--
Commands.Stats.Self=DINE STATS
Commands.Stats=- Se dine mcMMO statistikker.
Commands.ToggleAbility=- Skift evne aktivering med h\u00f8jre-click
Commands.Usage.1=Korrekt brug er /{0} {1}
Commands.Usage.2=Korrekt brug er /{0} {1} {2}
Commands.Usage.3=Korrekt brug er /{0} {1} {2} {3}
Commands.Usage.Level=Level
Commands.Usage.Message=besked
Commands.Usage.Page=side
Commands.Usage.Player=spiller
Commands.Usage.Skill=Evne
Commands.Usage.XP=xp
mcMMO.NoInvites=Du har ingen invitationer p\u00e5 nuv\u00e6rende tidspunkt
mcMMO.NoPermission=[[DARK_RED]]Ikke nok Tilladelser.
mcMMO.NoSkillNote=[[DARK_GRAY]]Hvis du ikke har adgang til en evne, vil den evne ikke blive vist her.
Party.Forbidden=[mcMMO] grupper er ikke tilladt i denne verden (Se Tilladelser)
Party.InvalidName=[[DARK_RED]]Dette er ikke et gruppe navn.
Party.IsLocked=Denne gruppe er allerede l\u00e5st!
Party.IsntLocked=Denne gruppe er ikke l\u00e5st!
Party.Locked=Festen er l\u00e5st, kun gruppe lederen kan invitere.
Party.NotInYourParty=[[DARK_RED]]{0} er ikke i din gruppe
Party.NotOwner=[[DARK_RED]]Du er ikke gruppe lederen.
Party.Owner.New=[[GREEN]]{0} er den nye gruppe leder.
Party.Owner.NotLeader=[[DARK_RED]]Du er ikke l\u00e6ngere gruppens leder.
Party.Owner.Player=[[GREEN]]Du er nu gruppe lederen.
Party.Password.Incorrect=Gruppe kodeord er forkert.
Party.Password.Set=[[GREEN]]Gruppe adgangskode sat til {0}
Party.Player.Invalid=Dette er ikke en rigtig spiller.
Party.Teleport.Dead=Du kan ikke teleportere til en d\u00f8d spiller.
Party.Teleport.Player=[[GREEN]]Du har teleporteret til {0}.
Party.Teleport.Self=Du kan ikke teleportere dig selv!
Party.Teleport.Target=[[GREEN]]{0} har teleporteret til dig.
Party.Unlocked=[[GRAY]]Gruppe er \u00e5ben
Commands.XPGain.Acrobatics=Falder
Commands.XPGain.Archery=Angriber Monstre
Commands.XPGain.Axes=Angriver Monstre
Commands.XPGain.Excavation=Graver og finder skatte
Commands.XPGain.Fishing=Fiskning (Brug nu hovedet!)
Commands.XPGain.Herbalism=Samler Urter
Commands.XPGain.Mining=Udvinde Sten & Malm
Commands.XPGain.Repair=Repererer
Commands.XPGain.Swords=Angriber Monstre
Commands.XPGain.Taming=Dyret\u00e6mning, eller kamp m/ dine ulve
Commands.XPGain.Unarmed=Angriber Monstre
Commands.XPGain.Woodcutting=Hugger tr\u00e6er ned
Commands.XPGain=[[DARK_GRAY]]XP FORTJENST: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]Din XP BAR er nu l\u00e5st til {0}!
Commands.xplock.unlocked=[[GOLD]]Din XP BAR er nu [[GREEN]]\u00c5BEN[[GOLD]]!
Commands.xprate.modified=The XP er blevet \u00e6ndret til {0}
Commands.xprate.over=mcMMO XP bed\u00f8mnings begivenhed er SLUT!!
Commands.xprate.proper.0=Den rigtige m\u00e5de at \u00e6ndre XP ratio er /xprate <integer> <true/false>
Commands.xprate.proper.1=Rigtig brug for at s\u00e6tte XP level til 0 er /xprate reset
Commands.xprate.proper.2=V\u00e6lg sandt eller falsk for at vise om dette er en XP begivenhed eller ikke
Commands.xprate.started.0=[[GOLD]]XP BEGIVENHEDER FOR mcMMO ER STARTET!
Commands.xprate.started.1=[[GOLD]]mcMMO XP BED\u00d8MMELSE ER NU {0}x!
XPRate.Event=[[GOLD]]mcMMO er lige nu i gang med et XP bed\u00f8mnings begivenhed! XP bed\u00f8mning er {0}x!
Effects.Effects=Effekter
Effects.Level=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Available=[[GRAY]]Guide for {0} tilg\u00e6ngelige - skriv /{1} ? [page]
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Guide[[GOLD]]=-
Guides.Page.Invalid=Ikke et gyldigt side nummer!
Guides.Usage=Korrekt brug er /{0} ? [page]
Inspect.Offline=Du har ikke tilladelse til at inspicere offline spillere!
Inspect.OfflineStats=mcMMO Stats for Offline Spillere [[YELLOW]]{0}
Inspect.Stats=[[GREEN]]mcMMO F\u00e6rdigheder for [[YELLOW]]{0}
Inspect.TooFar=Du er for langt v\u00e6k til at inspicere denne spiller!
Item.ChimaeraWing.Fail=**KIM\u00c6RE VINGE FEJLEDE!**
Item.ChimaeraWing.Pass=**KIM\u00c6RE VINGE**
Item.Injured.Wait=Du var for nylig skadet og m\u00e5 derfor vente med at bruge dette. [[YELLOW]]({0}s)
Skills.Disarmed=[[DARK_RED]]Du er blevet afv\u00e6bnet!
Skills.Header=-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Du mangler mere
Skills.Stats={0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=Du er for udmattet til at bruge denne evne igen.
Stats.Header.Combat=[[GOLD]]-=KAMP EVNER=-
Stats.Header.Gathering=[[GOLD]]-=INDSAMLINGS EVNER=-
Stats.Header.Misc=[[GOLD]]-=MISC SKILLS=-
Stats.Own.Stats=[[GREEN]][mcMMO] F\u00e6rdigheder
Perks.XP.Name=Erfaring
Perks.XP.Desc=Modtag {0}x XP.
Perks.Lucky.Name=Held
Perks.Lucky.Desc=Giver {0} Evner en 33.3% bedre chance for at aktivere.
Perks.Lucky.Desc.Login=Giver visse Evner en 33.3% bedre chance for at aktivere.
Perks.Lucky.Bonus=[[GOLD]] ({0} med heldig frynsegode)
Perks.Cooldowns.Name=Hurtig Bedring
Perks.Cooldowns.Desc=Sk\u00e6rer Nedk\u00f8lings tiden ned med {0}.
Perks.ActivationTime.Name=Udholdenhed
Perks.ActivationTime.Desc=Forl\u00e6nger evne aktivations tid med {0} sekunder
Perks.ActivationTime.Bonus=[[GOLD]] ({0}s med Udholdenheds Frynsegode)
MOTD.Donate=[[DARK_AQUA]]Donations Info:
MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Evne d\u00f8ds straf: [[DARK_RED]]{0}%
MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]Vampyr Statistik Igle: [[DARK_RED]]{0}%
MOTD.PerksPrefix=[mcMMO Frynsegoder]
MOTD.Version=[[GOLD]][mcMMO] K\u00f8rer version [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO Hjemmeside

View File

@@ -1,938 +0,0 @@
# de locale file v0.1
# -----------------
# Setting up a new standard for string names, for easier localization.
# SkillName.SubType.LocalEffect.Increment
# Skill name, such as ACROBATICS, MINING.
# Sub-type, such as EFFECT, ABILITY, COMBAT.
# Local Effect, local text for Skill Name; ACROBATICS_ROLL, IGNITIONTIME,GRACECHANCE.
# Increment, for multi-line or array-like lists.
# ######
#
# EXAMPLES:
#
# Acrobatics.Ability.Proc
# Axes.Ability.Refresh.1
#
#Changelog to locale_de:
#-Added Alchemy Skill
#-Added Archery Effect 3
#-Added Axes.Combat.SS.Struck
#-Added multiple Fishing-Skill translations
#-Added multiple Herbalism-Skill translations
#-Added Mining.Blast.Effect
#-Salvage aus Repair herausgenommen
#-Added missing Swords.Effect skills
#-Added horses and holy hound to taming
#-Added Unarmed.SubSkillType.IronGrip.Description
#-Added Smelting
#Commands.addlevels
#Everything except parties translated to German
#Giga Bohrhammer in Giga Bohrer umbenannt.
#Added Guides.Smelting.Section.1
# --Lumis31
#ACROBATICS
Acrobatics.Ability.Proc=[[GREEN]]**Grazi\u00f6s Abgerollt**
Acrobatics.Combat.Proc=[[GREEN]]**Ausgewichen**
Acrobatics.DodgeChance=Ausweich-Chance: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.Name=Rolle
Acrobatics.SubSkill.Roll.Description=Reduziert oder negiert Fall-Schaden
Acrobatics.SubSkill.GracefulRoll.Name=Grazi\u00f6se Rolle
Acrobatics.SubSkill.GracefulRoll.Description=Doppelte Effektivit\u00e4t der Rolle
Acrobatics.SubSkill.Dodge.Name=Ausweichen
Acrobatics.SubSkill.Dodge.Description=Halbiert Angriffschaden
Acrobatics.Listener=Akrobatik:
Acrobatics.SubSkill.Roll.Chance=Rolle-Chance: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.GraceChance=Grazi\u00f6se Rolle-Chance: [[YELLOW]]{0}
Acrobatics.Roll.Text=**Abgerollt**
Acrobatics.SkillName=AKROBATIK
Acrobatics.Skillup=Akrobatik Skill um {0} gestiegen. Gesamt ({1})
#ALCHEMY
Alchemy.SubSkill.Catalysis.Name=Katalyse
Alchemy.SubSkill.Catalysis.Description=Erh\u00F6ht die Braugeschwindigkeit
Alchemy.SubSkill.Concoctions.Name=Braukunst
Alchemy.SubSkill.Concoctions.Description=Braue Tr\u00E4nke mit mehr Zutaten
Alchemy.Listener=Alchemie:
Alchemy.Ability.Locked.0=GESPERRT bis Skill {0}+ (KATALYSE)
Alchemy.Catalysis.Speed=Braugeschwindigkeit: [[YELLOW]]{0}
Alchemy.Concoctions.Rank=Braukunst Rang: [[YELLOW]]{0}/{1}
Alchemy.Concoctions.Ingredients=Zutaten [[[YELLOW]]{0}[[RED]]]: [[YELLOW]]{1}
Alchemy.SkillName=ALCHEMIE
Alchemy.Skillup=Alchemie Skill um {0} gestiegen. Gesamt ({1})
#ARCHERY
Archery.Combat.DazeChance=Chance auf Bet\u00e4ubung: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=Chance auf Pfeil-R\u00fcckgewinnung: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=Kunstschuss Zusatzschaden: [[YELLOW]]{0}
Archery.SubSkill.SkillShot.Name=Kunstschuss
Archery.SubSkill.SkillShot.Description=Erh\u00f6ht Schaden vom Bogen
Archery.SubSkill.Daze.Name=Bet\u00e4ubung (Spieler)
Archery.SubSkill.Daze.Description=Verwirrt Feinde und f\u00FCgt {0} Schaden zu
Archery.SubSkill.ArrowRetrieval.Name=Pfeil-R\u00fcckgewinnung
Archery.SubSkill.ArrowRetrieval.Description=Chance auf Pfeil-R\u00fcckgewinnung von Leichen
Archery.Listener=Bogen:
Archery.SkillName=BOGEN
Archery.Skillup=Bogenschie\u00DFen Fertigkeit ist um {0} gestiegen. Gesamt ({1})
#AXES
Axes.Ability.Bonus.0=Axt-Beherrschung
Axes.Ability.Bonus.1={0} Zusatz-Schaden
Axes.Ability.Bonus.2=Wucht
Axes.Ability.Bonus.3=Verursacht {0} Zusatz-Schaden gegen R\u00fcstung
Axes.Ability.Bonus.4=Wucht-Schlag
Axes.Ability.Bonus.5=Verursacht {0} Zusatz-Schaden gegen ungepanzerte Feinde
Axes.Ability.Lower=[[GRAY]]**Du senkst deine Axt**
Axes.Ability.Ready=[[GREEN]]**Deine Axt ist bereit**
Axes.Combat.CritStruck=[[DARK_RED]]Du wurdest KRITISCH getroffen!
Axes.Combat.CritChance=Chance auf kritischen Treffer: [[YELLOW]]{0}
Axes.Combat.CriticalHit=KRITISCHER TREFFER!
Axes.Combat.GI.Proc=[[GREEN]]**AUSGESCHALTET durch GEWALT SCHLAG**
Axes.Combat.GI.Struck=**Von WUCHT-SCHLAG getroffen**
Axes.Combat.SS.Struck=[[DARK_RED]]vom Sch\u00E4delspalter getroffen!
Axes.Combat.SS.Length=Sch\u00e4del-Spalter Dauer: [[YELLOW]]{0}s
Axes.SubSkill.SkullSplitter.Name=Sch\u00e4del-Spalter (F\u00e4higkeit)
Axes.SubSkill.SkullSplitter.Description=Verursacht Umgebungsschaden
Axes.SubSkill.CriticalStrikes.Name=Kritische Treffer
Axes.SubSkill.CriticalStrikes.Description=Doppelter Schaden
Axes.SubSkill.AxeMastery.Name=Axt-Beherrschung
Axes.SubSkill.AxeMastery.Description=Verursacht Bonus-Schaden
Axes.SubSkill.ArmorImpact.Name=Wucht
Axes.SubSkill.ArmorImpact.Description=Treffe mit gen\u00fcgend Gewalt zum R\u00fcstung zerschmettern
Axes.SubSkill.GreaterImpact.Name=Wucht-Schlag
Axes.SubSkill.GreaterImpact.Description=Zusatz-Schaden gegen ungepanzerte Feinde
Axes.Listener=Axt:
Axes.SkillName=AXT
Axes.Skills.SS.Off=**Sch\u00e4del-Spalter abgenutzt**
Axes.Skills.SS.On=[[GREEN]]**Sch\u00e4del-Spalter AKTIVIERT**
Axes.Skills.SS.Refresh=[[GREEN]]Dein [[YELLOW]]Sch\u00e4del-Spalter [[GREEN]]ist wieder bereit!
Axes.Skills.SS.Other.Off={0}s [[RED]]Sch\u00e4del-Spalter[[GREEN]] ist [[GREEN]]abgenutzt
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]Sch\u00e4del-Spalter!
Axes.Skillup=Axt Skill um {0} gestiegen. Gesamt ({1})
#EXCAVATION
Excavation.Ability.Lower=[[GRAY]]**Du senkst deine SCHAUFEL**
Excavation.Ability.Ready=[[GREEN]]**Deine SCHAUFEL ist bereit**
Excavation.SubSkill.GigaDrillBreaker.Name=Giga Bohrhammer (F\u00e4higkeit)
Excavation.SubSkill.GigaDrillBreaker.Description=3x Drop Rate, 3x EXP, +Geschwindigkeit
Excavation.SubSkill.TreasureHunter.Name=Schatz-J\u00e4ger
Excavation.SubSkill.TreasureHunter.Description=F\u00e4higkeit nach Sch\u00e4tzen zu graben
Excavation.Effect.Length=Giga Bohrhammer Dauer: [[YELLOW]]{0}s
Excavation.Listener=Graben:
Excavation.SkillName=GRABEN
Excavation.Skills.GigaDrillBreaker.Off=**Giga Bohrer ausgelaufen**
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**Giga Bohrer AKTIVIERT**
Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]Dein [[YELLOW]]Giga Bohrer [[GREEN]]ist wieder bereit!
Excavation.Skills.GigaDrillBreaker.Other.Off={0}s [[RED]]Giga Bohrer[[GREEN]] ist [[GREEN]]ausgelaufen
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]Giga Bohrer!
Excavation.Skillup=Graben Skill um {0} gestiegen. Gesamt ({1})
#FISHING
Fishing.Ability.Chance=Anbei\u00DFwahrscheinlichkeit: [[YELLOW]]{0}
Fishing.Ability.Info=Zauber-J\u00e4ger: [[GRAY]] **Verbessert sich mit Schatz-J\u00e4ger Rang**
Fishing.Ability.Locked.0=GESPERRT bis Skill {0}+ (Rei\u00DFen)
Fishing.Ability.Locked.1=GESPERRT bis Skill {0}+ (Eisangeln)
Fishing.Ability.Locked.2=GESPERRT bis Skill {0}+ (Profiangel)
Fishing.Ability.Rank=Schatz-J\u00e4ger Rang: [[YELLOW]]{0}/{1}
Fishing.Ability.TH.DropRate=Drop Rate: [[DARK_RED]]Falle: [[YELLOW]]{0} [[GRAY]]Oft: [[YELLOW]]{1} [[GREEN]]Gelegentlich: [[YELLOW]]{2}\n[[BLUE]]Au\u00DFergew\u00F6hnlich: [[YELLOW]]{3} [[LIGHT_PURPLE]]Selten: [[YELLOW]]{4} [[GOLD]]Schatz: [[YELLOW]]{5} [[AQUA]]Schallplatte: [[YELLOW]]{6}
Fishing.Ability.TH.MagicRate=Zauber-J\u00e4ger Chance: [[YELLOW]]{0}
Fishing.Ability.Shake=Rei\u00DFen-Chance: [[YELLOW]]{0}
Fishing.Ability.IceFishing=Eisangeln: Angeln im Eis
Fishing.Ability.FD=Fischer-Mahlzeit Rang: [[YELLOW]]{0}
Fishing.SubSkill.TreasureHunter.Name=Schatz-J\u00e4ger (Passiv)
Fishing.SubSkill.TreasureHunter.Description=Angle verschiedene Objekte
Fishing.SubSkill.MagicHunter.Name=Zauber-J\u00e4ger
Fishing.SubSkill.MagicHunter.Description=Finde verzauberte Gegenst\u00e4nde
Fishing.SubSkill.Shake.Name=Rei\u00DFen
Fishing.SubSkill.Shake.Description=Rei\u00DFe per Angel Gegenst\u00e4nde aus den Mobs
Fishing.SubSkill.FishermansDiet.Name=Fischer-Mahlzeit
Fishing.SubSkill.FishermansDiet.Description=Verbessert Effizienz von geangelter Nahrung
Fishing.SubSkill.MasterAngler.Name=Profiangel
Fishing.SubSkill.MasterAngler.Description=Erh\u00F6ht die Chance des Anbei\u00DFens
Fishing.SubSkill.IceFishing.Name=Eisangeln
Fishing.SubSkill.IceFishing.Description=Erm\u00F6glicht dir in Eisbiomen angeln zu gehen
Fishing.Chance.Raining=[[BLUE]] Regen Bonus
Fishing.Listener=Angeln:
Fishing.Ability.TH.MagicFound=[[AQUA]]Dich ber\u00fchrt ein leichter Zauber bei diesem Fang...
Fishing.Ability.TH.Boom=[[GRAY]]KARPADOR SETZT PLATSCHER EIN!!!
Fishing.Ability.TH.Poison=[[GRAY]]Hier stinkt etwas...
Fishing.SkillName=ANGELN
Fishing.Skillup=Angel Skill um {0} gestiegen. Gesamt ({1})
#HERBALISM
Herbalism.Ability.DoubleDropChance=Chance auf Doppel-Drops: [[YELLOW]]{0}
Herbalism.Ability.FD=Bauernfr\u00fchst\u00fcck: [[YELLOW]]Stufe {0}
Herbalism.Ability.GTe.Length=Gr\u00fcnes Land Dauer: [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=Du brauchst mehr Samen um Gr\u00FCnes Land zu verbreiten.
Herbalism.Ability.GTh.Chance=Gr\u00fcner Daumen Chance: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=**Gr\u00fcner Daumen GESCHEITERT**
Herbalism.Ability.GTh.Stage=Gr\u00fcner Daumen Stufe: [[YELLOW]] Weizen w\u00e4chst auf Stufe {0}
Herbalism.Ability.GTh=[[GREEN]]**GR\u00dcNER DAUMEN**
Herbalism.Ability.HylianLuck=Hylians Gl\u00fccks Chance: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**Du senkst deine HARKE**
Herbalism.Ability.Ready=[[GREEN]]**Deine HARKE ist bereit**
Herbalism.Ability.ShroomThumb.Chance=Gr\u00FCne Zehe Chance: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=**GR\u00DCNE ZEHE GESCHEITERT**
Herbalism.SubSkill.GreenTerra.Name=Gr\u00fcnes Land (F\u00e4higkeit)
Herbalism.SubSkill.GreenTerra.Description=Erte das Land ab, 3x Drops
Herbalism.SubSkill.GreenThumb.Name=Gr\u00fcner Daumen (Weizen)
Herbalism.SubSkill.GreenThumb.Description=Auto-Saat, s\u00e4ht Weizen wenn abgeerntet
Herbalism.SubSkill.GreenThumb.Description.2=Bemoost Steinziegel , l\u00e4sst Gras wachsen
Herbalism.SubSkill.FarmersDiet.Name=Bauernfr\u00fchst\u00fcck
Herbalism.SubSkill.FarmersDiet.Description=Erh\u00f6ht Effektivit\u00e4t von geernteter Nahrung
Herbalism.SubSkill.DoubleDrops.Name=Doppel Drops (Alle Pflanzen)
Herbalism.SubSkill.DoubleDrops.Description=Verdoppelt die normale Ausbeute (Loot)
Herbalism.SubSkill.HylianLuck.Name=Hylian Gl\u00fcck
Herbalism.SubSkill.HylianLuck.Description=Gibt eine kleine M\u00f6glichkeit, seltene Gegenst\u00e4nde zu finden
Herbalism.SubSkill.ShroomThumb.Name=Pilz Zehe
Herbalism.SubSkill.ShroomThumb.Description=Verbreite Myzel auf Gras und Erde
Herbalism.HylianLuck=[[GREEN]]Heute ist das Gl\u00fcck von Hyrule mit dir!
Herbalism.Listener=Pflanzenkunde:
Herbalism.SkillName=PFLANZENKUNDE
Herbalism.Skills.GTe.Off=**Gr\u00fcnes Land ist ausgelaufen**
Herbalism.Skills.GTe.On=[[GREEN]]**Gr\u00fcnes Land AKTIVIERT**
Herbalism.Skills.GTe.Refresh=[[GREEN]]Deine [[YELLOW]]Gr\u00fcnes Land [[GREEN]]F\u00e4higkeit ist wieder bereit!
Herbalism.Skills.GTe.Other.Off={0}s [[RED]]Gr\u00fcnes Land[[GREEN]] ist [[GREEN]]ausgelaufen.
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]Gr\u00fcnes Land!
Herbalism.Skillup=Pflanzenkunde Skill um {0} gestiegen. Gesamt ({1})
#MINING
Mining.Ability.Length=Super-Brecher Dauer: [[YELLOW]]{0}s
Mining.Ability.Locked.0=GESPERRT bis Skill {0}+ (Z\u00fcndstoff)
Mining.Ability.Locked.1=GESPERRT bis Skill {0}+ (Sprengmeister)
Mining.Ability.Locked.2=GESPERRT bis Skill {0}+ (Explosions-Experte)
Mining.Ability.Lower=[[GRAY]]**Du senkst deine SPITZHACKE**
Mining.Ability.Ready=[[GREEN]]**Deine SPITZHACKE ist bereit**
Mining.SubSkill.SuperBreaker.Name=Super-Brecher (F\u00e4higkeit)
Mining.SubSkill.SuperBreaker.Description=Abbaugeschwindigkeit+, Dreifach-Drop Chance
Mining.SubSkill.DoubleDrops.Name=Doppel Drops
Mining.SubSkill.DoubleDrops.Description=Verdoppelt die normale Ausbeute
Mining.SubSkill.BlastMining.Name=Z\u00fcndstoff
Mining.SubSkill.BlastMining.Description=Bonus beim Abbaue mit TNT
Mining.SubSkill.BiggerBombs.Name=Sprengmeister
Mining.SubSkill.BiggerBombs.Description=Erh\u00f6ht den Explosions-Radius
Mining.SubSkill.DemolitionsExpertise.Name=Explosions-Experte
Mining.SubSkill.DemolitionsExpertise.Description=Reduziert die Verletzung durch TNT Explosionen
Mining.Effect.Decrease=Explosions-Experte Schadensreduzierung: [[YELLOW]]{0}
Mining.Effect.DropChance=Doppel Drop Chance: [[YELLOW]]{0}
Mining.Listener=Bergbau:
Mining.SkillName=BERGBAU
Mining.Skills.SuperBreaker.Off=**Super-Brecher ist ausgelaufen**
Mining.Skills.SuperBreaker.On=[[GREEN]]**Super-Brecher AKTIVIERT**
Mining.Skills.SuperBreaker.Other.Off={0}s [[RED]]Super-Brecher[[GREEN]] ist [[GREEN]]ausgelaufen.
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]Super-Brecher!
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Dein [[YELLOW]]Super-Brecher [[GREEN]]ist wieder bereit!
Mining.Skillup=Bergbau Fertigkeit ist um {0} gestiegen. Gesamt ({1})
#Blast Mining
Mining.Blast.Boom=[[GRAY]]**BOOM**
Mining.Blast.Effect=+{0} Erze -{1} Schutt, {2}x Drops
Mining.Blast.Radius.Increase=Z\u00fcndstoff Radius Erh\u00f6hung: [[YELLOW]]+{0}
Mining.Blast.Rank=Z\u00fcndstoff Rang:[[YELLOW]] {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]Z\u00fcndstoff!
Mining.Blast.Refresh=[[GREEN]]Dein [[YELLOW]]Z\u00fcndstoff [[GREEN]]ist wieder bereit!
#REPAIR
Repair.SubSkill.Repair.Name=Reparatur
Repair.SubSkill.Repair.Description=Repariere Werkzeuge & R\u00fcstung
Repair.SubSkill.GoldRepair.Name=Gold Reparatur ({0}+ SKILL)
Repair.SubSkill.GoldRepair.Description=Repariere Gold-Werkzeuge & R\u00fcstung
Repair.SubSkill.IronRepair.Name=Eisen Reparatur ({0}+ SKILL)
Repair.SubSkill.IronRepair.Description=Repariere Eisen-Werkzeuge & R\u00fcstung
Repair.SubSkill.StoneRepair.Name=Stein Reparatur ({0}+ SKILL)
Repair.SubSkill.StoneRepair.Description=Repariere Stein-Werkzeuge
Repair.SubSkill.RepairMastery.Name=Reparatur Meister
Repair.SubSkill.RepairMastery.Description=Erh\u00f6ht den Reparatur-Wert
Repair.SubSkill.SuperRepair.Name=Super-Reparatur
Repair.SubSkill.SuperRepair.Description=Doppelte Effektivit\u00e4t
Repair.SubSkill.DiamondRepair.Name=Diamant Reparatur ({0}+ SKILL)
Repair.SubSkill.DiamondRepair.Description=Repariere Diamant-Werkzeuge & R\u00fcstung
Repair.SubSkill.ArcaneForging.Name=Arkanes Schmieden
Repair.SubSkill.ArcaneForging.Description=Repariere magische Gegenst\u00e4nde
Repair.Error=[[DARK_RED]]mcMMO ist beim Versuch dieses Item zu reparieren auf einen Fehler gesto\u00DFen!
Repair.Listener.Anvil=[[DARK_RED]]Du hast einen Amboss platziert, Ambosse k\u00f6nnen Waffen und R\u00fcstung reparieren.
Repair.Listener=Reparatur:
Repair.SkillName=REPARATUR
Repair.Skills.AdeptDiamond=[[DARK_RED]]Du hast nicht gen\u00fcgend Level um Diamant zu reparieren.
Repair.Skills.AdeptGold=[[DARK_RED]]Du hast nicht gen\u00fcgend Level um Gold zu reparieren.
Repair.Skills.AdeptIron=[[DARK_RED]]Du hast nicht gen\u00fcgend Level um Eisen zu reparieren
Repair.Skills.AdeptStone=[[DARK_RED]]Du hast nicht gen\u00fcgend Level um Stein zu reparieren
Repair.Skills.Adept=Du ben\u00f6tigst Level [[YELLOW]]{0}[[RED]] um [[YELLOW]]{1} zu reparieren.
Repair.Skills.FeltEasy=[[GRAY]]Das f\u00fchlte sich einfach an.
Repair.Skills.FullDurability=[[GRAY]]Dieser Gegenstand hat volle Haltbarkeit.
Repair.Skills.Mastery=Reparatur-Meister: [[YELLOW]]{0} Zusatz-Haltbarkeit.
Repair.Skills.StackedItems=[[DARK_RED]]Du kannst keine gestapelten Gegenst\u00e4nde reparieren.
Repair.Skills.Super.Chance=Super-Reparatur Chance: [[YELLOW]]{0}
Repair.Skillup=Reparatur Skill um {0} gestiegen. Gesamt ({1})
Repair.Pretty.Name=Reparatur
#Arcane Forging
Repair.Arcane.Chance.Downgrade=[[GRAY]]AS Verminderungs Chance: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]AS Erfolgs-Rate: [[YELLOW]]{0}%
Repair.Arcane.Downgrade=Zauber-Wert des Gegenstands vermindert.
Repair.Arcane.Fail=Der Gegenstands wurde entzaubert.
Repair.Arcane.Lost=Du hast nicht gen\u00fcgend Skill um Verzauberungen zu erhalten.
Repair.Arcane.Perfect=[[GREEN]]Du hast den Zauber-Wert des Gegenstands erhalten.
Repair.Arcane.Rank=Arkanes Schmieden Rang: [[YELLOW]]{0}/{1}
#SALVAGE
Salvage.Pretty.Name=Verwerten
Salvage.SubSkill.AdvancedSalvage.Name=Fortgeschrittenes Verwerten
Salvage.SubSkill.AdvancedSalvage.Description=Verwerte besch\u00E4digte Items
Salvage.SubSkill.ArcaneSalvaging.Name=Arkanes Verwerten
Salvage.SubSkill.ArcaneSalvaging.Description=Extra Verzauberung aus Items
Salvage.Ability.Locked.0=GESPERRT bis Skill {0}+ (Fortgeschrittenes Verwerten)
Salvage.Ability.Bonus.0=Fortgeschrittenes Verwerten
Salvage.Ability.Bonus.1=Max Ertrag {0} Item zerst\u00F6rt
Salvage.Arcane.Rank=Arkanes Verwerten: [[YELLOW]]Rang {0}/{1}
Salvage.Arcane.ExtractFull=[[GRAY]]Verwerten: Gesamte Verzauberung Wahrscheinlichkeit
Salvage.Arcane.ExtractPartial=[[GRAY]]Verwerten: Teil-Verzauberung Wahrscheinlichkeit
Salvage.Skills.Success=[[GREEN]]Item verwertet!
Salvage.Skills.Adept.Damaged=[[DARK_RED]]Deine F\u00E4higkeit ist nicht hoch genug um besch\u00E4digte Items zu verwerten.
Salvage.Skills.Adept.Level=Du musst Level [[YELLOW]]{0}[[RED]] sein um [[YELLOW]]{1} [[RED]] zu verwerten.
Salvage.Skills.TooDamaged=[[DARK_RED]]Das Item ist zu besch\u00E4digt um verwertet zu werden.
Salvage.Skills.ArcaneFailed=Es ist dir nicht gelungen das Wissen aus diesem Item zu extrahieren.
Salvage.Skills.ArcanePartial=Es ist dir gelungen ein bisschen Wissen zu extrahieren.
Salvage.Skills.ArcaneSuccess=[[GREEN]]Du konntest alles Wissen aus diesem Item extrahieren!
Salvage.Listener.Anvil=[[DARK_RED]]Du hast einen Verwertungs-Amboss platziert, benutze ihn um Werkzeuge und R\u00FCstung zu verwerten.
Salvage.Listener=Verwerten:
Salvage.SkillName=VERWERTEN
#SWORDS
Swords.Ability.Lower=[[GRAY]]**Du senkst dein SCHWERT**
Swords.Ability.Ready=[[GREEN]]**Dein SCHWERT ist bereit**
Swords.Combat.Bleed.Chance=Blutungs Chance: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=Blutungs Dauer: [[YELLOW]]{0} Ticks
Swords.Combat.Bleed.Note=[[GRAY]]Info: [[YELLOW]]1 Tick tritt alle 2 Sekunden ein.
Swords.Combat.Bleeding.Started=[[DARK_RED]] Du blutest!
Swords.Combat.Bleeding.Stopped=[[GRAY]]Das Bluten hat [[GREEN]]aufgeh\u00f6rt[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**GEGNER BLUTET**
Swords.Combat.Counter.Chance=Gegenangriff Chance: [[YELLOW]]{0}
Swords.Combat.Counter.Hit=[[DARK_RED]]Treffer durch Gegenangriff!
Swords.Combat.Countered=[[GREEN]]**GEGENANGRIFF**
Swords.Combat.SS.Struck=[[DARK_RED]]Getroffen von S\u00c4GEZAHNSCHLAG!
Swords.SubSkill.CounterAttack.Name=Gegenangriff
Swords.SubSkill.CounterAttack.Description=Reflektiere {0} des Schadens w\u00E4hrend du blockierst
Swords.SubSkill.SerratedStrikes.Name=S\u00e4gezahnschlag (F\u00e4higkeit)
Swords.SubSkill.SerratedStrikes.Description={0} Fl\u00E4chenschaden, Fl\u00E4chenblutung+
Swords.Effect.4=S\u00e4gezahnschlag, Blutung+
Swords.Effect.5={0} Ticks Blutung
Swords.SubSkill.Bleed.Name=Blutung
Swords.SubSkill.Bleed.Description=Verursacht Blutungsschaden \u00fcber Zeit
Swords.Listener=Schwert:
Swords.SkillName=SCHWERT
Swords.Skills.SS.Off=**S\u00e4gezahnschlag abgenutzt**
Swords.Skills.SS.On=[[GREEN]]**S\u00e4gezahnschlag AKTIVIERT**
Swords.Skills.SS.Refresh=[[GREEN]]Dein [[YELLOW]]S\u00e4gezahnschlag [[GREEN]]ist wieder bereit!
Swords.Skills.SS.Other.Off={0}s [[RED]]S\u00e4gezahnschlag[[GREEN]] ist [[GREEN]]abgenutzt.
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]S\u00e4gezahnschlag!
Swords.Skillup=Schwert Skill um {0} gestiegen. Gesamt ({1})
Swords.SS.Length=S\u00e4gezahnschlag Dauer: [[YELLOW]]{0}s
#TAMING
Taming.Ability.Bonus.0=Umweltbewusst
Taming.Ability.Bonus.1=W\u00f6lfe weichen Gefahren aus
Taming.Ability.Bonus.2=Dicker Pelz
Taming.Ability.Bonus.3=1/{0} Schaden, Feuer-Resistent
Taming.Ability.Bonus.4=Schock-Sicher
Taming.Ability.Bonus.5=Explosionen f\u00FCgen 1/{0} des normalen Schadens zu
Taming.Ability.Bonus.6=Gesch\u00e4rfte Krallen
Taming.Ability.Bonus.7=+{0} Schaden
Taming.Ability.Bonus.8=Schnell-Imbiss
Taming.Ability.Bonus.9={0} Chance auf Heilung bei einer Attacke
Taming.Ability.Bonus.10=Heiliger Hund
Taming.Ability.Bonus.11=Regenerierung auch mit Tr\u00E4nken und Zaubern m\u00F6glich
Taming.Ability.Locked.0=GESPERRT bis Skill {0}+ (Umweltbewusst)
Taming.Ability.Locked.1=GESPERRT bis Skill {0}+ (Dicker Pelz)
Taming.Ability.Locked.2=GESPERRT bis Skill {0}+ (Schock-Sicher)
Taming.Ability.Locked.3=GESPERRT bis Skill {0}+ (Gesch\u00e4rfte Krallen)
Taming.Ability.Locked.4=GESPERRT bis Skill {0}+ (Schnell-Imbiss)
Taming.Ability.Locked.5=GESPERRT bis Skill {0}+ (Heiliger Hund)
Taming.Combat.Chance.Gore=Aufschlitzen Chance: [[YELLOW]]{0}
Taming.SubSkill.BeastLore.Name=Bestienkunde
Taming.SubSkill.BeastLore.Description=Knochenschlag inspiziert W\u00f6lfe und Ozelots
Taming.SubSkill.ShockProof.Name=Schock-Sicher
Taming.SubSkill.ShockProof.Description=Reduktion von Explosions-Schaden
Taming.SubSkill.CallOfTheWild.Name=Ruf der Wildnis
Taming.SubSkill.CallOfTheWild.Description=Beschw\u00f6re ein Tier an deine Seite
Taming.SubSkill.CallOfTheWild.Description.2=[[GRAY]]RdW: B\u00fccken und Linksklick mit {0} {1} (Ozelot), {2} {3} (Wolf), {4} {5} (Pferd)
Taming.SubSkill.FastFoodService.Name=Schnell-Imbiss
Taming.SubSkill.FastFoodService.Description=Chance auf Heilung bei Attacke (Wolf)
Taming.SubSkill.HolyHound.Name=Heiliger Hund
Taming.SubSkill.HolyHound.Description=Heilung durch Magie und Tr\u00E4nke
Taming.SubSkill.Gore.Name=Aufschlitzen
Taming.SubSkill.Gore.Description=Kritische Treffer verursachen Blutung
Taming.SubSkill.SharpenedClaws.Name=Gesch\u00e4rfte Krallen
Taming.SubSkill.SharpenedClaws.Description=Schadens-Bonus
Taming.SubSkill.EnvironmentallyAware.Name=Umweltbewusst
Taming.SubSkill.EnvironmentallyAware.Description=Kaktus/Lava-Furcht, Immun gegen Fall-Schaden
Taming.SubSkill.ThickFur.Name=Dicker Pelz
Taming.SubSkill.ThickFur.Description=Verminderter Schaden, Feuer-Resistent
Taming.Listener.Wolf=[[DARK_GRAY]]Dein Wolf hastet zu dir zur\u00fcck...
Taming.Listener=Z\u00e4hmen:
Taming.SkillName=Z\u00c4HMEN
Taming.Skillup=Z\u00e4hhmen Skill um {0} gestiegen. Gesamt ({1})
Taming.Summon.Complete=[[GREEN]]Beschw\u00f6rung abgeschlossen
Taming.Summon.Lifespan=(Lebenszeit: {0}s)
Taming.Summon.Fail.Ocelot=Du hast zu viele Ozelots um dich, um weitere zu beschw\u00f6ren.
Taming.Summon.Fail.Wolf=Du hast zu viele W\u00f6lfe um dich, um weitere zu beschw\u00f6ren.
Taming.Summon.Fail.Horse=Du hast zu viele Pferde um dich, um weitere zu beschw\u00f6ren.
Taming.Summon.Fail.TooMany=Du hast das Maximum an beschworenen Tieren erreicht [[YELLOW]]({0})
Taming.Summon.Name.Format={0}''s {1}
#UNARMED
Unarmed.Ability.Berserk.Length=Berserker Dauer: [[YELLOW]]{0}s
Unarmed.Ability.Bonus.0=Eiserner Arm
Unarmed.Ability.Bonus.1=+{0} Schadens-Bonus
Unarmed.Ability.Chance.ArrowDeflect=Pfeile ablenken Chance: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=Entwaffnen Chance: [[YELLOW]]{0}
Unarmed.Ability.Chance.IronGrip=Eisen Griff Chance: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=Dein Gegner hat einen eisernen Griff!
Unarmed.Ability.IronGrip.Defender=[[GREEN]]Dein eiserner Griff hat dich vor Entwaffnung gesch\u00FCtzt!
Unarmed.Ability.Lower=[[GRAY]]**Du senkst deine F\u00c4USTE**
Unarmed.Ability.Ready=[[GREEN]]**Deine F\u00c4USTE sind bereit**
Unarmed.SubSkill.Berserk.Name=Berserker (F\u00e4higkeit)
Unarmed.SubSkill.Berserk.Description=+50% Schaden, Zerbricht weiche Materialien
Unarmed.SubSkill.Disarm.Name=Entwaffnen (Spieler)
Unarmed.SubSkill.Disarm.Description=L\u00E4sst Gegenstand aus der Hand des Feindes fallen
Unarmed.SubSkill.IronArmStyle.Name=Eiserner Arm
Unarmed.SubSkill.IronArmStyle.Description=Erh\u00f6ht kurzfristig deine Schlagkraft
Unarmed.SubSkill.ArrowDeflect.Name=Pfeil-Ablenkung
Unarmed.SubSkill.ArrowDeflect.Description=Lenkt Pfeile ab
Unarmed.SubSkill.IronGrip.Name=Eisen Griff
Unarmed.SubSkill.IronGrip.Description=Sch\u00FCtzt dich davor, entwaffnet zu werden
Unarmed.Listener=Unbewaffnet:
Unarmed.SkillName=UNBEWAFFNET
Unarmed.Skills.Berserk.Off=**Berserker ausgelaufen**
Unarmed.Skills.Berserk.On=[[GREEN]]**Berserker AKTIVIERT**
Unarmed.Skills.Berserk.Other.Off={0}s [[RED]]Berserker[[GREEN]] ist [[GREEN]]ausgelaufen
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]Berserker!
Unarmed.Skills.Berserk.Refresh=[[GREEN]]Dein [[YELLOW]]Berserker [[GREEN]]ist wieder bereit!
Unarmed.Skillup=Unbewaffnet Skill um {0} gestiegen. Gesamt ({1})
#WOODCUTTING
Woodcutting.Ability.0=Bl\u00e4ttersturm
Woodcutting.Ability.1=Bl\u00e4st Bl\u00e4tter davon
Woodcutting.Ability.Chance.DDrop=Doppel Drop Chance: [[YELLOW]]{0}
Woodcutting.Ability.Length=Baumf\u00e4ller Dauer: [[YELLOW]]{0}s
Woodcutting.Ability.Locked.0=GESPERRT bis Skill {0}+ (Bl\u00e4ttersturm)
Woodcutting.SubSkill.TreeFeller.Name=Baumf\u00e4ller (F\u00e4higkeit)
Woodcutting.SubSkill.TreeFeller.Description=L\u00e4sst B\u00e4ume explodieren
Woodcutting.SubSkill.LeafBlower.Name=Bl\u00e4ttersturm
Woodcutting.SubSkill.LeafBlower.Description=Bl\u00e4st Bl\u00e4tter davon
Woodcutting.SubSkill.HarvestLumber.Name=Doppel Drops
Woodcutting.SubSkill.HarvestLumber.Description=Verdoppelt die Ausbeute
Woodcutting.Listener=Holzf\u00e4ller:
Woodcutting.SkillName=HOLZF\u00c4LLER
Woodcutting.Skills.TreeFeller.Off=**Baumf\u00e4ller abgelaufen**
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**Baumf\u00e4ller AKTIVIERT**
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]Dein [[YELLOW]]Baumf\u00e4ller [[GREEN]]ist wieder bereit!
Woodcutting.Skills.TreeFeller.Other.Off={0}s [[RED]]Baumf\u00e4ller[[GREEN]] ist [[GREEN]]abgelaufen
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]Baumf\u00e4ller!
Woodcutting.Skills.TreeFeller.Splinter=Deine Axt zersplittert in tausend kleine Teile!
Woodcutting.Skills.TreeFeller.Threshold=Dieser Baum ist zu gro\u00DF!
Woodcutting.Skillup=Holzf\u00e4ller Skill um {0} gestiegen. Gesamt ({1})
#ABILITIY
##generic
Ability.Generic.Refresh=[[GREEN]]**F\u00e4higkeit wieder BEREIT!**
Ability.Generic.Template.Lock=[[GRAY]]{0}
Ability.Generic.Template=[[GOLD]]{0}: [[DARK_AQUA]]{1}
#COMBAT
Combat.ArrowDeflect=[[WHITE]]**Pfeil ABGELENKT**
Combat.BeastLore=[[GREEN]]**BESTIENKUNDE**
Combat.BeastLoreHealth=[[DARK_AQUA]]Gesundheit ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreOwner=[[DARK_AQUA]]Besitzer ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]**AUFGESCHLITZT**
Combat.StruckByGore=**du wurdest AUFGESCHLITZT**
Combat.TargetDazed=Ziel wurde [[DARK_RED]]BET\u00c4UBT
Combat.TouchedFuzzy=[[DARK_RED]]Ungl\u00fccklich ber\u00fchrt. Schwindelgef\u00fchl.
#COMMANDS
##generic
mcMMO.Description=[[DARK_AQUA]]\u00DCber das [[YELLOW]]mcMMO[[DARK_AQUA]] Projekt: [[GOLD]]mcMMO ist ein [[RED]]open source[[GOLD]] RPG mod der im Februar 2011,[[GOLD]]von [[BLUE]]com.gmail.nossr50[[GOLD]] erstellt wurde. Ziel ist es eine gute RPG Erfahrung zu vermitteln.,[[DARK_AQUA]]Tipps:,[[GOLD]] - [[GREEN]]Benutz [[RED]]/mcmmo help[[GREEN]] um Befehle zu sehen,[[GOLD]] - [[GREEN]]Tippe [[RED]]/SKILLNAME[[GREEN]] um detaillierte Skillinformationen zu sehen,[[DARK_AQUA]]Entwickler:,[[GOLD]] - [[GREEN]]com.gmail.nossr50 [[BLUE]](Gr\u00FCnder),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Projektleitung),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](Entwickler),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](Entwickler),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](Entwickler),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](Entwickler),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](Entwickler),[[GOLD]] - [[GREEN]]lumis31 [[BLUE]](Deutsche \u00DCbersetzung), [[DARK_AQUA]]N\u00FCtzliche Links:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] Bug Reporting,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,
Commands.addlevels.AwardAll.1=[[GREEN]]Dir wurden {0} Level in allen Skills gutgeschrieben!
Commands.addlevels.AwardAll.2=Alle Skills wurden um {0} ge\u00E4ndert.
Commands.addlevels.AwardSkill.1=[[GREEN]]Dir wurden {0} Level in {1} gutgeschrieben!
Commands.addlevels.AwardSkill.2={0} wurde um {1} ge\u00E4ndert.
Commands.addxp.AwardAll=[[GREEN]]Dir wurden {0} Erfahrungspunkte in Skills gutgeschrieben!
Commands.addxp.AwardSkill=[[GREEN]Dir wurde {0} Erfahrung in {1} gutgeschrieben!
Commands.Ability.Off=F\u00e4higkeiten [[RED]]deaktiviert
Commands.Ability.On=F\u00e4higkeiten [[GREEN]]aktiviert
Commands.Ability.Toggle=Benutzung von F\u00E4higkeiten wurde f\u00FCr [[YELLOW]]{0} ge\u00E4ndert
Commands.AdminChat.Off=Nur Admin Chat [[RED]] deaktiviert
Commands.AdminChat.On=Nur Admin Chat [[GREEN]] aktiviert
Commands.AdminToggle=[[GREEN]]- Schalte den Adminchat um
Commands.Chat.Console=*Konsole*
Commands.Cooldowns.Header=[[GOLD]]--= [[GREEN]]mcMMO F\u00E4higkeiten Abk\u00FChlzeit[[GOLD]] =--
Commands.Cooldowns.Row.N=\ [[RED]]{0}[[WHITE]] - [[GOLD]]{1} Sekunden verbleiben
Commands.Cooldowns.Row.Y=\ [[AQUA]]{0}[[WHITE]] - [[DARK_GREEN]]Bereit!
Commands.Database.Cooldown=Du musst 1 Sekunde warten bevor du diesen Befehl erneut verwenden darfst.
Commands.Database.Processing=Dein vorheriger Befehl wird noch verarbeitet. Bitte warten.
Commands.Disabled=Dieser Befehl ist deaktiviert.
Commands.DoesNotExist=[[RED]]Spieler in Datenbank nicht vorhanden!
Commands.GodMode.Disabled=mcMMO Godmode deaktiviert
Commands.GodMode.Enabled=mcMMO Godmode aktiviert
Commands.GodMode.Forbidden=[mcMMO] Der Godmode ist in dieser Welt nicht erlaubt(Siehe Permissions)
Commands.GodMode.Toggle=Godmode wurde f\u00FCr [[YELLOW]]{0} aktiviert
Commands.Healthbars.Changed.HEARTS=[mcMMO]Deine Lebensanzeige wurde zu [[RED]]Herzen[[WHITE]] ge\u00E4ndert.
Commands.Healthbars.Changed.BAR=[mcMMO] Deine Lebensanzeige wurde zu [[YELLOW]]K\u00E4stchen[[WHITE]] ge\u00E4ndert.
Commands.Healthbars.Changed.DISABLED=[mcMMO] Die Mob-Lebensanzeige wurde [[GRAY]]deaktiviert[[WHITE]].
Commands.Healthbars.Invalid=Ung\u00FCltiger Lebensanzeige Typ!
Commands.Inspect=<player> [[GREEN]]- Siehe detaillierte Spielerinformationen
Commands.Invite.Success=[[GREEN]]Einladung erfolgreich gesendet.
Commands.Leaderboards=<skill> <page> [[GREEN]]- Bestenlisten
Commands.mcc.Header=---[][[GREEN]]mcMMO Befehle[[RED]][]---
Commands.mcgod=[[GREEN]]- Schalte Godmode um
Commands.mchud.Invalid=Das ist kein g\u00FCltiger HUD Typ.
Commands.mcpurge.Success=[[GREEN]]Die Datenbank wurde erfolgreich ges\u00E4ubert!
Commands.mcrank.Heading=[[GOLD]]-=PERS\u00D6NLICHE STATISTIKEN=-
Commands.mcrank.Overall=Insgesamt[[GREEN]] - [[GOLD]]Rang [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=ZIEL: [[WHITE]]{0}
Commands.mcrank.Skill={0}[[GREEN]] - [[GOLD]]Rang [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]Ohne Rang
Commands.mcrefresh.Success={0}''s Abk\u00FChlzeiten wurden erneuert.
Commands.mcremove.Success=[[GREEN]]{0} wurde erfolgreich von der Datenbank entfernt!
Commands.mctop.Tip=[[GOLD]]Tipp: Benutze [[RED]]/mcrank[[GOLD]] um deine pers\u00F6nlichen Statistiken zu sehen!
Commands.mmoedit=[player] <skill> <newvalue> [[GREEN]] - Ziel modifizieren
Commands.mmoedit.AllSkills.1=[[GREEN]]Dein Level wurde in allen F\u00E4higkeiten zu {0} gesetzt!
Commands.mmoedit.Modified.1=[[GREEN]]Dein Level in {0} wurde zu {1} gesetzt!
Commands.mmoedit.Modified.2={0} wurde bei {1} modifiziert.
Commands.mcconvert.Database.Same=Du benutzt bereits die {0} Datenbank!
Commands.mcconvert.Database.InvalidType={0} ist kein g\u00FCltiger Datenbanktyp.
Commands.mcconvert.Database.Start=[[GRAY]]Beginne Konvertierung von {0} zu {1}...
Commands.mcconvert.Database.Finish=[[GRAY]]Datenbanken Migration vollendet; die {1} Datenbank hat nun alle Daten von der {0} Datenbank.
Commands.mmoshowdb=Die zurzeit verwendete Datenbank ist [[GREEN]]{0}
Commands.mcconvert.Experience.Invalid=Unbekannter Formeltyp! G\u00FCltige Typen sind: [[GREEN]]LINEAR [[RED]]und [[GREEN]]EXPONENTIAL.
Commands.mcconvert.Experience.Same=Formeltyp {0} wird bereits verwendet
Commands.mcconvert.Experience.Start=[[GRAY]]Beginne Konvertierung von Kurve {0} zu Kurve {1}
Commands.mcconvert.Experience.Finish=[[GRAY]]Konvertierung vollendet; jetzt wird die {0} XP Kurve verwendet.
Commands.ModDescription=[[GREEN]]- Kurze Modbeschreibung
Commands.NoConsole=Dieser Befehl kann nicht aus der Konsole verwendet werden.
Commands.Notifications.Off=F\u00E4higkeiten Hinweise wurden [[RED]]deaktiviert
Commands.Notifications.On=F\u00E4higkeiten Hinweise wurden [[GREEN]]aktiviert
Commands.Offline=Dieser Befehl funktioniert nur bei eingeloggten Spielern.
Commands.NotLoaded=Spielerprofil wurde noch nicht geladen.
Commands.Other=---[][[GREEN]]ANDERE BEFEHLE[[RED]][]---
Commands.Party.Header=-----[][[GREEN]]PARTY[[RED]][]-----
Commands.Party.Features.Header=-----[][[GREEN]]FEATURES[[RED]][]-----
Commands.Party.Status=[[DARK_GRAY]]NAME: [[WHITE]]{0} {1} [[DARK_GRAY]]LEVEL: [[DARK_AQUA]]{2}
Commands.Party.Status.Alliance=[[DARK_GRAY]]ALLY: [[WHITE]]{0}
Commands.Party.UnlockedFeatures=[[DARK_GRAY]]Freigeschaltete Features: [[GRAY]][[ITALIC]]{0}
Commands.Party.ShareMode=[[DARK_GRAY]]TEILEN MODUS:
Commands.Party.ItemShare=[[GRAY]]ITEM [[DARK_AQUA]]({0})
Commands.Party.ExpShare=[[GRAY]]EXP [[DARK_AQUA]]({0})
Commands.Party.ItemShareCategories=[[DARK_GRAY]]Teile Items: [[GRAY]][[ITALIC]]{0}
Commands.Party.MembersNear=[[DARK_GRAY]]IN DER N\u00C4HE [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
Commands.Party.Accept=[[GREEN]]- Nimm Party-Einladung an
Commands.Party.Chat.Off=Nur Party Chat [[RED]]Aus
Commands.Party.Chat.On=Nur Party Chat [[GREEN]]AN
Commands.Party.Commands=---[][[GREEN]]PARTY BEFEHLE[[RED]][]---
Commands.Party.Invite.0=ALERT: [[GREEN]]Du hast eine Party Einladung f\u00FCr {0} von {1} erhalten.
Commands.Party.Invite.1=Benutze [[GREEN]]/party accept[[YELLOW]] um die Einladung anzunehmen
Commands.Party.Invite=[[GREEN]]- Sende eine Party Einladung
Commands.Party.Invite.Accepted=[[GREEN]]Einladung angenommen. Du bist der {0} Party beigetreten.
Commands.Party.Join=[[GRAY]]Beigetretene Party: {0}
Commands.Party.Create=[[GRAY]]Erstellte Party: {0}
Commands.Party.Rename=[[GRAY]]Party Name wurde zu: [[WHITE]]{0} [[GRAY]]ge\u00E4ndert
Commands.Party.SetSharing=[[GRAY]]Party {0} teilen: [[DARK_AQUA]]{1}
Commands.Party.ToggleShareCategory=[[GRAY]]Party item Teilen f\u00FCr[[GOLD]]{0} [[GRAY]]wurde [[DARK_AQUA]]{1}
Commands.Party.AlreadyExists=[[DARK_RED]]Party {0} ist bereits vorhanden!
Commands.Party.Kick=Du wurdest von {0} Party entfernt!
Commands.Party.Leave=Du hast die Party verlassen
Commands.Party.Members.Header=-----[][[GREEN]]MITGLIEDER[[RED]][]-----
Commands.Party.None=Du bist in keiner Party.
Commands.Party.Quit=[[GREEN]]- Verlasse deine aktuelle Party.
Commands.Party.Teleport=[[GREEN]]- Teleportiere dich zu Partymitgliedern.
Commands.Party.Toggle=[[GREEN]]- Schalte den Party Chat.
Commands.Party1=[[GREEN]]- Erstelle eine neue Party
Commands.Party2=[[GREEN]]- Tritt der Party eines Spielers bei.
Commands.Party.Alliance.Header=-----[][[GREEN]]PARTY ALLIANZEN[[RED]][]-----
Commands.Party.Alliance.Ally=[[WHITE]]{0} [[DARK_GRAY]]IS MIT FOLGENDEN VERB\u00DCNDET: [[WHITE]]{1}
Commands.Party.Alliance.Members.Header=-----[][[GREEN]]ALLIANZEN MITGLIEDER[[RED]][]-----
Commands.Party.Alliance.Invite.0=ALERT: [[GREEN]]Du hast eine B\u00FCndnis Anfrage f\u00FCr {0} von {1} erhalten
Commands.Party.Alliance.Invite.1=Tippe [[GREEN]]/party alliance accept[[YELLOW]] um die Anfrage anzunehmen
Commands.Party.Alliance.Invite.Accepted=[[GREEN]]B\u00FCndnis Anfrage angenommen
Commands.Party.Alliance.None=Deine Party hat keine Verb\u00FCndeten.
Commands.Party.Alliance.AlreadyAllies=Deine Party ist bereits in einem B\u00FCndnis. Trenne mit[[DARK_AQUA]]/party alliance disband
Commands.Party.Alliance.Help.0=Diese Party ist in keinem B\u00FCndnis. Lade einen Party Anf\u00FChrer an.
Commands.Party.Alliance.Help.1=um zu verb\u00FCnden [[DARK_AQUA]]/party alliance invite <Spieler>[[RED]].
Commands.ptp.Enabled=Party Teleport [[GREEN]]aktiviert
Commands.ptp.Disabled=Party Teleport [[RED]]deaktiviert
Commands.ptp.NoRequests=Du hast aktuell keine teleportanfragen.
Commands.ptp.NoWorldPermissions=[mcMMO] Du hast nicht die Rechte um in die Welt {0} zu teleportieren.
Commands.ptp.Request1={0} [[GREEN]]m\u00F6chte sich zu dir teleportieren.
Commands.ptp.Request2=[[GREEN]]Um zu teleportieren tippe[[YELLOW]]/ptp accept[[GREEN]]. Die Anfrage l\u00E4uft in[[RED]]{0} [[GREEN]]Sekunden aus.
Commands.ptp.AcceptAny.Enabled=Party Teleport Anfragenbest\u00E4tigung[[GREEN]]aktiviert
Commands.ptp.AcceptAny.Disabled=Party Teleport Anfragenbest\u00E4tigung[[RED]]deaktiviert
Commands.ptp.RequestExpired=Party Teleport Anfrage ist ausgelaufen.
Commands.PowerLevel.Leaderboard=--mcMMO[[BLUE]] Power Level [[YELLOW]]Bestenliste--
Commands.PowerLevel.Capped=[[DARK_RED]]GESAMT LEVEL: [[GREEN]]{0} [[DARK_RED]]MAX LEVEL: [[YELLOW]]{1}
Commands.PowerLevel=[[DARK_RED]]GESAMT LEVEL: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]Alles Skilllevel wurden erfolgreich zur\u00FCckgesetzt.
Commands.Reset.Single=[[GREEN]]Dein {0} Skilllevel wurde erfolgreich zur\u00FCckgesetzt.
Commands.Reset=[[GREEN]]- Setze ein Skilllevel auf 0
Commands.Scoreboard.Clear=[[DARK_AQUA]]Die Stats \u00DCbersicht wurde ausgeblendet.
Commands.Scoreboard.NoBoard=Die Stats Anzeige ist nicht sichtbar.
Commands.Scoreboard.Keep=[[DARK_AQUA]]Die Stats \u00DCbersicht bleibt sichtbar bis du [[GREEN]]/mcscoreboard clear[[DARK_AQUA]] verwendest.
Commands.Scoreboard.Timer=[[DARK_AQUA]]Die Stats \u00DCbersicht wird nach [[GOLD]]{0}[[DARK_AQUA]] Sekunden verschwinden.
Commands.Scoreboard.Help.0=[[GOLD]] == [[GREEN]]Hilfe f\u00FCr[[RED]]/mcscoreboard[[GOLD]] ==
Commands.Scoreboard.Help.1=[[DARK_AQUA]]/mcscoreboard[[AQUA]] clear [[WHITE]] - blende die \u00DCbersicht aus
Commands.Scoreboard.Help.2=[[DARK_AQUA]]/mcscoreboard[[AQUA]] keep [[WHITE]] - behalte die \u00DCbersicht offen
Commands.Scoreboard.Help.3=[[DARK_AQUA]]/mcscoreboard[[AQUA]] time [n] [[WHITE]] - blende die \u00DCbersicht nach [[LIGHT_PURPLE]]n[[WHITE]] Sekunden aus
Commands.Scoreboard.Tip.Keep=[[GOLD]]Tipp: Benutze [[RED]]/mcscoreboard keep[[GOLD]] um deine Stats sichtbar zu lassen
Commands.Scoreboard.Tip.Clear=[[GOLD]]Tipp: Benutze [[RED]]/mcscoreboard clear[[GOLD]] um die \u00DCbersicht auszublenden
Commands.Skill.Invalid=Das ist kein g\u00FCltiger Skillname!
Commands.Skill.Leaderboard=--mcMMO [[BLUE]]{0}[[YELLOW]] Bestenliste--
Commands.SkillInfo=[[GREEN]]-Detaillierte Informationen zu einem Skill
Commands.Stats.Self=DEINE STATS
Commands.Stats=[[GREEN]]- Sieh deine McMMO Stats
Commands.ToggleAbility=[[GREEN]]- Schalte auf F\u00E4higkeiten Aktivierung mit Rechtsklick
Commands.Usage.0=Korrekte Verwendung ist /{0}
Commands.Usage.1=Korrekte Verwendung ist /{0} {1}
Commands.Usage.2=Korrekte Verwendung ist /{0} {1} {2}
Commands.Usage.3=Korrekte Verwendung ist /{0} {1} {2} {3}
Commands.Usage.FullClassName=classname
Commands.Usage.Level=Level
Commands.Usage.Message=Message
Commands.Usage.Page=Seite
Commands.Usage.PartyName=Name
Commands.Usage.Password=Passwort
Commands.Usage.Player=Spieler
Commands.Usage.Rate=Eate
Commands.Usage.Skill=Skill
Commands.Usage.XP=xp
mcMMO.NoInvites=Du hast zurzeit keine Einladungen
mcMMO.NoPermission=[[DARK_RED]]Unzureichende Berechtigungen.
mcMMO.NoSkillNote=[[DARK_GRAY]]Wenn du keinen Zugriff auf einen Skill hast wird er hier nicht angezeigt.
##party
Party.Forbidden=[mcMMO] Parties not permitted on this world (See Permissions)
Party.Help.0=Proper usage is [[DARK_AQUA]]{0} <player> [password].
Party.Help.1=To create a party, use [[DARK_AQUA]]{0} <name> [password].
Party.Help.2=Consult [[DARK_AQUA]]{0} [[RED]]for more information
Party.Help.3=Use [[DARK_AQUA]]{0} <player> [password] [[RED]]to join or [[DARK_AQUA]]{1} [[RED]]to quit
Party.Help.4=To lock or unlock your party, use [[DARK_AQUA]]{0}
Party.Help.5=To password protect your party, use [[DARK_AQUA]]{0} <password>
Party.Help.6=To kick a player from your party, use [[DARK_AQUA]]{0} <player>
Party.Help.7=To transfer ownership of your party, use [[DARK_AQUA]]{0} <player>
Party.Help.8=To disband your party, use [[DARK_AQUA]]{0}
Party.Help.9=Use [[DARK_AQUA]]{0} [[RED]]to share items with party members
Party.Help.10=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}
Party.InvalidName=[[DARK_RED]]That is not a valid party name.
Party.Invite.Self=You can't invite yourself!
Party.IsLocked=This party is already locked!
Party.IsntLocked=This party is not locked!
Party.Locked=Party is locked, only party leader may invite.
Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
Party.NotOwner=[[DARK_RED]]You are not the party leader.
Party.Target.NotOwner=[[DARK_RED]]{0} is not the party leader.
Party.Owner.New=[[GREEN]]{0} is the new party leader.
Party.Owner.NotLeader=[[DARK_RED]]You are no longer the party leader.
Party.Owner.Player=[[GREEN]]You are now the party leader.
Party.Password.None=This party is password protected. Please provide a password to join.
Party.Password.Incorrect=Party password is incorrect.
Party.Password.Set=[[GREEN]]Party password set to {0}
Party.Password.Removed=[[GREEN]]Party password has been cleared.
Party.Player.Invalid=That is not a valid player.
Party.NotOnline=[[DARK_RED]]{0} is not online!
Party.Player.InSameParty={0} already is in your party!
Party.PlayerNotInParty=[[DARK_RED]]{0} is not in a party
Party.Specify=You must specify a party.
Party.Teleport.Dead=You can't teleport to a dead player.
Party.Teleport.Hurt=You have been hurt in the last {0} seconds and cannot teleport.
Party.Teleport.Player=[[GREEN]]You have teleported to {0}.
Party.Teleport.Self=You can't teleport to yourself!
Party.Teleport.Target=[[GREEN]]{0} has teleported to you.
Party.Teleport.Disabled={0} doesn't allow party teleportation.
Party.Rename.Same=That is already the name of your party!
Party.Join.Self=You can't join yourself!
Party.Unlocked=[[GRAY]]Party is unlocked
Party.Disband=[[GRAY]]The party has been disbanded
Party.Alliance.Formed=[[GRAY]]Your party is now allies with [[GREEN]]{0}
Party.Alliance.Disband=[[GRAY]]Your party is no longer allies with [[RED]]{0}
Party.Status.Locked=[[DARK_RED]](INVITE-ONLY)
Party.Status.Unlocked=[[DARK_GREEN]](OPEN)
Party.LevelUp=Party level increased by {0}. Total ({1})
Party.Feature.Chat=Party Chat
Party.Feature.Teleport=Party Teleport
Party.Feature.Alliance=Alliances
Party.Feature.ItemShare=Item Sharing
Party.Feature.XpShare=XP Sharing
Party.Feature.Locked.Chat=LOCKED UNTIL {0}+ (PARTY CHAT)
Party.Feature.Locked.Teleport=LOCKED UNTIL {0}+ (PARTY TELEPORT)
Party.Feature.Locked.Alliance=LOCKED UNTIL {0}+ (ALLIANCES)
Party.Feature.Locked.ItemShare=LOCKED UNTIL {0}+ (ITEM SHARING)
Party.Feature.Locked.XpShare=LOCKED UNTIL {0}+ (XP SHARING)
Party.Feature.Disabled.1=Party chat is not unlocked yet.
Party.Feature.Disabled.2=Party teleport is not unlocked yet.
Party.Feature.Disabled.3=Party alliances are not unlocked yet.
Party.Feature.Disabled.4=Party item sharing is not unlocked yet.
Party.Feature.Disabled.5=Party XP sharing is not unlocked yet.
Party.ShareType.Xp=XP
Party.ShareType.Item=ITEM
Party.ShareMode.None=NONE
Party.ShareMode.Equal=EQUAL
Party.ShareMode.Random=RANDOM
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=Fallen
Commands.XPGain.Alchemy=Tr\u00E4nke brauen
Commands.XPGain.Archery=Monster angreifen
Commands.XPGain.Axes=Monster angreifen
Commands.XPGain.Child=Levelerhalt durch Verbesserung der Eltern-Skills
Commands.XPGain.Excavation=Graben und Sch\u00E4tze finden
Commands.XPGain.Fishing=Angeln
Commands.XPGain.Herbalism=Ernten
Commands.XPGain.Mining=Erze und Steine abbauen
Commands.XPGain.Repair=Reparieren
Commands.XPGain.Swords=Monster angreifen
Commands.XPGain.Taming=Monster z\u00E4hmen, mit dem Wolf k\u00E4mpfen
Commands.XPGain.Unarmed=Monster angreifen
Commands.XPGain.Woodcutting=B\u00E4ume f\u00E4llen
Commands.XPGain=[[DARK_GRAY]]XP ZUWACHS: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]Deine XP Anzeige ist nun auf {0} festgesetzt!
Commands.xplock.unlocked=[[GOLD]]Deine XP Anzeige ist nun wieder [[GREEN]]FREIGEGEBEN[[GOLD]]!
Commands.xprate.modified=The XP RATE wurde auf {0} gesetzt!
Commands.xprate.over=Das mcMMO XP Rate Event ist vor\u00fcber!!
Commands.xprate.proper.0=Korrekte Eingabe f\u00fcr XP Rate Wechsel: /xprate <integer> <true/false>
Commands.xprate.proper.1=Korrekte Eingabe f\u00fcr R\u00fccksetzung auf Standard XP Rate: /xprate reset
Commands.xprate.proper.2=Bitte spezifiziere mit true/false ob dies ein XP-Event ist oder nicht.
Commands.xprate.started.0=[[GOLD]]Das XP EVENT f\u00fcr mcMMO hat BEGONNEN!
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
##generic
Effects.Effects=EFFEKTE
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
Guides.Available=[[GRAY]]Anleitung f\u00FCr {0} vorhanden - tippe /{1} ? [Seite]
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Anleitung[[GOLD]]=-
Guides.Page.Invalid=Keine g\u00FCltige Seitenzahl!
Guides.Page.OutOfRange=Es gibt nur insgesamt {0} Seiten.
Guides.Usage=Der Befehl ist /{0} ? [Seite]
##Acrobatics
Guides.Acrobatics.Section.0=[[DARK_AQUA]]\u00DCber Akrobatik:\n[[YELLOW]]Akrobatik ist die Kunst sich grazi\u00F6s fortzubewegen.\n[[YELLOW]]Fall- und Kampfschaden werden reduziert\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]XP sammelst du indem du in K\u00E4mpfen\n[[YELLOW]]ausweichst, oder St\u00FCrze aus gro\u00DFen H\u00F6hen \u00FCberlebst.
Guides.Acrobatics.Section.1=[[DARK_AQUA]]Wie funktioniert Rollen?\n[[YELLOW]]Ab und zu rollst du beim Fallen ab und der Fallschaden wird\n[[YELLOW]]reduziert. Wenn du den Schleichen Knopf w\u00E4hrend dem Fallen\n[[YELLOW]]h\u00E4ltst, verdoppelt sich die Wahrscheinlichkeit abzurollen.\n[[YELLOW]]In dem Fall rollst du grazi\u00F6s ab.\n[[YELLOW]]Grazi\u00F6se Rollen sind gleich wie normale Rollen, nur dass\n[[YELLOW]]sie \u00F6fter passieren und damit mehr Schutz vor St\u00FCrzen\n[[YELLOW]]liefern.
Guides.Acrobatics.Section.2=[[DARK_AQUA]]Wie funktioniert Ausweichen?\n[[YELLOW]]Ausweichen ist eine passive F\u00E4higkeit\n[[YELLOW]]die ab und zu den Schaden in K\u00E4mpfen halbiert.\n[[YELLOW]]Die Wahrscheinlichkeit auszuweichen ist abh\u00E4ngig vom \n[[YELLOW]]Akrobatiklevel.
##Alchemy
Guides.Alchemy.Section.0=[[DARK_AQUA]]\u00DCber Alchemie:\n[[YELLOW]]In Alchemie musst du Tr\u00E4nke brauen.\n[[YELLOW]]Mit h\u00F6herem Level werden die Tr\u00E4nke schneller\n[[YELLOW]]gebraut und neue Zutaten f\u00FCr zun\u00E4chst unerh\u00E4ltliche Tr\u00E4nke \n[[YELLOW]]freigeschaltet.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Tr\u00E4nke brauen.
Guides.Alchemy.Section.1=[[DARK_AQUA]]Wie funktioniert Katalyse?\n[[YELLOW]]Katalyse beschleunigt das Brauen von Tr\u00E4nken bis\n[[YELLOW]]zu 4-facher Geschwindigkeit bei Level 1000.\n[[YELLOW]]
Guides.Alchemy.Section.2=[[DARK_AQUA]]Wie funktioniert Braukunst?\n[[YELLOW]]Braukunst erm\u00F6glich das Brauen weiterer Tr\u00E4nke mit neuen\n[[YELLOW]]Zutaten.\n[[YELLOW]]Welche Zutaten m\u00F6glich sind, h\u00E4ngt vom Rang ab.\n[[YELLOW]]Insgesamt gibt es 8 R\u00E4nge zum freischalten.
Guides.Alchemy.Section.3=[[DARK_AQUA]]Braukunst Tier 1 Zutaten:\n[[YELLOW]]Lohnenstaub, Fermentierte Spinnenaugen, Ghast Tr\u00E4nen,\n[[YELLOW]]Redstone, Glowstonestaub, Zucker, Glitzernde Melone,\n[[YELLOW]]Goldene Karotte, Magma Creme, Netherwarzen, Spinnenaugen, \n[[YELLOW]]Schwarzpulver, Seerose, Kugelfisch (Vanilla Tr\u00E4nke)
Guides.Alchemy.Section.4=[[DARK_AQUA]]Braukunst Tier 2 Zutaten:\n[[YELLOW]]Karotte (Eile)\n[[YELLOW]]Schleimball (Langsamkeit)\n\n[[DARK_AQUA]]Braukunst Tier 3 Zutaten:\n[[YELLOW]]Quarz (Absoption)\n[[YELLOW]]Roter Pilz (Springen)
Guides.Alchemy.Section.5=[[DARK_AQUA]]Braukunst Tier 4 Zutaten:\n[[YELLOW]]Apfel (Gesundheitsboost)\n[[YELLOW]]Verrottetes Fleisch (Hunger)\n\n[[DARK_AQUA]]Braukunst Tier 5 Zutaten:\n[[YELLOW]]Brauner Pilz(\u00DCbelkeit)\n[[YELLOW]]Tintensack (Blindheit)
Guides.Alchemy.Section.6=[[DARK_AQUA]]Braukunst Tier 6 Zutaten:\n[[YELLOW]]Gras (S\u00E4ttigung)\n\n[[DARK_AQUA]]Braukunst Tier 7 Zutaten:\n[[YELLOW]]Giftige Kartoffel(Verwesung)\n\n[[DARK_AQUA]]Braukunst Tier 8 Zutaten:\n[[YELLOW]]Normaler Goldener Apfel (Resistenz)
##Archery
Guides.Archery.Section.0=[[DARK_AQUA]]\u00DCber Bogenschie\u00DFen:\n[[YELLOW]]In Bogenschie\u00DFen geht es um die Verwendung von Pfeil und\n[[YELLOW]]Bogen.\n\n[[YELLOW]]Es gibt unterschiedliche Kampfboni, wie Zusatzschaden,\n[[YELLOW]]der mit dem Level steigt und der F\u00E4higkeit Feinde im PVP\n[[YELLOW]]zu bet\u00E4uben. Zus\u00E4tzlich kannst du einige verschossene\n[[YELLOW]]Pfeile aus den Leichen deiner Feinde wiedergewinnen.
Guides.Archery.Section.1=[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]XP erh\u00E4ltst du durch das Abschie\u00DFen von Monstern und\n[[YELLOW]]anderen Spielern.
Guides.Archery.Section.2=[[DARK_AQUA]]Wie funktioniert der Kunstschuss?\n[[YELLOW]]Kunstschuss erh\u00F6ht den Schaden deines Schusses.\n[[YELLOW]]Der Zusatzschaden steigt mit deinem Bogen Level.\n[[YELLOW]]In den Standardeinstellungen steigt der Schaden um 10%\n[[YELLOW]]alle 50 Level, mit einem Maximum von 200% extra.
Guides.Archery.Section.3=[[DARK_AQUA]]Wie Funktioniert Bet\u00E4ubung?\n[[YELLOW]]Du hast eine passive Wahrscheinlichkeit andere Spieler\n[[YELLOW]]zu bet\u00E4uben wenn du sie anschie\u00DFt. Der Spieler wird\n[[YELLOW]]gezwungen f\u00FCr eine kurze Weile senkrecht nach oben zu\n[[YELLOW]]schauen.\n[[YELLOW]]Ein Bet\u00E4ubungsschuss f\u00FCgt au\u00DFerdem 4 Schadenspunkte \n[[YELLOW]](2 Herzen) extra zu.
Guides.Archery.Section.4=[[DARK_AQUA]]Wie funktioniert die Pfeilr\u00FCckgewinnung?\n[[YELLOW]]Du hast eine passive Wahrscheinlichkeit einige Pfeile\n[[YELLOW]]zur\u00FCckzubekommen wenn du Monster mit dem Bogen t\u00F6test.\n[[YELLOW]]Die Wahrscheinlichkeit steigt mit dem Bogen Level.\n[[YELLOW]]Standardm\u00E4\u00DFig steigt diese F\u00E4higkeit um 0.1% pro Level, bis\n[[YELLOW]]100% bei Level 1000.
##Axes
Guides.Axes.Section.0=[[DARK_AQUA]]\u00DCber Axt:\n[[YELLOW]]Mit dem Axt Skill kannst du die Axt f\u00FCr viel mehr als\n[[YELLOW]]nur abholzen verwenden! Du kannst Monster und Spieler\n[[YELLOW]]sprichw\u00F6rtlich weghacken und ihnen t\u00F6dliche\n[[YELLOW]]Schl\u00E4ge verpassen oder sie zur\u00FCckweichen lassen\n[[YELLOW]]Deine Axt zerst\u00F6rt au\u00DFerdem sehr gut R\u00FCstungen,\n[[YELLOW]]was mit h\u00F6herem Level noch mehr ansteigt.
Guides.Axes.Section.1=[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Um XP zu bekommen musst du Spieler oder Monster \n[[YELLOW]]mit einer Axt schlagen.
Guides.Axes.Section.2=[[DARK_AQUA]]Wie funktioniert der Sch\u00E4delspalter?\n[[YELLOW]]Diese F\u00E4higkeit erlaubt dir einen Angriff mit Fl\u00E4chenschaden\n[[YELLOW]]auszuf\u00FChren.\n[[YELLOW]]Der Fl\u00E4chenschaden ist halb so gro\u00DF wie der \n[[YELLOW]]Hauptangriff, also perfekt f\u00FCr gro\u00DFe Ansammlungen von Mobs.
Guides.Axes.Section.3=[[DARK_AQUA]]Wie funktionieren kritische Treffer?\n[[YELLOW]]Kritische Treffer sind eine passive F\u00E4higkeit\n[[YELLOW]]die ab und zu Zusatzschaden zuf\u00FCgen.\n[[YELLOW]]In den Standardeinstellungen wird alle 2 Level \n[[YELLOW]]die Wahrscheinlichkeit um 0.1% erh\u00F6ht. Das f\u00FCgt Mobs\n[[YELLOW]]doppelten und anderen Spielern 1,5 fachen Schaden zu.
Guides.Axes.Section.4=[[DARK_AQUA]]Wie funktioniert die Axt-Beherrschung?\n[[YELLOW]]Axt Beherrschung ist eine passive F\u00E4higkeit die deinen\n[[YELLOW]]Axt-Schl\u00E4gen Zusatzschaden hinzuf\u00FCgt.\n[[YELLOW]]Standardm\u00E4\u00DFig steigt der Schaden um 1 alle 50 Level,\n[[YELLOW]]maximal auf 4 Extraschaden bei Level 200.
Guides.Axes.Section.5=[[DARK_AQUA]]Wie funktioniert Wucht?\n[[YELLOW]]Schlage m\u00E4chtig zu und zerst\u00F6re R\u00FCstungen!\n[[YELLOW]]Wucht hat eine passive Wahrscheinlichkeit gegnerische\n[[YELLOW]]R\u00FCstung zu besch\u00E4digen. Dieser Schaden steigt mit deinem Axt\n[[YELLOW]]Level.
Guides.Axes.Section.6=[[DARK_AQUA]]Wie funktioniert der Wucht-Schlag?\n[[YELLOW]]Du hast eine passive Chance Monster und\n[[YELLOW]]Spieler beim Schlag zur\u00FCckweichen zu lassen\n[[YELLOW]]Standardm\u00E4\u00DFig ist die Wahrscheinlichkeit 25%\n[[YELLOW]]Zus\u00E4tzlich f\u00FCgst du Zusatzschaden zu.
##Excavation
Guides.Excavation.Section.0=[[DARK_AQUA]]\u00DCber Graben:\n[[YELLOW]]Graben ist die F\u00E4higkeit Sch\u00E4tze im Dreck zu finden.\n[[YELLOW]]Durch Aufgraben des Landes wirst du Sch\u00E4tze finden\n[[YELLOW]]Je l\u00E4nger du das tust, desto mehr Sch\u00E4tze findest du.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]XP erh\u00E4ltst du durch Schaufeln.\n[[YELLOW]]Nur bestimmte Materialen geben XP und Sch\u00E4tze.
Guides.Excavation.Section.1=[[DARK_AQUA]]Kompatible Materialien:\n[[YELLOW]]Gras, Erde, Sand, Lehm, Kies, Myzel, Seelensand, Schnee
Guides.Excavation.Section.2=[[DARK_AQUA]]Wie funktioniert der Giga Bohrer?\n[[YELLOW]]Halte eine Schaufel in der Hand und mach Rechtsklick.\n[[YELLOW]]Von nun an hast du ca. 4 Sekunden um einen kompatiblem\n[[YELLOW]]Block abzubauen.\n[[YELLOW]]Daraufhin wird der Giga Bohrer aktiviert.
Guides.Excavation.Section.3=[[DARK_AQUA]]Was ist der Giga Bohrer?\n[[YELLOW]]Giga Bohrer ist eine F\u00E4higkeit deren Dauer vom Graben Skill\n[[YELLOW]]abh\u00E4ngt.\n[[YELLOW]]Es verdreifacht die Wahrscheinlichkeit Sch\u00E4tze zu finden\n[[YELLOW]]und erm\u00F6glicht sofortiges Abbauen kompatibler Materialien.
Guides.Excavation.Section.4=[[DARK_AQUA]]Wie funktioniert der Schatz J\u00E4ger?\n[[YELLOW]]Jeder m\u00F6gliche Schatz hat seine eigene Level Voraussetzung\n[[YELLOW]]um zu erscheinen, folglich ist es schwer[[YELLOW]]zu sagen inwiefern es \n[[YELLOW]]dir hilft ein höheres Level zu haben.\n[[YELLOW]]Je h\u00F6her das Level, desto mehr Sch\u00E4tze k\u00F6nnen gefunden\n[[YELLOW]]werden.
Guides.Excavation.Section.5=Beachte au\u00DFerdem, dass jedes kompatible Material seine\n[[YELLOW]]eigenen einzigartigen Sch\u00E4tze hat.\n[[YELLOW]]Anders ausgedr\u00FCckt: Sch\u00E4tze die du in Kies findest\n[[YELLOW]]gibt es nicht zwingend in Erde.
Guides.Excavation.Section.6=[[DARK_AQUA]]Bemerkung zu Graben:\n[[YELLOW]]Graben Drops sind vollkommen anpassbar\n[[YELLOW]]Ergebnisse unterscheiden sich deshalb von Server zu Server.
##Fishing
Guides.Fishing.Section.0=[[DARK_AQUA]]\u00DCber Angeln:\n[[YELLOW]]Mit dem Angeln Skill ist Angeln wieder aufregend!\n[[YELLOW]]Finde versteckte Sch\u00E4tze oder Rei\u00DFe Items von Monstern.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Fang Fische.
Guides.Fishing.Section.1=[[DARK_AQUA]]Wie funktioniert der Schatz J\u00E4ger?\n[[YELLOW]]Mit dieser F\u00E4higkeit kannst du beim Angeln Sch\u00E4tze finden.\n[[YELLOW]]Diese k\u00F6nnen sogar verzaubert sein!\n[[YELLOW]]Jeder m\u00F6gliche Schatz kann mit jedem Level gefunden\n[[YELLOW]]werden. Die H\u00E4ufigkeit h\u00E4ngt von dem Wert des Items ab.\n[[YELLOW]]Je h\u00F6her der Angeln Skill ist, desto einfacher wird es\n[[YELLOW]]wertvolle Sch\u00E4tze zu finden.
Guides.Fishing.Section.2=[[DARK_AQUA]]Wie funktioniert Eisangeln?\n[[YELLOW]]Mit dieser F\u00E4higkeit kannst du in Eisseen angeln!\n[[YELLOW]]Wirf deine Angeln in einem Eissee aus\n[[YELLOW]]um ein kleines Loch zum Angeln zu erstellen.
Guides.Fishing.Section.3=[[DARK_AQUA]]Wie funktioniert die Profiangel?\n[[YELLOW]]Mit dieser passiven F\u00E4higkeit bei\u00DFen mehr Fische an.\n[[YELLOW]]Sobald die F\u00E4higkeit freigeschaltet ist bringt das Angeln\n[[YELLOW]]in einem Boot oder Ozean die doppelte \n[[YELLOW]]Anbei\u00DFwahrscheinlichkeit.
Guides.Fishing.Section.4=[[DARK_AQUA]]Wie funktioniert Rei\u00DFen?\n[[YELLOW]]Diese F\u00E4higkeit erm\u00F6glich es Monstern Items zu entrei\u00DFen,\n[[YELLOW]]indem du sie an deine Angel h\u00E4ngst. \n[[YELLOW]]Die Monster lassen das Item, das sie normalerweise beim Tod\n[[YELLOW]]fallen lassen fallen.\n[[YELLOW]]Au\u00DFerdem gibt es eine kleine Wahrscheinlichkeit Monstersch\u00E4del\n[[YELLOW]]zu bekommen.
Guides.Fishing.Section.5=[[DARK_AQUA]]Wie funktioniert die Fischer-Mahlzeit?\n[[YELLOW]]Du wirst beim Essen von Fisch besser satt.
Guides.Fishing.Section.6=[[DARK_AQUA]]Bemerkung zum Angeln:\n[[YELLOW]]Angeln Drops sind vollkommen anpassbar.\n[[YELLOW]]Ergebnisse unterscheiden sich deshalb von Server zu Server.
##Herbalism
Guides.Herbalism.Section.0=[[DARK_AQUA]]\u00DCber Pflanzenkunde\n[[YELLOW]]In Pflanzenkunde geht es um das Ernten.\n\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Ernte Pflanzen.
Guides.Herbalism.Section.1=[[DARK_AQUA]]Kompatible Blocks\n[[YELLOW]]Weizen, Kartoffeln, Karotten, Melonen, K\u00FCrbisse,\n[[YELLOW]]Zuckerrohr, Kakaobohnen, Blumen, Kakteen,\n[[YELLOW]]Pilze, Netherwarzen, Seerosen und Ranken.
Guides.Herbalism.Section.2=[[DARK_AQUA]]Wie funktioniert Gr\u00FCnes Land?\n[[YELLOW]]Gr\u00FCnes Land ist eine aktive F\u00E4higkeit die du aktivierst indem du\n[[YELLOW]]mit einer Harke in der Hand rechtsklickst.\n[[YELLOW]]Gr\u00FCnes Land erm\u00f6glicht einen 3-fachen Ertrag beim Ernten.\n[[YELLOW]]Au\u00DFerdem erm\u00F6glich es Leben in zu hauchen und sie\n[[YELLOW]]mithilfe von Samen aus dem Inventar zu verwandeln.
Guides.Herbalism.Section.3=[[DARK_AQUA]]Wie funktioniert der Gr\u00FCne Daumen (Samen)?\n[[YELLOW]]Diese passive F\u00E4higkeit pflanz automatisch beim Ernten nach.\n[[YELLOW]]Der Erfolg h\u00E4ngt vom Pflanzenkunde Level ab.
Guides.Herbalism.Section.4=[[DARK_AQUA]]Wie funktioniert der Gr\u00FCne Daumen(Blocks)?\n[[YELLOW]]Diese aktive F\u00E4higkeit erm\u00F6glich es Bl\u00F6cke in ihre \n[[YELLOW]]"Naturverwandte" Form zu verwandeln. Klicke dazu mit der\n[[YELLOW]]rechten Maustaste auf einen Block, w\u00E4hrend du Samen in\n[[YELLOW]]der Hand h\u00E4ltst. \n[[YELLOW]]Pro Versuch kostet es dich einen Samen.\n[[YELLOW]]Der Erfolg h\u00E4ngt vom Pflanzenkunde Level ab.
Guides.Herbalism.Section.5=[[DARK_AQUA]]Wie funktioniert das Bauernfr\u00FChst\u00FCck?\n[[YELLOW]]Du wirst beim Essen von Brot, Keksen, Melonen, Pilzsuppe,\n[[YELLOW]]Karotten und Kartoffeln satter.
Guides.Herbalism.Section.6=[[DARK_AQUA]]Wie funktioniert Hylians Gl\u00FCck?\n[[YELLOW]]Diese passive F\u00E4higkeit gibt dir eine Chance Items zu finden\n[[YELLOW]]wenn du bestimmte Bl\u00F6cke mit dem Schwert abbaust.
Guides.Herbalism.Section.7=[[DARK_AQUA]]Wie funktionieren Doppeldrops?\n[[YELLOW]]Du erh\u00E4ltst beim Ernten mehr Ertrag.
##Mining
Guides.Mining.Section.0=[[DARK_AQUA]]\u00DCber Bergbau:\n[[YELLOW]]Im Bergbau musst du Steine und Erze sammeln. Du erh\u00E4ltst\n[[YELLOW]]ab und zu zus\u00E4tzliche Drops.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Um Erfahrung zu sammeln musst du mit der Spitzhacke abbauen.\n[[YELLOW]]Nur bestimmte Blocks geben XP.
Guides.Mining.Section.1=[[DARK_AQUA]]Kompatible Materialien:\n[[YELLOW]]Stein, Kohleerz, Eisenerz, Golderz, Diamanterz, Redstoneerz,\n[[YELLOW]]Lapiserz, Obsidian, Bemooster Bruchstein, Endstein,\n[[YELLOW]]Glowstone, und Netherrack.
Guides.Mining.Section.2=[[DARK_AQUA]]Wie funktioniert Super-Brecher?:\n[[YELLOW]]Mache einen Rechtsklick w\u00E4hrend du eine Spitzhacke in der\n[[YELLOW]]Hand h\u00E4ltst.\n[[YELLOW]]Von nun an hast du ungef\u00E4hr 4 Sekunden um ein mit Bergbau\n[[YELLOW]]kompatibles Material abzubauen, daraufhin wird Super-Brecher\n[[YELLOW]]aktiviert.
Guides.Mining.Section.3=[[DARK_AQUA]]Was ist Super-Brecher?\n[[YELLOW]]Super-Brecher ist eine F\u00E4higkeit deren Dauer\n[[YELLOW]]vom Bergbau Skill abh\u00E4ngt. Es verdreifacht die \n[[YELLOW]]Wahrscheinlichkeit Sch\u00E4tze zu finden und erm\u00F6glicht\n[[YELLOW]]sofortiges Abbauen kompatibler Materialien.
Guides.Mining.Section.4=[[DARK_AQUA]]Wie benutzt man Z\u00FCndstoff?:\n[[YELLOW]]Halte ein Feuerzeug in der Hand, b\u00FCck dich und klicke aus\n[[YELLOW]]sicherer Entfernung mit der rechten Maustaste auf das TNT.\n[[YELLOW]]Das TNT wird sofort explodieren.
Guides.Mining.Section.5=[[DARK_AQUA]]Wie funktioniert Z\u00FCndstoff?\n[[YELLOW]]Z\u00FCndstoff ist eine F\u00E4higkeit mit einer Abklingzeit, deren St\u00E4rke\n[[YELLOW]]vom Level abh\u00E4ngt. Sie erlaubt dir beim Abbauen mit TNT dieses\n[[YELLOW]]aus der Ferne zu z\u00FCnden. Z\u00FCndstoff besteht aus 3 Teilen.\n[[YELLOW]]Erstens dem Sprengmeister mit gr\u00F6\u00DFeren Explosionen\n[[YELLOW]]Zweitens dem Explosions-Experten, der Schaden von TNT\n[[YELLOW]]reduziert.\n[[YELLOW]]Die dritte F\u00E4higkeit erh\u00F6ht einfach den Erzertrag und\n[[YELLOW]]und reduziert den Schutt.
##Repair
Guides.Repair.Section.0=[[DARK_AQUA]]\u00DCber Reparatur:\n[[YELLOW]]Reparatur erlaub dir an einem Eisenblock Werkzeuge und\n[[YELLOW]]Waffen zu reparieren.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Repariere Werkzeuge am Eisenblockamboss\n[[RED]]Achtung: [[YELLOW]]Das ist nicht der normale Minecraft Amboss!
Guides.Repair.Section.1=[[DARK_AQUA]]Wie kann ich Reparatur verwenden?\n[[YELLOW]]Platziere einen mcMMO Amboss, halte das zu reparierende Item\n[[YELLOW]]in der Hand und klicke mit der rechten Maustaste auf ihn. Zum\n[[YELLOW]]Reparieren benötigst du die Ausgangsmaterialien im Inventar,\n[[YELLOW]]diese werden dir im Zuge der Reparatur abgezogen.
Guides.Repair.Section.2=[[DARK_AQUA]]Wie funktioniert der Reparatur Meister?\n[[YELLOW]]Mit dem Reparatur Meister wird dein Werkzeug ein bisschen\n[[YELLOW]]besser als normalerweise repariert.\n[[YELLOW]]Der Bonus ist abh\u00E4ngig vom Reparatur Level.
Guides.Repair.Section.3=[[DARK_AQUA]]Wie funktioniert Super Reparatur?\n[[YELLOW]]Mit Super Reparatur werden ab und zu deine Items\n[[YELLOW]]doppelt so gut repariert.
Guides.Repair.Section.4=[[DARK_AQUA]]Wie funktioniert Arkanes Schmieden?\n[[YELLOW]]Diese F\u00E4higkeit erm\u00F6glicht dir mit einer gewissen\n[[YELLOW]]Wahrscheinlichkeit Verzauberungen auf Items zu erhalten.\n[[YELLOW]]Verzauberungen k\u00F6nnen erhalten, vermindert werden oder\n[[YELLOW]]ganz verloren gehen.
##Salvage
Guides.Salvage.Section.0=[[DARK_AQUA]]\u00DCber Verwerten:\n[[YELLOW]]Mit einem Goldamboss kannst du R\u00FCstungen und\n[[YELLOW]]Werkzeuge verwerten.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Verwerten ist ein vom Angeln und Reparieren abh\u00E4ngiger Skill\n[[YELLOW]]Sein Level ist die H\u00E4lfte von deren Summe.
Guides.Salvage.Section.1=[[DARK_AQUA]]Wie funktioniert Verwerten?\n[[YELLOW]]Platziere einen Goldamboss und rechtsklicke mit dem Item in\n[[YELLOW]]der Hand. Das item wird zerst\u00F6rt und in seine\n[[YELLOW]]Bestandteile zerlegt.\n\n[[YELLOW]]Beispielsweise gibt eine Eisenaxt Eisenbarren.
Guides.Salvage.Section.2=[[DARK_AQUA]]Wie funktioniert Fortgeschrittenes Verwerten?\n[[YELLOW]]Sobald freigeschaltet, kannst du besch\u00E4digte Items verwerten.\n[[YELLOW]]Der Ertrag steigt mit dem Level.\n[[YELLOW]]Der Mindestertrag ist immer 1 Item, ansonsten kannst du nicht\n[[YELLOW]]verwerten.
Guides.Salvage.Section.3=[[DARK_AQUA]]Zur Verbildlichung ein Beispiel:\n[[YELLOW]]Sagen wir verwerten eine Goldene Spitzhacke mit 80%\n[[YELLOW]]Haltbarkeit, bedeutet das, dass wir nur 2 Gold bekommen\n[[YELLOW]]k\u00F6nnen (Spitzhacke=3 Goldbarren, also jeder 33,33%\n[[YELLOW]]Haltbarkeit) was 66% entspricht. Wenn dein\n[[YELLOW]]Ertragsprozentsatz unter 66% liegt wirst du keine 2 Barren\n[[YELLOW]]bekommen k\u00F6nnen. Wenn sie dar\u00FCber ist, kannst du den\n[[YELLOW]]"gesamten Betrag" bekommen, der aus 2 Eisenbarren besteht.
Guides.Salvage.Section.4=[[DARK_AQUA]]Wie funktioniert Arkanes Verwerten?\n[[YELLOW]]Diese F\u00E4higkeit erm\u00F6glicht es verzauberte B\u00FCcher beim\n[[YELLOW]]Verwerten von verzauberten Items zu bekommen.\n[[YELLOW]]Verzauberungen k\u00F6nnen vollkommen oder teilweise extrahiert\n[[YELLOW]]werden.\n[[YELLOW]]Bei einer teilweisen Extraktion wird das Verzauberungslevel\n[[YELLOW]]reduziert.
##Smelting
Guides.Smelting.Section.0=Kommt irgendwann mal...
Guides.Smelting.Section.1=Immer noch hier?
##Swords
Guides.Swords.Section.0=[[DARK_AQUA]]\u00DCber Schwerter:\n[[YELLOW]]Diese F\u00E4higkeit gibt Kampfboni bei Benutzung\n[[YELLOW]]des Schwertes.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Verletze Monster und Spieler mit dem Schwert.
Guides.Swords.Section.1=[[DARK_AQUA]]Wie funktioniert der S\u00E4gezahnschlag??\n[[YELLOW]]S\u00E4gezahnschlag ist eine aktive F\u00E4higkeit die du mit Rechtsklick \n[[YELLOW]]aktivierst.\n[[YELLOW]]Mit dieser F\u00E4higkeit kannst du Fl\u00E4chenschaden verteilen. \n[[YELLOW]]Au\u00DFerdem blutet das Ziel f\u00FCr kurze Zeit.
Guides.Swords.Section.2=[[DARK_AQUA]]Wie funktioniert der Gegenangriff?\n[[YELLOW]]Gegenangriff ist eine aktive F\u00E4higkeit,\n[[YELLOW]]bei der Angriffe von Monstern beim Blocken um bis zu 50%\n[[YELLOW]]des erhaltenen Schadens reflektiert werden k\u00F6nnen.
Guides.Swords.Section.3=[[DARK_AQUA]]Wie funktioniert Blutung?\n[[YELLOW]]Blutung f\u00FCgt den Gegnern alle 2 Sekunden Schaden zu. Das\n[[YELLOW]]Bluten geht solange bis die F\u00E4higkeit ausl\u00E4uft oder der\n[[YELLOW]]Gegner stirbt.\n[[YELLOW]]Die Dauer der Blutung erh\u00F6ht sich mit dem Schwert Skill.
##Taming
Guides.Taming.Section.0=[[DARK_AQUA]]\u00DCber Z\u00E4hmen:\n[[YELLOW]]Z\u00E4hmen gibt dem Spieler diverse Kampfboni beim Kampf mit\n[[YELLOW]]gez\u00E4hmten W\u00F6lfen.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Um XP zu bekommen musst du Tiere z\u00E4hmen oder mit\n[[YELLOW]]deinen W\u00F6lfen k\u00E4mpfen.
Guides.Taming.Section.1=[[DARK_AQUA]]Wie funktioniert Ruf der Wildnis?\n[[YELLOW]]Ruf der Wildnis ist eine aktive F\u00E4higkeit die dir erlaubt\n[[YELLOW]]einen Wolf, einen Ozelot oder ein Pferd an deine Seite zu\n[[YELLOW]]rufen. \n[[YELLOW]]Das tust du, indem du Linksklickst w\u00E4hrend du Knochen, Fisch\n[[YELLOW]]oder \u00C4pfel in der Hand h\u00E4ltst.
Guides.Taming.Section.2=[[DARK_AQUA]]Wie funktioniert Bestienkunde?\n[[YELLOW]]Bestienkunde erlaubt es die Haustiere zu inspizieren\n[[YELLOW]]Halte einen Knochen in der Hand und klick mit linker Maustaste\n[[YELLOW]]auf das Haustier um Bestienkunde zu aktivieren.
Guides.Taming.Section.3=[[DARK_AQUA]]Wie funktioniert Aufschlitzen?\n[[YELLOW]]Aufschlitzen ist eine passive F\u00E4higkeit die beim Ziel\n[[YELLOW]]des Wolfes Blutungen hervorrufen kann. Der Erfolg h\u00E4ngt\n[[YELLOW]]vom Z\u00E4hmen Level ab.
Guides.Taming.Section.4=[[DARK_AQUA]]Wie funktionieren gesch\u00E4rfte Klauen?\n[[YELLOW]]Gesch\u00E4rfte Klauen geben Zusatzschaden in Abh\u00E4ngigkeit\n[[YELLOW]]vom Z\u00E4hmen Level.
Guides.Taming.Section.5=[[DARK_AQUA]]Wie funktioniert Umweltbewusst?\n[[YELLOW]]Diese passive F\u00E4higkeit erm\u00F6glich W\u00F6lfen sich zu dir zu\n[[YELLOW]]teleportieren wenn sie in die N\u00E4he von Gefahren wie \n[[YELLOW]]Kakteen/Lava kommen. \n[[YELLOW]]Zus\u00E4tzlich sind W\u00F6lfe immun gegen Fallschaden.
Guides.Taming.Section.6=[[DARK_AQUA]]Wie funktioniert Dicker Pelz?\n[[YELLOW]]Diese passive F\u00E4higkeit reduziert Schaden und \n[[YELLOW]]macht W\u00F6lfe feuerresistent.
Guides.Taming.Section.7=[[DARK_AQUA]]Wie funktioniert Schocksicher?\n[[YELLOW]]Diese passive F\u00E4higkeit reduziert den Schaden\n[[YELLOW]]durch Explosionen.
Guides.Taming.Section.8=[[DARK_AQUA]]Wie funktioniert Schnell-Imbiss?\n[[YELLOW]]Diese passive F\u00E4higkeit gibt dem Wolf eine Chance sich zu \n[[YELLOW]]erholen wann immer er einen Gegner verletzt.
##Unarmed
Guides.Unarmed.Section.0=[[DARK_AQUA]]\u00DCber Unbewaffnet:\n[[YELLOW]]Mit Unbewaffnet kann der echte Mann endlich mit seinen\n[[YELLOW]]F\u00E4usten angemessen zuschlagen. \n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]K\u00E4mpfe unbewaffnet gegen Monster und andere Spieler
Guides.Unarmed.Section.1=[[DARK_AQUA]]Wie funktioniert Berserker?\n[[YELLOW]]Berserker ist eine aktive F\u00E4higkeit die mit Rechtsklick\n[[YELLOW]]aktiviert wird.\n[[YELLOW]]Im Berserker Modus f\u00FCgst du 50% mehr Schaden zu und\n[[YELLOW]]kannst weiche Materiale wie Gras und Erde sofort abbauen.
Guides.Unarmed.Section.2=[[DARK_AQUA]]Wie funktioniert der Eiserne Arm?\n[[YELLOW]]Eiserner Arm erh\u00F6ht den Monstern und Spielern mit den\n[[YELLOW]]F\u00E4usten zugef\u00FCgten Schaden.
Guides.Unarmed.Section.3=[[DARK_AQUA]]Wie funktioniert Pfeilablenkung?\n[[YELLOW]]Pfeilablenkung ist eine passive F\u00E4higkeit die ab und zu\n[[YELLOW]]Pfeile von Skeletten und angreifenden Spielern ablenkt.\n[[YELLOW]]Diese Pfeile prallen einfach ab und fallen auf den Boden.
Guides.Unarmed.Section.4=[[DARK_AQUA]]Wie funktioniert der Eiserne Griff?\n[[YELLOW]]Eiserner Griff ist eine passive F\u00E4higkeit die Entwaffnung\n[[YELLOW]]verhindert. Mit h\u00F6herem Level ist es umso einfacher\n[[YELLOW]]Entwaffnung zu verhindern.
Guides.Unarmed.Section.5=[[DARK_AQUA]]Wie funktioniert Entwaffnen?\n[[YELLOW]]Diese passive F\u00E4higkeit erm\u00F6glich es den Gegner zu\n[[YELLOW]]entwaffnen, sodass seine Waffe auf den Boden f\u00E4llt.
##Woodcutting
Guides.Woodcutting.Section.0=[[DARK_AQUA]]\u00DCber Holzf\u00E4ller:\n[[YELLOW]]Im Holzf\u00E4llen geht es um das F\u00E4llen von B\u00E4umen.\n\n[[DARK_AQUA]]XP ZUWACHS:\n[[YELLOW]]Du kriegst XP f\u00FCr das abholzen von Baumst\u00E4mmen.
Guides.Woodcutting.Section.1=[[DARK_AQUA]]Wie funktioniert der Baumf\u00E4ller?\n[[YELLOW]]Baumf\u00E4ller ist eine aktive F\u00E4higkeit. Mache mit der Axt in der\n[[YELLOW]]Hand einen Rechtsklick um sie zu aktivieren. Der Baum\n[[YELLOW]]wird sofortig gef\u00E4llt und alle St\u00E4mme abgebaut.
Guides.Woodcutting.Section.2=[[DARK_AQUA]]Wie funktioniert Bl\u00E4ttersturm?\n[[YELLOW]]Bl\u00E4ttersturm ist eine passive F\u00E4higkeit die Bl\u00E4tter\n[[YELLOW]]bei Ber\u00FChrung mit der Axt sofortig bricht. Standardm\u00E4\u00DFig\n[[YELLOW]]wird diese F\u00E4higkeit bei Level 100 freigeschaltet.
Guides.Woodcutting.Section.3=[[DARK_AQUA]]Wie funktionieren Doppel-Drops?\n[[YELLOW]]Diese passive F\u00E4higkeit gibt dir ab und zu doppelten\n[[YELLOW]]Ertrag f\u00FCr jeden Stamm den du f\u00E4llst.
#INSPECT
Inspect.Offline=[[RED]]Du hast nicht die Rechte um offline Spieler zu inspizieren!
Inspect.OfflineStats=mcMMO Stats f\u00FCr Offline Spieler [[YELLOW]]{0}
Inspect.Stats=[[GREEN]]mcMMO Stats f\u00FCr [[YELLOW]]{0}
Inspect.TooFar=Du bist zu weit entfernt um den Spieler zu inspizieren!
#ITEMS
Item.ChimaeraWing.Fail=**CHIMAERA FL\u00DCGEL GESCHEITERT!**
Item.ChimaeraWing.Pass=**CHIMAERA FL\u00DCGEL*
Item.ChimaeraWing.Name=Chimaera Fl\u00FCgel
Item.ChimaeraWing.Lore=[[GRAY]]Teleportiert dich zu deinem Bett.
Item.Generic.Wait=Du musst warten bis du das wieder verwenden kannst! [[YELLOW]]({0}s)
Item.Injured.Wait=Du wurdest vor kurzem verletzt und musst warten bis du das verwenden kannst. [[YELLOW]]({0}s)
Item.FluxPickaxe.Name=Flux Spitzhacke
Item.FluxPickaxe.Lore.1=[[GRAY]]Hat eine Wahrscheinlichkeit Erze sofort zu schmelzen.
Item.FluxPickaxe.Lore.2=[[GRAY]]Ben\u00F6tigt Schmelzen Level {0}+
#TELEPORTATION
Teleport.Commencing=[[GRAY]]Beginne Teleport in [[GOLD]]({0}) [[GRAY]]Sekunden, bitte stillhalten...
Teleport.Cancelled=[[DARK_RED]]Teleport abgebrochen!
#SKILLS
Skills.Child=[[GOLD]](VERWANDTER SKILL)
Skills.Disarmed=[[DARK_RED]]Du wurdest entwaffnet!
Skills.Header=-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Du brauchst mehr[[GRAY]]{0}
Skills.Parents=ELTERN
Skills.Stats={0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.ChildStats={0}[[GREEN]]{1}
Skills.TooTired=Du bist zu m\u00FCde um diese F\u00E4higkeit zu verwenden. [[YELLOW]]({0}s)
Skills.Cancelled={0} abgebrochen!
Skills.ConfirmOrCancel=[[GREEN]]Erneuter Rechtsklick zur Best\u00E4tigung [[GOLD]]{0}[[GREEN]]. Linksklick zum abbrechen.
#STATISTICS
Stats.Header.Combat=[[GOLD]]-=KAMPFSKILLS=-
Stats.Header.Gathering=[[GOLD]]-=SAMMELSKILLS=-
Stats.Header.Misc=[[GOLD]]-=DIV.SKILLS=-
Stats.Own.Stats=[[GREEN]][mcMMO] Stats
#PERKS
Perks.XP.Name=Erfahrung
Perks.XP.Desc=Erhalte mehr Erfahrung in bestimmen Skills.
Perks.Lucky.Name=Gl\u00FCck
Perks.Lucky.Desc={0} Skills und F\u00E4higkeiten werden um 33.3% \u00F6fter aktiviert.
Perks.Lucky.Desc.Login=Bestimmte Skills und F\u00E4higkeiten werden um 33.3% \u00F6fter aktiviert.
Perks.Lucky.Bonus=[[GOLD]] ({0} mit Gl\u00FCcksbonus)
Perks.Cooldowns.Name=Schnelle Erholung
Perks.Cooldowns.Desc=Verk\u00FCrzt die Abklingzeit um {0}.
Perks.ActivationTime.Name=Ausdauer
Perks.ActivationTime.Desc=Erh\u00F6ht die F\u00E4higkeitszeit um {0} Sekunden.
Perks.ActivationTime.Bonus=[[GOLD]] ({0}s mit Ausdauer Bonus)
#HARDCORE
Hardcore.Mode.Disabled=[[GOLD]][mcMMO] Hardcore Modus {0} deaktiviert f\u00FCr {1}.
Hardcore.Mode.Enabled=[[GOLD]][mcMMO] Hardcore Modus {0} aktiviert f\u00FCr {1}.
Hardcore.DeathStatLoss.Name=Skillverlust bei Tod:
Hardcore.DeathStatLoss.PlayerDeath=[[GOLD]][mcMMO] [[DARK_RED]]Du hast durch den Tod[[BLUE]]{0}[[DARK_RED]] Level verloren.
Hardcore.DeathStatLoss.PercentageChanged=[[GOLD]][mcMMO] Der Verlustprozentsatz wurde auf {0} ge\u00E4ndert.
Hardcore.Vampirism.Name=Vampirismus
Hardcore.Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] war nicht erfahren genug um dir Wissen zu hinterlassen.
Hardcore.Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]Du hast [[BLUE]]{0}[[DARK_AQUA]] Level von [[YELLOW]]{1} [[DARK_AQUA]] gestohlen.
Hardcore.Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] hat es nicht geschafft Wissen von dir zu stehlen!
Hardcore.Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]] hat[[BLUE]]{1}[[DARK_RED]] Level von dir gestohlen!
Hardcore.Vampirism.PercentageChanged=[[GOLD]][mcMMO] Der Vampirismus Prozentsatz wurde auf {0} ge\u00E4ndert.
#MOTD
MOTD.Donate=[[DARK_AQUA]]Spenden Info:
MOTD.Hardcore.Enabled=[[GOLD]][mcMMO] [[DARK_AQUA]]Hardcore Modus aktiviert: [[DARK_RED]]{0}
MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Skillverlust bei Tod: [[DARK_RED]]{0}%
MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Vampirismus Prozentsatz: [[DARK_RED]]{0}%
MOTD.PerksPrefix=[mcMMO Boni]
MOTD.Version=[[GOLD]][mcMMO] Verwende Version[[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO Webseite
#SMELTING
Smelting.Ability.FluxMining=Schmelztiegel: [[YELLOW]]{0}
Smelting.Ability.FuelEfficiency=Brennstoff Effizienz Multiplikator: [[YELLOW]]{0}x
Smelting.Ability.Locked.0=GESPERRT bis {0}+ Skill (XP BOOST)
Smelting.Ability.Locked.1=GESPERRT bis {0}+ Skill (SCHMELZTIEGEL)
Smelting.Ability.SecondSmelt=Extra Schmelzung: [[YELLOW]]{0}
Smelting.Ability.VanillaXPBoost=Vanilla XP Multiplikator: [[YELLOW]]{0}x
Smelting.SubSkill.FuelEfficiency.Name=Brennstoff Effizienz
Smelting.SubSkill.FuelEfficiency.Description=Erh\u00F6he die Brenndauer des Brennstoffes in \u00D6fen
Smelting.SubSkill.SecondSmelt.Name=Extra Schmelzung
Smelting.SubSkill.SecondSmelt.Description=Verdoppelt den Ertrag beim Schmelzen
Smelting.Effect.4=Vanilla XP Boost
Smelting.Effect.5=Erh\u00F6ht die erhaltene Erfahrung beim Schmelzen
Smelting.SubSkill.FluxMining.Name=Schmelztiegel
Smelting.SubSkill.FluxMining.Description=M\u00F6glichkeit, Erze direkt beim Abbauen zu Schmelzen
Smelting.Listener=Schmelzen:
Smelting.SkillName=SCHMELZEN
#COMMAND DESCRIPTIONS
Commands.Description.addlevels=Gib einem Spieler mcMMO Level
Commands.Description.adminchat=Schalte den mcMMO Adminchat an/aus oder sende Adminchat Nachrichten
Commands.Description.addxp=Gib einem Spieler mcMMO XP
Commands.Description.hardcore=\u00C4ndere den mcMMO hardcore Prozentsatz oder schalte den hardcore Modus an/aus
Commands.Description.inspect=Sieh detaillierte mcMMO Informationen \u00FCber einen anderen Spieler
Commands.Description.mcability=Schalte die Bereitschaft von mcMMO F\u00E4higkeiten bei Rechtsklick an/aus
Commands.Description.mccooldown=Sieh alle mcMMO F\u00E4higkeiten Abklingzeiten
Commands.Description.mcgod=Schalte mcMMO godmode an/aus
Commands.Description.mchud=\u00C4ndere deinen mcMMO HUD Stil
Commands.Description.mcmmo=Zeige eine kurze Beschreibung von mcMMO
Commands.Description.mcnotify=Schalte die meisten mcMMO F\u00E4higkeiten Hinweise im Chat an/aus
Commands.Description.mcpurge=Bereinige die mcMMO Datenbank von Spielern die {0} Monate nicht online waren oder 0 Level haben.
Commands.Description.mcrank=Zeige das mcMMO Ranking f\u00FCr einen Spieler
Commands.Description.mcrefresh=Aktualisiere alle Abklingzeiten f\u00FCr mcMMO
Commands.Description.mcremove=Entferne einen Benutzer aus der mcMMO Datenbank
Commands.Description.mcscoreboard=Verwalte deine mcMMO \u00DCbersicht
Commands.Description.mcstats=Zeige deine mcMMO Level und XP
Commands.Description.mctop=Zeige die mcMMO Bestenlisten
Commands.Description.mmoedit=Editiere die mcMMO Level bei einem Benutzer
Commands.Description.mmoupdate=Migriere die mcMMO Datenbank von einer alten Datenbank zur aktuellen
Commands.Description.mcconvert=Konvertiert Datenbanktypen oder Erfahrungsformeln
Commands.Description.mmoshowdb=Zeige den Namen der aktuellen Datenbank (zur Benutzung mit /mmoupdate)
Commands.Description.party=Steuere verschiedene mcMMO Party Einstellungen
Commands.Description.partychat=Schalte den mcMMO Party Chat an/aus oder send Party Nachrichten
Commands.Description.ptp=Teleportiere zu einem mcMMO Party Mitglied
Commands.Description.Skill=Zeige detaillierte Informationen zu einem mcMMO Skill {0}
Commands.Description.skillreset=Setze die mcMMO Level f\u00FCr einen Spieler zur\u00FCck
Commands.Description.vampirism=Schalte Vampirismus an/aus / \u00E4ndere den Vampirismus Prozentsatz
Commands.Description.xplock=Setze deine mcMMO XP-Leiste auf einen bestimmten Skill fest
Commands.Description.xprate=\u00C4ndere die mcMMO XP Rate oder starte ein XP Event
#UPDATE CHECKER
UpdateChecker.Outdated=Du verwendest eine veraltete mcMMO Version!
UpdateChecker.NewAvailable=Eine neue Version ist auf BukkitDev erh\u00E4ltlich.
#SCOREBOARD HEADERS
Scoreboard.Header.PlayerStats=mcMMO Stats
Scoreboard.Header.PlayerCooldowns=mcMMO Abklingzeiten
Scoreboard.Header.PlayerRank=mcMMO Bestenlisten
Scoreboard.Header.PlayerInspect=mcMMO Stats: {0}
Scoreboard.Header.PowerLevel=Gesamt Level
Scoreboard.Misc.PowerLevel=[[GOLD]]Gesamt Level
Scoreboard.Misc.Level=[[DARK_AQUA]]Level
Scoreboard.Misc.CurrentXP=[[GREEN]]Aktuelle XP
Scoreboard.Misc.RemainingXP=Verbliebene XP
Scoreboard.Misc.Cooldown=[[LIGHT_PURPLE]]Abklingzeit
Scoreboard.Misc.Overall=[[GOLD]]Insgesamt
Scoreboard.Misc.Ability=F\u00E4higkeit
#DATABASE RECOVERY
Profile.Loading.Success=[[GREEN]]Your mcMMO profile has been loaded.
Profile.Loading.Failure=mcMMO still cannot load your data. You may want to [[AQUA]]contact the server owner.\n[[YELLOW]]You can still play on the server, but you will have [[BOLD]]no mcMMO levels[[YELLOW]] and any XP you get [[BOLD]]will not be saved[[YELLOW]].
Profile.Loading.AdminFailureNotice=[[DARK_RED]][A][[RED]] mcMMO was unable to load the player data for [[YELLOW]]{0}[[RED]]. [[LIGHT_PURPLE]]Please inspect your database setup.

View File

@@ -1,862 +0,0 @@
Acrobatics.Ability.Proc=[[GREEN]]**Atterrissage gracieux**
Acrobatics.Combat.Proc=[[GREEN]]**Esquiv\u00e9**
Acrobatics.DodgeChance=Probabilit\u00e9 d\'esquive : [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.Name=Roulade
Acrobatics.SubSkill.Roll.Description=R\u00e9duit ou annule les d\u00e9g\u00e2ts de chute
Acrobatics.SubSkill.GracefulRoll.Name=Roulade gracieuse
Acrobatics.SubSkill.GracefulRoll.Description=Deux fois plus efficace qu\'une roulade classique
Acrobatics.SubSkill.Dodge.Name=Esquive
Acrobatics.SubSkill.Dodge.Description=R\u00e9duit de moiti\u00e9 les d\u00e9g\u00e2ts re\u00e7us
Acrobatics.Listener=Acrobatie :
Acrobatics.SubSkill.Roll.Chance=Probabilit\u00e9 de roulade : [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.GraceChance=Probabilit\u00e9 de roulade gracieuse : [[YELLOW]]{0}
Acrobatics.Roll.Text=**ROULADE**
Acrobatics.SkillName=ACROBATIE
Acrobatics.Skillup=Le talent Acrobatie augmente de {0}. Total ({1})
Alchemy.SubSkill.Catalysis.Name=Catalyse
Alchemy.SubSkill.Catalysis.Description=Augmente la vitesse de confection des potions
Alchemy.SubSkill.Concoctions.Name=Concoctions
Alchemy.SubSkill.Concoctions.Description=Confection des potions avec plus d\u2019ingr\u00e9dients
Alchemy.Listener=Alchimie
Alchemy.Ability.Locked.0=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveaux de talent (CATALYSE)
Alchemy.Catalysis.Speed=Vitesse de confection des poitions : [[YELLOW]]{0}
Alchemy.Concoctions.Rank=Classement des confectionneurs de potions: [[YELLOW]]{0}/{1}
Alchemy.Concoctions.Ingredients=Ingr\u00e9dients [[[YELLOW]]{0}[[RED]]]: [[YELLOW]]{1}
Alchemy.SkillName=ALCHIMIE
Alchemy.Skillup=Le talent Alchimie augmente de {0}. Total ({1})
Archery.Combat.DazeChance=Probabilit\u00e9 de d\u00e9sorienter : [[YELLOW]]{0}
Archery.Combat.RetrieveChance=Probabilit\u00e9 de r\u00e9cup\u00e9rer des fl\u00e8ches : [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=Tir pr\u00e9cis, bonus de d\u00e9g\u00e2ts : [[YELLOW]]{0}
Archery.SubSkill.SkillShot.Name=Tir pr\u00e9cis
Archery.SubSkill.SkillShot.Description=Augmente les d\u00e9g\u00e2ts inflig\u00e9s
Archery.SubSkill.Daze.Name=Chance de d\u00e9sorienter : [[YELLOW]]{0}%
Archery.SubSkill.Daze.Description=D\u00e9soriente les adversaires en leur faisant {0} dommages
Archery.SubSkill.ArrowRetrieval.Name=R\u00e9cup\u00e9ration de fl\u00e8che
Archery.SubSkill.ArrowRetrieval.Description=Probabilit\u00e9 de r\u00e9cup\u00e9rer des fl\u00e8ches sur les corps
Archery.Listener=Archerie :
Archery.SkillName=ARCHERIE
Archery.Skillup=Le talent Archerie augmente de {0}. Total ({1})
Axes.Ability.Bonus.0=Ma\u00eetrise des haches
Axes.Ability.Bonus.1={0} de d\u00e9g\u00e2ts en plus
Axes.Ability.Bonus.2=Impact
Axes.Ability.Bonus.3=Inflige {0} de d\u00e9g\u00e2ts \u00e0 l\'armure
Axes.Ability.Bonus.4=Impact puissant
Axes.Ability.Bonus.5=Inflige {0} de d\u00e9g\u00e2ts en plus aux ennemis sans armure
Axes.Ability.Lower=[[GRAY]]**VOUS ABAISSEZ VOTRE HACHE**
Axes.Ability.Ready=[[GREEN]]**VOUS LEVEZ VOTRE HACHE**
Axes.Combat.CritStruck=[[DARK_RED]]Vous avez re\u00e7u un coup critique !
Axes.Combat.CritChance=Chance d\'infliger un coup critique : [[YELLOW]]{0}%
Axes.Combat.CriticalHit=COUP CRITIQUE !
Axes.Combat.GI.Proc=[[GREEN]]**FRAPP\u00c9 D\'UNE VIOLENTE INOU\u00cfE**
Axes.Combat.GI.Struck=**TOUCH\u00c9 PAR UN IMPACT PUISSANT**
Axes.Combat.SS.Struck=[[DARK_RED]]Bloqu\u00e9 par TRANCHE-CR\u00c2NE !
Axes.Combat.SS.Length=Dur\u00e9e de Tranche-cr\u00e2ne : [[YELLOW]]{0}s
Axes.SubSkill.SkullSplitter.Name=Tranche-cr\u00e2ne (Comp\u00e9tence)
Axes.SubSkill.SkullSplitter.Description=Inflige des d\u00e9g\u00e2ts de zone
Axes.SubSkill.CriticalStrikes.Name=Coup critique
Axes.SubSkill.CriticalStrikes.Description=D\u00e9g\u00e2ts doubl\u00e9s
Axes.SubSkill.AxeMastery.Name=Ma\u00eetrise des haches
Axes.SubSkill.AxeMastery.Description=Ajoute des d\u00e9g\u00e2ts
Axes.SubSkill.ArmorImpact.Name=Impact
Axes.SubSkill.ArmorImpact.Description=Frappe avec suffisamment de force pour briser l\'armure
Axes.SubSkill.GreaterImpact.Name=Impact puissant
Axes.SubSkill.GreaterImpact.Description=Inflige des d\u00e9g\u00e2ts bonus aux ennemis sans armure
Axes.Listener=Haches :
Axes.SkillName=HACHES
Axes.Skills.SS.Off=**Tranche-cr\u00e2ne est termin\u00e9**
Axes.Skills.SS.On=[[GREEN]]**TRANCHE-CR\u00c2NE ACTIV\u00c9**
Axes.Skills.SS.Refresh=[[GREEN]]Votre comp\u00e9tence [[YELLOW]]Tranche-cr\u00e2ne [[GREEN]]est pr\u00eate !
Axes.Skills.SS.Other.Off=Tranche-cr\u00e2ne[[GREEN]] s\'est termin\u00e9 pour [[YELLOW]]{0}
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Tranche-cr\u00e2ne !
Axes.Skillup=Le talent Haches augmente de {0}. Total ({1})
Axes.Ability.Bonus.0=Ma\u00eetrise des haches
Excavation.Ability.Lower=[[GRAY]]**VOUS ABAISSEZ VOTRE PELLE**
Excavation.Ability.Ready=[[GREEN]]**VOUS LEVEZ VOTRE PELLE**
Excavation.SubSkill.GigaDrillBreaker.Name=Foreur (Comp\u00e9tence)
Excavation.SubSkill.GigaDrillBreaker.Description=Drops x3, XP x3, plus rapide
Excavation.SubSkill.TreasureHunter.Name=Chasseur de tr\u00e9sors
Excavation.SubSkill.TreasureHunter.Description=Capacit\u00e9 \u00e0 d\u00e9terrer des tr\u00e9sors
Excavation.Effect.Length=Dur\u00e9e de Foreur : [[YELLOW]]{0}s
Excavation.Listener=Excavation:
Excavation.SkillName=EXCAVATION
Excavation.Skills.GigaDrillBreaker.Off=**Votre comp\u00e9tence Foreur est termin\u00e9e**
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**FOREUR ACTIV\u00c9**
Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]Votre comp\u00e9tence [[YELLOW]]Foreur [[GREEN]]est pr\u00eate !
Excavation.Skills.GigaDrillBreaker.Other.Off=Foreur[[GREEN]] est termin\u00e9 pour [[YELLOW]]{0}
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Foreur !
Excavation.Skillup=La comp\u00e9tence excavation augmente de {0}. Total ({1})
Fishing.Ability.Chance=Chance que \u00e7a morde: [[YELLOW]]{0}
Fishing.Ability.Info=P\u00eache magique : [[GRAY]] **S\'am\u00e9liore via Chasseur de tr\u00e9sors**
Fishing.Ability.Locked.0=BLOCKE JUSQU\'A {0}+ COMPETENCE (SHAKE)
Fishing.Ability.Locked.1=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveaux de talent (PECHEUR SUR GLACE)
Fishing.Ability.Locked.2=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveau(x) (Ma\u00eetre P\u00eacheur)
Fishing.Ability.Rank=Chasseur de tr\u00e9sors : [[YELLOW]]{0}/{1}
Fishing.Ability.TH.DropRate=Taux de Loot: [[DARK_RED]]Pi\u00e8ge: [[YELLOW]]{0} [[GRAY]]Commun: [[YELLOW]]{1} [[GREEN]]Non commun: [[YELLOW]]{2}\n[[BLUE]]Rare: [[YELLOW]]{3} [[LIGHT_PURPLE]]\u00c9pique: [[YELLOW]]{4} [[GOLD]]L\u00e9gendaire: [[YELLOW]]{5} [[AQUA]]Record: [[YELLOW]]{6}
Fishing.Ability.TH.MagicRate=Chasse magique: [[YELLOW]]{0}
Fishing.Ability.Shake=Chance d\'esquive : [[YELLOW]]{0}
Fishing.Ability.IceFishing=P\u00eache sur Glace: Allez p\u00eacher sur de la glace
Fishing.Ability.FD=R\u00e9gime de p\u00e9cheur: [[YELLOW]]Classement {0}
Fishing.SubSkill.TreasureHunter.Name=Chasseur de tr\u00e9sors
Fishing.SubSkill.TreasureHunter.Description=Remonte des objets inhabituels
Fishing.SubSkill.MagicHunter.Name=P\u00eache magique
Fishing.SubSkill.MagicHunter.Description=Remonte des objets magiques
Fishing.SubSkill.Shake.Name=Secousse (sur monstres)
Fishing.SubSkill.Shake.Description=Fait tomber des objets des monstres avec une canne \u00e0 p\u00eache
Fishing.SubSkill.FishermansDiet.Name=R\u00e9gime de fermier
Fishing.SubSkill.FishermansDiet.Description=Am\u00e9liore la nutrition des produits de la ferme
Fishing.SubSkill.MasterAngler.Name=Ma\u00eetre P\u00eacheur
Fishing.SubSkill.MasterAngler.Description=Augmente les chances que \u00e7a morde lors de la p\u00eache
Fishing.SubSkill.IceFishing.Name=P\u00eache sur Glace
Fishing.SubSkill.IceFishing.Description=Vous permet de p\u00eacher dans les biomes glac\u00e9s
Fishing.Chance.Raining=[[BLUE]] Bonus de pluie
Fishing.Listener=P\u00eache :
Fishing.Ability.TH.MagicFound=[[GRAY]]Vous ressentez quelque chose de magique dans cette prise...
Fishing.Ability.TH.Boom=[[GRAY]]TEMPS D\'EXPLOSION !!!
Fishing.Ability.TH.Poison=[[GRAY]]Quelque chose n\'a pas bien cuit...
Fishing.SkillName=P\u00caCHE
Fishing.Skillup=Le talent p\u00eache augmente de {0}. Total ({1})
Herbalism.Ability.DoubleDropChance=Double Drop: [[YELLOW]]{0}
Herbalism.Ability.FD=R\u00e9gime du fermier: [[YELLOW]]Classement {0}
Herbalism.Ability.GTe.Length=Dur\u00e9e de Main verte : [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=Vous avez besoin de plus de graines pour r\u00e9pandre la terre verte
Herbalism.Ability.GTh.Chance=Chances de Mains Vertes: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=**MAINS VERTES \u00c9CHOU\u00c9ES**
Herbalism.Ability.GTh.Stage=Vos sens de jardinier vous indique que [[YELLOW]] Ce champ est en train de pousser {0}
Herbalism.Ability.GTh=[[GREEN]]**DOIGTS VERTS**
Herbalism.Ability.HylianLuck=Probabilit\u00e9 de chance d\'Hylian: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**VOUS ABAISSEZ VOTRE HOUE**
Herbalism.Ability.Ready=[[GREEN]]**VOUS LEVEZ VOTRE HOUE**
Herbalism.Ability.ShroomThumb.Chance=Doigts \u00e0 Champignons, Chance: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=**DOIGTS VERTS \u00c9CHOU\u00c9**
Herbalism.SubSkill.GreenTerra.Name=Main verte (Comp\u00e9tence)
Herbalism.SubSkill.GreenTerra.Description=Propage les plantes / triple drops
Herbalism.SubSkill.GreenThumb.Name=Mains Vertes (Bl\u00e9)
Herbalism.SubSkill.GreenThumb.Description=Plantation automatique apres recolte du champ
Herbalism.Effect.4=Mains Vertes (Blocs)
Herbalism.SubSkill.GreenThumb.Description.2=Faire des briques avec mousse ou faire pousser l\'herbe
Herbalism.SubSkill.FarmersDiet.Name=R\u00e9gime de fermier
Herbalism.SubSkill.FarmersDiet.Description=Am\u00e9liore la nutrition des produits de la ferme
Herbalism.SubSkill.DoubleDrops.Name=Double drops
Herbalism.SubSkill.DoubleDrops.Description=Double la quantit\u00e9 r\u00e9colt\u00e9e
Herbalism.SubSkill.HylianLuck.Name=Chance d\'Hylian
Herbalism.SubSkill.HylianLuck.Description=Donne une petite chance de trouver de rares objets
Herbalism.SubSkill.ShroomThumb.Name=Doigts \u00e0 Champignons
Herbalism.SubSkill.ShroomThumb.Description=Etend le mycelium sur la terre et l\'herbe
Herbalism.HylianLuck=[[GREEN]]la chance d\'Hyrule est avec vous aujourd\'hui !
Herbalism.Listener=Herboristerie :
Herbalism.SkillName=HERBORISTERIE
Herbalism.Skills.GTe.Off=**Votre comp\u00e9tence Main verte est termin\u00e9e**
Herbalism.Skills.GTe.On=[[GREEN]]**MAIN VERTE ACTIV\u00c9**
Herbalism.Skills.GTe.Refresh=[[GREEN]]Votre comp\u00e9tence [[YELLOW]]Main verte [[GREEN]]est pr\u00eate !
Herbalism.Skills.GTe.Other.Off=Main verte[[GREEN]] est termin\u00e9 pour [[YELLOW]]{0}
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Main verte !
Herbalism.Skillup=Le talent Herboristerie augmente de {0}. Total ({1})
Mining.Ability.Length=Dur\u00e9e de Broyeur : [[YELLOW]]{0}s
Mining.Ability.Locked.0=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveaux du talent (MINAGE PAR EXPLOSIONS)
Mining.Ability.Locked.1=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveau(x) (Grosses Explosions)
Mining.Ability.Locked.2=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveau(x) (Expert en d\u00e9molition)
Mining.Ability.Lower=[[GRAY]]**VOUS ABAISSEZ VOTRE PIOCHE**
Mining.Ability.Ready=[[GREEN]]**VOUS LEVEZ VOTRE PIOCHE**
Mining.SubSkill.SuperBreaker.Name=Broyeur (Comp\u00e9tence)
Mining.SubSkill.SuperBreaker.Description=Plus rapide, chance de triple drops
Mining.SubSkill.DoubleDrops.Name=Double drops
Mining.SubSkill.DoubleDrops.Description=Double la quantit\u00e9 r\u00e9colt\u00e9e
Mining.SubSkill.BlastMining.Name=Minage explosif
Mining.SubSkill.BlastMining.Description=Bonus au minage \u00e0 l\'explosif
Mining.SubSkill.BiggerBombs.Name=Grosses explosions
Mining.SubSkill.BiggerBombs.Description=Augmente le rayon d\'explosion de la TNT
Mining.SubSkill.DemolitionsExpertise.Name=Expert en d\u00e9molition
Mining.SubSkill.DemolitionsExpertise.Description=R\u00e9duit les d\u00e9g\u00e2ts provenant de la TNT
Mining.Effect.Decrease=Baisse de l\'expertise en d\u00e9molition: [[YELLOW]]{0}
Mining.Effect.DropChance=Double Drop: [[YELLOW]]{0}
Mining.Listener=Minage :
Mining.SkillName=MINAGE
Mining.Skills.SuperBreaker.Off=**Votre comp\u00e9tence Broyeur est termin\u00e9e**
Mining.Skills.SuperBreaker.On=[[GREEN]]**BROYEUR ACTIV\u00c9**
Mining.Skills.SuperBreaker.Other.Off=Broyeur[[GREEN]] est termin\u00e9 pour [[YELLOW]]{0}
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Broyeur !
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Votre comp\u00e9tence [[YELLOW]]Broyeur [[GREEN]]est pr\u00eate !
Mining.Skillup=Le talent Minage augmente de {0}. Total ({1})
Mining.Blast.Boom=[[GRAY]]**BOUM**
Mining.Blast.Effect=+{0} de r\u00e9colte des minerais, -{1} de r\u00e9colte des d\u00e9bris, {2}x les r\u00e9compenses
Mining.Blast.Radius.Increase=Rayon d\'explosion : [[YELLOW]]+{0}
Mining.Blast.Rank=Minage explosif : [[YELLOW]]Rang {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Minage explosif !
Mining.Blast.Refresh=[[GREEN]]Votre capacit\u00e9 [[YELLOW]]Minage Explosif[[GREEN]] est pr\u00eate !
Repair.SubSkill.Repair.Name=R\u00e9paration
Repair.SubSkill.Repair.Description=R\u00e9parer Outils & Armures
Repair.SubSkill.GoldRepair.Name=R\u00e9paration d\'Or ({0}+ SKILL)
Repair.SubSkill.GoldRepair.Description=R\u00e9parer Outils & Armures en Or
Repair.SubSkill.IronRepair.Name=R\u00e9paration en Fer ({0}+ SKILL)
Repair.SubSkill.IronRepair.Description=R\u00e9paration Outils & Armures en Fer
Repair.SubSkill.StoneRepair.Name=R\u00e9paration en Pierre ({0}+ SKILL)
Repair.SubSkill.StoneRepair.Description=R\u00e9parer Outils en Pierre
Repair.SubSkill.RepairMastery.Name=Ma\u00eetrise de la forge
Repair.SubSkill.RepairMastery.Description=Am\u00e9liore la r\u00e9paration
Repair.SubSkill.SuperRepair.Name=Superbe r\u00e9paration
Repair.SubSkill.SuperRepair.Description=Double l\'efficacit\u00e9
Repair.SubSkill.DiamondRepair.Name=R\u00e9paration du diamant (talent {0}+)
Repair.SubSkill.DiamondRepair.Description=R\u00e9pare les outils et armures en diamant
Repair.SubSkill.ArcaneForging.Name=Forge arcanique
Repair.SubSkill.ArcaneForging.Description=R\u00e9pare les objets magiques
Repair.Error=[[DARK_RED]]McMMO a rencontr\u00e9 une erreur en essayant de r\u00e9parer cet objet !
Repair.Listener.Anvil=[[DARK_RED]]Vous venez de poser une enclume, elle peut \u00eatre utilis\u00e9e pour r\u00e9parer votre \u00e9quipement.
Repair.Listener.Anvil2=[[DARK_RED]]Tu as plac\u00e9 une enclume sauvage, utilises la pour r\u00e9parer les outils et armures sauvages.
Repair.Listener=R\u00e9paration :
Repair.SkillName=R\u00c9PARATION
Repair.Skills.AdeptDiamond=[[DARK_RED]]Vous n\'\u00eates pas suffisamment comp\u00e9tent pour r\u00e9parer le diamant.
Repair.Skills.AdeptGold=[[DARK_RED]]Vous n\'\u00eates pas suffisamment comp\u00e9tent pour r\u00e9parer l\'or.
Repair.Skills.AdeptIron=[[DARK_RED]]Vous n\'\u00eates pas suffisamment comp\u00e9tent pour r\u00e9parer le fer.
Repair.Skills.AdeptStone=[[DARK_RED]]Vous n\'\u00eates pas suffisamment comp\u00e9tent pour r\u00e9parer la pierre.
Repair.Skills.Adept=Vous devez avoir le niveau [[YELLOW]]{0}[[RED]] pour pouvoir r\u00e9parer [[YELLOW]]{1}
Repair.Skills.FeltEasy=[[GRAY]]Plut\u00f4t facile.
Repair.Skills.FullDurability=[[GRAY]]C\'est d\u00e9j\u00e0 r\u00e9par\u00e9.
Repair.Skills.Mastery=Maitrise de la forge: [[YELLOW]]Extra {0} durabilit\u00e9 en place
Repair.Skills.StackedItems=[[DARK_RED]]Vous ne pouvez pas r\u00e9parer les objets empil\u00e9s.
Repair.Skills.Super.Chance=Chance Super R\u00e9paration: [[YELLOW]]{0}
Repair.Skillup=Le talent R\u00e9paration augmente de {0}. Total ({1})
Repair.Pretty.Name=R\u00e9paration
Repair.Arcane.Chance.Downgrade=[[GRAY]]Forge arcanique, chance de d\u00e9gradation : [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]Forge arcanique, taux de succ\u00e8s : [[YELLOW]]{0}%
Repair.Arcane.Downgrade=Les \u00e9nergies arcaniques ont \u00e9t\u00e9 affaiblies sur cet objet.
Repair.Arcane.Fail=Les \u00e9nergies arcaniques ont quitt\u00e9 cet objet.
Repair.Arcane.Lost=Vous n\'\u00e9tiez pas suffisamment comp\u00e9tent pour pr\u00e9server les enchantements.
Repair.Arcane.Perfect=[[GREEN]]Vous avez pr\u00e9serv\u00e9 les \u00e9nergies arcaniques de cet objet.
Repair.Arcane.Rank=Forge arcanique : [[YELLOW]]Rang {0}/4
Salvage.Pretty.Name=Recyclage
Salvage.SubSkill.AdvancedSalvage.Name=Recyclage Avanc\u00e9
Salvage.SubSkill.AdvancedSalvage.Description=Recyclage des objets endommag\u00e9s
Salvage.SubSkill.ArcaneSalvaging.Name=Recyclage Arcanique
Salvage.SubSkill.ArcaneSalvaging.Description=Extrait les enchantements des objets
Salvage.Ability.Locked.0=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveau(x) du talent (Recyclage Avanc\u00e9)
Salvage.Ability.Bonus.0=Recyclage Avanc\u00e9
Salvage.Ability.Bonus.1=Rendement maximal {0} objet(s) d\u00e9truit(s)
Salvage.Arcane.Rank=Recyclage Arcanique: [[YELLOW]]Rang {0}/{1}
Salvage.Arcane.ExtractFull=[[GRAY]]Recyclage Arcanique : Chance d\'un enchantement complet
Salvage.Arcane.ExtractPartial=[[GRAY]]Recyclage Arcanique : Chance d\'un enchantement partiel
Salvage.Skills.Success=[[GREEN]]Objet recycl\u00e9 !
Salvage.Skills.Adept.Damaged=[[DARK_RED]]Vous n\'\u00eates pas assez talentueux pour recycler des objets endommag\u00e9s.
Salvage.Skills.Adept.Level=Vous devez \u00eatre niveau [[YELLOW]]{0}[[RED]] pour recycler [[YELLOW]]{1}
Salvage.Skills.TooDamaged=[[DARK_RED]]C\'est objet est trop endommag\u00e9 pour \u00eatre recycl\u00e9.
Salvage.Skills.ArcaneFailed=Vous avez \u00e9t\u00e9 incapable d\'extraire la connaissance contenue dans cet objet.
Salvage.Skills.ArcanePartial=Vous avez \u00e9t\u00e9 capable d\'extraire toute la connaissance contenue dans cet objet.
Salvage.Skills.ArcaneSuccess=[[GREEN]]Vous avez \u00e9t\u00e9 capable d\'extraire toute la connaissance contenue dans cet objet.
Salvage.Listener.Anvil=[[DARK_RED]]Vous avez plac\u00e9 une enclume de r\u00e9paration, utilisez-la pour recycler vos outils et vos armures.
Salvage.Listener=Recyclage:
Salvage.SkillName=RECYCLAGE
Swords.Ability.Lower=[[GRAY]]**VOUS ABAISSEZ VOTRE \u00c9P\u00c9E**
Swords.Ability.Ready=[[GREEN]]**VOUS LEVEZ VOTRE \u00c9P\u00c9E**
Swords.Combat.Bleed.Chance=Chance de saignement: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=Dur\u00e9e de saignement : [[YELLOW]]{0} ticks
Swords.Combat.Bleed.Note=[[GRAY]]NOTE : [[YELLOW]]1 tick toutes les 2 secondes
Swords.Combat.Bleeding.Started=[[DARK_RED]] Tu saignes!
Swords.Combat.Bleeding.Stopped=[[GRAY]]Le saignement s\'est [[GREEN]]arr\u00eat\u00e9[[GRAY]] !
Swords.Combat.Bleeding=[[GREEN]]**L\'ENNEMI SAIGNE**
Swords.Combat.Counter.Chance=Chance de Contre Attaque: [[YELLOW]]{0}
Swords.Combat.Counter.Hit=[[DARK_RED]]Touch\u00e9 par une contre-attaque !
Swords.Combat.Countered=[[GREEN]]**CONTRE-ATTAQUE**
Swords.Combat.SS.Struck=[[DARK_RED]]Frapp\u00e9 par ATTAQUE D\u00c9CHIRANTE !
Swords.SubSkill.CounterAttack.Name=Contre-attaque
Swords.SubSkill.CounterAttack.Description=Renvoie {0} des dommages pris en bloquant
Swords.SubSkill.SerratedStrikes.Name=Attaque D\u00e9chirante (Capacit\u00e9)
Swords.SubSkill.SerratedStrikes.Description={0} DMG AoE, Saignement+ AoE
Swords.Effect.4=Saignement d\'Attaque d\u00e9chirante
Swords.Effect.5={0} Intervale entre les saignements
Swords.SubSkill.Bleed.Name=Saignement
Swords.SubSkill.Bleed.Description=Applique un saignement
Swords.Listener=\u00c9p\u00e9es :
Swords.SkillName=\u00c9P\u00c9ES
Swords.Skills.SS.Off=**Votre comp\u00e9tence Attaque d\u00e9chirante est termin\u00e9e**
Swords.Skills.SS.On=[[GREEN]]**ATTAQUE D\u00c9CHIRANTE ACTIV\u00c9E**
Swords.Skills.SS.Refresh=[[GREEN]]Votre comp\u00e9tence [[YELLOW]]Attaque d\u00e9chirante [[GREEN]]est pr\u00eate !
Swords.Skills.SS.Other.Off=Attaque d\u00e9chirante[[GREEN]] s\'est termin\u00e9 pour [[YELLOW]]{0}
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Attaque d\u00e9chirante !
Swords.Skillup=Ep\u00e9e augmente de {0}. Total ({1})
Swords.SS.Length=Dur\u00e9e d\'Attaque d\u00e9chirante : [[YELLOW]]{0}s
Taming.Ability.Bonus.0=Attentif \u00e0 l\'environnement
Taming.Ability.Bonus.1=Les loups \u00e9vitent les dangers
Taming.Ability.Bonus.2=Fourrure \u00e9paisse
Taming.Ability.Bonus.3=R\u00e9duction de d\u00e9g\u00e2t, r\u00e9sistance au feu
Taming.Ability.Bonus.4=R\u00e9sistance aux chocs
Taming.Ability.Bonus.5=Les explosifs font 1/{0} compar\u00e9 au dommage normal
Taming.Ability.Bonus.6=Griffes ac\u00e9r\u00e9es
Taming.Ability.Bonus.7=+{0} Damage
Taming.Ability.Bonus.8=Fast food
Taming.Ability.Bonus.9={0} Chance d\'etre soign\u00e9 lors de d\'une attaque
Taming.Ability.Bonus.10=Super chien de chasse
Taming.Ability.Bonus.11=Regagne de la vie lorsqu\'endommag\u00e9 par de la magie ou du poison
Taming.Ability.Locked.0=Attentif \u00e0 l\'environnement
Taming.Ability.Locked.1=Fourrure \u00e9paisse
Taming.Ability.Locked.2=R\u00e9sistance aux chocs
Taming.Ability.Locked.3=Griffes ac\u00e9r\u00e9es
Taming.Ability.Locked.4=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveau(x) (SERVICE FAST FOOD)
Taming.Ability.Locked.5=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveaux du talent (Super chien de chasse)
Taming.Ability.Lower=[[GRAY]]**VOS LOUPS SE METTENT EN RETRAIT**
Taming.Ability.Ready=[[GRAY]]**VOUS PREPAREZ VOS LOUPS**
Taming.Combat.Chance.Gore=Chance Gore: [[YELLOW]]{0}
Taming.SubSkill.BeastLore.Name=Connaissances des b\u00eates
Taming.SubSkill.BeastLore.Description=Bone-whacking inspects wolves & ocelots
Taming.SubSkill.ShockProof.Name=R\u00e9sistance aux chocs
Taming.SubSkill.ShockProof.Description=R\u00e9duction des d\u00e9g\u00e2ts explosifs
Taming.SubSkill.CallOfTheWild.Name=Appel de la nature
Taming.SubSkill.CallOfTheWild.Description=Appelle un animal \u00e0 vos c\u00f4t\u00e9s
Taming.SubSkill.CallOfTheWild.Description.2=[[GRAY]]COTW: Accroupissez vous et faites un clic-gauche avec\n{0} {1} (Ocelot), {2} {3} (Loup), {4} {5} (Cheval)
Taming.SubSkill.FastFoodService.Name=Fast food
Taming.SubSkill.FastFoodService.Description=Probabilit\u00e9 de voler la vie en attaquant
Taming.SubSkill.HolyHound.Name=Super chien de chasse
Taming.SubSkill.HolyHound.Description=Soign\u00e9 par la Magie et le Poison
Taming.SubSkill.Gore.Name=Morsure
Taming.SubSkill.Gore.Description=Coup critique faisant saigner
Taming.SubSkill.SharpenedClaws.Name=Griffes ac\u00e9r\u00e9es
Taming.SubSkill.SharpenedClaws.Description=Bonus aux d\u00e9g\u00e2ts
Taming.SubSkill.EnvironmentallyAware.Name=Attentif \u00e0 l\'environnement
Taming.SubSkill.EnvironmentallyAware.Description=Phobie des cactus et de la lave, immunis\u00e9 aux chutes
Taming.SubSkill.ThickFur.Name=Fourrure \u00e9paisse
Taming.SubSkill.ThickFur.Description=R\u00e9duction de d\u00e9g\u00e2t, r\u00e9sistance au feu
Taming.SubSkill.Gore.Name0=Charge (Abilit\u00e9)
Taming.SubSkill.Gore.Name1=Ennemi cible, Rapidit\u00e9 de Loup++
Taming.Listener.Wolf=[[DARK_GRAY]]Votre loup se pr\u00e9cipite \u00e0 vos c\u00f4t\u00e9s...
Taming.Listener=Apprivoisement :
Taming.SkillName=APPRIVOISEMENT
Taming.Skills.Charge.Off=**Charge s\'est arr\u00eat\u00e9e**
Taming.Skills.Charge.On=[[GREEN]]**CHARGE ACTIV\u00c9E**
Taming.Skills.Charge.Other.Off=Charge[[GREEN]] s\'est arr\u00eat\u00e9e pour [[YELLOW]]{0}
Taming.Skills.Charge.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Charge!
Taming.Skills.Charge.Refresh=[[GREEN]]Votre capacit\u00e9 [[YELLOW]]Charge [[GREEN]]a \u00e9t\u00e9 renouvel\u00e9e!
Taming.Skills.Charge.NoneNearby=**AUCUN LOUP DISPONIBLE A PROXIMIT\u00c9**
Taming.Skills.Charge.NoTarget=**AUCUNE CIBLE TROUV\u00c9E**
Taming.Skillup=Le talent Apprivoisement augmente de {0}. Total ({1})
Taming.Summon.Complete=[[GREEN]]Appel r\u00e9ussi
Taming.Summon.Lifespan=(Dur\u00e9e de vie: {0}s)
Taming.Summon.Fail.Ocelot=Il y a d\u00e9j\u00e0 trop d\'ocelots dans les environs.
Taming.Summon.Fail.Wolf=Il y a d\u00e9j\u00e0 trop de loups dans les environs.
Taming.Summon.Fail.Horse=Il y a d\u00e9j\u00e0 trop de chevaux dans les environs.
Taming.Summon.Fail.TooMany=Vous ne pouvez pas appeler plus d\'animaux \u00e0 vos c\u00f4t\u00e9s. [[YELLOW]]({0})
Taming.Summon.Name.Format={1} de {0}
Unarmed.Ability.Berserk.Length=Dur\u00e9e de Berserk : [[YELLOW]]{0}s
Unarmed.Ability.Bonus.0=Poings de fer
Unarmed.Ability.Bonus.1=+{0} de d\u00e9g\u00e2ts
Unarmed.Ability.Chance.ArrowDeflect=D\u00e9viation de fl\u00e8che: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=Chance D\u00e9sarmer: [[YELLOW]]{0}
Unarmed.Ability.Chance.IronGrip=Chance de Poigne de Fer: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=Votre adversaire a une poigne de fer !
Unarmed.Ability.IronGrip.Defender=Votre poigne de fer vous a emp\u00each\u00e9 d\'\u00eatre d\u00e9sarm\u00e9 !
Unarmed.Ability.Lower=[[GRAY]]**VOUS ABAISSEZ VOS POINGS**
Unarmed.Ability.Ready=[[GREEN]]**VOUS LEVEZ VOS POINGS**
Unarmed.SubSkill.Berserk.Name=Berserk (Comp\u00e9tence)
Unarmed.SubSkill.Berserk.Description=+50% de d\u00e9g\u00e2ts, casse les mat\u00e9riaux souples
Unarmed.SubSkill.Disarm.Name=D\u00e9sarmement (sur joueurs)
Unarmed.SubSkill.Disarm.Description=Fait tomber l\'arme des ennemis
Unarmed.SubSkill.IronArmStyle.Name=Poings de fer
Unarmed.SubSkill.IronArmStyle.Description=Durcit vos poings au fil du temps
Unarmed.SubSkill.ArrowDeflect.Name=D\u00e9viation de fl\u00e8che
Unarmed.SubSkill.ArrowDeflect.Description=D\u00e9vie les fl\u00e8ches
Unarmed.SubSkill.IronGrip.Name=Poigne de Fer
Unarmed.SubSkill.IronGrip.Description=Vous emp\u00eache d\'\u00eatre d\u00e9sarm\u00e9
Unarmed.Listener=Poings :
Unarmed.SkillName=POINGS
Unarmed.Skills.Berserk.Off=**Votre capacit\u00e9 Furie est termin\u00e9e**
Unarmed.Skills.Berserk.On=[[GREEN]]**BERSERK ACTIV\u0081\u00c9**
Unarmed.Skills.Berserk.Other.Off=Berserk[[GREEN]] s\'est termin\u00e9 pour [[YELLOW]]{0}
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Furie !
Unarmed.Skills.Berserk.Refresh=[[GREEN]]Votre comp\u00e9tence [[YELLOW]]Berserk [[GREEN]]est pr\u00eate !
Unarmed.Skillup=La comp\u00e9tence Poings augmente de {0}. Total ({1})
Woodcutting.Ability.0=Souffleur de Feuilles
Woodcutting.Ability.1=Souffle les feuilles
Woodcutting.Ability.Chance.DDrop=Double Drop: [[YELLOW]]{0}
Woodcutting.Ability.Length=Dur\u00e9e d\'Abbateur : [[YELLOW]]{0}s
Woodcutting.Ability.Locked.0=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveaux du talent (EXPLOSEUR DE FEUILLES)
Woodcutting.SubSkill.TreeFeller.Name=Abatteur (Comp\u00e9tence)
Woodcutting.SubSkill.TreeFeller.Description=Fait exploser les arbres
Woodcutting.SubSkill.LeafBlower.Name=Soufflage
Woodcutting.SubSkill.LeafBlower.Description=Souffle les feuilles
Woodcutting.SubSkill.HarvestLumber.Name=Double drops
Woodcutting.SubSkill.HarvestLumber.Description=Double la quantit\u00e9 r\u00e9colt\u00e9e
Woodcutting.Listener=B\u00fbcheronnage :
Woodcutting.SkillName=B\u00dbCHERONNAGE
Woodcutting.Skills.TreeFeller.Off=**Votre comp\u00e9tence Abatteur est termin\u00e9e**
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**ABATTEUR ACTIV\u00c9**
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]Votre comp\u00e9tence [[YELLOW]]Abatteur [[GREEN]]est pr\u00eate !
Woodcutting.Skills.TreeFeller.Other.Off=Abatteur[[GREEN]] est termin\u00e9 pour [[YELLOW]]{0}
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Abatteur !
Woodcutting.Skills.TreeFeller.Splinter=VOTRE HACHE SE BRISE EN MILLE MORCEAUX !
Woodcutting.Skills.TreeFeller.Threshold=Cet arbre est trop large!
Woodcutting.Skillup=La comp\u00e9tence B\u00fbcheronnage augmente de {0}. Total ({1})
Ability.Generic.Refresh=[[GREEN]]**COMP\u00c9TENCES RAFRA\u00ceCHIES !**
Ability.Generic.Template.Lock=[[GRAY]]{0}
Ability.Generic.Template={0} : [[YELLOW]]{1}
Combat.ArrowDeflect=[[WHITE]]**FL\u00c8CHE DEVI\u00c9E**
Combat.BeastLore=[[GREEN]]**CONNAISSANCE DES B\u00caTES**
Combat.BeastLoreHealth=[[DARK_AQUA]]Vie ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreOwner=[[DARK_AQUA]]Propri\u00e9taire ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]**SANG**
Combat.StruckByGore=**FRAPP\u00c9 JUSQU\'AU SANG**
Combat.TargetDazed=La cible a \u00e9t\u00e9 [[DARK_RED]]\u00c9tourdi
Combat.TouchedFuzzy=[[DARK_RED]]Vous voyez flou. Vous vous sentez \u00e9tourdi.
mcMMO.Description=[[DARK_AQUA]]About the [[YELLOW]]mcMMO[[DARK_AQUA]] Project:,[[GOLD]]mcMMO is an [[RED]]open source[[GOLD]] RPG mod created in February 2011,[[GOLD]]by [[BLUE]]com.gmail.nossr50[[GOLD]]. The goal is to provide a quality RPG experience.,[[DARK_AQUA]]Tips:,[[GOLD]] - [[GREEN]]Use [[RED]]/mcmmo help[[GREEN]] to see commands,[[GOLD]] - [[GREEN]]Type [[RED]]/SKILLNAME[[GREEN]] to see detailed skill info,[[DARK_AQUA]]Developers:,[[GOLD]] - [[GREEN]]com.gmail.nossr50 [[BLUE]](Founder & Project Lead),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Former Project Lead),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](Developer),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](Developer),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](Developer),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](Developer),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](Developer),[[DARK_AQUA]]Useful Links:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] Bug Reporting,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,
Commands.addlevels.AwardAll.1=[[GREEN]]Vous avez \u00e9t\u00e9 r\u00e9compens\u00e9 de {0} niveau(x) dans tous les talents !
Commands.addlevels.AwardAll.2=Tous les talents ont \u00e9t\u00e9 modifi\u00e9s pour {0}.
Commands.addlevels.AwardSkill.1=[[GREEN]]Vous avez re\u00e7u {0} niveau dans {1}!
Commands.addlevels.AwardSkill.2={0} a \u00e9t\u00e9 modifi\u00e9 pour {1}.
Commands.addxp.AwardAll=[[GREEN]]Vous avez \u00e9t\u00e9 r\u00e9compens\u00e9 de {0} experiences dans chaque comp\u00e9tences!
Commands.addxp.AwardSkill=[[GREEN]]Vous avez \u00e9t\u00e9 r\u00e9compens\u00e9 de {0} experiences dans {1} !
Commands.Ability.Off=Utilisation des comp\u00e9tences [[RED]]Off
Commands.Ability.On=Utilisation des comp\u00e9tences [[GREEN]]On
Commands.Ability.Toggle=L\'utilisation des capacit\u00e9s a \u00e9t\u00e9 modifi\u00e9e pour [[YELLOW]]{0}
Commands.AdminChat.Off=Canal admin [[RED]]Off
Commands.AdminChat.On=Canal admin [[GREEN]]On
Commands.AdminToggle=[[GREEN]]- Active/d\u00e9sactive le tchat admin
Commands.Chat.Console=*Console*
Commands.Cooldowns.Header=[[GOLD]]--= [[GREEN]]Temps d\'attente des capacit\u00e9s McMMO[[GOLD]] =--
Commands.Cooldowns.Row.N=\ [[RED]]{0}[[WHITE]] - [[GOLD]]{1} secondes restantes
Commands.Cooldowns.Row.Y=\ [[AQUA]]{0}[[WHITE]] - [[DARK_GREEN]] Pr\u00eat !
Commands.Database.Cooldown=Vous devez attendre 1 seconde avant de pouvoir utiliser cette commande de nouveau.
Commands.Database.Processing=Votre commande pr\u00e9c\u00e9dente est toujours en ex\u00e9cution. Veuillez patienter.
Commands.Disabled=Cette commande est d\u00e9sactiv\u00e9e.
Commands.DoesNotExist=Ce joueur est absent de la base de donn\u00e9es !
Commands.GodMode.Disabled=mcMMO Godmode d\u00e9sactiv\u00e9
Commands.GodMode.Enabled=mcMMO Godmode activ\u00e9
Commands.GodMode.Forbidden=[mcMMO] Le Godmode n\'est pas permis sur ce monde (voir les permissions)
Commands.GodMode.Toggle=Le mode Dieu a \u00e9t\u00e9 modifi\u00e9 pour [[YELLOW]]{0}
Commands.Healthbars.Changed.HEARTS=[mcMMO] Le type d\'affichage de la barre de vie a \u00e9t\u00e9 chang\u00e9 en [[RED]]C\u0153urs[[WHITE]].
Commands.Healthbars.Changed.BAR=[mcMMO] Le type d\'affichage de la barre de vie a \u00e9t\u00e9 chang\u00e9 en [[YELLOW]]Bo\u00eetes[[WHITE]].
Commands.Healthbars.Changed.DISABLED=[mcMMO] La barre de vie des entit\u00e9s a \u00e9t\u00e9 [[GRAY]]d\u00e9sactiv\u00e9e[[WHITE]].
Commands.Healthbars.Invalid=Type de barre de vie invalide !
Commands.Inspect=<joueur> [[GREEN]]- Voir les infos d\u00e9taill\u00e9es sur le joueur
Commands.Invite.Success=[[GREEN]]Invitation envoy\u00e9e.
Commands.Leaderboards=<talent> <page> [[GREEN]]- Classement
Commands.mcc.Header=---[][[GREEN]]Commandes McMMO[[RED]][]---
Commands.mcgod=[[GREEN]]- Active/D\u00e9sactive le \"Mode Dieu\"
Commands.mchud.Invalid=Ce n\'est pas un type valide d\'HUD.
Commands.mcpurge.Success=[[GREEN]]La base de donn\u00e9es a \u00e9t\u00e9 purg\u00e9e avec succ\u00e8s !
Commands.mcrank.Heading=[[GOLD]]-=CLASSEMENT PERSONNEL=-
Commands.mcrank.Overall=Toutes competences confondues[[GREEN]] - [[GOLD]]Classement [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=CIBLE : [[WHITE]]{0}
Commands.mcrank.Skill={0}[[GREEN]] - [[GOLD]]Classement [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]Non class\u00e9
Commands.mcrefresh.Success=Le temps d\'attente de {0} a \u00e9t\u00e9 refra\u00eechi.
Commands.mcremove.Success=[[GREEN]]{0} a \u00e9t\u00e9 enlev\u00e9(e) de la base de donn\u00e9es avec succ\u00e8s !
Commands.mctop.Tip=[[GOLD]]Astuce : Utilisez [[RED]]/mcrank[[GOLD]] pour voir vos positions dans les diff\u00e9rents classements !
Commands.mmoedit=[joueur] <comp\u00e9tence> <nouvellevaleur> [[GREEN]] - Modifie la cible
Commands.mmoedit.AllSkills.1=[[GREEN]]Le niveau de tous vos talents a \u00e9t\u00e9 mis \u00e0 {0} !
Commands.mmoedit.Modified.1=[[GREEN]]Votre niveau en {0} a \u00e9t\u00e9 modifi\u00e9 \u00e0 {1}!
Commands.mmoedit.Modified.2={0} a \u00e9t\u00e9 modifi\u00e9 pour {1}.
Commands.mcconvert.Database.Same=Vous utilisez d\u00e9j\u00e0 le/la {0} base de donn\u00e9es !
Commands.mcconvert.Database.InvalidType={0} n\'est pas un type de base de donn\u00e9es valide.
Commands.mcconvert.Database.Start=[[GRAY]]Commencement de la conversion de {0} \u00e0 {1}...
Commands.mcconvert.Database.Finish=[[GRAY]]La migration de la base de donn\u00e9es a \u00e9t\u00e9 achev\u00e9e; la {1} base de donn\u00e9es a d\u00e9sormais toutes les donn\u00e9es de/du {0} base de donn\u00e9es.
Commands.mmoshowdb=La base de donn\u00e9es actuellement utilis\u00e9e est [[GREEN]]{0}
Commands.mcconvert.Experience.Invalid=Type de formule inconnu! Les types valides sont: [[GREEN]]LINEAR [[RED]]and [[GREEN]]EXPONENTIAL.
Commands.mcconvert.Experience.Same=Vous utilisez d\u00e9j\u00e0 une formule type {0}
Commands.mcconvert.Experience.Start=[[GRAY]]Commencement de la conversion de {0} \u00e0 {1}...
Commands.mcconvert.Experience.Finish=[[GRAY]]Changement de formule appliqu\u00e9; utilisation d\u00e9sormais de {0} pour la courbe d\'EXP.
Commands.ModDescription=[[GREEN]]- Lire la br\u00e8ve description du mod
Commands.NoConsole=Cette commande ne peut \u00eatre utilis\u00e9e via la console.
Commands.Notifications.Off=Les notifications des capacit\u00e9s ont \u00e9t\u00e9 [[RED]]d\u00e9sactiv\u00e9es
Commands.Notifications.On=Les notifications des capacit\u00e9s ont \u00e9t\u00e9 [[GREEN]]activ\u00e9es
Commands.Offline=Cette commande ne fonctionne pas sur les joueurs non connect\u00e9s.
Commands.NotLoaded=Le profil du joueur n\'est pas encore charg\u00e9.
Commands.Other=---[][[GREEN]]AUTRES COMMANDES[[RED]][]---
Commands.Party.Header=-----[][[GREEN]]GUILDE[[RED]][]-----
Commands.Party.Features.Header=-----[][[GREEN]]FONCTIONALIT\u00c9S[[RED]][]-----
Commands.Party.Status=[[DARK_GRAY]]NOM: [[WHITE]]{0} {1} [[DARK_GRAY]]NIVEAU: [[DARK_AQUA]]{2}
Commands.Party.Status.Alliance=[[DARK_GRAY]]ALLIANCES: [[WHITE]]{0}
Commands.Party.UnlockedFeatures=[[DARK_GRAY]]Fonctionnalit\u00e9s D\u00e9bloqu\u00e9es: [[GRAY]][[ITALIC]]{0}
Commands.Party.ShareMode=[[DARK_GRAY]]MODE PARTAGE :
Commands.Party.ItemShare=[[GRAY]]OBJETS [[DARK_AQUA]]({0})
Commands.Party.ExpShare=[[GRAY]]EXP [[DARK_AQUA]]({0})
Commands.Party.ItemShareCategories=[[DARK_GRAY]]Partage d\'objets: [[GRAY]][[ITALIC]]{0}
Commands.Party.MembersNear=[[DARK_GRAY]]A C\u00d4T\u00c9 DE VOUS [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
Commands.Party.Accept=[[GREEN]]- Accepter l\'invitation de la guilde
Commands.Party.Chat.Off=Canal guilde [[RED]]d\u00e9sactiv\u00e9
Commands.Party.Chat.On=Canal guilde [[RED]]activ\u00e9
Commands.Party.Commands=---[][[GREEN]]COMMANDES DE GUILDE[[RED]][]---
Commands.Party.Invite.0=ALERT: [[GREEN]]Vous avez re\u00e7u une invitation de {1} pour rejoindre la guilde {0}
Commands.Party.Invite.1=Tapez [[GREEN]]/party accept[[YELLOW]] pour accepter l\'invitation de guilde
Commands.Party.Invite=[[GREEN]]- Envoyer une invitation de groupe.
Commands.Party.Invite.Accepted=[[GREEN]]Invitation accept\u00e9e. Vous avez rejoint la guilde {0}
Commands.Party.Join=[[GRAY]]a rejoint la guilde: {0}
Commands.Party.Create=[[GRAY]]Groupe Cr\u00e9\u00e9: {0}
Commands.Party.Rename=[[GRAY]]Le nom de la guilde a \u00e9t\u00e9 chang\u00e9 en : [[WHITE]]{0}
Commands.Party.SetSharing=[[GRAY]]Le partage des {0} de la guilde a \u00e9t\u00e9 mis \u00e0: [[DARK_AQUA]]{1}
Commands.Party.ToggleShareCategory=[[GRAY]]Le partage d\'objets de guilde [[GOLD]]{0} [[GRAY]]a \u00e9t\u00e9 [[DARK_AQUA]]{1}
Commands.Party.AlreadyExists=[[DARK_RED]]La guilde {0} existe d\u00e9j\u00e0!
Commands.Party.Kick=Vous avez \u00e9t\u00e9 \u00e9ject\u00e9 du groupe {0} !
Commands.Party.Leave=Vous avez quitt\u00e9 la guilde.
Commands.Party.Members.Header=-----[][[GREEN]]MEMBRES[[RED]][]-----
Commands.Party.None=Vous n\'\u00eates pas dans une guilde.
Commands.Party.Quit=[[GREEN]]- Quitter votre pr\u00e9sente guilde
Commands.Party.Teleport=[[GREEN]]- Vous t\u00e9l\u00e9porte \u00e0 un membre de la guilde
Commands.Party.Toggle=[[GREEN]]- Active/d\u00e9sactive le tchat de guilde
Commands.Party1=[[GREEN]]- Cr\u00e9er une nouvelle guilde
Commands.Party2=[[GREEN]]- Rejoindre une guilde
Commands.Party.Alliance.Header=-----[][[GREEN]]ALLIANCE DE LA GUILDE[[RED]][]-----
Commands.Party.Alliance.Ally=[[WHITE]]{0} [[DARK_GRAY]]EST ALLI\u00c9 AVEC : [[WHITE]]{1}
Commands.Party.Alliance.Members.Header=-----[][[GREEN]]MEMBRES DE L\'ALLIANCE[[RED]][]-----
Commands.Party.Alliance.Invite.0=ALERTE: [[GREEN]]Vous avez re\u00e7u une invitation d\'alliance de guilde de {1} pour {0}
Commands.Party.Alliance.Invite.1=Tapez [[GREEN]]/party alliance accept[[YELLOW]] pour accepter l\'invitation
Commands.Party.Alliance.Invite.Accepted=[[GREEN]]Invitation d\'alliance accept\u00e9e.
Commands.Party.Alliance.None=Votre groupe n\'a pas d\'alli\u00e9.
Commands.Party.Alliance.AlreadyAllies=Votre groupe a d\u00e9j\u00e0 une alliance. D\u00e9faites-la avec [[DARK_AQUA]]/party alliance disband
Commands.Party.Alliance.Help.0=Cette guilde n\'a pas form\u00e9 d\'alliance. Invitez un chef de groupe.
Commands.Party.Alliance.Help.1=\u00e0 une alliance [[DARK_AQUA]]/party alliance invite <joueur>[[RED]].
Commands.ptp.Enabled=T\u00e9l\u00e9portation de guilde [[GREEN]]activ\u00e9e
Commands.ptp.Disabled=T\u00e9l\u00e9portation de guilde [[RED]]d\u00e9sactiv\u00e9e
Commands.ptp.NoRequests=Vous n\'avez pas de requ\u00eates de t\u00e9l\u00e9portation en ce moment
Commands.ptp.NoWorldPermissions=[mcMMO] Vous n\'avez pas la permission de vous t\u00e9l\u00e9porter dans le monde {0}.
Commands.ptp.Request1={0} [[GREEN]] vous a envoy\u00e9 une requ\u00eate de t\u00e9l\u00e9portation vers vous.
Commands.ptp.Request2=[[GREEN]]pour vous t\u00e9l\u00e9porter, tapez [[YELLOW]]/ptp accept[[GREEN]]. La requ\u00eate expire dans [[RED]]{0} [[GREEN]]secondes.
Commands.ptp.AcceptAny.Enabled=Confirmation de la demande de t\u00e9l\u00e9portation de guilde [[GREEN]]activ\u00e9e
Commands.ptp.AcceptAny.Disabled=Confirmation de la demande de t\u00e9l\u00e9portation du guilde [[RED]]d\u00e9sactiv\u00e9e
Commands.ptp.RequestExpired=La requ\u00eate de t\u00e9l\u00e9portation de guilde a expir\u00e9!
Commands.PowerLevel.Leaderboard=--Classement mcMMO ([[BLUE]]Niveau Global[[YELLOW]])--
Commands.PowerLevel.Capped=[[DARK_RED]]NIVEAU GLOBAL: [[GREEN]]{0} [[DARK_RED]]NIVEAU MAX ATTEINT: [[YELLOW]]{1}
Commands.PowerLevel=[[DARK_RED]]NIVEAU GLOBAL : [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]Toutes vos comp\u00e9tences ont \u00e9t\u00e9 remises \u00e0 zero.
Commands.Reset.Single=[[GREEN]]Ta comp\u00e9tence {0} a \u00e9t\u00e9 remise \u00e0 zero.
Commands.Reset=[[GREEN]]- Remise \u00e0 0 d\'un talent
Commands.Scoreboard.Clear=[[DARK_AQUA]]Le tableau des scores McMMO a \u00e9t\u00e9 enlev\u00e9.
Commands.Scoreboard.NoBoard=Le tableau des scores McMMO n\'est pas actif.
Commands.Scoreboard.Keep=[[DARK_AQUA]]Le tableau des scores McMMO restera affich\u00e9 tant que vous n\'utiliserez pas [[GREEN]]/mcscoreboard clear[[DARK_AQUA]].
Commands.Scoreboard.Timer=[[DARK_AQUA]]Le tableau des scores mcMMO sera enlev\u00e9 dans [[GOLD]]{0}[[DARK_AQUA]] secondes \u00e0 compter de maintenant.
Commands.Scoreboard.Help.0=[[GOLD]] == [[GREEN]]Aide pour [[RED]]/mcscoreboard[[GOLD]] ==
Commands.Scoreboard.Help.1=[[DARK_AQUA]]/mcscoreboard[[AQUA]] clear [[WHITE]] - enl\u00e8ve le tableau des scores McMMO
Commands.Scoreboard.Help.2=[[DARK_AQUA]]/mcscoreboard[[AQUA]] keep [[WHITE]] - Garde le tableau des scores affich\u00e9
Commands.Scoreboard.Help.3=[[DARK_AQUA]]/mcscoreboard[[AQUA]] time [n] [[WHITE]] - enl\u00e8ve le tableau des scores McMMO apr\u00e8s [[LIGHT_PURPLE]]n[[WHITE]] secondes
Commands.Scoreboard.Tip.Keep=[[GOLD]]Astuce : Utilisez [[RED]]/mcscoreboard keep[[GOLD]] quand le tableau des scores est affich\u00e9 pour l\'emp\u00eacher de s\'en aller.
Commands.Scoreboard.Tip.Clear=[[GOLD]]Astuce : Utilisez [[RED]]/mcscoreboard clear[[GOLD]] pour de d\u00e9barrasser du tableau des scores.
Commands.Skill.Invalid=Ce talent n\'existe pas !
Commands.Skill.Leaderboard=--Classement mcMMO ([[BLUE]]{0}[[YELLOW]])--
Commands.SkillInfo=[[GREEN]]- Voir des informations d\u00e9taill\u00e9es \u00e0 propos d\'un talent
Commands.Stats.Self=VOS STATISTIQUES
Commands.Stats=[[GREEN]]- Voir vos statistiques McMMO
Commands.ToggleAbility=[[GREEN]]- Active/D\u00e9sactive la possibilit\u00e9 d\'activation d\'une capacit\u00e9 avec un clic droit
Commands.Usage.0=L\'utilisation correcte est /{0}
Commands.Usage.1=L\'utilisation correcte est /{0} {1}
Commands.Usage.2=L\'utilisation correcte est /{0} {1} {2}
Commands.Usage.3=L\'utilisation correcte est /{0} {1} {2} {3}
Commands.Usage.FullClassName=nom de classe
Commands.Usage.Level=niveau
Commands.Usage.Message=message
Commands.Usage.Page=page
Commands.Usage.PartyName=nom
Commands.Usage.Password=mot de passe
Commands.Usage.Player=joueur
Commands.Usage.Rate=taux
Commands.Usage.Skill=Comp\u00e9tence
Commands.Usage.XP=exp
mcMMO.NoInvites=Vous n\'avez pas \u00e9t\u00e9 invit\u00e9
mcMMO.NoPermission=[[DARK_RED]]Vous n\'avez pas les droits.
mcMMO.NoSkillNote=[[DARK_GRAY]]Si vous n\'avez pas les droits pour une comp\u00e9tence, il n\'appara\u00eetra pas ici.
Party.Forbidden=[mcMMO] Les groupes ne sont pas permis dans ce monde (voir les permissions)
Party.Help.0=L\'utilisation correcte est [[DARK_AQUA]]{0} <joueur> [mot de passe].
Party.Help.1=pour cr\u00e9er une guilde, utilisez [[DARK_AQUA]]{0} <name> [mot de passe].
Party.Help.2=Consultez [[DARK_AQUA]]{0} [[RED]]pour plus d\'informations
Party.Help.3=Utilisez [[DARK_AQUA]]{0} <player> [motdepasse] [[RED]]pour rejoindre, ou [[DARK_AQUA]]{1} [[RED]]pour quitter
Party.Help.4=Pour bloquer ou d\u00e9bloquer votre groupe, utilisez [[DARK_AQUA]]{0}
Party.Help.5=Pour prot\u00e9ger votre guilde avec un mot de passe, utilisez [[DARK_AQUA]]{0} <password>
Party.Help.6=Pour expulser un joueur de la guilde, utilisez [[DARK_AQUA]]{0} <player>
Party.Help.7=Pour transmettre la possession de votre groupe, utilisez [[DARK_AQUA]]{0} <player>
Party.Help.8=Pour d\u00e9faire le groupe, utilisez [[DARK_AQUA]]{0}
Party.Help.9=Utilisez [[DARK_AQUA]]{0} [[RED]]pour partager des objets avec les membres du groupe
Party.Help.10=Utilisez [[DARK_AQUA]]{0} [[RED]]pour activer le partage d\'EXP entre les membres du groupe.
Party.InformedOnJoin={0} [[GREEN]]a rejoint votre groupe
Party.InformedOnQuit={0} [[GREEN]]a quitt\u00e9 votre groupe
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]a modifi\u00e9 le nom du groupe en [[WHITE]]{1}
Party.InvalidName=[[DARK_RED]]Ce n\'est pas un nom valide de guilde.
Party.Invite.Self=Vous ne pouvez pas vous inviter vous-m\u00eame !
Party.IsLocked=Ce groupe est d\u00e9j\u00e0 verrouill\u00e9 !
Party.IsntLocked=Cette guilde n\'est pas verrouill\u00e9e !
Party.Locked=Le groupe est verrouill\u00e9, seul le chef de groupe peut inviter.
Party.NotInYourParty=[[DARK_RED]]{0} n\'est pas dans votre guilde.
Party.NotOwner=[[DARK_RED]]Vous n\'\u00eates pas le chef de cette guilde.
Party.Target.NotOwner=[[DARK_RED]]{0} n\'est pas le chef de la guilde.
Party.Owner.New=[[GREEN]]{0} est le nouveau chef de la guilde.
Party.Owner.NotLeader=[[DARK_RED]]Vous n\'\u00eates d\u00e9sormais plus le chef de la guilde.
Party.Owner.Player=[[GREEN]]Vous \u00eates d\u00e9sormais le chef de la guilde.
Party.Password.None=Cette guilde est prot\u00e9g\u00e9e par un mot de passe. S\'il vous pla\u00eet, renseignez le mot de passe pour la rejoindre.
Party.Password.Incorrect=Le mot de passe de la guilde est incorrect.
Party.Password.Set=[[GREEN]]Mot de passe de la guilde r\u00e9gl\u00e9 \u00e0 {0}
Party.Password.Removed=[[GREEN]]Le mot de passe du groupe a \u00e9t\u00e9 enlev\u00e9.
Party.Player.Invalid=Ce joueur n\'existe pas.
Party.NotOnline=[[DARK_RED]]{0} n\'est pas connect\u00e9 !
Party.Player.InSameParty={0} est d\u00e9j\u00e0 dans votre guilde !
Party.PlayerNotInParty=[[DARK_RED]]{0} n\'est pas dans votre guilde
Party.Specify=Vous devez sp\u00e9cifier une guilde.
Party.Teleport.Dead=Vous ne pouvez pas vous t\u00e9l\u00e9porter sur un joueur mort.
Party.Teleport.Hurt=Vous avez \u00e9t\u00e9 bless\u00e9 dans les derni\u00e8res {0} secondes et vous ne pouvez par cons\u00e9quent pas \u00eatre t\u00e9l\u00e9port\u00e9.
Party.Teleport.Player=[[GREEN]]Vous vous \u00eates t\u00e9l\u00e9port\u00e9 sur {0}.
Party.Teleport.Self=Vous ne pouvez pas vous t\u00e9l\u00e9porter \u00e0 vous m\u00eame !
Party.Teleport.Target=[[GREEN]]{0} s\'est t\u00e9l\u00e9port\u00e9 sur vous.
Party.Teleport.Disabled={0} n\'a pas rendu possible la t\u00e9l\u00e9portation.
Party.Rename.Same=C\'est d\u00e9j\u00e0 le nom de votre groupe!
Party.Join.Self=Vous ne pouvez pas vous rejoindre vous-m\u00eame !
Party.Unlocked=[[GRAY]]Le groupe est d\u00e9verrouill\u00e9.
Party.Disband=[[GRAY]]La guilde a \u00e9t\u00e9 dissoute
Party.Alliance.Formed=[[GRAY]]Votre groupe est d\u00e9sormais alli\u00e9 avec [[GREEN]]{0}
Party.Alliance.Disband=[[GRAY]]Votre groupe n\'est d\u00e9sormais plus alli\u00e9 avec [[RED]]{0}
Party.Status.Locked=[[DARK_RED]](INVITATION-SEULEMENT)
Party.Status.Unlocked=[[DARK_GREEN]](OUVERT)
Party.LevelUp=Le niveau de votre guilde a \u00e9t\u00e9 augment\u00e9 de {0}. Total ({1})
Party.Feature.Chat=Tchat de guilde
Party.Feature.Teleport=T\u00e9l\u00e9portation de guilde
Party.Feature.Alliance=Alliances
Party.Feature.ItemShare=Partage d\'objets
Party.Feature.XpShare=Partage d\'EXP
Party.Feature.Locked.Chat=Bloqu\u00e9 jusqu\'\u00e0 {0}+ (Tchat de guilde)
Party.Feature.Locked.Teleport=Bloqu\u00e9 jusqu\'\u00e0 {0}+ (T\u00e9l\u00e9portation de guilde)
Party.Feature.Locked.Alliance=Bloqu\u00e9 jusqu\'\u00e0 {0}+ (Alliances)
Party.Feature.Locked.ItemShare=Bloqu\u00e9 jusqu\'\u00e0 {0}+ (Partage d\'objets)
Party.Feature.Locked.XpShare=Bloqu\u00e9 jusqu\'\u00e0 {0}+ (Partage d\'EXP)
Party.Feature.Disabled.1=Le tchat de guilde n\'est pas d\u00e9bloqu\u00e9 pour le moment.
Party.Feature.Disabled.2=La t\u00e9l\u00e9portation de guilde n\'est pas d\u00e9bloqu\u00e9e pour le moment.
Party.Feature.Disabled.3=Les alliances de guilde ne sont pas d\u00e9bloqu\u00e9es pour le moment.
Party.Feature.Disabled.4=Le partage d\'objets avec la guilde n\'est pas d\u00e9bloqu\u00e9 pour le moment.
Party.Feature.Disabled.5=Le partage d\'EXP gr\u00e2ce \u00e0 la guilde n\'est pas d\u00e9bloqu\u00e9 pour le moment.
Party.ShareType.Xp=EXP
Party.ShareType.Item=OBJET
Party.ShareMode.None=AUCUN
Party.ShareMode.Equal=EGAL
Party.ShareMode.Random=Al\u00e9atoire
Party.ItemShare.Category.Loot=R\u00e9compenses
Party.ItemShare.Category.Mining=Minage
Party.ItemShare.Category.Herbalism=Herboristerie
Party.ItemShare.Category.Woodcutting=B\u00fbcheronnage
Party.ItemShare.Category.Misc=Divers
Commands.XPGain.Acrobatics=Chuter
Commands.XPGain.Alchemy=Confection de potions
Commands.XPGain.Archery=Attaquer des monstres
Commands.XPGain.Axes=Attaquer des monstres
Commands.XPGain.Child=Gagne les niveaux des Talents Parents
Commands.XPGain.Excavation=Creuser et d\u00e9couvrir des tr\u00e9sors
Commands.XPGain.Fishing=P\u00eacher
Commands.XPGain.Herbalism=Cueillette de v\u00e9g\u00e9taux
Commands.XPGain.Mining=Miner de la Pierre & des Minerais
Commands.XPGain.Repair=R\u00e9paration
Commands.XPGain.Swords=Attaquer des monstres
Commands.XPGain.Taming=Apprivoisement d\'Animaux, ou combat avec vous loups
Commands.XPGain.Unarmed=Attaquer des monstres
Commands.XPGain.Woodcutting=Abbatage de bois
Commands.XPGain=[[DARK_GRAY]]Gain d\'exp\u00e9rience: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]Votre barre d\'XP est maintenant verrouill\u00e9e sur {0} !
Commands.xplock.unlocked=[[GOLD]]Votre barre d\'XP est maintenant [[GREEN]]D\u00c9VERROUILL\u00c9E[[GOLD]] !!
Commands.xprate.modified=Le TAUX D\'EXP a \u00e9t\u00e9 pass\u00e9 \u00e0 {0}
Commands.xprate.over=L\u2019\u00e9v\u00e9nement de bonus d\'XP mcMMO est TERMIN\u00c9 !!
Commands.xprate.proper.0=L\'usage correct pour changer le taux d\'XP est /xprate <valeur> <true/false>
Commands.xprate.proper.1=L\'usage correct pour restaurer le taux d\'XP est /xprate reset
Commands.xprate.proper.2=Veuillez sp\u00e9cifier true ou false pour indiquer si il s\'agit ou pas d\'un \u00e9v\u00e9nement temporaire
Commands.xprate.started.0=[[GOLD]]L\u2019\u00c9V\u00c9NEMENT BONUS D\'XP mcMMO VIENT DE COMMENCER !
Commands.xprate.started.1=[[GOLD]]Le bonus d\'XP mcMMO est maintenant de {0}x !
XPRate.Event=[[GOLD]]Un \u00e9v\u00e9nement bonus d\'Exp\u00e9rience est actuellement lanc\u00e9 ! Le bonus est de {0}x !
Effects.Effects=EFFETS
Effects.Child=[[DARK_GRAY]]NIVEAU: [[GREEN]]{0}
Effects.Level=[[DARK_GRAY]]NIV : [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Parent=[[GOLD]]{0} -
Effects.Template=[[DARK_AQUA]]{0} : [[GREEN]]{1}
Guides.Available=[[GRAY]]Guide pour le/la {0} est disponible - \u00e9crivez /{1} ? [page]
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Guide[[GOLD]]=-
Guides.Page.Invalid=Le num\u00e9ro de page est invalide
Guides.Page.OutOfRange=Cette page n\'existe pas, il y a seulement {0} pages totales.
Guides.Usage=L\'utilisation est /{0} ? [page]
Guides.Acrobatics.Section.0=[[DARK_AQUA]]A propos de l\'Acrobatie:\n[[YELLOW]]L\'acrobatie est l\'art de bouger gracieusement dans mcMMO.\n[[YELLOW]]Donne des bonus au combat et de r\u00e9sistance aux d\u00e9g\u00e2ts physiques.\n[[DARK_AQUA]]GAIN D\'XP:\n[[YELLOW]]Pour gagner de l\'exp\u00e9rience, vous devez esquiver des d\u00e9g\u00e2ts\n[[YELLOW]]en combat ou encaisser des d\u00e9g\u00e2ts de chute.
Guides.Acrobatics.Section.1=[[DARK_AQUA]]Comment fonctionne la Roulade?\n[[YELLOW]]Vous avez une chance, lorsque vous prenez des d\u00e9g\u00e2ts dus \u00e0 une chute,\n[[YELLOW]]d\'esquiver ces d\u00e9g\u00e2ts. Maintenez la touche pour s\'accroupir\n[[YELLOW]]pour doubler les chances d\'esquiver ces d\u00e9g\u00e2ts.\n[[YELLOW]]Cette manipulation activera la Roulade Gracieuse. \n[[YELLOW]]La Roulade Gracieuse fonctionne comme une Roulade classique,\n[[YELLOW]]mais vous avez deux fois plus de chance d\'\u00e9chapper aux d\u00e9g\u00e2ts.\n[[YELLOW]]Votre pourcentage de chance de Roulade d\u00e9pend du niveau de votre Comp\u00e9tence.
Guides.Acrobatics.Section.2=[[DARK_AQUA]]Comment fonctionne l\'esquive?\n[[YELLOW]]L\'esquive est une capacit\u00e9 passive qui peut vous permettre de\n[[YELLOW]]diminuer les d\u00e9g\u00e2ts de moiti\u00e9 lorsque vous \u00eates bless\u00e9 au combat.\n[[YELLOW]]Les chances d\'esquiver sont fonction de votre niveau de comp\u00e9tence.
Guides.Alchemy.Section.0=[[DARK_AQUA]]A propos de l\'alchimie:\n[[YELLOW]]L\'alchimie est l\'art de pr\u00e9parer des potions.\n[[YELLOW]]Donne des bonus de vitesse \u00e0 la pr\u00e9paration des potions mais aussi\n[[YELLOW]]l\'ajout de nouvelles potions (pr\u00e9c\u00e8demment) incraftables.\n[[DARK_AQUA]]GAIN D\'XP:\n[[YELLOW]]Pour gagner de l\'exp\u00e9rience vous devez pr\u00e9parer des potions.
Guides.Alchemy.Section.1=[[DARK_AQUA]]Comment fonctionne Catalyse?\n[[YELLOW]]Catalyse acc\u00e8lere le processus de pr\u00e9paration des potions,\n[[YELLOW]]jusqu\'\u00e0 4x plus vite au niveau 1000.\n[[YELLOW]]Par d\u00e9faut, cette capacit\u00e9 est d\u00e9bloqu\u00e9e au niveau 100.
Guides.Alchemy.Section.2=[[DARK_AQUA]]Comment fonctionne Concoction?\n[[YELLOW]]Concoction vous permet de pr\u00e9parer plus de potions \u00e0 l\'aide [[YELLOW]]d\'ingr\u00e9dients sp\u00e9ciaux..\n[[YELLOW]]Les ingr\u00e9dients que vous pouvez utiliser sont d\u00e9termin\u00e9s\n[[YELLOW]]par votre rang. Il y a 8 rangs \u00e0 d\u00e9bloquer.
Guides.Alchemy.Section.3=[[DARK_AQUA]]Ingr\u00e9dients pour la confections de niveau 4 :\n[[YELLOW]]Poudre d\'Incendiaire, \u0152il Ferment\u00e9 d\u2019Araign\u00e9e, Larme de Ghast, Redstone,\n[[YELLOW]]Poudre de Pierre Lumineuse, Sucre, Melon Scintillant, Carotte Dor\u00e9e,\n[[YELLOW]]Cr\u00e8me de Magma, Verrue du Nether, \u0152il d\'Araign\u00e9e, Poudre \u00e0 Canon, N\u00e9nuphar,\n[[YELLOW]]Poisson-Globe\n[[YELLOW]](Potions de Minecraft Vanilla)
Guides.Alchemy.Section.4=[[DARK_AQUA]]Ingr\u00e9dients pour la confections de niveau 2 :\n[[YELLOW]]Carotte (Potion de H\u00e2te)\n[[YELLOW]]Boule de Slime (Potion de Lassitude)\n[[DARK_AQUA]]Ingr\u00e9dients pour la confections de niveau 3 :\n[[YELLOW]]Quartz (Potion d\'Absorption)\n[[YELLOW]]Champignon Rouge (Potion de Saut Boost\u00e9)
Guides.Alchemy.Section.5=[[DARK_AQUA]]Ingr\u00e9dients pour la confections de niveau 4 :\n[[YELLOW]]Pomme (Potion de Boost de Vie)\n[[YELLOW]]Viande Putr\u00e9fi\u00e9e (Potion de Faim)\n[[DARK_AQUA]]Ingr\u00e9dients pour la confections de niveau 5 :\n[[YELLOW]]Champignon Brun (Potion de Naus\u00e9e)\n[[YELLOW]]Poche d\'Encre (Potion d\'Aveuglement)
Guides.Alchemy.Section.6=[[DARK_AQUA]]Ingr\u00e9dients pour la confections de niveau 6 :\n[[YELLOW]]Herbes Hautes (Potion de Saturation)\n[[DARK_AQUA]]Ingr\u00e9dients pour la confections de niveau 7 :\n[[YELLOW]]Patate Empoisonn\u00e9e (Potion de Wither)\n[[DARK_AQUA]]Ingr\u00e9dients pour la confections de niveau 8 :\n[[YELLOW]]Pomme d\'or normale (Potion de R\u00e9sistance)
Guides.Archery.Section.0=[[DARK_AQUA]]A propos de l\'Archerie:\n[[YELLOW]]L\'archerie est l\'art du tir \u00e0 l\'arc.\n[[YELLOW]]Cette comp\u00e9tence fournit divers bonus de combat, par exemple une\n[[YELLOW]]augmentation des d\u00e9g\u00e2ts proportionelle \u00e0 votre niveau, la capacit\u00e9\n[[YELLOW]]de rendre confus d\'autres joueurs en PvP,etc. En plus de cela, vous\n[[YELLOW]]pouvez aussi r\u00e9cup\u00e9rer quelques fl\u00e8ches des corps de vos ennemis.\n[[DARK_AQUA]]GAIN D\'XP:\n[[YELLOW]]Pour gagner de l\'exp\u00e9rience dans cette discipline vous devez infliger\n[[YELLOW]]des d\u00e9g\u00e2ts \u00e0 l\'aide de vos fl\u00e8ches.
Guides.Archery.Section.1=[[DARK_AQUA]]Comment fonctionne tir pr\u00e9cis?\n[[YELLOW]]Tir pr\u00e9cis augmente les d\u00e9g\u00e2ts de vos tirs.\n[[YELLOW]]L\'augmentation des d\u00e9g\u00e2ts est fonction de\n[[YELLOW]]votre niveau en tir \u00e0 l\'arc..\n[[YELLOW]]Par d\u00e9faut, vos d\u00e9g\u00e2ts augmentent de 10% tous les\n[[YELLOW]]50 niveaux, jusqu\'\u00e0 un maximum de 200% de bonus.
Guides.Archery.Section.2=[[DARK_AQUA]]Comment fonctionne d\u00e9sorienter?\n[[YELLOW]]Vous avez une chance de d\u00e9sorienter votre cible lorsque vous lui\n[[YELLOW]]tirez dessus. Sous l\'effet de d\u00e9sorienter, votre cible regarde droit\n[[YELLOW]]vers le ciel pendant une courte dur\u00e9e.\n[[YELLOW]]Un tir qui d\u00e9soriente inflige 4 d\u00e9g\u00e2ts suppl\u00e9mentaires (2 coeurs).
Guides.Archery.Section.3=[[DARK_AQUA]]Comment fonctionne la r\u00e9cup\u00e9ration de fl\u00e8ches?\n[[YELLOW]]Vous avez une chance de r\u00e9cup\u00e9rer certaines de vos fl\u00e8ches\n[[YELLOW]]lorsque vous tuez un mob \u00e0 l\'arc.\n[[YELLOW]]Cette chance augmente avec votre niveau en Tir \u00e0 l\'arc.\n[[YELLOW]]Cette capacit\u00e9 augmente de 0.1% par niveau, jusqu\'\u00e0 100%\n[[YELLOW]]au niveau 1000.
Guides.Axes.Section.0=[[DARK_AQUA]]Concernant les Haches:\n[[YELLOW]]Avec la comp\u00e9tence Hache vous pouvez utiliser votre Hache pour bien plus\n[[YELLOW]]que de la d\u00e9forestation! Vous pourrez d\u00e9couper des mobs et des joueurs\n[[YELLOW]]pour gagner de l\'exp\u00e9rience, attaquer des mobs avec un effet de recul\n[[YELLOW]]et infliger des coups critiques MORTELS sur mobs et joueurs.\n[[YELLOW]]Votre hache devient aussi un outil redoutable pour perforer\n[[YELLOW]]l\'armure de vos ennemis au fur et \u00e0 mesure que votre niveau\n[[YELLOW]]augmente.\n[[DARK_AQUA]]Gain d\'exp\u00e9rience:\n[[YELLOW]]Pour gagner de l\'exp\u00e9rience, il vous faut attaquer un joueur ou un mob\n[[YELLOW]]avec une Hache.
Guides.Axes.Section.1=[[DARK_AQUA]]Comment fonctionne le Pourfendeur de Cr\u00e2nes?\n[[YELLOW]]Cette capacit\u00e9 vous permet d\'infliger des d\u00e9g\u00e2ts de zone.\n[[YELLOW]]Ce d\u00e9g\u00e2t de zone infligera la moiti\u00e9 de ce que vous avez inflig\u00e9 \u00e0 votre\n[[YELLOW]]cible principale et s\'av\u00e8re donc utile pour s\'attaquer \u00e0 des hordes de mobs.
Guides.Axes.Section.2=[[DARK_AQUA]]Comment fonctionne le Coup Critique?\n[[YELLOW]]Le Coup Critique est une capacit\u00e9 automatique qui donne une chance\n[[YELLOW]]d\'infliger des d\u00e9g\u00e2ts suppl\u00e9mentaires.\n[[YELLOW]]Par d\u00e9faut, par pallier de 2 niveaux dans la Comp\u00e9tence Hache, vous gagnez\n[[YELLOW]]0.1% de chance de porter le Coup Critique, causant 2 fois plus de d\u00e9g\u00e2ts aux mobs\n[[YELLOW]]ou 1.5 fois de d\u00e9g\u00e2ts aux joueurs.
Guides.Axes.Section.3=[[DARK_AQUA]]Comment fonctionne la Ma\u00eetrise de la Hache?\n[[YELLOW]] la Ma\u00eetrise de la Hache est une capacit\u00e9 automatique qui permet d\'infliger plus de d\u00e9g\u00e2ts\n[[YELLOW]]\u00e0 vos cibles en utilisant une Hache.\n[[YELLOW]]Par d\u00e9faut, ce bonus augmente vos d\u00e9g\u00e2t inflig\u00e9s de 1 par pallier de 50 niveaux\n[[YELLOW]]pour atteindre un maximum de 4 au niveau 200.
Guides.Axes.Section.4=[[DARK_AQUA]]Comment fonctionne l\'Impact d\'Armure?\n[[YELLOW]]Frappez avez suffisamment de force pour briser une armure!\n[[YELLOW]]Cette capacit\u00e9 a une chance passive de d\u00e9t\u00e9riorer l\'armure de votre ennemi.\n[[YELLOW]] de votre ennemi. Ces d\u00e9g\u00e2ts augmentent avec votre niveau de la Comp\u00e9tence Haches.
Guides.Axes.Section.5=[[DARK_AQUA]]Comment fonctionne l\'Impact Am\u00e9lior\u00e9?\n[[YELLOW]]Vous avez une chance, automatique, pour obtenir un impact plus important\n[[YELLOW]]lorsque vous attaquez avec votre hache.\n[[YELLOW]]Par d\u00e9faut cette chance est de 25%. Cette capacit\u00e9 a\n[[YELLOW]]un effet de recul consid\u00e9rable, similaire \u00e0 l\u2019enchantement Frappe II.\n[[YELLOW]]En plus, les d\u00e9g\u00e2ts sont augment\u00e9s avec cette capacit\u00e9.
Guides.Excavation.Section.0=[[DARK_AQUA]]A propos de l\'Excavation :\n[[YELLOW]]L\'Excavation est l\'action de creuser la terre pour y trouver des tr\u00e9sors.\n[[YELLOW]]En excavant le monde, vous trouverez des tr\u00e9sors.\n[[YELLOW]]Plus vous effectuerez ceci, plus vous pourrez trouver de tr\u00e9sors.\n[[DARK_AQUA]]Gain d\'exp\u00e9rience:\n[[YELLOW]]Pour gagner de l\'exp\u00e9rience dans cette comp\u00e9tence vous devez creuser avec une pelle en main.\n[[YELLOW]]Seulement certains mat\u00e9riaux peuvent \u00eatre creus\u00e9s pour des tr\u00e9sors et de l\'exp\u00e9rience.
Guides.Excavation.Section.1=[[DARK_AQUA]]Mat\u00e9riaux compatibles:\n[[YELLOW]]Herbe, Terre, Sable, Argile, Gravier, Mycelium, Sable des \u00e2mes
Guides.Excavation.Section.2=[[DARK_AQUA]]Comment utiliser le Giga Broyeur:\n[[YELLOW]]Avec une pioche dans votre main, faites clic droit pour pr\u00e9parer votre outil.\n[[YELLOW]]Une fois cela fait, vous avez jusqu\'\u00e0 4 secondes pour commencer \u00e0 miner\n[[YELLOW]]des mat\u00e9riaux compatibles, ce qui activera le Broyeur.
Guides.Excavation.Section.3=[[DARK_AQUA]]Comment fonctionne Foreur?\n[[YELLOW]]Foreur est une capacit\u00e9 avec temps de recharge, li\u00e9e\n[[YELLOW]]\u00e0 votre comp\u00e9tence d\'excavation. Cela triple les chances\n[[YELLOW]]de trouver des tr\u00e9sors et d\u00e9truis instantan\u00e9ment les\n[[YELLOW]]blocs excavables.
Guides.Excavation.Section.4=[[DARK_AQUA]]Comment fonctionne Chasseur de Tr\u00e9sors?\n[[YELLOW]]Les tr\u00e9sors r\u00e9cup\u00e9rables requi\u00e8rent d\'avoir un certain niveau\n[[YELLOW]]en excavation pour avoir une chance de les faire tomber, en [[YELLOW]]cons\u00e9quence de quoi il est difficile d\'estimer son utilit\u00e9.\n[[YELLOW]]Mais gardez \u00e0 l\'esprit que plus votre niveau est \u00e9lev\u00e9,\n[[YELLOW]]plus vous pourrez trouver de tr\u00e9sors diff\u00e9rents.\n[[YELLOW]]Rappelez vous aussi que chaque type de bloc excavable\n[[YELLOW]]contient sa propre liste de tr\u00e9sors uniques.\n[[YELLOW]]En d\'autres termes, vous trouverez des tr\u00e9sors diff\u00e9rents en creusant\n[[YELLOW]]du sable plut\u00f4t que du gravier (par exemple).
Guides.Excavation.Section.5=[[DARK_AQUA]]Notes sur l\'Excavation:\n[[YELLOW]]Les loots de l\'excavation sont enti\u00e8rement modifiables\n[[YELLOW]]donc les r\u00e9sultats varient selon les serveurs.
Guides.Fishing.Section.0=[[DARK_AQUA]]Concernant la P\u00eache:\n[[YELLOW]]La Comp\u00e9tence P\u00eache rend la P\u00eache int\u00e9ressante!\n[[YELLOW]]Trouvez des tr\u00e9sors cach\u00e9s, et d\u00e9robez des objets aux mobs!\n[[DARK_AQUA]]Gain d\'Exp\u00e9rience:\n[[YELLOW]]P\u00eachez des poissons!
Guides.Fishing.Section.1=[[DARK_AQUA]]Comment fonctionne le Chasseur de Tr\u00e9sors?\n[[YELLOW]]Cette capacit\u00e9 vous permet de trouver des tr\u00e9sors en p\u00eachant\n[[YELLOW]]avec une petite chance de trouver des objets enchant\u00e9s.\n[[YELLOW]]Tous les tr\u00e9sors possibles sont trouvables \u00e0 n\'importe\n[[YELLOW]]quel niveau de la Comp\u00e9tence P\u00eache. Trouver un objet\n[[YELLOW]]d\u00e9pend n\u00e9anmoins de la raret\u00e9 de ce dernier.\n[[YELLOW]]Plus votre Comp\u00e9tence P\u00eache est \u00e9lev\u00e9e, plus\n[[YELLOW]]vous aurez de chances de trouver de meilleurs tr\u00e9sors!
Guides.Fishing.Section.2=[[DARK_AQUA]]Comment fonctionne la P\u00eache sur Glace?\n[[YELLOW]]Cette capacit\u00e9 passive vous permet de p\u00eacher sur des lacs gel\u00e9s!\n[[YELLOW]]Lancez votre cane \u00e0 p\u00eache dans un lac gel\u00e9 et cette capacit\u00e9\n[[YELLOW]]cr\u00e9era un trou dans la glace pour p\u00eacher.
Guides.Fishing.Section.3=[[DARK_AQUA]]Comment fonctionne Ma\u00eetre P\u00eacheur?\n[[YELLOW]]Cette capacit\u00e9 passive augmente la chance d\'une touche sur votre ligne de p\u00eache.\n[[YELLOW]]Lorsque vous avez d\u00e9bloqu\u00e9 cette capacit\u00e9, en p\u00eachant dans un bateau\n[[YELLOW]]ou lorsque vous \u00eates dans un biome oc\u00e9an, la chance d\'une touche est doubl\u00e9e.
Guides.Fishing.Section.4=[[DARK_AQUA]]Comment fonctionne la Secousse?\n[[YELLOW]]Cette capacit\u00e9 active vous permet de r\u00e9cup\u00e9rer des objets sur les mobs\n[[YELLOW]]en les crochetant avec une cane \u00e0 p\u00eache.\n[[YELLOW]]Les mobs feront alors tomber au sol ce qu\'ils laisseraient normalement \u00e0 leur mort.\n[[YELLOW]]Il est aussi possible de r\u00e9cup\u00e9rer des cr\u00e2nes de mobs, qui sont normalement\n[[YELLOW]]non r\u00e9cup\u00e9rables.
Guides.Fishing.Section.5=[[DARK_AQUA]]Comment fonctionne le Repas du P\u00eacheur?\n[[YELLOW]]Cette capacit\u00e9 passive vous permet d\'augmenter la vie r\u00e9cup\u00e9r\u00e9e\n[[YELLOW]]en mangeant du poisson.
Guides.Fishing.Section.6=[[DARK_AQUA]]Notes sur la P\u00eache:\n[[YELLOW]]Les loots de la P\u00eache sont enti\u00e8rement modifiables\n[[YELLOW]]donc les r\u00e9sultats varient selon les serveurs.
Guides.Herbalism.Section.0=[[DARK_AQUA]]A propos de l\'herboristerie:\n[[YELLOW]]L\'herboristerie concerne la culture et la r\u00e9colte de plantes et d\'herbes.\n[[DARK_AQUA]]GAIN D\'XP:\n[[YELLOW]]R\u00e9colte de plantes et d\'herbes.
Guides.Herbalism.Section.1=[[DARK_AQUA]]Blocs compatibles\n[[YELLOW]]Bl\u00e9, Potatoes, Carrotes, Melons, \n[[YELLOW]]Citrouilles, Canne \u00e0 sucre, F\u00e8ves de Cacao, Fleurs, Cactus, Champignons,\n[[YELLOW]]Verrues du Nether, N\u00e9nuphars, et Lianes.
Guides.Herbalism.Section.2=[[DARK_AQUA]]Comment fonctionne Main Verte?\n[[YELLOW]]Main Verte est une capacit\u00e9 activ\u00e9e, gr\u00e2ce \u00e0 un clic-droit\n[[YELLOW]]lorsque vous tenez une houe.\n[[YELLOW]]Main Verte donne au joueur une chance de r\u00e9cup\u00e9rer 3x ce que\n[[YELLOW]]donnerai la plante r\u00e9colt\u00e9e. Vous pouvez \u00e9galement utiliser des\n[[YELLOW]]graines pour insufler la vie \u00e0 certains blocs \n[[YELLOW]]afin de les transformer.
Guides.Herbalism.Section.3=[[DARK_AQUA]]Comment Mains Vertes (Plantations) fonctionne ?\n[[YELLOW]]Cette capacit\u00e9 passive va automatiquement replanter les \n[[YELLOW]]plantations lorsque celles-ci ont \u00e9t\u00e9 r\u00e9colt\u00e9es.\n[[YELLOW]]Les chances de succ\u00e8es d\u00e9pendent de votre talent Herborisme.
Guides.Herbalism.Section.4=[[DARK_AQUA]]Comment Mains Vertes (Pierre/Briques de Pierre/Terre) fonctionent-elles ?\n[[YELLOW]]Cette cpacit\u00e9 active vous permet de transformer les blocs dans leur\n[[YELLOW]]forme homologue (Pierre Moussue/Brique de Pierre Moussue/Herbe).\n[[YELLOW]]Vous pouvez faire ceci en effectuant un clic droit\n[[YELLOW]]sur le bloc, en tenant des graines. une graine sera alors consomm\u00e9e.
Guides.Herbalism.Section.5=[[DARK_AQUA]]Comment fonctionne r\u00e9gime fermier?\n[[YELLOW]]Cette capacit\u00e9 passive augmente le montant d\'\u00e9nergie rendue \n[[YELLOW]]lorsque vous mangez du pain, cookies, past\u00e8que, soupe \n[[YELLOW]]de champignons, carottes et patates.
Guides.Herbalism.Section.6=[[DARK_AQUA]]Comment fonctione Chance d\'Hyrule?\n[[YELLOW]]Cette capacit\u00e9 passive vous donne une chance de trouver des\n[[YELLOW]]objets rares lorsque vous cassez certains blocs avec une \u00e9p\u00e9e.
Guides.Herbalism.Section.7=[[DARK_AQUA]]Comment fonctionne Double Drops?\n[[YELLOW]]Cette capacit\u00e9 passive donne au joueur\n[[YELLOW]]plus d\'objets lors de ses r\u00e9coltes.
Guides.Mining.Section.0=[[DARK_AQUA]]A propos du Minage:\n[[YELLOW]]Le Minage consiste \u00e0 miner de la pierre et des minerais.\n[[YELLOW]]Il occtroie des bonus sur le nombre de minerais obtenus lors du minage.\n[[DARK_AQUA]]Gain d\'exp\u00e9rience:\n[[YELLOW]]Pour gagner de l\'exp\u00e9rience dans cette comp\u00e9tence, vous devez simplement miner avec une pioche.\n[[YELLOW]]Seulement certains blocs rapportent de l\'exp\u00e9rience.
Guides.Mining.Section.1=[[DARK_AQUA]]Mat\u00e9riaux compatibles:\n[[YELLOW]]Pierre lisse, Minerais de Charbon, Minerais de Fer, Minerais d\'Or, Minerais de Diamant, Minerais de Redstone,\n[[YELLOW]]Minerais de Lapis, Obsidienne, Pierre Moussue, Pierre de l\'End,\n[[YELLOW]]Pierre Lumineuse, et Netherrack.
Guides.Mining.Section.2=[[DARK_AQUA]]Comment utiliser le Broyeur:\n[[YELLOW]]Avec une pioche dans votre main, faites clic droit pour pr\u00e9parer votre outil.\n[[YELLOW]]Une fois cela fait, vous avez jusqu\'\u00e0 4 secondes pour commencer \u00e0 miner\n[[YELLOW]]des mat\u00e9riaux compatibles, ce qui activera le Broyeur.
Guides.Mining.Section.3=[[DARK_AQUA]]Qu\'est-ce que le Super Briseur?\n[[YELLOW]]Le Super Briseur est une capacit\u00e9 avec un temps de r\u00e9cup\u00e9ration li\u00e9 \u00e0 la Comp\u00e9tence\n[[YELLOW]]minage. Il triple vos chances de r\u00e9cup\u00e9rer des objets et\n[[YELLOW]]permet la casse instantan\u00e9e sur des minerais.
Guides.Mining.Section.4=[[DARK_AQUA]]Comment utiliser le Minage Explosif:\n[[YELLOW]]Avec un d\u00e9tonateur en main, \u00e0 savoir un briquet par d\u00e9faut,\n[[YELLOW]]s\'accroupir et faire un clic droit sur de la TNT \u00e0 distance. Ceci fera\n[[YELLOW]]exploser instantan\u00e9ment la TNT.
Guides.Mining.Section.5=[[DARK_AQUA]]Comment fonctionne le Minage par Explosions?\n[[YELLOW]]Le Minage par Explosions est une capacit\u00e9 avec un temps de recharge li\u00e9 au talent\n[[YELLOW]]de Minage. Il donne des bonus lors de l\'utilisation nde TNT pour le minage et vous permet\n[[YELLOW]]de contr\u00f4ler l\'explosion de TNT. Il y a 3 parties du Minage par Explosions.\n[[YELLOW]]La premi\u00e8re est les Grosses Bombes. Elle vous permet d\'augmenter le rayon d\'explosion.\n[[YELLOW]]La seconde est la Demolition Experte, qui diminue les d\u00e9g\u00e2ts provenants des explosions de TNT\n[[YELLOW]]La troisi\u00e8me augmente le nombre de minerais obtenus par la TNT et diminue les pertes.
Guides.Repair.Section.0=[[DARK_AQUA]]A propos de la R\u00e9paration :\n[[YELLOW]]La r\u00e9paration vous permet d\'utiliser un bloc de fer pour r\u00e9parer\n[[YELLOW]]des armures et des outils.\n[[DARK_AQUA]]Gain d\'exp\u00e9rience:\n[[YELLOW]]R\u00e9parer des outils ou des armures en utilisant l\'enclume de mcMMO.\n[[YELLOW]]C\'est un bloc de fer par d\u00e9faut et il ne doit pas \u00eatre confondu avec\n[[YELLOW]]l\'enclume de Minecraft Vanilla.
Guides.Repair.Section.1=[[DARK_AQUA]]Comment utiliser R\u00e9paration?\n[[YELLOW]]Placez une enclume mcMMO et faites un clic droit pour r\u00e9parer l\'objet\n[[YELLOW]]que vous avez en main. Ceci consomme 1 objet \u00e0 chaque utilisation.
Guides.Repair.Section.2=[[DARK_AQUA]]Comment fonctionne Ma\u00eetrise de la Forge?\n[[YELLOW]]Ma\u00eetrise de la Forge augmente la quantit\u00e9 de r\u00e9parations effectu\u00e9es.\n[[YELLOW]]La quantit\u00e9 de durabilit\u00e9 suppl\u00e9mentaire attribu\u00e9e est fonction de \n[[YELLOW]]votre niveau en R\u00e9paration.
Guides.Repair.Section.3=[[DARK_AQUA]]Comment fonctionne la Super R\u00e9paration?\n[[YELLOW]]La Super R\u00e9paration est une capacit\u00e9 passive . Lors de la r\u00e9paration d\'un \u00e9l\u00e9ment ,\n[[YELLOW]]elle accorde aux joueurs une chance de r\u00e9parer un \u00e9l\u00e9ment avec\n[[YELLOW]]une double efficacit\u00e9.
Guides.Repair.Section.4=[[DARK_AQUA]]Comment fonctionne Forge arcanique?\n[[YELLOW]]Cette capacit\u00e9 passive vous permet de r\u00e9parer des objets avec une\n[[YELLOW]]certaine chance de conserver les enchantements. Ces derniers\n[[YELLOW]]pourrons \u00eatre conserv\u00e9 \u00e0 leur niveau, rendus \u00e0 un niveau inf\u00e9rieur\n[[YELLOW]]ou compl\u00e8tement perdus.
Guides.Salvage.Section.0=[[DARK_AQUA]]A propos du Recyclage:\n[[YELLOW]]Le Recyclage vous permet d\'utiliser un bloc d\'or pour r\u00e9cup\u00e9rer des mati\u00e8res premi\u00e8res\n[[YELLOW]]sur de l\'armure ou des outils.\n[[DARK_AQUA]]Gain d\'Exp\u00e9rience:\n[[YELLOW]]Le Recyclage est une Comp\u00e9tence enfant des comp\u00e9tences R\u00e9paration et P\u00eache, votre niveau\n[[YELLOW]]de Recyclage est donc bas\u00e9 sur les niveaux des comp\u00e9tences R\u00e9paration et P\u00eache.
Guides.Salvage.Section.1=[[DARK_AQUA]]Comment utiliser le Recyclage?\n[[YELLOW]]Placez une Enclume de Recyclage mcMMO et faites un clic-droit pour recycler \n[[YELLOW]]l\'objet que vous avez en main. Ceci cassera votre objet\n[[YELLOW]]et vous rendra les mat\u00e9riaux qui composent l\'objet.\n[[YELLOW]]Par exemple, recycler une pioche en fer vous rendra des barres de fer.
Guides.Salvage.Section.2=[[DARK_AQUA]]Comment fonctionne le Recyclage Avanc\u00e9?\n[[YELLOW]]Lorsque d\u00e9bloqu\u00e9e, cette capacit\u00e9 vous permet de recycler des objets d\u00e9t\u00e9rior\u00e9s.\n[[YELLOW]]Votre pourcentage de r\u00e9cup\u00e9ration de mat\u00e9riaux augmente avec votre niveau. Un pourcentage\n[[YELLOW]]plus \u00e9lev\u00e9 signifie que vous pouvez r\u00e9cup\u00e9rer davantage de mat\u00e9riaux.\n[[YELLOW]]Avec le Recyclage Avanc\u00e9 vous r\u00e9cup\u00e9rerez toujours un mat\u00e9riaux \n[[YELLOW]]sauf si l\'objet est trop endommag\u00e9. Vous n\'aurez donc pas \u00e0 vous\n[[YELLOW]]soucier de casser des objets sans avoir rien r\u00e9cup\u00e9r\u00e9.
Guides.Salvage.Section.3=[[DARK_AQUA]]Voici une illustration pour expliquer comment cela fonctionne:\n[[YELLOW]]Disons que nous recyclons une pioche en or endommag\u00e9e \u00e0 20%,\n[[YELLOW]]ce qui veux dire que le montant maximum que vous pouvez r\u00e9cup\u00e9rer est 2 (66%).\n[[YELLOW]](parce que la pioche est constitu\u00e9e de 3 lingots, valant chacun\n[[YELLOW]]33,33% de durabilit\u00e9). Si votre pourcentage de r\u00e9cup\u00e9ration de mat\u00e9riaux\n[[YELLOW]]est en dessous de 66% vous ne pourrez pas r\u00e9cup\u00e9rer 2 lingots.\n[[YELLOW]]Si ce pourcentage est au dessus de 66% vous pourrez r\u00e9cup\u00e9rer le\n[[YELLOW]]\"montant maximum\", donc 2 lingots.
Guides.Salvage.Section.4=[[DARK_AQUA]]Comment fonctionne le Recyclage Arcanique?\n[[YELLOW]]Cette capacit\u00e9 vous permet de r\u00e9cup\u00e9rer des livres enchant\u00e9s lors que vous recyclez\n[[YELLOW]]des objets enchant\u00e9s. En fonction de votre niveau, la chance de r\u00e9cup\u00e9rer avec succ\u00e8s\n[[YELLOW]]des enchantements entiers ou partiels varie.\n[[YELLOW]]Lorsqu\'un enchantement est partiellement r\u00e9cup\u00e9r\u00e9, le livre enchant\u00e9\n[[YELLOW]]aura un niveau d\'enchantement plus bas compar\u00e9 \u00e0 l\'enchantement\n[[YELLOW]]de l\'objet que recyclez.
Guides.Smelting.Section.0=Arrive bient\u00f4t...
Guides.Swords.Section.0=[[DARK_AQUA]]A propos du combat \u00e0 l\'\u00e9p\u00e9e::\n[[YELLOW]]Cette comp\u00e9tence octroie un bonus si vous combattez avec\n[[YELLOW]]une \u00e9p\u00e9e.\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]Le gain d\'XP est bas\u00e9 sur le montant des d\u00e9gats inflig\u00e9s aux mobs \n[[YELLOW]]et autres joueurs avec une \u00e9p\u00e9e.
Guides.Swords.Section.1=[[DARK_AQUA]]Comment fonctionne coups d\u00e9chirants?\n[[YELLOW]]Coups d\u00e9chirants est une capacit\u00e9 acitv\u00e9e, vous pouvez l\'activer\n[[YELLOW]]avec un clic droit, une \u00e9p\u00e9e \u00e0 la main. Cette capacit\u00e9 vous permet \n[[YELLOW]]d\'infliger des d\u00e9g\u00e2ts de zone (AoE). Cette AoE inflige un bonus de 25%\n[[YELLOW]]de dommage et fais saigner la cilbe pendant 5 ticks.
Guides.Swords.Section.2=[[DARK_AQUA]]Comment fonctionne la Contre-Attaque?\n[[YELLOW]]La Contre-Attaque est une capacit\u00e9 active. En bloquant les attaques\n[[YELLOW]]des mobs, vous avez une chance de repousser 50% des\n[[YELLOW]]d\u00e9g\u00e2ts qui vous sont inflig\u00e9s.
Guides.Swords.Section.3=[[DARK_AQUA]]Comment fonctionne le Saignement?\n[[YELLOW]]Le Saignement fait saigner vos ennemis, perdant de la vie toutes les deux secondes.\n[[YELLOW]]La cible saignera jusqu\'\u00e0 ce que l\'effet s\'estompe, ou qu\'il meure,\n[[YELLOW]]en fonction de ce qui arrive en premier!\n[[YELLOW]]La durabilit\u00e9 du Saignement est augment\u00e9 avec votre Comp\u00e9tence \u00c9p\u00e9e.
Guides.Taming.Section.0=[[DARK_AQUA]]A propos de l\'Apprivoisement:\n[[YELLOW]]L\'apprivoisement conf\u00e8re au joueur divers bonus de combat\n[[YELLOW]]lorsqu\'il utilise un animal (loup/ocelot).\n[[DARK_AQUA]]GAIN D\'XP:\n[[YELLOW]]Pour gagner de l\'exp\u00e9rience, vous devez apprivoiser des loups ou des\n[[YELLOW]]ocelots
Guides.Taming.Section.1=[[DARK_AQUA]]Comment fonctionne l\'Appel de la Nature?\n[[YELLOW]]Appel de la Nature est une capacit\u00e9 active qui vous permet de faire appel\n[[YELLOW]]\u00e0 un loup ou un ocelot. Vous pouvez faire ceci en faisant\n[[YELLOW]]un clic gauche en tenant des os ou du poisson.
Guides.Taming.Section.2=[[DARK_AQUA]]Comment fonctionne connaissance des b\u00eates?\n[[YELLOW]]Connaissance des b\u00eates permet au joueur d\'inspecter les stats\n[[YELLOW]]de ses animaux. Cliquez gauche un loup ou un ocelot pour\n[[YELLOW]]utiliser Connaissance des b\u00eates.
Guides.Taming.Section.3=[[DARK_AQUA]]Comment fonctione Gore?\n[[YELLOW]]Gore est une capacit\u00e9 passive qui a une chance d\'infliger un effet\n[[YELLOW]]de saignement sur la cible de votre loup.
Guides.Taming.Section.4=[[DARK_AQUA]]Comment fonctionne Griffes aiguis\u00e9es?\n[[YELLOW]]Griffes aiguis\u00e9es ajoute un bonus de d\u00e9g\u00e2ts inflig\u00e9s par votre loup.\n[[YELLOW]]Le bonus de d\u00e9g\u00e2ts d\u00e9pend de votre niveau en Apprivoisement.
Guides.Taming.Section.5=[[DARK_AQUA]]Comment fonctionne Attentif \u00e0 l\'environnement?\n[[YELLOW]]Cette capacit\u00e9 passive permet \u00e0 votre loup de se t\u00e9l\u00e9porter sur vous\n[[YELLOW]]lorsqu\'il se rapproche de dangers (cactus, lave, etc). Cela lui donne\n[[YELLOW]]\u00e9galemment l\'immunit\u00e9 contre les d\u00e9g\u00e2ts de chute.
Guides.Taming.Section.6=[[DARK_AQUA]]Comment fonctionne Poil \u00c9pais?\n[[YELLOW]]Cette capacit\u00e9 passive rend vos loups moins vuln\u00e9rables\n[[YELLOW]]et r\u00e9sistants au feu.
Guides.Taming.Section.7=[[DARK_AQUA]]Comment fonctionne r\u00e9sistance aux chocs?\n[[YELLOW]]Cette capacit\u00e9 passive r\u00e9duit les d\u00e9g\u00e2ts inflig\u00e9s \u00e0 vos loups\n[[YELLOW]]par les explosions.
Guides.Taming.Section.8=[[DARK_AQUA]]Comment fonctionne Service Fast Food?\n[[YELLOW]]Cette capacit\u00e9 passive donne \u00e0 vos loups une chance de\n[[YELLOW]]se soigner lorsqu\'ils effectuent une attaque.
Guides.Unarmed.Section.0=[[DARK_AQUA]]A propos des Poings:\n[[YELLOW]]Utiliser ses Poings pour se battre donnera des bonus divers lorsque\n[[YELLOW]]vous combattez.\n[[DARK_AQUA]]Gain d\'Exp\u00e9rience:\n[[YELLOW]]Vous gagnez de l\'exp\u00e9rience en fonction des d\u00e9g\u00e2ts inflig\u00e9s aux mobs\n[[YELLOW]]ou aux autres joueurs lors d\'un combat avec vos Poings.
Guides.Unarmed.Section.1=[[DARK_AQUA]]Comment fonctionne la Furie?\n[[YELLOW]]Furie est une capacit\u00e9 active qui est activ\u00e9e en faisant un clic-droit,\n[[YELLOW]]en n\'ayant rien \u00e0 la main. En mode Furie, vous infligerez 50% plus\n[[YELLOW]]de d\u00e9g\u00e2ts et vous pourrez casser des mat\u00e9riaux faibles instantan\u00e9ment,\n[[YELLOW]]comme l\'Herbe et la Terre.
Guides.Unarmed.Section.2=[[DARK_AQUA]]Comment fonctionne le Bras de Fer?\n[[YELLOW]]Bras de Fer augmente les d\u00e9g\u00e2ts inflig\u00e9s lorsque vous attaquez des mobs ou\n[[YELLOW]]des joueurs avec les Poings.
Guides.Unarmed.Section.3=[[DARK_AQUA]]Comment fonctionne la D\u00e9viation de Fl\u00e8che?\n[[YELLOW]]La D\u00e9viation de Fl\u00e8che est une capacit\u00e9 \n[[YELLOW]]qui permet de d\u00e9vier une fl\u00e8che tir\u00e9e par un Squelette ou un joueur.\n[[YELLOW]]Cette fl\u00e8che tombera alors au sol, inoffensive.
Guides.Unarmed.Section.4=[[DARK_AQUA]]Comment fonctionne la Poigne de Fer?\n[[YELLOW]]Poigne de Fer est une capacit\u00e9 passive qui contre le d\u00e9sarmement. En am\u00e9liorant\n[[YELLOW]]votre comp\u00e9tence Poings, la chance de parer un d\u00e9sarmement augmente.
Guides.Unarmed.Section.5=[[DARK_AQUA]]Comment fonctionne d\u00e9sarmement?\n[[YELLOW]]Cette capacit\u00e9 passive permet le joueur de d\u00e9sarmer d\'autres joueurs,\n[[YELLOW]]provoquant la chute au sol de ses objets \u00e9quip\u00e9s.
Guides.Woodcutting.Section.0=[[DARK_AQUA]]A propos de b\u00fbcheronnage:\n[[YELLOW]]Le b\u00fbcheronnage concerne l\'abattement d\'arbres.\n[[DARK_AQUA]]Gain d\'Exp\u00e9rience:\n[[YELLOW]]Vous gagniez de l\'exp\u00e9rience pour chaque bloc de bois cass\u00e9.
Guides.Woodcutting.Section.1=[[DARK_AQUA]]Comment fonctionne le Fendeur d\'Arbres?\n[[YELLOW]]Le Fendage d\'Arbres est une capacit\u00e9 active, en faisant un clic-droit\n[[YELLOW]]avec une hache \u00e0 la main, vous activerez cette capacit\u00e9. Ceci vous\n[[YELLOW]]permettra d\'abattre un arbre int\u00e9gralement, en r\u00e9cup\u00e9rant\n[[YELLOW]]toutes les b\u00fbches d\'un coup.
Guides.Woodcutting.Section.2=[[DARK_AQUA]]Comment fonctionne le Souffleur de Feuilles?\n[[YELLOW]]Souffleur de Feuilles est une capacit\u00e9 passive qui permet de casser un\n[[YELLOW]]bloc de feuilles instantan\u00e9ment quand vous les cassez avec un hache. Par d\u00e9faut,\n[[YELLOW]]cette capacit\u00e9 est disponible au niveau 100 de la Comp\u00e9tence B\u00fbcheronnage.
Guides.Woodcutting.Section.3=[[DARK_AQUA]]Comment fonctionne Double Bois?\n[[YELLOW]]Cette capacit\u00e9 passive vous donne une chance\n[[YELLOW]]de r\u00e9cup\u00e9rer une b\u00fbche suppl\u00e9mentaire par bloc de bois cass\u00e9.
Inspect.Offline=Tu n\'as pas la permission d\'inspecter un joueur hors ligne!
Inspect.OfflineStats=mcMMO Stats for Offline Player [[YELLOW]]{0}
Inspect.Stats=[[GREEN]]mcMMO Stats for [[YELLOW]]{0}
Inspect.TooFar=Vous \u00eates trop \u00e9loign\u00e9 de ce joueur pour l\'inspecter !
Item.ChimaeraWing.Fail=**\u00c9CHEC D\'AILE DE CHIM\u00c8RE !**
Item.ChimaeraWing.Pass=**AILE DE CHIM\u00c8RE**
Item.ChimaeraWing.Name=Aile de Chim\u00e8re
Item.ChimaeraWing.Lore=[[GRAY]]Vous t\u00e9l\u00e9porte \u00e0 votre lit.
Item.Generic.Wait=Vous devez attendre avant de pouvoir utiliser cela de nouveau ! [[YELLOW]]({0}s)
Item.Injured.Wait=Vous avez \u00e9t\u00e9 bless\u00e9 r\u00e9cemment et devez attendre pour utiliser cela. [[YELLOW]]({0}s)
Item.FluxPickaxe.Name=Pioche de Flux
Item.FluxPickaxe.Lore.1=[[GRAY]]A une chance de fondre des minerais instantan\u00e9ment.
Item.FluxPickaxe.Lore.2=[[GRAY]]Requi\u00e8re niveau de Forge {0}+
Teleport.Commencing=[[GRAY]]La t\u00e9l\u00e9portation commence dans [[GOLD]]({0}) [[GRAY]]secondes, pri\u00e8re de ne pas bouger...
Teleport.Cancelled=[[DARK_RED]]T\u00e9l\u00e9portation annul\u00e9e !
Skills.Child=[[GOLD]](TALENT ENFANT)
Skills.Disarmed=[[DARK_RED]]Vous avez \u00e9t\u00e9 d\u00e9sarm\u00e9 !
Skills.Header=-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Vous devez en avoir plus
Skills.Parents=PARENTS
Skills.Stats={0}[[GREEN]]{1}[[DARK_AQUA]] XP ([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.ChildStats={0}[[GREEN]]{1}
Skills.TooTired=Vous \u00eates trop fatigu\u00e9 pour r\u00e9utiliser cette comp\u00e9tence maintenant.
Skills.Cancelled={0} annul\u00e9(e) !
Skills.ConfirmOrCancel=[[GREEN]]Fa\u00eetes de nouveau un clic droit pour confirmer [[GOLD]]{0}[[GREEN]]. Clic gauche pour annuler.
Stats.Header.Combat=[[GOLD]]-=COMP\u00c9TENCES DE COMBAT=-
Stats.Header.Gathering=[[GOLD]]-=COMP\u00c9TENCES DE R\u00c9COLTE=-
Stats.Header.Misc=[[GOLD]]-=AUTRES TALENTS=-
Stats.Own.Stats=[[GREEN]][mcMMO] Statistiques
Perks.XP.Name=Exp\u00e9rience
Perks.XP.Desc=Gain d\'EXP boost\u00e9 dans certains talents.
Perks.Lucky.Name=Chance
Perks.Lucky.Desc=Donnes {0} comp\u00e9tences et abilet\u00e9s 33.3% de chance d\'\u00eatre activ\u00e9es.
Perks.Lucky.Desc.Login=Donne \u00e0 certaines comp\u00e9tences 33.3% de chance d\'\u00eatre activ\u00e9es.
Perks.Lucky.Bonus=[[GOLD]] ({0} avec votre avantage de chance)
Perks.Cooldowns.Name=Reg\u00e9n\u00e9ration rapide
Perks.Cooldowns.Desc=Temps d\'attente r\u00e9duits de {0}.
Perks.ActivationTime.Name=Endurance
Perks.ActivationTime.Desc=Augmente la dur\u00e9e de l\'abil\u00e9t\u00e9 de {0} secondes.
Perks.ActivationTime.Bonus=[[GOLD]] ({0}s avec votre avantage d\'endurance)
Hardcore.Mode.Disabled=[[GOLD]][mcMMO] Le mode Hardcore {0} a \u00e9t\u00e9 d\u00e9sactiv\u00e9 pour {1}.
Hardcore.Mode.Enabled=[[GOLD]][mcMMO] Le mode Hardcore {0} a \u00e9t\u00e9 activ\u00e9 pour {1}.
Hardcore.DeathStatLoss.Name=P\u00e9nalit\u00e9s sur les talents lors de la mort
Hardcore.DeathStatLoss.PlayerDeath=[[GOLD]][mcMMO] [[DARK_RED]]Vous avez perdu [[BLUE]]{0}[[DARK_RED]] niveau(x) dans votre mort.
Hardcore.DeathStatLoss.PercentageChanged=[[GOLD]][mcMMO] Le pourcentage de perte de statistiques a \u00e9t\u00e9 chang\u00e9 \u00e0 {0}.
Hardcore.Vampirism.Name=Vampirisme
Hardcore.Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] \u00e9tait trop maladroit pour am\u00e9liorer votre connaissance.
Hardcore.Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]Vous avez vol\u00e9 [[BLUE]]{0}[[DARK_AQUA]] niveau(x) de [[YELLOW]]{1}.
Hardcore.Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] Il n\'a pas \u00e9t\u00e9 capable de vous voler votre connaissance !
Hardcore.Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]] a vol\u00e9 [[BLUE]]{1}[[DARK_RED]] de vos niveaux !
Hardcore.Vampirism.PercentageChanged=[[GOLD]][mcMMO] Le pourcentage de perte de statistiques a \u00e9t\u00e9 chang\u00e9 \u00e0 {0}.
MOTD.Donate=[[DARK_AQUA]]Donation Info:
MOTD.Hardcore.Enabled=[[GOLD]][mcMMO] [[DARK_AQUA]]Mode Hardcore activ\u00e9 : [[DARK_RED]]{0}
MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]P\u00e9nalit\u00e9s sur les talents lors de la mort : [[DARK_RED]]{0}%
MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Pourcentage de perte de statistiques de Vampirisme: [[DARK_RED]]{0}%
MOTD.PerksPrefix=[mcMMO Comp\u00e9tences]
MOTD.Version=[[GOLD]][mcMMO] Version [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO Website
Smelting.Ability.FluxMining=Chance de Minage en Flux : [[YELLOW]]{0}
Smelting.Ability.FuelEfficiency=Multiplicateur d\'efficacit\u00e9 des Combustibles: [[YELLOW]]{0}x
Smelting.Ability.Locked.0=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveaux de talent (BOOST D\'EXPERIENCE VANILLA)
Smelting.Ability.Locked.1=Bloqu\u00e9 jusqu\'\u00e0 {0}+ niveaux du talent (MINAGE PAR EXPLOSIONS)
Smelting.Ability.SecondSmelt=Chance de seconde cuisson: [[YELLOW]]{0}
Smelting.Ability.VanillaXPBoost=Multiplicateur d\'EXP Vanilla: [[YELLOW]]{0}x
Smelting.SubSkill.FuelEfficiency.Name=Efficacit\u00e9 du combustible
Smelting.SubSkill.FuelEfficiency.Description=Augmente la dur\u00e9e de vie du combustible utilis\u00e9 dans les fours lors des cuissons
Smelting.SubSkill.SecondSmelt.Name=Seconde Cuisson
Smelting.SubSkill.SecondSmelt.Description=Double les ressources obtenues par cuisson
Smelting.Effect.4=Bonus d\'experience Vanilla
Smelting.Effect.5=Augmente l\'EXP Vanilla aquise lors des cuissons
Smelting.SubSkill.FluxMining.Name=Minage en Flux
Smelting.SubSkill.FluxMining.Description=Chance pour que les minerais soient instantan\u00e9ment cuits lors de leur minage
Smelting.Listener=Cuisson:
Smelting.SkillName=FONTE
Commands.Description.addlevels=Ajouter des niveaux McMMO a un utilisateur
Commands.Description.adminchat=Modifie le tchat McMMO admin en activ\u00e9/d\u00e9sactiv\u00e9 ou envoie des messages dans le tchat admin
Commands.Description.addxp=Ajoute de l\'EXP McMMO \u00e0 un utilisateur
Commands.Description.hardcore=Modifier le pourcentage de difficult\u00e9 de mcMMO ou activer ou non le mode hardcore
Commands.Description.inspect=Voir les infos d\u00e9taill\u00e9es d\'un autre joueur
Commands.Description.mcability=Modifie la possibilit\u00e9 que les capacit\u00e9s McMMO soient pr\u00eates par un clic droit en activ\u00e9/d\u00e9sactiv\u00e9
Commands.Description.mccooldown=Voir tous les temps d\'attentes des capacit\u00e9s McMMO
Commands.Description.mcgod=Modifie le mode Dieu de McMMO en activ\u00e9/d\u00e9sactiv\u00e9
Commands.Description.mchud=Change le style du HUD McMMO
Commands.Description.mcmmo=Montre une br\u00e8ve description de McMMO
Commands.Description.mcnotify=Modifie l\'affichage des notifications dans le tchat des capacit\u00e9s mcMMO en activ\u00e9/d\u00e9sactiv\u00e9
Commands.Description.mcpurge=Purge les utilisateurs avec aucun niveaux McMMO et les utilisateurs qui ne se sont pas connect\u00e9s dans les {0} derniers mois de la base de donn\u00e9es McMMO.
Commands.Description.mcrank=Montre le classement McMMO d\'un joueur
Commands.Description.mcrefresh=Rafra\u00eechi tous les temps d\'attente McMMO
Commands.Description.mcremove=Enl\u00e8ve un utilisateur de la base de donn\u00e9es
Commands.Description.mcscoreboard=Modifiez votre tableau des scores McMMO
Commands.Description.mcstats=Montre vos niveaux McMMO et votre EXP
Commands.Description.mctop=Montre le classement McMMO
Commands.Description.mmoedit=Modifie les niveaux McMMO pour un utilisateur
Commands.Description.mmoupdate=Migration de la base de donn\u00e9es mcMMO \u00e0 partir d\'une ancienne vers l\'actuelle.
Commands.Description.mcconvert=Convertie les types de base de donn\u00e9es ou les types de formule d\'experience
Commands.Description.mmoshowdb=Montre le nom de la base de donn\u00e9es actuellement utilis\u00e9e (vous pouvez obtenir la derni\u00e8re avec /mmoupdate)
Commands.Description.party=Contr\u00f4le les divers r\u00e9glages des guildes McMMO
Commands.Description.partychat=Modifie le tchat McMMO de la guilde en activ\u00e9/d\u00e9sactiv\u00e9 ou envoie des messages dans le tchat de la guilde.
Commands.Description.ptp=Vous t\u00e9l\u00e9porte \u00e0 un membre de votre groupe mcMMO
Commands.Description.Skill=Affiche des infos d\u00e9taill\u00e9es du talent McMMO {0}
Commands.Description.skillreset=Remet \u00e0 0 tous les niveaux McMMO pour un utilisateur
Commands.Description.vampirism=Modifie le mode Dieu de McMMO en activ\u00e9/d\u00e9sactiv\u00e9
Commands.Description.xplock=Bloque votre barre d\'EXP McMMO pour un talent sp\u00e9cifique
Commands.Description.xprate=Modifie le taux d\'EXP McMMO ou d\u00e9bute un event XP McMMO
UpdateChecker.Outdated=Vous utilisez une ancienne version de McMMO !
UpdateChecker.NewAvailable=Une nouvelle version est disponible sur BukkitDev.
Scoreboard.Header.PlayerStats=Statistiques McMMO
Scoreboard.Header.PlayerCooldowns=Temps d\'attente McMMO
Scoreboard.Header.PlayerRank=Classement McMMO
Scoreboard.Header.PlayerInspect=Statistiques McMMO: {0}
Scoreboard.Header.PowerLevel=Niveau de puissance
Scoreboard.Misc.PowerLevel=[[GOLD]]Niveau de puissance
Scoreboard.Misc.Level=[[DARK_AQUA]]Niveau
Scoreboard.Misc.CurrentXP=[[GREEN]]EXP actuelle
Scoreboard.Misc.RemainingXP=EXP restante
Scoreboard.Misc.Cooldown=[[LIGHT_PURPLE]]Temps d\'attente
Scoreboard.Misc.Overall=[[GOLD]]Global
Scoreboard.Misc.Ability=Capacit\u00e9
Profile.Loading.Success=[[GREEN]]G\u00e9nial! Vos donn\u00e9es McMMO ont \u00e9t\u00e9 charg\u00e9es.
Profile.Loading.Failure=McMMO ne peut toujours pas charger vos donn\u00e9es. Vous devriez sans doute [[AQUA]]contacter le possesseur du serveur.\n[[YELLOW]]Vous pouvez toujours jouer sur le serveur, mais vous n\'aurez [[BOLD]]pas de niveaux McMMO[[YELLOW]] et chaque EXP obtenu[[BOLD]]ne sera pas sauvergard\u00e9[[YELLOW]].
Profile.Loading.AdminFailureNotice=[[DARK_RED]][A][[RED]] McMMO a \u00e9t\u00e9 incapable de charger les donn\u00e9es du joueur [[YELLOW]]{0}[[RED]]. [[LIGHT_PURPLE]]Veuillez inspecter votre installation de la base de donn\u00e9es.

View File

@@ -1,903 +0,0 @@
#ACROBATICS
Acrobatics.Ability.Proc=[[GREEN]]**Atterraggio Aggraziato**
Acrobatics.Combat.Proc=[[GREEN]]**Schivato**
Acrobatics.DodgeChance=Possibilit\u00E0 di Schivata: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.Name=Capriola
Acrobatics.SubSkill.Roll.Description=Riduce o annulla il danno da caduta
Acrobatics.SubSkill.GracefulRoll.Name=Capriola Aggraziata
Acrobatics.SubSkill.GracefulRoll.Description=Il doppio pi\u00F9 efficiente di una normale Capriola
Acrobatics.SubSkill.Dodge.Name=Schivata
Acrobatics.SubSkill.Dodge.Description=Riduce il danno degli attacchi della met\u00E0
Acrobatics.Listener=Acrobatica:
Acrobatics.SubSkill.Roll.Chance=Possibilit\u00E0 di Capriola: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.GraceChance=Possibilit\u00E0 di Capriola Aggraziata: [[YELLOW]]{0}
Acrobatics.Roll.Text=**Capriola Eseguita**
Acrobatics.SkillName=ACROBATICA
Acrobatics.Skillup=L'abilit\u00E0 Acrobatica \u00E8 aumentata di {0}. Totale ({1})
#ALCHEMY
Alchemy.SubSkill.Catalysis.Name=Catalisi
Alchemy.SubSkill.Catalysis.Description=Aumenta la velocit\u00E0 di produzione delle pozioni
Alchemy.SubSkill.Concoctions.Name=Intrugli
Alchemy.SubSkill.Concoctions.Description=Crea pozioni con pi\u00F9 ingredienti
Alchemy.Listener=Alchimia:
Alchemy.Ability.Locked.0=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (CATALISI)
Alchemy.Catalysis.Speed=Velocit\u00E0 di Preparazione: [[YELLOW]]{0}
Alchemy.Concoctions.Rank=Grado Intrugli: [[YELLOW]]{0}/{1}
Alchemy.Concoctions.Ingredients=Ingredienti [[[YELLOW]]{0}[[RED]]]: [[YELLOW]]{1}
Alchemy.SkillName=ALCHIMIA
Alchemy.Skillup=L'abilit\u00E0 Alchimia \u00E8 aumentata di {0}. Totale ({1})
#ARCHERY
Archery.Combat.DazeChance=Possibilit\u00E0 di Stordire: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=Possibilit\u00E0 di Recuperare Frecce: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=Bonus al Danno di Tiro da Maestro: [[YELLOW]]{0}
Archery.SubSkill.SkillShot.Name=Tiro da Maestro
Archery.SubSkill.SkillShot.Description=Aumenta il danno fatto con gli archi
Archery.SubSkill.Daze.Name=Stordire (Giocatori)
Archery.SubSkill.Daze.Description=Disorienta i nemici e infligge {0} Danni
Archery.SubSkill.ArrowRetrieval.Name=Recupero Frecce
Archery.SubSkill.ArrowRetrieval.Description=Probabilit\u00E0 di recuperare frecce dai cadaveri
Archery.Listener=Tiro con l'Arco:
Archery.SkillName=Arco
Archery.Skillup=L'abilit\u00E0 Tiro con l'Arco \u00E8 aumentata di {0}. Totale ({1})
#AXES
Axes.Ability.Bonus.0=Maestria con l'Ascia
Axes.Ability.Bonus.1={0} Danni Bonus
Axes.Ability.Bonus.2=Sfonda Armature
Axes.Ability.Bonus.3=Infliggi {0} Danni Bonus alle armature
Axes.Ability.Bonus.4=Impatto Maggiore
Axes.Ability.Bonus.5=Infliggi {0} danni bonus ai nemici senza armatura
Axes.Ability.Lower=[[GRAY]]**ABBASSI L'ASCIA**
Axes.Ability.Ready=[[GREEN]]**PREPARI L'ASCIA**
Axes.Combat.CritStruck=[[DARK_RED]]Hai subito un colpo CRITICO!
Axes.Combat.CritChance=Probabilit\u00E0 di un colpo critico: [[YELLOW]]{0}
Axes.Combat.CriticalHit=COLPO CRITICO!
Axes.Combat.GI.Proc=[[GREEN]]**COLPITO CON GRANDE FORZA**
Axes.Combat.GI.Struck=**COLPITO DA IMPATTO MAGGIORE**
Axes.Combat.SS.Struck=[[DARK_RED]]Colpito da SPACCA CRANI!
Axes.Combat.SS.Length=Durata di Spacca Crani: [[YELLOW]]{0}s
Axes.SubSkill.SkullSplitter.Name=Spacca Crani (Capacit\u00E0)
Axes.SubSkill.SkullSplitter.Description=Infligge Danno ad Area
Axes.SubSkill.CriticalStrikes.Name=Colpi Critici
Axes.SubSkill.CriticalStrikes.Description=Doppio Danno
Axes.SubSkill.AxeMastery.Name=Maestria con l'Ascia
Axes.SubSkill.AxeMastery.Description=Aggiunge Danni bonus
Axes.SubSkill.ArmorImpact.Name=Sfonda Armature
Axes.SubSkill.ArmorImpact.Description=Colpisci con forza sufficiente da fracassare le armature
Axes.SubSkill.GreaterImpact.Name=Impatto Maggiore
Axes.SubSkill.GreaterImpact.Description=Infligge danno bonus ai nemici senza armatura
Axes.Listener=Asce:
Axes.SkillName=ASCE
Axes.Skills.SS.Off=**Spacca Crani si \u00E8 esaurito**
Axes.Skills.SS.On=[[GREEN]]**Spacca Crani ATTIVATA**
Axes.Skills.SS.Refresh=[[GREEN]]La tua capacit\u00E0 [[YELLOW]]Spacca Crani [[GREEN]]si \u00E8 rigenerata!
Axes.Skills.SS.Other.Off=Spacca Crani[[GREEN]] si \u00E8 esaurito per [[YELLOW]]{0}
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Spacca Crani!
Axes.Skillup=L'abilit\u00E0 Asce \u00E8 aumentata di {0}. Totale ({1})
#EXCAVATION
Excavation.Ability.Lower=[[GRAY]]**ABBASSI LA PALA**
Excavation.Ability.Ready=[[GREEN]]**PREPARI LA PALA**
Excavation.SubSkill.GigaDrillBreaker.Name=Giga-Trivella Demolitrice (CAPACIT\u00C0)
Excavation.SubSkill.GigaDrillBreaker.Description=Drop x3, XP x3, +Velocit\u00E0
Excavation.SubSkill.TreasureHunter.Name=Cacciatore di Tesori
Excavation.SubSkill.TreasureHunter.Description=Capacit\u00E0 di disseppellire tesori
Excavation.Effect.Length=Durata di Giga-Trivella Demolitrice: [[YELLOW]]{0}s
Excavation.Listener=Escavazione:
Excavation.SkillName=ESCAVAZIONE
Excavation.Skills.GigaDrillBreaker.Off=**Giga-Trivella Demolitrice si \u00E8 esaurita**
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**GIGA-TRIVELLA DEMOLITRICE ATTIVATA**
Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]La tua capacit\u00E0 [[YELLOW]]Giga-Trivella Demolitrice [[GREEN]]si \u00E8 rigenerata!
Excavation.Skills.GigaDrillBreaker.Other.Off=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=L'abilit\u00E0 Escavazione \u00E8 aumentata di {0}. Totale ({1})
#FISHING
Fishing.Ability.Chance=Possibilit\u00E0 di Morso: [[YELLOW]]{0}
Fishing.Ability.Info=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.Locked.1=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (PESCA SUL GHIACCIO)
Fishing.Ability.Locked.2=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (PESCATORE PROVETTO)
Fishing.Ability.Rank=Grado di Cacciatore di Tesori: [[YELLOW]]{0}/5
Fishing.Ability.TH.DropRate=Tasso di Drop: [[DARK_RED]]Trap: [[YELLOW]]{0} [[GRAY]]Comune: [[YELLOW]]{1} [[GREEN]]Non Comune: [[YELLOW]]{2}\n[[BLUE]]Raro: [[YELLOW]]{3} [[LIGHT_PURPLE]]Epico: [[YELLOW]]{4} [[GOLD]]Leggendario: [[YELLOW]]{5} [[AQUA]]Record: [[YELLOW]]{6}
Fishing.Ability.TH.MagicRate=Possibilit\u00E0 di Cacciatore di Magia: [[YELLOW]]{0}
Fishing.Ability.Shake=Probabilit\u00E0 di Scuotere: [[YELLOW]]{0}
Fishing.Ability.IceFishing=Pesca sul Ghiaccio: Vai a pescare sul ghiaccio
Fishing.Ability.FD=Dieta del Pescatore: [[YELLOW]]Grado {0}
Fishing.SubSkill.TreasureHunter.Name=Cacciatore di Tesori (Passivo)
Fishing.SubSkill.TreasureHunter.Description=Ripesca oggetti vari
Fishing.SubSkill.MagicHunter.Name=Cacciatore di Magia
Fishing.SubSkill.MagicHunter.Description=Trova Oggetti Incantati
Fishing.SubSkill.Shake.Name=Scuotere (contro Entit\u00E0)
Fishing.SubSkill.Shake.Description=Scrolla oggetti di dosso ai mob con una canna da pesca
Fishing.SubSkill.FishermansDiet.Name=Dieta del Pescatore
Fishing.SubSkill.FishermansDiet.Description=Aumenta la fame recuperata tramite cibi pescati
Fishing.SubSkill.MasterAngler.Name=Pescatore Provetto
Fishing.SubSkill.MasterAngler.Description=Migliora le possibilit\u00E0 di ricevere un morso mentre si pesca
Fishing.SubSkill.IceFishing.Name=Pesca sul Ghiaccio
Fishing.SubSkill.IceFishing.Description=Ti permette di pescare nei biomi ghiacciati
Fishing.Chance.Raining=[[BLUE]] Bonus Pioggia
Fishing.Listener=Pesca:
Fishing.Ability.TH.MagicFound=[[GRAY]]Senti un tocco di magia in questa cattura...
Fishing.Ability.TH.Boom=[[GRAY]]TEMPO DI BOOM!!!
Fishing.Ability.TH.Poison=[[GRAY]]C'\u00E8 qualcosa che non va bene...
Fishing.SkillName=PESCA
Fishing.Skillup=L'abilit\u00E0 Pesca \u00E8 aumentata di {0}. Totale ({1})
#HERBALISM
Herbalism.Ability.DoubleDropChance=Possibilit\u00E0 di Doppio Drop: [[YELLOW]]{0}
Herbalism.Ability.FD=Dieta del Contadino: [[YELLOW]]Grado {0}
Herbalism.Ability.GTe.Length=Durata di Terra Verde: [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=Ti servono pi\u00F9 semi per diffondere Terra Verde.
Herbalism.Ability.GTh.Chance=Possibilit\u00E0 di Pollice Verde: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=[[RED]]**POLLICE VERDE FALLITO**
Herbalism.Ability.GTh.Stage=Stadio di Pollice Verde: [[YELLOW]] Il raccolto cresce allo stadio {0}
Herbalism.Ability.GTh=[[GREEN]]**POLLICE VERDE**
Herbalism.Ability.HylianLuck=Probabilit\u00E0 di Fortuna Hylian: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**ABBASSI LA ZAPPA**
Herbalism.Ability.Ready=[[GREEN]]**PREPARI LA ZAPPA**
Herbalism.Ability.ShroomThumb.Chance=Possibilit\u00E0 di Pollice Fungo: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=**POLLICE FUNGO FALLITO**
Herbalism.SubSkill.GreenTerra.Name=Terra Verde (CAPACIT\u00C0)
Herbalism.SubSkill.GreenTerra.Description=Diffonde il Verde, Drop x3
Herbalism.SubSkill.GreenThumb.Name=Pollice Verde (Grano)
Herbalism.SubSkill.GreenThumb.Description=Auto-Pianta il grano quando viene raccolto
Herbalism.Effect.4=Pollice Verde (Blocchi)
Herbalism.SubSkill.GreenThumb.Description.2=Rende i mattoni muscosi, o fa crescere l'erba
Herbalism.SubSkill.FarmersDiet.Name=Dieta del Contadino
Herbalism.SubSkill.FarmersDiet.Description=Aumenta la fame recuperata tramite cibi coltivati
Herbalism.SubSkill.DoubleDrops.Name=Doppi Drop (Ogni Pianta)
Herbalism.SubSkill.DoubleDrops.Description=Raddoppia il normale drop
Herbalism.SubSkill.HylianLuck.Name=Fortuna Hylian
Herbalism.SubSkill.HylianLuck.Description=D\u00E0 una modesta possibilit\u00E0 di trovare oggetti rari
Herbalism.SubSkill.ShroomThumb.Name=Pollice Fungo
Herbalism.SubSkill.ShroomThumb.Description=Diffonde il micelio su terra & erba
Herbalism.HylianLuck=[[GREEN]]Oggi la fortuna di Hyrule \u00E8 con te!
Herbalism.Listener=Erboristeria:
Herbalism.SkillName=ERBORISTERIA
Herbalism.Skills.GTe.Off=**Terra Verde si \u00E8 esaurita**
Herbalism.Skills.GTe.On=[[GREEN]]**TERRA VERDE ATTIVATA**
Herbalism.Skills.GTe.Refresh=[[GREEN]]La tua abilit\u00E0 [[YELLOW]]Terra Verde [[GREEN]]si \u00E8 rigenerata!
Herbalism.Skills.GTe.Other.Off=Terra Verde[[GREEN]] si \u00E8 esaurita per [[YELLOW]]{0}
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Terra Verde!
Herbalism.Skillup=L'abilit\u00E0 Erboristeria \u00E8 aumentata di {0}. Totale ({1})
#MINING
Mining.Ability.Length=Durata di Super Demolitore: [[YELLOW]]{0}s
Mining.Ability.Locked.0=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (ESTRAZIONE ESPLOSIVA)
Mining.Ability.Locked.1=BLOCCATO FINO AD ABILIT\u00C0 {0} (BOMBE PI\u00D9 GRANDI)
Mining.Ability.Locked.2=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (PERIZIA NELLE DEMOLIZIONI)
Mining.Ability.Lower=[[GRAY]]**ABBASSI IL PICCONE**
Mining.Ability.Ready=[[GREEN]]**PREPARI IL PICCONE**
Mining.SubSkill.SuperBreaker.Name=Super Demolitore (CAPACIT\u00C0)
Mining.SubSkill.SuperBreaker.Description=+ Velocit\u00E0, Possibilit\u00E0 di Triplo Drop
Mining.SubSkill.DoubleDrops.Name=Doppi Drop
Mining.SubSkill.DoubleDrops.Description=Raddoppia il normale drop
Mining.SubSkill.BlastMining.Name=Estrazione Esplosiva
Mining.SubSkill.BlastMining.Description=Bonus a estrarre minerali col TNT
Mining.SubSkill.BiggerBombs.Name=Bombe Pi\u00F9 Grandi
Mining.SubSkill.BiggerBombs.Description=Incrementa il raggio di esplosione del TNT
Mining.SubSkill.DemolitionsExpertise.Name=Perizia nelle Demolizioni
Mining.SubSkill.DemolitionsExpertise.Description=Riduce il danno da esplosioni di TNT
Mining.Effect.Decrease=Riduzione del Danno da Esperto di Demolizioni: [[YELLOW]]{0}
Mining.Effect.DropChance=Possibilit\u00E0 di Doppio Drop: [[YELLOW]]{0}
Mining.Listener=Estrazione:
Mining.SkillName=ESTRAZIONE
Mining.Skills.SuperBreaker.Off=**Super Demolitore si \u00E8 esaurito**
Mining.Skills.SuperBreaker.On=[[GREEN]]**SUPER DEMOLITORE ATTIVATO**
Mining.Skills.SuperBreaker.Other.Off=Super Demolitore[[GREEN]] si \u00E8 esaurito per [[YELLOW]]{0}
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Super Demolitore!
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]La tua capacit\u00E0 [[YELLOW]]Super Demolitore [[GREEN]]si \u00E8 rigenerata!
Mining.Skillup=L'abilit\u00E0 Estrazione \u00E8 aumentata di {0}. Totale ({1})
#Blast Mining
Mining.Blast.Boom=[[GRAY]]**BOOM**
Mining.Blast.Effect=+{0} minerale raccolto, -{1} macerie prodotte, drop x{2}
Mining.Blast.Radius.Increase=Incremento del Raggio di Esplosione: [[YELLOW]]+{0}
Mining.Blast.Rank=Estrazione Esplosiva: [[YELLOW]] Grado {0}/8 [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Estrazione Esplosiva!
Mining.Blast.Refresh=[[GREEN]]La tua capacit\u00E0 [[YELLOW]]Estrazione Esplosiva [[GREEN]]si \u00E8 rigenerata!
#REPAIR
Repair.SubSkill.Repair.Name=Riparazione
Repair.SubSkill.Repair.Description=Ripara Attrezzi & Armature
Repair.SubSkill.GoldRepair.Name=Riparazione Oro (ABILIT\u00C0 {0}+)
Repair.SubSkill.GoldRepair.Description=Ripara Attrezzi & Armature d'Oro
Repair.SubSkill.IronRepair.Name=Riparazione Ferro (ABILIT\u00C0 {0}+)
Repair.SubSkill.IronRepair.Description=Ripara Attrezzi & Armature di Ferro
Repair.SubSkill.StoneRepair.Name=Riparazione Pietra (ABILIT\u00C0 {0}+)
Repair.SubSkill.StoneRepair.Description=Ripara Attrezzi di Pietra
Repair.SubSkill.RepairMastery.Name=Maestria nella Riparazione
Repair.SubSkill.RepairMastery.Description=Riparazione incrementata
Repair.SubSkill.SuperRepair.Name=Super Riparazione
Repair.SubSkill.SuperRepair.Description=Doppia efficacia
Repair.SubSkill.DiamondRepair.Name=Ripara Diamante (ABILIT\u00C0 {0}+)
Repair.SubSkill.DiamondRepair.Description=Ripara Attrezzi & Armature di Diamante
Repair.SubSkill.ArcaneForging.Name=Forgiatura Arcana
Repair.SubSkill.ArcaneForging.Description=Ripara oggetti magici
Repair.Error=[[DARK_RED]]mcMMO si \u00E8 imbattuto in un errore mentre tentava di riparare questo oggetto!
Repair.Listener.Anvil=[[DARK_RED]]Hai piazzato un'incudine; le incudini possono riparare attrezzi e armature.
Repair.Listener=Riparazione:
Repair.SkillName=RIPARAZIONE
Repair.Skills.AdeptDiamond=[[DARK_RED]]Non sei abbastanza abile da riparare il Diamante.
Repair.Skills.AdeptGold=[[DARK_RED]]Non sei abbastanza abile da riparare l'Oro.
Repair.Skills.AdeptIron=[[DARK_RED]]Non sei abbastanza abile da riparare il Ferro.
Repair.Skills.AdeptStone=[[DARK_RED]]Non sei abbastanza abile da riparare la Pietra.
Repair.Skills.Adept=Devi essere di livello [[YELLOW]]{0}[[RED]] per riparare [[YELLOW]]{1}
Repair.Skills.FeltEasy=[[GRAY]]Ti \u00E8 sembrato facile.
Repair.Skills.FullDurability=[[GRAY]]\u00C8 gi\u00E0 a piena durevolezza.
Repair.Skills.Mastery=Maestria nella Riparazione: [[YELLOW]]{0} durabilit\u00E0 aggiuntiva ripristinata
Repair.Skills.StackedItems=[[DARK_RED]]Non puoi riparare oggetti ammucchiati.
Repair.Skills.Super.Chance=Possibilit\u00E0 Super Riparazione: [[YELLOW]]{0}
Repair.Skillup=L'abilit\u00E0 Riparazione \u00E8 aumentata di {0}. Totale ({1})
Repair.Pretty.Name=Riparazione
#Arcane Forging
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=Il potere arcano di questo oggetto \u00E8 diminuito.
Repair.Arcane.Fail=Il potere arcano ha abbandonato l'oggetto permanentemente.
Repair.Arcane.Lost=Non sei stato abbastanza abile da mantenere alcun incantesimo.
Repair.Arcane.Perfect=[GREEN]]Hai mantenuto le energie arcane in questo oggetto.
Repair.Arcane.Rank=Forgiatura Arcana: [[YELLOW]]Grado {0}/4
#SALVAGE
Salvage.Pretty.Name=Rottamazione
Salvage.SubSkill.AdvancedSalvage.Name=Rottamazione Avanzata
Salvage.SubSkill.AdvancedSalvage.Description=Rottama oggetti danneggiati
Salvage.SubSkill.ArcaneSalvaging.Name=Rottamazione Arcana
Salvage.SubSkill.ArcaneSalvaging.Description=Estrai incantesimi dagli oggetti
Salvage.Ability.Locked.0=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (ROTTAMAZIONE AVANZATA)
Salvage.Ability.Bonus.0=Rottamazione Avanzata
Salvage.Ability.Bonus.1=Massima resa {0} oggetti distrutti
Salvage.Arcane.Rank=Recupero Arcano: [[YELLOW]]Grado {0}/{1}
Salvage.Arcane.ExtractFull=[[GRAY]]Probabilit\u00E0 di incantamento AS completo
Salvage.Arcane.ExtractPartial=[[GRAY]]Probabilit\u00E0 di incantamento AS parziale
Salvage.Skills.Success=[[GREEN]]Oggetto rottamato!
Salvage.Skills.Adept.Damaged=[[DARK_RED]]Non sei abbastanza abile da rottamare gli oggetti danneggiati.
Salvage.Skills.Adept.Level=Devi essere di livello [[YELLOW]]{0}[[RED]] per rottamare [[YELLOW]]{1}
Salvage.Skills.TooDamaged=[[DARK_RED]]Questo oggetto \u00E8 troppo danneggiato per essere rottamato.
Salvage.Skills.ArcaneFailed=Non sei stato capace di estrarre la conoscenza contenuta in questo oggetto.
Salvage.Skills.ArcanePartial=Sei stato solo in grado di estrarre alcune delle conoscenze contenute all'interno di questo oggetto.
Salvage.Skills.ArcaneSuccess=[[GREEN]]Sei in grado di estrarre tutte le conoscenze contenute in questo oggetto!
Salvage.Listener.Anvil=[[DARK_RED]]Hai piazzato un'incudine da Rottamazione, usala per Rottamare attrezzi e armature.
Salvage.Listener=Rottamazione:
Salvage.SkillName=ROTTAMAZIONE
#SWORDS
Swords.Ability.Lower=[[GRAY]]**ABBASSI LA SPADA**
Swords.Ability.Ready=[[GREEN]]**PREPARI LA SPADA**
Swords.Combat.Bleed.Chance=Possibilit\u00E0 di Emorragia: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=Durata di Emorragia: [[YELLOW]]{0} tick
Swords.Combat.Bleed.Note=[[GRAY]]NOTA: [[YELLOW]]1 Tick si verifica ogni 2 secondi
Swords.Combat.Bleeding.Started=[[DARK_RED]] Stai sanguinando!
Swords.Combat.Bleeding.Stopped=[[GRAY]]L'emorragia si \u00E8 [[GREEN]]fermata[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**IL NEMICO HA UN'EMORRAGIA**
Swords.Combat.Counter.Chance=Possibilit\u00E0 di Contrattacco: [[YELLOW]]{0}
Swords.Combat.Counter.Hit=[[DARK_RED]]Colpisci con un contrattacco!
Swords.Combat.Countered=[[GREEN]]**CONTRATTACCATO**
Swords.Combat.SS.Struck=[[DARK_RED]]Colpito da COLPI SEGHETTATI!
Swords.SubSkill.CounterAttack.Name=Contrattacco
Swords.SubSkill.CounterAttack.Description=Riflette il {0} del danno sub\u00ECto mentre si blocca
Swords.SubSkill.SerratedStrikes.Name=Colpi Seghettati (CAPACIT\u00C0)
Swords.SubSkill.SerratedStrikes.Description={0} Danni EaA, Emorragia+ EaA
Swords.Effect.4=Colpi Seghettati Emorragia+
Swords.Effect.5={0} Tick di Emorragia
Swords.SubSkill.Bleed.Name=Emorragia
Swords.SubSkill.Bleed.Description=Infligge danno ciclico da sanguinamento
Swords.Listener=Spade:
Swords.SkillName=SPADE
Swords.Skills.SS.Off=**Colpi Seghettati si \u00E8 esaurito**
Swords.Skills.SS.On=[[GREEN]]**SERRATED STRIKES ACTIVATED**
Swords.Skills.SS.Refresh=[[GREEN]]La tua capacit\u00E0 [[YELLOW]]Colpi Seghettati [[GREEN]]si \u00E8 rigenerata!
Swords.Skills.SS.Other.Off=Colpi Seghettati[[GREEN]] si \u00E8 esaurito per [[YELLOW]]{0}
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Colpi Seghettati!
Swords.Skillup=L'abilit\u00E0 Spade \u00E8 aumentata di {0}. Totale ({1})
Swords.SS.Length=Durata di Colpi Seghettati: [[YELLOW]]{0}s
#TAMING
Taming.Ability.Bonus.0=Sicurezza Ambientale
Taming.Ability.Bonus.1=I lupi evitano il pericolo
Taming.Ability.Bonus.2=Pelliccia Folta
Taming.Ability.Bonus.3=1/{0} Danno, Resistenza al Fuoco
Taming.Ability.Bonus.4=A Prova d'Urto
Taming.Ability.Bonus.5=Gli esplosivi fanno 1/{0} del normale danno
Taming.Ability.Bonus.6=Artigli Affilati
Taming.Ability.Bonus.7=+{0} al Danno
Taming.Ability.Bonus.8=Servizio Fast Food
Taming.Ability.Bonus.9={0} Probabilit\u00E0 di guarire quando si attacca
Taming.Ability.Bonus.10=Segugio del Cielo
Taming.Ability.Bonus.11=Recupera salute quando viene danneggiato da magia o veleno
Taming.Ability.Locked.0=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (SICUREZZA AMBIENTALE)
Taming.Ability.Locked.1=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (PELLICCIA FOLTA)
Taming.Ability.Locked.2=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (A PROVA D'URTO)
Taming.Ability.Locked.3=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (ARTIGLI AFFILATI)
Taming.Ability.Locked.4=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (SERVIZIO FAST FOOD)
Taming.Ability.Locked.5=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (SEGUGIO DEL CIELO)
Taming.Combat.Chance.Gore=Possibilit\u00E0 di Sbranare: [[YELLOW]]{0}
Taming.SubSkill.BeastLore.Name=Conoscenza delle Bestie
Taming.SubSkill.BeastLore.Description=Esamina lupi e ocelot picchiandoli con un osso
Taming.SubSkill.ShockProof.Name=A Prova d'Urto
Taming.SubSkill.ShockProof.Description=Riduzione del Danno da Esplosione.
Taming.SubSkill.CallOfTheWild.Name=Richiamo della Natura
Taming.SubSkill.CallOfTheWild.Description=Evoca un animale al tuo fianco
Taming.SubSkill.CallOfTheWild.Description.2=[[GRAY]]COTW: Accovacciati e fai click destro con\n {0} {1} (Ocelot), {2} {3} (Lupo), {4} {5} (Cavallo)
Taming.SubSkill.FastFoodService.Name=Servizio Fast Food
Taming.SubSkill.FastFoodService.Description=Probabilit\u00E0 per i lupi di guarire quando attaccano
Taming.SubSkill.HolyHound.Name=Segugio del Cielo
Taming.SubSkill.HolyHound.Description=Guarito da Magia & Veleno
Taming.SubSkill.Gore.Name=Sbranare
Taming.SubSkill.Gore.Description=Colpo Critico che applica Emorragia
Taming.SubSkill.SharpenedClaws.Name=Artigli Affilati
Taming.SubSkill.SharpenedClaws.Description=Danno Bonus
Taming.SubSkill.EnvironmentallyAware.Name=Sicurezza Ambientale
Taming.SubSkill.EnvironmentallyAware.Description=Evita Cactus/Lava, Immune alle Cadute
Taming.SubSkill.ThickFur.Name=Pelliccia Folta
Taming.SubSkill.ThickFur.Description=Riduzione del Danno, Resistenza al Fuoco
Taming.Listener.Wolf=[[DARK_GRAY]]Il tuo lupo si precipita da te...
Taming.Listener=Addomesticamento:
Taming.SkillName=ADDOMESTICAMENTO
Taming.Skillup=L'abilit\u00E0 Addomesticamento \u00E8 aumentata di {0}. Totale ({1})
Taming.Summon.Complete=[[GREEN]]Evocazione completa
Taming.Summon.Lifespan=(Durata: {0}s)
Taming.Summon.Fail.Ocelot=Hai troppi ocelot vicino per poterne evocare degli altri.
Taming.Summon.Fail.Wolf=Hai troppi lupi vicino per poterne evocare degli altri.
Taming.Summon.Fail.Horse=Hai troppi cavalli nelle vicinanze per evocarne altri.
Taming.Summon.Fail.TooMany=Hai raggiunto il limite massimo di animali evocabili. [[YELLOW]]({0})
Taming.Summon.Name.Format={1} di {0}
#UNARMED
Unarmed.Ability.Berserk.Length=Durata di Furore: [[YELLOW]]{0}s
Unarmed.Ability.Bonus.0=Stile del Braccio di Ferro
Unarmed.Ability.Bonus.1=Potenziamento Danno +{0}
Unarmed.Ability.Chance.ArrowDeflect=Possibilit\u00E0 di Deviare Freccia: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=Possibilit\u00E0 di Disarmare: [[YELLOW]]{0}
Unarmed.Ability.Chance.IronGrip=Probabilit\u00E0 di Presa di Ferro: [[YELLOW]{0}
Unarmed.Ability.IronGrip.Attacker=Il tuo avversario ha una presa di ferro!
Unarmed.Ability.IronGrip.Defender=[[GREEN]]La tua presa di ferro ha evitato che venissi disarmato!
Unarmed.Ability.Lower=[[GRAY]]**ABBASSI I PUGNI**
Unarmed.Ability.Ready=[[GREEN]]**PREPARI I PUGNI**
Unarmed.SubSkill.Berserk.Name=Furore (CAPACIT\u00C0)
Unarmed.SubSkill.Berserk.Description=+50% Danni, Rompe materiali fragili
Unarmed.SubSkill.Disarm.Name=Disarmare (Giocatori)
Unarmed.SubSkill.Disarm.Description=Fa cadere l'oggetto tenuto in mano dal nemico
Unarmed.SubSkill.IronArmStyle.Name=Stile del Braccio di Ferro
Unarmed.SubSkill.IronArmStyle.Description=Ti indurisce il braccio col passare del tempo
Unarmed.SubSkill.ArrowDeflect.Name=Deviazione Frecce
Unarmed.SubSkill.ArrowDeflect.Description=Deviare frecce
Unarmed.SubSkill.IronGrip.Name=Presa di Ferro
Unarmed.SubSkill.IronGrip.Description=Ti impedisce di venire disarmato
Unarmed.Listener=Lotta:
Unarmed.SkillName=LOTTA
Unarmed.Skills.Berserk.Off=**Furore si \u00E8 esaurito**
Unarmed.Skills.Berserk.On=[[GREEN]]**FURORE ATTIVATO**
Unarmed.Skills.Berserk.Other.Off=Furore[[GREEN]] si \u00E8 esaurito per [[YELLOW]]{0}
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Furore!
Unarmed.Skills.Berserk.Refresh=[[GREEN]]La tua capacit\u00E0 [[YELLOW]]Furore [[GREEN]]si \u00E8 rigenerata!
Unarmed.Skillup=L'abilit\u00E0 Lotta \u00E8 aumentata di {0}. Totale ({1})
#WOODCUTTING
Woodcutting.Ability.0=Soffia Foglie
Woodcutting.Ability.1=Soffia via le foglie
Woodcutting.Ability.Chance.DDrop=Possibilit\u00E0 di Doppio Drop: [[YELLOW]]{0}
Woodcutting.Ability.Length=Durata di Abbatti Alberi: [[YELLOW]]{0}s
Woodcutting.Ability.Locked.0=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (SOFFIA FOGLIE)
Woodcutting.SubSkill.TreeFeller.Name=Abbattitore d'Alberi (CAPACIT\u00C0)
Woodcutting.SubSkill.TreeFeller.Description=Fa esplodere gli alberi
Woodcutting.SubSkill.LeafBlower.Name=Soffia Foglie
Woodcutting.SubSkill.LeafBlower.Description=Soffia via le foglie
Woodcutting.SubSkill.HarvestLumber.Name=Doppi Drop
Woodcutting.SubSkill.HarvestLumber.Description=Raddoppia il normale drop
Woodcutting.Listener=Taglialegna:
Woodcutting.SkillName=TAGLIALEGNA
Woodcutting.Skills.TreeFeller.Off=**Abbattitore d'Alberi si \u00E8 esaurito**
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**ABBATTITORE D'ALBERI ATTIVATO**
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]La tua capacit\u00E0 [[YELLOW]]Abbattitore d'Alberi [[GREEN]]si \u00E8 rigenerata!
Woodcutting.Skills.TreeFeller.Other.Off=Abbattitore d'Alberi[[GREEN]] si \u00E8 esaurito per [[YELLOW]]{0}
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Abbattitore d'Alberi!
Woodcutting.Skills.TreeFeller.Splinter=LA TUA ASCIA SI FRANTUMA IN DECINE DI PEZZI!
Woodcutting.Skills.TreeFeller.Threshold=Quell'albero \u00E8 troppo grande!
Woodcutting.Skillup=L'abilit\u00E0 Taglialegna \u00E8 aumentata di {0}. Totale ({1})
#ABILITIY
##generic
Ability.Generic.Refresh=[[GREEN]]**CAPACIT\u00C0 RIGENERATE!**
Ability.Generic.Template.Lock=[[GRAY]]{0}
Ability.Generic.Template=[[GOLD]]{0}: [[DARK_AQUA]]{1}
#COMBAT
Combat.ArrowDeflect=[[WHITE]]**FRECCIA DEVIATA**
Combat.BeastLore=[[GREEN]]**CONOSCENZA DELLE BESTIE**
Combat.BeastLoreHealth=[[DARK_AQUA]]Salute ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreOwner=[[DARK_AQUA]]Proprietario ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]**SBRANATO**
Combat.StruckByGore=**SEI STATO SBRANATO**
Combat.TargetDazed=Il bersaglio \u00E8 rimasto [[DARK_RED]]Stordito
Combat.TouchedFuzzy=Urto Stordino. Vado nel Pallone.
#COMMANDS
##generic
mcMMO.Description=[[DARK_AQUA]]Riguardo il [[DARK_AQUA]]Progetto [[YELLOW]]mcMMO:,[[GOLD]]mcMMO \u00E8 una mod GdR [[RED]]open source[[GOLD]] creata nel Febbraio 2011,[[GOLD]]da [[BLUE]]com.gmail.nossr50[[GOLD]]. L'obiettivo \u00E8 quello di fornire un'esperienza GdR di qualit\u00E0.,[[DARK_AQUA]]Suggerimenti:,[[GOLD]] - [[GREEN]]Usa [[RED]]/mcmmo help[[GREEN]] per vedere i comandi,[[GOLD]] - [[GREEN]]Digita [[RED]]/NOMEABILIT\u00C0[[GREEN]] per vedere informazioni dettagliate su un'abilit\u00E0,[[DARK_AQUA]]Sviluppatori:,[[GOLD]] - [[GREEN]]com.gmail.nossr50 [[BLUE]](Fondatore),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Capo Progetto),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](Sviluppatore),[[DARK_AQUA]]Link Utili:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] Segnalazione Bug,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,
Commands.addlevels.AwardAll.1=[[GREEN]]Ti sono stati aggiudicati {0} livelli in tutte le abilit\u00E0!
Commands.addlevels.AwardAll.2=Tutte le abilit\u00E0 sono state modificate per {0}.
Commands.addlevels.AwardSkill.1=[[GREEN]]Ti sono stati aggiudicati {0} livelli in {1}!
Commands.addlevels.AwardSkill.2={0} \u00E8 stata modificata per {1}.
Commands.addxp.AwardAll=[[GREEN]]Ti sono stati aggiudicati {0} punti esperienza in tutte le abilit\u00E0!
Commands.addxp.AwardSkill=[[GREEN]]Ti sono stati aggiudicati {0} punti esperienza in {1}!
Commands.Ability.Off=Uso delle capacit\u00E0 [[RED]]disattivato
Commands.Ability.On=Uso delle capacit\u00E0 [[GREEN]]attivato
Commands.Ability.Toggle=L'uso delle abilit\u00E0 \u00E8 stato attivato/disattivato per [[YELLOW]]{0}
Commands.AdminChat.Off=Chat solo Amministratori [[RED]]Inattiva
Commands.AdminChat.On=Chat solo Amministratori [[GREEN]]Attiva
Commands.AdminToggle=[[GREEN]]- Attiva/disattiva la chat amministratori
Commands.Chat.Console=*Console*
Commands.Cooldowns.Header=[[GOLD]]--= [[GREEN]]Ricariche Abilit\u00E0 mcMMO[[GOLD]] =--
Commands.Cooldowns.Row.N=\ [[RED]]{0}[[WHITE]] - [[GOLD]]{1} secondi rimanenti
Commands.Cooldowns.Row.Y=\ [[AQUA]]{0}[[WHITE]] - [[DARK_GREEN]]Pronto!
Commands.Database.Cooldown=Devi aspettare {0} secondi prima di poter usare questo comando ancora.
Commands.Database.Processing=Il comando precedente \u00E8 ancora in fase di elaborazione. Attendere prego.
Commands.Disabled=Questo comando \u00E8 disabilitato.
Commands.DoesNotExist=Il giocatore non esiste nel database!
Commands.GodMode.Disabled=Modalit\u00E0 Dio di mcMMO Disabilitata
Commands.GodMode.Enabled=Modalit\u00E0 Dio di mcMMO Abilitata
Commands.GodMode.Forbidden=[mcMMO] Modalit\u00E0 Dio non permessa in questo mondo (Vedi i Permessi)
Commands.GodMode.Toggle=La modalit\u00E0 Dio \u00E8 stata attivata/disattivata per [[YELLOW]]{0}
Commands.Healthbars.Changed.HEARTS=[mcMMO] Il tuo tipo di barra della salute \u00E8 stato cambiato a [[RED]]Cuori[[WHITE]].
Commands.Healthbars.Changed.BAR=[mcMMO] Il tuo tipo di barra della salute \u00E8 stato cambiato a [[YELLOW]]Caselle[[WHITE]].
Commands.Healthbars.Changed.DISABLED=[mcMMO] Le tue barre di salute dei mob sono state [[GRAY]]disabilitate[[WHITE]].
Commands.Healthbars.Invalid=Tipo di barra della salute non valido!
Commands.Inspect=<giocatore> [[GREEN]]- Visualizza informazioni dettagliate sul giocatore
Commands.Invite.Success=[[GREEN]]Invito inviato con successo.
Commands.Leaderboards=<abilit\u00E0> <pagina> [[GREEN]]- Classifiche
Commands.mcc.Header=---[][[GREEN]]Comandi di mcMMO[[RED]][]---
Commands.mcgod=[[GREEN]]- Attiva o disattiva la Modalit\u00E0 Dio
Commands.mchud.Invalid=Quello non \u00E8 un tipo di HUD valido.
Commands.mcpurge.Success=[[GREEN]]Il database \u00E8 stato ripulito con successo!
Commands.mcrank.Heading=[[GOLD]]-=GRADUATORIA PERSONALE=-
Commands.mcrank.Overall=Complessivo[[GREEN]] - [[GOLD]]Grado [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=BERSAGLIO: [[WHITE]]{0}
Commands.mcrank.Skill={0}[[GREEN]] - [[GOLD]]Grado [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]Non Classificato
Commands.mcrefresh.Success=Le ricariche di {0} sono stati rigenerate.
Commands.mcremove.Success=[[GREEN]]{0} \u00E8 stato rimosso con successo dal database!
Commands.mctop.Tip=[[GOLD]]Suggerimento: Usa [[RED]]/mcrank[[GOLD]] per visualizzare tutte le tue graduatorie personali!
Commands.mmoedit=[giocatore] <abilit\u00E0> <nuovovalore> [[GREEN]] - Modifica il bersaglio
Commands.mmoedit.AllSkills.1=[[GREEN]]Il tuo livello in tutte le abilit\u00E0 \u00E8 stato portato a {0}!
Commands.mmoedit.Modified.1=[[GREEN]]Il tuo livello di {0} \u00E8 stato portato a {1}!
Commands.mmoedit.Modified.2={0} \u00E8 stata modificata per {1}.
Commands.mcconvert.Database.Same=Stai gi\u00E0 usando il database {0}!
Commands.mcconvert.Database.InvalidType={0} non \u00E8 un tipo di database valido.
Commands.mcconvert.Database.Start=[[GRAY]]Avviando la conversione da {0} a {1}...
Commands.mcconvert.Database.Finish=[[GRAY]]Migrazione del database completa; il database {1} ora ha tutti i dati dal database {0}.
Commands.mmoshowdb=Il database attualmente in uso \u00E8 [[GREEN]]{0}
Commands.mcconvert.Experience.Invalid=Tipo di formula sconosciuta! I tipi validi sono: [[GREEN]]LINEAR [[RED]]e [[GREEN]]EXPONENTIAL.
Commands.mcconvert.Experience.Same=Tipo di formula {0} gi\u00E0 in uso
Commands.mcconvert.Experience.Start=[[GRAY]]Avviando conversione da {0} a {1}
Commands.mcconvert.Experience.Finish=[[GRAY]]Conversione formula completata; adesso in uso {0} XP.
Commands.ModDescription=[[GREEN]]- Leggi breve descrizione di mod
Commands.NoConsole=Questo comando non supporta l'uso da console.
Commands.Notifications.Off=Notifiche delle capacit\u00E0 [[RED]]disattivate
Commands.Notifications.On=Notifiche delle capacit\u00E0 [[GREEN]]attivate
Commands.Offline=Questo comando non funziona per i giocatori offline.
Commands.NotLoaded=Il profilo del giocatore non \u00E8 stato ancora caricato.
Commands.Other=---[][[GREEN]]ALTRI COMANDI[[RED]][]---
Commands.Party.Header=-----[][[GREEN]]GRUPPO[[RED]][]-----
Commands.Party.Features.Header=-----[][[GREEN]]CARATTERISTICHE[[RED]][]-----
Commands.Party.Status=[[DARK_GRAY]]NOME: [[WHITE]]{0} {1} [[DARK_GRAY]]LIVELLO: [[DARK_AQUA]]{2}
Commands.Party.Status.Alliance=[[DARK_GRAY]]ALLEATO: [[WHITE]]{0}
Commands.Party.UnlockedFeatures=[[DARK_GRAY]]Caratteristiche sbloccate: [[GRAY]][[ITALIC]]{0}
Commands.Party.ShareMode=[[DARK_GRAY]]MODALIT\u00C0 SPARTIZIONE:
Commands.Party.ItemShare=[[GRAY]]OGGETTI [[DARK_AQUA]]({0})
Commands.Party.ExpShare=[[GRAY]]ESPERIENZA [[DARK_AQUA]]({0})
Commands.Party.ItemShareCategories=[[DARK_GRAY]]Condivisione Oggetti: [[GRAY]][[ITALIC]]{0}
Commands.Party.MembersNear=[[DARK_GRAY]]VICINO A TE [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
Commands.Party.Accept=[[GREEN]]- Accetta l'invito di un gruppo
Commands.Party.Chat.Off=Chat Gruppo [[GREEN]]Inattiva
Commands.Party.Chat.On=Chat Gruppo [[GREEN]]Attiva
Commands.Party.Commands=---[][[GREEN]]COMANDI GRUPPO[[RED]][]---
Commands.Party.Invite.0=AVVISO: [[GREEN]]Hai ricevuto un invito ad unirti al gruppo {0} da {1}
Commands.Party.Invite.1=Digita [[GREEN]]/party accept[[YELLOW]] per accettare l'invito
Commands.Party.Invite=[[GREEN]]- Invia un invito a entrare nel gruppo
Commands.Party.Invite.Accepted=[[GREEN]]Invito Accettato. Ti sei unito al gruppo {0}
Commands.Party.Join=[[GRAY]]Ti sei unito al Gruppo: {0}
Commands.Party.Create=[[GRAY]]Creato il Gruppo: {0}
Commands.Party.Rename=[[GRAY]]Nome del gruppo cambiato a: [[WHITE]]{0}
Commands.Party.SetSharing=[[GRAY]]Modalit\u00E0 spartizione del gruppo {0} impostata a: [[DARK_AQUA]]{1}
Commands.Party.ToggleShareCategory=[[GRAY]]La condivisione oggetti del gruppo per [[GOLD]]{0} [[GRAY]]\u00E8 stata [[DARK_AQUA]]{1}
Commands.Party.AlreadyExists=[[DARK_RED]]Il gruppo {0} esiste gi\u00E0!
Commands.Party.Kick=Sei stato espulso dal gruppo {0}!
Commands.Party.Leave=Hai abbandonato quel gruppo
Commands.Party.Members.Header=-----[][[GREEN]]MEMBRI[[RED]][]-----
Commands.Party.None=Non sei in un gruppo.
Commands.Party.Quit=[[GREEN]]- Abbandona il tuo gruppo attuale
Commands.Party.Teleport=[[GREEN]]- Teletrasportati da un membro del gruppo
Commands.Party.Toggle=[[GREEN]]- Attiva/disattiva la Chat Gruppo
Commands.Party1=[[GREEN]]- Crea un nuovo gruppo
Commands.Party2=[[GREEN]]- Unisciti a un gruppo di giocatori
Commands.Party.Alliance.Header=-----[][[GREEN]]ALLEANZA DEL GRUPPO[[RED]][]-----
Commands.Party.Alliance.Ally=[[WHITE]]{0} [[DARK_GRAY]]\u00C8 ALLEATO CON: [[WHITE]]{1}
Commands.Party.Alliance.Members.Header=-----[][[GREEN]]MEMBRI ALLEANZA[[RED]][]-----
Commands.Party.Alliance.Invite.0=AVVISO: [[GREEN]]Hai ricevuto un invito di alleanza del gruppo per {0} da {1}
Commands.Party.Alliance.Invite.1=Digita [[GREEN]]/party alliance accept[[YELLOW]] per accettare l'invito
Commands.Party.Alliance.Invite.Accepted=[[GREEN]]Invito di alleanza accettato.
Commands.Party.Alliance.None=Il tuo gruppo non ha un alleato.
Commands.Party.Alliance.AlreadyAllies=Il tuo gruppo ha gi\u00E0 un'alleato. Sciogli l'alleanza con [[DARK_AQUA]]/party alliance disband
Commands.Party.Alliance.Help.0=Questo gruppo non ha formato un'alleanza. Invita un capo gruppo.
Commands.Party.Alliance.Help.1=fai un'alleanza con [[DARK_AQUA]]/party alliance invite <giocatore>[[RED]].
Commands.ptp.Enabled=Teletrasporto del gruppo [[GREEN]]abilitato
Commands.ptp.Disabled=Teletrasporto del gruppo [[RED]]disabilitato
Commands.ptp.NoRequests=Non hai richieste di teletrasporto in questo momento
Commands.ptp.NoWorldPermissions=[mcMMO] Non hai il permesso di teletrasportarti verso il mondo {0}.
Commands.ptp.Request1={0} [[GREEN]]ha richiesto di teletrasportarsi da te.
Commands.ptp.Request2=[[GREEN]]Per teletrasportarti digita [[YELLOW]]/ptp accept[[GREEN]]. La richiesta scadr\u00E0 tra [[RED]]{0} [[GREEN]]secondi.
Commands.ptp.AcceptAny.Enabled=Conferma delle richieste di teletrasporto del gruppo [[GREEN]]abilitata
Commands.ptp.AcceptAny.Disabled=Conferma delle richieste di teletrasporto del gruppo [[RED]]disabilitata
Commands.ptp.RequestExpired=La richiesta di teletrasporto del gruppo \u00E8 scaduta!
Commands.PowerLevel.Leaderboard=--Classifica mcMMO dei [[BLUE]]Livelli di Potere[[YELLOW]]--
Commands.PowerLevel.Capped=[[DARK_RED]]LIVELLO DI POTERE: [[GREEN]]{0} [[DARK_RED]]LIVELLO MASSIMO: [[YELLOW]]{1}
Commands.PowerLevel=[[DARK_RED]]LIVELLO DI POTERE: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]Tutti i tuoi livelli di abilit\u00E0 sono stati azzerati con successo.
Commands.Reset.Single=[[GREEN]]La tua abilit\u00E0 {0} \u00E8 stata azzerata con successo.
Commands.Reset=[[GREEN]]- Reimposta un livello di abilit\u00E0 a 0
Commands.Scoreboard.Clear=[[DARK_AQUA]]scoreboard mcMMO cancellata.
Commands.Scoreboard.NoBoard=La scoreboard mcMMO non \u00E8 attiva.
Commands.Scoreboard.Keep=[[DARK_AQUA]]La scoreboard mcMMO rimmarr\u00E0 fino a quando non userai [[GREEN]]/mcscoreboard clear[[DARK_AQUA]].
Commands.Scoreboard.Timer=[[DARK_AQUA]]La scoreboard mcMMO sar\u00E0 cancellata tra [[GOLD]]{0}[[DARK_AQUA]] secondi da adesso.
Commands.Scoreboard.Help.0=[[GOLD]] == [[GREEN]]Aiuto per [[RED]]/mcscoreboard[[GOLD]] ==
Commands.Scoreboard.Help.1=[[DARK_AQUA]]/mcscoreboard[[AQUA]] clear [[WHITE]] - cancella la scoreboard McMMO
Commands.Scoreboard.Help.2=[[DARK_AQUA]]/mcscoreboard[[AQUA]] keep [[WHITE]] - mantiene la scoreboard mcMMO attiva
Commands.Scoreboard.Help.3=[[DARK_AQUA]]/mcscoreboard[[AQUA]] time [n] [[WHITE]] - cancella la scoreboard McMMO dopo [[LIGHT_PURPLE]]n[[WHITE]] secondi
Commands.Scoreboard.Tip.Keep=[[GOLD]]Suggerimento: Usa [[RED]]/mcscoreboard keep[[GOLD]] mentre la scoreboard \u00E8 attiva per evitare che vada via.
Commands.Scoreboard.Tip.Clear=[[GOLD]]Suggerimento: Usa [[RED]]/mcscoreboard clear[[GOLD]] per sbarazzarti della scoreboard.
Commands.Skill.Invalid=Questo non \u00E8 un nome di abilit\u00E0 valido!
Commands.Skill.Leaderboard=--Classifica mcMMO di [[BLUE]]{0}[[YELLOW]]--
Commands.SkillInfo=[[GREEN]]- Vedi informazioni dettagliate su un'abilit\u00E0
Commands.Stats.Self=LE TUE STATISTICHE
Commands.Stats=[[GREEN]]- Visualizza le tue statistiche mcMMO
Commands.ToggleAbility=[[GREEN]]- Attiva o disattiva l'attivazione delle abilit\u00E0 con click destro
Commands.Usage.0=[[RED]]L'uso appropriato \u00E8 /{0}
Commands.Usage.1=L'uso appropriato \u00E8 /{0} {1}
Commands.Usage.2=L'uso appropriato \u00E8 /{0} {1} {2}
Commands.Usage.3=L'uso appropriato \u00E8 /{0} {1} {2} {3}
Commands.Usage.FullClassName=nome classe
Commands.Usage.Level=livello
Commands.Usage.Message=messaggio
Commands.Usage.Page=pagina
Commands.Usage.PartyName=nome
Commands.Usage.Password=password
Commands.Usage.Player=giocatore
Commands.Usage.Rate=tasso
Commands.Usage.Skill=abilit\u00E0
Commands.Usage.XP=xp
mcMMO.NoInvites=Non hai inviti in questo momento
mcMMO.NoPermission=[[DARK_RED]]Permessi insufficienti.
mcMMO.NoSkillNote=[[DARK_GRAY]]Se non hai accesso a un'abilit\u00E0 non sar\u00E0 mostrata qui.
##party
Party.Forbidden=[mcMMO] I gruppi non sono permessi in questo mondo (vedi i Permessi)
Party.Help.0=L'uso appropriato \u00E8 [[DARK_AQUA]]{0} <giocatore> [password].
Party.Help.1=Per creare un gruppo, usa [[DARK_AQUA]]{0} <nome> [password].
Party.Help.2=Consulta [[DARK_AQUA]]{0} [[RED]]per maggiori informazioni
Party.Help.3=Usa [[DARK_AQUA]]{0} <giocatore> [password] [[RED]]per unirti o [[DARK_AQUA]]{1} [[RED]]per congedarti
Party.Help.4=Per chiudere o aprire il tuo gruppo, usa [[DARK_AQUA]]{0}
Party.Help.5=Per proteggere il tuo gruppo con una password, usa [[DARK_AQUA]]{0} <password>
Party.Help.6=Per espellere un giocatore dal tuo gruppo, usa [[DARK_AQUA]]{0} <giocatore>
Party.Help.7=Per trasferire la propriet\u00E0 del tuo gruppo, usa [[DARK_AQUA]]{0} <giocatore>
Party.Help.8=Per sciogliere il tuo gruppo, usa [[DARK_AQUA]]{0}
Party.Help.9=Usa [[DARK_AQUA]]{0} [[RED]]per condividere oggetti con i membri del tuo gruppo
Party.Help.10=Usa [[DARK_AQUA]]{0} [[RED]]per abilitare la condivisione di XP con i membri del tuo gruppo
Party.InformedOnJoin={0} [[GREEN]]si \u00E8 unito al tuo gruppo
Party.InformedOnQuit={0} [[GREEN]]ha abbandonato il tuo gruppo
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]ha impostato il nome del gruppo a [[WHITE]]{1}
Party.InvalidName=[[DARK_RED]]Questo non \u00E8 un nome di gruppo valido.
Party.Invite.Self=Non puoi invitare te stesso!
Party.IsLocked=Questo gruppo \u00E8 gi\u00E0 chiuso!
Party.IsntLocked=Questo gruppo non \u00E8 chiuso!
Party.Locked=Il gruppo \u00E8 chiuso, solo il capo del gruppo pu\u00F2 fare inviti.
Party.NotInYourParty=[[DARK_RED]]{0} non \u00E8 nel tuo gruppo
Party.NotOwner=[[DARK_RED]]Non sei il capo del gruppo.
Party.Target.NotOwner=[[DARK_RED]]{0} non \u00E8 il capo del gruppo.
Party.Owner.New=[[GREEN]]{0} \u00E8 il nuovo capo del gruppo.
Party.Owner.NotLeader=[[DARK_RED]]Non sei pi\u00F9 il capo del gruppo.
Party.Owner.Player=[[GREEN]]Ora sei il capo del gruppo.
Party.Password.None=Questo gruppo \u00E8 protetto da password. Sei pregato di fornire una password per unirti ad esso.
Party.Password.Incorrect=La password del gruppo \u00E8 errata.
Party.Password.Set=[[GREEN]]Password del gruppo impostata a {0}
Party.Password.Removed=[[GREEN]]La password del gruppo \u00E8 stata rimossa.
Party.Player.Invalid=Quello non \u00E8 un giocatore valido.
Party.NotOnline=[[DARK_RED]]{0} non \u00E8 online!
Party.Player.InSameParty={0} \u00E8 gi\u00E0 nel tuo gruppo!
Party.PlayerNotInParty=[[DARK_RED]]{0} non \u00E8 in un gruppo
Party.Specify=Devi specificare un gruppo.
Party.Teleport.Dead=Non puoi teletrasportarti da un giocatore morto.
Party.Teleport.Hurt=Sei stato ferito negli ultimi {0} secondi e non puoi teletrasportarti.
Party.Teleport.Player=[[GREEN]]Ti sei teletrasportato da {0}.
Party.Teleport.Self=Non puoi teletrasportarti verso te stesso!
Party.Teleport.Target=[[GREEN]]{0} ti ha teletrasportato.
Party.Teleport.Disabled={0} non consente il teletrasporto del gruppo.
Party.Rename.Same=Questo \u00E8 gi\u00E0 il nome del tuo gruppo!
Party.Join.Self=Non puoi unirti a te stesso!
Party.Unlocked=[[GRAY]]Il gruppo \u00E8 aperto
Party.Disband=[[GRAY]]Il gruppo \u00E8 stato sciolto
Party.Alliance.Formed=[[GRAY]]Il tuo gruppo \u00E8 ora alleato con [[GREEN]]{0}
Party.Alliance.Disband=[[GRAY]]Il tuo gruppo non \u00E8 pi\u00F9 alleato con [[RED]]{0}
Party.Status.Locked=[[DARK_RED]](SOLO SU INVITO)
Party.Status.Unlocked=[[DARK_GREEN]](APERTO)
Party.LevelUp=Livello del gruppo aumentato di {0}. Totale ({1})
Party.Feature.Chat=Chat Gruppo
Party.Feature.Teleport=Teletrasporto del Gruppo
Party.Feature.Alliance=Alleanze
Party.Feature.ItemShare=Condivisione Oggetti
Party.Feature.XpShare=Condivisione XP
Party.Feature.Locked.Chat=BLOCCATO FINO A {0}+ (CHAT GRUPPO)
Party.Feature.Locked.Teleport=BLOCCATO FINO A {0}+ (TELETRASPORTO DEL GRUPPO)
Party.Feature.Locked.Alliance=BLOCCATO FINO A {0}+ (ALLEANZE)
Party.Feature.Locked.ItemShare=BLOCCATO FINO A {0}+ (CONDIVISIONE OGGETTI)
Party.Feature.Locked.XpShare=BLOCCATO FINO A {0}+ (CONDIVISIONE XP)
Party.Feature.Disabled.1=La chat del gruppo non \u00E8 stata ancora sbloccata.
Party.Feature.Disabled.2=Il teletrasporto del gruppo non \u00E8 stato ancora sbloccato.
Party.Feature.Disabled.3=Le alleanze del gruppo non sono ancora state sbloccate.
Party.Feature.Disabled.4=La condivisione del gruppo degli oggetti non \u00E8 ancora sbloccata.
Party.Feature.Disabled.5=La condivisione di XP del gruppo non \u00E8 stata ancora sbloccata.
Party.ShareType.Xp=XP
Party.ShareType.Item=OGGETTO
Party.ShareMode.None=NESSUNA
Party.ShareMode.Equal=EQUA
Party.ShareMode.Random=CASUALE
Party.ItemShare.Category.Loot=Bottino
Party.ItemShare.Category.Mining=Estrazione
Party.ItemShare.Category.Herbalism=Erboristeria
Party.ItemShare.Category.Woodcutting=Taglialegna
Party.ItemShare.Category.Misc=Varie
##xp
Commands.XPGain.Acrobatics=Cadere
Commands.XPGain.Alchemy=Preparazione Pozioni
Commands.XPGain.Archery=Attaccare Mostri
Commands.XPGain.Axes=Attaccando Mostri
Commands.XPGain.Child=Ottiene livelli dalle Abilit\u00E0 Madri
Commands.XPGain.Excavation=Scavare e trovare tesori
Commands.XPGain.Fishing=Pescare (ma va'?!)
Commands.XPGain.Herbalism=Raccogliere Piante
Commands.XPGain.Mining=Estrarre Pietra e Minerali Grezzi
Commands.XPGain.Repair=Riparare
Commands.XPGain.Swords=Attaccare Mostri
Commands.XPGain.Taming=Addomesticare Animali, o combattere con i tuoi lupi
Commands.XPGain.Unarmed=Attaccare Mostri
Commands.XPGain.Woodcutting=Abbattere alberi
Commands.XPGain=[[DARK_GRAY]]GUADAGNO XP: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]La tua BARRA XP \u00E8 ora bloccata a {0}!
Commands.xplock.unlocked=[[GOLD]]La tua BARRA XP \u00E8 ora [[GREEN]]SBLOCCATA[[GOLD]]!
Commands.xprate.modified=Il TASSO XP \u00E8 stato portato a {0}
Commands.xprate.over=L'evento mcMMO di tasso XP \u00E8 FINITO!!
Commands.xprate.proper.0=L'uso corretto per cambiare il tasso di XP \u00E8 /xprate <numero intero> <true/false>
Commands.xprate.proper.1=L'uso corretto per ripristinare il tasso di XP al valore originale \u00E8 /xprate reset
Commands.xprate.proper.2=Per favore specifica "true" o "false" per indicare se questo \u00E8 un evento XP o meno
Commands.xprate.started.0=[[GOLD]]\u00C8 INIZIATO UN EVENTO XP PER mcMMO!
Commands.xprate.started.1=[[GOLD]]IL TASSO DI XP DI mcMMO ORA \u00C8 {0}x!
XPRate.Event=[[GOLD]]\u00C8 in corso un evento mcMMO sul tasso XP! Il tasso XP \u00E8 {0}x!
#EFFECTS
##generic
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
Guides.Available=[[GRAY]]Guida per {0} disponibile - digita /{1} ? [pagina]
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Guida[[GOLD]]=-
Guides.Page.Invalid=Non \u00E8 un numero di pagina valido!
Guides.Page.OutOfRange=Quella pagina non esiste, ci sono solo {0} pagine in totale.
Guides.Usage=L'uso \u00E8 /{0} ? [pagina]
##Acrobatics
Guides.Acrobatics.Section.0=[[DARK_AQUA]]Riguardo L'Acrobatica:\n[[YELLOW]]L'Acrobatica \u00E8 l'arte di muoversi con grazia in mcMMO.\n[[YELLOW]]Essa fornisce bonus di combattimento e bonus di danni ambientali.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Per guadagnare XP in questa abilit\u00E0 \u00E8 necessario\n[[YELLOW]]eseguire schivate in combattimento\n[[YELLOW]]o sopravvivere a cadute che danneggiano.
Guides.Acrobatics.Section.1=[[DARK_AQUA]]Come funziona Rotolamento?\n[[YELLOW]]Hai una possibilit\u00E0 passiva quando prendi danni da caduta\n[[YELLOW]]di annullare il danno subito. Puoi tenere premuto il pulsante di\n[[YELLOW]]accovacciata per raddoppiare la possibilit\u00E0 durante la caduta.\n[[YELLOW]]Questo attiva una Capriola Aggraziata invece di quella\n[[YELLOW]]standard. Le Capriole Aggraziate sono come quelle normali\n[[YELLOW]]ma hanno il doppio delle probabilit\u00E0 di verificarsi e forniscono\n[[YELLOW]]pi\u00F9 sicurezza. La possibilit\u00E0 di capriola \u00E8 legata al livello abilit\u00E0
Guides.Acrobatics.Section.2=[[DARK_AQUA]]Come funziona la Schivata?\n[[YELLOW]]La Schivata \u00E8 una possibilit\u00E0 passiva quando si \u00E8\n[[YELLOW]]feriti in combattimento di dimezzare il danno preso.\n[[YELLOW]]\u00C8 legato al tuo livello di abilit\u00E0.
##Alchemy
Guides.Alchemy.Section.0=[[DARK_AQUA]]Riguardo l'Alchimia:\n[[YELLOW]]L'Alchimia riguarda il preparare pozioni.\n[[YELLOW]]Fornisce un aumento di velocit\u00E0 nella produzione di pozioni, cos\u00EC\n[[YELLOW]]come l'aggiunta di nuove (prima) pozioni introvabili.\n\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Per guadagnare XP in questa abilit\u00E0 devi preparare pozioni.
Guides.Alchemy.Section.1=[[DARK_AQUA]]Come funziona la Catalisi?\n[[YELLOW]]La Catalisi accelera il processo di preparazione,\n[[YELLOW]]con una velocit\u00E0 massima di 4x al livello 1000.\n[[YELLOW]]Questa abilit\u00E0 \u00E8 sbloccata al livello 100 di default.
Guides.Alchemy.Section.2=[[DARK_AQUA]]Come funziona Intrugli?\n[[YELLOW]]Intrugli consente di preparare pi\u00F9 pozioni con ingredienti\n[[YELLOW]]personalizzati. Quali ingredienti speciali sono sbloccati\n[[YELLOW]]\u00C8 determinato dal tuo Grado. Ci sono 8 Gradi da sbloccare.
Guides.Alchemy.Section.3=[[DARK_AQUA]]Ingredienti Intrugli livello 1:\n[[YELLOW]]Polvere di Blaze, Occhio di Ragno Fermentato, Lacrima di Ghast,\n[[YELLOW]]Polvere di Luminite, Zucchero, Melone Luccicante,\n[[YELLOW]]Carota d'Oro, Crema di Magma, Verruca del Nether,\n[[YELLOW]]Occhio di Ragno, Zolfo, Ninfea, Pesce Palla\n[[YELLOW]](Pozioni Vanilla)
Guides.Alchemy.Section.4=[[DARK_AQUA]]Ingredienti Intrugli livello 2:\n[[YELLOW]]Carota (Pozione della Velocit\u00E0)\n[[YELLOW]]Palla di Gelatina (Pozione di Noia)\n\n[[DARK_AQUA]]Ingredienti Intrugli livello 3:\n[[YELLOW]]Quarzo (Pozione di Assorbimento)\n[[YELLOW]]Fungo Rosso (Pozione del Salto)
Guides.Alchemy.Section.5=[[DARK_AQUA]]Ingredienti Intrugli livello 4:\n[[YELLOW]]Mela (Pozione di Potenziamento Salute)\n[[YELLOW]]Carne Marcia (Pozione della Fame)\n\n[[DARK_AQUA]]Ingredienti Intrugli livello 5:\n[[YELLOW]]Fungo Marrone (Pozione di Nausea)\n[[YELLOW]]Sacca d'Inchiostro (Pozione di Cecit\u00E0)
Guides.Alchemy.Section.6=[[DARK_AQUA]]Ingredienti Intrugli livello 6:\n[[YELLOW]]Felce (Pozione di Saturazione)\n\n[[DARK_AQUA]]Ingredienti Intrugli livello 7:\n[[YELLOW]]Patata Velenosa (Pozione di Decadimento)\n\n[[DARK_AQUA]]Concoctions tier 8 ingredients:\n[[YELLOW]]Mela d'Oro (Pozione di Resistenza)
##Archery
Guides.Archery.Section.0=[[DARK_AQUA]]Riguardo Tiro con l'Arco:\n[[YELLOW]]Tiro con l'Arco riguarda il tirare con arco e freccia.\n[[YELLOW]]Fornisce vari bonus di combattimento, come un incremento\n[[YELLOW]]di danno che scala con il livello e l'abilit\u00E0 di stordire i tuoi\n[[YELLOW]]avversari in PvP. Inoltre puoi recuperare alcune delle\n[[YELLOW]]frecce spese dai cadaveri dei tuoi nemici.\n\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Per guadagnare XP in questa abilit\u00E0 \u00E8 necessario\n[[YELLOW]]colpire i mob o gli altri giocatori.
Guides.Archery.Section.1=[[DARK_AQUA]]Come funziona Tiro da Maestro?\n[[YELLOW]]Tiro da Maestro fornisce un danno aggiuntivo ai tuoi colpi.\n[[YELLOW]]Il danno bonus da Tiro da Maestro aumenta\n[[YELLOW]]all'aumentare del livello di Tiro con l'Arco.\n[[YELLOW]]Con le impostazioni di default, il danno dei tiri con l'arco\n[[YELLOW]]aumenta del 10% ogni 50 livelli, fino a un massimo del 200%.
Guides.Archery.Section.2=[[DARK_AQUA]]Come funziona Stordire?\n[[YELLOW]]Hai una possibilit\u00E0 passiva di stordire gli altri giocatori quando\n[[YELLOW]]li colpisci. Quando Stordire si innesca costringe gli avversari\n[[YELLOW]]a guardare verso l'alto per una breve durata.\n[[YELLOW]]Un colpo di Stordire procura anche ulteriori 4 danni (2 cuori).
Guides.Archery.Section.3=[[DARK_AQUA]]Come funziona Recupero Frecce?\n[[YELLOW]]Hai una possibilit\u00E0 passiva di recuperare alcune\n[[YELLOW]]delle tue frecce quando uccidi un mob con l'arco.\n[[YELLOW]]Questa possibilit\u00E0 \u00E8 aumentata dal livello in Tiro con l'Arco.\n[[YELLOW]Di default, questa capacit\u00E0 aumenta di 0.1% per livello,\n[[YELLOW]]fino al 100% al livello 1000.
##Axes
Guides.Axes.Section.0=[[DARK_AQUA]]Riguardo Asce:\n[[YELLOW]]Con l'abilit\u00E0 Asce \u00E8 possibile utilizzare l'ascia per molto di\n[[YELLOW]]pi\u00F9 che solo deforestare! \u00E8 possibile incidere e sgretolare\n[[YELLOW]]mob e giocatori per guadagnare XP, colpire mob con l'effetto\n[[YELLOW]]di contraccolpo e infliggere danni critici MORTALI sui mob e\n[[YELLOW]]giocatori. La tua ascia diventa anche un biotrituratore\n[[YELLOW]]portatile, abbattendo l'armatura del nemico con facilit\u00E0 con\n[[YELLOW]]l'aumentare del livello.\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Per guadagnare XP in questa abilit\u00E0 devi colpire mob\n[[YELLOW]]o altri giocatori con la tua Ascia.
Guides.Axes.Section.1=[[DARK_AQUA]]Come funziona Spacca Crani?\n[[YELLOW]]Questa capacit\u00E0 consente di fare un colpo EaA\n[[YELLOW]](Effetto ad Area). Questo EaA infligger\u00E0 la met\u00E0 del danno\n[[YELLOW]]fatto all'obbiettivo principale, quindi \u00E8 ottimo per sgombrare\n[[YELLOW]]grandi mucchi di mob.
Guides.Axes.Section.2=[[DARK_AQUA]]Come funziona Colpi Critici?\n[[YELLOW]]Colpi Critici \u00E8 una capacit\u00E0 passiva che d\u00E0 ai giocatori\n[[YELLOW]]la possibilit\u00E0 di fare danno aggiuntivo.\n[[YELLOW]]Con le impostazioni predefinite, ogni 2 livelli in Asce aggiudica\n[[YELLOW]]lo 0.1% di possibilit\u00E0 di fare un Colpo Critico, causando 2 volte\n[[YELLOW]]il danno ai mob, o 1.5 volte il danno agli altri giocatori.
Guides.Axes.Section.3=[[DARK_AQUA]]Come funziona Mestria con l'Ascia?\n[[YELLOW]]Maestria con l'Ascia \u00E8 una capacit\u00E0 passiva\n[[YELLOW]]che aggiunge danno ai tuoi colpi quando usi delle Asce.\n[[YELLOW]]Di default il bonus danno aumenta di 1 ogni 50 livelli,\n[[YELLOW]]fino a 4 danni extra al livello 200.
Guides.Axes.Section.4=[[DARK_AQUA]]Come funziona Sfonda Armature?\n[[YELLOW]]Un attacco con abbastanza forza da frantumare un armatura!\n[[YELLOW]]Sfonda Armature ha una possibilit\u00E0 passiva di danneggiare\n[[YELLOW]]l'armatura dell'avversario. Il livello in Asce aumenta il danno.
Guides.Axes.Section.5=[[DARK_AQUA]]Come funziona Impatto Maggiore?\n[[YELLOW]]Hai una possibilit\u00E0 passiva di ottenere un maggiore impatto\n[[YELLOW]]colpendo i mob o i giocatori con un'ascia.\n[[YELLOW]]Di default la possibilit\u00E0 \u00E8 del 25%. Questa capacit\u00E0\n[[YELLOW]]ha un estremo effetto contraccolpo, simile all'incantesimo\n[[YELLOW]]Contraccolpo. Inoltre, infligge danno bonus al bersaglio.
##Excavation
Guides.Excavation.Section.0=[[DARK_AQUA]]Riguardo l'Escavazione:\n[[YELLOW]]L'Escavazione \u00E8 l'atto di scavare per trovare tesori.\n[[YELLOW]]Scavando la terra si trovano tesori.\n[[YELLOW]]Quanto pi\u00F9 si esegue questa operazione\n[[YELLOW]]pi\u00F9 tesori si possono trovare.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Per guadagnare XP devi scavare con una pala in mano.\n[[YELLOW]]Solo alcuni materiali possono essere scavati per tesori e XP.
Guides.Excavation.Section.1=[[DARK_AQUA]]Materiali Compatibili:\n[[YELLOW]]Erba, Terra, Sabbia, Argilla, Ghiaia, Micelio,\n[[YELLOW]]Sabbia delle Anime, Neve
Guides.Excavation.Section.2=[[DARK_AQUA]]Come usare Giga-Trivella Demolitrice:\n[[YELLOW]]Con una pala in mano tasto destro del mouse per preparare\n[[YELLOW]]lo strumento. Una volta in questo stato si dispone di circa\n[[YELLOW]]4 secondi per fare contatto con i materiali compatibili,\n[[YELLOW]]questo attiver\u00E0 Giga-Trivella Demolitrice.
Guides.Excavation.Section.3=[[DARK_AQUA]]Cos'\u00E8 Giga-Trivella Demolitrice?\n[[YELLOW]]Giga-Trivella Demolitrice \u00E8 una capacit\u00E0 con raffreddamento\n[[YELLOW]]legata all'abilit\u00E0 Escavazione. Triplica la possibilit\u00E0\n[[YELLOW]]di trovare tesori e abilita la rottura istantanea\n[[YELLOW]]sui materiali di Escavazione.
Guides.Excavation.Section.4=[[DARK_AQUA]]Come funziona Cacciatore di Tesori?\n[[YELLOW]]Ogni possibile tesoro per Escavazione ha il suo livello\n[[YELLOW]]di abilit\u00E0 richiesto per essere droppato, di conseguenza \u00E8\n[[YELLOW]]difficile dire quanto ti sta aiutando.\n[[YELLOW]]Basta tenere a mente che pi\u00F9 alta \u00E8 l'abilit\u00E0 di Escavazione,\n[[YELLOW]]pi\u00F9 tesori si possono trovare.\n[[YELLOW]]E anche tenere a mente che ogni tipo di materiale\n[[YELLOW]]di Escavazione compatibile ha la sua lista di tesori unici.\n[[YELLOW]]In altre parole si trovano diversi tesori nella Terra\n[[YELLOW]]da quelli che si troverebbero nella Ghiaia.
Guides.Excavation.Section.5=[[DARK_AQUA]]Note sull'Escavazione:\n[[YELLOW]]I drop dell'Escavazione sono completamente personalizzabili\n[[YELLOW]]Quindi, i risultati variano da server a server.
##Fishing
Guides.Fishing.Section.0=[[DARK_AQUA]]Riguardo la Pesca:\n[[YELLOW]]Con l'abilit\u00E0 Pesca, pescare \u00E8 di nuovo emozionante!\n[[YELLOW]]Trovare tesori nascosti, e scrollare oggetti dai mob.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Catturare pesci.
Guides.Fishing.Section.1=[[DARK_AQUA]]Come funziona Cacciatore di Tesori?\n[[YELLOW]]Questa capacit\u00E0 consente di trovare tesori pescando\n[[YELLOW]]con una piccola possibilit\u00E0 di oggetti incantati.\n[[YELLOW]]Ogni possibile tesoro di pesca ha una possibilit\u00E0\n[[YELLOW]]di uscire a ogni livello. Dipende per\u00F2 dalla\n[[YELLOW]]rarit\u00E0 dell'oggetto ogni quanto esce.\n[[YELLOW]]Pi\u00F9 \u00E8 alta la tua abilit\u00E0 di Pesca, maggiori\n[[YELLOW]]sono le possibilit\u00E0 di trovare tesori migliori.
Guides.Fishing.Section.2=[[DARK_AQUA]]Come funziona Pesca sul Ghiaccio?\n[[YELLOW]]Questa capacit\u00E0 passiva permette di pescare nei laghi\n[[YELLOW]]ghiacciati! Lancia la tua canna da pesca e la capacit\u00E0\n[[YELLOW]]creer\u00E0 un piccolo buco nel ghiaccio dove pescare.
Guides.Fishing.Section.3=[[DARK_AQUA]]Come funziona Pescatore Provetto?\n[[YELLOW]]Questa capacit\u00E0 passiva aumenta la possibilit\u00E0 di far abboccare\n[[YELLOW]]mentre si pesca. Quando hai sbloccato questa capacit\u00E0,\n[[YELLOW]]pescare in barca o in un bioma oceano raddoppia\n[[YELLOW]]la possibilit\u00E0 di far abboccare.
Guides.Fishing.Section.4=[[DARK_AQUA]]Come funziona Scuotere?\n[[YELLOW]]Questa capacit\u00E0 attiva consente di scrollare oggetti sciolti\n[[YELLOW]]dai mob agganciandoli con una canna da pesca.\n[[YELLOW]]I mob dropperanno gli oggetti che normalmente droppano\n[[YELLOW]]alla morte. \u00C8 anche possibile acquisire le teste dei mob,\n[[YELLOW]]che sono normalmente inottenibili in modalit\u00E0 sopravvivenza.
Guides.Fishing.Section.5=[[DARK_AQUA]]Come funziona Dieta del Pescatore?\n[[YELLOW]]Questa capacit\u00E0 passiva aumenta la fame ripristinata \n[[YELLOW]]mangiando pesce.
Guides.Fishing.Section.6=[[DARK_AQUA]]Note sulla Pesca:\n[[YELLOW]]I drop di pesca sono completamente personalizzabili,\n[[YELLOW]]quindi variano da server a server.
##Herbalism
Guides.Herbalism.Section.0=[[DARK_AQUA]]Riguardo l'Erboristeria:\n[[YELLOW]]L'Erboristeria riguarda il raccogliere le erbe e le piante.\n\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Raccogliendo piante ed erbe.
Guides.Herbalism.Section.1=[[DARK_AQUA]]Blocchi Compatibili\n[[YELLOW]]Grano, Patate, Carote, Meloni, \n[[YELLOW]]Zucchine, Canne da Zucchero, Fave di Cacao, Fiori, Cactus,\n[[YELLOW]]Funghi, Verruche del Nether, Ninfee, e Rampicanti.
Guides.Herbalism.Section.2=[[DARK_AQUA]]Come funziona Terra Verde?\n[[YELLOW]]Terra Verde \u00E8 una capacit\u00E0 attiva, puoi fare tasto destro\n[[YELLOW]]mentre tieni in mano una zappa per attivare Terra Verde.\n[[YELLOW]]Terra Verde concede una possibilit\u00E0 di ottenere drop 3x\n[[YELLOW]]dalle piante raccolte. D\u00E0 anche ai giocatori la capacit\u00E0\n[[YELLOW]]di diffondere la vita nei blocchi e trasformarli utilizzando\n[[YELLOW]]semi dal tuo inventario.
Guides.Herbalism.Section.3=[[DARK_AQUA]]Come funziona Pollice Verde (Colture)?\n[[YELLOW]]Questa abilit\u00E0 passiva ripianta le colture quando\n[[YELLOW]]vengono raccolte.\n[[YELLOW]]Questa possibilit\u00E0 dipende dal tuo livello in Erboristeria.
Guides.Herbalism.Section.4=[[DARK_AQUA]]Come funziona Pollice Verde (Pietre/Mattoni di Pietra/Terra)?\n[[YELLOW]]Questa capacit\u00E0 attiva consente di trasformare i blocchi nelle\n[[YELLOW]]controparti "piante correlate". Puoi farlo con click destro\n[[YELLOW]]su un blocco, con in mano dei semi. Consumer\u00E0 1 seme.
Guides.Herbalism.Section.5=[[DARK_AQUA]]Come funziona Dieta del Contadino?\n[[YELLOW]]Questa capacit\u00E0 passiva aumenta la fame ripristinata \n[[YELLOW]]mangiando Pane, Biscotti, Meloni, Zuppe di Funghi, Carote,\n[[YELLOW]]e Patate.
Guides.Herbalism.Section.6=[[DARK_AQUA]]Come funziona Fortuna Hylian?\n[[YELLOW]]Questa capacit\u00E0 passiva d\u00E0 una possibilit\u00E0 di trovare\n[[YELLOW]]oggetti rari quando certi blocchi sono rotti con una spada.
Guides.Herbalism.Section.7=[[DARK_AQUA]]Come funziona il Doppio Drop?\n[[YELLOW]]Questa abilit\u00E0 passiva d\u00E0 ai giocatori pi\u00F9 resa\n[[YELLOW]]dai loro raccolti.
##Mining
Guides.Mining.Section.0=[[DARK_AQUA]]Riguardo l'Estrazione:\n[[YELLOW]]L'Estrazione consiste nell'estrarre pietra e minerali.\n[[YELLOW]]Fornisce bonus alla quantit\u00E0 di materiali droppati minando.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Per guadagnare XP in questa abilit\u00E0, devi minare con un piccone.\n[[YELLOW]]Solo alcuni blocchi assegnano XP.
Guides.Mining.Section.1=[[DARK_AQUA]]Materiali compatibili:\n[[YELLOW]]Pietra, Carbone Grezzo, Ferro Grezzo, Oro Grezzo, Diamante Grezzo, Pietrarossa Grezza,\n[[YELLOW]]Lapislazzuli Grezzo, Ossidiana, Pietra Muschiosa, Pietra dell'End,\n[[YELLOW]]Luminite e Netherrack.
Guides.Mining.Section.2=[[DARK_AQUA]]Come usare il Super Demolitore:\n[[YELLOW]]Con un piccone in mano, tasto destro del mouse\n[[YELLOW]]per preparare lo strumento.\n[[YELLOW]]Una volta in questo stato si dispone di 4 secondi\n[[YELLOW]]per entrare in contatto con i materiali compatibili,\n[[YELLOW]]che attiveranno il Super Demolitore.
Guides.Mining.Section.3=[[DARK_AQUA]]Cos'\u00E8 il Super Demolitore?\n[[YELLOW]]Il Super Demolitore \u00E8 una capacit\u00E0 a tempo legata all'abilit\u00E0\n[[YELLOW]]Estrazione. Triplica la possibilit\u00E0 di drop di oggetti extra e\n[[YELLOW]]abilita la rottura istantanea dei materiali estratti.
Guides.Mining.Section.4=[[DARK_AQUA]]Come usare l'Estrazione Esplosiva:\n[[YELLOW]]Con un detonatore in mano, un acciarino di default,\n[[YELLOW]]accovacciati e fai click destro su TNT a distanza. Questo causer\u00E0\n[[YELLOW]]l'esplosione istantanea della TNT.
Guides.Mining.Section.5=[[DARK_AQUA]]Come funziona Estrazione Esplosiva?\n[[YELLOW]]Estrazione Esplosiva \u00E8 una capacit\u00E0 legata all'abilit\u00E0\n[[YELLOW]]Estrazione. Da bonus minando con la TNT e consente di\n[[YELLOW]]detonare da lontano la TNT. Ci sono tre parti di Estrazione\n[[YELLOW]]Esplosiva. La prima parte \u00E8 Bombe Pi\u00F9 Grandi, che aumenta il\n[[YELLOW]]raggio d'esplosione. La seconda parte \u00E8 Esperto di Demolizioni,\n[[YELLOW]]che riduce il danno dalle esplosioni di TNT. La terza parte\n[[YELLOW]]aumenta semplicemente la quantit\u00E0 di minerali droppati dalla \n[[YELLOW]]TNT e riduce i detriti droppati.
##Repair
Guides.Repair.Section.0=[[DARK_AQUA]]Riguardo la Riparazione:\n[[YELLOW]]La Riparazione consente di utilizzare un blocco di ferro\n[[YELLOW]]per riparare armature e strumenti.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Riparando strumenti e armature con l'incudine mcMMO.\n[[YELLOW]]Questa \u00E8 di default un blocco di ferro e non deve essere\n[[YELLOW]]confusa con l'incudine di Minecraft Vanilla.
Guides.Repair.Section.1=[[DARK_AQUA]]Come posso usare Riparazione?\n[[YELLOW]]Piazza un'incudine mcMMO e fai click destro per riparare \n[[YELLOW]]l'oggetto in mano. Questo consuma 1 oggetto per ogni uso.
Guides.Repair.Section.2=[[DARK_AQUA]]Come funziona Maestria nella Riparazione?\n[[YELLOW]]Maestria nella Riparazione aumenta la quantit\u00E0 di riparazione.\n[[YELLOW]]La riparazione extra dipende dal tuo livello di Riparazione.
Guides.Repair.Section.3=[[DARK_AQUA]]Come funziona Super Riparazione?\n[[YELLOW]]Super Riparazione \u00E8 una capacit\u00E0 passiva. Riparando un oggetto,\n[[YELLOW]]concede ai giocatori una possibilit\u00E0 di riparare un oggetto con\n[[YELLOW]]doppia efficacia.
Guides.Repair.Section.4=[[DARK_AQUA]]Come funziona Forgiatura Arcana?\n[[YELLOW]]Questa capacit\u00E0 passiva consente di riparare oggetti con\n[[YELLOW]]una certa possibilit\u00E0 di mantenere i suoi incantesimi. Gli\n[[YELLOW]]incantesimi possono essere mantenuti ai loro livelli,\n[[YELLOW]]degradati a livelli pi\u00F9 bassi, o persi del tutto.
##Salvage
Guides.Salvage.Section.0=[[DARK_AQUA]]Riguardo la Rottamazione:\n[[YELLOW]]La Rottamazione consente di usare un blocco d'oro\n[[YELLOW]]per rottamare armature e strumenti.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Rottamazione \u00E8 un'abilit\u00E0 figlia di Riparazione\n[[YELLOW]]e Pesca, il livello di abilit\u00E0 \u00E8 basato sui livelli\n[[YELLOW]]di Pesca e Riparazione.
Guides.Salvage.Section.1=[[DARK_AQUA]]Come posso usare la Rottamazione?\n[[YELLOW]]Piazza un'incudine di Rottamazione mcMMO e facci click\n[[YELLOW]]destro per rottamare l'oggetto che hai in mano. Esso si\n[[YELLOW]]romper\u00E0 e restituir\u00E0 i materiali usati per costruirlo.\n\n[[YELLOW]]Per esempio, rottamando un piccone di ferro dar\u00E0 lingotti\n[[YELLOW]]di ferro.
Guides.Salvage.Section.2=[[DARK_AQUA]]Come funziona la Rottamazione Avanzata?\n[[YELLOW]]Quando sbloccata, questa capacit\u00E0 consente di rottamare\n[[YELLOW]]oggetti danneggiati. La percentuale di resa aumenta con\n[[YELLOW]]il salire di livello. Una resa maggiore significa che si possono\n[[YELLOW]]ottenere pi\u00F9 materiali indietro. Con la Rottamazione\n[[YELLOW]]Avanzata si otterr\u00E0 sempre 1 materiale indietro, a meno che\n[[YELLOW]]non sia troppo danneggiato. Quindi non ci si deve preoccupare\n[[YELLOW]]di distruggere oggetti senza ottenere nulla in cambio.
Guides.Salvage.Section.3=[[DARK_AQUA]]Per illustrare come funziona, ecco un esempio:\n[[YELLOW]]Diciamo che rottamiamo un piccone d'oro danneggiato per il 20%,\n[[YELLOW]]ci\u00F2 significa che l'importo massimo che potrebbe ottenere solo 2\n[[YELLOW]](Perch\u00E9 il piccone \u00E8 fatto con 3 lingotti - ciascuno del valore di\n[[YELLOW]]33,33% durabilit\u00E0) che \u00E8 uguale a 66%. Se la percentuale di\n[[YELLOW]]resa \u00E8 sotto il 66% non si \u00E8 in grado di ottenere 2 lingotti.\n[[YELLOW]]Se \u00E8 al di sopra di questo valore si \u00E8 in grado di ottenere lo\n[[YELLOW]]"intero importo", il che significa che si otterranno 2 lingotti.
Guides.Salvage.Section.4=[[DARK_AQUA]]Come funziona la Rottamazione Arcana?\n[[YELLOW]]Questa capacit\u00E0 consente di ottenere libri incantati\n[[YELLOW]]durante la rottamazione di oggetti incantati. A seconda del\n[[YELLOW]]livello la possibilit\u00E0 di estrarre con successo\n[[YELLOW]]un incantesimo totale o parziale varia.\n\n[[YELLOW]]Quando un incantesimo \u00E8 parzialmente estratto, il libro\n[[YELLOW]]incantato avr\u00E0 un livello inferiore.
##Smelting
Guides.Smelting.Section.0=Prossimamente...
##Swords
Guides.Swords.Section.0=[[DARK_AQUA]]Riguardo Spade:\n[[YELLOW]]Questa abilit\u00E0 d\u00E0 bonus di combattimento a chi\n[[YELLOW]]combatte con una spada.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Il guadagno degli XP \u00E8 basato sul danno inflitto\n[[YELLOW]]ai mob o ad altri giocatori con una spada.
Guides.Swords.Section.1=[[DARK_AQUA]]Come funziona Colpi Seghettati?\n[[YELLOW]]Colpi Seghettati \u00E8 una capacit\u00E0 attiva, puoi attivarla facendo\n[[YELLOW]]click destro con una spada. Questa capacit\u00E0 permette di fare\n[[YELLOW]]un colpo EaA (Effetto ad Area). Questo EaA far\u00E0 il 25% in pi\u00F9\n[[YELLOW]]di danni e infligger\u00E0 un effetto di sanguinamento che dura 5 tick.
Guides.Swords.Section.2=[[DARK_AQUA]]Come funziona Contrattacco?\n[[YELLOW]]Contrattacco \u00E8 una capacit\u00E0 attiva. Quando si ricevono\n[[YELLOW]]colpi dai mob, hai una possibilit\u00E0 di riflettere il 50% \n[[YELLOW]]del danno preso.
Guides.Swords.Section.3=[[DARK_AQUA]]Come funziona Emorragia?\n[[YELLOW]]Emorragia causa ai nemici danno ogni due secondi. Il \n[[YELLOW]]bersaglio sanguina fino allo svanire dell'effetto,\n[[YELLOW]]o alla morte, quello che viene prima.\n[[YELLOW]]La durata dell'Emorragia \u00E8 aumentata dall'abilit\u00E0 Spade.
##Taming
Guides.Taming.Section.0=[[DARK_AQUA]]Riguardo l'Addomesticamento:\n[[YELLOW]]L'Addomesticamento dar\u00E0 ai giocatori vari bonus di combattimento\n[[YELLOW]]quando si usano lupi addomesticati.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Per guadagnare XP in questa abilit\u00E0, devi addomesticare\n[[YELLOW]]lupi/ocelot o entrare in combattimento con i tuoi lupi.
Guides.Taming.Section.1=[[DARK_AQUA]]Come funziona Richiamo della Natura?\n[[YELLOW]]Richiamo della Natura \u00E8 una capacit\u00E0 attiva che consente\n[[YELLOW]]di evocare un lupo o un ocelot al proprio fianco. Puoi\n[[YELLOW]]farlo facendo click sinistro con in mano ossa o pesce.
Guides.Taming.Section.2=[[DARK_AQUA]]Come funziona Conoscenza delle Bestie?\n[[YELLOW]]Conoscenza delle Bestie consente ai giocatori di ispezionare\n[[YELLOW]]gli animali da compagnia e controllare lo stato di lupi\n[[YELLOW]]e ocelot. Click-sinistro su un lupo o un ocelot\n[[YELLOW]]per usare Conoscenza delle Bestie.
Guides.Taming.Section.3=[[DARK_AQUA]]Come funziona Sbranare?\n[[YELLOW]]Sbranare \u00E8 una capacit\u00E0 passiva che ha una possibilit\u00E0\n[[YELLOW]]di infliggere un effetto sanguinamento ai bersagli dei lupi.
Guides.Taming.Section.4=[[DARK_AQUA]]Come funziona Artigli Affilati?\n[[YELLOW]]Artigli Affilati offre un bonus di danni al danno inflitto\n[[YELLOW]]dai lupi. Il bonus danni dipende dal livello di Addomesticamento.
Guides.Taming.Section.5=[[DARK_AQUA]]Come funziona Sicurezza Ambientale?\n[[YELLOW]]Questa capacit\u00E0 passiva consente ai lupi di teletrasportarsi\n[[YELLOW]]da te quando si trovano vicino ai pericoli come Cactus/Lava.\n[[YELLOW]]D\u00E0 anche ai lupi l'immunit\u00E0 alle cadute.
Guides.Taming.Section.6=[[DARK_AQUA]]Come funziona Pelliccia Folta?\n[[YELLOW]]Questa capacit\u00E0 passiva riduce il danno\n[[YELLOW]]e rende i lupi resistenti al fuoco.
Guides.Taming.Section.7=[[DARK_AQUA]]Come funziona A Prova d'Urto?\n[[YELLOW]]Questa capacit\u00E0 passiva riduce il danno fatto ai lupi\n[[YELLOW]]dalle esplosioni.
Guides.Taming.Section.8=[[DARK_AQUA]]Come funziona il Servizio Fast Food?\n[[YELLOW]]Questa capacit\u00E0 passiva d\u00E0 ai lupi la possibilit\u00E0 di guarire\n[[YELLOW]]ogni volta che fanno un attacco.
##Unarmed
Guides.Unarmed.Section.0=[[DARK_AQUA]]Riguardo la Lotta:\n[[YELLOW]]La Lotta dar\u00E0 ai giocatori vari bonus di combattimento\n[[YELLOW]]quando si usano i pugni come arma.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Gli XP si ottengono in base alla quantit\u00E0 di danno\n[[YELLOW]]inflitto ai mob o agli altri giocatori senza armi.
Guides.Unarmed.Section.1=[[DARK_AQUA]]Come funziona Furore?\n[[YELLOW]]Furore \u00E8 una capacit\u00E0 attiva che si attiva con il click\n[[YELLOW]]destro. In modalit\u00E0 Furore, Fai il 50% di danni\n[[YELLOW]]in pi\u00F9 e puoi rompere istantaneamente i materiali\n[[YELLOW]]deboli, come Terra ed Erba.
Guides.Unarmed.Section.2=[[DARK_AQUA]]Come funziona Braccio di Ferro?\n[[YELLOW]]Braccio di Ferro aumenta il danno quando si colpiscono\n[[YELLOW]]mob o giocatori con i pugni.
Guides.Unarmed.Section.3=[[DARK_AQUA]]Come funziona Deviazione Frecce?\n[[YELLOW]]Deviare Frecce \u00E8 una capacit\u00E0 passiva che d\u00E0 la\n[[YELLOW]]possibilit\u00E0 di deviare frecce tirate da Scheletri o altri\n[[YELLOW]]giocatori. La freccia cadr\u00E0 a terra innocuamente.
Guides.Unarmed.Section.4=[[DARK_AQUA]]Come funziona Presa di Ferro?\n[[YELLOW]]Presa di Ferro \u00E8 una capacit\u00E0 passiva che disarma.\n[[YELLOW]]Come sale il livello di lotta, aumenta la possibilit\u00E0\n[[YELLOW]]di prevenire un disarmo.
Guides.Unarmed.Section.5=[[DARK_AQUA]]Come funziona Disarmo?\n[[YELLOW]]Questa capacit\u00E0 passiva permette ai giocatori di\n[[YELLOW]]disarmare gli altri giocatori, facendo cadere\n[[YELLOW]]a terra l'oggetto in mano del bersaglio.
##Woodcutting
Guides.Woodcutting.Section.0=[[DARK_AQUA]]Riguardo Taglialegna:\n[[YELLOW]]Taglialegna sta tutto nell'abbattere alberi.\n\n[[DARK_AQUA]]GUADAGNO XP:\n[[YELLOW]]Gli XP si guadagnano ogni volta che si rompono ceppi di legno.
Guides.Woodcutting.Section.1=[[DARK_AQUA]]Come funziona Abbattitore d'Alberi?\n[[YELLOW]]Abbattitore d'Alberi \u00E8 una capacit\u00E0 attiva, puoi fare\n[[YELLOW]]click destro con in mano un'Ascia. Questo causer\u00E0\n[[YELLOW]]la rottura istantanea dell'albero, droppando tutto\n[[YELLOW]]il suo legno contemporaneamente.
Guides.Woodcutting.Section.2=[[DARK_AQUA]]Come funziona Soffia Foglie?\n[[YELLOW]]Soffia Foglie \u00E8 una capacit\u00E0 passiva che causer\u00E0 la\n[[YELLOW]]rottura istantanea dei blocchi di foglie colpiti con un ascia.\n[[YELLOW]]Di default, questa capacit\u00E0 si sblocca al livello 100.
Guides.Woodcutting.Section.3=[[DARK_AQUA]]Come funziona Doppi Drop?\n[[YELLOW]]Questa \u00E8 una capacit\u00E0 passiva che permette di ottenere\n[[YELLOW]]un blocco extra per ogni ceppo di legno che si taglia.
#INSPECT
Inspect.Offline=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=Sei troppo lontano da quel giocatore per esaminarlo!
#ITEMS
Item.ChimaeraWing.Fail=**ALA CHIMERICA FALLITA!**
Item.ChimaeraWing.Pass=**ALA CHIMERICA**
Item.ChimaeraWing.Name=Ala Chimerica
Item.ChimaeraWing.Lore=[[GRAY]]Ti teletrasporta al tuo letto.
Item.Generic.Wait=Devi aspettare prima di poterlo usare di nuovo! [[YELLOW]]({0}s)
Item.Injured.Wait=Sei stato ferito di recente e devi aspettare per usarlo. [[YELLOW]]({0}s)
Item.FluxPickaxe.Name=Piccone Cuocente
Item.FluxPickaxe.Lore.1=[[GRAY]]Ha la possibilit\u00E0 di fusione immediata dei minerali.
Item.FluxPickaxe.Lore.2=[[GRAY]]Richiede livello di Fusione {0}+
#TELEPORTATION
Teleport.Commencing=[[GRAY]]Il teletrasporto avr\u00E0 inizio fra [[GOLD]]({0}) [[GRAY]]secondi, resta fermo per favore...
Teleport.Cancelled=[[DARK_RED]]Teletrasporto annullato!
#SKILLS
Skills.Child=[[GOLD]](ABILIT\u00C0 FIGLIA)
Skills.Disarmed=[[DARK_RED]]Sei stato disarmato!
Skills.Header=-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Hai bisogno di pi\u00F9 [[GRAY]]{0}
Skills.Parents=ABILIT\u00C0 MADRI
Skills.Stats={0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.ChildStats={0}[[GREEN]]{1}
Skills.TooTired=Sei troppo stanco per usare ancora questa capacit\u00E0. [[YELLOW]]({0}s)
Skills.Cancelled={0} annullata!
Skills.ConfirmOrCancel=[[GREEN]]Clicca ancora col destro per confermare [[GOLD]]{0}[[GREEN]]. Clicca col sinistro per annullare.
#STATISTICS
Stats.Header.Combat=[[GOLD]]-=ABILIT\u00C0 DI COMBATTIMENTO=-
Stats.Header.Gathering=[[GOLD]]-=ABILIT\u00C0 DI RACCOLTA=-
Stats.Header.Misc=[[GOLD]]-=ABILIT\u00C0 VARIE=-
Stats.Own.Stats=[[GREEN]][mcMMO] Statistiche
#PERKS
Perks.XP.Name=Esperienza
Perks.XP.Desc=Ricevi XP incrementati in determinate abilit\u00E0.
Perks.Lucky.Name=Fortuna
Perks.Lucky.Desc=Aumenta del 33.3% le probabilit\u00E0 di attivarsi delle abilit\u00E0 e capacit\u00E0 di {0}.
Perks.Lucky.Desc.Login=Aumenta del 33.3% le probabilit\u00E0 di attivarsi di certe abilit\u00E0 e capacit\u00E0.
Perks.Lucky.Bonus=[[GOLD]] ({0} con il Vantaggio Fortuna)
Perks.Cooldowns.Name=Recupero Rapido
Perks.Cooldowns.Desc=Riduce la durata della ricarica di {0}.
Perks.ActivationTime.Name=Resistenza
Perks.ActivationTime.Desc=Incrementa il tempo di attivazione della capacit\u00E0 di {0} secondi.
Perks.ActivationTime.Bonus=[[GOLD]] ({0}s con il Vantaggio Resistenza)
#HARDCORE
Hardcore.Mode.Disabled=[[GOLD]][mcMMO] Modalit\u00E0 Hardcore {0} disattivata per {1}.
Hardcore.Mode.Enabled=[[GOLD]][mcMMO] Modalit\u00E0 Hardcore {0} attivata per {1}.
Hardcore.DeathStatLoss.Name=Penalit\u00E0 alle Abilit\u00E0 per Morte
Hardcore.DeathStatLoss.PlayerDeath=[[GOLD]][mcMMO] [[DARK_RED]]Hai perso [[BLUE]]{0}[[DARK_RED]] livelli dalla morte.
Hardcore.DeathStatLoss.PercentageChanged=[[GOLD]][mcMMO] La percentuale di perdita delle statistiche \u00E8 stata portata a {0}.
Hardcore.Vampirism.Name=Vampirismo
Hardcore.Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] era troppo inesperto per concedere alcuna conoscenza.
Hardcore.Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]Hai rubato [[BLUE]]{0}[[DARK_AQUA]] livelli da [[YELLOW]]{1}.
Hardcore.Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] non \u00E8 riuscito a rubarti ci\u00F2 che conosci!
Hardcore.Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]] ti ha rubato [[BLUE]]{1}[[DARK_RED]] livelli!
Hardcore.Vampirism.PercentageChanged=[[GOLD]][mcMMO] La percentuale di perdita \u00E8 cambiata a {0}.
#MOTD
MOTD.Donate=[[DARK_AQUA]]Info Donazioni:
MOTD.Hardcore.Enabled=[[GOLD]][mcMMO] [[DARK_AQUA]]Modalit\u00E0 hardcore abilitata: [[DARK_RED]]{0}
MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Penalit\u00E0 alle Abilit\u00E0 causa Morte: [[DARK_RED]]{0}%
MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Salasso di Statistiche da Vampirismo: [[DARK_RED]]{0}%
MOTD.PerksPrefix=[Vantaggi mcMMO]
MOTD.Version=[[GOLD]][mcMMO] versione [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - Sito di mcMMO
#SMELTING
Smelting.Ability.FluxMining=Possibilit\u00E0 di Estrazione Cuocente: [[YELLOW]]{0}
Smelting.Ability.FuelEfficiency=Moltiplicatore di Efficienza Combustibile: [[YELLOW]]{0}x
Smelting.Ability.Locked.0=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (INCREMENTO XP VANILLA)
Smelting.Ability.Locked.1=BLOCCATO FINO AD ABILIT\u00C0 {0}+ (ESTRAZIONE CUOCENTE)
Smelting.Ability.SecondSmelt=Possibilit\u00E0 di Seconda Fusione: [[YELLOW]]{0}
Smelting.Ability.VanillaXPBoost=Moltiplicatore XP Vanilla: [[YELLOW]]{0}x
Smelting.SubSkill.FuelEfficiency.Name=Efficienza Combustibile
Smelting.SubSkill.FuelEfficiency.Description=Aumenta il tempo di combustione del carburante usato nelle fornaci
Smelting.SubSkill.SecondSmelt.Name=Seconda Fusione
Smelting.SubSkill.SecondSmelt.Description=Raddoppia le risorse guadagnate con la fusione
Smelting.Effect.4=Incremento XP Vanilla
Smelting.Effect.5=Aumenta i normali XP ottenuti fondendo
Smelting.SubSkill.FluxMining.Name=Estrazione Cuocente
Smelting.SubSkill.FluxMining.Description=Probabilit\u00E0 che i minerali siano fusi istantaneamente mentre li si estrae
Smelting.Listener=Fusione:
Smelting.SkillName=FUSIONE
#COMMAND DESCRIPTIONS
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
Commands.Description.hardcore=Modifica la percentuale hardcore di mcMMO o attiva/disattiva la modalit\u00E0 hardcore
Commands.Description.inspect=Visualizza dettagliate informazioni mcMMO su un altro giocatore
Commands.Description.mcability=Attiva o disattiva il fatto che le capacit\u00E0 mcMMO vengano preparate con un clic destro.
Commands.Description.mccooldown=Vedi tutto sulle ricariche delle abilit\u00E0 mcMMO
Commands.Description.mcgod=Attiva o Disattiva la modalit\u00E0 dio mcMMO
Commands.Description.mchud=Cambia il tuo stile di HUD di mcMMO
Commands.Description.mcmmo=Mostra una breve descrizione di mcMMO
Commands.Description.mcnotify=Attiva o disattiva la visualizzazione delle notifiche delle capacit\u00E0 di mcMMO in chat
Commands.Description.mcpurge=Elimina dal database mcMMO gli utenti senza livelli mcMMO e quelli che non si sono connessi negli ultimi {0} mesi.
Commands.Description.mcrank=Mostra la graduatoria mcMMO di un giocatore
Commands.Description.mcrefresh=Rigenera tutte le ricariche di mcMMO
Commands.Description.mcremove=Rimuovi un utente dal database mcMMO
Commands.Description.mcscoreboard=Gestisci la tua Scoreboard mcMMO
Commands.Description.mcstats=Mostra i tuoi livelli e XP mcMMO
Commands.Description.mctop=Mostra le classifiche mcMMO
Commands.Description.mmoedit=Modifica i livelli mcMMO di un utente
Commands.Description.mmoupdate=Migra un database mcMMO da un database vecchio a quello attuale
Commands.Description.mcconvert=Converte tipi di database oppure tipi di formule esperienza
Commands.Description.mmoshowdb=Mostra il nome dell'attuale tipo di database (per uso successivo con /mmoupdate)
Commands.Description.party=Controlla varie impostazioni del gruppo mcMMO
Commands.Description.partychat=Attiva o disattiva la chat del gruppo mcMMO o invia un messaggio in chat gruppo
Commands.Description.ptp=Teletrasportati da un membro del gruppo mcMMO
Commands.Description.Skill=Visualizza informazioni dettagliate sull'abilit\u00E0 mcMMO {0}
Commands.Description.skillreset=Azzera i livelli mcMMO di un utente
Commands.Description.vampirism=Modify the mcMMO vampirism percentage or toggle vampirism mode on/off
Commands.Description.xplock=Blocca la tua barra XP di mcMMO su una specifica abilit\u00E0 di mcMMO
Commands.Description.xprate=Modifica il tasso XP di mcMMO o d\u00E0 inizio a un evento XP mcMMO.
#UPDATE CHECKER
UpdateChecker.Outdated=Stai usando una versione non aggiornata di mcMMO!
UpdateChecker.NewAvailable=\u00C8 disponibile una nuova versione su BukkitDev.
#SCOREBOARD HEADERS
Scoreboard.Header.PlayerStats=Statistiche mcMMO
Scoreboard.Header.PlayerCooldowns=Ricariche mcMMO
Scoreboard.Header.PlayerRank=Graduatorie McMMO
Scoreboard.Header.PlayerInspect=Statistiche mcMMO: {0}
Scoreboard.Header.PowerLevel=Livello di Potere
Scoreboard.Misc.PowerLevel=[[GOLD]]Livello di Potere
Scoreboard.Misc.Level=[[DARK_AQUA]]Livello
Scoreboard.Misc.CurrentXP=[[GREEN]]XP attuali
Scoreboard.Misc.RemainingXP=XP restanti
Scoreboard.Misc.Cooldown=[[LIGHT_PURPLE]]Ricarica
Scoreboard.Misc.Overall=[[GOLD]]Complessivo
Scoreboard.Misc.Ability=Capacit\u00E0
#DATABASE RECOVERY
Profile.Loading.Success=[[GREEN]]Il tuo profilo mcMMO \u00E8 stato caricato.
Profile.Loading.Failure=mcMMO non pu\u00F2 ancora caricare i tuoi dati. Si consiglia di [[AQUA]]contattare il proprietario del server.\n[[YELLOW]]Puoi ancora giocare sul server, ma non avrai [[BOLD]]livelli mcMMO[[YELLOW]] e gli XP che otterrai [[BOLD]]non verranno salvati[[YELLOW]].
Profile.Loading.AdminFailureNotice=[[DARK_RED]][A][[RED]] mcMMO non \u00E8 stato in grado di caricare i dati del giocatore [[YELLOW]]{0}[[RED]]. [[LIGHT_PURPLE]]Si prega di controllare la configurazione del database.

View File

@@ -1,920 +0,0 @@
# korean locale file v2.0
# -----------------
# Setting up a new standard for string names, for easier localization.
# SkillName.SubType.LocalEffect.Increment
# Skill name, such as ACROBATICS, MINING.
# Sub-type, such as EFFECT, ABILITY, COMBAT.
# Local Effect, local text for Skill Name; ACROBATICS_ROLL, IGNITIONTIME,GRACECHANCE.
# Increment, for multi-line or array-like lists.
# ######
#
# EXAMPLES:
#
# Acrobatics.Ability.Proc
# Axes.Ability.Refresh.1
#
# --wolfwork
#ACROBATICS
Acrobatics.Ability.Proc=[[GREEN]]**\uC6B0\uC544\uD55C \uAD6C\uB974\uAE30**
Acrobatics.Combat.Proc=[[GREEN]]**\uD68C\uD53C**
Acrobatics.DodgeChance=\uD68C\uD53C \uD655\uB960: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.Name=\uAD6C\uB974\uAE30
Acrobatics.SubSkill.Roll.Description=\uCD94\uB77D \uB370\uBBF8\uC9C0 \uAC10\uC18C \uB610\uB294 \uBB34\uD6A8
Acrobatics.SubSkill.GracefulRoll.Name=\uC6B0\uC544\uD55C \uAD6C\uB974\uAE30
Acrobatics.SubSkill.GracefulRoll.Description=\uAD6C\uB974\uAE30 2\uBC30 \uD6A8\uACFC
Acrobatics.SubSkill.Dodge.Name=\uD68C\uD53C
Acrobatics.SubSkill.Dodge.Description=\uB099\uD558 \uB370\uBBF8\uC9C0 \uC808\uBC18 \uAC10\uC18C
Acrobatics.Listener=\uACE1\uC608(ACROBATICS):
Acrobatics.SubSkill.Roll.Chance=\uAD6C\uB974\uAE30 \uD655\uB960: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.GraceChance=\uC6B0\uC544\uD55C \uAD6C\uB974\uAE30 \uD655\uB960: [[YELLOW]]{0}
Acrobatics.Roll.Text=**\uAD6C\uB974\uAE30**
Acrobatics.SkillName=\uACE1\uC608
Acrobatics.Skillup=\uB099\uBC95 \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#ALCHEMY
Alchemy.SubSkill.Catalysis.Name=\uCD09\uB9E4
Alchemy.SubSkill.Catalysis.Description=\uD3EC\uC158 \uC591\uC870 \uC18D\uB3C4 \uC99D\uAC00
Alchemy.SubSkill.Concoctions.Name=\uD63C\uD569
Alchemy.SubSkill.Concoctions.Description=\uB354 \uB9CE\uC740 \uC131\uBD84\uC758 \uD3EC\uC158 \uC591\uC870
Alchemy.Listener=\uC5F0\uAE08\uC220(ALCHEMY):
Alchemy.Ability.Locked.0={0}\uB808\uBCA8 \uB54C \uAE30\uC220\uD574\uC81C (\uCD09\uB9E4)
Alchemy.Catalysis.Speed=\uC591\uC870 \uC18D\uB3C4: [[YELLOW]]{0}
Alchemy.Concoctions.Rank=\uD63C\uD569 \uB7AD\uD06C: [[YELLOW]]{0}/{1}
Alchemy.Concoctions.Ingredients=\uC131\uBD84 [[[YELLOW]]{0}[[RED]]]: [[YELLOW]]{1}
Alchemy.SkillName=\uC5F0\uAE08\uC220
Alchemy.Skillup=\uC5F0\uAE08\uC220 \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#ARCHERY
Archery.Combat.DazeChance=\uD604\uD639 \uD655\uB960: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=\uD654\uC0B4 \uD68C\uC218 \uD655\uB960: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=\uC3D8\uAE30 \uC19C\uC528 \uCD94\uAC00 \uD53C\uD574 \uD655\uB960: [[YELLOW]]{0}
Archery.SubSkill.SkillShot.Name=\uC3D8\uAE30 \uC19C\uC528
Archery.SubSkill.SkillShot.Description=\uD65C \uD53C\uD574 \uC601\uAD6C \uC99D\uAC00
Archery.SubSkill.Daze.Name=\uD604\uD639 (\uD50C\uB808\uC774\uC5B4)
Archery.SubSkill.Daze.Description=\uC801\uC5D0\uAC8C \uD63C\uB780, {0} \uD53C\uD574 \uCD94\uAC00
Archery.SubSkill.ArrowRetrieval.Name=\uD654\uC0B4 \uD68C\uC218
Archery.SubSkill.ArrowRetrieval.Description=\uC2DC\uCCB4\uC5D0\uC11C \uD654\uC0B4 \uD68C\uC218 \uD655\uB960 \uC99D\uAC00
Archery.Listener=\uAD81\uC220(ARCHERY):
Archery.SkillName=\uAD81\uC220
Archery.Skillup=\uAD81\uC220 \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#AXES
Axes.Ability.Bonus.0=\uB3C4\uB07C \uB9C8\uC2A4\uD130\uB9AC
Axes.Ability.Bonus.1={0} \uCD94\uAC00 \uD53C\uD574
Axes.Ability.Bonus.2=\uAC11\uC637 \uCDA9\uACA9
Axes.Ability.Bonus.3=\uBC29\uC5B4\uAD6C \uCD94\uAC00 \uD53C\uD574: {0}
Axes.Ability.Bonus.4=\uC5C4\uCCAD\uB09C \uCDA9\uACA9
Axes.Ability.Bonus.5=\uBE44\uBB34\uC7A5 \uCD94\uAC00 \uD53C\uD574: {0}
Axes.Ability.Lower=[[GRAY]]**\uB3C4\uB07C \uC900\uBE44 \uD574\uC81C**
Axes.Ability.Ready=[[GREEN]]**\uB3C4\uB07C \uC900\uBE44 \uC644\uB8CC**
Axes.Combat.CritStruck=[[DARK_RED]]\uD06C\uB9AC\uD2F0\uCEEC \uD788\uD2B8\uC5D0 \uB9DE\uC558\uC2B5\uB2C8\uB2E4!
Axes.Combat.CritChance=\uD06C\uB9AC\uD2F0\uCEEC \uD788\uD2B8 \uD655\uB960: [[YELLOW]]{0}
Axes.Combat.CriticalHit=\uD06C\uB9AC\uD2F0\uCEEC \uD788\uD2B8!
Axes.Combat.GI.Proc=[[GREEN]]**\uCD5C\uACE0\uC758 \uAC15\uD0C0\uB97C \uB54C\uB838\uC2B5\uB2C8\uB2E4**
Axes.Combat.GI.Struck=**\uC5C4\uCCAD\uB09C \uCDA9\uACA9\uC744 \uBC1B\uC558\uC2B5\uB2C8\uB2E4**
Axes.Combat.SS.Struck=[[DARK_RED]]\uBF08 \uCABC\uAC1C\uAE30\uC5D0 \uB9DE\uC558\uC2B5\uB2C8\uB2E4!
Axes.Combat.SS.Length=\uBF08 \uCABC\uAC1C\uAE30 \uC9C0\uC18D\uC2DC\uAC04: [[YELLOW]]{0}\uCD08
Axes.SubSkill.SkullSplitter.Name=\uBF08 \uCABC\uAC1C\uAE30 (\uB2A5\uB825)
Axes.SubSkill.SkullSplitter.Description=\uAD11\uC5ED \uCD94\uAC00 \uD53C\uD574
Axes.SubSkill.CriticalStrikes.Name=\uD06C\uB9AC\uD2F0\uCEEC \uC2A4\uD2B8\uB77C\uC774\uD06C
Axes.SubSkill.CriticalStrikes.Description=\uD53C\uD574 2\uBC30
Axes.SubSkill.AxeMastery.Name=\uB3C4\uB07C \uB9C8\uC2A4\uD130\uB9AC
Axes.SubSkill.AxeMastery.Description=\uCD94\uAC00 \uD2B9\uD61C \uD53C\uD574
Axes.SubSkill.ArmorImpact.Name=\uAC11\uC637 \uCDA9\uACA9
Axes.SubSkill.ArmorImpact.Description=\uAC11\uC637 \uD30C\uAD34 \uACF5\uACA9
Axes.SubSkill.GreaterImpact.Name=\uC5C4\uCCAD\uB09C \uCDA9\uACA9
Axes.SubSkill.GreaterImpact.Description=\uBE44\uBB34\uC7A5 \uCD94\uAC00 \uD53C\uD574
Axes.Listener=\uBD80\uC220(AXES):
Axes.SkillName=\uBD80\uC220
Axes.Skills.SS.Off=**\uBF08 \uCABC\uAC1C\uAE30 \uBC1C\uB3D9 \uD574\uC81C**
Axes.Skills.SS.On=[[GREEN]]**\uBF08 \uCABC\uAC1C\uAE30 \uBC1C\uB3D9**
Axes.Skills.SS.Refresh=[[GREEN]]\uB2F9\uC2E0\uC758 [[YELLOW]]\uBF08 \uCABC\uAC1C\uAE30 [[GREEN]]\uAE30\uC220\uC740 \uC774\uC81C \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4!
Axes.Skills.SS.Other.Off={0}\uB2D8\uC774 [[RED]]\uBF08 \uCABC\uAC1C\uAE30\uB97C[[GREEN]] \uC900\uBE44 \uD574\uC81C\uD588\uC2B5\uB2C8\uB2E4
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\uB2D8\uC774 [[RED]]\uBF08 \uCABC\uAC1C\uAE30\uB97C \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Axes.Skillup=\uBD80\uC220 \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D ({1}) \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#EXCAVATION
Excavation.Ability.Lower=[[GRAY]]**\uC0BD \uC900\uBE44 \uD574\uC81C**
Excavation.Ability.Ready=[[GREEN]]**\uC0BD \uC900\uBE44 \uC644\uB8CC**
Excavation.SubSkill.GigaDrillBreaker.Name=\uAE30\uAC00 \uB4DC\uB9B4 \uBC84\uC11C\uCEE4 (\uB2A5\uB825)
Excavation.SubSkill.GigaDrillBreaker.Description=\uB4DC\uB86D \uC18D\uB3C4 3\uBC30, \uACBD\uD5D8\uCE58 3\uBC30, \uC18D\uB3C4 \uC99D\uAC00
Excavation.SubSkill.TreasureHunter.Name=\uBCF4\uBB3C \uC0AC\uB0E5\uAFBC
Excavation.SubSkill.TreasureHunter.Description=\uBCF4\uBB3C \uBC1C\uAD74 \uB2A5\uB825
Excavation.Effect.Length=\uAE30\uAC00 \uB4DC\uB9B4 \uBC84\uC11C\uCEE4 \uC9C0\uC18D\uC2DC\uAC04: [[YELLOW]]{0}\uCD08
Excavation.Listener=\uBC1C\uAD74(EXCAVATION):
Excavation.SkillName=\uBC1C\uAD74
Excavation.Skills.GigaDrillBreaker.Off=**\uAE30\uAC00 \uB4DC\uB9B4 \uBC84\uC11C\uCEE4 \uBC1C\uB3D9 \uD574\uC81C**
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**\uAE30\uAC00 \uB4DC\uB9B4 \uBC84\uC11C\uCEE4 \uBC1C\uB3D9**
Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]\uB2F9\uC2E0\uC758 [[YELLOW]]\uAE30\uAC00 \uB4DC\uB9B4 \uBC84\uC11C\uCEE4 [[GREEN]]\uAE30\uC220\uC740 \uC774\uC81C \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4!
Excavation.Skills.GigaDrillBreaker.Other.Off={0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uAE30\uAC00 \uB4DC\uB9B4 \uBC84\uC11C\uCEE4\uB97C \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uAE30\uAC00 \uB4DC\uB9B4 \uBC84\uC11C\uCEE4\uB97C \uC0AC\uC6A9 \uD588\uC2B5\uB2C8\uB2E4!
Excavation.Skillup=\uBC1C\uAD74 \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#FISHING
Fishing.Ability.Chance=\uC785\uC9C8 \uD655\uB960: [[YELLOW]]{0}
Fishing.Ability.Info=\uB9E4\uC9C1 \uD5CC\uD130: [[GRAY]] **\uD2B8\uB808\uC838 \uD5CC\uD130 \uB7AD\uD06C \uD5A5\uC0C1**
Fishing.Ability.Locked.0={0}\uB808\uBCA8 \uB54C \uAE30\uC220 \uD574\uC81C (\uD754\uB4E4\uAE30)
Fishing.Ability.Locked.1={0}\uB808\uBCA8 \uB54C \uAE30\uC220 \uD574\uC81C (\uC5BC\uC74C \uB09A\uC2DC)
Fishing.Ability.Locked.2={0}\uB808\uBCA8 \uB54C \uAE30\uC220 \uD574\uC81C (\uB09A\uC2DC\uAFBC \uC7A5\uC778)
Fishing.Ability.Rank=\uD2B8\uB808\uC838 \uD5CC\uD130 \uB7AD\uD06C: [[YELLOW]]{0}/5\uB7AD\uD06C
Fishing.Ability.TH.DropRate=\uB4DC\uB86D \uBE44\uC728: [[DARK_RED]]\uD568\uC815: [[YELLOW]]{0} [[GRAY]]\uACF5\uD1B5: [[YELLOW]]{1} [[GREEN]]\uBE44\uACF5\uD1B5: [[YELLOW]]{2}\n[[BLUE]]\uB808\uC5B4: [[YELLOW]]{3} [[LIGHT_PURPLE]]\uC5D0\uD53D: [[YELLOW]]{4} [[GOLD]]\uB808\uC804\uB4DC\uB9AC: [[YELLOW]]{5} [[AQUA]]\uB808\uCF54\uB4DC: [[YELLOW]]{6}
Fishing.Ability.TH.MagicRate=\uB9E4\uC9C1 \uD5CC\uD130 \uD655\uB960: [[YELLOW]]{0}
Fishing.Ability.Shake=\uD754\uB4E4\uAE30 \uD655\uB960: [[YELLOW]]{0}
Fishing.Ability.IceFishing=\uC5BC\uC74C \uB09A\uC2DC: \uC5BC\uC74C\uC5D0\uC11C \uB09A\uC2DC
Fishing.Ability.FD=\uC5B4\uBD80\uC758 \uB2E4\uC774\uC5B4\uD2B8 \uB7AD\uD06C: [[YELLOW]]{0}\uB7AD\uD06C
Fishing.SubSkill.TreasureHunter.Name=\uD2B8\uB808\uC838 \uD5CC\uD130 (\uD328\uC2DC\uBE0C)
Fishing.SubSkill.TreasureHunter.Description=\uBB3C\uAC74(\uADF8\uC678) \uB09A\uC2DC
Fishing.SubSkill.MagicHunter.Name=\uB9E4\uC9C1 \uD5CC\uD130
Fishing.SubSkill.MagicHunter.Description=\uC778\uCC48\uD2B8 \uC544\uC774\uD15C \uBC1C\uACAC
Fishing.SubSkill.Shake.Name=\uD754\uB4E4\uAE30 (vs. \uB3C5\uB9BD\uCCB4)
Fishing.SubSkill.Shake.Description=\uC544\uC774\uD15C\uC744 \uBAB9\uC774\uB098 \uB09A\uC2DC\uC5D0\uC11C \uC5BB\uC74C
Fishing.SubSkill.FishermansDiet.Name=\uC5B4\uBD80\uC758 \uB2E4\uC774\uC5B4\uD2B8
Fishing.SubSkill.FishermansDiet.Description=\uC5B4\uB958 \uC74C\uC2DD \uD5C8\uAE30 \uD68C\uBCF5 \uC99D\uAC00
Fishing.SubSkill.MasterAngler.Name=\uB09A\uC2DC\uAFBC \uC7A5\uC778
Fishing.SubSkill.MasterAngler.Description=\uB09A\uC2DC\uC911 \uC785\uC9C8 \uD655\uB960 \uC99D\uAC00
Fishing.SubSkill.IceFishing.Name=\uC5BC\uC74C \uB09A\uC2DC
Fishing.SubSkill.IceFishing.Description=\uC5BC\uC74C\uC774 \uB36E\uD600\uC788\uB294 \uD658\uACBD\uC5D0\uC11C \uB09A\uC2DC \uAC00\uB2A5
Fishing.Chance.Raining=[[BLUE]] \uBE44 \uD2B9\uD61C
Fishing.Listener=\uB09A\uC2DC(FISHING):
Fishing.Ability.TH.MagicFound=[[GRAY]]\uC774 \uC785\uC9C8\uC5D0\uC11C \uB9C8\uBC95\uC774 \uB290\uAEF4\uC9D1\uB2C8\uB2E4...
Fishing.Ability.TH.Boom=[[GRAY]]\uD3ED\uBC1C \uC2DC\uAC04!!!
Fishing.Ability.TH.Poison=[[GRAY]]\uB08C\uC0C8\uAC00 \uC88B\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4...
Fishing.SkillName=\uB09A\uC2DC
Fishing.Skillup=\uB09A\uC2DC \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#HERBALISM
Herbalism.Ability.DoubleDropChance=2\uBC30 \uB4DC\uB86D \uD655\uB960: [[YELLOW]]{0}
Herbalism.Ability.FD=\uB18D\uBD80\uC758 \uB2E4\uC774\uC5B4\uD2B8: [[YELLOW]]{0}\uB7AD\uD06C
Herbalism.Ability.GTe.Length=\uC7AC\uBC30\uC758 \uB300\uC9C0 \uC9C0\uC18D\uC2DC\uAC04: [[YELLOW]]{0}\uCD08
Herbalism.Ability.GTe.NeedMore=\uC7AC\uBC30\uC758 \uB300\uC9C0\uC5D0 \uBFCC\uB9B4 \uC528\uAC00 \uC880\uB354 \uD544\uC694\uD569\uB2C8\uB2E4.
Herbalism.Ability.GTh.Chance=\uC7AC\uBC30\uC758 \uC7AC\uB2A5 \uD655\uB960: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=**\uC7AC\uBC30\uC758 \uC7AC\uB2A5 \uC2E4\uD328**
Herbalism.Ability.GTh.Stage=\uC7AC\uBC30\uC758 \uC7AC\uB2A5 \uB2E8\uACC4: [[YELLOW]] \uC791\uBB3C \uC7AC\uBC30 {0}\uB2E8\uACC4
Herbalism.Ability.GTh=[[GREEN]]**\uC7AC\uBC30\uC758 \uC7AC\uB2A5**
Herbalism.Ability.HylianLuck=\uD558\uC77C\uB9AC\uC548\uC758 \uD589\uC6B4 \uD655\uB960: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**\uD638\uBBF8 \uC900\uBE44 \uD574\uC81C**
Herbalism.Ability.Ready=[[GREEN]]**\uD638\uBBF8 \uC900\uBE44 \uC644\uB8CC**
Herbalism.Ability.ShroomThumb.Chance=\uBC84\uC12F\uC7AC\uBC30\uC790\uC758 \uC228\uACB0 \uD655\uB960: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=**\uBC84\uC12F\uC7AC\uBC30\uC790\uC758 \uC228\uACB0 \uC2E4\uD328**
Herbalism.SubSkill.GreenTerra.Name=\uC7AC\uBC30\uC758 \uB300\uC9C0 (\uB2A5\uB825)
Herbalism.SubSkill.GreenTerra.Description=\uB300\uC9C0 \uBFCC\uB9AC\uAE30, \uB4DC\uB86D 3\uBC30
Herbalism.SubSkill.GreenThumb.Name=\uC7AC\uBC30\uC758 \uC7AC\uB2A5 (\uBC00)
Herbalism.SubSkill.GreenThumb.Description=\uC218\uD655\uC2DC \uC790\uB3D9 \uC528 \uC2EC\uAE30
Herbalism.Effect.4=\uC7AC\uBC30\uC758 \uC7AC\uB2A5 (\uBE14\uB85D\uB4E4)
Herbalism.SubSkill.GreenThumb.Description.2=\uC774\uB07C\uB080 \uBE14\uB85D \uB9CC\uB4E4\uAE30, \uC794\uB514 \uC790\uB77C\uAC8C\uD558\uAE30
Herbalism.SubSkill.FarmersDiet.Name=\uB18D\uBD80\uC758 \uB2E4\uC774\uC5B4\uD2B8
Herbalism.SubSkill.FarmersDiet.Description=\uB18D\uC791\uBB3C \uBC30\uACE0\uD488 \uD68C\uBCF5 \uD5A5\uC0C1
Herbalism.SubSkill.DoubleDrops.Name=2\uBC30 \uB4DC\uB86D (\uBAA8\uB4E0 \uC791\uBB3C)
Herbalism.SubSkill.DoubleDrops.Description=\uD56D\uC0C1 \uB4DC\uB86D 2\uBC30
Herbalism.SubSkill.HylianLuck.Name=\uD558\uC77C\uB9AC\uC548\uC758 \uD589\uC6B4
Herbalism.SubSkill.HylianLuck.Description=\uC801\uC740 \uD655\uB960\uB85C \uB808\uC5B4\uC544\uC774\uD15C \uC5BB\uC74C
Herbalism.SubSkill.ShroomThumb.Name=\uBC84\uC12F\uC7AC\uBC30\uC790\uC758 \uC228\uACB0
Herbalism.SubSkill.ShroomThumb.Description=\uD759 & \uC794\uB514\uC5D0 \uADE0\uC0AC\uCCB4 \uC0B4\uD3EC
Herbalism.HylianLuck=[[GREEN]]\uD558\uC774\uB784\uC758 \uD589\uC6B4\uC774 \uC624\uB298 \uB108\uC5D0\uAC8C \uB530\uB974\uB294\uAD6C\uB098!
Herbalism.Listener=\uC57D\uCD08\uD559(HERBALISM):
Herbalism.SkillName=\uC57D\uCD08\uD559
Herbalism.Skills.GTe.Off=**\uC7AC\uBC30\uC758 \uB300\uC9C0 \uBE44\uD65C\uC131\uD654\uB428**
Herbalism.Skills.GTe.On=[[GREEN]]**\uC7AC\uBC30\uC758 \uB300\uC9C0 \uD65C\uC131\uD654\uB428**
Herbalism.Skills.GTe.Refresh=[[GREEN]]\uB2F9\uC2E0\uC758 [[YELLOW]]\uC7AC\uBC30\uC758 \uB300\uC9C0 [[GREEN]]\uAE30\uC220\uC740 \uC774\uC81C \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4!
Herbalism.Skills.GTe.Other.Off={0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uC7AC\uBC30\uC758 \uB300\uC9C0\uB97C \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uC7AC\uBC30\uC758 \uB300\uC9C0\uB97C \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Herbalism.Skillup=\uC57D\uCD08\uD559 \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#MINING
Mining.Ability.Length=\uD30C\uAD34\uC790 \uC9C0\uC18D\uC2DC\uAC04: [[YELLOW]]{0}s
Mining.Ability.Locked.0={0}\uB808\uBCA8 \uB54C \uAE30\uC220 \uD574\uC81C (\uD3ED\uBC1C \uCC44\uAD74)
Mining.Ability.Locked.1={0}\uB808\uBCA8 \uB54C \uAE30\uC220 \uD574\uC81C (\uAC70\uB300 \uD3ED\uBC1C)
Mining.Ability.Locked.2={0}\uB808\uBCA8 \uB54C \uAE30\uC220 \uD574\uC81C (\uC804\uBB38 \uD3ED\uD30C)
Mining.Ability.Lower=[[GRAY]]**\uACE1\uAD2D\uC774 \uC900\uBE44 \uD574\uC81C**
Mining.Ability.Ready=[[GREEN]]**\uACE1\uAD2D\uC774 \uC900\uBE44 \uC644\uB8CC**
Mining.SubSkill.SuperBreaker.Name=\uD30C\uAD34\uC790 (\uB2A5\uB825)
Mining.SubSkill.SuperBreaker.Description=\uC18D\uB3C4 \uD5A5\uC0C1, \uB4DC\uB86D \uD655\uB960 3\uBC30
Mining.SubSkill.DoubleDrops.Name=\uB4DC\uB86D 2\uBC30
Mining.SubSkill.DoubleDrops.Description=\uD56D\uC0C1 \uB4DC\uB86D 2\uBC30
Mining.SubSkill.BlastMining.Name=\uD3ED\uBC1C \uCC44\uAD74
Mining.SubSkill.BlastMining.Description=TNT\uB85C \uCC44\uAD74\uC2DC \uCD94\uAC00 \uAD11\uBB3C
Mining.SubSkill.BiggerBombs.Name=\uAC70\uB300 \uD3ED\uBC1C
Mining.SubSkill.BiggerBombs.Description=TNT \uD3ED\uBC1C\uAC70\uB9AC \uC99D\uAC00
Mining.SubSkill.DemolitionsExpertise.Name=\uC804\uBB38 \uD3ED\uD30C
Mining.SubSkill.DemolitionsExpertise.Description=TNT \uD3ED\uBC1C \uD53C\uD574 \uAC10\uC18C
Mining.Effect.Decrease=\uC804\uBB38 \uD3ED\uD30C \uD53C\uD574 \uAC10\uC18C: [[YELLOW]]{0}
Mining.Effect.DropChance=\uB4DC\uB86D 2\uBC30 \uD655\uB960: [[YELLOW]]{0}
Mining.Listener=\uCC44\uAD11(MINING):
Mining.SkillName=\uCC44\uAD11
Mining.Skills.SuperBreaker.Off=**\uD30C\uAD34\uC790 \uBC1C\uB3D9 \uD574\uC81C**
Mining.Skills.SuperBreaker.On=[[GREEN]]**\uD30C\uAD34\uC790 \uBC1C\uB3D9**
Mining.Skills.SuperBreaker.Other.Off={0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uD30C\uAD34\uC790\uB97C \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uD30C\uAD34\uC790\uB97C \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\uB2F9\uC2E0\uC758 [[YELLOW]]\uD30C\uAD34\uC790\uB294 [[GREEN]]\uC774\uC81C \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4!
Mining.Skillup=\uCC44\uAD11 \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#Blast Mining
Mining.Blast.Boom=[[GRAY]]**\uD3ED\uBC1C**
Mining.Blast.Effect=+{0} \uAD11\uBB3C \uC774\uC775, -{1} \uD30C\uD3B8 \uC0B0\uCD9C, {2}x \uB4DC\uB86D
Mining.Blast.Radius.Increase=\uD3ED\uBC1C \uBC18\uACBD \uC99D\uAC00: [[YELLOW]]+{0}
Mining.Blast.Rank=\uD3ED\uBC1C \uCC44\uAD74: [[YELLOW]]{0}/8\uB7AD\uD06C [[GRAY]]({1})
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uD3ED\uBC1C \uCC44\uAD74\uC744 \uC0AC\uC6A9\uD558\uC168\uC2B5\uB2C8\uB2E4!
Mining.Blast.Refresh=[[GREEN]]\uB2F9\uC2E0\uC758 [[YELLOW]]\uD3ED\uBC1C \uCC44\uAD74 [[GREEN]]\uAE30\uC220\uC740 \uC774\uC81C \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4!
#REPAIR
Repair.SubSkill.Repair.Name=\uC218\uB9AC
Repair.SubSkill.Repair.Description=\uB3C4\uAD6C & \uBC29\uC5B4\uAD6C \uC218\uB9AC
Repair.SubSkill.GoldRepair.Name=\uAE08 \uC218\uB9AC ({0}\uB808\uBCA8 \uC774\uC0C1)
Repair.SubSkill.GoldRepair.Description=\uAE08 \uB3C4\uAD6C & \uBC29\uC5B4\uAD6C \uC218\uB9AC
Repair.SubSkill.IronRepair.Name=\uCCA0 \uC218\uB9AC ({0}\uB808\uBCA8 \uC774\uC0C1)
Repair.SubSkill.IronRepair.Description=\uCCA0 \uB3C4\uAD6C & \uBC29\uC5B4\uAD6C \uC218\uB9AC
Repair.SubSkill.StoneRepair.Name=\uB3CC \uC218\uB9AC ({0}\uB808\uBCA8 \uC774\uC0C1)
Repair.SubSkill.StoneRepair.Description=\uB3CC \uB3C4\uAD6C \uC218\uB9AC
Repair.SubSkill.RepairMastery.Name=\uC218\uB9AC \uB9C8\uC2A4\uD130\uB9AC
Repair.SubSkill.RepairMastery.Description=\uC218\uB9AC \uC591 \uC99D\uAC00
Repair.SubSkill.SuperRepair.Name=\uC288\uD37C \uC218\uB9AC
Repair.SubSkill.SuperRepair.Description=\uD6A8\uC728 2\uBC30
Repair.SubSkill.DiamondRepair.Name=\uB2E4\uC774\uC544\uBAAC\uB4DC \uC218\uB9AC ({0} \uB808\uBCA8)
Repair.SubSkill.DiamondRepair.Description=\uB2E4\uC774\uC544\uBAAC\uB4DC \uB3C4\uAD6C & \uBC29\uC5B4\uAD6C \uC218\uB9AC
Repair.SubSkill.ArcaneForging.Name=\uC778\uCC48\uD2B8 \uC544\uC774\uD15C \uC218\uB9AC
Repair.SubSkill.ArcaneForging.Description=\uB9C8\uBC95 \uC544\uC774\uD15C \uC218\uB9AC
Repair.Error=[[DARK_RED]]mcMMO\uC774 \uC544\uC774\uD15C\uC744 \uC218\uB9AC\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uB3D9\uC548 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4!
Repair.Listener.Anvil=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uBAA8\uB8E8\uB97C \uB193\uC558\uC2B5\uB2C8\uB2E4, \uBAA8\uB8E8\uB294 \uB3C4\uAD6C\uB4E4\uACFC \uBC29\uC5B4\uAD6C\uB97C \uC218\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
Repair.Listener=\uC218\uB9AC(REPAIR):
Repair.SkillName=\uC218\uB9AC
Repair.Skills.AdeptDiamond=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uC544\uC9C1 \uB2E4\uC774\uC544\uBAAC\uB4DC\uB97C \uC218\uB9AC\uD560 \uC218 \uC788\uB294 \uAE30\uC220\uC744 \uBC30\uC6B0\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Repair.Skills.AdeptGold=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uC544\uC9C1 \uAE08\uC744 \uC218\uB9AC\uD560 \uC218 \uC788\uB294 \uAE30\uC220\uC744 \uBC30\uC6B0\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Repair.Skills.AdeptIron=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uC544\uC9C1 \uCCA0\uC744 \uC218\uB9AC\uD560 \uC218 \uC788\uB294 \uAE30\uC220\uC744 \uBC30\uC6B0\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Repair.Skills.AdeptStone=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uC544\uC9C1 \uB3CC\uC744 \uC218\uB9AC\uD560 \uC218 \uC788\uB294 \uAE30\uC220\uC744 \uBC30\uC6B0\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Repair.Skills.Adept=\uB2F9\uC2E0\uC740 [[YELLOW]]{1}\uC744/\uB97C \uC218\uB9AC\uD560\uB824\uBA74 [[YELLOW]]{0}[[RED]]\uB808\uBCA8\uC774 \uD544\uC694\uD569\uB2C8\uB2E4
Repair.Skills.FeltEasy=[[GRAY]]\uC26C\uC6B4 \uB290\uB08C~
Repair.Skills.FullDurability=[[GRAY]]\uB0B4\uAD6C\uB3C4\uAC00 \uAF49 \uCC3C\uC2B5\uB2C8\uB2E4.
Repair.Skills.Mastery=\uC218\uB9AC \uB9C8\uC2A4\uD130\uB9AC: [[YELLOW]]\uCD94\uAC00 \uB0B4\uAD6C\uC131 \uBCF5\uAD6C: {0}
Repair.Skills.StackedItems=[[DARK_RED]]\uD55C\uBC88\uC5D0 \uB9CE\uC740 \uC544\uC774\uD15C\uC744 \uC218\uB9AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
Repair.Skills.Super.Chance=\uC288\uD37C \uC218\uB9AC \uD655\uB960: [[YELLOW]]{0}
Repair.Skillup=\uC218\uB9AC \uAE30\uC220\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
Repair.Pretty.Name=\uC218\uB9AC
#Arcane Forging
Repair.Arcane.Chance.Downgrade=[[GRAY]]\uC778\uCC48\uD2B8 \uC218\uB9AC \uACA9\uD558 \uD655\uB960: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]\uC778\uCC48\uD2B8 \uC218\uB9AC \uC131\uACF5 \uD655\uB960: [[YELLOW]]{0}%
Repair.Arcane.Downgrade=\uC774 \uC544\uC774\uD15C\uC758 \uC778\uCC48\uD2B8\uB294 \uAC10\uC18C\uD588\uC2B5\uB2C8\uB2E4.
Repair.Arcane.Fail=\uC774 \uC544\uC774\uD15C\uC758 \uC778\uCC48\uD2B8\uB294 \uC601\uAD6C\uC801\uC73C\uB85C \uC18C\uBA78\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Repair.Arcane.Lost=\uB2F9\uC2E0\uC740 \uBAA8\uB4E0 \uC778\uCC48\uD2B8\uB97C \uC720\uC9C0\uD560 \uAE30\uC220\uC774 \uCDA9\uBD84\uCE58 \uC54A\uC2B5\uB2C8\uB2E4.
Repair.Arcane.Perfect=[[GREEN]]\uC774 \uC544\uC774\uD15C\uC758 \uC778\uCC48\uD2B8\uB97C \uC9C0\uC18D\uC2DC\uCF30\uC2B5\uB2C8\uB2E4.
Repair.Arcane.Rank=\uC778\uCC48\uD2B8 \uC218\uB9AC: [[YELLOW]]{0}/{1}\uB7AD\uD06C
#SALVAGE
Salvage.Pretty.Name=\uD68C\uC218
Salvage.SubSkill.AdvancedSalvage.Name=\uC804\uBB38\uC801\uC778 \uD68C\uC218
Salvage.SubSkill.AdvancedSalvage.Description=\uC190\uC0C1\uB41C \uC544\uC774\uD15C \uD68C\uC218
Salvage.SubSkill.ArcaneSalvaging.Name=\uC2E0\uBE44\uB85C\uC6B4 \uD68C\uC218
Salvage.SubSkill.ArcaneSalvaging.Description=\uC544\uC774\uD15C\uC758 \uC778\uCC48\uD2B8 \uCD94\uCD9C
Salvage.Ability.Locked.0={0} \uB808\uBCA8 \uB54C \uAE30\uC220\uD574\uC81C (\uC804\uBB38\uC801\uC778 \uD68C\uC218)
Salvage.Ability.Bonus.0=\uC804\uBB38\uC801\uC778 \uD68C\uC218
Salvage.Ability.Bonus.1=\uBD80\uC154\uC9C4 \uC544\uC774\uD15C\uC758 \uCD5C\uB300 \uCD94\uCD9C\uB7C9 {0}
Salvage.Arcane.Rank=\uC2E0\uBE44\uB85C\uC6B4 \uD68C\uC218: [[YELLOW]]Rank {0}/{1}
Salvage.Arcane.ExtractFull=[[GRAY]]\uCD5C\uB300-\uC778\uCC48\uD2B8 \uAE30\uD68C \uBD80\uACFC
Salvage.Arcane.ExtractPartial=[[GRAY]]\uC77C\uBD80-\uC778\uCC48\uD2B8 \uAE30\uD68C \uBD80\uACFC
Salvage.Skills.Success=[[GREEN]]\uC544\uC774\uD15C \uD68C\uC218\uB428!
Salvage.Skills.Adept.Damaged=[[DARK_RED]]\uC190\uC0C1\uB41C \uC544\uC774\uD15C\uC744 \uD68C\uC218\uD560 \uB2A5\uB825\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
Salvage.Skills.Adept.Level={1}\uB97C [[RED]]\uD68C\uC218\uD558\uB824\uBA74 [[YELLOW]]{0}[[RED]] \uB808\uBCA8\uC774 \uB418\uC57C\uD569\uB2C8\uB2E4
Salvage.Skills.TooDamaged=[[DARK_RED]]\uC774 \uC544\uC774\uD15C\uC740 \uC2EC\uD558\uAC8C \uC190\uC0C1\uB418\uC5B4 \uD68C\uC218\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
Salvage.Skills.ArcaneFailed=\uB2F9\uC2E0\uC740 \uC774 \uC544\uC774\uD15C \uC18D\uC758 \uC9C0\uC2DD\uC744 \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
Salvage.Skills.ArcanePartial=\uB2F9\uC2E0\uC740 \uC774 \uC544\uC774\uD15C \uC18D\uC758 \uC9C0\uC2DD\uC758 \uC77C\uBD80\uB9CC \uCD94\uCD9C\uD560 \uC218 \uC788\uC5C8\uC2B5\uB2C8\uB2E4.
Salvage.Skills.ArcaneSuccess=[[GREEN]]\uB2F9\uC2E0\uC740 \uC774 \uC544\uC774\uD15C\uC758 \uBAA8\uB4E0 \uC9C0\uC2DD\uC744 \uCD94\uCD9C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4!
Salvage.Listener.Anvil=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uD68C\uC218 \uBAA8\uB8E8\uB97C \uB193\uC558\uC2B5\uB2C8\uB2E4, \uB3C4\uAD6C\uB098 \uBC29\uC5B4\uAD6C \uD68C\uC218\uC5D0 \uC4F0\uC785\uB2C8\uB2E4.
Salvage.Listener=\uD68C\uC218(SALVAGE):
Salvage.SkillName=\uD68C\uC218
#SWORDS
Swords.Ability.Lower=[[GRAY]]**\uAC80 \uC900\uBE44 \uD574\uC81C**
Swords.Ability.Ready=[[GREEN]]**\uAC80 \uC900\uBE44 \uC644\uB8CC**
Swords.Combat.Bleed.Chance=\uCD9C\uD608 \uD655\uB960: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=\uCD9C\uD608 \uC9C0\uC18D\uC2DC\uAC04: [[YELLOW]]{0} \uD2F1
Swords.Combat.Bleed.Note=[[GRAY]]\uC54C\uB9BC: [[YELLOW]]1 \uD2F1\uC740 2\uCD08\uC785\uB2C8\uB2E4
Swords.Combat.Bleeding.Started=[[DARK_RED]] \uB2F9\uC2E0\uC740 \uD53C\uB97C \uD758\uB9AC\uACE0 \uC788\uC2B5\uB2C8\uB2E4!
Swords.Combat.Bleeding.Stopped=[[GRAY]]\uCD9C\uD608\uC774 [[GREEN]]\uBA48\uCDC4\uC2B5\uB2C8\uB2E4[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**\uCD9C\uD608**
Swords.Combat.Counter.Chance=\uCE74\uC6B4\uD130 \uC5B4\uD0DD \uD655\uB960: [[YELLOW]]{0}
Swords.Combat.Counter.Hit=[[DARK_RED]]\uCE74\uC6B4\uD130 \uC5B4\uD0DD\uC5D0 \uB9DE\uC558\uC2B5\uB2C8\uB2E4!
Swords.Combat.Countered=[[GREEN]]**\uCE74\uC6B4\uD130-\uC5B4\uD0DD**
Swords.Combat.SS.Struck=[[DARK_RED]]\uD1B1\uB0A0 \uACF5\uACA9\uC5D0 \uB9DE\uC558\uC2B5\uB2C8\uB2E4!
Swords.SubSkill.CounterAttack.Name=\uCE74\uC6B4\uD130 \uC5B4\uD0DD
Swords.SubSkill.CounterAttack.Description={0} \uD53C\uD574 \uBC18\uC0AC
Swords.SubSkill.SerratedStrikes.Name=\uD1B1\uB0A0 \uACF5\uACA9 (\uB2A5\uB825)
Swords.SubSkill.SerratedStrikes.Description=\uD53C\uD574 {0} \uC99D\uAC00, \uCD9C\uD608 \uC99D\uAC00
Swords.Effect.4=\uD1B1\uB0A0 \uACF5\uACA9 \uCD9C\uD608 \uC99D\uAC00
Swords.Effect.5={0} \uD2F1 \uCD9C\uD608
Swords.SubSkill.Bleed.Name=\uCD9C\uD608
Swords.SubSkill.Bleed.Description=\uACFC\uB2E4 \uCD9C\uD608
Swords.Listener=\uAC80\uC220(SWORDS):
Swords.SkillName=\uAC80\uC220
Swords.Skills.SS.Off=**\uD1B1\uB0A0 \uACF5\uACA9 \uBC1C\uB3D9 \uD574\uC81C**
Swords.Skills.SS.On=[[GREEN]]**\uD1B1\uB0A0 \uACF5\uACA9 \uBC1C\uB3D9**
Swords.Skills.SS.Refresh=[[GREEN]]\uB2F9\uC2E0\uC758 [[YELLOW]]\uD1B1\uB0A0 \uACF5\uACA9 [[GREEN]]\uC2A4\uD0AC\uC740 \uC774\uC81C \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4!
Swords.Skills.SS.Other.Off={0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uD1B1\uB0A0 \uACF5\uACA9 \uC2A4\uD0AC\uC744 \uC0AC\uC6A9 \uD574\uC81C\uD588\uC2B5\uB2C8\uB2E4!
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uD1B1\uB0A0 \uACF5\uACA9 \uC2A4\uD0AC\uC744 \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Swords.Skillup=\uAC80\uC220 \uC2A4\uD0AC\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
Swords.SS.Length=\uD1B1\uB0A0 \uACF5\uACA9 \uC9C0\uC18D\uC2DC\uAC04: [[YELLOW]]{0}\uCD08
#TAMING
Taming.Ability.Bonus.0=\uD658\uACBD \uC778\uC2DD
Taming.Ability.Bonus.1=\uB291\uB300 \uC704\uD5D8 \uD68C\uD53C
Taming.Ability.Bonus.2=\uB450\uAEBC\uC6B4 \uD138
Taming.Ability.Bonus.3=1/{0} \uD53C\uD574, \uB0B4\uD654\uC131(\uBD88\uC800\uD56D\uB825)
Taming.Ability.Bonus.4=\uCDA9\uACA9 \uC99D\uBA85
Taming.Ability.Bonus.5=\uD56D\uC0C1 1/{0} \uD3ED\uBC1C \uD53C\uD574
Taming.Ability.Bonus.6=\uB0A0\uCE74\uB85C\uC6B4 \uBC1C\uD1B1
Taming.Ability.Bonus.7=+{0} \uD53C\uD574
Taming.Ability.Bonus.8=\uBE60\uB978 \uC74C\uC2DD \uC81C\uACF5
Taming.Ability.Bonus.9={0} \uD655\uB960\uB85C \uACF5\uACA9\uC2DC \uD68C\uBCF5
Taming.Ability.Bonus.10=\uC2E0\uC131\uD55C \uC0AC\uB0E5\uAC1C
Taming.Ability.Bonus.11=\uB9C8\uBC95\uC774\uB098 \uB3C5\uC73C\uB85C \uC778\uD55C \uC190\uC0C1 \uD68C\uBCF5
Taming.Ability.Locked.0={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uD658\uACBD \uC778\uC2DD)
Taming.Ability.Locked.1={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uB450\uAEBC\uC6B4 \uD138)
Taming.Ability.Locked.2={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uCDA9\uACA9 \uC99D\uBA85)
Taming.Ability.Locked.3={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uB0A0\uCE74\uB85C\uC6B4 \uBC1C\uD1B1)
Taming.Ability.Locked.4={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uBE60\uB978 \uC74C\uC2DD \uC81C\uACF5)
Taming.Ability.Locked.5={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uC2E0\uC131\uD55C \uC0AC\uB0E5\uAC1C)
Taming.Combat.Chance.Gore=\uB3CC\uC9C4 \uD655\uB960: [[YELLOW]]{0}
Taming.SubSkill.BeastLore.Name=\uC9D0\uC2B9\uC758 \uD3EC\uD6A8
Taming.SubSkill.BeastLore.Description=\uBF08\uB85C \uB291\uB300/\uC624\uC140\uB86F \uAC80\uC0AC
Taming.SubSkill.ShockProof.Name=\uCDA9\uACA9 \uC99D\uBA85
Taming.SubSkill.ShockProof.Description=\uD3ED\uBC1C \uD53C\uD574 \uC808\uAC10
Taming.SubSkill.CallOfTheWild.Name=\uC9D0\uC2B9\uC758 \uD3EC\uD6A8
Taming.SubSkill.CallOfTheWild.Description=\uC606\uC5D0 \uB3D9\uBB3C \uC18C\uD658
Taming.SubSkill.CallOfTheWild.Description.2=[[GRAY]]COTW (\uC624\uC140\uB86F): \uCB48\uADF8\uB9AC\uBA74\uC11C \uBB3C\uACE0\uAE30\uB97C \uB4E4\uACE0 {0}\uBC88 \uC88C \uD074\uB9AD
Taming.Effect.15=[[GRAY]]COTW (\uB291\uB300): \uCB48\uADF8\uB9AC\uBA74\uC11C \uBF08\uB97C \uB4E4\uACE0 {0}\uBC88 \uC88C \uD074\uB9AD
Taming.SubSkill.Gore.Name0=[[GRAY]]COTW (\uB9D0): \uCB48\uADF8\uB9AC\uBA74\uC11C \uC0AC\uACFC\uB97C \uB4E4\uACE0 {0}\uBC88 \uC88C \uD074\uB9AD
Taming.SubSkill.FastFoodService.Name=\uBE60\uB978 \uC74C\uC2DD \uC81C\uACF5
Taming.SubSkill.FastFoodService.Description=\uACF5\uACA9\uC2DC \uCE58\uB8CC \uAE30\uD68C
Taming.SubSkill.HolyHound.Name=\uC2E0\uC131\uD55C \uC0AC\uB0E5\uAC1C
Taming.SubSkill.HolyHound.Description=\uB9C8\uBC95 & \uB3C5 \uD53C\uD574 \uCE58\uB8CC
Taming.SubSkill.Gore.Name=\uB3CC\uC9C4
Taming.SubSkill.Gore.Description=\uD06C\uB9AC\uD2F0\uCEEC \uC2A4\uD06C\uB77C\uC774\uD06C \uCD9C\uD608 \uC801\uC6A9
Taming.SubSkill.SharpenedClaws.Name=\uB0A0\uCE74\uB85C\uC6B4 \uBC1C\uD1B1
Taming.SubSkill.SharpenedClaws.Description=\uCD94\uAC00 \uD53C\uD574
Taming.SubSkill.EnvironmentallyAware.Name=\uD658\uACBD \uC778\uC2DD
Taming.SubSkill.EnvironmentallyAware.Description=\uC120\uC778\uC7A5/\uC6A9\uC554 \uACF5\uD3EC\uC99D, \uB099\uC0AC \uD53C\uD574 \uAC10\uC18C
Taming.SubSkill.ThickFur.Name=\uB450\uAEBC\uC6B4 \uD138
Taming.SubSkill.ThickFur.Description=\uD53C\uD574 \uAC10\uC18C, \uB0B4\uD654\uC131(\uBD88\uC800\uD56D\uB825)
Taming.Listener.Wolf=[[DARK_GRAY]]\uB291\uB300\uAC00 \uB2F9\uC2E0\uC5D0\uAC8C \uB418\uB3CC\uC544\uAC10...
Taming.Listener=\uC870\uB828(TAMING):
Taming.SkillName=\uC870\uB828
Taming.Skillup=\uC870\uB828 \uC2A4\uD0AC\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
Taming.Summon.Complete=[[GREEN]]\uC18C\uD658 \uC644\uB8CC
Taming.Summon.Fail.Ocelot=\uB2F9\uC2E0 \uADFC\uCC98\uC5D0 \uC774\uBBF8 \uB9CE\uC740 \uC624\uC140\uB86F\uC774 \uC788\uC5B4 \uB354\uB294 \uC18C\uD658\uC2DC\uD0AC \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
Taming.Summon.Fail.Wolf=\uB2F9\uC2E0 \uADFC\uCC98\uC5D0 \uC774\uBBF8 \uB9CE\uC740 \uB291\uB300\uAC00 \uC788\uC5B4 \uB354\uB294 \uC18C\uD658\uC2DC\uD0AC \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
Taming.Summon.Fail.Horse=\uB2F9\uC2E0 \uADFC\uCC98\uC5D0 \uC774\uBBF8 \uB9CE\uC740 \uB9D0\uC774 \uC788\uC5B4 \uB354\uB294 \uC18C\uD658\uC2DC\uD0AC \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
Taming.Summon.Name.Format={0}\uC758 {1}
#UNARMED
Unarmed.Ability.Berserk.Length=\uBC84\uC11C\uCEE4 \uC9C0\uC18D\uC2DC\uAC04: [[YELLOW]]{0}\uCD08
Unarmed.Ability.Bonus.0=\uC544\uC774\uC5B8 \uC554 \uC2A4\uD0C0\uC77C
Unarmed.Ability.Bonus.1=+{0} \uD53C\uD574 \uC5C5\uADF8\uB808\uC774\uB4DC
Unarmed.Ability.Chance.ArrowDeflect=\uD654\uC0B4 \uD68C\uD53C \uD655\uB960: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=\uBE44\uBB34\uC7A5 \uD655\uB960: [[YELLOW]]{0}
Unarmed.Ability.Chance.IronGrip=\uAC15\uCCA0 \uC8FC\uBA39 \uD655\uB960: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=\uC0C1\uB300\uB294 \uAC15\uCCA0 \uC8FC\uBA39\uC744 \uAC00\uC9C0\uACE0 \uC788\uC2B5\uB2C8\uB2E4!
Unarmed.Ability.IronGrip.Defender=[[GREEN]]\uAC15\uCCA0 \uC8FC\uBA39\uC758 \uBE44\uBB34\uC7A5\uC744 \uC77C\uC2DC\uC801\uC73C\uB85C \uBC29\uC5B4\uD588\uC2B5\uB2C8\uB2E4!
Unarmed.Ability.Lower=[[GRAY]]**\uC190 \uC900\uBE44 \uD574\uC81C**
Unarmed.Ability.Ready=[[GREEN]]**\uC190 \uC900\uBE44 \uC644\uB8CC**
Unarmed.SubSkill.Berserk.Name=\uBC84\uC11C\uCEE4 (\uB2A5\uB825)
Unarmed.SubSkill.Berserk.Description=+50% \uD53C\uD574, \uC57D\uD55C \uAD11\uBB3C\uB4E4\uC744 \uBD80\uC228
Unarmed.SubSkill.Disarm.Name=\uBE44\uBB34\uC7A5 (\uD50C\uB808\uC774\uC5B4)
Unarmed.SubSkill.Disarm.Description=\uC801\uC774 \uB4E4\uACE0\uC788\uB294 \uC544\uC774\uD15C \uB4DC\uB86D
Unarmed.SubSkill.IronArmStyle.Name=\uAC15\uCCA0 \uD314 \uD615\uD0DC
Unarmed.SubSkill.IronArmStyle.Description=\uACAC\uACE0\uD574\uC9C0\uB294 \uD314
Unarmed.SubSkill.ArrowDeflect.Name=\uD654\uC0B4 \uD68C\uD53C
Unarmed.SubSkill.ArrowDeflect.Description=\uD68C\uD53C \uD654\uC0B4
Unarmed.SubSkill.IronGrip.Name=\uC544\uC774\uC5B8 \uADF8\uB9BD
Unarmed.SubSkill.IronGrip.Description=\uBE44\uBB34\uC7A5 \uC0C1\uD0DC \uBC29\uC9C0
Unarmed.Listener=\uBE44\uBB34\uC7A5(UNARMED):
Unarmed.SkillName=\uBE44\uBB34\uC7A5
Unarmed.Skills.Berserk.Off=**\uBC84\uC11C\uCEE4 \uBC1C\uB3D9 \uD574\uC81C**
Unarmed.Skills.Berserk.On=[[GREEN]]**\uBC84\uC11C\uCEE4 \uBC1C\uB3D9**
Unarmed.Skills.Berserk.Other.Off={0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uBC84\uC11C\uCEE4\uB97C \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uBC84\uC11C\uCEE4\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4!
Unarmed.Skills.Berserk.Refresh=[[GREEN]]\uB2F9\uC2E0\uC758 [[YELLOW]]\uBC84\uC11C\uCEE4 [[GREEN]]\uC2A4\uD0AC\uC740 \uC774\uC81C \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4!
Unarmed.Skillup=\uBE44\uBB34\uC7A5 \uC2A4\uD0AC\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#WOODCUTTING
Woodcutting.Ability.0=\uB098\uBB47\uC78E \uB5A8\uC5B4\uD2B8\uB9AC\uAE30
Woodcutting.Ability.1=\uB098\uBB47\uC78E \uCCAD\uC18C
Woodcutting.Ability.Chance.DDrop=\uB4DC\uB86D 2\uBC30 \uD655\uB960: [[YELLOW]]{0}
Woodcutting.Ability.Length=\uB098\uBB34\uAFBC \uC9C0\uC18D\uC2DC\uAC04: [[YELLOW]]{0}\uCD08
Woodcutting.Ability.Locked.0={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uC774 \uD574\uC81C\uB429\uB2C8\uB2E4 (\uB098\uBB47\uC78E \uBC14\uB78C)
Woodcutting.SubSkill.TreeFeller.Name=\uB098\uBB34\uAFBC (\uB2A5\uB825)
Woodcutting.SubSkill.TreeFeller.Description=\uB098\uBB34 \uD3ED\uBC1C\uC2DC\uD0A4\uAE30
Woodcutting.SubSkill.LeafBlower.Name=\uB098\uBB47\uC78E \uB5A8\uC5B4\uD2B8\uB9AC\uAE30
Woodcutting.SubSkill.LeafBlower.Description=\uB098\uBB47\uC78E \uCCAD\uC18C
Woodcutting.SubSkill.HarvestLumber.Name=\uB4DC\uB86D 2\uBC30
Woodcutting.SubSkill.HarvestLumber.Description=\uD56D\uC0C1 \uB4DC\uB86D 2\uBC30
Woodcutting.Listener=\uBC8C\uBAA9(WOODCUTTING):
Woodcutting.SkillName=\uBC8C\uBAA9
Woodcutting.Skills.TreeFeller.Off=**\uB098\uBB34\uAFBC \uBC1C\uB3D9 \uD574\uC81C**
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**\uB098\uBB34\uAFBC \uBC1C\uB3D9**
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]\uB2F9\uC2E0\uC758 [[YELLOW]]\uB098\uBB34\uAFBC [[GREEN]]\uC2A4\uD0AC\uC740 \uC774\uC81C \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4!
Woodcutting.Skills.TreeFeller.Other.Off={0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uB098\uBB34\uAFBC \uC2A4\uD0AC\uC744 \uC0AC\uC6A9 \uD574\uC81C\uD588\uC2B5\uB2C8\uB2E4!
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\uB2D8\uC740 [[RED]]\uB098\uBB34\uAFBC \uC2A4\uD0AC\uC744 \uC0AC\uC6A9\uD588\uC2B5\uB2C8\uB2E4!
Woodcutting.Skills.TreeFeller.Splinter=\uB3C4\uB07C \uD30C\uD3B8 \uC870\uAC01 \uC218\uC9D1!
Woodcutting.Skills.TreeFeller.Threshold=\uADF8 \uB098\uBB34\uB294 \uB108\uBB34 \uD07D\uB2C8\uB2E4!
Woodcutting.Skillup=\uBC8C\uBAA9 \uC2A4\uD0AC\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
#ABILITIY
##generic
Ability.Generic.Refresh=[[GREEN]]**\uB2A5\uB825\uC774 \uC7AC \uACF5\uAE09 \uB418\uC5C8\uC2B5\uB2C8\uB2E4!**
Ability.Generic.Template.Lock=[[GRAY]]{0}
Ability.Generic.Template=[[GOLD]]{0}: [[DARK_AQUA]]{1}
#COMBAT
Combat.ArrowDeflect=[[WHITE]]**\uD654\uC0B4 \uD68C\uD53C**
Combat.BeastLore=[[GREEN]]**\uC9D0\uC2B9\uC758 \uD3EC\uD6A8**
Combat.BeastLoreHealth=[[DARK_AQUA]]\uCCB4\uB825: ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreOwner=[[DARK_AQUA]]\uC8FC\uC778: ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]**\uB3CC\uC9C4**
Combat.StruckByGore=**\uB3CC\uC9C4\uC5D0 \uB9DE\uC558\uC2B5\uB2C8\uB2E4**
Combat.TargetDazed=\uBAA9\uD45C\uAC00 [[DARK_RED]]\uD63C\uB780\uC2A4\uB7EC\uC6CC\uD569\uB2C8\uB2E4
Combat.TouchedFuzzy=[[DARK_RED]]\uD63C\uB780\uC774 \uC77C\uC5B4\uB0AC\uC2B5\uB2C8\uB2E4. \uC544~ \uC5B4\uC9C0\uB7EC\uC6CC.
#COMMANDS
##generic
mcMMO.Description=mcMMO[[DARK_AQUA]] \uD504\uB85C\uC81D\uD2B8\uC5D0 \uB300\uD574\uC11C:,[[GOLD]]mcMMO\uB294 \uD55C [[RED]]\uC624\uD508 \uC18C\uC2A4[[GOLD]] RPG \uBAA8\uB4DC\uB85C 2011\uB144 2\uC6D4\uC5D0 [[BLUE]]com.gmail.nossr50[[GOLD]]\uB2D8\uC774 \uB9CC\uB4E4\uC5C8\uC2B5\uB2C8\uB2E4. \uBAA9\uD45C\uB294 \uC9C8\uC88B\uC740 RPG \uACBD\uD5D8\uC744 \uC81C\uACF5\uD558\uB294 \uAC83 \uC785\uB2C8\uB2E4.,[[DARK_AQUA]]\uD301:,[[GOLD]] - [[RED]]/mcmmo help[[GREEN]] \uBA85\uB839\uC5B4\uB4E4\uC744 \uBD05\uB2C8\uB2E4,[[GOLD]] - [[GREEN]]\uD0C0\uC785 [[RED]]/\uC2A4\uD0AC\uC774\uB984[[GREEN]] \uC790\uC138\uD55C \uC2A4\uD0AC \uC815\uBCF4\uB97C \uBD05\uB2C8\uB2E4,[[DARK_AQUA]]\uAC1C\uBC1C\uC790\uB4E4:,[[GOLD]] - [[GREEN]]com.gmail.nossr50 [[BLUE]](\uC81C\uC791\uC790),[[GOLD]] - [[GREEN]]GJ [[BLUE]](\uD504\uB85C\uC81D\uD2B8 \uC8FC\uC7A5),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](\uAC1C\uBC1C\uC790),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](\uAC1C\uBC1C\uC790),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](\uAC1C\uBC1C\uC790),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](\uAC1C\uBC1C\uC790),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](\uAC1C\uBC1C\uC790),[[DARK_AQUA]]\uC720\uC6A9\uD55C \uB9C1\uD06C:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] \uBC84\uADF8 \uBCF4\uACE0,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC \uCC44\uD305,
Commands.addlevels.AwardAll.1=[[GREEN]]\uB2F9\uC2E0\uC740 \uBAA8\uB4E0 \uC2A4\uD0AC\uC5D0 {0} \uB808\uBCA8\uC744 \uC9C0\uAE09\uD588\uC2B5\uB2C8\uB2E4!
Commands.addlevels.AwardAll.2=\uBAA8\uB4E0 \uC2A4\uD0AC\uC774 {0}\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4
Commands.addlevels.AwardSkill.1=[[GREEN]]\uB2F9\uC2E0\uC740 {0} \uB808\uBCA8\uC744 {1}\uC5D0 \uC9C0\uAE09\uD558\uC600\uC2B5\uB2C8\uB2E4!
Commands.addlevels.AwardSkill.2={1} \uB2D8\uC740 {0}\uC744/\uB97C \uC218\uC815\uD558\uC600\uC2B5\uB2C8\uB2E4
Commands.addxp.AwardAll=[[GREEN]]\uB2F9\uC2E0\uC740 \uBAA8\uB4E0 \uC2A4\uD0AC\uC5D0 {0} \uACBD\uD5D8\uCE58\uB97C \uC9C0\uAE09\uD588\uC2B5\uB2C8\uB2E4!
Commands.addxp.AwardSkill=[[GREEN]]\uB2F9\uC2E0\uC740 {0} \uACBD\uD5D8\uCE58\uB97C {1}\uC5D0 \uC9C0\uAE09\uD558\uC600\uC2B5\uB2C8\uB2E4!
Commands.Ability.Off=\uB2A5\uB825 \uC0AC\uC6A9\uC774 [[RED]]\uAEBC\uC84C\uC2B5\uB2C8\uB2E4
Commands.Ability.On=\uB2A5\uB825 \uC0AC\uC6A9\uC774 [[GREEN]]\uCF1C\uC84C\uC2B5\uB2C8\uB2E4
Commands.Ability.Toggle=\uB2A5\uB825 \uC0AC\uC6A9\uC740 [[YELLOW]]{0}(\uC73C)\uB85C \uC804\uD658\uB418\uC5C8\uC2B5\uB2C8\uB2E4
Commands.AdminChat.Off=\uAD00\uB9AC\uC790 \uCC44\uD305\uC774 [[RED]]\uAEBC\uC84C\uC2B5\uB2C8\uB2E4
Commands.AdminChat.On=\uAD00\uB9AC\uC790 \uCC44\uD305\uC774 [[GREEN]]\uCF1C\uC84C\uC2B5\uB2C8\uB2E4
Commands.AdminToggle=[[GREEN]]- \uAD00\uB9AC\uC790 \uCC44\uD305\uC744 \uCF1C\uAE30/\uB044\uAE30\uD569\uB2C8\uB2E4
Commands.Chat.Console=*\uC2DC\uC2A4\uD15C*
Commands.Cooldowns.Header=[[GOLD]]--= [[GREEN]]mcMMO \uB2A5\uB825 \uC7AC \uC0AC\uC6A9 \uB300\uAE30\uC2DC\uAC04[[GOLD]] =--
Commands.Cooldowns.Row.N=\ [[RED]]{0}[[WHITE]] - [[GOLD]]{1}\uCD08 \uB0A8\uC74C
Commands.Cooldowns.Row.Y=\ [[AQUA]]{0}[[WHITE]] - [[DARK_GREEN]]\uC900\uBE44!
Commands.Database.Cooldown=\uC774 \uBA85\uB839\uC5B4\uB97C \uB2E4\uC2DC \uCE58\uAE30\uC804\uC5D0 1\uCD08\uB97C \uAE30\uB2EC\uB824\uC57C\uB9CC \uD569\uB2C8\uB2E4.
Commands.Database.Processing=\uB2F9\uC2E0\uC758 \uC774\uC804 \uBA85\uB839\uC5B4\uB294 \uC5EC\uC804\uD788 \uC791\uC5C5\uC911\uC785\uB2C8\uB2E4. \uAE30\uB2E4\uB824\uC8FC\uC138\uC694.
Commands.Disabled=\uC774 \uBA85\uB839\uC5B4\uB294 \uBE44\uD65C\uC131\uD654 \uB418\uC788\uC2B5\uB2C8\uB2E4.
Commands.DoesNotExist=[[RED]]\uD50C\uB808\uC774\uC5B4\uB294 \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4!
Commands.GodMode.Disabled=mcMMO \uBD88\uC0AC\uC2E0 \uBAA8\uB4DC \uBE44\uD65C\uC131\uD654
Commands.GodMode.Enabled=mcMMO \uBD88\uC0AC\uC2E0 \uBAA8\uB4DC \uD65C\uC131\uD654
Commands.GodMode.Forbidden=[mcMMO] \uC774 \uC6D4\uB4DC\uC5D0\uC11C \uBD88\uC0AC\uC2E0 \uBAA8\uB4DC\uB294 \uD5C8\uC6A9 \uAE08\uC9C0\uC785\uB2C8\uB2E4 (\uD384\uBBF8\uC120 \uD655\uC778)
Commands.GodMode.Toggle=\uBD88\uC0AC\uC2E0 \uBAA8\uB4DC\uB294 [[YELLOW]]{0}[[WHITE]](\uC73C)\uB85C \uC804\uD658\uB418\uC5C8\uC2B5\uB2C8\uB2E4
Commands.Healthbars.Changed.HEARTS=[mcMMO] \uB2F9\uC2E0\uC758 \uCCB4\uB825\uBC14 \uBCF4\uAE30 \uBC29\uC2DD\uC740 [[RED]]\uD558\uD2B8[[WHITE]]\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Commands.Healthbars.Changed.BAR=[mcMMO] \uB2F9\uC2E0\uC758 \uCCB4\uB825\uBC14 \uBCF4\uAE30 \uBC29\uC2DD\uC740 [[YELLOW]]\uBC15\uC2A4[[WHITE]]\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Commands.Healthbars.Changed.DISABLED=[mcMMO] \uB2F9\uC2E0\uC758 \uBAB9 \uCCB4\uB825\uBC14\uB294 [[GRAY]]\uBE44\uD65C\uC131\uD654[[WHITE]] \uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Commands.Healthbars.Invalid=\uC798\uBABB\uB41C \uCCB4\uB825\uBC14 \uD0C0\uC785!
Commands.Inspect=<\uD50C\uB808\uC774\uC5B4> [[GREEN]]- \uC0C1\uC138\uD55C \uD50C\uB808\uC774\uC5B4 \uC815\uBCF4\uB97C \uBD05\uB2C8\uB2E4
Commands.Invite.Success=[[GREEN]]\uCD08\uB300\uB97C \uC131\uACF5\uC801\uC73C\uB85C \uBCF4\uB0C8\uC2B5\uB2C8\uB2E4.
Commands.Leaderboards=<\uC2A4\uD0AC> <\uD398\uC774\uC9C0> [[GREEN]]- mcMMO \uC2A4\uD0AC \uC815\uBCF4
Commands.mcc.Header=---[][[GREEN]]mcMMO \uBA85\uB839\uC5B4[[RED]][]---
Commands.mcgod=[[GREEN]]- \uBD88\uC0AC\uC2E0 \uBAA8\uB4DC \uCF1C\uAE30/\uB044\uAE30
Commands.mchud.Invalid=HUD \uD0C0\uC785\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
Commands.mcpurge.Success=[[GREEN]]\uB370\uC774\uD130\uBCA0\uC774\uC2A4\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uCD08\uAE30\uD654\uB42C\uC2B5\uB2C8\uB2E4!
Commands.mcrank.Heading=[[GOLD]]-=\uAC1C\uC778 \uC21C\uC704=-
Commands.mcrank.Overall=\uC885\uD569[[GREEN]] - [[GOLD]]\uB7AD\uD06C [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=\uD0C0\uAC9F: [[WHITE]]{0}
Commands.mcrank.Skill={0}[[GREEN]] - [[GOLD]]\uB7AD\uD06C [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]\uB7AD\uD06C\uC5C6\uC74C
Commands.mcrefresh.Success={0}\uC758 \uCFE8\uB2E4\uC6B4\uC774 \uCD08\uAE30\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Commands.mcremove.Success=[[GREEN]]{0}\uB2D8\uC758 \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4!
Commands.mctop.Tip=[[GOLD]]\uD301: [[RED]]/mcrank[[GOLD]] \uBA85\uB839\uC5B4\uB97C \uC0AC\uC6A9\uD558\uBA74 \uBAA8\uB4E0 \uAC1C\uC778 \uC21C\uC704\uB97C \uBCFC\uC218 \uC788\uC2B5\uB2C8\uB2E4!
Commands.mmoedit=[\uD50C\uB808\uC774\uC5B4] <\uC2A4\uD0AC> <\uC0C8\uAC12> [[GREEN]] - \uB300\uC0C1\uC744 \uC218\uC815\uD569\uB2C8\uB2E4
Commands.mmoedit.AllSkills.1=[[GREEN]]\uB2F9\uC2E0\uC758 \uBAA8\uB4E0 \uC2A4\uD0AC \uB808\uBCA8\uC774 {0}\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4!
Commands.mmoedit.Modified.1=[[GREEN]]\uB2F9\uC2E0\uC758 {0} \uB808\uBCA8\uC774 {1}\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4!
Commands.mmoedit.Modified.2={0}\uB2D8\uC740 {1}\uB97C \uC218\uC815\uD588\uC2B5\uB2C8\uB2E4.
Commands.mcconvert.Database.Same=\uB2F9\uC2E0\uC740 \uC774\uBBF8 {0} \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uB97C \uC0AC\uC6A9\uC911\uC785\uB2C8\uB2E4!
Commands.mcconvert.Database.InvalidType={0} \uC740/\uB294 \uC798\uBABB\uB41C \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uD0C0\uC785\uC785\uB2C8\uB2E4.
Commands.mcconvert.Database.Start=[[GRAY]]{0}\uC5D0\uC11C {1}(\uC73C)\uB85C \uC804\uD658 \uC2DC\uC791\uC911...
Commands.mcconvert.Database.Finish=[[GRAY]]\uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uC774\uB3D9 \uC644\uB8CC; {1} \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uB294 \uC774\uC81C {0} \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uB85C\uBD80\uD130 \uBAA8\uB4E0 \uC790\uB8CC\uB97C \uAC00\uC9D1\uB2C8\uB2E4.
Commands.mmoshowdb=\uD604\uC7AC \uC0AC\uC6A9\uD558\uB294 \uB370\uC774\uD130\uBCA0\uC774\uC2A4: [[GREEN]]{0}
Commands.mcconvert.Experience.Invalid=\uC798\uBABB\uB41C \uACF5\uC2DD \uD0C0\uC785! \uC62C\uBC14\uB978 \uD0C0\uC785: [[GREEN]]LINEAR [[RED]]\uADF8\uB9AC\uACE0 [[GREEN]]EXPONENTIAL.
Commands.mcconvert.Experience.Same=\uC774\uBBF8 {0} \uACF5\uC2DD\uC744 \uC0AC\uC6A9\uC911\uC785\uB2C8\uB2E4
Commands.mcconvert.Experience.Start=[[GRAY]]{0} \uC5D0\uC11C {1} \uACE1\uC120\uC73C\uB85C \uBCC0\uD658 \uC2DC\uC791
Commands.mcconvert.Experience.Finish=[[GRAY]]\uACF5\uC2DD \uBCC0\uD658 \uC644\uB8CC; \uC774\uC81C {0} XP \uACE1\uC120\uC785\uB2C8\uB2E4.
Commands.ModDescription=[[GREEN]]- \uD50C\uB7EC\uADF8\uC778\uC5D0 \uB300\uD55C \uC815\uBCF4\uB97C \uBD05\uB2C8\uB2E4
Commands.NoConsole=\uC774 \uBA85\uB839\uC5B4\uB294 \uCF58\uC194\uC5D0\uC11C\uC758 \uC0AC\uC6A9\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
Commands.Notifications.Off=\uB2A5\uB825 \uC54C\uB9BC\uC774 [[RED]]\uCF1C\uC84C\uC2B5\uB2C8\uB2E4
Commands.Notifications.On=\uB2A5\uB825 \uC54C\uB9BC\uC774 [[GREEN]]\uAEBC\uC84C\uC2B5\uB2C8\uB2E4
Commands.Offline=\uC774 \uBA85\uB839\uC5B4\uB294 \uC624\uD504\uB77C\uC778 \uD50C\uB808\uC774\uC5B4\uC5D0\uAC8C \uB3D9\uC791\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
Commands.NotLoaded=\uD50C\uB808\uC774\uC5B4 \uD504\uB85C\uD30C\uC77C\uC740 \uBD88\uB7EC\uC640\uC9C0\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4Player profile is not loaded yet.
Commands.Other=---[][[GREEN]]\uAE30\uD0C0 \uBA85\uB839\uC5B4[[RED]][]---
Commands.Party.Header=-----[][[GREEN]]\uD30C\uD2F0[[RED]][]-----
Commands.Party.Features.Header=-----[][[GREEN]]\uD2B9\uC9D5[[RED]][]-----
Commands.Party.Status=[[DARK_GRAY]]\uC774\uB984: [[WHITE]]{0} {1} [[DARK_GRAY]]\uB808\uBCA8: [[DARK_AQUA]]{2}
Commands.Party.Status.Alliance=[[DARK_GRAY]]\uB3D9\uB9F9: [[WHITE]]{0}
Commands.Party.UnlockedFeatures=[[DARK_GRAY]]\uD574\uC81C\uB41C \uD2B9\uC9D5: [[GRAY]][[ITALIC]]{0}
Commands.Party.ShareMode=[[DARK_GRAY]]\uACF5\uC720 \uBAA8\uB4DC:
Commands.Party.ItemShare=[[GRAY]]\uC544\uC774\uD15C [[DARK_AQUA]]({0})
Commands.Party.ExpShare=[[GRAY]]EXP [[DARK_AQUA]]({0})
Commands.Party.ItemShareCategories=[[DARK_GRAY]]\uACF5\uC720\uC911\uC778 \uC544\uC774\uD15C: [[GRAY]][[ITALIC]]{0}
Commands.Party.MembersNear=[[DARK_GRAY]]\uB2F9\uC2E0\uC758 \uADFC\uCC98 [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
Commands.Party.Accept=[[GREEN]]- \uD30C\uD2F0 \uCD08\uB300 \uD5C8\uC6A9
Commands.Party.Chat.Off=\uD30C\uD2F0 \uCC44\uD305\uC744 [[RED]]\uB055\uB2C8\uB2E4
Commands.Party.Chat.On=\uD30C\uD2F0 \uCC44\uD305\uC744 [[GREEN]]\uCF2D\uB2C8\uB2E4
Commands.Party.Commands=---[][[GREEN]]\uD30C\uD2F0 \uBA85\uB839\uC5B4[[RED]][]---
Commands.Party.Invite.0=\uC54C\uB9BC: [[GREEN]]\uB2F9\uC2E0\uC740 {1} \uB2D8\uC73C\uB85C\uBD80\uD130 {0} \uD30C\uD2F0 \uCD08\uB300\uC5D0 \uAD8C\uC720\uBC1B\uC558\uC2B5\uB2C8\uB2E4
Commands.Party.Invite.1=\uD0C0\uC785 [[GREEN]]/party accept[[YELLOW]] \uBA85\uB839\uC5B4\uB97C \uCE58\uBA74 \uD30C\uD2F0 \uCD08\uB300\uC5D0 \uC2B9\uB099\uB429\uB2C8\uB2E4
Commands.Party.Invite=<\uD50C\uB808\uC774\uC5B4> [[GREEN]]- \uD30C\uD2F0 \uCD08\uB300\uB97C \uBCF4\uB0C5\uB2C8\uB2E4
Commands.Party.Invite.Accepted=[[GREEN]]\uCD08\uB300 \uC218\uB77D\uB428. \uB2F9\uC2E0\uC740 {0} \uD30C\uD2F0\uC5D0 \uAC00\uC785\uB418\uC5C8\uC2B5\uB2C8\uB2E4
Commands.Party.Join=\uCC38\uC5EC\uB41C \uD30C\uD2F0: {0}
Commands.Party.Create=[[GRAY]]\uB9CC\uB4E4\uC5B4\uC9C4 \uD30C\uD2F0: {0}
Commands.Party.Rename=[[GRAY]]\uBCC0\uACBD\uB41C \uD30C\uD2F0 \uC774\uB984: [[WHITE]]{0}
Commands.Party.SetSharing=[[GRAY]]\uD30C\uD2F0 {0} \uACF5\uC720 \uC124\uC815: [[DARK_AQUA]]{1}
Commands.Party.ToggleShareCategory=[[GRAY]]\uD30C\uD2F0 \uC544\uC774\uD15C \uACF5\uC720 [[GOLD]]{0} [[GRAY]]\uAC00 [[DARK_AQUA]]{1}\uB418\uC5C8\uC2B5\uB2C8\uB2E4
Commands.Party.AlreadyExists=[[DARK_RED]]{0} \uD30C\uD2F0\uC740/\uB294 \uC774\uBBF8 \uC874\uC7AC\uD569\uB2C8\uB2E4!
Commands.Party.Kick=\uB2F9\uC2E0\uC740 {0} \uD30C\uD2F0\uC5D0\uC11C \uCD94\uBC29 \uB2F9\uD558\uC600\uC2B5\uB2C8\uB2E4.
Commands.Party.Leave=\uD30C\uD2F0\uB97C \uB5A0\uB0AC\uC2B5\uB2C8\uB2E4
Commands.Party.Members.Header=-----[][[GREEN]]\uB9F4\uBC84\uB4E4[[RED]][]-----
Commands.Party.None=\uB2F9\uC2E0\uC740 \uD30C\uD2F0\uC5D0 \uCC38\uC5EC\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
Commands.Party.Quit=[[GREEN]]- \uD604\uC7AC \uCC38\uC5EC \uB418\uC5B4\uC788\uB294 \uD30C\uD2F0\uB97C \uB098\uAC11\uB2C8\uB2E4
Commands.Party.Teleport=[[GREEN]]- \uD30C\uD2F0 \uB9F4\uBC84\uD55C\uD14C \uD154\uB808\uD3EC\uD2B8\uD569\uB2C8\uB2E4
Commands.Party.Toggle=[[GREEN]]- \uD30C\uD2F0 \uCC44\uD305\uC744 \uCF1C\uAE30/\uB044\uAE30 \uD569\uB2C8\uB2E4
Commands.Party1=[[GREEN]]- \uC0C8 \uD30C\uD2F0\uB97C \uB9CC\uB4ED\uB2C8\uB2E4
Commands.Party2=[[GREEN]]- \uD50C\uB808\uC774\uC5B4\uAC00 \uD30C\uD2F0\uC5D0 \uAC00\uC785\uD569\uB2C8\uB2E4
Commands.Party.Alliance.Header=-----[][[GREEN]]\uD30C\uD2F0 \uB3D9\uB9F9[[RED]][]-----
Commands.Party.Alliance.Ally=[[WHITE]]{0} [[DARK_GRAY]]\uD30C\uD2F0\uC758 \uB3D9\uB9F9: [[WHITE]]{1}
Commands.Party.Alliance.Members.Header=-----[][[GREEN]]\uB3D9\uB9F9 \uAD6C\uC131\uC6D0[[RED]][]-----
Commands.Party.Alliance.Invite.0=\uC54C\uB9BC: [[GREEN]]{1} \uD30C\uD2F0\uB85C\uBD80\uD130 {0} \uD30C\uD2F0\uC640\uC758 \uB3D9\uB9F9 \uCD08\uB300\uB97C \uBC1B\uC558\uC2B5\uB2C8\uB2E4
Commands.Party.Alliance.Invite.1=\uD0C0\uC785 [[GREEN]]/party alliance accept[[YELLOW]] \uCD08\uB300\uC5D0 \uC218\uB77D\uD569\uB2C8\uB2E4
Commands.Party.Alliance.Invite.Accepted=[[GREEN]]\uB3D9\uB9F9 \uCD08\uB300 \uC218\uB77D\uB428.
Commands.Party.Alliance.None=\uB2F9\uC2E0\uC740 \uB3D9\uB9F9\uC744 \uAC00\uC9C0\uACE0 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
Commands.Party.Alliance.AlreadyAllies=\uB2F9\uC2E0\uC758 \uD30C\uD2F0\uB294 \uC774\uBBF8 \uB3D9\uB9F9\uC744 \uAC00\uC9C0\uACE0 \uC788\uC2B5\uB2C8\uB2E4. \uAD00\uACC4\uB97C \uD574\uC9C0\uD558\uB824\uBA74 [[DARK_AQUA]]/party alliance disband
Commands.Party.Alliance.Help.0=\uC774 \uD30C\uD2F0\uB294 \uB3D9\uB9F9 \uD615\uD0DC\uB97C \uAC00\uC9C0\uACE0 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uD30C\uD2F0\uC7A5\uC744 \uCD08\uB300\uD558\uC138\uC694
Commands.Party.Alliance.Help.1=\uB3D9\uB9F9\uC744 \uD558\uB824\uBA74 [[DARK_AQUA]]/party alliance invite <player>[[RED]].
Commands.ptp.Enabled=\uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8 [[GREEN]]\uD65C\uC131\uD654\uB428
Commands.ptp.Disabled=\uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8 [[RED]]\uBE44\uD65C\uC131\uD654\uB428
Commands.ptp.NoRequests=\uB2F9\uC2E0\uC740 \uC774 \uC2DC\uAC04\uC5D0 \uD154\uB808\uD3EC\uD2B8 \uC694\uCCAD\uC744 \uD558\uC2E4 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4
Commands.ptp.NoWorldPermissions=[mcMMO] \uB2F9\uC2E0\uC740 \uC6D4\uB4DC {0}(\uC73C)\uB85C \uD154\uB808\uD3EC\uD2B8\uD560 \uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
Commands.ptp.Request1={0} [[GREEN]]\uB2D8\uC774 \uB2F9\uC2E0\uC5D0\uAC8C \uD154\uB808\uD3EC\uD2B8\uB97C \uC2E0\uCCAD\uD588\uC2B5\uB2C8\uB2E4.
Commands.ptp.Request2=[[GREEN]]\uD154\uB808\uD3EC\uD2B8\uD558\uB824\uBA74, \uD0C0\uC785 [[YELLOW]]/ptp accept[[GREEN]]. [[RED]]{0}[[GREEN]]\uCD08\uC5D0 \uC694\uCCAD\uC774 \uB9CC\uAE30\uB429\uB2C8\uB2E4.
Commands.ptp.AcceptAny.Enabled=\uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8 \uC694\uCCAD \uD655\uC778 [[GREEN]]\uD65C\uC131\uD654\uB428
Commands.ptp.AcceptAny.Disabled=\uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8 \uC694\uCCAD \uD655\uC778 [[RED]]\uBE44\uD65C\uC131\uD654\uB428
Commands.ptp.RequestExpired=\uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8 \uC694\uCCAD\uC774 \uB9CC\uAE30\uB428!
Commands.PowerLevel.Leaderboard=--mcMMO[[BLUE]] \uCD1D \uB808\uBCA8 [[YELLOW]]\uC810\uC218\uD45C--
Commands.PowerLevel.Capped=[[DARK_RED]]\uCD1D \uB808\uBCA8: [[GREEN]]{0} [[DARK_RED]]\uCD5C\uB300 \uB808\uBCA8: [[YELLOW]]{1}
Commands.PowerLevel=[[DARK_RED]]\uCD1D \uB808\uBCA8: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]\uB2F9\uC2E0\uC758 \uBAA8\uB4E0 \uC2A4\uD0AC\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uCD08\uAE30\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Commands.Reset.Single=[[GREEN]]\uB2F9\uC2E0\uC758 {0} \uC2A4\uD0AC\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uCD08\uAE30\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Commands.Reset=[[GREEN]]\uC2A4\uD0AC \uB808\uBCA8\uC744 0\uC73C\uB85C \uCD08\uAE30\uD654 \uC2DC\uD0B5\uB2C8\uB2E4
Commands.Scoreboard.Clear=[[DARK_AQUA]]mcMMO \uC810\uC218\uD310 \uCCAD\uC18C\uB428.
Commands.Scoreboard.NoBoard=mcMMO \uC810\uC218\uD310\uC774 \uD65C\uC131\uD654 \uB418\uC5B4\uC788\uC9C0 \uC54A\uC74C.
Commands.Scoreboard.Keep=[[DARK_AQUA]]mcMMO \uC810\uC218\uD310\uC740 \uB2F9\uC2E0\uC774 [[GREEN]]/mcscoreboard clear[[DARK_AQUA]]\uB97C \uC0AC\uC6A9\uD560 \uB54C\uAE4C\uC9C0 \uC720\uC9C0\uB420 \uAC83\uC784.
Commands.Scoreboard.Timer=[[DARK_AQUA]]mcMMO \uC810\uC218\uD310\uC740 \uC9C0\uAE08\uC73C\uB85C\uBD80\uD130 [[GOLD]]{0}[[DARK_AQUA]]\uCD08 \uB0B4\uC5D0 \uCCAD\uC18C\uB420 \uC608\uC815\uC784.
Commands.Scoreboard.Help.0=[[GOLD]] == [[RED]]/mcscoreboard [[GREEN]]\uB3C4\uC6C0\uB9D0[[GOLD]] ==
Commands.Scoreboard.Help.1=[[DARK_AQUA]]/mcscoreboard[[AQUA]] clear [[WHITE]] - McMMO \uC810\uC218\uD310\uC744 \uCCAD\uC18C\uD568
Commands.Scoreboard.Help.2=[[DARK_AQUA]]/mcscoreboard[[AQUA]] keep [[WHITE]] - McMMO \uC810\uC218\uD310\uC744 \uC720\uC9C0\uD568
Commands.Scoreboard.Help.3=[[DARK_AQUA]]/mcscoreboard[[AQUA]] time [n] [[WHITE]] - McMMO \uC810\uC218\uD310\uC744 [[LIGHT_PURPLE]]n[[WHITE]]\uCD08 \uD6C4\uC5D0 \uCCAD\uC18C\uD568
Commands.Scoreboard.Tip.Keep=[[GOLD]]\uD301: [[RED]]/mcscoreboard keep[[GOLD]] \uC810\uC218\uD310\uC744 \uBCF4\uC774\uAC8C \uD56D\uC0C1 \uC720\uC9C0.
Commands.Scoreboard.Tip.Clear=[[GOLD]]\uD301: [[RED]]/mcscoreboard clear[[GOLD]] \uC810\uC218\uD310 \uAC10\uCDA4.
Commands.Skill.Invalid=\uC798\uBABB\uB41C \uC2A4\uD0AC \uC774\uB984 \uC785\uB2C8\uB2E4!
Commands.Skill.Leaderboard=--mcMMO [[BLUE]]{0}[[YELLOW]] \uC810\uC218\uD45C--
Commands.SkillInfo=[[GREEN]]- \uC2A4\uD0AC\uC5D0 \uB300\uD55C \uC790\uC138\uD55C \uC815\uBCF4\uB97C \uBD05\uB2C8\uB2E4
Commands.Stats.Self=\uB2F9\uC2E0\uC758 \uD1B5\uACC4
Commands.Stats=[[GREEN]]- \uB2F9\uC2E0\uC758 mcMMO \uD1B5\uACC4 \uBCF4\uAE30
Commands.ToggleAbility=[[GREEN]]- \uC6B0\uD074\uB9AD\uC2DC \uC0AC\uC6A9\uB418\uB294 \uC2A4\uD0AC\uB4E4\uC744 \uCF1C\uAE30/\uB044\uAE30 \uD569\uB2C8\uB2E4
Commands.Usage.0=\uC62C\uBC14\uB978 \uC0AC\uC6A9\uBC95 /{0}
Commands.Usage.1=\uC62C\uBC14\uB978 \uC0AC\uC6A9\uBC95 /{0} {1}
Commands.Usage.2=\uC62C\uBC14\uB978 \uC0AC\uC6A9\uBC95 /{0} {1} {2}
Commands.Usage.3=\uC62C\uBC14\uB978 \uC0AC\uC6A9\uBC95 /{0} {1} {2} {3}
Commands.Usage.FullClassName=\uD074\uB808\uC2A4\uC774\uB984
Commands.Usage.Level=\uB808\uBCA8
Commands.Usage.Message=\uBA54\uC138\uC9C0
Commands.Usage.Page=\uD398\uC774\uC9C0
Commands.Usage.PartyName=\uC774\uB984
Commands.Usage.Password=\uBE44\uBC00\uBC88\uD638
Commands.Usage.Player=\uD50C\uB808\uC774\uC5B4
Commands.Usage.Rate=\uBC30\uC728
Commands.Usage.Skill=\uC2A4\uD0AC
Commands.Usage.XP=xp
mcMMO.NoInvites=\uC774 \uC2DC\uAC04\uC5D0 \uB2F9\uC2E0\uC740 \uCD08\uB300\uD558\uC9C0 \uBABB\uD569\uB2C8\uB2E4
mcMMO.NoPermission=[[DARK_RED]]\uAD8C\uD55C\uC774 \uBD80\uC871\uD569\uB2C8\uB2E4.
mcMMO.NoSkillNote=[[DARK_GRAY]]\uB9CC\uC57D \uB2F9\uC2E0\uC774 \uC2A4\uD0AC\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uB2E4\uBA74 \uC5EC\uAE30\uC5D0 \uD45C\uC2DC\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
##party
Party.Forbidden=[mcMMO] \uC774 \uC6D4\uB4DC\uC5D0\uC11C \uD30C\uD2F0\uB97C \uD558\uC2E4 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4 (\uD384\uBBF8\uC120 \uD655\uC778)
Party.Help.0=\uC62C\uBC14\uB978 \uC0AC\uC6A9\uBC95 [[DARK_AQUA]]{0} <\uD50C\uB808\uC774\uC5B4> [\uBE44\uBC00\uBC88\uD638].
Party.Help.1=\uD30C\uD2F0\uB97C \uB9CC\uB4E4\uB824\uBA74, [[DARK_AQUA]]{0} <\uC774\uB984> [\uBE44\uBC00\uBC88\uD638].
Party.Help.2=\uD30C\uD2F0 \uC815\uBCF4\uB97C \uBCFC\uB824\uBA74 [[DARK_AQUA]]{0}
Party.Help.3=\uD30C\uD2F0\uC5D0 \uAC00\uC785\uD560\uB824\uBA74 [[DARK_AQUA]]{0} <\uD50C\uB808\uC774\uC5B4> [\uBE44\uBC00\uBC88\uD638] [[RED]]\uB098\uAC08\uB824\uBA74 [[DARK_AQUA]]{1}
Party.Help.4=\uD30C\uD2F0\uB97C \uC7A0\uAE08/\uC7A0\uAE08\uD574\uC81C \uD560\uB824\uBA74, [[DARK_AQUA]]{0}
Party.Help.5=\uBE44\uBC00\uBC88\uD638\uB85C \uD30C\uD2F0\uB97C \uBCF4\uD638\uD560\uB824\uBA74, [[DARK_AQUA]]{0} <\uBE44\uBC00\uBC88\uD638>
Party.Help.6=\uD30C\uD2F0\uC5D0\uC11C \uD50C\uB808\uC774\uC5B4\uB97C \uCD94\uBC29\uC2DC\uD0AC\uB824\uBA74, [[DARK_AQUA]]{0} <\uD50C\uB808\uC774\uC5B4>
Party.Help.7=\uD30C\uD2F0\uC7A5\uC744 \uAD50\uCCB4\uD560\uB824\uBA74, [[DARK_AQUA]]{0} <\uD50C\uB808\uC774\uC5B4>
Party.Help.8=\uD30C\uD2F0\uB97C \uD574\uCCB4\uD560\uB824\uBA74, [[DARK_AQUA]]{0}
Party.Help.9=\uD30C\uD2F0 \uB9F4\uBC84\uB4E4\uACFC \uC544\uC774\uD15C\uC744 \uACF5\uC720\uD558\uB824\uBA74 [[DARK_AQUA]]{0}
Party.Help.10=\uD30C\uD2F0 \uB9F4\uBC84\uB4E4\uACFC \uACBD\uD5D8\uCE58 \uACF5\uC720\uB97C \uD65C\uC131\uD654\uD654\uB824\uBA74 [[DARK_AQUA]]{0}
Party.InformedOnJoin={0} [[GREEN]]\uB2D8\uC774 \uB2F9\uC2E0\uC758 \uD30C\uD2F0\uC5D0 \uCC38\uC5EC\uD588\uC2B5\uB2C8\uB2E4
Party.InformedOnQuit={0} [[GREEN]]\uB2D8\uC774 \uB2F9\uC2E0\uC758 \uD30C\uD2F0\uC5D0\uC11C \uB5A0\uB0AC\uC2B5\uB2C8\uB2E4
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]\uB2D8\uC774 \uD30C\uD2F0 \uC774\uB984\uC744 [[WHITE]]{1}\uB85C \uC124\uC815\uD588\uC2B5\uB2C8\uB2E4
Party.InvalidName=[[DARK_RED]]\uC798\uBABB\uB41C \uD30C\uD2F0 \uC774\uB984\uC785\uB2C8\uB2E4.
Party.Invite.Self=\uC790\uAE30\uC790\uC2E0\uC744 \uCD08\uB300\uD560 \uC218\uB294 \uC5C6\uC2B5\uB2C8\uB2E4!
Party.IsLocked=\uC774 \uD30C\uD2F0\uB294 \uC774\uBBF8 \uC7A0\uACA8\uC838 \uC788\uC2B5\uB2C8\uB2E4!
Party.IsntLocked=\uC774 \uD30C\uD2F0\uB294 \uC7A0\uACA8\uC838 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4!
Party.Locked=\uD30C\uD2F0\uAC00 \uC7A0\uACBC\uC2B5\uB2C8\uB2E4, \uC624\uC9C1 \uD30C\uD2F0\uC7A5\uB9CC\uC774 \uCD08\uB300\uB97C \uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
Party.NotInYourParty=[[DARK_RED]]{0}\uB2D8\uC740 \uB2F9\uC2E0\uC758 \uD30C\uD2F0\uC5D0 \uC5C6\uC2B5\uB2C8\uB2E4
Party.NotOwner=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uD30C\uD2F0\uC7A5\uC774 \uC544\uB2D9\uB2C8\uB2E4.
Party.Target.NotOwner=[[DARK_RED]]{0}\uB2D8\uC740 \uD30C\uD2F0\uC7A5\uC774 \uC544\uB2D9\uB2C8\uB2E4.
Party.Owner.New=[[GREEN]]{0}\uB2D8\uC774 \uC0C8 \uD30C\uD2F0\uC7A5\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Party.Owner.NotLeader=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uC774\uC81C \uD30C\uD2F0\uC7A5\uC774 \uC544\uB2D9\uB2C8\uB2E4.
Party.Owner.Player=[[GREEN]]\uB2F9\uC2E0\uC740 \uC774\uC81C \uD30C\uD2F0\uC7A5\uC785\uB2C8\uB2E4.
Party.Password.None=\uC774 \uD30C\uD2F0\uB294 \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4. \uAC00\uC785\uD560\uB54C \uBE44\uBC00\uBC88\uD638\uB97C \uC81C\uACF5\uD574\uC8FC\uC138\uC694.
Party.Password.Incorrect=\uD30C\uD2F0 \uBE44\uBC00\uBC88\uD638\uAC00 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
Party.Password.Set=[[GREEN]]\uC124\uC815\uD55C \uD30C\uD2F0 \uBE44\uBC00\uBC88\uD638\uB294 {0} \uC785\uB2C8\uB2E4
Party.Password.Removed=[[GREEN]]\uD30C\uD2F0 \uBE44\uBC00\uBC88\uD638\uAC00 \uCCAD\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
Party.Player.Invalid=\uADF8 \uD50C\uB808\uC774\uC5B4\uB294 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
Party.NotOnline=[[DARK_RED]]{0}\uB2D8\uC740 \uC811\uC18D\uC911\uC774 \uC544\uB2D9\uB2C8\uB2E4!
Party.Player.InSameParty={0}\uB2D8\uC740 \uC774\uBBF8 \uB2F9\uC2E0\uC758 \uD30C\uD2F0\uC5D0 \uC788\uC2B5\uB2C8\uB2E4!
Party.PlayerNotInParty=[[DARK_RED]]{0}\uB2D8\uC740 \uD30C\uD2F0\uC5D0 \uC5C6\uC2B5\uB2C8\uB2E4
Party.Specify=\uB2F9\uC2E0\uC740 \uD30C\uD2F0\uB97C \uBA85\uAE30\uD574\uC57C\uD569\uB2C8\uB2E4.
Party.Teleport.Dead=\uB2F9\uC2E0\uC740 \uC8FD\uC740 \uD50C\uB808\uC774\uC5B4\uC5D0\uAC8C\uB85C \uD154\uB808\uD3EC\uD2B8 \uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
Party.Teleport.Hurt=\uB2F9\uC2E0\uC740 \uB9C8\uC9C0\uB9C9\uC73C\uB85C {0}\uCD08\uC5D0 \uB2E4\uCCD0 \uD154\uB808\uD3EC\uD2B8 \uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
Party.Teleport.Player=[[GREEN]]\uB2F9\uC2E0\uC740 {0}\uB85C \uD154\uB808\uD3EC\uD2B8\uD588\uC2B5\uB2C8\uB2E4.
Party.Teleport.Self=\uC790\uAE30\uC790\uC2E0\uD55C\uD14C \uD154\uB808\uD3EC\uD2B8 \uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!
Party.Teleport.Target=[[GREEN]]{0}\uB2D8\uC774 \uB2F9\uC2E0\uC5D0\uAC8C\uB85C \uD154\uB808\uD3EC\uD2B8\uD588\uC2B5\uB2C8\uB2E4.
Party.Teleport.Disabled={0}\uB2D8\uC740 \uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8\uB97C \uD5C8\uC6A9\uD558\uACE0 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
Party.Rename.Same=\uC774\uBBF8 \uB2F9\uC2E0\uC758 \uD30C\uD2F0 \uC774\uB984\uC785\uB2C8\uB2E4!
Party.Join.Self=\uC790\uAE30\uC790\uC2E0\uC744 \uAC00\uC785\uC2DC\uD0AC\uC218 \uC5C6\uC2B5\uB2C8\uB2E4!
Party.Unlocked=[[GRAY]]\uD30C\uD2F0\uAC00 \uC7A0\uAE08\uD574\uC81C \uB418\uC5C8\uC2B5\uB2C8\uB2E4
Party.Disband=[[GRAY]]\uADF8 \uD30C\uD2F0\uAC00 \uD574\uCCB4\uB418\uC5C8\uC2B5\uB2C8\uB2E4
Party.Alliance.Formed=[[GRAY]]\uB2F9\uC2E0\uC758 \uD30C\uD2F0\uB294 \uC774\uC81C [[GREEN]]{0} \uD30C\uD2F0\uC640 \uB3D9\uB9F9\uC785\uB2C8\uB2E4
Party.Alliance.Disband=[[GRAY]]\uB2F9\uC2E0\uC758 \uD30C\uD2F0\uB294 \uB354 \uC774\uC0C1 [[RED]]{0} \uD30C\uD2F0\uC640 \uB3D9\uB9F9\uC774 \uC544\uB2D9\uB2C8\uB2E4
Party.Status.Locked=[[DARK_RED]](\uCD08\uB300\uB9CC-\uD5C8\uC6A9)
Party.Status.Unlocked=[[DARK_GREEN]](\uAC1C\uBC29)
Party.LevelUp=\uD30C\uD2F0 \uB808\uBCA8\uC774 {0} \uC62C\uB77C \uCD1D {1} \uB808\uBCA8\uC774 \uB418\uC5C8\uC2B5\uB2C8\uB2E4
Party.Feature.Chat=\uD30C\uD2F0 \uCC44\uD305
Party.Feature.Teleport=\uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8
Party.Feature.Alliance=\uB3D9\uB9F9
Party.Feature.ItemShare=\uC544\uC774\uD15C \uACF5\uC720
Party.Feature.XpShare=\uACBD\uD5D8\uCE58 \uACF5\uC720
Party.Feature.Locked.Chat={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uD30C\uD2F0 \uCC44\uD305)
Party.Feature.Locked.Teleport={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8)
Party.Feature.Locked.Alliance={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uB3D9\uB9F9)
Party.Feature.Locked.ItemShare={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uC544\uC774\uD15C \uACF5\uC720)
Party.Feature.Locked.XpShare={0}\uB808\uBCA8 \uB54C \uC2A4\uD0AC\uD574\uC81C (\uACBD\uD5D8\uCE58 \uACF5\uC720)
Party.Feature.Disabled.1=\uD30C\uD2F0 \uCC44\uD305\uC740 \uC544\uC9C1 \uD574\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Party.Feature.Disabled.2=\uD30C\uD2F0 \uD154\uB808\uD3EC\uD2B8\uB294 \uC544\uC9C1 \uD574\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Party.Feature.Disabled.3=\uD30C\uD2F0 \uB3D9\uB9F9\uC740 \uC544\uC9C1 \uD574\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Party.Feature.Disabled.4=\uC544\uC774\uD15C \uACF5\uC720\uB294 \uC544\uC9C1 \uD574\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Party.Feature.Disabled.5=\uACBD\uD5D8\uCE58 \uACF5\uC720\uB294 \uC544\uC9C1 \uD574\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
Party.ShareType.Xp=\uACBD\uD5D8\uCE58
Party.ShareType.Item=\uC544\uC774\uD15C
Party.ShareMode.None=\uC5C6\uC74C
Party.ShareMode.Equal=\uADE0\uB4F1
Party.ShareMode.Random=\uBB34\uC791\uC704
Party.ItemShare.Category.Loot=\uAC15\uD0C8
Party.ItemShare.Category.Mining=\uCC44\uAD11
Party.ItemShare.Category.Herbalism=\uC57D\uCD08\uD559
Party.ItemShare.Category.Woodcutting=\uBC8C\uBAA9
Party.ItemShare.Category.Misc=\uAE30\uD0C0
##xp
Commands.XPGain.Acrobatics=\uB5A8\uC5B4\uC9C0\uAE30
Commands.XPGain.Alchemy=\uD3EC\uC158 \uC591\uC870\uD558\uAE30
Commands.XPGain.Archery=\uBAAC\uC2A4\uD130 \uACF5\uACA9\uD558\uAE30
Commands.XPGain.Axes=\uBAAC\uC2A4\uD130 \uACF5\uACA9\uD558\uAE30
Commands.XPGain.Child=\uC0C1\uC704 \uC2A4\uD0AC\uB4E4\uB85C \uBD80\uD130 \uB808\uBCA8\uB4E4\uC744 \uC5BB\uC2B5\uB2C8\uB2E4
Commands.XPGain.Excavation=\uB545 \uD30C\uAC70\uB098 \uBCF4\uBB3C \uBC1C\uACAC\uD558\uAE30
Commands.XPGain.Fishing=\uB09A\uC2DC\uD558\uAE30
Commands.XPGain.Herbalism=\uC2DD\uBB3C \uC218\uC9D1\uD558\uAE30
Commands.XPGain.Mining=\uB3CC\uC774\uB098 \uAD11\uC11D \uCE90\uAE30
Commands.XPGain.Repair=\uC218\uB9AC\uD558\uAE30
Commands.XPGain.Swords=\uBAAC\uC2A4\uD130 \uACF5\uACA9\uD558\uAE30
Commands.XPGain.Taming=\uB3D9\uBB3C\uC744 \uC870\uB828\uD558\uAC70\uB098, \uC870\uB828\uB41C \uB3D9\uBB3C\uB85C \uC0AC\uB0E5\uD558\uAE30
Commands.XPGain.Unarmed=\uBAAC\uC2A4\uD130 \uACF5\uACA9\uD558\uAE30
Commands.XPGain.Woodcutting=\uB098\uBB34 \uC790\uB974\uAE30
Commands.XPGain=[[DARK_GRAY]]\uACBD\uD5D8\uCE58 \uC5BB\uB294 \uBC29\uBC95: [[WHITE]]{0}
Commands.xplock.locked=[[GOLD]]\uB2F9\uC2E0\uC758 \uACBD\uD5D8\uCE58 \uBC14\uB294 {0}\uB85C \uC7A0\uACBC\uC2B5\uB2C8\uB2E4!
Commands.xplock.unlocked=[[GOLD]]\uB2F9\uC2E0\uC758 \uACBD\uD5D8\uCE58 \uBC14\uB294 [[GREEN]]\uC7A0\uAE08 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4[[GOLD]]!
Commands.xprate.modified=\uACBD\uD5D8\uCE58 \uBC30\uC728\uC774 {0}\uBC30\uB85C \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4
Commands.xprate.over=mcMMO \uACBD\uD5D8\uCE58 \uC774\uBCA4\uD2B8\uAC00 \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4!!
Commands.xprate.proper.0=\uACBD\uD5D8\uCE58 \uBC30\uC728 \uC774\uBCA4\uD2B8\uB97C \uC0AC\uC6A9\uBC95: [[WHITE]]/xprate <\uBC30\uC728> <true/false>
Commands.xprate.proper.1=\uACBD\uD5D8\uCE58 \uBC30\uC728\uC744 \uCD08\uAE30\uD654 \uBC29\uBC95: [[WHITE]]/xprate reset
Commands.xprate.proper.2=\uC774\uAC83\uC740 XP \uC774\uBCA4\uD2B8\uC778\uC9C0 \uC544\uB2CC\uC9C0 true \uB610\uB294 false\uB85C \uB098\uD0C0\uB0B4\uAE30 \uC704\uD574 \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624
Commands.xprate.started.0=[[GOLD]]mcMMO \uACBD\uD5D8\uCE58 \uC774\uBCA4\uD2B8\uAC00 \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4!
Commands.xprate.started.1=[[GOLD]]mcMMO \uACBD\uD5D8\uCE58 \uBC30\uC728\uC740 {0}\uBC30 \uC785\uB2C8\uB2E4!
XPRate.Event=[[GOLD]]mcMMO \uB294 \uD604\uC7AC \uACBD\uD5D8\uCE58 \uC774\uBCA4\uD2B8 \uC911\uC785\uB2C8\uB2E4! \uACBD\uD5D8\uCE58\uB294 {0}\uBC30 \uC785\uB2C8\uB2E4!
#EFFECTS
##generic
Effects.Effects=\uD6A8\uACFC
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
Guides.Available=[[GRAY]]{0} \uAC00\uC774\uB4DC\uAC00 \uC788\uC2B5\uB2C8\uB2E4 - \uD0C0\uC785 /{1} ? [\uD398\uC774\uC9C0]
Guides.Header=[[GOLD]]-=[[GREEN]]{0} \uAC00\uC774\uB4DC[[GOLD]]=-
Guides.Page.Invalid=\uC62C\uBC14\uB978 \uD398\uC774\uC9C0 \uBC88\uD638\uAC00 \uC544\uB2D9\uB2C8\uB2E4!
Guides.Page.OutOfRange=\uADF8 \uD398\uC774\uC9C0\uB294 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4, \uC624\uC9C1 \uCD1D {0} \uD398\uC774\uC9C0\uAC00 \uC788\uC2B5\uB2C8\uB2E4.
Guides.Usage=\uC0AC\uC6A9\uBC95 /{0} ? [\uD398\uC774\uC9C0]
##Acrobatics
Guides.Acrobatics.Section.0=[[DARK_AQUA]]\uACE1\uC608\uC5D0 \uB300\uD558\uC5EC:\n[[YELLOW]]\uACE1\uC608\uB294 mcMMO\uC758 \uC6B0\uC640\uD558\uAC8C \uC6C0\uC9C1\uC774\uB294 \uC608\uC220\uC785\uB2C8\uB2E4.\n[[YELLOW]]\uC804\uD22C \uD2B9\uD61C\uC640 \uD658\uACBD \uC190\uC0C1 \uD2B9\uD61C\uB97C \uC99D\uAC00\uC2DC\uD0B5\uB2C8\uB2E4.\n\n[[DARK_AQUA]]XP \uC5BB\uAE30:\n[[YELLOW]]\uC774 \uC2A4\uD0AC\uC758 XP\uB97C \uC5BB\uC744\uB824\uBA74 \uC804\uD22C\uB098 \uC0DD\uC874\uC5D0\uC11C \uD53C\uD574\uB97C \n[[YELLOW]]\uC785\uB294 \uB099\uD558\uC5D0\uC11C \uCC29\uC9C0 \uD589\uB3D9\uC774 \uC694\uAD6C\uB429\uB2C8\uB2E4.
Guides.Acrobatics.Section.1=[[DARK_AQUA]]\uC5B4\uB5BB\uAC8C \uAD6C\uB974\uAE30\uB97C \uD558\uB098\uC694?\n[[YELLOW]]\uB2F9\uC2E0\uC774 \uB099\uD558 \uD53C\uD574\uB97C \uBC1B\uC744 \uB54C \uD53C\uD574\uB97C \uBB34\uD6A8\uD654\uD560\n[[YELLOW]]\uC9C0\uC18D\uC801\uC778 \uAE30\uD68C\uB97C \uAC00\uC9C0\uAC8C \uB429\uB2C8\uB2E4. \uCB48\uAD6C\uB9AC\uAE30 \uBC84\uD2BC\uC744 \uB204\uB974\uACE0 \uC788\uC73C\uBA74\n[[YELLOW]]\uB5A8\uC5B4\uC9C0\uB294 \uB3D9\uC548 \uB450\uBC30\uC758 \uAE30\uD68C\uB97C \uAC00\uC9C0\uAC8C \uB429\uB2C8\uB2E4.\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]]Rolling chance is tied to your skill level
Guides.Acrobatics.Section.2=[[DARK_AQUA]]\uC5B4\uB5BB\uAC8C \uD68C\uD53C\uB97C \uD558\uB098\uC694?\n[[YELLOW]]\uD68C\uD53C\uB294 \uB2F9\uC2E0\uC774 \uC804\uD22C\uC5D0\uC11C \uC0C1\uCC98\uB97C \uC785\uC744 \uB54C \uC785\uB294\n[[YELLOW]]\uD53C\uD574\uB97C \uBC18\uAC10\uC2DC\uD0A4\uB294 \uC9C0\uC18D\uC801\uC778 \uAE30\uD68C\uC785\uB2C8\uB2E4.\n[[YELLOW]]\uC774\uAC83\uC740 \uB2F9\uC2E0\uC758 \uC2A4\uD0AC \uB808\uBCA8\uACFC \uC5F0\uACB0\uB429\uB2C8\uB2E4.
##Alchemy
Guides.Alchemy.Section.0=[[DARK_AQUA]]About Alchemy:\n[[YELLOW]]Alchemy is about brewing potions.\n[[YELLOW]]It provides a speed increase in the potion brew time, as well\n[[YELLOW]]as the addition of new (previously) unobtainable potions.\n\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill you need to brew potions.
Guides.Alchemy.Section.1=[[DARK_AQUA]]How does Catalysis work?\n[[YELLOW]]Catalysis speeds of the brewing process, with a\n[[YELLOW]]max speed of 4x at level 1000.\n[[YELLOW]]This ability is unlocked at level 100 by default.
Guides.Alchemy.Section.2=[[DARK_AQUA]]How does Concoctions work?\n[[YELLOW]]Concoctions allows brewing of more potions with custom ingredients.\n[[YELLOW]]Which special ingredients are unlocked is determined\n[[YELLOW]]by your Rank. There are 8 ranks to unlock.
Guides.Alchemy.Section.3=[[DARK_AQUA]]Concoctions tier 1 ingredients:\n[[YELLOW]]Blaze Powder, Fermented Spider Eye, Ghast Tear, Redstone,\n[[YELLOW]]Glowstone Dust, Sugar, Glistering Melon, Golden Carrot,\n[[YELLOW]]Magma Cream, Nether Wart, Spider Eye, Suplhur, Water Lily,\n[[YELLOW]]Pufferfish\n[[YELLOW]](Vanilla Potions)
Guides.Alchemy.Section.4=[[DARK_AQUA]]Concoctions tier 2 ingredients:\n[[YELLOW]]Carrot (Potion of Haste)\n[[YELLOW]]Slimeball (Potion of Dullness)\n\n[[DARK_AQUA]]Concoctions tier 3 ingredients:\n[[YELLOW]]Quartz (Potion of Absorption)\n[[YELLOW]]Red Mushroom (Potion of Leaping)
Guides.Alchemy.Section.5=[[DARK_AQUA]]Concoctions tier 4 ingredients:\n[[YELLOW]]Apple (Potion of Health Boost)\n[[YELLOW]]Rotten Flesh (Potion of Hunger)\n\n[[DARK_AQUA]]Concoctions tier 5 ingredients:\n[[YELLOW]]Brown Mushroom (Potion of Nausea)\n[[YELLOW]]Ink Sack (Potion of Blindness)
Guides.Alchemy.Section.6=[[DARK_AQUA]]Concoctions tier 6 ingredients:\n[[YELLOW]]Fern (Potion of Saturation)\n\n[[DARK_AQUA]]Concoctions tier 7 ingredients:\n[[YELLOW]]Poisonous Potato (Potion of Decay)\n\n[[DARK_AQUA]]Concoctions tier 8 ingredients:\n[[YELLOW]]Regular Golden Apple (Potion of Resistance)
##Archery
Guides.Archery.Section.0=[[DARK_AQUA]]\uAD81\uC220\uC5D0 \uB300\uD558\uC5EC:\n[[YELLOW]]\uAD81\uC220\uC740 \uD65C\uACFC \uD654\uC0B4\uB85C \uC3D8\uB294 \uAC83\uC744 \uB73B\uD569\uB2C8\uB2E4.\n[[YELLOW]]\uAD81\uC220\uC740 PVP\uC5D0\uC11C \uB2F9\uC2E0\uC774 \uC801\uC744 \uD604\uD639\uC2DC\uD0A4\uB294 \uB2A5\uB825\uACFC\n[[YELLOW]]\uB808\uBCA8 \uD06C\uAE30\uC758 \uB370\uBBF8\uC9C0 \uBD80\uC2A4\uD130\uB97C \uAC19\uC740 \uAC83\uC73C\uB85C\n[[YELLOW]]\uC804\uD22C \uBCF4\uB108\uC2A4\uB97C \uC81C\uACF5\uD569\uB2C8\uB2E4. In addition to this, you can retrieve\n[[YELLOW]]some of your spent arrows from the corpses of your foes.\n\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill you need to shoot mobs or\n[[YELLOW]]other players.
Guides.Archery.Section.1=[[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.
Guides.Archery.Section.2=[[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).
Guides.Archery.Section.3=[[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.
##Axes
Guides.Axes.Section.0=[[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.
Guides.Axes.Section.1=[[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.
Guides.Axes.Section.2=[[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.
Guides.Axes.Section.3=[[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.
Guides.Axes.Section.4=[[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.
Guides.Axes.Section.5=[[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.
##Excavation
Guides.Excavation.Section.0=[[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.
Guides.Excavation.Section.1=[[DARK_AQUA]]Compatible Materials:\n[[YELLOW]]Grass, Dirt, Sand, Clay, Gravel, Mycelium, Soul Sand, Snow
Guides.Excavation.Section.2=[[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.
Guides.Excavation.Section.3=[[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.
Guides.Excavation.Section.4=[[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.
Guides.Excavation.Section.5=[[DARK_AQUA]]Notes about Excavation:\n[[YELLOW]]Excavation drops are completely customizeable\n[[YELLOW]]So results vary server to server.
##Fishing
Guides.Fishing.Section.0=[[DARK_AQUA]]About Fishing:\n[[YELLOW]]With the Fishing skill, Fishing is exciting again!\n[[YELLOW]]Find hidden treasures, and shake items off mobs.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]Catch fish.
Guides.Fishing.Section.1=[[DARK_AQUA]]How does Treasure Hunter work?\n[[YELLOW]]This ability allows you to find treasure from fishing \n[[YELLOW]]with a small chance of the items being enchanted.\n[[YELLOW]]Every possible treasure for Fishing has a chance\n[[YELLOW]]to drop on any level. It depends however\n[[YELLOW]]what the rarity of the item is how often it will drop.\n[[YELLOW]]The higher your Fishing skill is, the better\n[[YELLOW]]your chances are to find better treasures.
Guides.Fishing.Section.2=[[DARK_AQUA]]How does Ice Fishing work?\n[[YELLOW]]This passive skill allows you to fish in ice lakes!\n[[YELLOW]]Cast your fishing rod in an ice lake and the ability will\n[[YELLOW]]create a small hole in the ice to fish in.
Guides.Fishing.Section.3=[[DARK_AQUA]]How does Master Angler work?\n[[YELLOW]]This passive skill increases the bite chance while fishing.\n[[YELLOW]]When you've unlocked this ability, fishing while in\n[[YELLOW]]a boat or when an ocean biome doubles the bite chance.
Guides.Fishing.Section.4=[[DARK_AQUA]]How does Shake work?\n[[YELLOW]]This active ability allows you to shake items loose from mobs\n[[YELLOW]]by hooking them with the fishing rod. \n[[YELLOW]]Mobs will drop items they would normally drop on death.\n[[YELLOW]]It is also possible to acquire mob skulls, which are normally \n[[YELLOW]]unobtainable in survival mode.
Guides.Fishing.Section.5=[[DARK_AQUA]]How does Fisherman's Diet work?\n[[YELLOW]]This passive skill increases the amount of hunger restored \n[[YELLOW]]from eating fish.
Guides.Fishing.Section.6=[[DARK_AQUA]]Notes about Fishing:\n[[YELLOW]]Fishing drops are completely customizable,\n[[YELLOW]]so results vary server to server.
##Herbalism
Guides.Herbalism.Section.0=[[DARK_AQUA]]About Herbalism:\n[[YELLOW]]Herbalism is about collecting herbs and plants.\n\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]Collect plants and herbs.
Guides.Herbalism.Section.1=[[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.
Guides.Herbalism.Section.2=[[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.
Guides.Herbalism.Section.3=[[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.
Guides.Herbalism.Section.4=[[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.
Guides.Herbalism.Section.5=[[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.
Guides.Herbalism.Section.6=[[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.
Guides.Herbalism.Section.7=[[DARK_AQUA]]How do Double Drops work?\n[[YELLOW]]This passive ability gives players more yield from their\n[[YELLOW]]harvests.
##Mining
Guides.Mining.Section.0=[[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.
Guides.Mining.Section.1=[[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.
Guides.Mining.Section.2=[[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.
Guides.Mining.Section.3=[[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.
Guides.Mining.Section.4=[[DARK_AQUA]]How to use Blast Mining:\n[[YELLOW]]With a detonator in hand, which is a flint & steel by default,\n[[YELLOW]]crouch and right-click on TNT from a distance. This will cause the TNT\n[[YELLOW]]to instantly explode.
Guides.Mining.Section.5=[[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.
##Repair
Guides.Repair.Section.0=[[DARK_AQUA]]About Repair:\n[[YELLOW]]Repair allows you to use an iron block to repair armor and\n[[YELLOW]]tools, or a gold block to salvage armor and tools.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]Repair tools or armor using the mcMMO Anvil. This is an\n[[YELLOW]]iron block by default and should not be confused with\n[[YELLOW]]the Vanilla Minecraft Anvil.
Guides.Repair.Section.1=[[DARK_AQUA]]How can I use Repair?\n[[YELLOW]]Place down a mcMMO Anvil and right-click to repair the item \n[[YELLOW]]you're currently holding. This consumes 1 item on every use.
Guides.Repair.Section.2=[[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.
Guides.Repair.Section.3=[[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.
Guides.Repair.Section.4=[[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.
##Salvage
Guides.Salvage.Section.0=[[DARK_AQUA]]About Salvage:\n[[YELLOW]]Salvage allows you to use an gold block to salvage armor and\n[[YELLOW]]tools.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]Salvage is a child skill of Repair and Fishing, your Salvage\n[[YELLOW]]skill level is based on your Fishing and Repair skill levels.
Guides.Salvage.Section.1=[[DARK_AQUA]]How can I use Salvage?\n[[YELLOW]]Place down a mcMMO Salvage Anvil and right-click to salvage\n[[YELLOW]]the item you're currently holding. This will break apart the item,\n[[YELLOW]]and give back materials used to craft the item.\n\n[[YELLOW]]For example, salvaging an iron pickaxe will give you iron bars.
Guides.Salvage.Section.2=[[DARK_AQUA]]How does Advanced Salvage work?\n[[YELLOW]]When unlocked, this ability allows you to salvage damaged items.\n[[YELLOW]]The yield percentage increases as you level up. A higher yield\n[[YELLOW]]means that you can get more materials back.\n[[YELLOW]]With advanced salvage you will always get 1 material back,\n[[YELLOW]]unless the item is too damaged. So you don't have to worry\n[[YELLOW]]about destroying items without getting anything in return.
Guides.Salvage.Section.3=[[DARK_AQUA]]To illustrate how this works, here's an example:\n[[YELLOW]]Let's say we salvage a gold pickaxe which is damaged for 20%,\n[[YELLOW]]this means that the maximum amount you could get is only 2\n[[YELLOW]](because the pick is crafted with 3 ingots - each worth\n[[YELLOW]]33,33% durability) which is equal to 66%. If your yield\n[[YELLOW]]percentage is below 66% you are not able to get 2 ingots.\n[[YELLOW]]If it is above this value you are able to gain the "full amount",\n[[YELLOW]]which means that you will get 2 ingots.
Guides.Salvage.Section.4=[[DARK_AQUA]]How does Arcane Salvage work?\n[[YELLOW]]This ability allows you to get enchanted books when salvaging\n[[YELLOW]]enchanted items. Depending on your level the chance of\n[[YELLOW]]successfully extracting a full or partial enchantment varies.\n\n[[YELLOW]]When an enchantment is partially extracted, the enchantment\n[[YELLOW]]book will have a lower level enchantment compared to what\n[[YELLOW]]it was on the item.
##Smelting
Guides.Smelting.Section.0=Coming soon...
##Swords
Guides.Swords.Section.0=[[DARK_AQUA]]About Swords:\n[[YELLOW]]This skill awards combat bonuses to anyone fighting with a\n[[YELLOW]]sword.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]XP is gained based on the amount of damage dealt to mobs or \n[[YELLOW]]other players when wielding a sword.
Guides.Swords.Section.1=[[DARK_AQUA]]How does Serrated Strikes work?\n[[YELLOW]]Serrated Strikes is an active ability, you can activate it by\n[[YELLOW]]right-clicking with a sword. This ability allows you to deal \n[[YELLOW]]an AoE (Area of Effect) hit. This AoE will do a bonus 25%\n[[YELLOW]]damage and will inflict a bleed effect that lasts for 5 ticks.
Guides.Swords.Section.2=[[DARK_AQUA]]How does Counter Attack work?\n[[YELLOW]]Counter Attack is an active ability. When blocking and taking\n[[YELLOW]]hits from mobs, you will have a chance to reflect 50% of \n[[YELLOW]]the damage that was taken.
Guides.Swords.Section.3=[[DARK_AQUA]]How does Bleed work?\n[[YELLOW]]Bleed causes enemies to take damage every two seconds. The \n[[YELLOW]]target will bleed until the effect wears off, or death, \n[[YELLOW]]whichever comes first.\n[[YELLOW]]The duration of the bleed is increased by your sword skill.
##Taming
Guides.Taming.Section.0=[[DARK_AQUA]]About Taming:\n[[YELLOW]]Taming will give players various combat bonuses when using\n[[YELLOW]]tamed wolves.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]To gain XP in this skill, you need to tame wolves/ocelots or\n[[YELLOW]]get into combat with your wolves.
Guides.Taming.Section.1=[[DARK_AQUA]]How does Call of the Wild work?\n[[YELLOW]]Call of the Wild is an active ability that will allow you to summon\n[[YELLOW]]a wolf or an ocelot by your side. You can do this by\n[[YELLOW]]left-clicking while holding bones or fish.
Guides.Taming.Section.2=[[DARK_AQUA]]How does Beast Lore work?\n[[YELLOW]]Beast Lore allows players to inspect pets and to check the\n[[YELLOW]]stats of wolves and ocelots. Left-click a wolf or ocelot to use\n[[YELLOW]]Beast Lore.
Guides.Taming.Section.3=[[DARK_AQUA]]How does Gore work?\n[[YELLOW]]Gore is a passive ability that has a chance of inflicting a\n[[YELLOW]]bleeding effect on your wolves' targets.
Guides.Taming.Section.4=[[DARK_AQUA]]How does Sharpened Claws work?\n[[YELLOW]]Sharpened Claws provides a damage bonus to damage dealt\n[[YELLOW]]by wolves. The damage bonus depends on your Taming level.
Guides.Taming.Section.5=[[DARK_AQUA]]How does Environmentally Aware work?\n[[YELLOW]]This passive ability will allow wolves to teleport to you when\n[[YELLOW]]they get near hazards, such as Cacti/Lava. It will also give\n[[YELLOW]]wolves fall damage immunity.
Guides.Taming.Section.6=[[DARK_AQUA]]How does Thick Fur work?\n[[YELLOW]]This passive ability will reduce damage and make wolves\n[[YELLOW]]fire resistant.
Guides.Taming.Section.7=[[DARK_AQUA]]How does Shock Proof work?\n[[YELLOW]]This passive ability reduces damage done to wolves\n[[YELLOW]]from explosions.
Guides.Taming.Section.8=[[DARK_AQUA]]How does Fast Food Service work?\n[[YELLOW]]This passive ability gives wolves a chance to heal whenever\n[[YELLOW]]they perform an attack.
##Unarmed
Guides.Unarmed.Section.0=[[DARK_AQUA]]About Unarmed:\n[[YELLOW]]Unarmed will give players various combat bonuses when using\n[[YELLOW]]your fists as a weapon. \n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]XP is gained based on the amount of damage dealt to mobs \n[[YELLOW]]or other players when unarmed.
Guides.Unarmed.Section.1=[[DARK_AQUA]]How does Berserk work?\n[[YELLOW]]Beserk is an active ability that is activated by\n[[YELLOW]]right-clicking. While in Beserk mode, you deal 50% more\n[[YELLOW]]damage and you can break weak materials instantly, such as\n[[YELLOW]]Dirt and Grass.
Guides.Unarmed.Section.2=[[DARK_AQUA]]How does Iron Arm work?\n[[YELLOW]]Iron Arm increases the damage dealt when hitting mobs or\n[[YELLOW]]players with your fists.
Guides.Unarmed.Section.3=[[DARK_AQUA]]How does Arrow Deflect work?\n[[YELLOW]]Arrow Deflect is a passive ability that gives you a chance\n[[YELLOW]]to deflect arrows shot by Skeletons or other players.\n[[YELLOW]]The arrow will fall harmlessly to the ground.
Guides.Unarmed.Section.4=[[DARK_AQUA]]How does Iron Grip work?\n[[YELLOW]]Iron Grip is a passive ability that counters disarm. As your\n[[YELLOW]]unarmed level increases, the chance of preventing a disarm increases.
Guides.Unarmed.Section.5=[[DARK_AQUA]]How does Disarm work?\n[[YELLOW]]This passive ability allows players to disarm other players,\n[[YELLOW]]causing the target's equipped item to fall to the ground.
##Woodcutting
Guides.Woodcutting.Section.0=[[DARK_AQUA]]About Woodcutting:\n[[YELLOW]]Woodcutting is all about chopping down trees.\n\n[[DARK_AQUA]]XP GAIN:\n[[YELLOW]]XP is gained whenever you break log blocks.
Guides.Woodcutting.Section.1=[[DARK_AQUA]]How does Tree Feller work?\n[[YELLOW]]Tree Feller is an active ability, you can right-click\n[[YELLOW]]while holding an ax to activate Tree Feller. This will\n[[YELLOW]]cause the entire tree to break instantly, dropping all\n[[YELLOW]]of its logs at once.
Guides.Woodcutting.Section.2=[[DARK_AQUA]]How does Leaf Blower work?\n[[YELLOW]]Leaf Blower is a passive ability that will cause leaf\n[[YELLOW]]blocks to break instantly when hit with an axe. By default,\n[[YELLOW]]this ability unlocks at level 100.
Guides.Woodcutting.Section.3=[[DARK_AQUA]]How do Double Drops work?\n[[YELLOW]]This passive ability gives you a chance to obtain an extra\n[[YELLOW]]block for every log you chop.
#INSPECT
Inspect.Offline=[[RED]]\uADF8 \uD50C\uB808\uC774\uC5B4\uB294 \uC624\uD504\uB77C\uC778 \uC785\uB2C8\uB2E4, \uC624\uC9C1 op\uB4E4\uB9CC \uAC80\uC0AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4!
Inspect.OfflineStats=mcMMO \uC624\uD504\uB77C\uC778 \uC720\uC800 \uC2A4\uD15F\uC740 [[YELLOW]]{0} \uC785\uB2C8\uB2E4
Inspect.Stats=[[GREEN]]mcMMO \uC2A4\uD15F\uC740 [[YELLOW]]{0} \uC785\uB2C8\uB2E4
Inspect.TooFar=\uB2F9\uC2E0\uC740 \uADF8 \uD50C\uB808\uC774\uC5B4\uC640 \uB108\uBB34 \uBA40\uB9AC \uB5A8\uC5B4\uC838 \uC788\uC5B4 \uAC80\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!
#ITEMS
Item.ChimaeraWing.Fail=**\uD0A4\uBA54\uB77C\uC758 \uB0A0\uAC1C \uC2E4\uD328!**
Item.ChimaeraWing.Pass=**\uD0A4\uBA54\uB77C \uB0A0\uAC1C**
Item.ChimaeraWing.Name=\uD0A4\uBA54\uB77C \uB0A0\uAC1C
Item.ChimaeraWing.Lore=[[GRAY]]\uB2F9\uC2E0\uC758 \uCE68\uB300\uB85C \uD154\uB808\uD3EC\uD2B8\uD569\uB2C8\uB2E4.
Item.Generic.Wait=\uD0A4\uBA54\uB77C\uC758 \uB0A0\uAC1C\uB97C \uB2E4\uC2DC \uC0AC\uC6A9\uD560\uB824\uBA74 [[YELLOW]]({0}\uCD08) [[RED]]\uAE30\uB2EC\uB824\uC57C \uD569\uB2C8\uB2E4!
Item.Injured.Wait=\uB2F9\uC2E0\uC740 \uCD5C\uADFC\uC5D0 \uBD80\uC0C1\uC744 \uB2F9\uD588\uACE0 \uC0AC\uC6A9\uD560\uB824\uBA74 [[YELLOW]]({0}\uCD08) [[WHITE]]\uAE30\uB2EC\uB824\uC57C \uD569\uB2C8\uB2E4
Item.FluxPickaxe.Name=\uC6A9\uD574 \uACE1\uAD2D\uC774
Item.FluxPickaxe.Lore.1=[[GRAY]]\uAD11\uBB3C\uC744 \uC989\uC2DC \uC81C\uB828\uD560 \uAE30\uD68C\uB97C \uAC00\uC9D1\uB2C8\uB2E4.
Item.FluxPickaxe.Lore.2=[[GRAY]]\uC81C\uB828 \uC694\uAD6C \uB808\uBCA8 {0} \uC774\uC0C1
#TELEPORTATION
Teleport.Commencing=[[GRAY]]\uD154\uB808\uD3EC\uD2B8\uAC00 [[GOLD]]({0}) [[GRAY]]\uCD08\uC548\uC5D0 \uC2DC\uC791\uB429\uB2C8\uB2E4, \uAC00\uB9CC\uD788 \uAE30\uB2EC\uB824\uC8FC\uC138\uC694...
Teleport.Cancelled=[[DARK_RED]]\uD154\uB808\uD3EC\uD2B8 \uCDE8\uC18C\uB428!
#SKILLS
Skills.Child=[[GOLD]](\uD558\uC704 \uC2A4\uD0AC)
Skills.Disarmed=[[DARK_RED]]\uB2F9\uC2E0\uC740 \uBB34\uC7A5 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4!
Skills.Header=-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]\uB2F9\uC2E0\uC740 [[GRAY]]{0}\uAC00 \uB354 \uD544\uC694\uD569\uB2C8\uB2E4
Skills.Parents=\uC0C1\uC704\uB4E4
Skills.Stats={0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.ChildStats={0}[[GREEN]]{1}
Skills.TooTired=\uC2A4\uD0AC \uC7AC \uC0AC\uC6A9 \uB300\uAE30\uC2DC\uAC04: ({0}\uCD08)
Skills.Cancelled={0} \uCDE8\uC18C\uB428!
Skills.ConfirmOrCancel=[[GREEN]]\uB2E4\uC2DC \uC6B0-\uD074\uB9AD\uC744 \uD558\uBA74 \uD655\uC778 [[GOLD]]{0}[[GREEN]]. \uC88C-\uD074\uB9AD\uC744 \uD558\uBA74 \uCDE8\uC18C\uAC00 \uB429\uB2C8\uB2E4.
#STATISTICS
Stats.Header.Combat=[[GOLD]]-=\uC804\uD22C \uC2A4\uD0AC=-
Stats.Header.Gathering=[[GOLD]]-=\uC218\uC9D1 \uC2A4\uD0AC=-
Stats.Header.Misc=[[GOLD]]-=\uAE30\uD0C0 \uC2A4\uD0AC=-
Stats.Own.Stats=[[GREEN]][mcMMO] \uC2A4\uD15F
#PERKS
Perks.XP.Name=\uACBD\uD5D8\uCE58
Perks.XP.Desc=\uD2B9\uC815 \uC2A4\uD0AC\uC5D0 \uACBD\uD5D8\uCE58 \uBD80\uC2A4\uD2B8\uB97C \uBC1B\uC74C.
Perks.Lucky.Name=\uD589\uC6B4
Perks.Lucky.Desc={0} \uC2A4\uD0AC\uACFC \uB2A5\uB825\uC5D0 33.3%\uC758 \uB354 \uB9CE\uC740 \uD65C\uC131\uD654 \uD655\uB960\uC744 \uBD80\uC5EC\uD569\uB2C8\uB2E4.
Perks.Lucky.Desc.Login=\uD2B9\uC815 \uC2A4\uD0AC\uACFC \uB2A5\uB825\uC5D0 33.3%\uC758 \uB354 \uB9CE\uC740 \uD65C\uC131\uD654 \uD655\uB960\uC744 \uBD80\uC5EC\uD569\uB2C8\uB2E4.
Perks.Lucky.Bonus=[[GOLD]] ({0} \uC6B4\uC88B\uC740 \uD2B9\uC804\uACFC \uD568\uAED8)
Perks.Cooldowns.Name=\uBE60\uB978 \uD68C\uBCF5
Perks.Cooldowns.Desc=\uC7AC\uC0AC\uC6A9\uB300\uAE30\uC2DC\uAC04\uC744 {0}\uB9CC\uD07C \uC904\uC785\uB2C8\uB2E4
Perks.ActivationTime.Name=\uC778\uB0B4\uB825
Perks.ActivationTime.Desc=\uB2A5\uB825 \uD65C\uC131 \uC2DC\uAC04\uC774 {0}\uCD08\uB85C \uC99D\uAC00\uD569\uB2C8\uB2E4.
Perks.ActivationTime.Bonus=[[GOLD]] ({0}\uCD08\uC758 \uC778\uB0B4\uB825 \uD2B9\uC804)
#HARDCORE
Hardcore.Mode.Disabled=[[GOLD]][mcMMO] \uD558\uB4DC\uCF54\uC5B4 \uBAA8\uB4DC {0}\uAC00 {1}\uC5D0 \uBE44\uD65C\uC131\uD654\uB428.
Hardcore.Mode.Enabled=[[GOLD]][mcMMO] \uD558\uB4DC\uCF54\uC5B4 \uBAA8\uB4DC {0}\uAC00 {1}\uC5D0 \uD65C\uC131\uD654\uB428.
Hardcore.DeathStatLoss.Name=\uC2A4\uD0AC \uB370\uC2A4 \uD328\uB110\uD2F0
Hardcore.DeathStatLoss.PlayerDeath=[[GOLD]][mcMMO] [[DARK_RED]]\uB2F9\uC2E0\uC740 \uC8FD\uC5B4\uC11C [[BLUE]]{0}[[DARK_RED]] \uB808\uBCA8\uC744 \uC783\uC5C8\uC2B5\uB2C8\uB2E4.
Hardcore.DeathStatLoss.PercentageChanged=[[GOLD]][mcMMO] \uC2A4\uD15F \uAC10\uC18C \uBE44\uC728\uC774 {0}\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4..
Hardcore.Vampirism.Name=\uBC40\uD30C\uC774\uC5B4\uB9AC\uC810
Hardcore.Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]]\uB2D8\uC740 \uD2B9\uBCC4\uD55C \uAE30\uC220\uC744 \uAC00\uC9C0\uACE0 \uC788\uC9C0\uC54A\uC544 \uB2F9\uC2E0\uC774 \uAC00\uC838\uAC08 \uC9C0\uC2DD\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
Hardcore.Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]\uB2F9\uC2E0\uC740 [[YELLOW]]{1}[[DARK_AQUA]]\uB2D8\uC73C\uB85C\uBD80\uD130 [[BLUE]]{0}[[DARK_AQUA]] \uB808\uBCA8\uC744 \uD6D4\uCCE4\uC2B5\uB2C8\uB2E4.
Hardcore.Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]]\uB2D8\uC740 \uB2F9\uC2E0\uC758 \uC9C0\uC2DD\uC744 \uAC00\uC838\uAC08\uC218 \uC5C6\uC5C8\uC2B5\uB2C8\uB2E4!
Hardcore.Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]]\uB2D8\uC740 \uB2F9\uC2E0\uC5D0\uAC8C\uC11C [[BLUE]]{1}[[DARK_RED]] \uB808\uBCA8\uC744 \uD6D4\uCCD0\uAC14\uC2B5\uB2C8\uB2E4!
Hardcore.Vampirism.PercentageChanged=[[GOLD]][mcMMO] \uC2A4\uD15F \uD761\uD608 \uBE44\uC728\uC774 {0}\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
#MOTD
MOTD.Donate=[[DARK_AQUA]]\uAE30\uBD80 \uC815\uBCF4:
MOTD.Hardcore.Enabled=[[GOLD]][mcMMO] [[DARK_AQUA]]\uD558\uB4DC\uCF54\uC5B4 \uBAA8\uB4DC \uD65C\uC131\uD654\uB428: [[DARK_RED]]{0}
MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]\uB370\uC2A4 \uD328\uB110\uD2F0 \uB2A5\uB825: [[DARK_RED]]{0}%
MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]\uBC40\uD30C\uC774\uC5B4\uB9AC\uC810 \uC2A4\uD15F \uD761\uC218: [[DARK_RED]]{0}%
MOTD.PerksPrefix=[mcMMO \uD2B9\uC804]
MOTD.Version=[[GOLD]][mcMMO] \uAD6C\uB3D9\uC911\uC778 \uBC84\uC804 [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO \uC6F9\uC0AC\uC774\uD2B8
#SMELTING
Smelting.Ability.FluxMining=\uC720\uB3D9 \uCC44\uAD74 \uD655\uB960: [[YELLOW]]{0}
Smelting.Ability.FuelEfficiency=\uC720\uB3D9 \uD6A8\uC728\uC131 \uBC30\uC728: [[YELLOW]]{0}x
Smelting.Ability.Locked.0={0}\uB808\uBCA8 \uB54C \uAE30\uC220\uC774 \uD574\uC81C\uB429\uB2C8\uB2E4 (\uBC14\uB2D0\uB77C XP \uBD80\uC2A4\uD2B8)
Smelting.Ability.Locked.1={0}\uB808\uBCA8 \uB54C \uAE30\uC220\uC774 \uD574\uC81C\uB429\uB2C8\uB2E4 (\uC720\uB3D9 \uCC44\uAD74)
Smelting.Ability.SecondSmelt=\uB450\uBC88\uC9F8 \uC7AC\uB828 \uD655\uB960: [[YELLOW]{0}
Smelting.Ability.VanillaXPBoost=\uBC14\uB2D0\uB77C XP \uBC30\uC728: [[YELLOW]]{0}x
Smelting.SubSkill.FuelEfficiency.Name=\uC720\uB3D9 \uD6A8\uC728\uC131
Smelting.SubSkill.FuelEfficiency.Description=\uD654\uB85C\uC5D0\uC11C \uC7AC\uB828\uC2DC \uC5F0\uB8CC \uC5F0\uC18C \uC2DC\uAC04 \uC99D\uAC00
Smelting.SubSkill.SecondSmelt.Name=\uB450\uBC88\uC9F8 \uC81C\uB828
Smelting.SubSkill.SecondSmelt.Description=\uC81C\uB828\uC2DC \uC5BB\uB294 \uC790\uC6D0 2\uBC30
Smelting.Effect.4=\uBC14\uB2D0\uB77C XP \uBD80\uC2A4\uD2B8
Smelting.Effect.5=\uC81C\uB828\uC911 \uBC14\uB2D0\uB77C XP \uC5BB\uAE30 \uC99D\uAC00
Smelting.SubSkill.FluxMining.Name=\uC720\uB3D9 \uCC44\uAD74
Smelting.SubSkill.FluxMining.Description=\uCC44\uAD74\uC911 \uAD11\uBB3C \uC989\uC2DC \uC7AC\uB828 \uD655\uB960
Smelting.FluxMining.Success=[[GREEN]]\uAD11\uBB3C\uC774 \uC7AC\uB828\uB418\uC5C8\uC2B5\uB2C8\uB2E4!
Smelting.Listener=\uC81C\uB828(Smelting):
Smelting.SkillName=\uC81C\uB828
#COMMAND DESCRIPTIONS
Commands.Description.addlevels=mcMMO \uB808\uBCA8\uC744 \uC720\uC800\uC5D0\uAC8C \uCD94\uAC00
Commands.Description.adminchat=mcMMO \uAD00\uB9AC\uC790 \uCC44\uD305 \uCF1C\uAE30/\uB044\uAE30\uB098 \uAD00\uB9AC\uC790 \uCC44\uD305 \uBA54\uC138\uC9C0 \uBCF4\uB0B4\uAE30
Commands.Description.addxp=mcMMO \uACBD\uD5D8\uCE58\uB97C \uC720\uC800\uC5D0\uAC8C \uCD94\uAC00
Commands.Description.hardcore=mcMMO \uD558\uB4DC\uCF54\uC5B4 \uD655\uB960 \uC218\uC815\uC774\uB098 \uD558\uB4DC\uCF54\uC5B4 \uBAA8\uB4DC \uCF1C\uAE30/\uB044\uAE30
Commands.Description.inspect=\uB2E4\uB978 \uD50C\uB808\uC774\uC5B4\uC758 mcMMO \uC790\uC138\uD55C \uC815\uBCF4 \uBCF4\uAE30
Commands.Description.mcability=mcMMO \uC6B0-\uD074\uB9AD \uB2A5\uB825 \uCF1C\uAE30/\uB044\uAE30
Commands.Description.mccooldown=\uBAA8\uB4E0 mcMMO \uB2A5\uB825 \uC7AC \uC0AC\uC6A9 \uB300\uAE30\uC2DC\uAC04 \uBCF4\uAE30
Commands.Description.mcgod=mcMMO \uBD88\uC0AC\uC2E0-\uBAA8\uB4DC \uCF1C\uAE30/\uB044\uAE30
Commands.Description.mchud=mcMMO HUD \uBC29\uC2DD \uBCC0\uACBD
Commands.Description.mcmmo=mcMMO \uC81C\uC791\uC790 \uC124\uBA85 \uBCF4\uAE30
Commands.Description.mcnotify=mcMMO \uB2A5\uB825 \uCC44\uD305 \uC54C\uB9BC \uBCF4\uAE30 \uCF1C\uAE30/\uB044\uAE30
Commands.Description.mcpurge={0} \uB2EC \uC774\uC0C1 \uC811\uC18D\uC548\uD55C \uC720\uC800\uC758 mcMMO \uB808\uBCA8\uACFC \uC720\uC800\uB97C mcMMO \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0\uC11C \uCD08\uAE30\uD654\uC2DC\uD0B4
Commands.Description.mcrank=\uD50C\uB808\uC774\uC5B4 mcMMO \uC21C\uC704 \uBCF4\uAE30
Commands.Description.mcrefresh=\uBAA8\uB4E0 mcMMO \uCFE8\uB2E4\uC6B4 \uCD08\uAE30\uD654
Commands.Description.mcremove=\uC720\uC800 mcMMO \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uC0AD\uC81C
Commands.Description.mcscoreboard=\uB2F9\uC2E0\uC758 mcMMO \uC810\uC218\uD310 \uAD00\uB9AC
Commands.Description.mcstats=\uC790\uC2E0\uC758 mcMMO \uB808\uBCA8\uACFC XP \uBCF4\uAE30
Commands.Description.mctop=mcMMO \uC810\uC218\uD45C \uBCF4\uAE30
Commands.Description.mmoedit=\uC720\uC800\uC758 mcMMO \uB808\uBCA8 \uC218\uC815
Commands.Description.mmoupdate=mcMMO \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uB97C flatfile\uC5D0\uC11C MySQL\uB85C \uC804\uD658
Commands.Description.mcconvert=\uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uD0C0\uC785 \uB610\uB294 \uACBD\uD5D8 \uACF5\uC2DD \uD0C0\uC785 \uC804\uD658
Commands.Description.mmoshowdb=\uD604\uC7AC \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uD0C0\uC785 \uC774\uB984 \uBCF4\uAE30(\uB098\uC911\uC5D0 /mmoupdate\uC640 \uD568\uAED8 \uC4F0\uC785\uB2C8\uB2E4)
Commands.Description.party=\uB2E4\uC591\uD55C mcMMO \uD30C\uD2F0 \uC124\uC815 \uAD00\uB9AC
Commands.Description.partychat=mcMMO \uD30C\uD2F0 \uCC44\uD305 \uCF1C\uAE30/\uB044\uAE30\uB098 \uD30C\uD2F0 \uCC44\uD305 \uBA54\uC138\uC9C0 \uBCF4\uB0B4\uAE30
Commands.Description.ptp=mcMMO \uD30C\uD2F0 \uB9F4\uBC84 \uD154\uB808\uD3EC\uD2B8
Commands.Description.Skill=mcMMO \uAE30\uC220 {0}\uC758 \uC790\uC138\uD55C \uC815\uBCF4 \uBCF4\uAE30
Commands.Description.skillreset=\uC720\uC800\uC758 mcMMO \uB808\uBCA8 \uC7AC\uC124\uC815
Commands.Description.vampirism=mcMMO \uBC40\uD30C\uC774\uC5B4\uB9AC\uC810 \uBE44\uC728\uC774\uB098 \uBC40\uD30C\uC774\uC5B4\uB9AC\uC810 \uBAA8\uB4DC \uCF1C\uAE30/\uB044\uAE30
Commands.Description.xplock=\uBA85\uD655\uD55C mcMMO \uAE30\uC220\uC758 mcMMO xp \uBC14\uB97C \uC7A0\uAE08
Commands.Description.xprate=mcMMO XP \uBC30\uC728 \uC218\uC815\uC774\uB098 mcMMO XP \uC774\uBCA4\uD2B8 \uC2DC\uC791
#UPDATE CHECKER
UpdateChecker.outdated=\uB2F9\uC2E0\uC740 mcMMO \uAD6C\uBC84\uC804\uC744 \uC0AC\uC6A9\uC911\uC785\uB2C8\uB2E4!
UpdateChecker.newavailable=\uC2E0 \uBC84\uC804\uC774 BukkitDev\uC5D0 \uC5C5\uB85C\uB4DC\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
#SCOREBOARD HEADERS
Scoreboard.Header.PlayerStats=mcMMO \uC2A4\uD15F
Scoreboard.Header.PlayerCooldowns=mcMMO \uC7AC \uC0AC\uC6A9 \uB300\uAE30\uC2DC\uAC04
Scoreboard.Header.PlayerRank=mcMMO \uC21C\uC704
Scoreboard.Header.PlayerInspect=mcMMO \uC2A4\uD15F:
Scoreboard.Header.PowerLevel=\uCD1D \uB808\uBCA8
Scoreboard.Misc.PowerLevel=[[GOLD]]\uCD1D \uB808\uBCA8
Scoreboard.Misc.Level=[[DARK_AQUA]]\uB808\uBCA8
Scoreboard.Misc.CurrentXP=[[GREEN]]\uD604\uC7AC XP
Scoreboard.Misc.RemainingXP=\uB0A8\uC740 XP
Scoreboard.Misc.Cooldown=[[LIGHT_PURPLE]]\uC7AC \uC0AC\uC6A9 \uB300\uAE30\uC2DC\uAC04
Scoreboard.Misc.Overall=[[GOLD]]\uC885\uD569
#DATABASE RECOVERY
Profile.Loading.Success=[[GREEN]]\uB2F9\uC2E0\uC758 mcMMO \uD504\uB85C\uD30C\uC77C\uC774 \uBD88\uB7EC\uC640\uC84C\uC2B5\uB2C8\uB2E4.
Profile.Loading.Failure=mcMMO\uB294 \uC5EC\uC804\uD788 \uB2F9\uC2E0\uC758 \uB370\uC774\uD130\uB97C \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2F9\uC2E0\uC740 \uC544\uB9C8\uB3C4 [[AQUA]]\uC11C\uBC84\uAD00\uB9AC\uC790\uC640 \uC5F0\uB77D[[RED]]\uD558\uAE30\uB97C \uC6D0\uD560 \uAC83\uC785\uB2C8\uB2E4.\n[[YELLOW]]\uB2F9\uC2E0\uC740 \uC5EC\uC804\uD788 \uC11C\uBC84\uC5D0\uC11C \uAC8C\uC784\uC911\uC774\uC9C0\uB9CC, \uB2F9\uC2E0\uC740 [[BOLD]]mcMMO \uB808\uBCA8\uC774 \uC5C6\uACE0[[YELLOW]] \uB2F9\uC2E0\uC774 \uC5BB\uC740 \uC5B4\uB290 XP\uB3C4 [[BOLD]]\uC800\uC7A5\uB418\uC9C0 \uC54A\uC744 \uAC81\uB2C8\uB2E4[[YELLOW]].
Profile.Loading.AdminFailureNotice=[[DARK_RED]][A][[RED]] mcMMO\uB294 [[YELLOW]]{0}[[RED]] \uD50C\uB808\uC774\uC5B4 \uB370\uC774\uD130 \uC77D\uAE30\uAC00 \uBD88\uAC00\uB2A5\uD569\uB2C8\uB2E4. [[LIGHT_PURPLE]]\uB2F9\uC2E0\uC758 \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uC124\uCE58\uB97C \uAC80\uC0AC\uD574\uC8FC\uC138\uC694.

View File

@@ -1,575 +0,0 @@
Acrobatics.Ability.Proc=[[GREEN]]**Mi\u0119kkie L\u0105dowanie**
Acrobatics.Combat.Proc=[[GREEN]]**Unikni\u0119to**
Acrobatics.DodgeChance=Szansa na Unik: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.Name=Przewr\u00f3t
Acrobatics.SubSkill.Roll.Description=Redukuje lub te\u017c ca\u0142kowicie usuwa obra\u017cenia od upadku
Acrobatics.SubSkill.GracefulRoll.Name=\u0141agodny Przewr\u00f3t
Acrobatics.SubSkill.GracefulRoll.Description=Dwukrotnie bardziej efektywne niz zwykly Przewrot
Acrobatics.SubSkill.Dodge.Name=Unik
Acrobatics.SubSkill.Dodge.Description=Redukuje obra\u017cenia o po\u0142owe
Acrobatics.Listener=Akrobatyka:
Acrobatics.SubSkill.Roll.Chance=Szansa na Przewr\u00f3t: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.GraceChance=Szansa na \u0141agodny Przewr\u00f3t: [[YELLOW]]{0}
Acrobatics.Roll.Text=**Przewr\u00f3t**
Acrobatics.SkillName=AKROBATYKA
Acrobatics.Skillup=Umiejetnosc akrobatyka wzrosla o {0}. Razem ({1})
Archery.Combat.DazeChance=Szansa na Oszolomienie: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=Szansa na Odzyskanie Strza\u0142: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=Dodatkowe Obra\u017cenia dla Umiej\u0119tno\u015bci: [[YELLOW]]{0}
Archery.SubSkill.SkillShot.Name=Umiej\u0119tno\u015b\u0107 Aktywna
Archery.SubSkill.SkillShot.Description=Zwi\u0119ksza obra\u017cenia zadane z \u0142uku
Archery.SubSkill.Daze.Name=Oszo\u0142omienie
Archery.SubSkill.Daze.Description=Oszalamia, straszy i zadaje {0} obrazen.
Archery.SubSkill.ArrowRetrieval.Name=Odzyskiwanie Strza\u0142
Archery.SubSkill.ArrowRetrieval.Description=Szansa na wyci\u0105gni\u0119cie strza\u0142 z martwego cia\u0142a
Archery.Listener=Lucznictwo
Archery.SkillName=LUCZNICTWO
Archery.Skillup=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=Szansa na Trafienie Krytyczne: [[YELLOW]]{0}
Axes.Combat.CriticalHit=TRAFIENIE KRYTYCZNE!
Axes.Combat.GI.Proc=[[GREEN]]**UDERZONO Z WIELK\u0104 MOC\u0104**
Axes.Combat.GI.Struck=TRAFIENIE KRYTYCZNE!
Axes.Combat.SS.Length=D\u0142ugo\u015bc \u0141amacza Czaszki: [[YELLOW]]{0}s
Axes.SubSkill.SkullSplitter.Name=\u0141amacz Czaszek
Axes.SubSkill.SkullSplitter.Description=Zadaje obra\u017cenia obszarowe
Axes.SubSkill.CriticalStrikes.Name=Krytyczne Uderzenia
Axes.SubSkill.CriticalStrikes.Description=Podwojne obrazania
Axes.SubSkill.AxeMastery.Name=Mistrzostwo pos\u0142ugiwania si\u0119 siekier\u0105
Axes.SubSkill.AxeMastery.Description=Dodaje bonus do obrazen
Axes.SubSkill.ArmorImpact.Name=Wstrz\u0105s od Zbroi
Axes.SubSkill.ArmorImpact.Description=Uderz z odpowiedni\u0105 si\u0142a aby przebi\u0107 zbroj\u0119
Axes.SubSkill.GreaterImpact.Name=Trafienie Krytyczne
Axes.SubSkill.GreaterImpact.Description=Zadaje dodatkowe obra\u017cenia nieopancerzonym celom
Axes.Listener=Siekiery:
Axes.SkillName=TOPORY
Axes.Skills.SS.Off=**\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=\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=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.SubSkill.GigaDrillBreaker.Name=Mia\u017cdz\u0105ce Wiert\u0142o
Excavation.SubSkill.GigaDrillBreaker.Description=3x Szansa na znalezienie przedmiotu, 3x mno\u017cnik zdobywania do\u015bwiadczenia, +pr\u0119dko\u015b\u0107
Excavation.SubSkill.TreasureHunter.Name=Lowca Skarbow
Excavation.SubSkill.TreasureHunter.Description=Umiej\u0119tno\u015b\u0107 wykopywania skarb\u00f3w.
Excavation.Effect.Length=D\u0142ugo\u015bc Mia\u017cdz\u0105cego Wiert\u0142a: [[YELLOW]]{0}s
Excavation.Listener=Wykopaliska:
Excavation.SkillName=KOPANIE
Excavation.Skills.GigaDrillBreaker.Off=**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=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=Umiej\u0119tno\u015b\u0107 wykopalisk wzros\u0142a o {0}. Razem({1})
Fishing.Ability.Chance=Szansa na zlapanie ryby: [[YELLOW]]{0}
Fishing.Ability.Info=Magiczny \u0141owca: [[GRAY]] **Ulepsza si\u0119 wraz z rang\u0105 Poszukiwacza Skarb\u00f3w**
Fishing.Ability.Locked.0=ZABLOKOWANY DO POZIOMU {0}+ SKILL
Fishing.Ability.Locked.1=DOSTEPNE OD POZIOMU {0}+ (LODOWE LOWIENIE RYB)
Fishing.Ability.Rank=Ranga lowienia skarbow: [[YELLOW]]{0}/5
Fishing.Ability.TH.MagicRate=Szanse na Magicznego \u0141owc\u0119: [[YELLOW]]{0}
Fishing.Ability.Shake=Szansa na Wstrz\u0105s: [[YELLOW]]{0}
Fishing.Ability.IceFishing=Lodowe lowienie ryb: Idz lowic ryby w lodzie
Fishing.Ability.FD=Dieta Rybaka: [[YELLOW]]Ranga {0}
Fishing.SubSkill.TreasureHunter.Name=Lowca Skarbow (Pasywna)
Fishing.SubSkill.TreasureHunter.Description=\u0141owi\u0107 r\u00f3\u017cne obiekty
Fishing.SubSkill.MagicHunter.Name=Magiczny Lowca
Fishing.SubSkill.MagicHunter.Description=Znajdowanie Zakletych Przedmiotow
Fishing.SubSkill.Shake.Name=Potrz\u0105\u015bni\u0119cie (przeciwko jednostkom)
Fishing.SubSkill.Shake.Description=Okradaj potwory z przedmiot\u00f3w u\u017cywaj\u0105c w\u0119dki.
Fishing.SubSkill.FishermansDiet.Name=Dieta Rybaka
Fishing.SubSkill.FishermansDiet.Description=Zwi\u0119ksza nasycenie posi\u0142k\u00f3w (ryby)
Fishing.SubSkill.MasterAngler.Description=Zwieksza szanse na zlapanie ryby na haczyk
Fishing.SubSkill.IceFishing.Name=Lodowe lowienie ryb
Fishing.SubSkill.IceFishing.Description=Pozwala na lowienie ryb w zimowych biomach
Fishing.Chance.Raining=[[BLUE]] Bonus od Deszczu
Fishing.Listener=Rybactwo
Fishing.Ability.TH.MagicFound=[[GRAY]]Wyczuwasz w pobli\u017cu \u017ar\u00f3d\u0142o magii...
Fishing.SkillName=RYBACTWO
Fishing.Skillup=Umiej\u0119tno\u015b\u0107 \u0142owienia wzros\u0142a o {0}. Razem ({1})
Herbalism.Ability.DoubleDropChance=Szansa na Podw\u00f3jny Drop: [[YELLOW]]{0}
Herbalism.Ability.FD=Dieta Farmera: [[YELLOW]]Poziom {0}
Herbalism.Ability.GTe.Length=D\u0142ugo\u015b\u0107 ?Green Terra?: [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=Potrzebujesz wi\u0119cej nasion aby u\u017cy\u0107 Zielonego \u017bycia.
Herbalism.Ability.GTh.Chance=Szansa na Zielony Palec: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=[[GREEN]]**ZIELONY PALEC SI\u0118 NIE UDA\u0141**
Herbalism.Ability.GTh.Stage=Etap Zielonego Dotyku: [[YELLOW]] Ro\u015bliny rosn\u0105 w etapie {0}
Herbalism.Ability.GTh=[[GREEN]]**ZIELONY PALEC**
Herbalism.Ability.HylianLuck=Szansa na Szczescie Hylian: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**CHOWASZ SWOJ\u0104 MOTYKE**
Herbalism.Ability.Ready=[[GREEN]]**PRZYGOTOWUJESZ MOTYKE**
Herbalism.SubSkill.GreenTerra.Name=Zielone \u017bycie (ZDOLNO\u015a\u0106)
Herbalism.SubSkill.GreenTerra.Description=Rozprzestrzenia \u017cycie na powierzchni, 3x wi\u0119ksza szansa na zdobycie przedmiot\u00f3w
Herbalism.SubSkill.GreenThumb.Name=Zielony palec (Pszenica)
Herbalism.SubSkill.GreenThumb.Description=Automatycznie zasadza ro\u015bliny podczas ich zbierania
Herbalism.SubSkill.GreenThumb.Description.2=Oplata ceg\u0142y zieleni\u0105, lub te\u017c wspomaga rozw\u00f3j trawy.
Herbalism.SubSkill.FarmersDiet.Name=Dieta Farmerska
Herbalism.SubSkill.FarmersDiet.Description=Zwi\u0119ksza nasycenie posi\u0142k\u00f3w
Herbalism.SubSkill.DoubleDrops.Name=Podw\u00f3jny Drop (Wszystkie Zielska)
Herbalism.SubSkill.DoubleDrops.Description=Podwaja ilo\u015b\u0107 zdobywanych przedmiot\u00f3w
Herbalism.SubSkill.HylianLuck.Name=Szczescie Hylian
Herbalism.SubSkill.HylianLuck.Description=Daje niewielka szanse na znalezienie rzadkich przedmiot\u00f3w
Herbalism.HylianLuck=[[GREEN]]Szczescie Hyrule jest dzisiaj z Toba!
Herbalism.Listener=Zielarstwo
Herbalism.SkillName=ZIELARSTWO
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=?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=Umiej\u0119tno\u015b\u0107 zielarstwa wzros\u0142a o {0}. Ca\u0142kowicie ({1})
Mining.Ability.Length=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.SubSkill.SuperBreaker.Name=Super \u0141amacz (ZDOLNO\u015a\u0106)
Mining.SubSkill.SuperBreaker.Description=Szybko\u015b\u0107+, Szansa potr\u00f3jnego dropa
Mining.SubSkill.DoubleDrops.Name=Podwojny Drop
Mining.SubSkill.DoubleDrops.Description=Podwaja ilo\u015b\u0107 zdobywanych przedmiot\u00f3w
Mining.SubSkill.BlastMining.Name=Szybki Kopacz
Mining.SubSkill.BlastMining.Description=Bonus do wydobycia z TNT
Mining.SubSkill.BiggerBombs.Name=Wieksze bomby
Mining.SubSkill.BiggerBombs.Description=Zwieksza zasieg wybuchu TNT
Mining.SubSkill.DemolitionsExpertise.Name=Mistrzostwo w pos\u0142ugiwaniu si\u0119 materia\u0142ami wybuchowymi
Mining.SubSkill.DemolitionsExpertise.Description=Zmniejsza obrazenia od explozji TNT
Mining.Effect.Decrease=Redukcja Obra\u017ce\u0144 od Materia\u0142\u00f3w Wybuchowych: [[YELLOW]]{0}
Mining.Effect.DropChance=Szansa na Podw\u00f3jny Drop: [[YELLOW]]{0}
Mining.Listener=G\u00f3rnictwo
Mining.SkillName=GORNICTWO
Mining.Skills.SuperBreaker.Off=**Super \u0141amacz si\u0119 sko\u0144czy\u0142**
Mining.Skills.SuperBreaker.On=[[GREEN]]**SUPER \u0141AMACZ AKTYWOWANY**
Mining.Skills.SuperBreaker.Other.Off=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=Umiejetnosc Gornictwa wzrosla o {0}. Calkowicie ({1})
Mining.Blast.Boom=[[GRAY]]**BOOM**
Mining.Blast.Radius.Increase=Zasi\u0119g zwi\u0119kszony o: [[YELLOW]]+{0}
Mining.Blast.Rank=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.SubSkill.Repair.Name=Naprawa
Repair.SubSkill.Repair.Description=Naprawa Narz\u0119dzi i Pancerza
Repair.SubSkill.GoldRepair.Name=Naprawa Z\u0142ota ({0}+ SKILL)
Repair.SubSkill.GoldRepair.Description=Naprawa Z\u0142otych Narz\u0119dzi i Pancerza
Repair.SubSkill.IronRepair.Name=Naprawa \u017belaza ({0}+ SKILL)
Repair.SubSkill.IronRepair.Description=Naprawa \u017belaznych Narz\u0119dzi i Pancerza
Repair.SubSkill.StoneRepair.Name=Naprawa Kamienia ({0}+ SKILL)
Repair.SubSkill.StoneRepair.Description=Naprawa Kamiennych Narz\u0119dzi
Repair.SubSkill.RepairMastery.Name=Mistrzostwo napraw
Repair.SubSkill.RepairMastery.Description=Zwi\u0119kszono ilo\u015b\u0107 napraw
Repair.SubSkill.SuperRepair.Name=Super Naprawa
Repair.SubSkill.SuperRepair.Description=Podw\u00f3jnia efektywno\u015b\u0107
Repair.SubSkill.DiamondRepair.Name=Naprawa Diamentu ({0}+ SKILL)
Repair.SubSkill.DiamondRepair.Description=Naprawa diamentowych narzedzi i pancerza
Repair.SubSkill.ArcaneForging.Name=Kowalstwo Ezoteryczne
Repair.SubSkill.ArcaneForging.Description=Naprawa rzeczy magicznych
Repair.SubSkill.Salvage.Name=Odzyskiwanie ({0}+ SKILL)
Repair.SubSkill.Salvage.Description=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.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=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=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=Szansa Super Naprawy: [[YELLOW]]{0}
Repair.Skillup=Umiejetnosc naprawiania wzrosla o {0}. Razem ({1})
Repair.Pretty.Name=Naprawa
Salvage.Pretty.Name=Przetapianie
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=Energia magiczna tego przedmiotu spad\u0142a.
Repair.Arcane.Fail=Moc Arcane na zawsze opuscila przedmiot !
Repair.Arcane.Lost=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=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=Szansa na Krwawienie: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=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=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.SubSkill.CounterAttack.Name=Kontratak
Swords.SubSkill.SerratedStrikes.Name=Z\u0105bkowany Atak (ZDOLNO\u015a\u0106)
Swords.SubSkill.SerratedStrikes.Description={0} obrazen obszarowych, Krawienie+ obszarowo
Swords.Effect.4=Z\u0105bkowany Atak spowodowa\u0142 krwawienie
Swords.Effect.5={0} Czas miedzy krawieniem
Swords.SubSkill.Bleed.Name=Krwawienie
Swords.SubSkill.Bleed.Description=Spowodowano krwawienie
Swords.Listener=Miecze
Swords.SkillName=MIECZE
Swords.Skills.SS.Off=**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=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=Umiej\u0119tno\u015b\u0107 Pos\u0142ugiwania si\u0119 Mieczem wzros\u0142a o {0}. Ca\u0142kowicie ({1})
Swords.SS.Length=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.3=1/{0} Obrazenia, Odpornosc na ogien
Taming.Ability.Bonus.4=Odporno\u015b\u0107 na wstrz\u0105sy
Taming.Ability.Bonus.5=Eksplozje powoduja 1/{0} typowych obrazen
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.Bonus.11=Odzyskuj zdrowie podczas otrzymania obrazen od magii czy trucizny
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=Szansa na Brutalno\u015b\u0107: [[YELLOW]]{0}
Taming.SubSkill.BeastLore.Name=Wiedza o zwierz\u0119tach
Taming.SubSkill.BeastLore.Description=Ko\u015b\u0107 - przyci\u0105ga uwag\u0119 wilk\u00f3w i ocelot\u00f3w
Taming.SubSkill.ShockProof.Name=Odporno\u015b\u0107 na wstrz\u0105sy
Taming.SubSkill.ShockProof.Description=Redukcja obra\u017ce\u0144 wybuchowych
Taming.SubSkill.CallOfTheWild.Name=Wezwanie Dzikich
Taming.SubSkill.CallOfTheWild.Description=Przywo\u0142uje zwierze po twojej stronie
Taming.SubSkill.CallOfTheWild.Description.2=[[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.SubSkill.FastFoodService.Name=Serwis FastFood\'u
Taming.SubSkill.FastFoodService.Description=Szansa dla wilk\u00f3w na odnowienie \u017cycia przy ataku
Taming.SubSkill.Gore.Name=Brutalno\u015b\u0107
Taming.SubSkill.Gore.Description=Cios krytyczny kt\u00f3ry wywo\u0142uje krwawienie
Taming.SubSkill.SharpenedClaws.Name=Zaostrzone Pazury
Taming.SubSkill.SharpenedClaws.Description=Dodatkowe Obra\u017cenia
Taming.SubSkill.EnvironmentallyAware.Name=Przyjazne dla \u015brodowiska
Taming.SubSkill.EnvironmentallyAware.Description=Strach przed Kaktusami/Law\u0105, Odporno\u015b\u0107 obra\u017cenia ze spadania
Taming.SubSkill.ThickFur.Name=Grube Futro
Taming.SubSkill.ThickFur.Description=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.SkillName=OSWAJANIE
Taming.Skillup=Umiej\u0119tno\u015b\u0107 oswajania wzros\u0142a o {0}. Razem ({1})
Taming.Summon.Complete=[[GREEN]]Przywo\u0142ywanie uko\u0144czone
Taming.Summon.Fail.Ocelot=Obecnie masz przy sobie zbyt du\u017co ocelot\u00f3w aby przywo\u0142a\u0107 kolejnego.
Taming.Summon.Fail.Wolf=Obecnie masz przy sobie zbyt du\u017co wilk\u00f3w aby przywo\u0142a\u0107 kolejnego.
Unarmed.Ability.Berserk.Length=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=Szansa na Odbicie Strza\u0142y: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=Szansa na Rozbrojenie: [[YELLOW]]{0}
Unarmed.Ability.Chance.IronGrip=Szansa za Zelazny Chwyt: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=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.SubSkill.Berserk.Name=Berserk (Zdolnosc)
Unarmed.SubSkill.Berserk.Description=+50% DMG, Niszczy slabe materialy
Unarmed.SubSkill.Disarm.Name=Rozbrojenie
Unarmed.SubSkill.Disarm.Description=Rozbraja przeciwnika z przedmiotu trzymanego przez niego w r\u0119ku
Unarmed.SubSkill.IronArmStyle.Name=Styl zelaznego ramienia
Unarmed.SubSkill.IronArmStyle.Description=Wzmacnia twoj\u0105 d\u0142o\u0144 w czasie
Unarmed.SubSkill.ArrowDeflect.Name=Odbicie strzaly
Unarmed.SubSkill.ArrowDeflect.Description=Odbijanie strzal
Unarmed.SubSkill.IronGrip.Name=Zelazny Chwyt
Unarmed.SubSkill.IronGrip.Description=Zapobiega przed Twoim rozbrojeniem
Unarmed.Listener=NIEUZBROJONY
Unarmed.SkillName=NIEUZBROJONY
Unarmed.Skills.Berserk.Off=**Berserk si\u0119 sko\u0144czy\u0142**
Unarmed.Skills.Berserk.On=[[GREEN]]**BERSERK AKTYWOWANY**
Unarmed.Skills.Berserk.Other.Off=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=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=Szansa na Dwukrotny Drop: [[YELLOW]]{0}
Woodcutting.Ability.Length=D\u0142ugo\u015bc Powalacza Drzew: [[YELLOW]]{0}s
Woodcutting.Ability.Locked.0=ZABLOKOWANY DO POZIOMU {0}+ SKILL
Woodcutting.SubSkill.TreeFeller.Name=Powalacz Drzew
Woodcutting.SubSkill.TreeFeller.Description=Sprawia, i\u017c drzewa eksploduj\u0105
Woodcutting.SubSkill.LeafBlower.Name=Dmucharka do li\u015bci
Woodcutting.SubSkill.LeafBlower.Description=Zdmuchuje li\u015bcie
Woodcutting.SubSkill.HarvestLumber.Name=Podwojny Drop
Woodcutting.SubSkill.HarvestLumber.Description=Podwaja ilo\u015b\u0107 zdobywanych przedmiot\u00f3w
Woodcutting.Listener=\u015aCINANIE DRZEW
Woodcutting.SkillName=\u015aCINANIE DRZEW
Woodcutting.Skills.TreeFeller.Off=**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=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=TWOJA SIEKIERA ROZPAD\u0141A SI\u0118 NA DRZAZGI!
Woodcutting.Skills.TreeFeller.Threshold=To drzewo jest zbyt du\u017ce!
Woodcutting.Skillup=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=[[GOLD]]{0}: [[DARK_AQUA]]{1}
Combat.ArrowDeflect=[[WHITE]]**ODBICIE STRZALY**
Combat.BeastLore=[[GREEN]]**WIEDZA O ZWIERZETACH**
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=**WYKRWAWIASZ SI\u0118**
Combat.TargetDazed=Cel zostal [[DARK_RED]]oszolomiony.
Combat.TouchedFuzzy=[[DARK_RED]]Zostales oszolomiony.
mcMMO.Description=[[DARK_AQUA]]O [[YELLOW]]mcMMO[[DARK_AQUA]] Project:,[[GOLD]]mcMMO jest [[RED]]open source[[GOLD]] modem RPG stworzonym w lutym 2011 r.,[[GOLD]]przez [[BLUE]]com.gmail.nossr50[[GOLD]]. Celem jest wprowadzenie doswiadczen RPG.,[[DARK_AQUA]]Porady:,[[GOLD]] - [[GREEN]]Uzywaj [[RED]]/mcmmo help[[GREEN]] by zobaczyc komendy,[[GOLD]] - [[GREEN]]Pisz [[RED]]/NAZWA_UMIEJETNOSCI[[GREEN]] by zobaczyc informacje na jej temat,[[DARK_AQUA]]Programisci:,[[GOLD]] - [[GREEN]]com.gmail.nossr50 [[BLUE]](Zalozyciel),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Manager projektu),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](Developer),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](Developer),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](Developer),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](Developer),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](Developer),[[DARK_AQUA]]Przydatne linki:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] Zglaszanie bled\u00f3w,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,
Commands.addlevels.AwardAll.1=[[GREEN]]Otrzyma\u0142e\u015b {0} poziom\u00f3w we wszystkich dziedzinach!
Commands.addlevels.AwardAll.2=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={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=- Wlacza/wylacza czat adminow
Commands.Chat.Console=\"Konsola\"
Commands.Disabled=Komenda ta jest wylaczona.
Commands.DoesNotExist=Nie ma takiego gracza!
Commands.GodMode.Disabled=Nie\u015bmiertelno\u015b\u0107 wy\u0142\u0105czona
Commands.GodMode.Enabled=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.Party.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.mcc.Header=---[][[YELLOW]]mcMMO Komendy[[RED]][]---
Commands.mcgod=- W\u0142\u0105cza/Wy\u0142\u0105cza Nie\u015bmiertelno\u015b\u0107
Commands.mchud.Invalid=Nie ma takiego Typu Interfejsu.
Commands.mcpurge.Success=[[GREEN]]Baza danych zosta\u0142a wyczyszczona!
Commands.mcrank.Heading=[[GOLD]]-=OSOBISTE RANKINGI=-
Commands.mcrank.Overall=Og\u00f3lne Statystyki[[GREEN]] - [[GOLD]]Ranga [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=CEL: [[WHITE]]{0}
Commands.mcrank.Skill={0}[[GREEN]] - [[GOLD]]Ranga [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]Bez Rangi
Commands.mcrefresh.Success=Umiejetnosci [[RED]]{0} zostaly odnowione.
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={0} zosta\u0142 zmieniony na {1}.
Commands.ModDescription=- Przeczytaj opis
Commands.NoConsole=Konsola nie obs\u0142uguje tej komendy.
Commands.Notifications.Off=Informacje na temat umiejetnosci [[RED]]wylaczone
Commands.Notifications.On=Informacje na temat umiejetnosci [[GREEN]]wlaczone
Commands.Other=[[GREEN]]--POZOSTA\u0141E KOMENDY--
Commands.Party.Header=-----[][[GREEN]]DRUZYNA[[RED]][]-----
Commands.Party.ShareMode=[[DARK_GRAY]]TRYB DZIELENIA SIE:
Commands.Party.ItemShare=[[GRAY]]PRZEDMIOT [[DARK_AQUA]]({0})
Commands.Party.ExpShare=[[GRAY]]EXP [[DARK_AQUA]]({0})
Commands.Party.MembersNear=[[DARK_GRAY]]OBOK CIEBIE [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
Commands.Party.Accept=- 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.Commands=[[GREEN]]--KOMENDY DLA DRU\u017bYN--
Commands.Party.Invite.0=ALERT: [[GREEN]]Otrzyma\u0142e\u015b zaproszenie do dru\u017cyny {0} od {1}
Commands.Party.Invite.1=Wpisz [[GREEN]]/party accept[[YELLOW]] by akceptowac zaproszenie
Commands.Party.Invite=- Wysyla zaproszenie do druzyny
Commands.Party.Join=[[GRAY]]Dolaczono do druzyny: {0}
Commands.Party.Create=[[GRAY]]Utworzono druzyne: {0}
Commands.Party.Rename=[[GRAY]]Nazwa druzyny zmieniona na: [[WHITE]]{0}
Commands.Party.SetSharing=[[GRAY]]Druzyny {0} dzielenie sie przedmiotami ustawiono na: [[DARK_AQUA]]{1}
Commands.Party.AlreadyExists=[[DARK_RED]]Druzyna {0} juz istnieje!
Commands.Party.Kick=Zosta\u0142e\u015b wyrzucony z dru\u017cyny {0}!
Commands.Party.Leave=Opu\u015bci\u0142e\u015b dru\u017cyn\u0119.
Commands.Party.Members.Header=-----[][[GREEN]]CZLONKOWIE[[RED]][]-----
Commands.Party.None=Nie jestes w druzynie.
Commands.Party.Quit=- Opuszcza obecn\u0105 dru\u017cyne
Commands.Party.Teleport=<player> [[RED]]- Teleportacja do czlonka grupy.
Commands.Party.Toggle=- W\u0142\u0105cza/Wy\u0142\u0105cza czat dla dru\u017cyn
Commands.Party.1=- Tworzy nowa druzyne
Commands.Party.2=- Dolacza do druzyny gracza
Commands.ptp.Enabled=Teleportacja druzynowa [[GREEN]]aktywna
Commands.ptp.Disabled=Teleportacja druzynowa [[RED]]wylaczona
Commands.ptp.NoRequests=Nie masz zadnych zadan teleportacji w tym momencie
Commands.ptp.NoWorldPermissions=[mcMMO] Nie masz uprawnien do teleportacji do swiata {0}.
Commands.ptp.Request1={0} [[GREEN]]chce sie steleportowac do Ciebie.
Commands.ptp.Request2=[[GREEN]]By sie steleportowac, wpisz [[YELLOW]]/ptp accept. [[GREEN]]Zadanie wygasa po [[RED]]{0} [[GREEN]]sekundach.
Commands.ptp.AcceptAny.Disabled=Potwierdzenie zadania teleportacji druzynowej [[RED]]wylaczone
Commands.ptp.RequestExpired=Zadanie druzynowego teleportu wygaslo!
Commands.PowerLevel.Leaderboard=--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=Resetuje poziom umiej\u0119tno\u015bci do 0
Commands.Skill.Invalid=Nie ma takiej umiej\u0119tno\u015bci!
Commands.Skill.Leaderboard=--mcMMO [[BLUE]]{0}[[YELLOW]] Ranking--
Commands.SkillInfo=- Zobacz szczeg\u00f3lowe informacje na temat tej umiejetnosci
Commands.Stats.Self=TWOJE STATYSTYKI
Commands.Stats=- Zobacz swoje statystyki
Commands.ToggleAbility=- W\u0142\u0105cza/Wy\u0142\u0105cza zdolno\u015b\u0107 PPM
Commands.Usage.1=W\u0142a\u015bciwa komenda to /{0} {1}
Commands.Usage.2=W\u0142a\u015bciwa komenda to /{0} {1} {2}
Commands.Usage.3=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.Password=haslo
Commands.Usage.Player=gracz
Commands.Usage.Skill=zdolno\u015b\u0107
Commands.Usage.XP=xp
mcMMO.NoInvites=Nie masz zadnych zaproszen
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.Help.9=Uzyj [[DARK_AQUA]]{0} [[RED]]by dzielic sie przedmiotami z czlonkami druzyny
Party.Help.10=Uzyj [[DARK_AQUA]]{0} [[RED]]by aktywowac dzielenie sie XP z czlonkami druzyny
Party.InformedOnJoin={0} [[GREEN]]dolaczyl do Twojej druzyny
Party.InformedOnQuit={0} [[GREEN]]opuscil Twoja druzyne
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]zmienil nazwe druzyny na [[WHITE]]{1}
Party.InvalidName=[[DARK_RED]]Nie istnieje dru\u017cyna o takiej nazwie!
Party.Invite.Self=Nie mozesz zaprosic siebie samego!
Party.IsLocked=Ta grupa jest juz zamknieta!
Party.IsntLocked=Ta grupa nie jest zamkni\u0119ta!
Party.Locked=Grupa jest zamknieta, tylko wlasciciel moze dodac graczy.
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=Has\u0142o grupy nieprawid\u0142owe.
Party.Password.Set=[[GREEN]]Haslo grupy zmienione na: {0}
Party.Password.Removed=[[GREEN]]Haslo druzyny zostalo wyczyszczone.
Party.Player.Invalid=Nie ma takiego gracza.
Party.NotOnline=[[DARK_RED]]{0} jest offline!
Party.Player.InSameParty={0} juz jest w Twojej druzynie!
Party.PlayerNotInParty=[[DARK_RED]]{0} nie jest w druzynie
Party.Teleport.Dead=Nie mo\u017cesz si\u0119 teleportowa\u0107 do zmar\u0142ego gracza.
Party.Teleport.Hurt=Zostales ranny przed {0} sekundami i nie mozesz sie steleportowac.
Party.Teleport.Player=[[GREEN]]Teleportowa\u0142e\u015b si\u0119 do {0}.
Party.Teleport.Self=Nie mo\u017cesz teleportowa\u0107 si\u0119 do samego siebie!
Party.Teleport.Target=[[GREEN]]{0} teleportowa\u0142 si\u0119 do Ciebie.
Party.Teleport.Disabled={0} nie zezwala na teleportacje druzynowa.
Party.Rename.Same=Taka juz jest wlasnie nazwa Twojej druzyny!
Party.Join.Self=Nie mozesz dolaczyc do samego siebie!
Party.Unlocked=[[GRAY]]Grupa jest otwarta dla wszystkich.
Party.Disband=[[GRAY]]Druzyna zostala rozwiazana
Party.Status.Locked=[[DARK_RED]](TYLKO NA ZAPROSZENIE)
Party.ShareType.Xp=EXP
Party.ShareType.Item=PRZEDMIOTOWY
Party.ShareMode.Equal=R\u00d3WNY
Party.ShareMode.Random=LOSOWY
Party.ItemShare.Disabled=Druzynowe dzielenie sie przedmiotami jest wylaczone.
Party.ItemShare.Category.Loot=Loot
Party.ItemShare.Category.Mining=G\u00f3rnictwo
Party.ItemShare.Category.Herbalism=Zielarstwo
Party.ItemShare.Category.Woodcutting=Scinanie drzew
Party.ItemShare.Category.Misc=R\u00f3zne
Commands.XPGain.Acrobatics=Upadanie
Commands.XPGain.Archery=Atak potworow
Commands.XPGain.Axes=Atak potworow
Commands.XPGain.Child=Podnosi poziomy z nadrzednych umiejetnosci
Commands.XPGain.Excavation=Kopanie i odnajdywanie skarb\u00f3w
Commands.XPGain.Fishing=Rybactwo
Commands.XPGain.Herbalism=Zbieranie Zi\u00f3\u0142
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]]Tw\u00f3j pasek XP\'a jest zablokowany {0}!
Commands.xplock.unlocked=[[GOLD]]Tw\u00f3j pasek XP\'a jest odblokowany {0}!
Commands.xprate.modified=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=Aby zmieni\u0107 mno\u017cnik XP - /xprate <mno\u017cnik> <true/false>
Commands.xprate.proper.1=Aby przywr\u00f3ci\u0107 normalny mno\u017cnik zdobywania XP\'a - /xprate reset
Commands.xprate.proper.2=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.Child=[[DARK_GRAY]]LVL: [[GREEN]]{0}
Effects.Level=[[DARK_GRAY]]Poziom: [[GREEN]]{0} [[DARK_AQUA]]Doswiadczenie[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])
Effects.Parent=[[GOLD]]{0} -
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
Guides.Available=[[GRAY]]Przewodnik dla {0} jest dost\u0119pny - wpisz /{1} ? [strona]
Guides.Header=[[GOLD]]-=[[GREEN]]{0} Przewodnik[[GOLD]]=-
Guides.Page.Invalid=Niew\u0142a\u015bciwa strona!
Guides.Page.OutOfRange=Ta strona nie istnieje, jest tylko {0} stron.
Guides.Usage=W\u0142a\u015bciwa Komenda to /{0} ? [strona]
Guides.Smelting.Section.0=Wkrotce...
Inspect.Offline=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=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.ChimaeraWing.Name=Skrzydlo Chimery
Item.ChimaeraWing.Lore=[[GRAY]]Teleportuje Cie do Twojego l\u00f3zka.
Item.Generic.Wait=Musisz poczekac, nim bedziesz m\u00f3gl uzyc tego ponownie! [[YELLOW]]({0}s)
Item.Injured.Wait=Zosta\u0142e\u015b ostatnio ranny i musisz poczeka\u0107 aby tego u\u017cy\u0107. [[YELLOW]]({0}s)
Teleport.Commencing=[[GRAY]]Teleportacja za [[GOLD]]({0}) [[GRAY]]sekund, nie ruszaj sie...
Teleport.Cancelled=[[DARK_RED]]Teleportacja anulowana!
Skills.Disarmed=[[DARK_RED]]Zostales rozbrojony!
Skills.Header=-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]Potrzebujesz wiecej
Skills.Stats={0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.TooTired=Musisz odpoczac zanim ponownie uzyjesz tej umiejetnosci.
Skills.ConfirmOrCancel=[[GREEN]]Prawy-klik ponownie by potwierdzic [[GOLD]]{0}[[GREEN]]. Lewy-klik by anulowac.
Stats.Header.Combat=[[GOLD]]-=UMIEJ\u0118TNO\u015aCI BOJOWE=-
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)
MOTD.Donate=[[DARK_AQUA]]Informacje o Dotacji:
MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Kara za \u015amier\u0107: [[DARK_RED]]{0}%
MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Statystyki Wampirycznych Pijawek: [[DARK_RED]]{0}%
MOTD.PerksPrefix=[mcMMO Zdolno\u015bci]
MOTD.Version=[[GOLD]][mcMMO] Obecna Wersja [[DARK_AQUA]]{0}
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - Strona mcMMO
Smelting.Ability.FuelEfficiency=Mnoznik wydajnosci paliwa: [[YELLOW]]{0}x
Smelting.Ability.Locked.0=DOSTEPNE OD POZIOMU {0}+ (VANILLA XP BOOST)
Smelting.Ability.Locked.1=DOSTEPNE OD POZIOMU {0}+ (FLUX MINING)
Smelting.Ability.SecondSmelt=Szansa na drugie przetopienie: [[YELLOW]]{0}
Smelting.Ability.VanillaXPBoost=Vanilla mnoznik XP: [[YELLOW]]{0}x
Smelting.SubSkill.FuelEfficiency.Name=Wydajnosc paliwa
Smelting.SubSkill.FuelEfficiency.Description=Zwieksza czas spalania sie paliwa w piecu podczas przetapiania
Smelting.SubSkill.SecondSmelt.Name=Drugie przetopienie
Smelting.SubSkill.SecondSmelt.Description=Podwaja zasoby zdobyte z przetapiania
Smelting.Effect.4=Vanilla XP Boost
Smelting.Effect.5=Zwieksza XP zdobywane poprzez przetapianie
Smelting.SubSkill.FluxMining.Description=Szansa dla zl\u00f3z by zostaly natychmiastowo przetopione podczas wykopywania
Smelting.FluxMining.Success=[[GREEN]]Zloze przetopilo sie samoistnie!
Smelting.Listener=Przetapianie:
Smelting.SkillName=PRZETAPIANIE
Commands.Description.adminchat=Wlacza/wylacza czat admin\u00f3w lub wysyla wiadomosc na czat admin\u00f3w
Commands.Description.mcnotify=Wlacza/wylacza informacje na temat umiejetnosci mcMMO na czacie
Commands.Description.vampirism=Zmodyfikuj wartosc procentowa na aktywowanie wampiryzmu mcMMO lub go wlacz/wylacz
UpdateChecker.Outdated=Uzywasz przestarzalej wersji mcMMO!
UpdateChecker.NewAvailable=Dostepna jest nowa wersja na BukkitDev.

View File

@@ -1,799 +0,0 @@
Acrobatics.Ability.Proc=[[GREEN]]**\u534e\u5c14\u5179\u822c\u7684\u964d\u843d**
Acrobatics.Combat.Proc=[[GREEN]]**\u95ea\u907f**
Acrobatics.DodgeChance=\u95ea\u907f\u51e0\u7387: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.Name=\u7ffb\u6eda
Acrobatics.SubSkill.Roll.Description=\u51cf\u5c11\u6216\u8005\u53d6\u6d88\u6389\u843d\u4f24\u5bb3
Acrobatics.SubSkill.GracefulRoll.Name=\u4f18\u96c5\u7684\u7ffb\u6eda
Acrobatics.SubSkill.GracefulRoll.Description=\u4e24\u500d\u7684\u7ffb\u6eda\u6548\u679c
Acrobatics.SubSkill.Dodge.Name=\u95ea\u907f
Acrobatics.SubSkill.Dodge.Description=\u51cf\u5c11\u4e00\u534a\u7684\u4f24\u5bb3
Acrobatics.Listener=\u6742\u6280(Acrobatics):
Acrobatics.SubSkill.Roll.Chance=\u7ffb\u6eda\u51e0\u7387: [[YELLOW]]{0}
Acrobatics.SubSkill.Roll.GraceChance=\u4f18\u96c5\u7684\u7ffb\u6eda\u51e0\u7387: [[YELLOW]]{0}
Acrobatics.Roll.Text=**\u7ffb\u6eda**
Acrobatics.SkillName=\u6742\u6280
Acrobatics.Skillup=\u6742\u6280\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u7b49\u7ea7 ({1})
Alchemy.SubSkill.Catalysis.Name=\u50ac\u5316
Alchemy.SubSkill.Catalysis.Description=\u63d0\u5347\u836f\u6c34\u917f\u9020\u901f\u5ea6
Alchemy.SubSkill.Concoctions.Name=\u6df7\u5408
Alchemy.SubSkill.Concoctions.Description=\u917f\u9020\u5e26\u6709\u591a\u91cd\u539f\u6599\u7684\u836f\u6c34
Alchemy.Listener=\u70bc\u91d1(Alchemy):
Alchemy.Ability.Locked.0=\u9501\u5b9a\u72b6\u6001,\u76f4\u5230 {0}+ \u6280\u80fd\uff08\u50ac\u5316\uff09
Alchemy.Catalysis.Speed=\u917f\u9020\u901f\u5ea6: [[YELLOW]]{0}
Alchemy.Concoctions.Rank=\u6df7\u5408\u7b49\u7ea7: [[YELLOW]]{0}/{1}
Alchemy.Concoctions.Ingredients=\u914d\u65b9 [[[YELLOW]]{0}[[RED]]]: [[YELLOW]]{1}
Alchemy.SkillName=\u70bc\u91d1
Alchemy.Skillup=\u70bc\u91d1\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u7b49\u7ea7 ({1})
Archery.Combat.DazeChance=\u51fb\u6655\u51e0\u7387: [[YELLOW]]{0}
Archery.Combat.RetrieveChance=\u56de\u6536\u7bad\u77e2\u7684\u51e0\u7387: [[YELLOW]]{0}
Archery.Combat.SkillshotBonus=\u6280\u5de7\u5c04\u51fb\u5956\u52b1\u4f24\u5bb3: [[YELLOW]]{0}
Archery.SubSkill.SkillShot.Name=\u6280\u5de7\u5c04\u51fb
Archery.SubSkill.SkillShot.Description=\u589e\u52a0\u5f13\u7bad\u4f24\u5bb3
Archery.SubSkill.Daze.Name=\u51fb\u6655 (\u9650\u73a9\u5bb6\u4e4b\u95f4)
Archery.SubSkill.Daze.Description=\u8ff7\u60d1\u654c\u4eba\u5e76\u9020\u6210 {0} \u4f24\u5bb3
Archery.SubSkill.ArrowRetrieval.Name=\u56de\u6536\u5f13\u7bad
Archery.SubSkill.ArrowRetrieval.Description=\u6709\u51e0\u7387\u4ece\u5c38\u4f53\u4e0a\u56de\u6536\u7bad\u77e2
Archery.Listener=\u7bad\u672f(Archery):
Archery.SkillName=\u7bad\u672f
Archery.Skillup=\u7bad\u672f\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u7b49\u7ea7 ({1})
Axes.Ability.Bonus.0=\u65a7\u5934\u7cbe\u901a
Axes.Ability.Bonus.1=\u5956\u52b1 {0} \u4f24\u5bb3
Axes.Ability.Bonus.2=\u51b2\u51fb
Axes.Ability.Bonus.3=\u5bf9\u6709\u62a4\u7532\u654c\u4eba\u9020\u6210 {0} \u70b9\u989d\u5916\u4f24\u5bb3
Axes.Ability.Bonus.4=\u5f3a\u70c8\u51b2\u51fb
Axes.Ability.Bonus.5=\u5bf9\u65e0\u62a4\u7532\u654c\u4eba\u9020\u6210 {0} \u70b9\u989d\u5916\u4f24\u5bb3
Axes.Ability.Lower=[[GRAY]]**\u4f60\u6536\u8d77\u4e86\u4f60\u7684\u65a7\u5934**
Axes.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7d27\u4e86\u4f60\u7684\u65a7\u5934**
Axes.Combat.CritStruck=[[DARK_RED]]\u4f60\u6253\u51fa\u4e86\u66b4\u51fb!
Axes.Combat.CritChance=\u81f4\u547d\u4e00\u51fb: [[YELLOW]]{0}%
Axes.Combat.CriticalHit=\u66b4\u51fb!
Axes.Combat.GI.Proc=[[GREEN]]**\u5de8\u529b\u6253\u51fb**
Axes.Combat.GI.Struck=**\u88ab\u5f3a\u70c8\u51b2\u51fb\u51fb\u4e2d**
Axes.Combat.SS.Struck=[[DARK_RED]]\u88ab\u65a9\u9996\u8005\u6280\u80fd\u653b\u51fb!
Axes.Combat.SS.Length=\u65a9\u9996\u8005\u6280\u80fd\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0}s
Axes.SubSkill.SkullSplitter.Name=\u65a9\u9996\u8005 (\u4e3b\u52a8\u6280\u80fd)
Axes.SubSkill.SkullSplitter.Description=\u9020\u6210\u8303\u56f4\u4f24\u5bb3
Axes.SubSkill.CriticalStrikes.Name=\u81f4\u547d\u4e00\u51fb
Axes.SubSkill.CriticalStrikes.Description=\u53cc\u500d\u4f24\u5bb3
Axes.SubSkill.AxeMastery.Name=\u65a7\u5934\u7cbe\u901a
Axes.SubSkill.AxeMastery.Description=\u589e\u52a0\u989d\u5916\u4f24\u5bb3
Axes.SubSkill.ArmorImpact.Name=\u51b2\u51fb
Axes.SubSkill.ArmorImpact.Description=\u7528\u8db3\u591f\u7684\u529b\u91cf\u51fb\u788e\u62a4\u7532
Axes.SubSkill.GreaterImpact.Name=\u5f3a\u70c8\u51b2\u51fb
Axes.SubSkill.GreaterImpact.Description=\u5bf9\u65e0\u62a4\u7532\u654c\u4eba\u9020\u6210\u989d\u5916\u4f24\u5bb3
Axes.Listener=\u65a7\u6280(Axes):
Axes.SkillName=\u65a7\u6280
Axes.Skills.SS.Off=**\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
Axes.Skills.SS.Other.Off=\u65a9\u9996\u8005[[GREEN]] \u5df2\u7ecf\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]]\u4f7f\u7528\u4e86 [[RED]]\u65a9\u9996\u8005!
Axes.Skillup=\u65a7\u5934\u6280\u80fd\u589e\u52a0\u4e86 {0}. \u603b\u5171 ({1})
Excavation.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u94f2\u5b50**
Excavation.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7d27\u4e86\u4f60\u7684\u94f2\u5b50**
Excavation.SubSkill.GigaDrillBreaker.Name=\u66b4\u8d70\u94bb\u5934 (\u4e3b\u52a8\u6280\u80fd)
Excavation.SubSkill.GigaDrillBreaker.Description=3x \u6389\u843d\u7387, 3x \u7ecf\u9a8c\u503c, +\u901f\u5ea6
Excavation.SubSkill.TreasureHunter.Name=\u5b9d\u7269\u730e\u4eba
Excavation.SubSkill.TreasureHunter.Description=\u6316\u51fa\u5b9d\u85cf\u7684\u80fd\u529b
Excavation.Effect.Length=\u66b4\u8d70\u94bb\u5934\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0}s
Excavation.Listener=\u6316\u6398(Excavation):
Excavation.SkillName=\u6316\u6398
Excavation.Skills.GigaDrillBreaker.Off=**\u66b4\u8d70\u94bb\u5934\u5df2\u7ecf\u7ed3\u675f\u4e86**
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**\u66b4\u8d70\u94bb\u5934\u6fc0\u6d3b**
Excavation.Skills.GigaDrillBreaker.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u66b4\u8d70\u94bb\u5934 [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u4f7f\u7528\u4e86!
Excavation.Skills.GigaDrillBreaker.Other.Off=\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=\u6316\u6398\u6280\u80fd\u63d0\u5347 {0}. \u603b\u5171 ({1})
Fishing.Ability.Chance=\u6495\u54ac\u51e0\u7387: [[YELLOW]]{0}
Fishing.Ability.Info=\u9b54\u6cd5\u730e\u4eba: [[GRAY]] ** \u968f\u7740\u5b9d\u85cf\u730e\u4eba\u7b49\u7ea7\u63d0\u9ad8 **
Fishing.Ability.Locked.0=\u9501\u5b9a\u72b6\u6001,\u76f4\u5230 {0}+ \u6280\u80fd\uff08\u6447\uff09
Fishing.Ability.Locked.1={0}+ \u7ea7\u540e\u89e3\u9501 (\u51b0\u9493)
Fishing.Ability.Locked.2=\u9501\u5b9a\u72b6\u6001,\u76f4\u5230 {0}+ \u6280\u80fd (\u9493\u9c7c\u5927\u5e08)
Fishing.Ability.Rank=\u5b9d\u7269\u730e\u4eba\u7b49\u7ea7: [[YELLOW]]{0}/5
Fishing.Ability.TH.DropRate=\u6389\u5b9d\u7387: [[DARK_RED]]\u9677\u9631: [[YELLOW]]{0} [[GRAY]]\u5e38\u89c1: [[YELLOW]]{1} [[GREEN]]\u7f55\u89c1: [[YELLOW]]{2}\n[[BLUE]]\u7a00\u6709: [[YELLOW]]{3} [[LIGHT_PURPLE]]\u53f2\u8bd7: [[YELLOW]]{4} [[GOLD]]\u4f20\u8bf4: [[YELLOW]]{5} [[AQUA]]\u521b\u7eaa\u5f55: [[YELLOW]]{6}
Fishing.Ability.TH.MagicRate=\u9b54\u6cd5\u730e\u4eba\u51e0\u7387: [[YELLOW]]{0}
Fishing.Ability.Shake=\u9c7c\u94a9\u7a83\u53d6\u51e0\u7387: [[YELLOW]]{0}
Fishing.Ability.IceFishing=\u51b0\u9493: \u5728\u51b0\u4e0a\u9493\u9c7c
Fishing.Ability.FD=\u6e14\u6c11\u7684\u98df\u8c31: [[YELLOW]]\u6392\u540d {0}
Fishing.SubSkill.TreasureHunter.Name=\u5b9d\u7269\u730e\u4eba (\u88ab\u52a8\u6280\u80fd)
Fishing.SubSkill.TreasureHunter.Description=\u9493\u5230\u6742\u7269
Fishing.SubSkill.MagicHunter.Name=\u9b54\u6cd5\u730e\u4eba
Fishing.SubSkill.MagicHunter.Description=\u627e\u5230\u9644\u9b54\u7269\u54c1
Fishing.SubSkill.Shake.Name=\u6643\u52a8\u602a\u7269 (\u5bf9\u602a\u7269\u4f7f\u7528)
Fishing.SubSkill.Shake.Description=\u7528\u9c7c\u7aff\u628a\u602a\u7269\u8eab\u4e0a\u7684\u4e1c\u897f\u6447\u4e0b\u6765
Fishing.SubSkill.FishermansDiet.Name=\u6e14\u592b\u98df\u8c31
Fishing.SubSkill.FishermansDiet.Description=\u63d0\u9ad8\u9c7c\u7c7b\u98df\u7269\u6062\u590d\u7684\u9971\u98df\u5ea6
Fishing.SubSkill.MasterAngler.Name=\u9493\u9c7c\u5927\u5e08
Fishing.SubSkill.MasterAngler.Description=\u63d0\u9ad8\u9493\u9c7c\u54ac\u94a9\u51e0\u7387
Fishing.SubSkill.IceFishing.Name=\u51b0\u9493
Fishing.SubSkill.IceFishing.Description=\u5141\u8bb8\u4f60\u5728\u51b0\u51b7\u7684\u73af\u5883\u4e0b\u9493\u9c7c
Fishing.Chance.Raining=[[BLUE]] \u5927\u91cf\u5956\u52b1
Fishing.Listener=\u9493\u9c7c(Fishing):
Fishing.Ability.TH.MagicFound=[[GRAY]]\u4f60\u611f\u5230\u4e00\u80a1\u9b54\u529b\u7684\u6ce2\u52a8...
Fishing.Ability.TH.Boom=[[GRAY]]\u7e41\u8363\u65f6\u671f!!!
Fishing.Ability.TH.Poison=[[GRAY]]\u4ec0\u4e48\u4e1c\u897f,\u95fb\u8d77\u6765\u597d\u81ed\u554a...
Fishing.SkillName=\u9493\u9c7c
Fishing.Skillup=\u9493\u9c7c\u6280\u80fd\u63d0\u5347\u4e86 {0}. \u603b\u5171 ({1})
Herbalism.Ability.DoubleDropChance=\u53cc\u500d\u6389\u843d\u51e0\u7387: [[YELLOW]]{0}
Herbalism.Ability.FD=\u519c\u592b\u98df\u8c31: [[YELLOW]]\u6392\u540d {0}
Herbalism.Ability.GTe.Length=\u571f\u795e\u5e87\u4f51\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0}s
Herbalism.Ability.GTe.NeedMore=\u4f60\u9700\u8981\u66f4\u591a\u7684\u79cd\u5b50\u8fdb\u884c\u7eff\u5316
Herbalism.Ability.GTh.Chance=\u7eff\u5316\u51e0\u7387: [[YELLOW]]{0}
Herbalism.Ability.GTh.Fail=**\u7eff\u5316\u5931\u8d25**
Herbalism.Ability.GTh.Stage=\u7eff\u5316:[[YELLOW]]\u519c\u4f5c\u7269\u751f\u957f\u671f{0}
Herbalism.Ability.GTh=[[GREEN]]**\u7eff\u5316**
Herbalism.Ability.HylianLuck=\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=\u83cc\u4e1d\u5316\u51e0\u7387: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=**\u83cc\u4e1d\u5316\u5931\u8d25**
Herbalism.SubSkill.GreenTerra.Name=\u571f\u795e\u5e87\u4f51 (\u4e3b\u52a8\u6280\u80fd)
Herbalism.SubSkill.GreenTerra.Description=\u64ad\u6492\u5973\u795e\u7684\u6069\u60e0, \u83b7\u5f973\u500d\u6389\u7387
Herbalism.SubSkill.GreenThumb.Name=\u7eff\u5316 (\u5c0f\u9ea6)
Herbalism.SubSkill.GreenThumb.Description=\u6536\u83b7\u7684\u65f6\u5019\u81ea\u52a8\u79cd\u690d\u5c0f\u9ea6
Herbalism.Effect.4=\u7eff\u5316 (\u65b9\u5757)
Herbalism.SubSkill.GreenThumb.Description.2=\u788e\u77f3/\u77f3\u5757 -> \u7528\u79cd\u5b50\u4f7f\u5b83\u4eec\u53d8\u6210\u9752\u82d4\u77f3,\u6216\u8005\u8ba9\u8349\u751f\u957f
Herbalism.SubSkill.FarmersDiet.Name=\u519c\u592b\u98df\u8c31
Herbalism.SubSkill.FarmersDiet.Description=\u98df\u7528\u519c\u4ea7\u54c1\u65f6\u989d\u5916\u56de\u590d\u9965\u997f\u5ea6
Herbalism.SubSkill.DoubleDrops.Name=\u53cc\u500d\u6389\u843d (\u6240\u6709\u7684\u690d\u7269)
Herbalism.SubSkill.DoubleDrops.Description=\u53cc\u500d\u7269\u54c1
Herbalism.SubSkill.HylianLuck.Name=\u6d77\u62c9\u5c14\u7684\u795d\u798f
Herbalism.SubSkill.HylianLuck.Description=\u7ed9\u4e88\u5c0f\u51e0\u7387\u627e\u5230\u7a00\u6709\u7269\u54c1\u7684\u80fd\u529b
Herbalism.SubSkill.ShroomThumb.Name=\u83cc\u4e1d\u5316
Herbalism.SubSkill.ShroomThumb.Description=\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=**\u571f\u795e\u5e87\u4f51\u6280\u80fd\u5df2\u7ed3\u675f**
Herbalism.Skills.GTe.On=[[GREEN]]**\u6fc0\u6d3b\u571f\u795e\u5e87\u4f51\u6280\u80fd**
Herbalism.Skills.GTe.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u571f\u795e\u5e87\u4f51 [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u518d\u6b21\u4f7f\u7528\u4e86\uff01
Herbalism.Skills.GTe.Other.Off=\u571f\u795e\u5e87\u4f51[[GREEN]] \u5df2\u7ecf\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u571f\u795e\u5e87\u4f51!
Herbalism.Skillup=\u8349\u836f\u5b66\u6280\u80fd\u7b49\u7ea7\u4e0a\u5347 {0}. \u73b0\u5728\u662f ({1})
Mining.Ability.Length=\u8d85\u7ea7\u788e\u77f3\u673a\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0}s
Mining.Ability.Locked.0=\u9501\u5b9a\u76f4\u5230 {0}+ \u6280\u80fd (\u7206\u7834\u5f00\u91c7)
Mining.Ability.Locked.1=\u9501\u5b9a\u76f4\u5230 {0}+ \u6280\u80fd (\u5927\u53f7\u70b8\u5f39)
Mining.Ability.Locked.2=\u9501\u5b9a\u76f4\u5230 {0}+ \u6280\u80fd (\u7206\u7834\u4e13\u5bb6)
Mining.Ability.Lower=[[GRAY]]**\u4f60\u6536\u8d77\u4e86\u4f60\u7684\u9550\u5b50**
Mining.Ability.Ready=[[GREEN]]**\u4f60\u62ff\u8d77\u4e86\u4f60\u7684\u77ff\u9504**
Mining.SubSkill.SuperBreaker.Name=\u8d85\u7ea7\u788e\u77f3\u673a (\u4e3b\u52a8\u6280\u80fd)
Mining.SubSkill.SuperBreaker.Description=\u901f\u5ea6+, 3\u500d\u6389\u843d\u7387
Mining.SubSkill.DoubleDrops.Name=\u53cc\u500d\u6389\u843d
Mining.SubSkill.DoubleDrops.Description=\u53cc\u500d\u7269\u54c1
Mining.SubSkill.BlastMining.Name=\u7206\u7834\u5f00\u91c7
Mining.SubSkill.BlastMining.Description=\u4f7f\u7528TNT\u70b8\u77ff\u65f6\u4f1a\u83b7\u5f97\u989d\u5916\u5956\u52b1
Mining.SubSkill.BiggerBombs.Name=\u5927\u53f7\u70b8\u5f39
Mining.SubSkill.BiggerBombs.Description=\u589e\u52a0TNT\u7206\u70b8\u8303\u56f4
Mining.SubSkill.DemolitionsExpertise.Name=\u7206\u7834\u4e13\u5bb6
Mining.SubSkill.DemolitionsExpertise.Description=\u51cf\u5c11\u6765\u81eaTNT\u7684\u4f24\u5bb3
Mining.Effect.Decrease=\u7206\u7834\u4e13\u5bb6\u4f24\u5bb3\u51cf\u5c11: [[YELLOW]]{0}
Mining.Effect.DropChance=\u53cc\u500d\u6389\u843d\u51e0\u7387: [[YELLOW]]{0}
Mining.Listener=\u6316\u77ff(Mining):
Mining.SkillName=\u6316\u77ff
Mining.Skills.SuperBreaker.Off=**\u8d85\u7ea7\u788e\u77f3\u673a\u5df2\u7ed3\u675f**
Mining.Skills.SuperBreaker.On=[[GREEN]]**\u8d85\u7ea7\u788e\u77f3\u673a\u5df2\u6fc0\u6d3b**
Mining.Skills.SuperBreaker.Other.Off=\u8d85\u7ea7\u788e\u77f3\u673a[[GREEN]] \u5df2\u7ecf\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u8d85\u7ea7\u788e\u77f3\u673a!
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u4f60\u7684[[YELLOW]] \u8d85\u7ea7\u788e\u77f3\u673a [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u518d\u6b21\u4f7f\u7528\u4e86\uff01
Mining.Skillup=\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=\u7206\u70b8\u534a\u5f84\u63d0\u5347: [[YELLOW]]+{0}
Mining.Blast.Rank=\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.SubSkill.Repair.Name=\u4fee\u7406
Repair.SubSkill.Repair.Description=\u4fee\u7406\u5de5\u5177\u548c\u88c5\u5907
Repair.SubSkill.GoldRepair.Name=\u4fee\u7406\u9ec4\u91d1 ({0}+ SKILL)
Repair.SubSkill.GoldRepair.Description=\u4fee\u7406\u9ec4\u91d1\u5de5\u5177\u548c\u88c5\u5907
Repair.SubSkill.IronRepair.Name=\u4fee\u7406\u94c1\u8d28\u7269\u54c1 ({0}+ SKILL)
Repair.SubSkill.IronRepair.Description=\u4fee\u7406\u94c1\u8d28\u5de5\u5177\u548c\u62a4\u7532
Repair.SubSkill.StoneRepair.Name=\u4fee\u7406\u77f3\u5934\u7269\u54c1 ({0}+ SKILL)
Repair.SubSkill.StoneRepair.Description=\u4fee\u7406\u77f3\u5934\u5de5\u5177
Repair.SubSkill.RepairMastery.Name=\u4fee\u7406\u7cbe\u901a
Repair.SubSkill.RepairMastery.Description=\u5df2\u589e\u52a0\u4fee\u7406\u6570\u91cf
Repair.SubSkill.SuperRepair.Name=\u8d85\u7ea7\u4fee\u7406
Repair.SubSkill.SuperRepair.Description=\u53cc\u500d\u6548\u679c
Repair.SubSkill.DiamondRepair.Name=\u94bb\u77f3\u4fee\u7406 ({0}+ SKILL)
Repair.SubSkill.DiamondRepair.Description=\u4fee\u7406\u94bb\u77f3\u5de5\u5177\u548c\u88c5\u5907
Repair.SubSkill.ArcaneForging.Name=\u79d8\u6cd5\u953b\u9020
Repair.SubSkill.ArcaneForging.Description=\u4fee\u7406\u9644\u9b54\u7269\u54c1
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=\u4fee\u7406\uff1a
Repair.SkillName=\u4fee\u7406
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
Repair.Skills.Adept=\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.Mastery=\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=\u8d85\u7ea7\u4fee\u7406\u51e0\u7387: [[YELLOW]]{0}
Repair.Skillup=\u4fee\u7406\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u5171 ({1})
Repair.Pretty.Name=\u4fee\u7406
Repair.Arcane.Chance.Downgrade=[[GRAY]]\u9644\u9b54\u964d\u7ea7\u51e0\u7387: [[YELLOW]]{0}%
Repair.Arcane.Chance.Success=[[GRAY]]\u795e\u79d8\u953b\u9020\u6210\u529f\u7387: [[YELLOW]]{0}%
Repair.Arcane.Downgrade=\u8fd9\u4ef6\u7269\u54c1\u7684\u9644\u9b54\u7b49\u7ea7\u5df2\u4e0b\u964d.
Repair.Arcane.Fail=\u8fd9\u4ef6\u7269\u54c1\u7684\u9644\u9b54\u5df2\u6d88\u5931.
Repair.Arcane.Lost=\u4f60\u7684\u6280\u80fd\u7b49\u7ea7\u4e0d\u8db3\u4ee5\u4fdd\u7559\u9644\u9b54\u5c5e\u6027.
Repair.Arcane.Perfect=[[GREEN]]\u4f60\u6210\u529f\u5730\u4fdd\u7559\u4e86\u8fd9\u4ef6\u7269\u54c1\u7684\u9644\u9b54.
Repair.Arcane.Rank=\u79d8\u6cd5\u953b\u9020: [[YELLOW]]\u7b49\u7ea7 {0}/4
Salvage.Pretty.Name=\u5206\u89e3
Salvage.SubSkill.AdvancedSalvage.Name=\u8fdb\u9636\u5206\u89e3
Salvage.SubSkill.AdvancedSalvage.Description=\u5206\u89e3\u635f\u574f\u7684\u7269\u54c1
Salvage.SubSkill.ArcaneSalvaging.Name=\u795e\u79d8\u5206\u89e3
Salvage.SubSkill.ArcaneSalvaging.Description=\u4ece\u7269\u54c1\u4e2d\u62c6\u89e3\u51fa\u9644\u9b54
Salvage.Ability.Locked.0=\u80fd\u529b\u9501\u5b9a\u76f4\u81f3 {0}+ \u6280\u80fd\u7b49\u7ea7 (\u8fdb\u9636\u5206\u89e3)
Salvage.Ability.Bonus.0=\u8fdb\u9636\u5206\u89e3
Salvage.Ability.Bonus.1=\u6700\u5927\u9650\u5ea6\u56de\u6536 {0} \u635f\u574f\u7684\u7269\u54c1
Salvage.Arcane.Rank=\u795e\u79d8\u5206\u89e3: [[YELLOW]]\u7b49\u7ea7 {0}/{1}
Salvage.Arcane.ExtractFull=[[GRAY]]\u5b8c\u5168\u62c6\u89e3\u51fa\u9644\u9b54\u51e0\u7387
Salvage.Arcane.ExtractPartial=[[GRAY]]\u90e8\u5206\u62c6\u89e3\u51fa\u9644\u9b54\u51e0\u7387
Salvage.Skills.Success=[[GREEN]]\u7269\u54c1\u5df2\u5206\u89e3\uff01
Salvage.Skills.Adept.Damaged=[[DARK_RED]]\u60a8\u7684\u6280\u80fd\u7b49\u7ea7\u4e0d\u8db3\u4ee5\u5206\u89e3\u635f\u574f\u7684\u7269\u54c1\u3002
Salvage.Skills.Adept.Level=\u60a8\u5fc5\u987b\u8fbe\u5230 [[YELLOW]]{0}[[RED]] \u7ea7\u624d\u80fd\u5206\u89e3 [[YELLOW]]{1}
Salvage.Skills.TooDamaged=[[DARK_RED]]\u8be5\u7269\u54c1\u635f\u574f\u8fc7\u4e8e\u4e25\u91cd\uff0c\u65e0\u6cd5\u5206\u89e3\u3002
Salvage.Skills.ArcaneFailed=\u60a8\u65e0\u6cd5\u62c6\u89e3\u51fa\u672c\u7269\u54c1\u6240\u8574\u542b\u7684\u77e5\u8bc6\u3002
Salvage.Skills.ArcanePartial=\u60a8\u53ea\u80fd\u62c6\u89e3\u51fa\u672c\u7269\u54c1\u6240\u8574\u542b\u7684\u90e8\u5206\u77e5\u8bc6\u3002
Salvage.Skills.ArcaneSuccess=[[GREEN]]\u60a8\u80fd\u591f\u5b8c\u5168\u62c6\u89e3\u51fa\u672c\u7269\u54c1\u6240\u542b\u7684\u77e5\u8bc6\uff01
Salvage.Listener.Anvil=[[DARK_RED]]\u60a8\u5df2\u7ecf\u653e\u7f6e\u4e86\u4e00\u4e2a\u5206\u89e3\u7827\uff0c\u4f7f\u7528\u5b83\u6765\u5206\u89e3\u5de5\u5177\u548c\u62a4\u7532\u3002
Salvage.Listener=\u5206\u89e3:
Salvage.SkillName=\u5206\u89e3
Anvil.Unbreakable=\u8be5\u7269\u54c1\u662f\u65e0\u6cd5\u7834\u574f\u7684\uff01
Swords.Ability.Lower=[[GRAY]]**\u4f60\u6536\u597d\u4e86\u4f60\u7684\u5251**
Swords.Ability.Ready=[[GREEN]]**\u4f60\u628a\u5251\u7d27\u63e1\u5728\u4e86\u624b\u4e2d**
Swords.Combat.Bleed.Chance=\u653e\u8840\u51e0\u7387: [[YELLOW]]{0}
Swords.Combat.Bleed.Length=\u6d41\u8840\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0} ticks
Swords.Combat.Bleed.Note=[[GRAY]]\u6ce8\u610f: [[YELLOW]]\u6bcf\u4e24\u79d2\u51cf\u4e00\u6ef4\u8840
Swords.Combat.Bleeding.Started=[[DARK_RED]] \u4f60\u6b63\u5728\u6d41\u8840!
Swords.Combat.Bleeding.Stopped=[[GRAY]]\u653e\u8840 [[GREEN]]\u5df2\u505c\u6b62[[GRAY]]!
Swords.Combat.Bleeding=[[GREEN]]**\u654c\u4eba\u6b63\u5728\u4e0d\u65ad\u6d41\u8840**
Swords.Combat.Counter.Chance=\u53cd\u51fb\u51e0\u7387: [[YELLOW]]{0}
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\u5229\u5203\u7a81\u523a!
Swords.SubSkill.CounterAttack.Name=\u53cd\u51fb
Swords.SubSkill.CounterAttack.Description=\u683c\u6863\u65f6\u53cd\u5f39{0}\u4f24\u5bb3\u503c
Swords.SubSkill.SerratedStrikes.Name=\u5229\u5203\u7a81\u523a (\u4e3b\u52a8\u6280\u80fd)
Swords.SubSkill.SerratedStrikes.Description={0} \u653b\u51fb\u8303\u56f4, \u653e\u8840\u8303\u56f4
Swords.Effect.4=\u5229\u5203\u7a81\u523a \u6d41\u8840\u4f24\u5bb3\u589e\u52a0
Swords.Effect.5={0} \u6b21 \u6d41\u8840
Swords.SubSkill.Bleed.Name=\u653e\u8840
Swords.SubSkill.Bleed.Description=\u4ea7\u751f\u653e\u8840\u4f24\u5bb3
Swords.Listener=\u5251\u672f(Swords):
Swords.SkillName=\u5251\u672f
Swords.Skills.SS.Off=**\u5229\u5203\u7a81\u523a\u5df2\u7ecf\u7ed3\u675f\u4e86**
Swords.Skills.SS.On=[[GREEN]]**\u5229\u5203\u7a81\u523a\u542f\u52a8**
Swords.Skills.SS.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u5229\u5203\u7a81\u523a [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u4f7f\u7528\u4e86!
Swords.Skills.SS.Other.Off=\u5229\u5203\u7a81\u523a[[GREEN]] \u5df2\u7ecf\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u5229\u5203\u7a81\u523a!
Swords.Skillup=\u5251\u672f\u6280\u80fd\u7b49\u7ea7\u4e0a\u5347 {0}. \u73b0\u5728\u662f ({1})
Swords.SS.Length=\u952f\u9f7f\u5229\u5203\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0}s
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.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=\u55dc\u8840\u51e0\u7387: [[YELLOW]]{0}
Taming.SubSkill.BeastLore.Name=\u9a6f\u517d\u77e5\u8bc6
Taming.SubSkill.BeastLore.Description=\u7528\u9aa8\u5934\u53f3\u952e\u5355\u51fb\u72fc\u6216\u8005\u8c79\u732b\u4ee5\u68c0\u67e5\u5b83\u4eec\u7684\u72b6\u51b5
Taming.SubSkill.ShockProof.Name=\u51b2\u51fb\u62b5\u6297
Taming.SubSkill.ShockProof.Description=\u7206\u70b8\u4f24\u5bb3\u51cf\u5c11
Taming.SubSkill.CallOfTheWild.Name=\u91ce\u6027\u547c\u5524
Taming.SubSkill.CallOfTheWild.Description=\u4e3a\u4f60\u53ec\u5524\u4e00\u53ea\u5ba0\u7269
Taming.SubSkill.CallOfTheWild.Description.2=[[GRAY]]\u53ec\u5524 (\u8c79\u732b): \u624b\u91cc\u62ff\u7740 {0} \u6761\u9c7c,\u6309\u4f4f\u6f5c\u884c\u540c\u65f6\u5355\u51fb\u5de6\u952e\u53ec\u5524.
Taming.Effect.15=[[GRAY]]\u53ec\u5524 (\u72fc): \u624b\u91cc\u62ff\u7740 {0} \u6839\u9aa8\u5934,\u6309\u4f4f\u6f5c\u884c\u540c\u65f6\u5355\u51fb\u5de6\u952e\u53ec\u5524.
Taming.SubSkill.Gore.Name0=[[GRAY]]\u53ec\u5524 (\u9a6c): \u624b\u91cc\u62ff\u7740 {0} \u4e2a\u82f9\u679c,\u6309\u4f4f\u6f5c\u884c\u540c\u65f6\u5355\u51fb\u5de6\u952e\u53ec\u5524.
Taming.SubSkill.FastFoodService.Name=\u5feb\u9910\u670d\u52a1
Taming.SubSkill.FastFoodService.Description=\u4e00\u5b9a\u51e0\u7387\u4f7f\u72fc\u5728\u653b\u51fb\u65f6\u56de\u590d\u81ea\u8eab\u8840\u91cf
Taming.SubSkill.HolyHound.Name=\u72ac\u795e\u7684\u5e87\u62a4
Taming.SubSkill.HolyHound.Description=\u5df2\u88ab\u9b54\u6cd5 & \u4e2d\u6bd2\u6548\u679c\u6cbb\u6108
Taming.SubSkill.Gore.Name=\u55dc\u8840
Taming.SubSkill.Gore.Description=\u81f4\u547d\u653b\u51fb\u4f1a\u7ed9\u76ee\u6807\u653e\u8840
Taming.SubSkill.SharpenedClaws.Name=\u5229\u722a
Taming.SubSkill.SharpenedClaws.Description=\u4f24\u5bb3\u5956\u52b1
Taming.SubSkill.EnvironmentallyAware.Name=\u73af\u5883\u611f\u77e5
Taming.SubSkill.EnvironmentallyAware.Description=\u4ed9\u4eba\u638c/\u5ca9\u6d46 \u6050\u60e7\u75c7, \u514d\u75ab\u6389\u843d\u4f24\u5bb3
Taming.SubSkill.ThickFur.Name=\u539a\u5b9e\u7684\u76ae\u6bdb
Taming.SubSkill.ThickFur.Description=\u524a\u51cf\u53d7\u5230\u7684\u4f24\u5bb3, \u706b\u7130\u62b5\u6297
Taming.Listener.Wolf=[[DARK_GRAY]]\u4f60\u7684\u72fc\u98de\u901f\u5730\u8dd1\u56de\u4e86\u4f60\u8eab\u8fb9...
Taming.Listener=\u9a6f\u517d(Taming):
Taming.SkillName=\u9a6f\u517d
Taming.Skillup=\u9a6f\u517d\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u5171 ({1})
Taming.Summon.Complete=[[GREEN]]\u53ec\u5524\u5b8c\u6bd5
Taming.Summon.Fail.Ocelot=\u4f60\u4e0d\u80fd\u53ec\u5524\u8c79\u732b\u56e0\u4e3a\u4f60\u53ec\u5524\u4e86\u592a\u591a\u4e86.
Taming.Summon.Fail.Wolf=\u4f60\u8eab\u8fb9\u5df2\u7ecf\u62e5\u6709\u8db3\u591f\u591a\u7684\u72fc,\u65e0\u6cd5\u53ec\u5524\u66f4\u591a.
Taming.Summon.Fail.Horse=\u4f60\u8eab\u8fb9\u5df2\u7ecf\u62e5\u6709\u8db3\u591f\u591a\u7684\u9a6c\u4e86,\u65e0\u6cd5\u53ec\u5524.
Taming.Summon.Name.Format={0}\u7684 {1}
Unarmed.Ability.Berserk.Length=\u72c2\u66b4\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0}s
Unarmed.Ability.Bonus.0=\u94c1\u8155\u6a21\u5f0f
Unarmed.Ability.Bonus.1=\u589e\u52a0{0}\u70b9\u4f24\u5bb3
Unarmed.Ability.Chance.ArrowDeflect=\u7bad\u77e2\u504f\u5411\u51e0\u7387: [[YELLOW]]{0}
Unarmed.Ability.Chance.Disarm=\u7f34\u68b0\u51e0\u7387: [[YELLOW]]{0}
Unarmed.Ability.Chance.IronGrip=\u8d85\u5f3a\u63e1\u529b\u89e6\u53d1\u51e0\u7387: [[YELLOW]]{0}
Unarmed.Ability.IronGrip.Attacker=\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.SubSkill.Berserk.Name=\u72c2\u66b4 (\u4e3b\u52a8\u6280\u80fd)
Unarmed.SubSkill.Berserk.Description=+50% \u4f24\u5bb3, \u80fd\u7834\u574f\u786c\u5ea6\u4f4e\u7684\u65b9\u5757
Unarmed.SubSkill.Disarm.Name=\u7f34\u68b0 (\u4ec5\u9650\u73a9\u5bb6)
Unarmed.SubSkill.Disarm.Description=\u4f7f\u654c\u4eba\u624b\u4e2d\u6b66\u5668\u6389\u843d
Unarmed.SubSkill.IronArmStyle.Name=\u94c1\u8155\u6a21\u5f0f
Unarmed.SubSkill.IronArmStyle.Description=\u4f7f\u4f60\u7684\u62a4\u7532\u968f\u65f6\u95f4\u589e\u52a0\u800c\u589e\u5f3a
Unarmed.SubSkill.ArrowDeflect.Name=\u7bad\u77e2\u504f\u5411
Unarmed.SubSkill.ArrowDeflect.Description=\u8ba9\u7bad\u77e2\u504f\u5411
Unarmed.SubSkill.IronGrip.Name=\u8d85\u5f3a\u63e1\u529b
Unarmed.SubSkill.IronGrip.Description=\u9632\u6b62\u4f60\u88ab\u7f34\u68b0
Unarmed.Listener=\u683c\u6597(Unarmed):
Unarmed.SkillName=\u683c\u6597
Unarmed.Skills.Berserk.Off=**\u72c2\u66b4\u6280\u80fd\u5df2\u7ed3\u675f**
Unarmed.Skills.Berserk.On=[[GREEN]]**\u72c2\u66b4\u6fc0\u6d3b**
Unarmed.Skills.Berserk.Other.Off=\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=\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=\u53cc\u500d\u6389\u843d\u51e0\u7387: [[YELLOW]]{0}
Woodcutting.Ability.Length=\u6811\u6728\u780d\u4f10\u8005\u6301\u7eed\u65f6\u95f4: [[YELLOW]]{0}\u79d2
Woodcutting.Ability.Locked.0=\u9501\u5b9a\u72b6\u6001,\u76f4\u5230 {0}+ \u6280\u80fd (\u5439\u53f6\u673a)
Woodcutting.SubSkill.TreeFeller.Name=\u7cbe\u9510\u4f10\u6728\u5de5(\u6280\u80fd)
Woodcutting.SubSkill.TreeFeller.Description=\u7206\u53d1\u5f0f\u7684\u780d\u6811
Woodcutting.SubSkill.LeafBlower.Name=\u4e71\u780d\u65e0\u53cc
Woodcutting.SubSkill.LeafBlower.Description=\u626b\u9664\u6811\u53f6
Woodcutting.SubSkill.HarvestLumber.Name=\u53cc\u500d\u6389\u843d
Woodcutting.SubSkill.HarvestLumber.Description=\u53cc\u500d\u6389\u843d\u7269\u54c1
Woodcutting.Listener=\u4f10\u6728(Woodcutting):
Woodcutting.SkillName=\u4f10\u6728
Woodcutting.Skills.TreeFeller.Off=**\u4f10\u6728\u6280\u80fd\u5df2\u7ed3\u675f**
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**\u4f10\u6728\u6280\u80fd\u6fc0\u6d3b**
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u4f10\u6728 [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u4f7f\u7528\u4e86\uff01
Woodcutting.Skills.TreeFeller.Other.Off=\u4f10\u6728\u6280\u80fd[[GREEN]] \u5df2\u7ecf\u7ed3\u675f\u4e86 [[YELLOW]]{0}
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u4f10\u6728\u6280\u80fd!
Woodcutting.Skills.TreeFeller.Splinter=\u4f60\u7684\u65a7\u5934\u53d8\u6210\u4e86\u4e00\u5806\u788e\u7247\uff01
Woodcutting.Skills.TreeFeller.Threshold=\u90a3\u68f5\u6811\u592a\u5927\u4e86!
Woodcutting.Skillup=\u4f10\u6728\u6280\u80fd\u63d0\u5347 {0}. \u603b\u5171 ({1})
Ability.Generic.Refresh=[[GREEN]]**\u6280\u80fd\u51b7\u5374\u5b8c\u6bd5!**
Ability.Generic.Template.Lock=[[GRAY]]{0}
Ability.Generic.Template=[[GOLD]]{0}: [[DARK_AQUA]]{1}
Combat.ArrowDeflect=[[WHITE]]**\u7bad\u77e2\u504f\u5411**
Combat.BeastLore=[[GREEN]]**\u9a6f\u517d\u77e5\u8bc6**
Combat.BeastLoreHealth=[[DARK_AQUA]]\u751f\u547d\u503c ([[GREEN]]{0}[[DARK_AQUA]]/{1})
Combat.BeastLoreOwner=[[DARK_AQUA]]\u62e5\u6709\u8005 ([[RED]]{0}[[DARK_AQUA]])
Combat.Gore=[[GREEN]]**\u76ee\u6807\u88ab\u653e\u8840**
Combat.StruckByGore=**\u4f60\u88ab\u653e\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]]com.gmail.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]]com.gmail.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\u7ffb\u8bd1\u4e0e\u6da6\u8272\u7684\u4eba[[DARK_AQUA]]:,[[GREEN]]hzk11o11k11o wolski Chikaze(Cirno) 664365842 zesty HDfunctions CNAmira,[[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=\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={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.Ability.Toggle=\u6280\u80fd\u4f7f\u7528\u5df2\u5207\u6362\u4e3a [[YELLOW]]{0}
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.AdminToggle=- \u5207\u6362\u7ba1\u7406\u5458\u804a\u5929
Commands.Chat.Console=*\u63a7\u5236\u53f0*
Commands.Cooldowns.Header=[[GOLD]]--= [[GREEN]]mcMMO \u80fd\u529b\u51b7\u5374[[GOLD]] =--
Commands.Cooldowns.Row.N=\ [[RED]]{0}[[WHITE]] - \u5269\u4f59 [[GOLD]]{1} \u79d2
Commands.Cooldowns.Row.Y=\ [[AQUA]]{0}[[WHITE]] - [[DARK_GREEN]]\u5df2\u5c31\u7eea\uff01
Commands.Database.Cooldown=\u518d\u6b21\u4f7f\u7528\u8fd9\u4e2a\u547d\u4ee4\u8fd8\u9700\u8981\u7b49\u5f851\u79d2.
Commands.Disabled=\u8fd9\u4e2a\u6307\u4ee4\u88ab\u7981\u7528\u4e86.
Commands.DoesNotExist=\u8be5\u540d\u73a9\u5bb6\u4e0d\u5b58\u5728\u4e8e\u6570\u636e\u5e93\u4e2d\uff01
Commands.GodMode.Disabled=mcMMO \u4e0a\u5e1d\u6a21\u5f0f\u5173\u95ed
Commands.GodMode.Enabled=mcMMO \u4e0a\u5e1d\u6a21\u5f0f\u5f00\u542f
Commands.GodMode.Forbidden=[mcMMO] \u4e0a\u5e1d\u6a21\u5f0f\u4e0d\u5141\u8bb8\u5728\u8fd9\u4e2a\u4e16\u754c\u5f00\u542f (\u8be6\u60c5\u8bf7\u770b\u6743\u9650\u914d\u7f6e)
Commands.GodMode.Toggle=\u4e0a\u5e1d\u6a21\u5f0f\u5df2\u5207\u6362\u4e3a [[YELLOW]]{0}
Commands.Healthbars.Changed.HEARTS=[mcMMO] \u4f60\u7684\u8840\u6761\u663e\u793a\u7c7b\u578b\u5df2\u66f4\u6539\u4e3a [[RED]]\u5fc3\u5f62[[WHITE]].
Commands.Healthbars.Changed.BAR=[mcMMO] \u4f60\u7684\u8840\u6761\u663e\u793a\u7c7b\u578b\u5df2\u66f4\u6539\u4e3a [[RED]]\u65b9\u5f62[[WHITE]].
Commands.Healthbars.Changed.DISABLED=[mcMMO] \u4f60\u7684\u602a\u7269\u8840\u6761\u663e\u793a\u5df2\u88ab [[GRAY]]\u7981\u7528[[WHITE]].
Commands.Healthbars.Invalid=\u65e0\u6548\u7684\u8840\u6761\u7c7b\u578b!
Commands.Inspect=<player> [[RED]]-\u67e5\u770b\u73a9\u5bb6\u8be6\u7ec6\u4fe1\u606f
Commands.Party.Invite.Accepted=[[GREEN]]\u63a5\u53d7\u9080\u8bf7,\u4f60\u6210\u4e3a\u4e86\u961f\u4f0d {0} \u4e2d\u7684\u4e00\u5458.
Commands.Invite.Success=[[GREEN]]\u9080\u8bf7\u53d1\u9001\u6210\u529f.
Commands.Leaderboards=<skill> <page> [[RED]]- \u6392\u884c\u699c
Commands.mcc.Header=---[][[YELLOW]]mcMMO \u6307\u4ee4[[RED]][]---
Commands.mcgod=- \u5207\u6362\u4e0a\u5e1d\u6a21\u5f0f
Commands.mchud.Invalid=\u90a3\u5e76\u4e0d\u662f\u53ef\u7528\u7684HUD\u7c7b\u578b.
Commands.mcpurge.Success=[[GREEN]]\u6570\u636e\u5df2\u91cd\u7f6e!
Commands.mcrank.Heading=[[GOLD]]-=\u4e2a\u4eba\u6392\u540d=-
Commands.mcrank.Overall=\u7efc\u5408[[GREEN]] - [[GOLD]]\u6392\u540d [[WHITE]]#[[GREEN]]{0}
Commands.mcrank.Player=\u76ee\u6807: [[WHITE]]{0}
Commands.mcrank.Skill={0}[[GREEN]] - [[GOLD]]\u6392\u540d [[WHITE]]#[[GREEN]]{1}
Commands.mcrank.Unranked=[[WHITE]]\u65e0\u6392\u540d
Commands.mcrefresh.Success={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={0} \u5df2\u66f4\u6539\u4e3a {1}.
Commands.mcconvert.Database.Same=\u4f60\u5df2\u7ecf\u5728\u4f7f\u7528 {0} \u6570\u636e\u5e93!
Commands.mcconvert.Database.InvalidType={0} \u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u6570\u636e\u5e93\u7c7b\u578b.
Commands.mcconvert.Database.Start=[[GRAY]]\u5f00\u59cb\u4ece{0}\u8f6c\u6362\u81f3{1}...
Commands.mcconvert.Database.Finish=[[GRAY]]\u6570\u636e\u5e93\u8fc1\u79fb\u5b8c\u6210; {1}\u6570\u636e\u5e93\u73b0\u5728\u62e5\u6709{0}\u6570\u636e\u5e93\u7684\u6240\u6709\u6570\u636e.
Commands.mmoshowdb=\u5f53\u524d\u4f7f\u7528\u7684\u6570\u636e\u5e93\u4e3a [[GREEN]]{0}
Commands.mcconvert.Experience.Invalid=\u9519\u8bef\u7684\u516c\u5f0f\u7c7b\u578b! \u6709\u6548\u7c7b\u578b\u4e3a: [[GREEN]]\u7ebf\u6027 [[RED]]\u548c [[GREEN]]\u6307\u6570.
Commands.mcconvert.Experience.Same=\u6b63\u5728\u4f7f\u7528\u516c\u5f0f{0}
Commands.mcconvert.Experience.Start=[[GRAY]]\u5f00\u59cb\u4ece{0}\u8f6c\u6362\u5230{1}\u66f2\u7ebf
Commands.mcconvert.Experience.Finish=[[GRAY]]\u516c\u5f0f\u8f6c\u6362\u5b8c\u6210; \u73b0\u5728\u4f7f\u7528 {0} \u7ecf\u9a8c\u66f2\u7ebf.
Commands.ModDescription=- \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=\u8fd9\u4e2a\u6307\u4ee4\u5bf9\u79bb\u7ebf\u73a9\u5bb6\u65e0\u6548
Commands.NotLoaded=\u73a9\u5bb6\u8d44\u6599\u5c1a\u672a\u52a0\u8f7d\u3002
Commands.Other=[[GREEN]]--\u5176\u4ed6\u547d\u4ee4--
Commands.Party.Header=-----[][[GREEN]]\u961f\u4f0d[[RED]][]-----
Commands.Party.Features.Header=-----[][[GREEN]]\u529f\u80fd[[RED]][]-----
Commands.Party.Status=[[DARK_GRAY]]\u540d\u5b57: [[WHITE]]{0} {1} [[DARK_GRAY]]\u7b49\u7ea7: [[DARK_AQUA]]{2}
Commands.Party.Status.Alliance=[[DARK_GRAY]]\u540c\u76df: [[WHITE]]{0}
Commands.Party.UnlockedFeatures=[[DARK_GRAY]]\u5df2\u89e3\u9501\u529f\u80fd: [[GRAY]][[ITALIC]]{0}
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=- \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.Commands=[[GREEN]]--\u7ec4\u961f\u547d\u4ee4--
Commands.Party.Invite.0=\u6ce8\u610f: [[GREEN]]\u4f60\u6536\u5230\u4e86\u4e00\u4e2a\u7ec4\u961f\u9080\u8bf7 {0} \u6765\u81ea {1}
Commands.Party.Invite.1=\u8f93\u5165 [[GREEN]]/party accept[[YELLOW]] \u6765\u63a5\u53d7\u9080\u8bf7
Commands.Party.Invite=- \u53d1\u9001\u7ec4\u961f\u9080\u8bf7
Commands.Party.Invite.Accepted=[[GREEN]]\u5df2\u63a5\u53d7\u7ec4\u961f\u9080\u8bf7\u3002\u60a8\u5df2\u7ecf\u52a0\u5165\u961f\u4f0d {0}
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=\u4f60\u5df2\u88ab {0} \u8e22\u51fa!
Commands.Party.Leave=\u4f60\u79bb\u5f00\u4e86\u8fd9\u652f\u961f\u4f0d
Commands.Party.Members.Header=-----[][[GREEN]]\u6210\u5458[[RED]][]-----
Commands.Party.None=\u4f60\u4e0d\u5728\u961f\u4f0d\u4e2d.
Commands.Party.Quit=- \u79bb\u5f00\u4f60\u73b0\u6709\u7684\u961f\u4f0d
Commands.Party.Teleport=<player> [[RED]]- \u4f20\u9001\u5230\u961f\u4f0d\u6210\u5458
Commands.Party.Toggle=- \u5207\u6362\u961f\u4f0d\u804a\u5929
Commands.Party1=- \u521b\u5efa\u4e00\u4e2a\u65b0\u961f\u4f0d
Commands.Party2=- \u52a0\u5165\u4e00\u4e2a\u73a9\u5bb6\u7684\u961f\u4f0d
Commands.Party.Alliance.Header=-----[][[GREEN]]\u961f\u4f0d\u540c\u76df[[RED]][]-----
Commands.Party.Alliance.Ally=[[WHITE]]{0} [[DARK_GRAY]]\u540c\u76df\u6709: [[WHITE]]{1}
Commands.Party.Alliance.Members.Header=-----[][[GREEN]]\u540c\u76df\u6210\u5458[[RED]][]-----
Commands.Party.Alliance.Invite.0=\u8b66\u544a: [[GREEN]]\u60a8\u4ece {1} \u6536\u5230\u961f\u4f0d\u540c\u76df\u9080\u8bf7\u6765 {0}
Commands.Party.Alliance.Invite.1=\u8f93\u5165 [[GREEN]]/party alliance accept[[YELLOW]] \u6765\u63a5\u53d7\u9080\u8bf7
Commands.Party.Alliance.Invite.Accepted=[[GREEN]]\u5df2\u63a5\u53d7\u540c\u76df\u9080\u8bf7\u3002
Commands.Party.Alliance.None=\u60a8\u6ca1\u6709\u540c\u76df\u3002
Commands.Party.Alliance.AlreadyAllies=\u60a8\u7684\u961f\u4f0d\u5df2\u7ecf\u6709\u4e00\u4e2a\u540c\u76df\u3002\u4f7f\u7528 [[DARK_AQUA]]/party alliance disband [[RED]]\u6765\u89e3\u6563
Commands.Party.Alliance.Help.0=\u8fd9\u4e2a\u961f\u4f0d\u6ca1\u6709\u7ec4\u6210\u540c\u76df\uff0c\u4f7f\u7528 [[DARK_AQUA]]/party alliance invite <player>[[RED]] \u9080\u8bf7
Commands.Party.Alliance.Help.1=\u5b83\u7684\u961f\u957f\u6765\u7ed3\u76df\u3002
Commands.ptp.Enabled=\u961f\u4f0d\u4f20\u9001 [[GREEN]]\u542f\u7528
Commands.ptp.Disabled=\u961f\u4f0d\u4f20\u9001 [[RED]]\u7981\u7528
Commands.ptp.NoRequests=\u5f53\u524d\u6ca1\u6709\u4f20\u9001\u8bf7\u6c42
Commands.ptp.NoWorldPermissions=[mcMMO] \u4f60\u6ca1\u6709\u6743\u9650\u4f20\u9001\u5230\u4e16\u754c {0}.
Commands.ptp.Request1={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=\u961f\u4f0d\u4f20\u9001\u8bf7\u6c42\u5df2\u5931\u6548!
Commands.PowerLevel.Leaderboard=--mcMMO[[BLUE]] \u6218\u6597\u529b [[YELLOW]]\u6392\u884c\u699c--
Commands.PowerLevel.Capped=[[DARK_RED]]\u6218\u6597\u529b: [[GREEN]]{0} [[DARK_RED]]\u6700\u9ad8\u7b49\u7ea7: [[YELLOW]]{1}
Commands.PowerLevel=[[DARK_RED]]\u6218\u6597\u529b: [[GREEN]]{0}
Commands.Reset.All=[[GREEN]]\u4f60\u7684\u6280\u672f\u6c34\u5e73\u5df2\u590d\u4f4d\u6210\u529f.
Commands.Reset.Single=[[GREEN]]\u4f60\u7684 {0} \u6280\u80fd\u7b49\u7ea7\u5df2\u6210\u529f\u91cd\u7f6e.
Commands.Reset=\u91cd\u7f6e\u6280\u80fd\u7b49\u7ea7\u4e3a0
Commands.Scoreboard.Clear=[[DARK_AQUA]]mcMMO \u8bb0\u5206\u677f\u5df2\u6e05\u7a7a\u3002
Commands.Scoreboard.NoBoard=mcMMO \u8bb0\u5206\u677f\u5f53\u524d\u672a\u6fc0\u6d3b\u3002
Commands.Scoreboard.Keep=[[DARK_AQUA]]mcMMO \u8bb0\u5206\u677f\u5c06\u60ac\u505c\u76f4\u5230\u60a8\u4f7f\u7528 [[GREEN]]/mcscoreboard clear[[DARK_AQUA]]\u3002
Commands.Scoreboard.Timer=[[DARK_AQUA]]mcMMO \u8bb0\u5206\u677f\u5c06\u5728 [[GOLD]]{0}[[DARK_AQUA]] \u79d2\u540e\u6e05\u7a7a\u3002
Commands.Scoreboard.Help.0=[[GOLD]] == [[RED]]/mcscoreboard [[GREEN]]\u5e2e\u52a9[[GOLD]] ==
Commands.Scoreboard.Help.1=[[DARK_AQUA]]/mcscoreboard[[AQUA]] clear [[WHITE]] - \u6e05\u7a7a mcMMO \u8bb0\u5206\u677f
Commands.Scoreboard.Help.2=[[DARK_AQUA]]/mcscoreboard[[AQUA]] keep [[WHITE]] - \u4fdd\u6301 mcMMO \u8bb0\u5206\u677f\u60ac\u505c
Commands.Scoreboard.Help.3=[[DARK_AQUA]]/mcscoreboard[[AQUA]] time [n] [[WHITE]] - [[LIGHT_PURPLE]]n[[WHITE]] \u79d2\u540e\u6e05\u7a7a mcMMO \u8bb0\u5206\u677f
Commands.Scoreboard.Tip.Keep=[[GOLD]]\u63d0\u793a: \u5f53\u8bb0\u5206\u677f\u663e\u793a\u65f6\u4f7f\u7528 [[RED]]/mcscoreboard keep[[GOLD]] \u6765\u4fdd\u6301\u5b83\u4e0d\u6d88\u5931\u3002
Commands.Scoreboard.Tip.Clear=[[GOLD]]\u63d0\u793a: \u4f7f\u7528 [[RED]]/mcscoreboard clear[[GOLD]] \u6765\u5173\u95ed\u8ba1\u5206\u677f\u3002
Commands.Skill.Invalid=\u8fd9\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u6280\u80fd\u540d\u5b57!
Commands.Skill.ChildSkill=\u5b50\u6280\u80fd\u5bf9\u8be5\u547d\u4ee4\u65e0\u6548\uff01
Commands.Skill.Leaderboard=--mcMMO [[BLUE]]{0}[[YELLOW]] \u6392\u884c\u699c--
Commands.SkillInfo=- \u67e5\u770b\u6280\u80fd\u7684\u8be6\u7ec6\u4fe1\u606f
Commands.Stats.Self=\u4f60\u7684\u4fe1\u606f
Commands.Stats=- \u67e5\u770b\u4f60\u7684mcMMO\u7edf\u8ba1\u4fe1\u606f
Commands.ToggleAbility=- \u7528\u9f20\u6807\u53f3\u952e\u5207\u6362\u6280\u80fd\u6fc0\u6d3b\u6a21\u5f0f
Commands.Usage.0=\u6b63\u786e\u7684\u7528\u6cd5 /{0}
Commands.Usage.1=\u6b63\u786e\u7684\u7528\u6cd5\u5e94\u4e3a /{0} {1}
Commands.Usage.2=\u6b63\u786e\u7684\u7528\u6cd5 /{0} {1} {2}
Commands.Usage.3=\u6b63\u786e\u7684\u7528\u6cd5 /{0} {1} {2} {3}
Commands.Usage.FullClassName=\u6570\u636e\u7c7b\u578b
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=\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=\u6b63\u786e\u7684\u7528\u6cd5 [[DARK_AQUA]]{0} <player> [password].
Party.Help.1=\u521b\u5efa\u4e00\u4e2a\u961f\u4f0d, \u4f7f\u7528 [[DARK_AQUA]]{0} <name> [password].
Party.Help.2=\u67e5\u9605 [[DARK_AQUA]]{0} [[RED]]\u83b7\u53d6\u66f4\u591a\u4fe1\u606f
Party.Help.3=\u4f7f\u7528 [[DARK_AQUA]]{0} <player> [password] [[RED]]\u52a0\u5165\u6216 [[DARK_AQUA]]{1} [[RED]]\u9000\u51fa
Party.Help.4=\u9501\u5b9a\u6216\u89e3\u9501\u4f60\u7684\u961f\u4f0d, \u4f7f\u7528 [[DARK_AQUA]]{0}
Party.Help.5=\u8bbe\u7f6e\u961f\u4f0d\u5bc6\u7801, \u4f7f\u7528 [[DARK_AQUA]]{0} <password>
Party.Help.6=\u4ece\u4f60\u7684\u961f\u4f0d\u4e2d\u8e22\u51fa\u73a9\u5bb6, \u4f7f\u7528 [[DARK_AQUA]]{0} <player>
Party.Help.7=\u79fb\u4ea4\u961f\u957f, \u4f7f\u7528 [[DARK_AQUA]]{0} <player>
Party.Help.8=\u89e3\u6563\u961f\u4f0d, \u4f7f\u7528 [[DARK_AQUA]]{0}
Party.Help.9=\u4f7f\u7528 [[DARK_AQUA]]{0} [[RED]]\u6765\u4e0e\u4f60\u7684\u961f\u4f0d\u6210\u5458\u5206\u4eab\u7269\u54c1
Party.Help.10=\u4f7f\u7528 [[DARK_AQUA]]{0} [[RED]]\u5f00\u542f\u4e0e\u4f60\u7684\u961f\u4f0d\u6210\u5458\u5206\u4eab\u7ecf\u9a8c
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=\u4f60\u4e0d\u80fd\u9080\u8bf7\u81ea\u5df1!
Party.IsLocked=\u8fd9\u4e2a\u961f\u4f0d\u5df2\u7ecf\u9501\u5b9a!
Party.IsntLocked=\u8fd9\u4e2a\u961f\u4f0d\u5e76\u6ca1\u6709\u9501\u5b9a!
Party.Locked=\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.Target.NotOwner=[[DARK_RED]]{0} \u4e0d\u662f\u961f\u957f\u3002
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=\u52a0\u5165\u8fd9\u4e2a\u961f\u4f0d\u9700\u8981\u5bc6\u7801. \u8bf7\u63d0\u4f9b\u5bc6\u7801\u518d\u52a0\u5165
Party.Password.Incorrect=\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=\u8fd9\u4e0d\u662f\u4e00\u540d\u6709\u6548\u7684\u73a9\u5bb6
Party.NotOnline=[[DARK_RED]]{0} \u4e0d\u5728\u7ebf!
Party.Player.InSameParty={0} \u5df2\u7ecf\u5728\u961f\u4f0d\u4e2d!
Party.PlayerNotInParty=[[DARK_RED]]{0} \u4e0d\u5728\u961f\u4f0d\u91cc
Party.Specify=\u4f60\u5fc5\u987b\u6307\u5b9a\u4e00\u4e2a\u961f\u4f0d
Party.Teleport.Dead=\u4f60\u4e0d\u80fd\u4f20\u9001\u5230\u6b7b\u4ea1\u7684\u73a9\u5bb6\u8eab\u8fb9
Party.Teleport.Hurt=\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=\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={0} \u4e0d\u5141\u8bb8\u961f\u4f0d\u4f20\u9001
Party.Rename.Same=\u8fd9\u5df2\u7ecf\u662f\u4f60\u7684\u961f\u4f0d\u540d\u5b57\u4e86!
Party.Join.Self=\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.Alliance.Formed=[[GRAY]]\u60a8\u7684\u961f\u4f0d\u5f53\u524d\u4e0e [[GREEN]]{0} [[GRAY]]\u7ed3\u76df
Party.Alliance.Disband=[[GRAY]]\u60a8\u7684\u961f\u4f0d\u4e0d\u518d\u4e0e [[RED]]{0} [[GRAY]]\u7ed3\u76df
Party.Status.Locked=[[DARK_RED]](\u4ec5\u9080\u8bf7)
Party.Status.Unlocked=[[DARK_GREEN]](\u5f00\u542f)
Party.LevelUp=\u961f\u4f0d\u7b49\u7ea7\u63d0\u5347 {0} \u7ea7. \u603b\u8ba1 ({1})
Party.Feature.Chat=\u961f\u4f0d\u804a\u5929
Party.Feature.Teleport=\u961f\u4f0d\u4f20\u9001
Party.Feature.Alliance=\u540c\u76df
Party.Feature.ItemShare=\u7269\u54c1\u5171\u4eab
Party.Feature.XpShare=\u7ecf\u9a8c\u5171\u4eab
Party.Feature.Locked.Chat=\u529f\u80fd\u9501\u5b9a\u76f4\u81f3 {0}+ \u7ea7(\u961f\u4f0d\u804a\u5929)
Party.Feature.Locked.Teleport=\u529f\u80fd\u9501\u5b9a\u76f4\u81f3 {0}+ (\u961f\u4f0d\u4f20\u9001)
Party.Feature.Locked.Alliance=\u529f\u80fd\u9501\u5b9a\u76f4\u81f3 {0}+ (\u540c\u76df)
Party.Feature.Locked.ItemShare=\u529f\u80fd\u9501\u5b9a\u76f4\u81f3 {0}+ (\u7269\u54c1\u5171\u4eab)
Party.Feature.Locked.XpShare=\u529f\u80fd\u9501\u5b9a\u76f4\u81f3 {0}+ (\u7ecf\u9a8c\u5171\u4eab)
Party.Feature.Disabled.1=\u961f\u4f0d\u804a\u5929\u5c1a\u672a\u89e3\u9501\u3002
Party.Feature.Disabled.2=\u961f\u4f0d\u4f20\u9001\u5c1a\u672a\u89e3\u9501\u3002
Party.Feature.Disabled.3=\u961f\u4f0d\u540c\u76df\u5c1a\u672a\u89e3\u9501\u3002
Party.Feature.Disabled.4=\u961f\u4f0d\u7269\u54c1\u5171\u4eab\u5c1a\u672a\u89e3\u9501\u3002
Party.Feature.Disabled.5=\u961f\u4f0d\u7ecf\u9a8c\u5171\u4eab\u5c1a\u672a\u89e3\u9501\u3002
Party.ShareType.Xp=\u7ecf\u9a8c
Party.ShareType.Item=\u7269\u54c1
Party.ShareMode.None=\u65e0
Party.ShareMode.Equal=\u5747\u5206
Party.ShareMode.Random=\u968f\u673a
Party.ItemShare.Category.Loot=\u63a0\u593a
Party.ItemShare.Category.Mining=\u6316\u77ff
Party.ItemShare.Category.Herbalism=\u8349\u836f\u5b66
Party.ItemShare.Category.Woodcutting=\u4f10\u6728
Party.ItemShare.Category.Misc=\u6742\u9879
Commands.XPGain.Acrobatics=\u6389\u843d
Commands.XPGain.Alchemy=\u917f\u9020\u836f\u6c34
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
Commands.XPGain.Mining=\u6316\u6398\u77f3\u5934\u548c\u77ff\u7269
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=\u7ecf\u9a8c\u500d\u7387\u5df2\u8bbe\u7f6e\u4e3a {0}
Commands.xprate.over=mcMMO \u9ad8\u7ecf\u9a8c\u4e8b\u4ef6\u7ed3\u675f!!
Commands.xprate.proper.0=\u60f3\u4fee\u6539\u7ecf\u9a8c\u83b7\u53d6\u7387\u8bf7\u8f93\u5165 /xprate <integer> <true/false>
Commands.xprate.proper.1=\u60f3\u628a\u7ecf\u9a8c\u83b7\u53d6\u7387\u8c03\u6574\u4e3a\u9ed8\u8ba4\u8bf7\u8f93\u5165 /xprate reset
Commands.xprate.proper.2=\u8bf7\u6307\u5b9a true \u6216 false \u6765\u8868\u660e\u8fd9\u662f\u5426\u662f\u4e00\u4e2a\u7ecf\u9a8c\u4e8b\u4ef6
Commands.xprate.started.0=[[GOLD]] mcMMO \u9ad8\u7ecf\u9a8c\u4e8b\u4ef6\u5df2\u5f00\u59cb!
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.Available=[[GRAY]]{0} \u7684\u5411\u5bfc - \u8f93\u5165/{1} ? [\u9875\u6570]
Guides.Header=[[GOLD]]-=[[GREEN]]{0} \u5411\u5bfc[[GOLD]]=-
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.Usage=\u7528\u6cd5 /{0} ? [\u9875\u6570]
Guides.Acrobatics.Section.0=[[DARK_AQUA]]\u5173\u4e8e\u6742\u6280:\n[[YELLOW]]\u6742\u6280\u662f mcMMO \u4e2d\u4f18\u96c5\u79fb\u52a8\u7684\u827a\u672f\u3002\n[[YELLOW]]\u5b83\u63d0\u4f9b\u4e86\u6218\u6597\u52a0\u6210\u548c\u73af\u5883\u4f24\u5bb3\u52a0\u6210\u3002\n\n[[DARK_AQUA]]\u7ecf\u9a8c\u83b7\u53d6:\n[[YELLOW]]\u901a\u8fc7\u5728\u6218\u6597\u4e2d\u95ea\u907f\u6216\u8005\u4ece\u9ad8\u5904\n[[YELLOW]]\u8dcc\u843d\u65f6\u53d7\u4f24\u5e76\u5e78\u5b58\u6765\u83b7\u5f97\u7ecf\u9a8c\u3002
Guides.Acrobatics.Section.1=[[DARK_AQUA]]\u7ffb\u6eda\u662f\u5982\u4f55\u5de5\u4f5c\u7684\uff1f\n[[YELLOW]]\u5f53\u60a8\u53d7\u5230\u8dcc\u843d\u4f24\u5bb3\u65f6\u60a8\u6709\u88ab\u52a8\u673a\u4f1a\u6765\u514d\u53d7\u4f24\u5bb3\u3002\n[[YELLOW]]\u60a8\u53ef\u4ee5\u5728\u8dcc\u843d\u4e2d\u6309\u4f4f\u6f5c\u884c\u952e\u6765\u63d0\u5347\u89e6\u53d1\u51e0\u7387\u3002\n[[YELLOW]]\u8fd9\u5c06\u89e6\u53d1\u4e00\u4e2a\u4f18\u96c5\u5730\u7ffb\u6eda\u800c\u4e0d\u662f\u666e\u901a\u7684\u7ffb\u6eda\u3002\n[[YELLOW]]\u4f18\u96c5\u5730\u7ffb\u6eda\u7c7b\u4f3c\u666e\u901a\u7684\u7ffb\u6eda\u4f46\u662f\u5b83\u6709\u53cc\u500d\u51e0\u7387\n[[YELLOW]]\u53d1\u751f\uff0c\u5e76\u4e14\u80fd\u591f\u63d0\u4f9b\u6bd4\u666e\u901a\u5730\u7ffb\u6eda\u66f4\u9ad8\u7684\u4f24\u5bb3\u51cf\u514d\u3002\n[[YELLOW]]\u7ffb\u6eda\u51e0\u7387\u53d6\u51b3\u4e8e\u60a8\u7684\u6280\u80fd\u7b49\u7ea7
Guides.Acrobatics.Section.2=[[DARK_AQUA]]\u95ea\u907f\u662f\u5982\u4f55\u5de5\u4f5c\u7684?\n[[YELLOW]]\u95ea\u907f\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\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.Alchemy.Section.0=[[DARK_AQUA]]\u5173\u4e8e\u70bc\u91d1:\n[[YELLOW]]\u70bc\u91d1\u662f\u836f\u6c34\u917f\u9020\u7684\u6280\u80fd\u3002\n[[YELLOW]]\u5b83\u63d0\u5347\u4e86\u836f\u6c34\u917f\u9020\u65f6\u7684\u901f\u5ea6\uff0c\u5e76\u4e14\u52a0\u5165\u4e86\n[[YELLOW]]\u65b0\u7684\uff08\u76f8\u5bf9\u4e4b\u524d\uff09\u65e0\u6cd5\u83b7\u53d6\u7684\u836f\u6c34\u3002\n\n\n[[DARK_AQUA]]\u7ecf\u9a8c\u83b7\u53d6\uff1a\n[[YELLOW]]\u901a\u8fc7\u917f\u9020\u836f\u6c34\u6765\u83b7\u53d6\u7ecf\u9a8c\u3002
Guides.Alchemy.Section.1=[[DARK_AQUA]]\u50ac\u5316\u662f\u5982\u4f55\u5de5\u4f5c\u7684\uff1f\n[[YELLOW]]\u50ac\u5316\u63d0\u5347\u917f\u9020\u7684\u901f\u5ea6\uff0c\u5728 1000 \u7ea7\n[[YELLOW]]\u65f6\u80fd\u8fbe\u5230\u6700\u9ad8 4 \u500d\u3002\n[[YELLOW]]\u6b64\u80fd\u529b\u9ed8\u8ba4\u5728 100 \u7ea7\u89e3\u9501\u3002
Guides.Alchemy.Section.2=[[DARK_AQUA]]\u6df7\u5408\u662f\u5982\u4f55\u5de5\u4f5c\u7684\uff1f\n[[YELLOW]]\u6df7\u5408\u5141\u8bb8\u4f7f\u7528\u81ea\u8ba2\u539f\u6599\u917f\u9020\u66f4\u591a\u836f\u6c34\u3002\n[[YELLOW]]\u7279\u6b8a\u539f\u6599\u6839\u636e\u60a8\u7684\u7b49\u7ea7\u6765\u89e3\u9501\u3002\n[[YELLOW]]\u603b\u5171\u6709 8 \u4e2a\u7b49\u7ea7\u9700\u8981\u89e3\u9501\u3002
Guides.Alchemy.Section.3=[[DARK_AQUA]]\u6df7\u5408\u7b2c 1 \u9636\u539f\u6599:\n[[YELLOW]]\u70c8\u7130\u7c89, \u53d1\u9175\u86db\u773c, \u6076\u9b42\u4e4b\u6cea, \u7ea2\u77f3,\n[[YELLOW]]\u8424\u77f3\u7c89, \u7cd6, \u95ea\u70c1\u7684\u897f\u74dc, \u91d1\u80e1\u841d\u535c,\n[[YELLOW]]\u5ca9\u6d46\u818f, \u5730\u72f1\u75a3, \u8718\u86db\u773c, \u706b\u836f, \u7761\u83b2,\n[[YELLOW]]\u6cb3\u8c5a\n[[YELLOW]](\u7eaf\u51c0\u836f\u6c34)
Guides.Alchemy.Section.4=[[DARK_AQUA]]\u6df7\u5408\u7b2c 2 \u9636\u539f\u6599:\n[[YELLOW]]\u80e1\u841d\u535c (\u6025\u8feb\u836f\u6c34)\n[[YELLOW]]\u7c98\u6db2\u7403 (\u8fdf\u949d\u836f\u6c34)\n\n[[DARK_AQUA]]\u6df7\u5408\u7b2c 3 \u9636\u539f\u6599:\n[[YELLOW]]\u4e0b\u754c\u77f3\u82f1 (\u4f24\u5bb3\u5438\u6536\u836f\u6c34)\n[[YELLOW]]\u7ea2\u8272\u8611\u83c7 (\u8df3\u8dc3\u836f\u6c34)
Guides.Alchemy.Section.5=[[DARK_AQUA]]\u6df7\u5408\u7b2c 4 \u9636\u539f\u6599:\n[[YELLOW]]\u82f9\u679c (\u751f\u547d\u52a0\u6210\u836f\u6c34)\n[[YELLOW]]\u8150\u8089 (\u9965\u997f\u836f\u6c34)\n\n[[DARK_AQUA]]\u6df7\u5408\u7b2c 5 \u9636\u539f\u6599:\n[[YELLOW]]\u8910\u8272\u8611\u83c7 (\u53cd\u80c3\u836f\u6c34)\n[[YELLOW]]\u58a8\u56ca (\u5931\u660e\u836f\u6c34)
Guides.Alchemy.Section.6=[[DARK_AQUA]]\u6df7\u5408\u7b2c 6 \u9636\u539f\u6599:\n[[YELLOW]]\u8568\u7c7b (\u9971\u548c\u836f\u6c34)\n\n[[DARK_AQUA]]\u6df7\u5408\u7b2c 7 \u9636\u539f\u6599:\n[[YELLOW]]\u6bd2\u9a6c\u94c3\u85af (Potion of Decay)\n\n[[\u8150\u70c2\u836f\u6c34]]\u6df7\u5408\u7b2c 8 \u9636\u539f\u6599:\n[[YELLOW]]\u666e\u901a\u91d1\u82f9\u679c (\u6297\u6027\u63d0\u5347\u836f\u6c34)
Guides.Axes.Section.0=[[DARK_AQUA]]\u5173\u4e8e \u65a7\u6280:\n[[YELLOW]]\u6709\u4e86\u65a7\u5934\u6280\u80fd,\u65a7\u5b50\u4e0d\u518d\u53ea\u662f\u780d\u6811\u800c\u5df2.\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\u653b\u51fb\u5176\u4ed6\u751f\u7269\u6216\u73a9\u5bb6.
Guides.Axes.Section.1=[[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]]\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
Guides.Axes.Section.2=[[DARK_AQUA]]\u4ec0\u4e48\u662f\u81f4\u547d\u4e00\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\u6bcf2\u7ea7\u589e\u52a0 0.1%\n[[YELLOW]]\u5bf9\u751f\u7269\u9020\u62102\u500d\u4f24\u5bb3\n[[YELLOW]]\u5bf9\u73a9\u5bb6\u9020\u62101.5\u500d\u4f24\u5bb3
Guides.Axes.Section.3=[[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\u6bcf50\u7ea7\u989d\u5916\u63d0\u9ad81\u70b9\u4f24\u5bb3\n[[YELLOW]]4\u70b9\u989d\u5916\u4f24\u5bb3\u5c01\u9876
Guides.Axes.Section.5=[[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\u654c\u4eba\u5e26\u6765\u5de8\u5927\u7684\u51b2\u51fb\u529b\n[[YELLOW]]\u9ed8\u8ba4\u51e0\u7387\u4e3a 25%\n[[YELLOW]]\u6548\u679c\u76f8\u5f53\u4e8e \u51fb\u9000 II \u7684\u9644\u9b54\u6548\u679c\n[[YELLOW]]\u6b64\u5916\u8fd8\u4f1a\u5bf9\u76ee\u6807\u9020\u6210\u989d\u5916\u4f24\u5bb3
Guides.Mining.Section.0=[[DARK_AQUA]]\u5173\u4e8e \u6316\u77ff:\n[[YELLOW]]\u5728\u6316\u77ff\u7684\u65f6\u5019,\u6316\u77ff\u6280\u80fd\u53ef\u4ee5\u63d0\u4f9b\u591a\u91cd\u77ff\u7269\u6389\u843d\u7684\u5956\u52b1.\n\n[[DARK_AQUA]]\u7ecf\u9a8c\u63d0\u5347:\n[[YELLOW]]\u4f60\u5fc5\u987b\u4f7f\u7528\u9550\u5b50\u6316\u6389\u6709\u6548\u7684\u65b9\u5757\u624d\u80fd\u589e\u52a0\u672c\u6280\u80fd\u7684\u7ecf\u9a8c.
Guides.Mining.Section.1=[[DARK_AQUA]]\u517c\u5bb9\u6750\u6599:\n[[YELLOW]]\u77f3\u5934,\u7164\u77ff\u77f3,\u94c1\u77ff\u77f3,\u91d1\u77ff\u77f3,\u94bb\u77f3\u77ff\u77f3,\u7ea2\u77f3\u77ff\u77f3,\n[[YELLOW]]\u9752\u91d1\u77f3\u77ff\u77f3,\u9ed1\u66dc\u77f3,\u82d4\u77f3,\u672b\u5730\u77f3,\n[[YELLOW]]\u8424\u77f3,\u5730\u72f1\u5ca9.
Guides.Mining.Section.2=[[DARK_AQUA]]\u5982\u4f55\u4f7f\u7528\u8d85\u7ea7\u788e\u77f3\u673a:\n[[YELLOW]]\u628a\u9550\u5b50\u62ff\u5728\u4f60\u7684\u624b\u4e0a,\u6309\u4e0b\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\u4f60\u6572\u4e0b\u5bf9\u5e94\u7684\u77f3\u5934\u4ee5\u540e,\u8d85\u7ea7\u788e\u77f3\u673a\u5c06\u88ab\u6fc0\u6d3b.
Guides.Mining.Section.3=[[DARK_AQUA]]\u4ec0\u4e48\u662f\u8d85\u7ea7\u788e\u77f3\u673a?\n[[YELLOW]]\u8d85\u7ea7\u788e\u77f3\u673a\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd\n[[YELLOW]]\u5b83\u80fd\u4f7f\u4f60\u5728\u6316\u6389\u5bf9\u5e94\u77ff\u77f3\u7684\u65f6\u5019\u589e\u52a03\u500d\u6389\u843d\u51e0\u7387\n[[YELLOW]]\u5e76\u4e14\u5728\u6280\u80fd\u65f6\u95f4\u5185\u77ac\u95f4\u7834\u574f\u77f3\u5934\u548c\u77ff\u77f3
Guides.Mining.Section.4=[[DARK_AQUA]\u5982\u4f55\u4f7f\u7528\u7206\u7834\u5f00\u91c7:\n[[YELLOW]]\u628a\u96f7\u7ba1\u62ff\u5728\u624b\u4e0a,\u9ed8\u8ba4\u7684\u60c5\u51b5\u4e0b\u662f\u6253\u706b\u5668.\n[[YELLOW]]\u5728\u4e00\u5b9a\u8ddd\u79bb\u5185\u53f3\u952e\u70b9\u51fbTNT,\u8fd9\u5c06\u4f1a\u4f7f\u5f97TNT\u5728\u77ac\u95f4\u5185\u7206\u70b8.
Guides.Mining.Section.5=[[DARK_AQUA]]\u4ec0\u4e48\u662f\u7206\u7834\u5f00\u91c7?\n[[YELLOW]]\u7206\u7834\u5f00\u91c7\u662f\u4e00\u4e2a\u9700\u8981\u51b7\u5374\u65f6\u95f4\u7684\u6316\u77ff\u6280\u80fd\n[[YELLOW]]\u5b83\u80fd\u4f7f\u4f60\u5728\u4f7f\u7528TNT\u70b8\u77ff\u65f6\u83b7\u5f97\u989d\u5916\u5956\u52b1\n[[YELLOW]]\u7206\u7834\u5f00\u91c7\u603b\u5171\u67093\u4e2a\u529f\u80fd\n[[YELLOW]]\u5927\u53f7\u70b8\u5f39:\u4f7f\u4f60\u7684TNT\u7206\u70b8\u8303\u56f4\u6269\u5927\n[[YELLOW]]\u7206\u7834\u4e13\u5bb6:\u964d\u4f4e\u4f60\u53d7\u5230TNT\u7684\u7206\u70b8\u4f24\u5bb3\n[[YELLOW]]\u7206\u7834\u5f00\u91c7:\u4f7f\u4f60\u70b9\u71c3\u7684TNT\u70b8\u4e0b\u8303\u56f4\u5185\u4e00\u5b9a\u6570\u91cf\u7684\u77ff\u77f3
Guides.Repair.Section.1=[[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.
Guides.Repair.Section.3=[[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\u4f1a\u6062\u590d\u53cc\u500d\u7684\u8010\u4e45
Guides.Swords.Section.0=[[DARK_AQUA]]\u5173\u4e8e\u5251\u672f:\n[[YELLOW]]\u5251\u672f\u8ba9\u73a9\u5bb6\u5728\u4f7f\u7528\u5251\u6218\u6597\u65f6\u83b7\u5f97\u989d\u5916\u52a0\u6210\u6548\u679c.\n\n[[DARK_AQUA]]\u5982\u4f55\u83b7\u53d6\u7ecf\u9a8c:\n[[YELLOW]]\u8981\u83b7\u53d6\u7ecf\u9a8c\u4f60\u5fc5\u987b\u7528\u5251\u653b\u51fb\u654c\u4eba.
Guides.Swords.Section.1=[[DARK_AQUA]]\u4ec0\u4e48\u662f\u5229\u5203\u7a81\u523a?\n[[YELLOW]]\u5229\u5203\u7a81\u523a\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd.\n[[YELLOW]]\u4f60\u53ef\u4ee5\u5c06\u62ff\u5728\u624b\u4e0a\u7684\u5251\u6309\u4e0b\u53f3\u952e\u6765\u542f\u52a8\u5b83.\n[[YELLOW]]\u8fd9\u4e2a\u6280\u80fd\u5c06\u9020\u621025%\u7684\u989d\u5916\u8303\u56f4\u4f24\u5bb3\n[[YELLOW]]\u5e76\u4e14\u9644\u5e26\u81f3\u5c115\u4e2aticks\u7684\u653e\u8840\u6548\u679c
Guides.Swords.Section.2=[[DARK_AQUA]]\u4ec0\u4e48\u662f\u53cd\u51fb?\n[[YELLOW]]\u53cd\u51fb\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd\n[[YELLOW]]\u5f53\u683c\u6863\u602a\u7269\u6240\u9020\u6210\u7684\u4f24\u5bb3\u65f6\n[[YELLOW]]\u4f60\u6709\u673a\u4f1a\u53cd\u5c0450%\u6240\u53d7\u5230\u7684\u4f24\u5bb3
Guides.Swords.Section.3=[[DARK_AQUA]]\u4ec0\u4e48\u662f\u653e\u8840?\n[[YELLOW]]\u653e\u8840\u5c06\u9020\u6210\u654c\u4eba\u6bcf\u4e24\u79d2\u949f\u53d7\u5230\u4f24\u5bb3\n[[YELLOW]]\u76ee\u6807\u4e0d\u505c\u7684\u6d41\u8840\u76f4\u5230\u6548\u679c\u7ed3\u675f\u6216\u662f\u6b7b\u4ea1\n[[YELLOW]]\u653e\u8840\u7684\u65f6\u95f4\u968f\u7740\u4f60\u7684\u5251\u672f\u7684\u63d0\u5347\u800c\u589e\u52a0
Guides.Smelting.Section.0=\u5373\u5c06\u5230\u6765...
Guides.Taming.Section.1=[[DARK_AQUA]]\u4ec0\u4e48\u662f\u91ce\u6027\u547c\u5524?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u4e3b\u52a8\u6280\u80fd\n[[YELLOW]]\u5b83\u53ef\u4ee5\u53ec\u5524\u4e00\u53ea\u72fc,\u8c79\u732b\u6216\u8005\u9a6c\u5230\u4f60\u8eab\u8fb9\n[[YELLOW]]\u624b\u6301\u9aa8\u5934,\u751f\u9c7c\u6216\u82f9\u679c\u6765\u8fdb\u884c\u53ec\u5524
Guides.Taming.Section.8=[[DARK_AQUA]]\u4ec0\u4e48\u662f\u5feb\u9910\u670d\u52a1?\n[[YELLOW]]\u8fd9\u662f\u4e00\u4e2a\u88ab\u52a8\u6280\u80fd\n[[YELLOW]]\u653b\u51fb\u65f6\u6062\u590d\u72fc\u7684\u751f\u547d\u503c
Inspect.Offline=\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={0} [[GREEN]]\u7684 mcMMO \u7edf\u8ba1\u4fe1\u606f
Inspect.TooFar=\u4f60\u65e0\u6cd5\u68c0\u67e5\u90a3\u4e2a\u73a9\u5bb6\u56e0\u4e3a\u4f60\u4eec\u8ddd\u79bb\u592a\u8fdc\u4e86!
Item.ChimaeraWing.Fail=**\u5947\u7f8e\u62c9\u4e4b\u7ffc\u5931\u8d25\u4e86!**
Item.ChimaeraWing.Pass=**\u5947\u7f8e\u62c9\u4e4b\u7ffc**
Item.ChimaeraWing.Name=\u5947\u7f8e\u62c9\u4e4b\u7ffc
Item.ChimaeraWing.Lore=[[GRAY]]\u4f20\u9001\u81f3\u4f60\u7684\u5e8a.
Item.Generic.Wait=\u4f60\u9700\u8981\u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4\u624d\u80fd\u518d\u6b21\u4f7f\u7528! [[YELLOW]]({0}s)
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)
Item.FluxPickaxe.Name=\u707c\u70ed\u4e4b\u9550
Item.FluxPickaxe.Lore.1=[[GRAY]]\u6709\u51e0\u7387\u77ac\u95f4\u7194\u70bc\u77ff\u7269\u3002
Item.FluxPickaxe.Lore.2=[[GRAY]]\u9700\u8981\u7194\u70bc\u7b49\u7ea7 {0}+
Teleport.Commencing=[[GRAY]]\u4f20\u9001\u5c06\u5728 [[GOLD]]({0}) [[GRAY]] \u79d2\u540e\u8fdb\u884c, \u8bf7\u4fdd\u6301\u7ad9\u7acb\u4e0d\u52a8...
Teleport.Cancelled=[[DARK_RED]]\u4f20\u9001\u5df2\u53d6\u6d88!
Skills.Child=[[GOLD]](\u5206\u652f\u6280\u80fd)
Skills.Disarmed=[[DARK_RED]]\u4f60\u88ab\u7f34\u68b0\u4e86!
Skills.Header=-----[][[GREEN]]{0}[[RED]][]-----
Skills.NeedMore=[[DARK_RED]]\u4f60\u9700\u8981\u66f4\u591a\u7684 [[GRAY]]{0}
Skills.Parents=\u4e3b\u6280\u80fd
Skills.Stats={0}[[GREEN]]{1}[[DARK_AQUA]] XP([[GRAY]]{2}[[DARK_AQUA]]/[[GRAY]]{3}[[DARK_AQUA]])
Skills.ChildStats={0}[[GREEN]]{1}
Skills.TooTired=\u4f60\u592a\u7d2f\u4e86\u6682\u65f6\u65e0\u6cd5\u4f7f\u7528\u8be5\u6280\u80fd.[[YELLOW]]({0}s)
Skills.Cancelled={0} \u5df2\u53d6\u6d88!
Skills.ConfirmOrCancel=[[GREEN]]\u518d\u6b21\u53f3\u952e\u4ee5\u786e\u5b9a [[GOLD]]{0}[[GREEN]]. \u5de6\u952e\u53d6\u6d88.
Stats.Header.Combat=[[GOLD]]-=\u683c\u6597\u6280\u80fd=-
Stats.Header.Gathering=[[GOLD]]-=\u91c7\u96c6\u6280\u80fd=-
Stats.Header.Misc=[[GOLD]]-=\u6742\u9879\u6280\u80fd=-
Stats.Own.Stats=[[GREEN]][mcMMO] \u7edf\u8ba1\u4fe1\u606f
Perks.XP.Name=\u7ecf\u9a8c
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\u6fc0\u6d3b\u65f6\u95f4 {0} \u79d2.
Perks.ActivationTime.Bonus=[[GOLD]] ({0} \u79d2\u989d\u5916\u6301\u7eed\u65f6\u95f4)
Hardcore.Mode.Disabled=[[GOLD]][mcMMO] \u786c\u6838\u6a21\u5f0f {0} \u5173\u95ed. {1}
Hardcore.Mode.Enabled=[[GOLD]][mcMMO] \u786c\u6838\u6a21\u5f0f {0} \u542f\u7528. {1}
Hardcore.DeathStatLoss.Name=\u6280\u80fd\u6b7b\u4ea1\u60e9\u7f5a
Hardcore.DeathStatLoss.PlayerDeath=[[GOLD]][mcMMO] [[DARK_RED]]\u6b7b\u4ea1,\u4f60\u5931\u53bb\u4e86 [[BLUE]]{0}[[DARK_RED]].
Hardcore.DeathStatLoss.PercentageChanged=[[GOLD]][mcMMO] \u72b6\u6001\u9057\u5931\u7387\u53d8\u66f4\u4e3a {0}.
Hardcore.Vampirism.Name=\u5438\u8840\u6a21\u5f0f
Hardcore.Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]]\u592a\u4e0d\u719f\u7ec3\u6388\u4e88\u4f60\u83b7\u5f97\u4efb\u4f55\u7684\u77e5\u8bc6.
Hardcore.Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]\u4f60\u4ece[[YELLOW]]{1}[[DARK_AQUA]]\u90a3\u5077\u53d6\u4e86[[BLUE]]{0}[[DARK_AQUA]]\u4e2a\u7b49\u7ea7.
Hardcore.Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]]\u65e0\u6cd5\u4ece\u4f60\u8fd9\u5077\u53d6\u4efb\u4f55\u7684\u77e5\u8bc6!
Hardcore.Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]]\u4ece\u4f60\u8fd9\u5077\u53d6\u4e86[[BLUE]]{1}[[DARK_RED]]\u4e2a\u7b49\u7ea7!
Hardcore.Vampirism.PercentageChanged=[[GOLD]][mcMMO] \u72b6\u6001\u5438\u6536\u7387\u53d8\u66f4\u4e3a {0}.
MOTD.Donate=[[DARK_AQUA]]\u6350\u8d60\u4fe1\u606f:
MOTD.Hardcore.Enabled=[[GOLD]][mcMMO] [[DARK_AQUA]]\u786c\u6838\u6a21\u5f0f\u5df2\u542f\u7528: [[DARK_RED]]{0}
MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]\u6280\u80fd\u6b7b\u4ea1\u60e9\u7f5a: [[DARK_RED]]{0}%
MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Vampirism\u7edf\u8ba1: [[DARK_RED]]{0}%
MOTD.PerksPrefix=[mcMMO \u80fd\u529b]
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=\u70bd\u70ed\u7684\u9550\u5b50\u89e6\u53d1\u51e0\u7387: [[YELLOW]]{0}
Smelting.Ability.FuelEfficiency=\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=\u4e8c\u6b21\u7194\u70bc\u51e0\u7387: [[YELLOW]]{0}
Smelting.Ability.VanillaXPBoost=\u7ecf\u9a8c\u52a0\u500d: [[YELLOW]]{0}x
Smelting.SubSkill.FuelEfficiency.Name=\u71c3\u6599\u6548\u7387
Smelting.SubSkill.FuelEfficiency.Description=\u7194\u70bc\u65f6\u63d0\u9ad8\u7194\u7089\u5185\u71c3\u6599\u7684\u71c3\u70e7\u65f6\u95f4
Smelting.SubSkill.SecondSmelt.Name=\u4e8c\u6b21\u7194\u70bc
Smelting.SubSkill.SecondSmelt.Description=\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.SubSkill.FluxMining.Name=\u70bd\u70ed\u7684\u9550\u5b50
Smelting.SubSkill.FluxMining.Description=\u6316\u77ff\u65f6\u4e00\u5b9a\u51e0\u7387\u4f7f\u77ff\u77f3\u7acb\u5373\u88ab\u7194\u70bc
Smelting.Listener=\u51b6\u70bc:
Smelting.SkillName=\u51b6\u70bc
Commands.Description.addlevels=\u7ed9\u73a9\u5bb6\u589e\u52a0 mcMMO \u7b49\u7ea7
Commands.Description.adminchat=\u5207\u6362 mcMMO \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\u7684 mcMMO \u4fe1\u606f
Commands.Description.mcability=\u5207\u6362 mcMMO \u6280\u80fd\u80fd\u5426\u88ab\u53f3\u952e\u6fc0\u6d3b
Commands.Description.mcgod=\u5207\u6362 mcMMO \u4e0a\u5e1d\u6a21\u5f0f
Commands.Description.mchud=\u53d8\u66f4\u4f60\u7684 mcMMO HUD \u6837\u5f0f
Commands.Description.mcmmo=\u663e\u793a mcMMO \u7684\u7b80\u5355\u63cf\u8ff0
Commands.Description.mcnotify=\u5207\u6362 mcMMO \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\u7684 mcMMO \u6392\u540d
Commands.Description.mcrefresh=\u5237\u65b0\u6240\u6709\u7684 mcMMO \u51b7\u5374\u65f6\u95f4
Commands.Description.mcremove=\u4ece mcMMO \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=\u4ece\u4e00\u4e2a\u65e7\u7684 mcMMO \u6570\u636e\u5e93\u8fc1\u79fb\u5230\u5f53\u524d\u6570\u636e\u5e93\u5185
Commands.Description.mcconvert=\u8f6c\u6362\u6570\u636e\u5e93\u7684\u7c7b\u578b\u6216\u7ecf\u9a8c\u503c\u516c\u5f0f\u7684\u7c7b\u578b
Commands.Description.mmoshowdb=\u663e\u793a\u5f53\u524d\u6570\u636e\u5e93\u7c7b\u578b\u540d\u79f0 (\u8fc7\u540e\u66f4\u65b0\u4f7f\u7528 /mmoupdate)
Commands.Description.party=\u63a7\u5236\u5404\u79cd mcMMO \u961f\u4f0d\u8bbe\u7f6e
Commands.Description.partychat=\u5207\u6362 mcMMO \u961f\u4f0d\u804a\u5929\u6216\u53d1\u9001\u961f\u4f0d\u804a\u5929\u6d88\u606f
Commands.Description.ptp=\u4f20\u9001\u81f3 mcMMO \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\u5b9a mcMMO \u6280\u80fd\u7684\u7ecf\u9a8c\u6761
Commands.Description.xprate=\u66f4\u6539 mcMMO \u7ecf\u9a8c\u500d\u7387\u6216\u5f00\u542f\u4e00\u4e2a mcMMO \u7ecf\u9a8c\u7ffb\u500d\u4e8b\u4ef6
UpdateChecker.Outdated=\u4f60\u6b63\u4f7f\u7528\u7740\u4e00\u4e2a\u8fc7\u65f6\u7248\u672c\u7684 mcMMO !
UpdateChecker.NewAvailable=\u53d1\u73b0 BukkitDev \u4e0a\u6709\u53ef\u7528\u65b0\u7248\u672c.
Scoreboard.Header.PlayerStats=mcMMO \u7edf\u8ba1
Scoreboard.Header.PlayerCooldowns=mcMMO \u51b7\u5374
Scoreboard.Header.PlayerRank=mcMMO \u6392\u540d
Scoreboard.Header.PlayerInspect=mcMMO \u7edf\u8ba1: {0}
Scoreboard.Header.PowerLevel=\u6218\u6597\u529b
Scoreboard.Misc.PowerLevel=[[GOLD]]\u6218\u6597\u529b
Scoreboard.Misc.Level=[[DARK_AQUA]]\u7b49\u7ea7
Scoreboard.Misc.CurrentXP=[[GREEN]]\u5f53\u524d\u7ecf\u9a8c
Scoreboard.Misc.RemainingXP=\u5347\u7ea7\u6240\u9700\u7ecf\u9a8c
Scoreboard.Misc.Cooldown=[[LIGHT_PURPLE]]\u51b7\u5374
Scoreboard.Misc.Overall=[[GOLD]]\u603b\u4f53
Scoreboard.Misc.Ability=\u80fd\u529b
Recovery.Notice=\u6ce8\u610f: mcMMO[[DARK_RED]]\u65e0\u6cd5\u8f7d\u5165\u4f60\u7684\u6570\u636e.[[RED]] \u91cd\u8bd55\u6b21...
Recovery.Success=[[GREEN]]\u6210\u529f!\u4f60\u7684mcMMO\u6570\u636e\u5df2\u8f7d\u5165.
Recovery.Failure=mcMMO\u65e0\u6cd5\u8f7d\u5165\u4f60\u7684\u6570\u636e,\u4f60\u53ef\u80fd\u9700\u8981\u8054\u7cfb[[AQUA]]\u6e38\u620f\u7ba1\u7406\u5458\n[[YELLOW]]\u4f60\u53ef\u4ee5\u7ee7\u7eed\u6e38\u620f,\u4f46\u4f60[[BOLD]]\u65e0\u6cd5\u5f97\u5230mcMMO\u7b49\u7ea7[[YELLOW]]\u548c\u4efb\u4f55\u7ecf\u9a8c[[BOLD]]\u6240\u6709\u6570\u636e\u4e0d\u4f1a\u88ab\u4fdd\u5b58[[YELLOW]].
Recovery.AdminFailureNotice=[[DARK_RED]][A][[RED]]mcMMO\u65e0\u6cd5\u8f7d\u5165\u73a9\u5bb6[[YELLOW]]{0}[[RED]]\u7684\u6570\u636e. [[LIGHT_PURPLE]]\u8bf7\u68c0\u67e5\u4f60\u7684\u6570\u636e\u5e93\u6216\u8bbe\u7f6e.

View File

@@ -1,131 +0,0 @@
#
# Armor example configuration
# Last updated on ${project.version}-b${BUILD_NUMBER}
#
# Any file named armor.*.yml in the mod folder will be loaded as a armor config
# For every armor type there is a separate section.
# The names of each subitem should be the exact material name.
# The bare minimum of an Armor piece is that it has a Repair_Material
#
#
# Repairable: Whether or not the item is repairable
## This defaults to true
#
# Repair_Material: This is the material name of the item used to repair this armor.
## This is required to be set if you want to be able to repair the item.
#
# Repair_Material_Data_Value: This is the metadata of the item used to repair this armor.
## A value of -1 means to ignore all metadata when repairing.
## This defaults to -1
#
# Repair_Material_Quantity: This is the minimum number of items needed to repair this item ignoring all other repair bonuses.
## This is typically the number of the repair material needed to create a new item, for example for a sword it is 2, for an axe it is 3
## This defaults to 9
#
# Repair_Material_Pretty_Name: The pretty name of the repair material.
## Used in the feedback message when not enough repair materials are found.
## This defaults to the Repair_Material converted to string.
#
# Repair_Material_Pretty_Name: The pretty name of the repair material.
## Used in the feedback message when not enough repair materials are found.
## This defaults to the Repair_Material converted to string.
#
# Repair_MinimumLevel: This is the minimum repair level needed to repair this item.
## Valid values are => 0
## This defaults to 0
#
# Repair_XpMultiplier: This is the amount to multiply the xp bonus by.
## This defaults to 1
#
# Durability: This is the maximum durability of the armor.
## Valid values are >= 1
#
###
#
# Settings for Boots
###
Boots:
Boot_1:
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 999
Boot_2:
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 999
#
# Settings for Chestplates
###
Chestplates:
Chestplate_1:
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 999
Chestplate_2:
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 999
#
# Settings for Helmets
###
Helmets:
Helmet_1:
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 999
Helmet_2:
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 999
#
# Settings for Leggings
###
Leggings:
Legging_1:
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 999
Legging_2:
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 999

View File

@@ -1,220 +0,0 @@
#
# Tools example configuration
# Last updated on ${project.version}-b${BUILD_NUMBER}
#
# Any file named tools.*.yml in the mod folder will be loaded as a tools config
# For every tool type there is a separate section.
# The names of each subitem should be the exact material name.
# The bare minimum of a Tool is that it has a Repair_Material
#
#
#
# XP_Modifier: This is the xp modifier of the tool, xp is multiplied by this modifier.
## Valid values are > 0
## This defaults to 1.0.
#
# Tier: The tier of the tool
## Used to determine the capabilities of AoE abilities with certain skills
## Valid values range from 1 to 4
## This defaults to 1
#
# Ability_Enabled: Whether or not abilities are enabled with this tool
## This defaults to true
#
# Repairable: Whether or not the item is repairable
## This defaults to true
#
# Repair_Material: This is the material name of the item used to repair this tool.
## This is required to be set if you want to be able to repair the item.
#
# Repair_Material_Data_Value: This is the metadata of the item used to repair this tool.
## A value of -1 means to ignore all metadata when repairing.
## This defaults to -1
#
# Repair_Material_Quantity: This is the minimum number of items needed to repair this item ignoring all other repair bonuses.
## This is typically the number of the repair material needed to create a new item, for example for a sword it is 2, for an axe it is 3
## This defaults to 9
#
# Repair_Material_Pretty_Name: The pretty name of the repair material.
## Used in the feedback message when not enough repair materials are found.
## This defaults to the Repair_Material converted to string.
#
# Repair_MinimumLevel: This is the minimum repair level needed to repair this item.
## Valid values are => 0
## This defaults to 0
#
# Repair_XpMultiplier: This is the amount to multiply the xp bonus by.
## This defaults to 1
#
# Durability: This is the maximum durability of the tool.
## Valid values are >= 1
#
###
#
# Settings for Axes
###
Axes:
Axe_1:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
Axe_2:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
#
# Settings for Bows
###
Bows:
Bow_1:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
Bow_2:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
#
# Settings for Hoes
###
Hoes:
Hoe_1:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
Hoe_2:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
#
# Settings for Pickaxes
###
Pickaxes:
Pickaxe_1:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
Pickaxe_2:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
#
# Settings for Shovels
###
Shovels:
Shovel_1:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
Shovel_2:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
#
# Settings for Swords
###
Swords:
Sword_1:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999
Sword_2:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: REPAIR_MATERIAL_NAME
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Repair_Material_Pretty_Name: Repair Item Name
Repair_MinimumLevel: 0
Repair_XpMultiplier: 1.0
Durability: 9999

File diff suppressed because it is too large Load Diff

View File

@@ -1,254 +0,0 @@
#
# Salvage configuration
# Last updated on ${project.version}-b${BUILD_NUMBER}
#
# Any file named salvage.*.yml in the mcmmmo folder will be loaded as a salvage config
# All salvage configs have a main section titled "Salvageables"
# Afterwards, all sub-items are considered a Salvageable to be loaded. The names of each subitem should be the exact material name.
# The bare minimum of a Salvageable is that it has a minimumLevel and XpMultiplier.
#
# ItemType: This is the type of item to be repaired, this is only important to permissions.
## Valid values are ARMOR, TOOL, and OTHER.
## This defaults to OTHER.
#
# MaterialType: This is the type of the material of the item to be salvaged, this is only important for permissions.
## Valid values are STRING, LEATHER, WOOD, STONE, IRON, GOLD, DIAMOND, and OTHER
## This defaults to OTHER.
#
# SalvageMaterial: This is the material name of the item used to salvage this item.
## This is required to be set for non craftable items, if not set mcMMO checks the crafting recipe to see which items
## should be dropped when salvaging the item.
#
# SalvageMaterialMetadata: This is the metadata of the item used to salvage this item.
## A value of -1 means to ignore all metadata when repairing.
## This defaults to -1
#
# MaximumDurability: This is the maximum durability of the item.
#
# MinimumLevel: This is the minimum repair level needed to salvage this item.
## Valid values are => 0
## This defaults to 0
#
# MaximumQuantity: This is the maximum number of items yield after salvaging the item, ignoring all other salvage bonuses.
## This is typically the number of the salvage material needed to create a new item, for example for a sword it is 2, for an axe it is 3
## This defaults to 2
#
# XpMultiplier: This is the amount to multiply the xp bonus by.
## This defaults to 1
#
#
# The following is the default salvage config that ships with mcMMO, it contains all vanilla items that are salvageable.
#
#
###
Salvageables:
#
# Wooden salvageables
###
# Tools
WOODEN_SWORD:
MinimumLevel: 0
XpMultiplier: .25
MaximumQuantity: 2
WOODEN_SHOVEL:
MinimumLevel: 0
XpMultiplier: .16
MaximumQuantity: 1
WOODEN_PICKAXE:
MinimumLevel: 0
XpMultiplier: .5
MaximumQuantity: 3
WOODEN_AXE:
MinimumLevel: 0
XpMultiplier: .5
MaximumQuantity: 2
WOODEN_HOE:
MinimumLevel: 0
XpMultiplier: .25
MaximumQuantity: 2
#
# Stone salvageables
###
# Tools
STONE_SWORD:
MinimumLevel: 0
XpMultiplier: .25
MaximumQuantity: 2
STONE_SHOVEL:
MinimumLevel: 0
XpMultiplier: .16
MaximumQuantity: 1
STONE_PICKAXE:
MinimumLevel: 0
XpMultiplier: .5
MaximumQuantity: 3
STONE_AXE:
MinimumLevel: 0
XpMultiplier: .5
MaximumQuantity: 2
STONE_HOE:
MinimumLevel: 0
XpMultiplier: .25
MaximumQuantity: 2
#
# Iron salvageables
###
# Tools
IRON_SWORD:
MinimumLevel: 0
XpMultiplier: .5
MaximumQuantity: 2
IRON_SHOVEL:
MinimumLevel: 0
XpMultiplier: .3
MaximumQuantity: 1
IRON_PICKAXE:
MinimumLevel: 0
XpMultiplier: 1
MaximumQuantity: 3
IRON_AXE:
MinimumLevel: 0
XpMultiplier: 1
MaximumQuantity: 2
IRON_HOE:
MinimumLevel: 0
XpMultiplier: .5
MaximumQuantity: 2
SHEARS:
MinimumLevel: 0
XpMultiplier: .5
FLINT_AND_STEEL:
MinimumLevel: 0
XpMultiplier: .3
# Armor
IRON_HELMET:
MinimumLevel: 0
XpMultiplier: 2
MaximumQuantity: 5
IRON_CHESTPLATE:
MinimumLevel: 0
XpMultiplier: 2
MaximumQuantity: 8
IRON_LEGGINGS:
MinimumLevel: 0
XpMultiplier: 2
MaximumQuantity: 7
IRON_BOOTS:
MinimumLevel: 0
XpMultiplier: 2
MaximumQuantity: 4
#
# Gold salvageables
###
# Tools
GOLDEN_SWORD:
MinimumLevel: 0
XpMultiplier: 4
MaximumQuantity: 2
GOLDEN_SHOVEL:
MinimumLevel: 0
XpMultiplier: 2.6
MaximumQuantity: 1
GOLDEN_PICKAXE:
MinimumLevel: 0
XpMultiplier: 8
MaximumQuantity: 3
GOLDEN_AXE:
MinimumLevel: 0
XpMultiplier: 8
MaximumQuantity: 2
GOLDEN_HOE:
MinimumLevel: 0
XpMultiplier: 4
MaximumQuantity: 2
# Armor
GOLDEN_HELMET:
MinimumLevel: 0
XpMultiplier: 4
MaximumQuantity: 5
GOLDEN_CHESTPLATE:
MinimumLevel: 0
XpMultiplier: 4
MaximumQuantity: 8
GOLDEN_LEGGINGS:
MinimumLevel: 0
XpMultiplier: 4
MaximumQuantity: 7
GOLDEN_BOOTS:
MinimumLevel: 0
XpMultiplier: 4
MaximumQuantity: 4
#
# Diamond salvageables
###
# Tools
DIAMOND_SWORD:
MinimumLevel: 50
XpMultiplier: .5
MaximumQuantity: 2
DIAMOND_SHOVEL:
MinimumLevel: 50
XpMultiplier: .3
MaximumQuantity: 1
DIAMOND_PICKAXE:
MinimumLevel: 50
XpMultiplier: 1
MaximumQuantity: 3
DIAMOND_AXE:
MinimumLevel: 50
XpMultiplier: 1
MaximumQuantity: 2
DIAMOND_HOE:
MinimumLevel: 50
XpMultiplier: .5
MaximumQuantity: 2
# Armor
DIAMOND_HELMET:
MinimumLevel: 50
XpMultiplier: 6
MaximumQuantity: 5
DIAMOND_CHESTPLATE:
MinimumLevel: 50
XpMultiplier: 6
MaximumQuantity: 8
DIAMOND_LEGGINGS:
MinimumLevel: 50
XpMultiplier: 6
MaximumQuantity: 7
DIAMOND_BOOTS:
MinimumLevel: 50
XpMultiplier: 6
MaximumQuantity: 4
#
# Leather salvageables
###
# Armor
LEATHER_HELMET:
MinimumLevel: 0
XpMultiplier: 1
MaximumQuantity: 5
LEATHER_CHESTPLATE:
MinimumLevel: 0
XpMultiplier: 1
MaximumQuantity: 8
LEATHER_LEGGINGS:
MinimumLevel: 0
XpMultiplier: 1
MaximumQuantity: 7
LEATHER_BOOTS:
MinimumLevel: 0
XpMultiplier: 1
MaximumQuantity: 4
#
# String salvageables
###
# Tools
FISHING_ROD:
MinimumLevel: 0
XpMultiplier: .5
BOW:
MinimumLevel: 0
XpMultiplier: .5
CARROT_ON_A_STICK:
MinimumLevel: 0
XpMultiplier: .5

View File

@@ -1,545 +0,0 @@
# This file defines the rank level requirements for a subskill.
# You cannot alter how many ranks a skill has, that is coded into mcMMO directly.
# You can however, change when they unlock, if you make all ranks of a skill level 0 for example every player will have the most powerful version of that skill right away.
# Retro Mode and Standard have separate config settings to make it easier for server owners to understand the difference between the two.
# Retro Mode is setup to be an entirely cosmetic change, keeping the old 0-1000 feeling of mcMMO.
# Retro Mode has 10x faster leveling and 10x higher skill requirements, if you do the math you can see its the same as Standard and only cosmetic!.
###
Alchemy:
Catalysis:
Standard:
Rank_1: 10
RetroMode:
Rank_1: 100
Concoctions:
Standard:
Rank_1: 10
Rank_2: 25
Rank_3: 35
Rank_4: 50
Rank_5: 65
Rank_6: 75
Rank_7: 85
Rank_8: 100
RetroMode:
Rank_1: 100
Rank_2: 250
Rank_3: 350
Rank_4: 500
Rank_5: 650
Rank_6: 750
Rank_7: 850
Rank_8: 1000
Archery:
ArrowRetrieval:
Standard:
Rank_1: 2
RetroMode:
Rank_1: 20
SkillShot:
Standard:
Rank_1: 5
Rank_2: 10
Rank_3: 15
Rank_4: 20
Rank_5: 25
Rank_6: 30
Rank_7: 35
Rank_8: 40
Rank_9: 45
Rank_10: 50
Rank_11: 55
Rank_12: 60
Rank_13: 65
Rank_14: 70
Rank_15: 75
Rank_16: 80
Rank_17: 85
Rank_18: 90
Rank_19: 95
Rank_20: 100
RetroMode:
Rank_1: 50
Rank_2: 100
Rank_3: 150
Rank_4: 200
Rank_5: 250
Rank_6: 300
Rank_7: 350
Rank_8: 400
Rank_9: 450
Rank_10: 500
Rank_11: 550
Rank_12: 600
Rank_13: 650
Rank_14: 700
Rank_15: 750
Rank_16: 800
Rank_17: 850
Rank_18: 900
Rank_19: 950
Rank_20: 1000
Acrobatics:
Dodge:
Standard:
Rank_1: 2
RetroMode:
Rank_1: 20
Axes:
SkullSplitter:
Standard:
Rank_1: 5
RetroMode:
Rank_1: 50
CriticalStrikes:
Standard:
Rank_1: 2
RetroMode:
Rank_1: 20
GreaterImpact:
Standard:
Rank_1: 25
RetroMode:
Rank_1: 250
ArmorImpact:
Standard:
Rank_1: 5
Rank_2: 10
Rank_3: 15
Rank_4: 20
Rank_5: 25
Rank_6: 30
Rank_7: 35
Rank_8: 40
Rank_9: 45
Rank_10: 50
Rank_11: 55
Rank_12: 60
Rank_13: 65
Rank_14: 70
Rank_15: 75
Rank_16: 80
Rank_17: 85
Rank_18: 90
Rank_19: 95
Rank_20: 100
RetroMode:
Rank_1: 50
Rank_2: 100
Rank_3: 150
Rank_4: 200
Rank_5: 250
Rank_6: 300
Rank_7: 350
Rank_8: 400
Rank_9: 450
Rank_10: 500
Rank_11: 550
Rank_12: 600
Rank_13: 650
Rank_14: 700
Rank_15: 750
Rank_16: 800
Rank_17: 850
Rank_18: 900
Rank_19: 950
Rank_20: 1000
AxeMastery:
Standard:
Rank_1: 5
Rank_2: 10
Rank_3: 15
Rank_4: 20
RetroMode:
Rank_1: 50
Rank_2: 100
Rank_3: 150
Rank_4: 200
Taming:
BeastLore:
Standard:
Rank_1: 2
RetroMode:
Rank_1: 20
Gore:
Standard:
Rank_1: 15
RetroMode:
Rank_1: 150
CallOfTheWild:
Standard:
Rank_1: 5
RetroMode:
Rank_1: 50
Pummel:
Standard:
Rank_1: 20
RetroMode:
Rank_1: 200
FastFoodService:
Standard:
Rank_1: 20
RetroMode:
Rank_1: 200
EnvironmentallyAware:
Standard:
Rank_1: 10
RetroMode:
Rank_1: 100
ThickFur:
Standard:
Rank_1: 25
RetroMode:
Rank_1: 250
HolyHound:
Standard:
Rank_1: 35
RetroMode:
Rank_1: 350
ShockProof:
Standard:
Rank_1: 50
RetroMode:
Rank_1: 500
SharpenedClaws:
Standard:
Rank_1: 75
RetroMode:
Rank_1: 750
Smelting:
FluxMining:
Standard:
Rank_1: 25
Retro:
Rank_1: 250
UnderstandingTheArt:
Standard:
Rank_1: 10
Rank_2: 25
Rank_3: 35
Rank_4: 50
Rank_5: 65
Rank_6: 75
Rank_7: 85
Rank_8: 100
RetroMode:
Rank_1: 100
Rank_2: 250
Rank_3: 350
Rank_4: 500
Rank_5: 650
Rank_6: 750
Rank_7: 850
Rank_8: 1000
Salvage:
AdvancedSalvage:
Standard:
Rank_1: 35
RetroMode:
Rank_1: 350
ArcaneSalvage:
Standard:
Rank_1: 10
Rank_2: 25
Rank_3: 35
Rank_4: 50
Rank_5: 65
Rank_6: 75
Rank_7: 85
Rank_8: 100
RetroMode:
Rank_1: 100
Rank_2: 250
Rank_3: 350
Rank_4: 500
Rank_5: 650
Rank_6: 750
Rank_7: 850
Rank_8: 1000
Mining:
SuperBreaker:
Standard:
Rank_1: 5
RetroMode:
Rank_1: 50
# For now make sure rank 1 is the same as blast mining rank 1, it's a bit hacky, I'll fix it later
BiggerBombs:
Standard:
Rank_1: 10
RetroMode:
Rank_1: 100
# For now make sure rank 1 is the same as blast mining rank 1, it's a bit hacky, I'll fix it later
DemolitionsExpertise:
Standard:
Rank_1: 10
RetroMode:
Rank_1: 100
BlastMining:
Standard:
Rank_1: 10
Rank_2: 25
Rank_3: 35
Rank_4: 50
Rank_5: 65
Rank_6: 75
Rank_7: 85
Rank_8: 100
RetroMode:
Rank_1: 100
Rank_2: 250
Rank_3: 350
Rank_4: 500
Rank_5: 650
Rank_6: 750
Rank_7: 850
Rank_8: 1000
Herbalism:
GreenTerra:
Standard:
Rank_1: 5
RetroMode:
Rank_1: 50
GreenThumb:
Standard:
Rank_1: 25
Rank_2: 50
Rank_3: 75
Rank_4: 100
RetroMode:
Rank_1: 250
Rank_2: 500
Rank_3: 750
Rank_4: 1000
FarmersDiet:
Standard:
Rank_1: 20
Rank_2: 40
Rank_3: 60
Rank_4: 80
Rank_5: 100
RetroMode:
Rank_1: 200
Rank_2: 400
Rank_3: 600
Rank_4: 800
Rank_5: 1000
Fishing:
MagicHunter:
Standard:
Rank_1: 20
RetroMode:
Rank_1: 200
Shake:
Standard:
Rank_1: 15
RetroMode:
Rank_1: 150
MasterAngler:
Standard:
Rank_1: 50
RetroMode:
Rank_1: 500
IceFishing:
Standard:
Rank_1: 5
RetroMode:
Rank_1: 50
FishermansDiet:
Standard:
Rank_1: 20
Rank_2: 40
Rank_3: 60
Rank_4: 80
Rank_5: 100
RetroMode:
Rank_1: 200
Rank_2: 400
Rank_3: 600
Rank_4: 800
Rank_5: 1000
TreasureHunter:
Standard:
Rank_1: 10
Rank_2: 25
Rank_3: 35
Rank_4: 50
Rank_5: 65
Rank_6: 75
Rank_7: 85
Rank_8: 100
RetroMode:
Rank_1: 100
Rank_2: 250
Rank_3: 350
Rank_4: 500
Rank_5: 650
Rank_6: 750
Rank_7: 850
Rank_8: 1000
Swords:
CounterAttack:
Standard:
Rank_1: 20
RetroMode:
Rank_1: 200
Rupture:
Standard:
Rank_1: 5
Rank_2: 15
Rank_3: 75
Rank_4: 90
RetroMode:
Rank_1: 50
Rank_2: 150
Rank_3: 750
Rank_4: 900
SerratedStrikes:
Standard:
Rank_1: 10
RetroMode:
Rank_1: 100
Unarmed:
Berserk:
Standard:
Rank_1: 10
RetroMode:
Rank_1: 100
ArrowDeflect:
Standard:
Rank_1: 20
RetroMode:
Rank_1: 200
Disarm:
Standard:
Rank_1: 25
RetroMode:
Rank_1: 250
IronGrip:
Standard:
Rank_1: 60
RetroMode:
Rank_1: 600
IronArmStyle:
Standard:
Rank_1: 2
Rank_2: 25
Rank_3: 50
Rank_4: 75
Rank_5: 100
RetroMode:
Rank_1: 20
Rank_2: 250
Rank_3: 500
Rank_4: 750
Rank_5: 1000
Woodcutting:
Splinter:
Standard:
Rank_1: 5
Rank_2: 30
Rank_3: 55
RetroMode:
Rank_1: 50
Rank_2: 300
Rank_3: 550
TreeFeller:
Standard:
Rank_1: 5
Rank_2: 25
Rank_3: 50
Rank_4: 75
Rank_5: 100
RetroMode:
Rank_1: 50
Rank_2: 250
Rank_3: 500
Rank_4: 750
Rank_5: 1000
BarkSurgeon:
Standard:
Rank_1: 70
Rank_2: 80
Rank_3: 95
RetroMode:
Rank_1: 700
Rank_2: 800
Rank_3: 950
NaturesBounty:
Standard:
Rank_1: 40
Rank_2: 60
Rank_3: 90
RetroMode:
Rank_1: 400
Rank_2: 600
Rank_3: 900
HarvestLumber:
Standard:
Rank_1: 1
RetroMode:
Rank_1: 10
LeafBlower:
Standard:
Rank_1: 15
Rank_2: 35
Rank_3: 65
RetroMode:
Rank_1: 150
Rank_2: 350
Rank_3: 650
Excavation:
GigaDrillBreaker:
Standard:
Rank_1: 5
RetroMode:
Rank_1: 50
Archaeology:
Standard:
Rank_1: 5
Rank_2: 25
Rank_3: 35
Rank_4: 50
Rank_5: 65
Rank_6: 75
Rank_7: 85
Rank_8: 100
RetroMode:
Rank_1: 50
Rank_2: 250
Rank_3: 350
Rank_4: 500
Rank_5: 650
Rank_6: 750
Rank_7: 850
Rank_8: 1000
Repair:
RepairMastery:
Standard:
Rank_1: 20
RetroMode:
Rank_1: 200
SuperRepair:
Standard:
Rank_1: 40
RetroMode:
Rank_1: 400
ArcaneForging:
Standard:
Rank_1: 10
Rank_2: 25
Rank_3: 35
Rank_4: 50
Rank_5: 65
Rank_6: 75
Rank_7: 85
Rank_8: 100
RetroMode:
Rank_1: 100
Rank_2: 250
Rank_3: 350
Rank_4: 500
Rank_5: 650
Rank_6: 750
Rank_7: 850
Rank_8: 1000

View File

@@ -1,62 +0,0 @@
# A volume of 1.0 is pretty loud
# Keep this in mind
Sounds:
# 1.0 = Max volume
# 0.0 = No Volume
MasterVolume: 1.0
ANVIL:
Enable: true
Volume: 1.0
Pitch: 0.3
#Fizz, and Pop make use of a adding and multiplying random numbers together to make a unique pitch everytime they are heard
FIZZ:
Enable: true
Volume: 0.5
LEVEL_UP:
Enable: true
Volume: 0.75
Pitch: 0.5
ITEM_BREAK:
Enable: true
Volume: 1.0
Pitch: 1.0
#Fizz, and Pop make use of a adding and multiplying random numbers together to make a unique pitch everytime they are heard
POP:
Enable: true
Volume: 0.2
CHIMAERA_WING:
Enable: true
Volume: 1.0
Pitch: 0.6
ROLL_ACTIVATED:
Enable: true
Volume: 1.0
Pitch: 0.7
SKILL_UNLOCKED:
Enable: true
Volume: 1.0
Pitch: 1.4
DEFLECT_ARROWS:
Enable: true
Volume: 1.0
Pitch: 2.0
TOOL_READY:
Enable: true
Volume: 1.0
Pitch: 0.4
ABILITY_ACTIVATED_GENERIC:
Enable: true
Volume: 1.0
Pitch: 0.1
ABILITY_ACTIVATED_BERSERK:
Enable: true
Volume: 0.5
Pitch: 1.7
TIRED:
Enable: true
Volume: 1.0
Pitch: 1.7
BLEED:
Enable: true
Volume: 2.0
Pitch: 2.0

View File

@@ -1,9 +0,0 @@
# WARNING: DO NOT MODIFY THIS CONFIG
Upgrades_Finished:
ADD_FISHING: false
ADD_BLAST_MINING_COOLDOWN: false
ADD_SQL_INDEXES: false
ADD_MOB_HEALTHBARS: false
DROP_SQL_PARTY_NAMES: false
DROP_SPOUT: false
ADD_ALCHEMY: false

View File

@@ -1,27 +0,0 @@
import Config.Libs as Libs
// Config is located in <root>/buildSrc/src/main/java/Config.kt
// It provides a bunch of constant values we use as dependency
// strings, so we don't have to duplicate a bunch of them in
// various scripts. The import as allows for shorthand.
plugins {
`java-library` // This is already provided, but for static compilation,
// we declare it here so we can use the IDE static type references
}
dependencies {
compile(Libs.configurate) { // Configurate-Yaml dependency, inherits Configurate-core
exclude(Deps.Groups.guava, Deps.Modules.guava) // Exclude guava
exclude(Deps.Groups.checker, Deps.Modules.checker) // Exclude checkerframework
}
compile(Libs.flowmath) // flowpowered math, for more maths.
compile(Libs.jdbc) // Database connectors
compile(Libs.juli) // Database connectors
testCompile(Libs.junitDep) // junit for testing
// Spigot for in-dev dependency
compileOnly(Libs.Bukkit.`1_13`.spigotApi) { // Spigot only for temporary usage in core
isTransitive = false // Don't include spigot api's dependencies
}
}

View File

@@ -1,73 +0,0 @@
package com.gmail.nossr50.core;
import com.gmail.nossr50.core.data.database.DatabaseManager;
import com.gmail.nossr50.core.mcmmo.event.EventCommander;
import com.gmail.nossr50.core.mcmmo.plugin.Plugin;
import com.gmail.nossr50.core.mcmmo.server.Server;
import com.gmail.nossr50.core.mcmmo.tasks.TaskScheduler;
import com.gmail.nossr50.core.platform.Platform;
import com.gmail.nossr50.core.util.ModManager;
import com.gmail.nossr50.core.util.experience.FormulaManager;
import com.gmail.nossr50.core.util.upgrade.UpgradeManager;
import java.io.File;
import java.util.logging.Logger;
public class McmmoCore {
//TODO: Wire all this stuff
public static Plugin p;
private static EventCommander eventCommander;
private static Logger logger;
private static Platform platform;
private static boolean retroModeEnabled;
//Why do all these things need to be here? Sigh...
private static DatabaseManager databaseManager;
private static UpgradeManager upgradeManager; //TODO: I can't even remember what this one did
private static FormulaManager formulaManager;
private static ModManager modManager; //TODO: Probably need to rewrite this
/**
* Returns our Logger
* @return the logger
*/
public static Logger getLogger()
{
return logger;
}
public static EventCommander getEventCommander() {
return eventCommander;
}
public static Server getServer() {
return platform.getServer();
}
public static TaskScheduler getTaskScheduler()
{
return platform.getScheduler();
}
public static java.io.InputStream getResource(String path)
{
return platform.getResource(path);
}
public static File getDataFolderPath()
{
return platform.getDataFolderPath();
}
public static DatabaseManager getDatabaseManager() { return databaseManager; }
public static UpgradeManager getUpgradeManager() { return upgradeManager; }
public static FormulaManager getFormulaManager() { return formulaManager; }
public static boolean isRetroModeEnabled() { return retroModeEnabled; }
public static ModManager getModManager() { return modManager; }
public static String getModDataFolderPath() { return platform.getModDataFolderPath(); }
}

View File

@@ -1,34 +0,0 @@
This file is just going to take note of all the caveats of mcMMO code as I abstract out bukkit
1) In several places mcMMO is disabling itself, pretty sure this is not a good idea and this should be changed
eg: in McMMOPlayer, and when loading configs and finding bad values
2) mcMMO uses a a global reference of its Plugin class for Bukkit in order to schedule tasks
3) Need to configure the logger
4) Safety check the hardcore/vampirism commands
5) Tweak configs to not do any string operations
6) Need to add and check validation for all current configs
7) Weird stuff going on with ageables and strings in general in StringUtils
8) Reduce the amount of string operations in mcMMO as much as possible
////////////
CONFIG NOTES
///////////
1) All Config files need their validation redone and checked
2) All Config files need unload programmed in
3) All Config files need string operations reduced and to be double checked for errors in paths
4) Need to setup removing old keys on configs

View File

@@ -1,89 +0,0 @@
package com.gmail.nossr50.core.api;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.core.mcmmo.entity.Living;
import com.gmail.nossr50.core.mcmmo.entity.Player;
import com.gmail.nossr50.core.runnables.skills.BleedTimerTask;
import com.gmail.nossr50.core.skills.SuperAbilityType;
public final class AbilityAPI {
private AbilityAPI() {
}
public static boolean berserkEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.BERSERK);
}
public static boolean gigaDrillBreakerEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.GIGA_DRILL_BREAKER);
}
public static boolean greenTerraEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.GREEN_TERRA);
}
public static boolean serratedStrikesEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.SERRATED_STRIKES);
}
public static boolean skullSplitterEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.SKULL_SPLITTER);
}
public static boolean superBreakerEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.SUPER_BREAKER);
}
public static boolean treeFellerEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.TREE_FELLER);
}
public static boolean isAnyAbilityEnabled(Player player) {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
for (SuperAbilityType ability : SuperAbilityType.values()) {
if (mcMMOPlayer.getAbilityMode(ability)) {
return true;
}
}
return false;
}
public static void resetCooldowns(Player player) {
UserManager.getPlayer(player).resetCooldowns();
}
public static void setBerserkCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.BERSERK, cooldown);
}
public static void setGigaDrillBreakerCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.GIGA_DRILL_BREAKER, cooldown);
}
public static void setGreenTerraCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.GREEN_TERRA, cooldown);
}
public static void setSerratedStrikesCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.SERRATED_STRIKES, cooldown);
}
public static void setSkullSplitterCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.SKULL_SPLITTER, cooldown);
}
public static void setSuperBreakerCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.SUPER_BREAKER, cooldown);
}
public static void setTreeFellerCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.TREE_FELLER, cooldown);
}
public static boolean isBleeding(Living entity) {
return BleedTimerTask.isBleeding(entity);
}
}

View File

@@ -1,94 +0,0 @@
package com.gmail.nossr50.core.api;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public final class SkillAPI {
private SkillAPI() {
}
/**
* Returns a list of strings with mcMMO's skills
* This includes parent and child skills
* </br>
* This function is designed for API usage.
*
* @return a list of strings with valid skill names
*/
public static List<String> getSkills() {
return getListFromEnum(Arrays.asList(PrimarySkillType.values()));
}
/**
* Returns a list of strings with mcMMO's skills
* This only includes parent skills
* </br>
* This function is designed for API usage.
*
* @return a list of strings with valid skill names
*/
public static List<String> getNonChildSkills() {
return getListFromEnum(PrimarySkillType.NON_CHILD_SKILLS);
}
/**
* Returns a list of strings with mcMMO's skills
* This only includes child skills
* </br>
* This function is designed for API usage.
*
* @return a list of strings with valid skill names
*/
public static List<String> getChildSkills() {
return getListFromEnum(PrimarySkillType.CHILD_SKILLS);
}
/**
* Returns a list of strings with mcMMO's skills
* This only includes combat skills
* </br>
* This function is designed for API usage.
*
* @return a list of strings with valid skill names
*/
public static List<String> getCombatSkills() {
return getListFromEnum(PrimarySkillType.COMBAT_SKILLS);
}
/**
* Returns a list of strings with mcMMO's skills
* This only includes gathering skills
* </br>
* This function is designed for API usage.
*
* @return a list of strings with valid skill names
*/
public static List<String> getGatheringSkills() {
return getListFromEnum(PrimarySkillType.GATHERING_SKILLS);
}
/**
* Returns a list of strings with mcMMO's skills
* This only includes misc skills
* </br>
* This function is designed for API usage.
*
* @return a list of strings with valid skill names
*/
public static List<String> getMiscSkills() {
return getListFromEnum(PrimarySkillType.MISC_SKILLS);
}
private static List<String> getListFromEnum(List<PrimarySkillType> skillsTypes) {
List<String> skills = new ArrayList<String>();
for (PrimarySkillType primarySkillType : skillsTypes) {
skills.add(primarySkillType.name());
}
return skills;
}
}

View File

@@ -1,9 +0,0 @@
package com.gmail.nossr50.core.api.exceptions;
public class InvalidFormulaTypeException extends RuntimeException {
private static final long serialVersionUID = 3368670229490121886L;
public InvalidFormulaTypeException() {
super("That is not a valid FormulaType.");
}
}

View File

@@ -1,9 +0,0 @@
package com.gmail.nossr50.core.api.exceptions;
public class InvalidXPGainReasonException extends RuntimeException {
private static final long serialVersionUID = 4427052841957931157L;
public InvalidXPGainReasonException() {
super("That is not a valid XPGainReason.");
}
}

View File

@@ -1,11 +0,0 @@
package com.gmail.nossr50.core.api.exceptions;
import com.gmail.nossr50.core.mcmmo.entity.Player;
public class McMMOPlayerNotFoundException extends RuntimeException {
private static final long serialVersionUID = 761917904993202836L;
public McMMOPlayerNotFoundException(Player player) {
super("McMMOPlayer object was not found for: " + player.getName() + " " + player.getUUID());
}
}

View File

@@ -1,21 +0,0 @@
package com.gmail.nossr50.core.chat;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.MainConfig;
import com.gmail.nossr50.core.events.chat.McMMOAdminChatEvent;
public class AdminChatManager extends ChatManager {
protected AdminChatManager() {
super(MainConfig.getInstance().getAdminDisplayNames(), MainConfig.getInstance().getAdminChatPrefix());
}
@Override
public void handleChat(String senderName, String displayName, String message, boolean isAsync) {
handleChat(new McMMOAdminChatEvent(senderName, displayName, message, isAsync));
}
@Override
protected void sendMessage() {
McmmoCore.getServer().broadcast(message, "mcmmo.chat.adminchat");
}
}

View File

@@ -1,79 +0,0 @@
package com.gmail.nossr50.core.chat;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.data.UserManager;
import com.gmail.nossr50.core.datatypes.party.Party;
import com.gmail.nossr50.core.events.chat.McMMOChatEvent;
import com.gmail.nossr50.core.events.chat.McMMOPartyChatEvent;
import com.gmail.nossr50.core.locale.LocaleLoader;
import com.gmail.nossr50.core.mcmmo.entity.Player;
public abstract class ChatManager {
protected boolean useDisplayNames;
protected String chatPrefix;
protected String senderName;
protected String displayName;
protected String message;
protected ChatManager(boolean useDisplayNames, String chatPrefix) {
this.useDisplayNames = useDisplayNames;
this.chatPrefix = chatPrefix;
}
protected void handleChat(McMMOChatEvent event) {
McmmoCore.getEventCommander().callEvent(event);
if (event.isCancelled()) {
return;
}
senderName = event.getSender();
displayName = useDisplayNames ? event.getDisplayName() : senderName;
message = LocaleLoader.formatString(chatPrefix, displayName) + " " + event.getMessage();
sendMessage();
/*
* Party Chat Spying
* Party messages will be copied to people with the mcmmo.admin.chatspy permission node
*/
if (event instanceof McMMOPartyChatEvent) {
//We need to grab the party chat name
McMMOPartyChatEvent partyChatEvent = (McMMOPartyChatEvent) event;
//Find the people with permissions
for (Player player : McmmoCore.getServer().getOnlinePlayers()) {
//Check for toggled players
if (UserManager.getPlayer(player).isPartyChatSpying()) {
Party adminParty = UserManager.getPlayer(player).getParty();
//Only message admins not part of this party
if (adminParty != null) {
//TODO: Incorporate JSON
if (!adminParty.getName().equalsIgnoreCase(partyChatEvent.getParty()))
player.sendMessage(LocaleLoader.getString("Commands.AdminChatSpy.Chat", partyChatEvent.getParty(), message));
} else {
player.sendMessage(LocaleLoader.getString("Commands.AdminChatSpy.Chat", partyChatEvent.getParty(), message));
}
}
}
}
}
public void handleChat(String senderName, String message) {
handleChat(senderName, senderName, message, false);
}
public void handleChat(Player player, String message, boolean isAsync) {
handleChat(player.getName(), player.getDisplayName(), message, isAsync);
}
public void handleChat(String senderName, String displayName, String message) {
handleChat(senderName, displayName, message, false);
}
public abstract void handleChat(String senderName, String displayName, String message, boolean isAsync);
protected abstract void sendMessage();
}

View File

@@ -1,28 +0,0 @@
package com.gmail.nossr50.core.chat;
import com.gmail.nossr50.core.config.MainConfig;
import com.gmail.nossr50.core.datatypes.party.Party;
import com.gmail.nossr50.core.events.chat.McMMOPartyChatEvent;
import com.gmail.nossr50.core.runnables.party.PartyChatTask;
public class PartyChatManager extends ChatManager {
private Party party;
protected PartyChatManager(Plugin plugin) {
super(plugin, MainConfig.getInstance().getPartyDisplayNames(), MainConfig.getInstance().getPartyChatPrefix());
}
public void setParty(Party party) {
this.party = party;
}
@Override
public void handleChat(String senderName, String displayName, String message, boolean isAsync) {
handleChat(new McMMOPartyChatEvent(plugin, senderName, displayName, party.getName(), message, isAsync));
}
@Override
protected void sendMessage() {
new PartyChatTask(plugin, party, senderName, displayName, message).runTask(plugin);
}
}

View File

@@ -1,723 +0,0 @@
package com.gmail.nossr50.core.config;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.datatypes.interactions.NotificationType;
import com.gmail.nossr50.core.mcmmo.colors.ChatColor;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.subskills.AbstractSubSkill;
import java.util.ArrayList;
import java.util.List;
//@ConfigSerializable
public class AdvancedConfig extends ConfigValidated {
public static final String SKILLS = "Skills";
public static final String GENERAL = "General";
public static final String ABILITY = "Ability";
public static final String LENGTH = "Length";
public static final String INCREASE_LEVEL = "IncreaseLevel";
public static final String ENCHANT_BUFF = "EnchantBuff";
public static final String ACROBATICS = "Acrobatics";
public static final String DODGE = "Dodge";
public static final String CHANCE = "Chance";
public static final String CHANCE_MAX = CHANCE + "Max";
public static final String BONUS = "Bonus";
public static final String MAX_BONUS_LEVEL = "Max" + BONUS + "Level";
public static final String MODIFIER = "Modifier";
public static final String DAMAGE_MODIFIER = "Damage" + MODIFIER;
public static final String DAMAGE_THRESHOLD = "DamageThreshold";
public static final String ALCHEMY = "Alchemy";
public static final String CATALYSIS = "Catalysis";
public static final String MIN_SPEED = "MinSpeed";
public static final String MAX_SPEED = "MaxSpeed";
public static final String ARCHERY = "Archery";
public static final String SKILL_SHOT = "SkillShot";
public static final String MULTIPLIER = "Multiplier";
public static final String RANK_DAMAGE_MULTIPLIER = "RankDamage" + MULTIPLIER;
public static final String BONUS_DAMAGE = BONUS + "Damage";
public static final String FORCE_MULTIPLIER = "Force" + MULTIPLIER;
public static final String AXES = "Axes";
public static final String STANDARD = "Standard";
public static final String RETRO_MODE = "RetroMode";
public static final String CAP_LEVEL = "CapLevel";
public static final String KNOCKBACK_MODIFIER = "Knockback" + MODIFIER;
public static final String PVP_MODIFIER = "PVP_" + MODIFIER;
public static final String PVE_MODIFIER = "PVE_" + MODIFIER;
public static final String FISHING = "Fishing";
public static final String MASTER_ANGLER = "MasterAngler";
public static final String BOAT_MODIFIER = "Boat" + MODIFIER;
public static final String BIOME_MODIFIER = "Biome" + MODIFIER;
public static final String XP = "XP";
public static final String VANILLA_XPMULTIPLIER = "Vanilla" + XP + MULTIPLIER;
public static final String RANK = "Rank_";
public static final String TAMING = "Taming";
public static final String CALL_OF_THE_WILD = "CallOfTheWild";
public static final String MIN_HORSE_JUMP_STRENGTH = "MinHorseJumpStrength";
public static final String MAX_HORSE_JUMP_STRENGTH = "MaxHorseJumpStrength";
public static final String SHOCK_PROOF = "ShockProof";
public static final String UNARMED = "Unarmed";
public static final String STARTING_LEVEL = "StartingLevel";
public static final String AXE_MASTERY = "AxeMastery";
public static final String CRITICAL_STRIKES = "CriticalStrikes";
public static final String GREATER_IMPACT = "GreaterImpact";
public static final String ARMOR_IMPACT = "ArmorImpact";
public static final String SKULL_SPLITTER = "SkullSplitter.";
public static final String MAX_PERCENTAGE_DURABILITY_DAMAGE = "MaxPercentageDurabilityDamage";
public static final String SHAKE = "Shake";
public static final String MINING = "Mining";
public static final String BLAST_MINING = "BlastMining";
public static final String LEVELS = "Levels";
public static final String BLAST_DAMAGE_DECREASE = "BlastDamageDecrease";
public static final String ORE_BONUS = "Ore" + BONUS;
public static final String DEBRIS_REDUCTION = "DebrisReduction";
public static final String DROP_MULTIPLIER = "Drop" + MULTIPLIER;
public static final String BLAST_RADIUS = "BlastRadius";
public static final String REPAIR = "Repair";
public static final String REPAIR_MASTERY = "RepairMastery";
public static final String MAX_BONUS_PERCENTAGE = "Max" + BONUS + "Percentage";
public static final String ARCANE_FORGING = "ArcaneForging";
public static final String MAY_LOSE_ENCHANTS = "May_Lose_Enchants";
public static final String KEEP_ENCHANTS = "Keep_Enchants_";
public static final String DOWNGRADES = "Downgrades_";
public static final String ENABLED = "Enabled";
public static final String DOWNGRADES_ENABLED = DOWNGRADES + ENABLED;
public static final String SALVAGE = "Salvage";
public static final String ARCANE_SALVAGE = "ArcaneSalvage";
public static final String ENCHANT_DOWNGRADE_ENABLED = "EnchantDowngrade" + ENABLED;
public static final String ENCHANT_LOSS_ENABLED = "EnchantLoss" + ENABLED;
public static final String EXTRACT_FULL_ENCHANT = "ExtractFullEnchant";
public static final String EXTRACT_PARTIAL_ENCHANT = "ExtractPartialEnchant";
public static final String SMELTING = "Smelting";
public static final String FUEL_EFFICIENCY = "FuelEfficiency";
public static final String FLUX = "Flux";
public static final String SWORDS = "Swords";
public static final String RUPTURE = "Rupture";
public static final String DAMAGE_PLAYER = "DamagePlayer";
public static final String DAMAGE_MOBS = "DamageMobs";
public static final String MAX_TICKS = "MaxTicks";
public static final String BASE_TICKS = "BaseTicks";
public static final String COUNTER_ATTACK = "CounterAttack";
public static final String SERRATED_STRIKES = "SerratedStrikes";
public static final String TICKS = "Ticks";
public static final String GORE = "Gore";
public static final String FAST_FOOD = "FastFood";
public static final String FAST_FOOD_SERVICE = FAST_FOOD + "Service";
public static final String PUMMEL = "Pummel";
public static final String THICK_FUR = "ThickFur";
public static final String SHARPENED_CLAWS = "SharpenedClaws";
public static final String DISARM = "Disarm";
public static final String ANTI_THEFT = "AntiTheft";
public static final String DAZE = "Daze";
public static final String MAX_DAMAGE = "MaxDamage";
public static final String ROLL = "Roll";
public static final String GRACEFUL_ROLL = "Graceful" + ROLL;
public static final String ARROW_DEFLECT = "ArrowDeflect";
public static final String IRON_GRIP = "IronGrip";
public static final String WOODCUTTING = "Woodcutting";
public static final String HARVEST_LUMBER = "HarvestLumber";
public static final String FEEDBACK = "Feedback";
public static final String SKILL_COMMAND = "SkillCommand";
public static final String BLANK_LINES_ABOVE_HEADER = "BlankLinesAboveHeader";
public static final String ACTION_BAR_NOTIFICATIONS = "ActionBarNotifications";
public static final String SEND_COPY_OF_MESSAGE_TO_CHAT = "SendCopyOfMessageToChat";
public static final String EVENTS = "Events";
public static final String SEND_TITLES = "SendTitles";
private static AdvancedConfig instance;
private AdvancedConfig() {
super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "advanced.yml", true);
}
public static AdvancedConfig getInstance() {
if (instance == null) {
instance = new AdvancedConfig();
}
return instance;
}
/**
* The version of this config
*
* @return
*/
@Override
public double getConfigVersion() {
return 1;
}
@Override
public List<String> validateKeys() {
// Validate all the settings!
List<String> reason = new ArrayList<String>();
/* GENERAL */
if (getAbilityLength() < 1) {
reason.add(SKILLS + "." + GENERAL + "." + ABILITY + "." + LENGTH + ".<mode>." + INCREASE_LEVEL + " should be at least 1!");
}
if (getEnchantBuff() < 1) {
reason.add(SKILLS + "." + GENERAL + "." + ABILITY + "." + ENCHANT_BUFF + " should be at least 1!");
}
/* ACROBATICS */
if (getMaximumProbability(SubSkillType.ACROBATICS_DODGE) < 1) {
reason.add(SKILLS + "." + ACROBATICS + "." + DODGE + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.ACROBATICS_DODGE) < 1) {
reason.add(SKILLS + "." + ACROBATICS + "." + DODGE + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getDodgeDamageModifier() <= 1) {
reason.add(SKILLS + "." + ACROBATICS + "." + DODGE + "." + DAMAGE_MODIFIER + " should be greater than 1!");
}
if (getMaximumProbability(SubSkillType.ACROBATICS_ROLL) < 1) {
reason.add(SKILLS + "." + ACROBATICS + "." + ROLL + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.ACROBATICS_ROLL) < 1) {
reason.add(SKILLS + "." + ACROBATICS + "." + ROLL + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getRollDamageThreshold() < 0) {
reason.add(SKILLS + "." + ACROBATICS + "." + ROLL + "." + DAMAGE_THRESHOLD + " should be at least 0!");
}
if (getGracefulRollDamageThreshold() < 0) {
reason.add(SKILLS + "." + ACROBATICS + "." + GRACEFUL_ROLL + "." + DAMAGE_THRESHOLD + " should be at least 0!");
}
if (getCatalysisMinSpeed() <= 0) {
reason.add(SKILLS + "." + ALCHEMY + "." + CATALYSIS + "." + MIN_SPEED + " must be greater than 0!");
}
if (getCatalysisMaxSpeed() < getCatalysisMinSpeed()) {
reason.add(SKILLS + "." + ALCHEMY + "." + CATALYSIS + "." + MAX_SPEED + " should be at least Skills.Alchemy.Catalysis." + MIN_SPEED + "!");
}
/* ARCHERY */
if (getSkillShotRankDamageMultiplier() <= 0) {
reason.add(SKILLS + "." + ARCHERY + "." + SKILL_SHOT + "." + RANK_DAMAGE_MULTIPLIER + " should be greater than 0!");
}
if (getMaximumProbability(SubSkillType.ARCHERY_DAZE) < 1) {
reason.add(SKILLS + "." + ARCHERY + "." + DAZE + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.ARCHERY_DAZE) < 1) {
reason.add(SKILLS + "." + ARCHERY + "." + DAZE + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getDazeBonusDamage() < 0) {
reason.add(SKILLS + "." + ARCHERY + "." + DAZE + "." + BONUS_DAMAGE + " should be at least 0!");
}
if (getMaximumProbability(SubSkillType.ARCHERY_ARROW_RETRIEVAL) < 1) {
reason.add(SKILLS + "." + ARCHERY + ".Retrieve." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.ARCHERY_ARROW_RETRIEVAL) < 1) {
reason.add(SKILLS + "." + ARCHERY + ".Retrieve." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getForceMultiplier() < 0) {
reason.add(SKILLS + "." + ARCHERY + "." + FORCE_MULTIPLIER + " should be at least 0!");
}
/* AXES */
if(getAxeMasteryRankDamageMultiplier() < 0)
{
reason.add(SKILLS + "." + AXES + "." + AXE_MASTERY + "." + RANK_DAMAGE_MULTIPLIER + " should be at least 0!");
}
if (getMaximumProbability(SubSkillType.AXES_CRITICAL_STRIKES) < 1) {
reason.add(SKILLS + "." + AXES + ".CriticalHit." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.AXES_CRITICAL_STRIKES) < 1) {
reason.add(SKILLS + "." + AXES + ".CriticalHit." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getCriticalStrikesPVPModifier() < 1) {
reason.add(SKILLS + "." + AXES + "." + CRITICAL_STRIKES + "." + PVP_MODIFIER + " should be at least 1!");
}
if (getCriticalStrikesPVPModifier() < 1) {
reason.add(SKILLS + "." + AXES + "." + CRITICAL_STRIKES + "." + PVE_MODIFIER + " should be at least 1!");
}
if (getGreaterImpactChance() < 1) {
reason.add(SKILLS + "." + AXES + "." + GREATER_IMPACT + "." + CHANCE + " should be at least 1!");
}
if (getGreaterImpactModifier() < 1) {
reason.add(SKILLS + "." + AXES + "." + GREATER_IMPACT + "." + KNOCKBACK_MODIFIER + " should be at least 1!");
}
if (getGreaterImpactBonusDamage() < 1) {
reason.add(SKILLS + "." + AXES + "." + GREATER_IMPACT + "." + BONUS_DAMAGE + " should be at least 1!");
}
if (getArmorImpactIncreaseLevel() < 1) {
reason.add(SKILLS + "." + AXES + "." + ARMOR_IMPACT + "." + INCREASE_LEVEL + " should be at least 1!");
}
if (getImpactChance() < 1) {
reason.add(SKILLS + "." + AXES + "." + ARMOR_IMPACT + "." + CHANCE + " should be at least 1!");
}
if (getArmorImpactMaxDurabilityDamage() < 1) {
reason.add(SKILLS + "." + AXES + "." + ARMOR_IMPACT + "." + MAX_PERCENTAGE_DURABILITY_DAMAGE + " should be at least 1!");
}
if (getSkullSplitterModifier() < 1) {
reason.add(SKILLS + "." + AXES + "." + SKULL_SPLITTER + DAMAGE_MODIFIER + " should be at least 1!");
}
/*if (getFishermanDietRankChange() < 1) {
reason.add(SKILLS + "." + FISHING + ".FishermansDiet.RankChange should be at least 1!");
}*/
if (getMasterAnglerBoatModifier() < 1) {
reason.add(SKILLS + "." + FISHING + "." + MASTER_ANGLER + "." + BOAT_MODIFIER + " should be at least 1!");
}
if (getMasterAnglerBiomeModifier() < 1) {
reason.add(SKILLS + "." + FISHING + "." + MASTER_ANGLER + "." + BIOME_MODIFIER + " should be at least 1!");
}
/* HERBALISM */
/*if (getFarmerDietRankChange() < 1) {
reason.add(SKILLS + ".Herbalism.FarmersDiet.RankChange should be at least 1!");
}
if (getGreenThumbStageChange() < 1) {
reason.add(SKILLS + ".Herbalism.GreenThumb.StageChange should be at least 1!");
}*/
if (getMaximumProbability(SubSkillType.HERBALISM_GREEN_THUMB) < 1) {
reason.add(SKILLS + ".Herbalism.GreenThumb." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.HERBALISM_GREEN_THUMB) < 1) {
reason.add(SKILLS + ".Herbalism.GreenThumb." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getMaximumProbability(SubSkillType.HERBALISM_DOUBLE_DROPS) < 1) {
reason.add(SKILLS + ".Herbalism.DoubleDrops." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.HERBALISM_DOUBLE_DROPS) < 1) {
reason.add(SKILLS + ".Herbalism.DoubleDrops." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getMaximumProbability(SubSkillType.HERBALISM_HYLIAN_LUCK) < 1) {
reason.add(SKILLS + ".Herbalism.HylianLuck." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.HERBALISM_HYLIAN_LUCK) < 1) {
reason.add(SKILLS + ".Herbalism.HylianLuck." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getMaximumProbability(SubSkillType.HERBALISM_SHROOM_THUMB) < 1) {
reason.add(SKILLS + ".Herbalism.ShroomThumb." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.HERBALISM_SHROOM_THUMB) < 1) {
reason.add(SKILLS + ".Herbalism.ShroomThumb." + MAX_BONUS_LEVEL + " should be at least 1!");
}
/* MINING */
if (getMaximumProbability(SubSkillType.MINING_DOUBLE_DROPS) < 1) {
reason.add(SKILLS + "." + MINING + ".DoubleDrops." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.MINING_DOUBLE_DROPS) < 1) {
reason.add(SKILLS + "." + MINING + ".DoubleDrops." + MAX_BONUS_LEVEL + " should be at least 1!");
}
/* REPAIR */
if (getRepairMasteryMaxBonus() < 1) {
reason.add(SKILLS + "." + REPAIR + "." + REPAIR_MASTERY + "." + MAX_BONUS_PERCENTAGE + " should be at least 1!");
}
if (getRepairMasteryMaxLevel() < 1) {
reason.add(SKILLS + "." + REPAIR + "." + REPAIR_MASTERY + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getMaximumProbability(SubSkillType.REPAIR_SUPER_REPAIR) < 1) {
reason.add(SKILLS + "." + REPAIR + ".SuperRepair." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.REPAIR_SUPER_REPAIR) < 1) {
reason.add(SKILLS + "." + REPAIR + ".SuperRepair." + MAX_BONUS_LEVEL + " should be at least 1!");
}
/* SMELTING */
if (getBurnModifierMaxLevel() < 1) {
reason.add(SKILLS + "." + SMELTING + "." + FUEL_EFFICIENCY + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getBurnTimeMultiplier() < 1) {
reason.add(SKILLS + "." + SMELTING + "." + FUEL_EFFICIENCY + "." + MULTIPLIER + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.SMELTING_SECOND_SMELT) < 1) {
reason.add(SKILLS + "." + SMELTING + ".SecondSmelt." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getMaximumProbability(SubSkillType.SMELTING_SECOND_SMELT) < 1) {
reason.add(SKILLS + "." + SMELTING + ".SecondSmelt." + CHANCE_MAX + " should be at least 1!");
}
if (getFluxMiningChance() < 1) {
reason.add(SKILLS + "." + SMELTING + "." + FLUX + MINING + "." + CHANCE + " should be at least 1!");
}
/* SWORDS */
if (getMaximumProbability(SubSkillType.SWORDS_RUPTURE) < 1) {
reason.add(SKILLS + "." + SWORDS + "." + RUPTURE + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.SWORDS_RUPTURE) < 1) {
reason.add(SKILLS + "." + SWORDS + "." + RUPTURE + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getRuptureMaxTicks() < 1) {
reason.add(SKILLS + "." + SWORDS + "." + RUPTURE + "." + MAX_TICKS + " should be at least 1!");
}
if (getRuptureMaxTicks() < getRuptureBaseTicks()) {
reason.add(SKILLS + "." + SWORDS + "." + RUPTURE + "." + MAX_TICKS + " should be at least Skills.Swords.Rupture." + BASE_TICKS + "!");
}
if (getRuptureBaseTicks() < 1) {
reason.add(SKILLS + "." + SWORDS + "." + RUPTURE + "." + BASE_TICKS + " should be at least 1!");
}
if (getMaximumProbability(SubSkillType.SWORDS_COUNTER_ATTACK) < 1) {
reason.add(SKILLS + "." + SWORDS + "." + COUNTER_ATTACK + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.SWORDS_COUNTER_ATTACK) < 1) {
reason.add(SKILLS + "." + SWORDS + "." + COUNTER_ATTACK + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getCounterModifier() < 1) {
reason.add(SKILLS + "." + SWORDS + "." + COUNTER_ATTACK + "." + DAMAGE_MODIFIER + " should be at least 1!");
}
if (getSerratedStrikesModifier() < 1) {
reason.add(SKILLS + "." + SWORDS + "." + SERRATED_STRIKES + "." + DAMAGE_MODIFIER + " should be at least 1!");
}
if (getSerratedStrikesTicks() < 1) {
reason.add(SKILLS + "." + SWORDS + "." + SERRATED_STRIKES + "." + RUPTURE + "Ticks should be at least 1!");
}
/* TAMING */
if (getMaximumProbability(SubSkillType.TAMING_GORE) < 1) {
reason.add(SKILLS + "." + TAMING + "." + GORE + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.TAMING_GORE) < 1) {
reason.add(SKILLS + "." + TAMING + "." + GORE + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getGoreModifier() < 1) {
reason.add(SKILLS + "." + TAMING + "." + GORE + "." + MODIFIER + " should be at least 1!");
}
if (getFastFoodChance() < 1) {
reason.add(SKILLS + "." + TAMING + "." + FAST_FOOD + "." + CHANCE + " should be at least 1!");
}
if (getThickFurModifier() < 1) {
reason.add(SKILLS + "." + TAMING + "." + THICK_FUR + "." + MODIFIER + " should be at least 1!");
}
if (getShockProofModifier() < 1) {
reason.add(SKILLS + "." + TAMING + "." + SHOCK_PROOF + "." + MODIFIER + " should be at least 1!");
}
if (getSharpenedClawsBonus() < 1) {
reason.add(SKILLS + "." + TAMING + "." + SHARPENED_CLAWS + "." + BONUS + " should be at least 1!");
}
if (getMaxHorseJumpStrength() < 0 || getMaxHorseJumpStrength() > 2) {
reason.add(SKILLS + "." + TAMING + "." + CALL_OF_THE_WILD + "." + MAX_HORSE_JUMP_STRENGTH + " should be between 0 and 2!");
}
/* UNARMED */
if (getMaximumProbability(SubSkillType.UNARMED_DISARM) < 1) {
reason.add(SKILLS + "." + UNARMED + "." + DISARM + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.UNARMED_DISARM) < 1) {
reason.add(SKILLS + "." + UNARMED + "." + DISARM + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getMaximumProbability(SubSkillType.UNARMED_ARROW_DEFLECT) < 1) {
reason.add(SKILLS + "." + UNARMED + "." + ARROW_DEFLECT + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.UNARMED_ARROW_DEFLECT) < 1) {
reason.add(SKILLS + "." + UNARMED + "." + ARROW_DEFLECT + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
if (getMaximumProbability(SubSkillType.UNARMED_IRON_GRIP) < 1) {
reason.add(SKILLS + "." + UNARMED + "." + IRON_GRIP + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.UNARMED_IRON_GRIP) < 1) {
reason.add(SKILLS + "." + UNARMED + "." + IRON_GRIP + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
/* WOODCUTTING */
/*if (getLeafBlowUnlockLevel() < 0) {
reason.add("Skills.Woodcutting.LeafBlower.UnlockLevel should be at least 0!");
}*/
if (getMaximumProbability(SubSkillType.WOODCUTTING_HARVEST_LUMBER) < 1) {
reason.add(SKILLS + "." + WOODCUTTING + "." + HARVEST_LUMBER + "." + CHANCE_MAX + " should be at least 1!");
}
if (getMaxBonusLevel(SubSkillType.WOODCUTTING_HARVEST_LUMBER) < 1) {
reason.add(SKILLS + "." + WOODCUTTING + "." + HARVEST_LUMBER + "." + MAX_BONUS_LEVEL + " should be at least 1!");
}
return reason;
}
/* GENERAL */
public int getStartingLevel() { return getIntValue(SKILLS, GENERAL, STARTING_LEVEL); }
/**
* This returns the maximum level at which superabilities will stop lengthening from scaling alongside skill level.
* It returns a different value depending on whether or not the server is in retro mode
* @return the level at which abilities stop increasing in length
*/
public int getAbilityLengthCap() {
if(!McmmoCore.isRetroModeEnabled())
return getIntValue(SKILLS, GENERAL, ABILITY, LENGTH, STANDARD, CAP_LEVEL);
else
return getIntValue(SKILLS, GENERAL, ABILITY, LENGTH, RETRO_MODE, CAP_LEVEL);
}
/**
* This returns the frequency at which abilities will increase in length
* It returns a different value depending on whether or not the server is in retro mode
* @return the number of levels required per ability length increase
*/
public int getAbilityLength() {
if(!McmmoCore.isRetroModeEnabled())
return getIntValue(SKILLS, GENERAL, ABILITY, LENGTH, STANDARD, INCREASE_LEVEL);
else
return getIntValue(SKILLS, GENERAL, ABILITY, LENGTH, RETRO_MODE, INCREASE_LEVEL);
}
public int getEnchantBuff() { return getIntValue(SKILLS, GENERAL, ABILITY, ENCHANT_BUFF); }
/**
* Grabs the max bonus level for a skill used in RNG calculations
* All max level values in the config are multiplied by 10 if the server is in retro mode as the values in the config are based around the new 1-100 skill system scaling
* A value of 10 in the file will be returned as 100 for retro mode servers to accommodate the change in scaling
* @param subSkillType target subskill
* @return the level at which this skills max benefits will be reached on the curve
*/
public int getMaxBonusLevel(SubSkillType subSkillType) {
String[] category = subSkillType.getAdvConfigAddress();
if(!McmmoCore.isRetroModeEnabled())
return getIntValue(category[0], category[1], category[2], MAX_BONUS_LEVEL, STANDARD);
else
return getIntValue(category[0], category[1], category[2], MAX_BONUS_LEVEL, RETRO_MODE);
}
public int getMaxBonusLevel(AbstractSubSkill abstractSubSkill) {
return getMaxBonusLevel(abstractSubSkill.getSubSkillType());
}
public double getMaximumProbability(SubSkillType subSkillType) {
String[] category = subSkillType.getAdvConfigAddress();
double maximumProbability = getDoubleValue(category[0], category[1], category[2], CHANCE_MAX);
return maximumProbability;
}
public double getMaximumProbability(AbstractSubSkill abstractSubSkill)
{
return getMaximumProbability(abstractSubSkill.getSubSkillType());
}
/* Notification Settings */
public boolean doesSkillCommandSendBlankLines()
{
return getBooleanValue(FEEDBACK, SKILL_COMMAND, BLANK_LINES_ABOVE_HEADER);
}
public boolean doesNotificationUseActionBar(NotificationType notificationType)
{
return getBooleanValue(FEEDBACK, ACTION_BAR_NOTIFICATIONS, notificationType.toString(), ENABLED);
}
public boolean doesNotificationSendCopyToChat(NotificationType notificationType)
{
return getBooleanValue(FEEDBACK, ACTION_BAR_NOTIFICATIONS, notificationType.toString(), SEND_COPY_OF_MESSAGE_TO_CHAT);
}
public boolean useTitlesForXPEvent()
{
return getBooleanValue(FEEDBACK, EVENTS, XP, SEND_TITLES);
}
private ChatColor getChatColorFromKey(String keyLocation) {
String colorName = getStringValue(keyLocation);
return getChatColor(colorName);
}
private ChatColor getChatColor(String configColor) {
for (ChatColor chatColor : ChatColor.values()) {
if (configColor.equalsIgnoreCase(chatColor.toString()))
return chatColor;
}
//Invalid Color
System.out.println("[mcMMO] " + configColor + " is an invalid color value");
return ChatColor.WHITE;
}
/* ACROBATICS */
public double getDodgeDamageModifier() { return getDoubleValue(SKILLS, ACROBATICS, DODGE, DAMAGE_MODIFIER); }
public double getRollDamageThreshold() { return getDoubleValue(SKILLS, ACROBATICS, ROLL, DAMAGE_THRESHOLD); }
public double getGracefulRollDamageThreshold() { return getDoubleValue(SKILLS, ACROBATICS, GRACEFUL_ROLL, DAMAGE_THRESHOLD); }
/* ALCHEMY */
public int getCatalysisMaxBonusLevel() { return getIntValue(SKILLS, ALCHEMY, CATALYSIS, MAX_BONUS_LEVEL); }
public double getCatalysisMinSpeed() { return getDoubleValue(SKILLS, ALCHEMY, CATALYSIS, MIN_SPEED); }
public double getCatalysisMaxSpeed() { return getDoubleValue(SKILLS, ALCHEMY, CATALYSIS, MAX_SPEED); }
/* ARCHERY */
public double getSkillShotRankDamageMultiplier() { return getDoubleValue(SKILLS, ARCHERY, SKILL_SHOT, RANK_DAMAGE_MULTIPLIER); }
public double getSkillShotDamageMax() { return getDoubleValue(SKILLS, ARCHERY, SKILL_SHOT, MAX_DAMAGE); }
public double getDazeBonusDamage() { return getDoubleValue(SKILLS, ARCHERY, DAZE, BONUS_DAMAGE); }
public double getForceMultiplier() { return getDoubleValue(SKILLS, ARCHERY, FORCE_MULTIPLIER); }
/* AXES */
public double getAxeMasteryRankDamageMultiplier() { return getDoubleValue(SKILLS, AXES, AXE_MASTERY, RANK_DAMAGE_MULTIPLIER); }
public double getCriticalStrikesPVPModifier() { return getDoubleValue(SKILLS, AXES, CRITICAL_STRIKES, PVP_MODIFIER); }
public double getCriticalStrikesPVEModifier() { return getDoubleValue(SKILLS, AXES, CRITICAL_STRIKES, PVE_MODIFIER); }
public double getGreaterImpactChance() { return getDoubleValue(SKILLS, AXES, GREATER_IMPACT, CHANCE); }
public double getGreaterImpactModifier() { return getDoubleValue(SKILLS, AXES, GREATER_IMPACT, KNOCKBACK_MODIFIER); }
public double getGreaterImpactBonusDamage() { return getDoubleValue(SKILLS, AXES, GREATER_IMPACT, BONUS_DAMAGE); }
public int getArmorImpactIncreaseLevel() {
int increaseLevel = getIntValue(SKILLS, AXES, ARMOR_IMPACT, INCREASE_LEVEL);
if(McmmoCore.isRetroModeEnabled())
return increaseLevel * 10;
return increaseLevel;
}
public double getImpactChance() { return getDoubleValue(SKILLS, AXES, ARMOR_IMPACT, CHANCE); }
public double getArmorImpactMaxDurabilityDamage() { return getDoubleValue(SKILLS, AXES, ARMOR_IMPACT, MAX_PERCENTAGE_DURABILITY_DAMAGE); }
public double getSkullSplitterModifier() { return getDoubleValue(SKILLS, AXES, SKULL_SPLITTER, DAMAGE_MODIFIER); }
/* EXCAVATION */
//Nothing to configure, everything is already configurable in config.yml
/* FISHING */
public double getShakeChance(int rank) { return getDoubleValue(SKILLS, FISHING, SHAKE, CHANCE, RANK, String.valueOf(rank)); }
public int getFishingVanillaXPModifier(int rank) { return getIntValue(SKILLS, FISHING, VANILLA_XPMULTIPLIER, RANK, String.valueOf(rank)); }
public double getMasterAnglerBoatModifier() {return getDoubleValue(SKILLS, FISHING, MASTER_ANGLER, BOAT_MODIFIER); }
public double getMasterAnglerBiomeModifier() {return getDoubleValue(SKILLS, FISHING, MASTER_ANGLER, BIOME_MODIFIER); }
/* HERBALISM */
//public int getFarmerDietRankChange() { return getIntValue(SKILLS, ".Herbalism.FarmersDiet.RankChange"); }
//public int getGreenThumbStageChange() { return getIntValue(SKILLS, ".Herbalism.GreenThumb.StageChange"); }
/* MINING */
public int getBlastMiningRankLevel(int rank) { return getIntValue(SKILLS, MINING, BLAST_MINING, RANK, LEVELS, RANK, String.valueOf(rank)); }
public double getBlastDamageDecrease(int rank) { return getDoubleValue(SKILLS, MINING, BLAST_MINING, BLAST_DAMAGE_DECREASE, RANK, String.valueOf(rank)); }
public double getOreBonus(int rank) { return getDoubleValue(SKILLS, MINING, BLAST_MINING, ORE_BONUS, RANK, String.valueOf(rank)); }
public double getDebrisReduction(int rank) { return getDoubleValue(SKILLS, MINING, BLAST_MINING, DEBRIS_REDUCTION, RANK, String.valueOf(rank)); }
public int getDropMultiplier(int rank) { return getIntValue(SKILLS, MINING, BLAST_MINING, DROP_MULTIPLIER, RANK, String.valueOf(rank)); }
public double getBlastRadiusModifier(int rank) { return getDoubleValue(SKILLS, MINING, BLAST_MINING, BLAST_RADIUS, MODIFIER, RANK, String.valueOf(rank)); }
/* REPAIR */
public double getRepairMasteryMaxBonus() { return getDoubleValue(SKILLS, REPAIR, REPAIR_MASTERY, MAX_BONUS_PERCENTAGE); }
public int getRepairMasteryMaxLevel() { return getIntValue(SKILLS, REPAIR, REPAIR_MASTERY, MAX_BONUS_LEVEL); }
/* Arcane Forging */
public boolean getArcaneForgingEnchantLossEnabled() { return getBooleanValue(SKILLS, REPAIR, ARCANE_FORGING, MAY_LOSE_ENCHANTS); }
public double getArcaneForgingKeepEnchantsChance(int rank) { return getDoubleValue(SKILLS, REPAIR, ARCANE_FORGING, KEEP_ENCHANTS, CHANCE, RANK, String.valueOf(rank)); }
public boolean getArcaneForgingDowngradeEnabled() { return getBooleanValue(SKILLS, REPAIR, ARCANE_FORGING, DOWNGRADES_ENABLED); }
public double getArcaneForgingDowngradeChance(int rank) { return getDoubleValue(SKILLS, REPAIR, ARCANE_FORGING, DOWNGRADES, CHANCE, RANK, String.valueOf(rank)); }
/* SALVAGE */
public boolean getArcaneSalvageEnchantDowngradeEnabled() { return getBooleanValue(SKILLS, SALVAGE, ARCANE_SALVAGE, ENCHANT_DOWNGRADE_ENABLED); }
public boolean getArcaneSalvageEnchantLossEnabled() { return getBooleanValue(SKILLS, SALVAGE, ARCANE_SALVAGE, ENCHANT_LOSS_ENABLED); }
public double getArcaneSalvageExtractFullEnchantsChance(int rank) { return getDoubleValue(SKILLS, SALVAGE, ARCANE_SALVAGE, EXTRACT_FULL_ENCHANT, RANK, String.valueOf(rank)); }
public double getArcaneSalvageExtractPartialEnchantsChance(int rank) { return getDoubleValue(SKILLS, SALVAGE, ARCANE_SALVAGE, EXTRACT_PARTIAL_ENCHANT, RANK, String.valueOf(rank)); }
/* SMELTING */
public int getBurnModifierMaxLevel() { return getIntValue(SKILLS, SMELTING, FUEL_EFFICIENCY, MAX_BONUS_LEVEL); }
public double getBurnTimeMultiplier() { return getDoubleValue(SKILLS, SMELTING, FUEL_EFFICIENCY, MULTIPLIER); }
public double getFluxMiningChance() { return getDoubleValue(SKILLS, SMELTING, FLUX, MINING, CHANCE); }
public int getSmeltingRankLevel(int rank) { return getIntValue(SKILLS, SMELTING, RANK, LEVELS, RANK, String.valueOf(rank)); }
public int getSmeltingVanillaXPBoostMultiplier(int rank) { return getIntValue(SKILLS, SMELTING, VANILLA_XPMULTIPLIER, RANK, String.valueOf(rank)); }
/* SWORDS */
public double getRuptureDamagePlayer() { return getDoubleValue(SKILLS, SWORDS, RUPTURE, DAMAGE_PLAYER); }
public double getRuptureDamageMobs() { return getDoubleValue(SKILLS, SWORDS, RUPTURE, DAMAGE_MOBS); }
public int getRuptureMaxTicks() { return getIntValue(SKILLS, SWORDS, RUPTURE, MAX_TICKS); }
public int getRuptureBaseTicks() { return getIntValue(SKILLS, SWORDS, RUPTURE, BASE_TICKS); }
public double getCounterModifier() { return getDoubleValue(SKILLS, SWORDS, COUNTER_ATTACK, DAMAGE_MODIFIER); }
public double getSerratedStrikesModifier() { return getDoubleValue(SKILLS, SWORDS, SERRATED_STRIKES, DAMAGE_MODIFIER); }
public int getSerratedStrikesTicks() { return getIntValue(SKILLS, SWORDS, SERRATED_STRIKES, RUPTURE, TICKS); }
/* TAMING */
public double getGoreModifier() { return getDoubleValue(SKILLS, TAMING, GORE, MODIFIER); }
public double getFastFoodChance() { return getDoubleValue(SKILLS, TAMING, FAST_FOOD_SERVICE, CHANCE); }
public double getPummelChance() { return getDoubleValue(SKILLS, TAMING, PUMMEL, CHANCE); }
public double getThickFurModifier() { return getDoubleValue(SKILLS, TAMING, THICK_FUR, MODIFIER); }
public double getShockProofModifier() { return getDoubleValue(SKILLS, TAMING, SHOCK_PROOF, MODIFIER); }
public double getSharpenedClawsBonus() { return getDoubleValue(SKILLS, TAMING, SHARPENED_CLAWS, BONUS); }
public double getMinHorseJumpStrength() { return getDoubleValue(SKILLS, TAMING, CALL_OF_THE_WILD, MIN_HORSE_JUMP_STRENGTH); }
public double getMaxHorseJumpStrength() { return getDoubleValue(SKILLS, TAMING, CALL_OF_THE_WILD, MAX_HORSE_JUMP_STRENGTH); }
/* UNARMED */
public boolean getDisarmProtected() { return getBooleanValue(SKILLS, UNARMED, DISARM, ANTI_THEFT); }
/* WOODCUTTING */
}

View File

@@ -1,38 +0,0 @@
package com.gmail.nossr50.core.config;
/**
* This class is used to define settings for upgrading EXTREMELY OLD versions of mcMMO to newer versions
* It could probably be deleted
*/
public class ChunkConversionOptions {
private static final boolean chunkletsEnabled = true;
private static final int conversionRate = 1;
private static final boolean useEnchantmentBuffs = true;
private static final int uuidConvertAmount = 5;
private static final int mojangRateLimit = 50000;
private static final long mojangLimitPeriod = 600000;
public static boolean getChunkletsEnabled() {
return chunkletsEnabled;
}
public static int getConversionRate() {
return conversionRate;
}
public static boolean useEnchantmentBuffs() {
return useEnchantmentBuffs;
}
public static int getUUIDConvertAmount() {
return uuidConvertAmount;
}
public static int getMojangRateLimit() {
return mojangRateLimit;
}
public static long getMojangLimitPeriod() {
return mojangLimitPeriod;
}
}

View File

@@ -1,338 +0,0 @@
package com.gmail.nossr50.core.config;
import com.gmail.nossr50.core.McmmoCore;
import com.google.common.io.Files;
import ninja.leaping.configurate.ConfigurationNode;
import ninja.leaping.configurate.commented.CommentedConfigurationNode;
import ninja.leaping.configurate.loader.ConfigurationLoader;
import ninja.leaping.configurate.yaml.YAMLConfigurationLoader;
import org.yaml.snakeyaml.DumperOptions;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
/**
* Handles loading and cacheing configuration settings from a configurable compatible config file
*/
//@ConfigSerializable
public abstract class Config implements VersionedConfig, Unload {
/* SETTINGS */
private boolean mergeNewKeys;
/* PATH VARS */
public final File DIRECTORY_DATA_FOLDER; //Directory that the file is in
public final String FILE_RELATIVE_PATH; //Relative Path to the file
protected final String DIRECTORY_DEFAULTS = "defaults";
/* LOADERS */
private YAMLConfigurationLoader defaultCopyLoader;
private YAMLConfigurationLoader userCopyLoader;
/* CONFIG FILES */
private File resourceConfigCopy; //Copy of the default config from the JAR (file is copied so that admins can easily compare to defaults)
private File resourceUserCopy; //File in the /$MCMMO_ROOT/mcMMO/ directory that may contain user edited settings
/* ROOT NODES */
private ConfigurationNode userRootNode = null;
private ConfigurationNode defaultRootNode = null;
/* CONFIG MANAGER */
private ConfigurationLoader<CommentedConfigurationNode> configManager;
public Config(String pathToParentFolder, String relativePath, boolean mergeNewKeys) {
//TODO: Check if this works...
this(new File(pathToParentFolder), relativePath, mergeNewKeys);
System.out.println("mcMMO Debug: Don't forget to check if loading config file by string instead of File works...");
}
public Config(File pathToParentFolder, String relativePath, boolean mergeNewKeys) {
/*
* These must be at the top
*/
this.mergeNewKeys = mergeNewKeys; //Whether or not we add new keys when they are found
mkdirDefaults(); // Make our default config dir
DIRECTORY_DATA_FOLDER = pathToParentFolder; //Data Folder for our plugin
FILE_RELATIVE_PATH = relativePath; //Relative path to config from a parent folder
//Attempt IO Operations
try {
//Makes sure we have valid Files corresponding to this config
initConfigFiles();
//Init MainConfig Loaders
initConfigLoaders();
//Load MainConfig Nodes
loadConfig();
//Attempt to update user file, and then load it into memory
readConfig();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Initializes the default copy File and the user config File
* @throws IOException
*/
private void initConfigFiles() throws IOException {
//Init our config copy
resourceConfigCopy = initDefaultConfig();
//Init the user file
resourceUserCopy = initUserConfig();
}
/**
* Loads the root node for the default config File and user config File
*/
private void loadConfig()
{
try {
final ConfigurationNode defaultConfig = this.defaultCopyLoader.load();
defaultRootNode = defaultConfig;
final ConfigurationNode userConfig = this.userCopyLoader.load();
userRootNode = userConfig;
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Initializes the YAMLConfigurationLoaders for this config
*/
private void initConfigLoaders()
{
this.defaultCopyLoader = YAMLConfigurationLoader.builder().setPath(resourceConfigCopy.toPath()).setFlowStyle(DumperOptions.FlowStyle.BLOCK).build();
this.userCopyLoader = YAMLConfigurationLoader.builder().setPath(resourceUserCopy.toPath()).setFlowStyle(DumperOptions.FlowStyle.FLOW).build();
}
/**
* Copies a new file from the JAR to the defaults directory and uses that new file to initialize our resourceConfigCopy
* @see Config#resourceConfigCopy
* @throws IOException
*/
private File initDefaultConfig() throws IOException {
return copyDefaultFromJar(getDefaultConfigCopyRelativePath(), true);
}
/**
* Attemps to load the config file if it exists, if it doesn't it copies a new one from within the JAR
* @return user config File
* @see Config#resourceUserCopy
* @throws IOException
*/
private File initUserConfig() throws IOException {
File userCopy = new File(DIRECTORY_DATA_FOLDER, FILE_RELATIVE_PATH); //Load the user file;
if(userCopy.exists())
{
// Yay
return userCopy;
}
else
{
//If it's gone we copy default files
//Note that we don't copy the values from the default copy put in /defaults/ that file exists only as a reference to admins and is unreliable
return copyDefaultFromJar(FILE_RELATIVE_PATH, false);
}
}
/**
* Used to make a new config file at a specified relative output path inside the data directory by copying the matching file found in that same relative path within the JAR
* @param relativeOutputPath the path to the output file
* @param deleteOld whether or not to delete the existing output file on disk
* @return a copy of the default config within the JAR
* @throws IOException
*/
private File copyDefaultFromJar(String relativeOutputPath, boolean deleteOld) throws IOException
{
/*
* Gen a Default config from inside the JAR
*/
McmmoCore.getLogger().info("Preparing to copy internal resource file (in JAR) - "+FILE_RELATIVE_PATH);
InputStream inputStream = McmmoCore.getResource(FILE_RELATIVE_PATH);
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
//This is a copy of the default file, which we will overwrite every time mcMMO loads
File targetFile = new File(DIRECTORY_DATA_FOLDER, relativeOutputPath);
//Wipe old default file on disk
if (targetFile.exists() && deleteOld)
{
McmmoCore.getLogger().info("Updating file " + relativeOutputPath);
targetFile.delete(); //Necessary?
}
if(!targetFile.exists())
{
targetFile.getParentFile().mkdirs();
targetFile.createNewFile(); //New File Boys
}
Files.write(buffer, targetFile);
McmmoCore.getLogger().info("Created config file - " + relativeOutputPath);
inputStream.close(); //Close the input stream
return targetFile;
}
/**
* The path to the defaults directory
* @return the path to the defaults directory
*/
private String getDefaultConfigCopyRelativePath() {
return DIRECTORY_DEFAULTS + File.separator + FILE_RELATIVE_PATH;
}
/**
* Creates the defaults directory
*/
private void mkdirDefaults() {
//Make Default Subdirectory
File defaultsDir = new File (DIRECTORY_DATA_FOLDER, "defaults");
if(!defaultsDir.exists())
defaultsDir.mkdir();
}
/**
* Configs are versioned based on when they had significant changes to keys
* @return current MainConfig Version String
*/
public String getVersion()
{
return String.valueOf(getConfigVersion());
}
/**
* Attempts to read the loaded config file
* MainConfig will have any necessary updates applied
* MainConfig will be compared to the default config to see if it is missing any nodes
* MainConfig will have any missing nodes inserted with their default value
*/
public void readConfig() {
McmmoCore.getLogger().info("Attempting to read " + FILE_RELATIVE_PATH + ".");
int version = this.userRootNode.getNode("ConfigVersion").getInt();
McmmoCore.getLogger().info(FILE_RELATIVE_PATH + " version is " + version);
//Update our config
updateConfig();
}
/**
* Compares the users config file to the default and adds any missing nodes and applies any necessary updates
*/
private void updateConfig()
{
McmmoCore.getLogger().info(defaultRootNode.getChildrenMap().size() +" items in default children map");
McmmoCore.getLogger().info(userRootNode.getChildrenMap().size() +" items in default root map");
// Merge Values from default
if(mergeNewKeys)
userRootNode = userRootNode.mergeValuesFrom(defaultRootNode);
removeOldKeys();
// Update config version
updateConfigVersion();
//Attempt to save
try {
saveUserCopy();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Saves the current state information of the config to the users copy (which they may edit)
* @throws IOException
*/
private void saveUserCopy() throws IOException
{
McmmoCore.getLogger().info("Saving new node");
userCopyLoader.save(userRootNode);
}
/**
* Performs any necessary operations to update this config
*/
private void updateConfigVersion() {
// Set a version for our config
this.userRootNode.getNode("ConfigVersion").setValue(getConfigVersion());
McmmoCore.getLogger().info("Updated config to ["+getConfigVersion()+"] - " + FILE_RELATIVE_PATH);
}
/**
* Returns the root node of this config
* @return the root node of this config
*/
protected ConfigurationNode getUserRootNode() {
return userRootNode;
}
/**
* Grabs an int from the specified node
* @param path
* @return the int from the node, null references will zero initialize
*/
public int getIntValue(String... path)
{
return userRootNode.getNode(path).getInt();
}
/**
* Grabs a double from the specified node
* @param path
* @return the double from the node, null references will zero initialize
*/
public double getDoubleValue(String... path)
{
return userRootNode.getNode(path).getDouble();
}
/**
* Grabs a boolean from the specified node
* @param path
* @return the boolean from the node, null references will zero initialize
*/
public boolean getBooleanValue(String... path)
{
return userRootNode.getNode(path).getBoolean();
}
/**
* Grabs a string from the specified node
* @param path
* @return the string from the node, null references will zero initialize
*/
public String getStringValue(String... path)
{
return userRootNode.getNode(path).getString();
}
/**
* Checks to see if a node exists in the user's config file
* @param path path to the node
* @return true if the node exists
*/
public boolean hasNode(String... path) {
return (userRootNode.getNode(path) != null);
}
}

View File

@@ -1,7 +0,0 @@
package com.gmail.nossr50.core.config;
import java.util.Collection;
public interface ConfigCollection<T> {
Collection<T> getLoadedCollection();
}

View File

@@ -1,19 +0,0 @@
package com.gmail.nossr50.core.config;
import java.io.File;
/**
* Represents a config file that registers keys after its initialized
*/
public abstract class ConfigCollections extends Config implements RegistersKeys, ConfigCollection {
public ConfigCollections(String pathToParentFolder, String relativePath, boolean mergeNewKeys) {
super(pathToParentFolder, relativePath, mergeNewKeys);
loadKeys();
}
public ConfigCollections(File pathToParentFolder, String relativePath, boolean mergeNewKeys) {
super(pathToParentFolder, relativePath, mergeNewKeys);
loadKeys();
}
}

View File

@@ -1,44 +0,0 @@
package com.gmail.nossr50.core.config;
import com.gmail.nossr50.core.McmmoCore;
import java.io.File;
import java.util.List;
/**
* This class is used for config files that validate their entries
*/
public abstract class ConfigValidated extends Config implements DefaultKeys {
public ConfigValidated(String parentFolderPath, String relativePath, boolean mergeNewKeys)
{
super(parentFolderPath, relativePath, mergeNewKeys);
validateEntries();
}
public ConfigValidated(File parentFolderFile, String relativePath, boolean mergeNewKeys)
{
super(parentFolderFile, relativePath, mergeNewKeys);
validateEntries();
}
/**
* Prints all errors found when validating the config
*/
private void validateEntries()
{
/*
* Print Errors about Keys
*/
List<String> validKeyErrors = validateKeys(); // Validate Keys
if(validKeyErrors != null && validKeyErrors.size() > 0)
{
for(String error : validKeyErrors)
{
McmmoCore.getLogger().severe(error);
}
}
}
}

View File

@@ -1,61 +0,0 @@
package com.gmail.nossr50.core.config;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.skills.subskills.AbstractSubSkill;
import com.gmail.nossr50.core.util.StringUtils;
public class CoreSkillsConfig extends Config {
private static CoreSkillsConfig instance;
public CoreSkillsConfig() {
super(McmmoCore.getDataFolderPath().getAbsoluteFile(),"coreskills.yml", true);
}
public static CoreSkillsConfig getInstance() {
if (instance == null)
return new CoreSkillsConfig();
return instance;
}
/**
* The version of this config
*
* @return
*/
@Override
public double getConfigVersion() {
return 1;
}
@Override
public void unload() {
instance = null;
}
/*
* Skill Settings
*/
/**
* Whether or not a skill is enabled
* Defaults true
*
* @param abstractSubSkill SubSkill definition to check
* @return true if subskill is enabled
*/
public boolean isSkillEnabled(AbstractSubSkill abstractSubSkill) {
return getBooleanValue(StringUtils.getCapitalized(abstractSubSkill.getPrimarySkill().toString()) + "." + abstractSubSkill.getConfigKeyName() + ".Enabled", true);
}
/**
* Whether or not this primary skill is enabled
*
* @param primarySkillType target primary skill
* @return true if enabled
*/
public boolean isPrimarySkillEnabled(PrimarySkillType primarySkillType) {
return getBooleanValue(StringUtils.getCapitalized(primarySkillType.toString()) + ".Enabled", true);
}
}

View File

@@ -1,10 +0,0 @@
package com.gmail.nossr50.core.config;
import java.util.List;
/**
* This is for config validation
*/
public interface DefaultKeys {
List<String> validateKeys();
}

View File

@@ -1,124 +0,0 @@
package com.gmail.nossr50.core.config;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.skills.SubSkillType;
import com.gmail.nossr50.core.skills.subskills.AbstractSubSkill;
import java.util.ArrayList;
import java.util.List;
public class RankConfig extends ConfigValidated {
private static RankConfig instance;
public RankConfig() {
super(McmmoCore.getDataFolderPath().getAbsoluteFile(),"skillranks.yml", true);
this.instance = this;
}
public static RankConfig getInstance() {
if (instance == null)
return new RankConfig();
return instance;
}
@Override
public void unload() {
instance = null;
}
/**
* The version of this config
*
* @return
*/
@Override
public double getConfigVersion() {
return 1;
}
@Override
public List<String> validateKeys() {
List<String> reason = new ArrayList<String>();
/*
* In the future this method will check keys for all skills, but for now it only checks overhauled skills
*/
checkKeys(reason);
return reason;
}
/**
* Returns the unlock level for a subskill depending on the gamemode
*
* @param subSkillType target subskill
* @param rank the rank we are checking
* @return the level requirement for a subskill at this particular rank
*/
public int getSubSkillUnlockLevel(SubSkillType subSkillType, int rank) {
String key = subSkillType.getRankConfigAddress();
return findRankByRootAddress(rank, key);
}
/**
* Returns the unlock level for a subskill depending on the gamemode
*
* @param abstractSubSkill target subskill
* @param rank the rank we are checking
* @return the level requirement for a subskill at this particular rank
*/
public int getSubSkillUnlockLevel(AbstractSubSkill abstractSubSkill, int rank) {
String key = abstractSubSkill.getPrimaryKeyName() + "." + abstractSubSkill.getConfigKeyName();
return findRankByRootAddress(rank, key);
}
/**
* Returns the unlock level for a subskill depending on the gamemode
*
* @param key root address of the subskill in the rankskills.yml file
* @param rank the rank we are checking
* @return the level requirement for a subskill at this particular rank
*/
private int findRankByRootAddress(int rank, String key) {
String scalingKey = MainConfig.getInstance().getIsRetroMode() ? ".RetroMode." : ".Standard.";
String targetRank = "Rank_" + rank;
key += scalingKey;
key += targetRank;
return getIntValue(key);
}
/**
* Checks for valid keys for subskill ranks
*/
private void checkKeys(List<String> reasons) {
//For now we will only check ranks of stuff I've overhauled
for (SubSkillType subSkillType : SubSkillType.values()) {
//Keeping track of the rank requirements and making sure there are no logical errors
int curRank = 0;
int prevRank = 0;
for (int x = 0; x < subSkillType.getNumRanks(); x++) {
if (curRank > 0)
prevRank = curRank;
curRank = getSubSkillUnlockLevel(subSkillType, x);
//Do we really care if its below 0? Probably not
if (curRank < 0) {
reasons.add(subSkillType.getAdvConfigAddress() + ".Rank_Levels.Rank_" + curRank + ".LevelReq should be above or equal to 0!");
}
if (prevRank > curRank) {
//We're going to allow this but we're going to warn them
plugin.getLogger().info("You have the ranks for the subskill " + subSkillType.toString() + " set up poorly, sequential ranks should have ascending requirements");
}
}
}
}
}

View File

@@ -1,11 +0,0 @@
package com.gmail.nossr50.core.config;
/**
* A class that registers keys
*/
public interface RegistersKeys {
/**
* Loads up keys
*/
void loadKeys();
}

View File

@@ -1,77 +0,0 @@
package com.gmail.nossr50.core.config;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.util.sounds.SoundType;
import java.util.ArrayList;
import java.util.List;
public class SoundConfig extends ConfigValidated {
private static SoundConfig instance;
public SoundConfig() {
super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "sounds.yml", true);
this.instance = this;
}
public static SoundConfig getInstance() {
if (instance == null)
return new SoundConfig();
return instance;
}
@Override
public void unload() {
instance = null;
}
/**
* The version of this config
*
* @return
*/
@Override
public double getConfigVersion() {
return 1;
}
@Override
public List<String> validateKeys() {
ArrayList<String> reasons = new ArrayList<>();
for (SoundType soundType : SoundType.values()) {
if (getDoubleValue("Sounds." + soundType.toString() + ".Volume") < 0) {
reasons.add("[mcMMO] Sound volume cannot be below 0 for " + soundType.toString());
}
//Sounds with custom pitching don't use pitch values
if (!soundType.usesCustomPitch()) {
if (getDoubleValue("Sounds." + soundType.toString() + ".Pitch") < 0) {
reasons.add("[mcMMO] Sound pitch cannot be below 0 for " + soundType.toString());
}
}
}
return reasons;
}
public float getMasterVolume() {
return (float) getDoubleValue("Sounds.MasterVolume", 1.0);
}
public float getVolume(SoundType soundType) {
String key = "Sounds." + soundType.toString() + ".Volume";
return (float) getDoubleValue(key);
}
public float getPitch(SoundType soundType) {
String key = "Sounds." + soundType.toString() + ".Pitch";
return (float) getDoubleValue(key);
}
public boolean getIsEnabled(SoundType soundType) {
String key = "Sounds." + soundType.toString() + ".Enabled";
return getBooleanValue(key, true);
}
}

View File

@@ -1,8 +0,0 @@
package com.gmail.nossr50.core.config;
/**
* Unloads values, sort of like a constructor
*/
public interface Unload {
void unload();
}

View File

@@ -1,12 +0,0 @@
package com.gmail.nossr50.core.config;
/**
* Represents a config that is version checked
*/
public interface VersionedConfig {
/**
* The version of this config
* @return
*/
double getConfigVersion();
}

View File

@@ -1,74 +0,0 @@
package com.gmail.nossr50.core.config;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.mcmmo.world.World;
import java.io.*;
import java.util.ArrayList;
/**
* Blacklist certain features in certain worlds
*/
public class WorldBlacklist {
private static ArrayList<String> blacklist;
private final String blackListFileName = "world_blacklist.txt";
public WorldBlacklist() {
blacklist = new ArrayList<>();
init();
}
public static boolean isWorldBlacklisted(World world) {
for (String s : blacklist) {
if (world.getName().equalsIgnoreCase(s))
return true;
}
return false;
}
public void init() {
//Make the blacklist file if it doesn't exist
//TODO: Check if this works
File blackListFile = new File(McmmoCore.getDataFolderPath().getAbsoluteFile() + File.separator + blackListFileName);
try {
if (!blackListFile.exists())
blackListFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
//Load up the blacklist
loadBlacklist(blackListFile);
//registerFlags();
}
private void loadBlacklist(File blackListFile) {
try {
FileReader fileReader = new FileReader(blackListFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String currentLine;
while ((currentLine = bufferedReader.readLine()) != null) {
if (currentLine.length() == 0)
continue;
if (!blacklist.contains(currentLine))
blacklist.add(currentLine);
}
//Close readers
bufferedReader.close();
fileReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
McmmoCore.getLogger().info(blacklist.size() + " entries in mcMMO World Blacklist");
}
}

View File

@@ -1,107 +0,0 @@
package com.gmail.nossr50.core.config.collectionconfigs;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.ConfigCollection;
import com.gmail.nossr50.core.config.ConfigCollections;
import com.gmail.nossr50.core.skills.child.salvage.salvageables.Salvageable;
import com.gmail.nossr50.core.skills.primary.repair.repairables.Repairable;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.regex.Pattern;
/**
* Represents a collection of config files that serve a similar purpose
* For example, files named repair.*.yml are all loaded into memory, this lets admins keep their config files clean
*
* To be honest I'm not sure how many people make use of this system, but I'm keeping it since its been in mcMMO for like 6+ years
*/
public final class MultiConfigManager {
public static final String DEFAULT_MULTICONFIG_FILENAME_SUFFIX = ".vanilla.yml";
//Configs
public RepairConfig vanillaRepairConfig; //This is the main config file that mcMMO will copy out
public SalvageConfig vanillaSalvageConfig;
private static List<Repairable> repairables;
private static List<Salvageable> salvageables;
public MultiConfigManager(String fileNamePrefix)
{
//init Collections
repairables = new ArrayList<>();
salvageables = new ArrayList<>();
//init vanilla configs
vanillaRepairConfig = new RepairConfig(getVanillaConfigName("repair"));
vanillaSalvageConfig = new SalvageConfig(getVanillaConfigName("salvage"));
//add valid vanilla collections to main collection
repairables.addAll(vanillaRepairConfig.getLoadedCollection());
salvageables.addAll(vanillaSalvageConfig.getLoadedCollection());
//add valid custom collections to main collection
loadCustomCollections("repair", repairables, RepairConfig.class);
loadCustomCollections("salvage", salvageables, SalvageConfig.class);
}
/**
* mcMMO allows collection config files to be named things like repair.whatevernameyouwanthere.yml and so on,
* these files are treated in the same way as the vanilla file. They serve the purpose of organization
* @param configPrefix the prefix of the file name, for example "repair", "salvage", etc
* @param collection the collection that will be added to
*/
public void loadCustomCollections(String configPrefix, Collection<?> collection, Class<? extends ConfigCollection> configClass)
{
String vanillaConfigFileName = getVanillaConfigName(configPrefix);
//Find other files
Pattern pattern = Pattern.compile(configPrefix+"\\.(?:.+)\\.yml");
File dataFolder = McmmoCore.getDataFolderPath();
for (String fileName : dataFolder.list()) {
//Vanilla Config is already loaded
if(fileName.equalsIgnoreCase(vanillaConfigFileName))
continue;
//Find files that match the pattern
if (!pattern.matcher(fileName).matches()) {
continue;
}
//Init file
File currentFile = new File(dataFolder, fileName);
//Make sure its not a directory (needed?)
if(currentFile.isDirectory())
continue;
try {
ConfigCollections customConfig = configClass.getClass().getConstructor(fileName).newInstance();
collection.addAll(customConfig.getLoadedCollection());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
private String getVanillaConfigName(String configPrefix)
{
return configPrefix+DEFAULT_MULTICONFIG_FILENAME_SUFFIX;
}
}

View File

@@ -1,186 +0,0 @@
package com.gmail.nossr50.core.config.collectionconfigs;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.ConfigCollections;
import com.gmail.nossr50.core.mcmmo.item.ItemStack;
import com.gmail.nossr50.core.skills.ConfigItemCategory;
import com.gmail.nossr50.core.skills.MaterialType;
import com.gmail.nossr50.core.skills.primary.repair.repairables.Repairable;
import com.gmail.nossr50.core.skills.primary.repair.repairables.RepairableFactory;
import com.gmail.nossr50.core.util.InvalidItemException;
import com.gmail.nossr50.core.util.ItemUtils;
import com.gmail.nossr50.core.util.skills.SkillUtils;
import ninja.leaping.configurate.ConfigurationNode;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
/**
* This config
*/
public class RepairConfig extends ConfigCollections {
private List<Repairable> repairables;
public RepairConfig(String fileName) {
super(McmmoCore.getDataFolderPath().getAbsoluteFile(), fileName, false);
}
@Override
public void unload() {
repairables = null;
}
@Override
public Collection getLoadedCollection() {
return repairables == null ? new ArrayList<Repairable>() : repairables;
}
/**
* The version of this config
*
* @return
*/
@Override
public double getConfigVersion() {
return 1;
}
@Override
public void loadKeys() {
repairables = new ArrayList<Repairable>();
ConfigurationNode repairablesNode = getUserRootNode().getNode("Repairables");
List<? extends ConfigurationNode> repairablesNodeChildrenList = repairablesNode.getChildrenList();
Iterator<? extends ConfigurationNode> configIter = repairablesNodeChildrenList.iterator();
for(Iterator<? extends ConfigurationNode> i = repairablesNodeChildrenList.iterator(); i.hasNext();)
{
ConfigurationNode iterNode = i.next();
//TODO: Verify that this is getting the key
String key = iterNode.getKey().toString(); //Get the String of the node
// Validate all the things!
List<String> reason = new ArrayList<String>();
try {
// ItemStack Material
ConfigItemCategory configItemCategory = ItemUtils.matchItemType(key);
} catch (InvalidItemException e) {
e.printStackTrace();
}
if (itemType == null) {
reason.add("Invalid material: " + key);
}
// Repair Material Type
MaterialType repairMaterialType = MaterialType.OTHER;
String repairMaterialTypeString = getStringValue("Repairables." + key + ".MaterialType", "OTHER");
if (!config.contains("Repairables." + key + ".MaterialType") && itemType != null) {
ItemStack repairItem = ItemStack.makeNew(itemType);
if (ItemUtils.isWoodTool(repairItem)) {
repairMaterialType = MaterialType.WOOD;
} else if (ItemUtils.isStoneTool(repairItem)) {
repairMaterialType = MaterialType.STONE;
} else if (ItemUtils.isStringTool(repairItem)) {
repairMaterialType = MaterialType.STRING;
} else if (ItemUtils.isLeatherArmor(repairItem)) {
repairMaterialType = MaterialType.LEATHER;
} else if (ItemUtils.isIronArmor(repairItem) || ItemUtils.isIronTool(repairItem)) {
repairMaterialType = MaterialType.IRON;
} else if (ItemUtils.isGoldArmor(repairItem) || ItemUtils.isGoldTool(repairItem)) {
repairMaterialType = MaterialType.GOLD;
} else if (ItemUtils.isDiamondArmor(repairItem) || ItemUtils.isDiamondTool(repairItem)) {
repairMaterialType = MaterialType.DIAMOND;
}
} else {
try {
repairMaterialType = MaterialType.valueOf(repairMaterialTypeString);
} catch (IllegalArgumentException ex) {
reason.add(key + " has an invalid MaterialType of " + repairMaterialTypeString);
}
}
// Repair Material
String repairMaterialName = getStringValue("Repairables." + key + ".RepairMaterial");
Material repairMaterial = (repairMaterialName == null ? repairMaterialType.getDefaultMaterial() : Material.matchMaterial(repairMaterialName));
if (repairMaterial == null) {
reason.add(key + " has an invalid repair material: " + repairMaterialName);
}
// Maximum Durability
short maximumDurability = (itemType != null ? itemType.getMaxDurability() : (short) getIntValue("Repairables." + key + ".MaximumDurability"));
if (maximumDurability <= 0) {
maximumDurability = (short) getIntValue("Repairables." + key + ".MaximumDurability");
}
if (maximumDurability <= 0) {
reason.add("Maximum durability of " + key + " must be greater than 0!");
}
// ItemStack Type
ConfigItemCategory repairConfigItemCategory = ConfigItemCategory.OTHER;
String repairItemTypeString = getStringValue("Repairables." + key + ".ItemType", "OTHER");
if (!config.contains("Repairables." + key + ".ItemType") && itemType != null) {
ItemStack repairItem = new ItemStack(itemType);
if (ItemUtils.isMinecraftTool(repairItem)) {
repairConfigItemCategory = ConfigItemCategory.TOOL;
} else if (ItemUtils.isArmor(repairItem)) {
repairConfigItemCategory = ConfigItemCategory.ARMOR;
}
} else {
try {
repairConfigItemCategory = ConfigItemCategory.valueOf(repairItemTypeString);
} catch (IllegalArgumentException ex) {
reason.add(key + " has an invalid ItemType of " + repairItemTypeString);
}
}
byte repairMetadata = (byte) getIntValue("Repairables." + key + ".RepairMaterialMetadata", -1);
int minimumLevel = getIntValue("Repairables." + key + ".MinimumLevel");
double xpMultiplier = getDoubleValue("Repairables." + key + ".XpMultiplier", 1);
if (minimumLevel < 0) {
reason.add(key + " has an invalid MinimumLevel of " + minimumLevel);
}
// Minimum Quantity
int minimumQuantity = (itemType != null ? SkillUtils.getRepairAndSalvageQuantities(new ItemStack(itemType), repairMaterial, repairMetadata) : getIntValue("Repairables." + key + ".MinimumQuantity", 2));
if (minimumQuantity <= 0 && itemType != null) {
minimumQuantity = getIntValue("Repairables." + key + ".MinimumQuantity", 2);
}
if (minimumQuantity <= 0) {
reason.add("Minimum quantity of " + key + " must be greater than 0!");
}
if (noErrorsInRepairable(reason)) {
Repairable repairable = RepairableFactory.getRepairable(itemType, repairMaterial, repairMetadata, minimumLevel, minimumQuantity, maximumDurability, repairConfigItemCategory, repairMaterialType, xpMultiplier);
repairables.add(repairable);
}
}
}
/**
* Check if there are any errors for this repairable and if there are reports them to console
* @param issues errors related to loading a repairable
* @return returns true if there are no errors for this repairable
*/
private boolean noErrorsInRepairable(List<String> issues) {
for (String issue : issues) {
McmmoCore.getLogger().warning(issue);
}
return issues.isEmpty();
}
}

View File

@@ -1,169 +0,0 @@
package com.gmail.nossr50.core.config.collectionconfigs;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.Config;
import com.gmail.nossr50.core.config.ConfigCollection;
import com.gmail.nossr50.core.config.ConfigCollections;
import com.gmail.nossr50.core.mcmmo.item.ItemStack;
import com.gmail.nossr50.core.skills.MaterialType;
import com.gmail.nossr50.core.skills.child.salvage.salvageables.Salvageable;
import com.gmail.nossr50.core.skills.child.salvage.salvageables.SalvageableFactory;
import com.gmail.nossr50.core.util.ItemUtils;
import com.gmail.nossr50.core.util.skills.SkillUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
public class SalvageConfig extends ConfigCollections {
private List<Salvageable> salvageables;
public SalvageConfig(String fileName) {
super(McmmoCore.getDataFolderPath().getAbsoluteFile(), fileName, false);
}
@Override
public Collection getLoadedCollection() {
return salvageables == null ? new ArrayList<Salvageable>() : salvageables;
}
@Override
public void unload() {
salvageables = null;
}
/**
* The version of this config
*
* @return
*/
@Override
public double getConfigVersion() {
return 1;
}
@Override
protected void loadKeys() {
salvageables = new ArrayList<Salvageable>();
ConfigurationSection section = config.getConfigurationSection("Salvageables");
Set<String> keys = section.getKeys(false);
for (String key : keys) {
// Validate all the things!
List<String> reason = new ArrayList<String>();
// ItemStack Material
Material itemMaterial = Material.matchMaterial(key);
if (itemMaterial == null) {
reason.add("Invalid material: " + key);
}
// Salvage Material Type
MaterialType salvageMaterialType = MaterialType.OTHER;
String salvageMaterialTypeString = getStringValue("Salvageables." + key + ".MaterialType", "OTHER");
if (!config.contains("Salvageables." + key + ".MaterialType") && itemMaterial != null) {
ItemStack salvageItem = new ItemStack(itemMaterial);
if (ItemUtils.isWoodTool(salvageItem)) {
salvageMaterialType = MaterialType.WOOD;
} else if (ItemUtils.isStoneTool(salvageItem)) {
salvageMaterialType = MaterialType.STONE;
} else if (ItemUtils.isStringTool(salvageItem)) {
salvageMaterialType = MaterialType.STRING;
} else if (ItemUtils.isLeatherArmor(salvageItem)) {
salvageMaterialType = MaterialType.LEATHER;
} else if (ItemUtils.isIronArmor(salvageItem) || ItemUtils.isIronTool(salvageItem)) {
salvageMaterialType = MaterialType.IRON;
} else if (ItemUtils.isGoldArmor(salvageItem) || ItemUtils.isGoldTool(salvageItem)) {
salvageMaterialType = MaterialType.GOLD;
} else if (ItemUtils.isDiamondArmor(salvageItem) || ItemUtils.isDiamondTool(salvageItem)) {
salvageMaterialType = MaterialType.DIAMOND;
}
} else {
try {
salvageMaterialType = MaterialType.valueOf(salvageMaterialTypeString.replace(" ", "_").toUpperCase());
} catch (IllegalArgumentException ex) {
reason.add(key + " has an invalid MaterialType of " + salvageMaterialTypeString);
}
}
// Salvage Material
String salvageMaterialName = getStringValue("Salvageables." + key + ".SalvageMaterial");
Material salvageMaterial = (salvageMaterialName == null ? salvageMaterialType.getDefaultMaterial() : Material.matchMaterial(salvageMaterialName));
if (salvageMaterial == null) {
reason.add(key + " has an invalid salvage material: " + salvageMaterialName);
}
// Maximum Durability
short maximumDurability = (itemMaterial != null ? itemMaterial.getMaxDurability() : (short) getIntValue("Salvageables." + key + ".MaximumDurability"));
// ItemStack Type
ItemType salvageItemType = ItemType.OTHER;
String salvageItemTypeString = getStringValue("Salvageables." + key + ".ItemType", "OTHER");
if (!config.contains("Salvageables." + key + ".ItemType") && itemMaterial != null) {
ItemStack salvageItem = new ItemStack(itemMaterial);
if (ItemUtils.isMinecraftTool(salvageItem)) {
salvageItemType = ItemType.TOOL;
} else if (ItemUtils.isArmor(salvageItem)) {
salvageItemType = ItemType.ARMOR;
}
} else {
try {
salvageItemType = ItemType.valueOf(salvageItemTypeString.replace(" ", "_").toUpperCase());
} catch (IllegalArgumentException ex) {
reason.add(key + " has an invalid ItemType of " + salvageItemTypeString);
}
}
byte salvageMetadata = (byte) getIntValue("Salvageables." + key + ".SalvageMaterialMetadata", -1);
int minimumLevel = getIntValue("Salvageables." + key + ".MinimumLevel");
double xpMultiplier = getDoubleValue("Salvageables." + key + ".XpMultiplier", 1);
if (minimumLevel < 0) {
reason.add(key + " has an invalid MinimumLevel of " + minimumLevel);
}
// Maximum Quantity
int maximumQuantity = (itemMaterial != null ? SkillUtils.getRepairAndSalvageQuantities(new ItemStack(itemMaterial), salvageMaterial, salvageMetadata) : getIntValue("Salvageables." + key + ".MaximumQuantity", 2));
if (maximumQuantity <= 0 && itemMaterial != null) {
maximumQuantity = getIntValue("Salvageables." + key + ".MaximumQuantity", 1);
}
int configMaximumQuantity = getIntValue("Salvageables." + key + ".MaximumQuantity", -1);
if (configMaximumQuantity > 0) {
maximumQuantity = configMaximumQuantity;
}
if (maximumQuantity <= 0) {
reason.add("Maximum quantity of " + key + " must be greater than 0!");
}
if (noErrorsInSalvageable(reason)) {
Salvageable salvageable = SalvageableFactory.getSalvageable(itemMaterial, salvageMaterial, salvageMetadata, minimumLevel, maximumQuantity, maximumDurability, salvageItemType, salvageMaterialType, xpMultiplier);
salvageables.add(salvageable);
}
}
}
private boolean noErrorsInSalvageable(List<String> issues) {
if (!issues.isEmpty()) {
plugin.getLogger().warning("Errors have been found in: " + fileName);
plugin.getLogger().warning("The following issues were found:");
}
for (String issue : issues) {
plugin.getLogger().warning(issue);
}
return issues.isEmpty();
}
}

View File

@@ -1,448 +0,0 @@
package com.gmail.nossr50.core.config.experience;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.ConfigValidated;
import com.gmail.nossr50.core.datatypes.experience.FormulaType;
import com.gmail.nossr50.core.mcmmo.BlockType;
import com.gmail.nossr50.core.mcmmo.bossbars.BarColor;
import com.gmail.nossr50.core.mcmmo.bossbars.BarStyle;
import com.gmail.nossr50.core.mcmmo.entity.EntityType;
import com.gmail.nossr50.core.skills.MaterialType;
import com.gmail.nossr50.core.skills.PotionStage;
import com.gmail.nossr50.core.skills.PrimarySkillType;
import com.gmail.nossr50.core.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
public class ExperienceConfig extends ConfigValidated {
public static final String EXPLOIT_FIX = "ExploitFix";
public static final String ENDERMAN_ENDERMITE_FARMS = "EndermanEndermiteFarms";
public static final String EXPERIENCE = "Experience";
public static final String EXPERIENCE_FORMULA = EXPERIENCE + "_Formula";
public static final String CURVE = "Curve";
public static final String VALUES = "_Values";
public static final String MULTIPLIER = "multiplier";
public static final String BASE = "base";
public static final String EXPONENT = "exponent";
public static final String MULTIPLIER1 = "Multiplier";
public static final String GLOBAL = "Global";
public static final String MOBSPAWNERS = "Mobspawners";
public static final String BREEDING = "Breeding";
public static final String MODIFIER = "Modifier";
public static final String CUSTOM_XP_PERK = "Custom_XP_Perk";
public static final String BOOST = "Boost";
public static final String DIMISHED_RETURNS = "Dimished_Returns";
public static final String GUARANTEED_MINIMUM_PERCENTAGE = "Guaranteed_Minimum_Percentage";
public static final String DIMINISHED_RETURNS = "Diminished_Returns";
public static final String ENABLE = "Enable";
public static final String ENABLED = ENABLE + "d";
public static final String TIME_INTERVAL = "Time_Interval";
public static final String CONVERSION = "Conversion";
public static final String EXP = "Exp_";
public static final String PVP = "PVP";
public static final String REWARDS = "Rewards";
public static final String COMBAT = "Combat";
public static final String ANIMALS = "Animals";
public static final String BARS = "_Bars";
public static final String UPDATE = "Update";
public static final String PASSIVE = "Passive";
public static final String THIS_MAY_CAUSE_LAG = "ThisMayCauseLag";
public static final String ALWAYS = "Always";
public static final String TITLES_WHEN_XPIS_GAINED = "TitlesWhenXPIsGained";
public static final String EXTRA_DETAILS = "ExtraDetails";
public static final String COLOR = "Color";
public static final String BAR_STYLE = "BarStyle";
public static final String ACROBATICS = "Acrobatics";
public static final String DODGE = "Dodge";
public static final String ROLL = "Roll";
public static final String FALL = "Fall";
public static final String FEATHER = "Feather";
public static final String ALCHEMY = "Alchemy";
public static final String POTION_STAGE = "Potion_Stage_";
public static final String ARCHERY = "Archery";
public static final String DISTANCE = "Distance_";
public static final String FISHING = "Fishing";
public static final String SHAKE = "Shake";
public static final String REPAIR = "Repair";
public static final String BASE1 = "Base";
public static final String TAMING = "Taming";
public static final String ANIMAL_TAMING = "Animal_Taming";
public static final String PARTY = "Party";
public static final String THRESHOLD = "Threshold";
public static final String CUMULATIVE = "Cumulative_";
public static final String OCELOT = "Ocelot";
public static final String WOLF = "Wolf";
public static final String FEATHER_FALL_MULTIPLIER = "FeatherFall_Multiplier";
private static ExperienceConfig instance;
//TODO: Should merge be false? Seems okay to leave it as true..
private ExperienceConfig() {
super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "experience.yml", true);
}
public static ExperienceConfig getInstance() {
if (instance == null) {
instance = new ExperienceConfig();
}
return instance;
}
/**
* The version of this config
*
* @return
*/
@Override
public double getConfigVersion() {
return 1;
}
@Override
public void unload() {
instance = null; //TODO: this might be a bit problematic
}
@Override
public List<String> validateKeys() {
List<String> reason = new ArrayList<String>();
/*
* FORMULA SETTINGS
*/
/* Curve values */
if (getMultiplier(FormulaType.EXPONENTIAL) <= 0) {
reason.add(EXPERIENCE_FORMULA + ".Exponential" + VALUES + "." + MULTIPLIER + " should be greater than 0!");
}
if (getMultiplier(FormulaType.LINEAR) <= 0) {
reason.add(EXPERIENCE_FORMULA + ".Linear" + VALUES + "." + MULTIPLIER + " should be greater than 0!");
}
if (getExponent(FormulaType.EXPONENTIAL) <= 0) {
reason.add(EXPERIENCE_FORMULA + ".Exponential" + VALUES + "." + EXPONENT + " should be greater than 0!");
}
/* Global modifier */
if (getExperienceGainsGlobalMultiplier() <= 0) {
reason.add(EXPERIENCE_FORMULA + "." + MULTIPLIER1 + "." + GLOBAL + " should be greater than 0!");
}
/* PVP modifier */
if (getPlayerVersusPlayerXP() < 0) {
reason.add(EXPERIENCE_FORMULA + "." + MULTIPLIER1 + "." + PVP + " should be at least 0!");
}
/* Spawned Mob modifier */
if (getSpawnedMobXpMultiplier() < 0) {
reason.add(EXPERIENCE_FORMULA + "." + MOBSPAWNERS + "." + MULTIPLIER1 + " should be at least 0!");
}
/* Bred Mob modifier */
if (getBredMobXpMultiplier() < 0) {
reason.add(EXPERIENCE_FORMULA + "." + BREEDING + "." + MULTIPLIER1 + " should be at least 0!");
}
/* Conversion */
if (getExpModifier() <= 0) {
reason.add(CONVERSION + "." + EXP + MODIFIER + " should be greater than 0!");
}
/*
* XP SETTINGS
*/
/* Alchemy */
for (PotionStage potionStage : PotionStage.values()) {
if (getPotionXP(potionStage) < 0) {
reason.add(EXPERIENCE + "." + ALCHEMY + "." + POTION_STAGE + potionStage.toNumerical() + " should be at least 0!");
}
}
/* Archery */
if (getArcheryDistanceMultiplier() < 0) {
reason.add(EXPERIENCE + "." + ARCHERY + "." + DISTANCE + MULTIPLIER1 + " should be at least 0!");
}
/* Combat XP Multipliers */
if (getAnimalsXP() < 0) {
reason.add(EXPERIENCE + "." + COMBAT + "." + MULTIPLIER1 + "." + ANIMALS + " should be at least 0!");
}
if (getDodgeXPModifier() < 0) {
reason.add("Skills." + ACROBATICS + "." + DODGE + "_XP_" + MODIFIER + " should be at least 0!");
}
if (getRollXPModifier() < 0) {
reason.add("Skills." + ACROBATICS + "." + ROLL + "_XP_" + MODIFIER + " should be at least 0!");
}
if (getFallXPModifier() < 0) {
reason.add("Skills." + ACROBATICS + "." + FALL + "_XP_" + MODIFIER + " should be at least 0!");
}
/* Fishing */
// TODO: Add validation for each fish type once enum is available.
if (getFishingShakeXP() <= 0) {
reason.add(EXPERIENCE + "." + FISHING + "." + SHAKE + " should be greater than 0!");
}
/* Repair */
if (getRepairXPBase() <= 0) {
reason.add(EXPERIENCE + "." + REPAIR + "." + BASE1 + " should be greater than 0!");
}
/* Taming */
if (getTamingXP(EntityType.WOLF) <= 0) {
reason.add(EXPERIENCE + "." + TAMING + "." + ANIMAL_TAMING + "." + WOLF + " should be greater than 0!");
}
if (getTamingXP(EntityType.OCELOT) <= 0) {
reason.add(EXPERIENCE + "." + TAMING + "." + ANIMAL_TAMING + "." + OCELOT + " should be greater than 0!");
}
return reason;
}
/*
* FORMULA SETTINGS
*/
/* EXPLOIT TOGGLES */
public boolean isEndermanEndermiteFarmingPrevented() {
return getBooleanValue(EXPLOIT_FIX, ENDERMAN_ENDERMITE_FARMS);
}
/* Curve settings */
public FormulaType getFormulaType() {
return FormulaType.getFormulaType(getStringValue(EXPERIENCE_FORMULA, CURVE));
}
public boolean getCumulativeCurveEnabled() {
return getBooleanValue(EXPERIENCE_FORMULA, CUMULATIVE + CURVE);
}
/* Curve values */
public double getMultiplier(FormulaType type) {
return getDoubleValue(EXPERIENCE_FORMULA, StringUtils.getCapitalized(type.toString()) + VALUES, MULTIPLIER);
}
public int getBase(FormulaType type) {
return getIntValue(EXPERIENCE_FORMULA, StringUtils.getCapitalized(type.toString()) + VALUES, BASE);
}
public double getExponent(FormulaType type) {
return getDoubleValue(EXPERIENCE_FORMULA, StringUtils.getCapitalized(type.toString()) + VALUES, EXPONENT);
}
/* Global modifier */
public double getExperienceGainsGlobalMultiplier() {
return getDoubleValue(EXPERIENCE_FORMULA, MULTIPLIER1, GLOBAL);
}
//TODO: Rewrite this
/*public void setExperienceGainsGlobalMultiplier(double value) {
config.set(EXPERIENCE_FORMULA, MULTIPLIER1, GLOBAL, value);
}*/
/* PVP modifier */
public double getPlayerVersusPlayerXP() {
return getDoubleValue(EXPERIENCE_FORMULA, MULTIPLIER1, PVP);
}
/* Spawned Mob modifier */
public double getSpawnedMobXpMultiplier() {
return getDoubleValue(EXPERIENCE_FORMULA, MOBSPAWNERS, MULTIPLIER1);
}
public double getBredMobXpMultiplier() {
return getDoubleValue(EXPERIENCE_FORMULA, BREEDING, MULTIPLIER1);
}
/* Skill modifiers */
public double getFormulaSkillModifier(PrimarySkillType skill) {
return getDoubleValue(EXPERIENCE_FORMULA, MODIFIER, StringUtils.getCapitalized(skill.toString()));
}
/* Custom XP perk */
public double getCustomXpPerkBoost() {
return getDoubleValue(EXPERIENCE_FORMULA, CUSTOM_XP_PERK, BOOST);
}
/* Diminished Returns */
public float getDiminishedReturnsCap() {
return (float) getDoubleValue(DIMISHED_RETURNS, GUARANTEED_MINIMUM_PERCENTAGE);
}
public boolean getDiminishedReturnsEnabled() {
return getBooleanValue(DIMINISHED_RETURNS, ENABLED);
}
public int getDiminishedReturnsThreshold(PrimarySkillType skill) {
return getIntValue(DIMINISHED_RETURNS, THRESHOLD, StringUtils.getCapitalized(skill.toString()));
}
public int getDiminishedReturnsTimeInterval() {
return getIntValue(DIMINISHED_RETURNS, TIME_INTERVAL);
}
/* Conversion */
public double getExpModifier() {
return getDoubleValue(CONVERSION, EXP + MODIFIER);
}
/*
* XP SETTINGS
*/
/* General Settings */
public boolean getExperienceGainsPlayerVersusPlayerEnabled() {
return getBooleanValue(EXPERIENCE, PVP, REWARDS);
}
/* Combat XP Multipliers */
public double getCombatXP(EntityType entity) {
return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName());
}
public double getAnimalsXP(EntityType entity) {
return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName());
}
public double getAnimalsXP() {
return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, ANIMALS);
}
public boolean hasCombatXP(EntityType entity) {
return hasNode(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName());
}
/* Materials */
/**
* Gets the raw XP given for breaking this block, this does not include modifiers
* @param skill The skill to give XP for
* @param blockType the type of block
* @return the raw amount of XP for this block before modifiers
*/
public int getXp(PrimarySkillType skill, BlockType blockType) {
//TODO: This is going to need to be changed, this code here is only placeholder
String[] path = new String[]{ EXPERIENCE, StringUtils.getCapitalized(skill.toString()), blockType.getConfigName() };
return getIntValue(path);
}
/**
* Checks if a block gives XP
* This is used to determine whether or not mcMMO should track a block that is placed by a user, among other things.
* Note: If the block has an entry in the config that will return true even if the XP is 0, this does not check the value of the XP
* @param skill The skill to check for
* @param blockType the type of block
* @return true if the block does give XP
*/
public boolean doesBlockGiveSkillXP(PrimarySkillType skill, BlockType blockType) {
//TODO: This used to support wildcard characters, seems a bit unnecessary to do so.
//TODO: This is going to need to be changed, this code here is only placeholder
String[] path = new String[] {EXPERIENCE, StringUtils.getCapitalized(skill.toString()), blockType.getConfigName()};
return hasNode(path);
}
/*
* Experience Bar Stuff
*/
public boolean isPartyExperienceBarsEnabled() {
return getBooleanValue(EXPERIENCE + BARS, UPDATE, PARTY);
}
public boolean isPassiveGainsExperienceBarsEnabled() {
return getBooleanValue(EXPERIENCE + BARS, UPDATE, PASSIVE);
}
public boolean getDoExperienceBarsAlwaysUpdateTitle() {
return getBooleanValue(EXPERIENCE + BARS, THIS_MAY_CAUSE_LAG, ALWAYS + UPDATE + TITLES_WHEN_XPIS_GAINED, ENABLE) || getAddExtraDetails();
}
public boolean getAddExtraDetails() {
return getBooleanValue(EXPERIENCE + BARS, THIS_MAY_CAUSE_LAG, ALWAYS + UPDATE + TITLES_WHEN_XPIS_GAINED, EXTRA_DETAILS);
}
public boolean isExperienceBarsEnabled() {
return getBooleanValue(EXPERIENCE + BARS, ENABLE);
}
public boolean isExperienceBarEnabled(PrimarySkillType primarySkillType) {
return getBooleanValue(EXPERIENCE + BARS, StringUtils.getCapitalized(primarySkillType.toString()), ENABLE);
}
public BarColor getExperienceBarColor(PrimarySkillType primarySkillType) {
String colorValueFromConfig = getStringValue(EXPERIENCE + BARS, StringUtils.getCapitalized(primarySkillType.toString()), COLOR);
for (BarColor barColor : BarColor.values()) {
if (barColor.toString().equalsIgnoreCase(colorValueFromConfig))
return barColor;
}
//In case the value is invalid
return BarColor.WHITE;
}
public BarStyle getExperienceBarStyle(PrimarySkillType primarySkillType) {
String colorValueFromConfig = getStringValue(EXPERIENCE + BARS, StringUtils.getCapitalized(primarySkillType.toString()), BAR_STYLE);
for (BarStyle barStyle : BarStyle.values()) {
if (barStyle.toString().equalsIgnoreCase(colorValueFromConfig))
return barStyle;
}
//In case the value is invalid
return BarStyle.SOLID;
}
/* Acrobatics */
public int getDodgeXPModifier() {
return getIntValue(EXPERIENCE, ACROBATICS, DODGE);
}
public int getRollXPModifier() {
return getIntValue(EXPERIENCE, ACROBATICS, ROLL);
}
public int getFallXPModifier() {
return getIntValue(EXPERIENCE, ACROBATICS, FALL);
}
public double getFeatherFallXPModifier() {
return getDoubleValue(EXPERIENCE, ACROBATICS, FEATHER_FALL_MULTIPLIER);
}
/* Alchemy */
public double getPotionXP(PotionStage stage) {
return getDoubleValue(EXPERIENCE, ALCHEMY, POTION_STAGE + stage.toNumerical());
}
/* Archery */
public double getArcheryDistanceMultiplier() {
return getDoubleValue(EXPERIENCE, ARCHERY, DISTANCE + MULTIPLIER1);
}
public int getFishingShakeXP() {
return getIntValue(EXPERIENCE, FISHING, SHAKE);
}
/* Repair */
public double getRepairXPBase() {
return getDoubleValue(EXPERIENCE, REPAIR, BASE1);
}
public double getRepairXP(MaterialType repairMaterialType) {
return getDoubleValue(EXPERIENCE, REPAIR, StringUtils.getCapitalized(repairMaterialType.toString()));
}
/* Taming */
public int getTamingXP(EntityType type) {
return getIntValue(EXPERIENCE, TAMING, ANIMAL_TAMING, type.getConfigName());
}
}

View File

@@ -1,110 +0,0 @@
package com.gmail.nossr50.core.config.mods;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.ConfigCollections;
import com.gmail.nossr50.core.mcmmo.item.ItemStack;
import com.gmail.nossr50.core.skills.ConfigItemCategory;
import com.gmail.nossr50.core.skills.MaterialType;
import com.gmail.nossr50.core.skills.primary.repair.repairables.Repairable;
import com.gmail.nossr50.core.skills.primary.repair.repairables.RepairableFactory;
import com.gmail.nossr50.core.util.skills.SkillUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class CustomArmorConfig extends ConfigCollections {
public List<Material> customBoots = new ArrayList<Material>();
public List<Material> customChestplates = new ArrayList<Material>();
public List<Material> customHelmets = new ArrayList<Material>();
public List<Material> customLeggings = new ArrayList<Material>();
public List<Repairable> repairables = new ArrayList<Repairable>();
private boolean needsUpdate = false;
protected CustomArmorConfig(String fileName) {
super(McmmoCore.getDataFolderPath().getPath() + "mods", fileName, false);
loadKeys();
}
/**
* The version of this config
*
* @return
*/
@Override
public double getConfigVersion() {
return 1;
}
@Override
public void loadKeys() {
loadArmor("Boots", customBoots);
loadArmor("Chestplates", customChestplates);
loadArmor("Helmets", customHelmets);
loadArmor("Leggings", customLeggings);
if (needsUpdate) {
needsUpdate = false;
backup();
}
}
private void loadArmor(String armorType, List<Material> materialList) {
if (needsUpdate) {
return;
}
ConfigurationSection armorSection = config.getConfigurationSection(armorType);
if (armorSection == null) {
return;
}
Set<String> armorConfigSet = armorSection.getKeys(false);
for (String armorName : armorConfigSet) {
if (config.contains(armorType + "." + armorName + "." + ".ID")) {
needsUpdate = true;
return;
}
Material armorMaterial = Material.matchMaterial(armorName);
if (armorMaterial == null) {
plugin.getLogger().warning("Invalid material name. This item will be skipped. - " + armorName);
continue;
}
boolean repairable = getBooleanValue(armorType + "." + armorName + ".Repairable");
Material repairMaterial = Material.matchMaterial(getStringValue(armorType + "." + armorName + ".Repair_Material", ""));
if (repairable && (repairMaterial == null)) {
plugin.getLogger().warning("Incomplete repair information. This item will be unrepairable. - " + armorName);
repairable = false;
}
if (repairable) {
byte repairData = (byte) getIntValue(armorType + "." + armorName + ".Repair_Material_Data_Value", -1);
int repairQuantity = SkillUtils.getRepairAndSalvageQuantities(new ItemStack(armorMaterial), repairMaterial, repairData);
if (repairQuantity == 0) {
repairQuantity = getIntValue(armorType + "." + armorName + ".Repair_Material_Quantity", 2);
}
String repairItemName = getStringValue(armorType + "." + armorName + ".Repair_Material_Pretty_Name");
int repairMinimumLevel = getIntValue(armorType + "." + armorName + ".Repair_MinimumLevel", 0);
double repairXpMultiplier = getDoubleValue(armorType + "." + armorName + ".Repair_XpMultiplier", 1);
short durability = armorMaterial.getMaxDurability();
if (durability == 0) {
durability = (short) getIntValue(armorType + "." + armorName + ".Durability", 70);
}
repairables.add(RepairableFactory.getRepairable(armorMaterial, repairMaterial, repairData, repairItemName, repairMinimumLevel, repairQuantity, durability, ConfigItemCategory.ARMOR, MaterialType.OTHER, repairXpMultiplier));
}
materialList.add(armorMaterial);
}
}
}

View File

@@ -1,95 +0,0 @@
package com.gmail.nossr50.core.config.mods;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.ConfigCollections;
import com.gmail.nossr50.core.datatypes.mods.CustomBlock;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
public class CustomBlockConfig extends ConfigCollections {
public List<Material> customExcavationBlocks = new ArrayList<>();
public List<Material> customHerbalismBlocks = new ArrayList<>();
public List<Material> customMiningBlocks = new ArrayList<>();
public List<Material> customOres = new ArrayList<>();
public List<Material> customLogs = new ArrayList<>();
public List<Material> customLeaves = new ArrayList<>();
public List<Material> customAbilityBlocks = new ArrayList<>();
public HashMap<Material, CustomBlock> customBlockMap = new HashMap<>();
private boolean needsUpdate = false;
protected CustomBlockConfig(String fileName) {
super(McmmoCore.getDataFolderPath().getPath() + "mods", fileName, false);
loadKeys();
}
@Override
protected void loadKeys() {
loadBlocks("Excavation", customExcavationBlocks);
loadBlocks("Herbalism", customHerbalismBlocks);
loadBlocks("Mining", customMiningBlocks);
loadBlocks("Woodcutting", null);
loadBlocks("Ability_Blocks", customAbilityBlocks);
if (needsUpdate) {
needsUpdate = false;
backup();
}
}
private void loadBlocks(String skillType, List<Material> blockList) {
if (needsUpdate) {
return;
}
ConfigurationSection skillSection = config.getConfigurationSection(skillType);
if (skillSection == null) {
return;
}
Set<String> skillConfigSet = skillSection.getKeys(false);
for (String blockName : skillConfigSet) {
if (config.contains(skillType + "." + blockName + ".Drop_Item")) {
needsUpdate = true;
return;
}
String[] blockInfo = blockName.split("[|]");
Material blockMaterial = Material.matchMaterial(blockInfo[0]);
if (blockMaterial == null) {
plugin.getLogger().warning("Invalid material name. This item will be skipped. - " + blockInfo[0]);
continue;
}
if (blockList != null) {
blockList.add(blockMaterial);
}
if (skillType.equals("Ability_Blocks")) {
continue;
}
int xp = getIntValue(skillType + "." + blockName + ".XP_Gain");
int smeltingXp = 0;
if (skillType.equals("Mining") && getBooleanValue(skillType + "." + blockName + ".Is_Ore")) {
customOres.add(blockMaterial);
smeltingXp = getIntValue(skillType + "." + blockName + ".Smelting_XP_Gain", xp / 10);
} else if (skillType.equals("Woodcutting")) {
if (getBooleanValue(skillType + "." + blockName + ".Is_Log")) {
customLogs.add(blockMaterial);
} else {
customLeaves.add(blockMaterial);
xp = 0; // Leaves don't grant XP
}
}
customBlockMap.put(blockMaterial, new CustomBlock(xp, getBooleanValue(skillType + "." + blockName + ".Double_Drops_Enabled"), smeltingXp));
}
}
}

View File

@@ -1,112 +0,0 @@
package com.gmail.nossr50.core.config.mods;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.Config;
import com.gmail.nossr50.core.datatypes.mods.CustomTool;
import com.gmail.nossr50.core.mcmmo.item.ItemStack;
import com.gmail.nossr50.core.skills.MaterialType;
import com.gmail.nossr50.core.skills.primary.repair.repairables.Repairable;
import com.gmail.nossr50.core.skills.primary.repair.repairables.RepairableFactory;
import com.gmail.nossr50.core.util.skills.SkillUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class CustomToolConfig extends Config {
public List<Material> customAxes = new ArrayList<Material>();
public List<Material> customBows = new ArrayList<Material>();
public List<Material> customHoes = new ArrayList<Material>();
public List<Material> customPickaxes = new ArrayList<Material>();
public List<Material> customShovels = new ArrayList<Material>();
public List<Material> customSwords = new ArrayList<Material>();
public HashMap<Material, CustomTool> customToolMap = new HashMap<Material, CustomTool>();
public List<Repairable> repairables = new ArrayList<Repairable>();
private boolean needsUpdate = false;
protected CustomToolConfig(String fileName) {
super(McmmoCore.getDataFolderPath().getPath() + "mods", fileName);
loadKeys();
}
@Override
protected void loadKeys() {
loadTool("Axes", customAxes);
loadTool("Bows", customBows);
loadTool("Hoes", customHoes);
loadTool("Pickaxes", customPickaxes);
loadTool("Shovels", customShovels);
loadTool("Swords", customSwords);
if (needsUpdate) {
needsUpdate = false;
backup();
}
}
private void loadTool(String toolType, List<Material> materialList) {
if (needsUpdate) {
return;
}
ConfigurationSection toolSection = config.getConfigurationSection(toolType);
if (toolSection == null) {
return;
}
Set<String> toolConfigSet = toolSection.getKeys(false);
for (String toolName : toolConfigSet) {
if (config.contains(toolType + "." + toolName + "." + ".ID")) {
needsUpdate = true;
return;
}
Material toolMaterial = Material.matchMaterial(toolName);
if (toolMaterial == null) {
plugin.getLogger().warning("Invalid material name. This item will be skipped. - " + toolName);
continue;
}
boolean repairable = getBooleanValue(toolType + "." + toolName + ".Repairable");
Material repairMaterial = Material.matchMaterial(getStringValue(toolType + "." + toolName + ".Repair_Material", ""));
if (repairable && (repairMaterial == null)) {
plugin.getLogger().warning("Incomplete repair information. This item will be unrepairable. - " + toolName);
repairable = false;
}
if (repairable) {
byte repairData = (byte) getIntValue(toolType + "." + toolName + ".Repair_Material_Data_Value", -1);
int repairQuantity = SkillUtils.getRepairAndSalvageQuantities(new ItemStack(toolMaterial), repairMaterial, repairData);
if (repairQuantity == 0) {
repairQuantity = getIntValue(toolType + "." + toolName + ".Repair_Material_Quantity", 2);
}
String repairItemName = getStringValue(toolType + "." + toolName + ".Repair_Material_Pretty_Name");
int repairMinimumLevel = getIntValue(toolType + "." + toolName + ".Repair_MinimumLevel", 0);
double repairXpMultiplier = getDoubleValue(toolType + "." + toolName + ".Repair_XpMultiplier", 1);
short durability = toolMaterial.getMaxDurability();
if (durability == 0) {
durability = (short) getIntValue(toolType + "." + toolName + ".Durability", 60);
}
repairables.add(RepairableFactory.getRepairable(toolMaterial, repairMaterial, repairData, repairItemName, repairMinimumLevel, repairQuantity, durability, ItemType.TOOL, MaterialType.OTHER, repairXpMultiplier));
}
double multiplier = getDoubleValue(toolType + "." + toolName + ".XP_Modifier", 1.0);
boolean abilityEnabled = getBooleanValue(toolType + "." + toolName + ".Ability_Enabled", true);
int tier = getIntValue(toolType + "." + toolName + ".Tier", 1);
CustomTool tool = new CustomTool(tier, abilityEnabled, multiplier);
materialList.add(toolMaterial);
customToolMap.put(toolMaterial, tool);
}
}
}

View File

@@ -1,357 +0,0 @@
package com.gmail.nossr50.core.config.treasure;
import com.gmail.nossr50.core.McmmoCore;
import com.gmail.nossr50.core.config.Config;
import com.gmail.nossr50.core.mcmmo.colors.ChatColor;
import com.gmail.nossr50.core.mcmmo.item.ItemStack;
import com.gmail.nossr50.core.skills.treasure.*;
import com.gmail.nossr50.core.util.EnchantmentUtils;
import com.gmail.nossr50.core.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class TreasureConfig extends Config {
private static TreasureConfig instance;
public HashMap<String, List<ExcavationTreasure>> excavationMap = new HashMap<String, List<ExcavationTreasure>>();
public HashMap<EntityType, List<ShakeTreasure>> shakeMap = new HashMap<EntityType, List<ShakeTreasure>>();
public HashMap<String, List<HylianTreasure>> hylianMap = new HashMap<String, List<HylianTreasure>>();
public HashMap<Rarity, List<FishingTreasure>> fishingRewards = new HashMap<Rarity, List<FishingTreasure>>();
public HashMap<Rarity, List<EnchantmentTreasure>> fishingEnchantments = new HashMap<Rarity, List<EnchantmentTreasure>>();
private TreasureConfig() {
super(McmmoCore.getDataFolderPath().getAbsoluteFile(),"treasures.yml");
loadKeys();
validate();
}
public static TreasureConfig getInstance() {
if (instance == null) {
instance = new TreasureConfig();
}
return instance;
}
@Override
protected boolean validateKeys() {
// Validate all the settings!
List<String> reason = new ArrayList<String>();
for (String tier : config.getConfigurationSection("Enchantment_Drop_Rates").getKeys(false)) {
double totalEnchantDropRate = 0;
double totalItemDropRate = 0;
for (Rarity rarity : Rarity.values()) {
double enchantDropRate = getDoubleValue("Enchantment_Drop_Rates." + tier + "." + rarity.toString());
double itemDropRate = getDoubleValue("Item_Drop_Rates." + tier + "." + rarity.toString());
if ((enchantDropRate < 0.0 || enchantDropRate > 100.0) && rarity != Rarity.RECORD) {
reason.add("The enchant drop rate for " + tier + " items that are " + rarity.toString() + "should be between 0.0 and 100.0!");
}
if (itemDropRate < 0.0 || itemDropRate > 100.0) {
reason.add("The item drop rate for " + tier + " items that are " + rarity.toString() + "should be between 0.0 and 100.0!");
}
totalEnchantDropRate += enchantDropRate;
totalItemDropRate += itemDropRate;
}
if (totalEnchantDropRate < 0 || totalEnchantDropRate > 100.0) {
reason.add("The total enchant drop rate for " + tier + " should be between 0.0 and 100.0!");
}
if (totalItemDropRate < 0 || totalItemDropRate > 100.0) {
reason.add("The total item drop rate for " + tier + " should be between 0.0 and 100.0!");
}
}
return noErrorsInConfig(reason);
}
@Override
protected void loadKeys() {
if (config.getConfigurationSection("Treasures") != null) {
backup();
return;
}
loadTreasures("Fishing");
loadTreasures("Excavation");
loadTreasures("Hylian_Luck");
loadEnchantments();
for (EntityType entity : EntityType.values()) {
if (entity.isAlive()) {
loadTreasures("Shake." + entity.toString());
}
}
}
private void loadTreasures(String type) {
boolean isFishing = type.equals("Fishing");
boolean isShake = type.contains("Shake");
boolean isExcavation = type.equals("Excavation");
boolean isHylian = type.equals("Hylian_Luck");
ConfigurationSection treasureSection = config.getConfigurationSection(type);
if (treasureSection == null) {
return;
}
// Initialize fishing HashMap
for (Rarity rarity : Rarity.values()) {
if (!fishingRewards.containsKey(rarity)) {
fishingRewards.put(rarity, (new ArrayList<FishingTreasure>()));
}
}
for (String treasureName : treasureSection.getKeys(false)) {
// Validate all the things!
List<String> reason = new ArrayList<String>();
String[] treasureInfo = treasureName.split("[|]");
String materialName = treasureInfo[0];
/*
* Material, Amount, and Data
*/
Material material;
if (materialName.contains("INVENTORY")) {
// Use magic material BEDROCK to know that we're grabbing something from the inventory and not a normal treasure
if (!shakeMap.containsKey(EntityType.PLAYER))
shakeMap.put(EntityType.PLAYER, new ArrayList<ShakeTreasure>());
shakeMap.get(EntityType.PLAYER).add(new ShakeTreasure(new ItemStack(Material.BEDROCK, 1, (byte) 0), 1, getInventoryStealDropChance(), getInventoryStealDropLevel()));
continue;
} else {
material = Material.matchMaterial(materialName);
}
int amount = getIntValue(type + "." + treasureName + ".Amount");
short data = (treasureInfo.length == 2) ? Short.parseShort(treasureInfo[1]) : (short) getIntValue(type + "." + treasureName + ".Data");
if (material == null) {
reason.add("Invalid material: " + materialName);
}
if (amount <= 0) {
reason.add("Amount of " + treasureName + " must be greater than 0! " + amount);
}
if (material != null && material.isBlock() && (data > 127 || data < -128)) {
reason.add("Data of " + treasureName + " is invalid! " + data);
}
/*
* XP, Drop Chance, and Drop Level
*/
int xp = getIntValue(type + "." + treasureName + ".XP");
double dropChance = getDoubleValue(type + "." + treasureName + ".Drop_Chance");
int dropLevel = getIntValue(type + "." + treasureName + ".Drop_Level");
if (xp < 0) {
reason.add(treasureName + " has an invalid XP value: " + xp);
}
if (dropChance < 0.0D) {
reason.add(treasureName + " has an invalid Drop_Chance: " + dropChance);
}
if (dropLevel < 0) {
reason.add(treasureName + " has an invalid Drop_Level: " + dropLevel);
}
/*
* Specific Types
*/
Rarity rarity = null;
if (isFishing) {
rarity = Rarity.getRarity(getStringValue(type + "." + treasureName + ".Rarity"));
if (rarity == null) {
reason.add("Invalid Rarity for item: " + treasureName);
}
}
/*
* Itemstack
*/
ItemStack item = null;
if (materialName.contains("POTION")) {
Material mat = Material.matchMaterial(materialName);
if (mat == null) {
reason.add("Potion format for Treasures.yml has changed");
} else {
item = new ItemStack(mat, amount, data);
PotionMeta itemMeta = (PotionMeta) item.getItemMeta();
PotionType potionType = null;
try {
potionType = PotionType.valueOf(getStringValue(type + "." + treasureName + ".PotionData.PotionType", "WATER"));
} catch (IllegalArgumentException ex) {
reason.add("Invalid Potion_Type: " + getStringValue(type + "." + treasureName + ".PotionData.PotionType", "WATER"));
}
boolean extended = getBooleanValue(type + "." + treasureName + ".PotionData.Extended", false);
boolean upgraded = getBooleanValue(type + "." + treasureName + ".PotionData.Upgraded", false);
itemMeta.setBasePotionData(new PotionData(potionType, extended, upgraded));
if (config.contains(type + "." + treasureName + ".Custom_Name")) {
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', getStringValue(type + "." + treasureName + ".Custom_Name")));
}
if (config.contains(type + "." + treasureName + ".Lore")) {
List<String> lore = new ArrayList<String>();
for (String s : getStringValueList(type + "." + treasureName + ".Lore")) {
lore.add(ChatColor.translateAlternateColorCodes('&', s));
}
itemMeta.setLore(lore);
}
item.setItemMeta(itemMeta);
}
} else if (material != null) {
item = new ItemStack(material, amount, data);
if (config.contains(type + "." + treasureName + ".Custom_Name")) {
ItemMeta itemMeta = item.getItemMeta();
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', getStringValue(type + "." + treasureName + ".Custom_Name")));
item.setItemMeta(itemMeta);
}
if (config.contains(type + "." + treasureName + ".Lore")) {
ItemMeta itemMeta = item.getItemMeta();
List<String> lore = new ArrayList<String>();
for (String s : getStringValueList(type + "." + treasureName + ".Lore")) {
lore.add(ChatColor.translateAlternateColorCodes('&', s));
}
itemMeta.setLore(lore);
item.setItemMeta(itemMeta);
}
}
if (noErrorsInConfig(reason)) {
if (isFishing) {
fishingRewards.get(rarity).add(new FishingTreasure(item, xp));
} else if (isShake) {
ShakeTreasure shakeTreasure = new ShakeTreasure(item, xp, dropChance, dropLevel);
EntityType entityType = EntityType.valueOf(type.substring(6));
if (!shakeMap.containsKey(entityType))
shakeMap.put(entityType, new ArrayList<ShakeTreasure>());
shakeMap.get(entityType).add(shakeTreasure);
} else if (isExcavation) {
ExcavationTreasure excavationTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel);
List<String> dropList = getStringValueList(type + "." + treasureName + ".Drops_From");
for (String blockType : dropList) {
if (!excavationMap.containsKey(blockType))
excavationMap.put(blockType, new ArrayList<ExcavationTreasure>());
excavationMap.get(blockType).add(excavationTreasure);
}
} else if (isHylian) {
HylianTreasure hylianTreasure = new HylianTreasure(item, xp, dropChance, dropLevel);
List<String> dropList = getStringValueList(type + "." + treasureName + ".Drops_From");
for (String dropper : dropList) {
if (dropper.equals("Bushes")) {
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.FERN), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.TALL_GRASS), hylianTreasure);
for (Material species : Tag.SAPLINGS.getValues())
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(species), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.DEAD_BUSH), hylianTreasure);
continue;
}
if (dropper.equals("Flowers")) {
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.POPPY), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.DANDELION), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.BLUE_ORCHID), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.ALLIUM), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.AZURE_BLUET), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.ORANGE_TULIP), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.PINK_TULIP), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.RED_TULIP), hylianTreasure);
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.WHITE_TULIP), hylianTreasure);
continue;
}
if (dropper.equals("Pots")) {
for (Material species : Tag.FLOWER_POTS.getValues())
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(species), hylianTreasure);
continue;
}
AddHylianTreasure(dropper, hylianTreasure);
}
}
}
}
}
private void AddHylianTreasure(String dropper, HylianTreasure treasure) {
if (!hylianMap.containsKey(dropper))
hylianMap.put(dropper, new ArrayList<HylianTreasure>());
hylianMap.get(dropper).add(treasure);
}
private void loadEnchantments() {
for (Rarity rarity : Rarity.values()) {
if (rarity == Rarity.RECORD) {
continue;
}
if (!fishingEnchantments.containsKey(rarity)) {
fishingEnchantments.put(rarity, (new ArrayList<EnchantmentTreasure>()));
}
ConfigurationSection enchantmentSection = config.getConfigurationSection("Enchantments_Rarity." + rarity.toString());
if (enchantmentSection == null) {
return;
}
for (String enchantmentName : enchantmentSection.getKeys(false)) {
int level = getIntValue("Enchantments_Rarity." + rarity.toString() + "." + enchantmentName);
Enchantment enchantment = EnchantmentUtils.getByName(enchantmentName);
if (enchantment == null) {
plugin.getLogger().warning("Skipping invalid enchantment in treasures.yml: " + enchantmentName);
continue;
}
fishingEnchantments.get(rarity).add(new EnchantmentTreasure(enchantment, level));
}
}
}
public boolean getInventoryStealEnabled() {
return config.contains("Shake.PLAYER.INVENTORY");
}
public boolean getInventoryStealStacks() {
return getBooleanValue("Shake.PLAYER.INVENTORY.Whole_Stacks");
}
public double getInventoryStealDropChance() {
return getDoubleValue("Shake.PLAYER.INVENTORY.Drop_Chance");
}
public int getInventoryStealDropLevel() {
return getIntValue("Shake.PLAYER.INVENTORY.Drop_Level");
}
public double getItemDropRate(int tier, Rarity rarity) {
return getDoubleValue("Item_Drop_Rates.Tier_" + tier + "." + rarity.toString());
}
public double getEnchantmentDropRate(int tier, Rarity rarity) {
return getDoubleValue("Enchantment_Drop_Rates.Tier_" + tier + "." + rarity.toString());
}
}

View File

@@ -1,113 +0,0 @@
package com.gmail.nossr50.core.data;
import com.gmail.nossr50.core.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.core.mcmmo.entity.Player;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.Collection;
public final class UserManager {
private UserManager() {
}
/**
* Track a new user.
*
* @param mcMMOPlayer the player profile to start tracking
*/
public static void track(McMMOPlayer mcMMOPlayer) {
mcMMOPlayer.getPlayer().setMetadata(mcMMO.playerDataKey, new FixedMetadataValue(mcMMO.p, mcMMOPlayer));
}
/**
* Remove a user.
*
* @param player The Player object
*/
public static void remove(Player player) {
player.removeMetadata(mcMMO.playerDataKey, mcMMO.p);
}
/**
* Clear all users.
*/
public static void clearAll() {
for (Player player : mcMMO.p.getServer().getOnlinePlayers()) {
remove(player);
}
}
/**
* Save all users ON THIS THREAD.
*/
public static void saveAll() {
ImmutableList<Player> onlinePlayers = ImmutableList.copyOf(mcMMO.p.getServer().getOnlinePlayers());
mcMMO.p.debug("Saving mcMMOPlayers... (" + onlinePlayers.size() + ")");
for (Player player : onlinePlayers) {
try {
getPlayer(player).getProfile().save();
} catch (Exception e) {
mcMMO.p.getLogger().warning("Could not save mcMMO player data for player: " + player.getName());
}
}
}
public static Collection<McMMOPlayer> getPlayers() {
Collection<McMMOPlayer> playerCollection = new ArrayList<McMMOPlayer>();
for (Player player : mcMMO.p.getServer().getOnlinePlayers()) {
if (hasPlayerDataKey(player)) {
playerCollection.add(getPlayer(player));
}
}
return playerCollection;
}
/**
* Get the McMMOPlayer of a player by name.
*
* @param playerName The name of the player whose McMMOPlayer to retrieve
* @return the player's McMMOPlayer object
*/
public static McMMOPlayer getPlayer(String playerName) {
return retrieveMcMMOPlayer(playerName, false);
}
public static McMMOPlayer getOfflinePlayer(OfflinePlayer player) {
if (player instanceof Player) {
return getPlayer((Player) player);
}
return retrieveMcMMOPlayer(player.getName(), true);
}
public static McMMOPlayer getOfflinePlayer(String playerName) {
return retrieveMcMMOPlayer(playerName, true);
}
public static McMMOPlayer getPlayer(Player player) {
return (McMMOPlayer) player.getMetadata(mcMMO.playerDataKey).get(0).value();
}
private static McMMOPlayer retrieveMcMMOPlayer(String playerName, boolean offlineValid) {
Player player = mcMMO.p.getServer().getPlayerExact(playerName);
if (player == null) {
if (!offlineValid) {
mcMMO.p.getLogger().warning("A valid mcMMOPlayer object could not be found for " + playerName + ".");
}
return null;
}
return getPlayer(player);
}
public static boolean hasPlayerDataKey(Entity entity) {
return entity != null && entity.hasMetadata(mcMMO.playerDataKey);
}
}

Some files were not shown because too many files have changed in this diff Show More