diff --git a/Changelog.txt b/Changelog.txt
index eb779a4f1..72e414f9d 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,3 +1,30 @@
+Version 2.1.227
+ Fixed bug where some text would not be displayed to players (Adventure dependency update)
+ Repair sound effect from mcMMO can now be adjusted in Minecraft sound options (Thanks MithicSpirit)
+ Korean locale updated (Thanks Pindang2)
+ Simplified Chinese locale updated (Thanks YuanYuanOwO)
+
+ NOTES:
+ For those curious, mcMMO uses Adventure to do a lot of the message sending to players.
+ It typically needs updating when new versions of MC come out, sorry for the delay on my part.
+
+Version 2.1.226
+ Added Short_Grass to experience.yml for Herbalism
+ Updated Hylian Treasures "Bushes" alias to use short_grass when playing on new Minecraft versions
+ Fixed dirt_path and grass_block not being correctly whitelisted for herbalism abilities
+Version 2.1.225
+ Fixed text from mcMMO not being sent or displayed to the player
+ Updated Adventure dependencies
+ Added new API McMMOPlayerNotificationEvent.getPlayer
+
+Version 2.1.224
+ Updated to a new build of ACF to fix NoSuchFieldException locale
+ Improved Folia Support (Thanks HSGamer)
+ Fishing Shake has 8 ranks again
+
+ NOTES:
+ At some point Shake got reduced to 1 rank, this didn't really make sense as it was meant to be a skill that ranked up and got better over time.
+ It now has 8 ranks again, you may need to update advanced.yml and skillranks.yml to get the new ranks.
Version 2.1.223
Folia Support added (Thanks to HSGamer, TechnicallyCoded, Rockyers, and Yomamaeatstoes)
diff --git a/README.md b/README.md
index 9b1d9e046..d69bc1143 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,12 @@ Spigot Resource: https://spigot.mcmmo.org
I plan to post links to our new wiki (its still under development), downloads, and dev blogs there.
### Builds
-Currently, you can obtain our builds via the Spigot resource page: http://spigot.mcmmo.org
+Currently, you can obtain our builds via the Spigot or Polymart:
+
+
+http://spigot.mcmmo.org
+
+https://polymart.org/resource/mcmmo.727
### Brief Description
The goal of mcMMO is to take core Minecraft game mechanics and expand them into 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.
@@ -21,26 +26,14 @@ In December 2018, the original author and creator of mcMMO (nossr50) returned an
#### Project Lead & Founder
[![nossr50](http://www.gravatar.com/avatar/f2ee41eedfd645fb4a3a2c8f6cb1b18c.png)](https://github.com/nossr50)
-#### mcMMO Devs
+#### Current mcMMO Devs
[![nossr50](http://www.gravatar.com/avatar/f2ee41eedfd645fb4a3a2c8f6cb1b18c.png)](https://github.com/nossr50)
-[![kashike](https://secure.gravatar.com/avatar/b5e86d6d443b957fd5cdee55501f3799.png)](https://github.com/kashike)
-[![electronicboy](https://secure.gravatar.com/avatar/44759c38d311ce09596de6a2d5b88036.png)](https://github.com/electronicboy)
-
-#### Classic Maintainer
-[![t00thpick1](http://www.gravatar.com/avatar/ee23c7794a0c40120c3474287c7bce06.png)](https://github.com/t00thpick1)
-
-#### Folia Inquisitors
-[](https://github.com/HSGamer)
-[](https://github.com/TechnicallyCoded)
-[](https://github.com/Yomamaeatstoes)
-[](https://github.com/Rockyers)
-
-## Former Team Members
-
-### Former Lead & Awesome guy
-[![gmcferrin](http://www.gravatar.com/avatar/b64c52daf25d206b27650788b5813b7b.png)](https://github.com/gmcferrin)
### Former team members
+[![gmcferrin](http://www.gravatar.com/avatar/b64c52daf25d206b27650788b5813b7b.png)](https://github.com/gmcferrin)
+[![kashike](https://secure.gravatar.com/avatar/b5e86d6d443b957fd5cdee55501f3799.png)](https://github.com/kashike)
+[![electronicboy](https://secure.gravatar.com/avatar/44759c38d311ce09596de6a2d5b88036.png)](https://github.com/electronicboy)
+[![t00thpick1](http://www.gravatar.com/avatar/ee23c7794a0c40120c3474287c7bce06.png)](https://github.com/t00thpick1)
[![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)
@@ -49,20 +42,23 @@ In December 2018, the original author and creator of mcMMO (nossr50) returned an
[![riking](https://1.gravatar.com/avatar/aca9f37e569ac3a63929920035a91ba4.png)](https://github.com/riking)
[![TheYeti](https://i.imgur.com/tzFrxdo.png)](https://github.com/TheYeti)
+#### Folia Contributors
+[](https://github.com/HSGamer)
+[](https://github.com/TechnicallyCoded)
+[](https://github.com/Yomamaeatstoes)
+[](https://github.com/Rockyers)
+
## Compiling
-mcMMO uses Maven 3 to manage dependencies, packaging, and shading of necessary classes; Maven 3 is required to compile mcMMO.
+mcMMO uses Maven to manage dependencies, packaging, and shading of necessary classes; Maven is required to compile mcMMO. It is recommended to always use the latest version of maven.
-The typical command used to build mcMMO is: `mvn clean package install`
-
-Required Libraries:
-* Spigot
-* JUnit
-* WorldGuard 7
-* bStats Bukkit
+The typical command used to build mcMMO is: `mvn clean install`
https://spigot.mcmmo.org for more up to date information.
-Resource Page
+Downloads:
-https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/
+
+https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/
+
+https://polymart.org/resource/mcmmo.727
diff --git a/pom.xml b/pom.xml
index 82174ac73..49d4e7db8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
com.gmail.nossr50.mcMMO
mcMMO
- 2.1.223
+ 2.1.228-SNAPSHOT
mcMMO
https://github.com/mcMMO-Dev/mcMMO
@@ -150,21 +150,21 @@
net.kyori:examination-api
net.kyori:examination-string
net.kyori:adventure-text-serializer-legacy
+ net.kyori:adventure-text-serializer-gson
+ net.kyori:adventure-text-serializer-json
net.kyori:adventure-text-serializer-bungeecord
net.kyori:adventure-text-serializer-craftbukkit
net.kyori:adventure-text-serializer-gson-legacy-impl
+ net.kyori:adventure-text-serializer-json-legacy-impl
+ net.kyori:option
co.aikar:acf-bukkit
com.tcoded:FoliaLib
- net.kyori.examination
- com.gmail.nossr50.mcmmo.kyori.examination
-
-
- net.kyori.adventure
- com.gmail.nossr50.mcmmo.kyori.adventure
+ net.kyori
+ com.gmail.nossr50.mcmmo.kyori
co.aikar.commands
@@ -269,41 +269,70 @@
acf-bukkit
0.5.1-SNAPSHOT
-
+
+ net.kyori
+ adventure-text-serializer-bungeecord
+ 4.3.2
+
net.kyori
adventure-text-serializer-gson
- 4.13.0
-
-
- net.kyori
- adventure-api
- 4.13.0
-
-
- net.kyori
- adventure-nbt
- 4.13.0
-
-
- net.kyori
- adventure-key
- 4.13.0
+ 4.15.0
net.kyori
adventure-text-serializer-gson-legacy-impl
- 4.13.0
+ 4.15.0
net.kyori
- adventure-platform-bukkit
- 4.3.0
+ adventure-text-serializer-json
+ 4.15.0
+
+
+ net.kyori
+ adventure-text-serializer-json-legacy-impl
+ 4.15.0
+
+
+ net.kyori
+ adventure-api
+ 4.15.0
+
+
+ net.kyori
+ adventure-nbt
+ 4.15.0
+
+
+ net.kyori
+ adventure-key
+ 4.15.0
net.kyori
adventure-platform-api
- 4.3.0
+ 4.3.2
+
+
+ net.kyori
+ adventure-platform-bukkit
+ 4.3.2
+
+
+ net.kyori
+ adventure-platform-facet
+ 4.3.2
+
+
+ net.kyori
+ adventure-platform-viaversion
+ 4.3.2
+
+
+ net.kyori
+ option
+ 1.0.0
org.apache.maven.scm
@@ -319,7 +348,13 @@
org.spigotmc
spigot-api
- 1.20.1-R0.1-SNAPSHOT
+ 1.20.4-R0.1-SNAPSHOT
+ provided
+
+
+ com.sk89q.worldedit
+ worldedit-bukkit
+ 7.2.0-SNAPSHOT
provided
@@ -384,7 +419,7 @@
com.tcoded
FoliaLib
- 0.3.0
+ 0.3.1
compile
diff --git a/src/main/java/com/gmail/nossr50/commands/McImportCommand.java b/src/main/java/com/gmail/nossr50/commands/McImportCommand.java
index ce43f9675..3c913ea47 100644
--- a/src/main/java/com/gmail/nossr50/commands/McImportCommand.java
+++ b/src/main/java/com/gmail/nossr50/commands/McImportCommand.java
@@ -204,7 +204,7 @@ public class McImportCommand implements CommandExecutor {
else if (materialName.contains("LOG") || materialName.contains("LEAVES")) {
skillName = "Woodcutting";
}
- else if (materialName.contains("GRASS") || materialName.contains("FLOWER") || materialName.contains("CROP")) {
+ else if (materialName.contains("GRASS") || materialName.contains("SHORT_GRASS") || materialName.contains("FLOWER") || materialName.contains("CROP")) {
skillName = "Herbalism";
}
else if (materialName.contains("DIRT") || materialName.contains("SAND")) {
diff --git a/src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java b/src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java
index 456ab4531..97967a131 100755
--- a/src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java
+++ b/src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java
@@ -4,6 +4,7 @@ import com.gmail.nossr50.config.BukkitConfig;
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
import com.gmail.nossr50.datatypes.treasure.HylianTreasure;
import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.util.BlockUtils;
import com.gmail.nossr50.util.LogUtils;
import com.gmail.nossr50.util.text.StringUtils;
import org.bukkit.ChatColor;
@@ -228,7 +229,7 @@ public class TreasureConfig extends BukkitConfig {
for (String dropper : dropList) {
if (dropper.equals("Bushes")) {
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.FERN), hylianTreasure);
- AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(Material.TALL_GRASS), hylianTreasure);
+ AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(BlockUtils.getShortGrass()), hylianTreasure);
for (Material species : Tag.SAPLINGS.getValues())
AddHylianTreasure(StringUtils.getFriendlyConfigMaterialString(species), hylianTreasure);
diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java
index fc3ad681f..a11b98eb2 100644
--- a/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java
+++ b/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java
@@ -41,7 +41,7 @@ public enum SubSkillType {
FISHING_MAGIC_HUNTER(1),
FISHING_MASTER_ANGLER(8),
FISHING_TREASURE_HUNTER(8),
- FISHING_SHAKE(1),
+ FISHING_SHAKE(8),
/* Herbalism */
HERBALISM_DOUBLE_DROPS(1),
diff --git a/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java b/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java
index 1b0c17949..75d8eae83 100644
--- a/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java
+++ b/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java
@@ -27,8 +27,13 @@ public class McMMOPlayerNotificationEvent extends Event implements Cancellable {
protected Component notificationTextComponent;
protected final NotificationType notificationType;
- public McMMOPlayerNotificationEvent(Player who, NotificationType notificationType, Component notificationTextComponent, McMMOMessageType chatMessageType, boolean isMessageAlsoBeingSentToChat) {
+ protected final Player player;
+
+ public McMMOPlayerNotificationEvent(Player player, NotificationType notificationType,
+ Component notificationTextComponent, McMMOMessageType chatMessageType,
+ boolean isMessageAlsoBeingSentToChat) {
super(false);
+ this.player = player;
this.notificationType = notificationType;
this.notificationTextComponent = notificationTextComponent;
this.chatMessageType = chatMessageType;
@@ -48,6 +53,10 @@ public class McMMOPlayerNotificationEvent extends Event implements Cancellable {
isMessageAlsoBeingSentToChat = messageAlsoBeingSentToChat;
}
+ public Player getPlayer() {
+ return player;
+ }
+
public Component getNotificationTextComponent() {
return notificationTextComponent;
}
diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java
index bba793be6..52fb4b4cd 100644
--- a/src/main/java/com/gmail/nossr50/mcMMO.java
+++ b/src/main/java/com/gmail/nossr50/mcMMO.java
@@ -55,6 +55,7 @@ import com.gmail.nossr50.util.skills.SmeltingTracker;
import com.gmail.nossr50.util.upgrade.UpgradeManager;
import com.gmail.nossr50.worldguard.WorldGuardManager;
import com.tcoded.folialib.FoliaLib;
+import com.tcoded.folialib.util.InvalidTickDelayNotifier;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.shatteredlands.shatt.backup.ZipLibrary;
import org.bstats.bukkit.Metrics;
@@ -177,6 +178,7 @@ public class mcMMO extends JavaPlugin {
//Folia lib plugin instance
foliaLib = new FoliaLib(this);
+ InvalidTickDelayNotifier.disableNotifications = true;
setupFilePaths();
generalConfig = new GeneralConfig(getDataFolder()); //Load before skillTools
diff --git a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java
index e5fb8e0c4..d97b12db8 100644
--- a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java
+++ b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java
@@ -363,7 +363,7 @@ public class HerbalismManager extends SkillManager {
*
*/
- //If its a Crop we need to reward XP when its fully grown
+ //If it's a Crop we need to reward XP when its fully grown
if(isAgeableAndFullyMature(plantData) && !isBizarreAgeable(plantData)) {
//Add metadata to mark this block for double or triple drops
markForBonusDrops(brokenPlantState);
@@ -373,21 +373,17 @@ public class HerbalismManager extends SkillManager {
}
/**
- * Checks if BlockData is ageable and we can trust that age for Herbalism rewards/XP reasons
+ * Checks if BlockData is bizarre ageable, and we cannot trust that age for Herbalism rewards/XP reasons
* @param blockData target BlockData
- * @return returns true if the ageable is trustworthy for Herbalism XP / Rewards
+ * @return returns true if the BlockData is a bizarre ageable for Herbalism XP / Rewards
*/
public boolean isBizarreAgeable(BlockData blockData) {
if(blockData instanceof Ageable) {
//Catcus and Sugar Canes cannot be trusted
- switch(blockData.getMaterial()) {
- case CACTUS:
- case KELP:
- case SUGAR_CANE:
- return true;
- default:
- return false;
- }
+ return switch (blockData.getMaterial()) {
+ case CACTUS, KELP, SUGAR_CANE, BAMBOO -> true;
+ default -> false;
+ };
}
return false;
diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java
index 203244107..284f875c6 100644
--- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java
+++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java
@@ -23,6 +23,7 @@ import com.gmail.nossr50.util.sounds.SoundManager;
import com.gmail.nossr50.util.sounds.SoundType;
import com.gmail.nossr50.util.text.StringUtils;
import org.bukkit.Material;
+import org.bukkit.SoundCategory;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@@ -57,7 +58,7 @@ public class RepairManager extends SkillManager {
}
if (mcMMO.p.getGeneralConfig().getRepairAnvilPlaceSoundsEnabled()) {
- SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL);
+ SoundManager.sendCategorizedSound(player, player.getLocation(), SoundType.ANVIL, SoundCategory.BLOCKS);
}
togglePlacedAnvil();
@@ -160,7 +161,7 @@ public class RepairManager extends SkillManager {
toRemove = possibleMaterial.get().clone();
}
}
-
+
// Call event
if (EventUtils.callRepairCheckEvent(player, (short) (startDurability - newDurability), toRemove, item).isCancelled()) {
return;
@@ -184,8 +185,8 @@ public class RepairManager extends SkillManager {
// BWONG BWONG BWONG
if (mcMMO.p.getGeneralConfig().getRepairAnvilUseSoundsEnabled()) {
- SoundManager.sendSound(player, player.getLocation(), SoundType.ANVIL);
- SoundManager.sendSound(player, player.getLocation(), SoundType.ITEM_BREAK);
+ SoundManager.sendCategorizedSound(player, player.getLocation(), SoundType.ANVIL, SoundCategory.BLOCKS);
+ SoundManager.sendCategorizedSound(player, player.getLocation(), SoundType.ITEM_BREAK, SoundCategory.PLAYERS);
}
// Repair the item!
diff --git a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java
index af542e638..a95f1b9a4 100644
--- a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java
+++ b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java
@@ -95,7 +95,7 @@ public class SwordsManager extends SkillManager {
RuptureTaskMeta ruptureTaskMeta = new RuptureTaskMeta(mcMMO.p, ruptureTask);
- mcMMO.p.getFoliaLib().getImpl().runAtEntityTimer(mmoPlayer.getPlayer(), ruptureTask, 0, 1);
+ mcMMO.p.getFoliaLib().getImpl().runAtEntityTimer(mmoPlayer.getPlayer(), ruptureTask, 1, 1);
target.setMetadata(MetadataConstants.METADATA_KEY_RUPTURE, ruptureTaskMeta);
// if (mmoPlayer.useChatNotifications()) {
diff --git a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java
index fa618bc33..1359a041b 100644
--- a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java
+++ b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java
@@ -245,7 +245,7 @@ public class TamingManager extends SkillManager {
if(jumpAttribute != null) {
double jumpStrength = jumpAttribute.getValue();
- // Taken from https://minecraft.gamepedia.com/Horse#Jump_strength
+ // Taken from https://minecraft.wiki/w/Horse#Jump_strength
jumpStrength = -0.1817584952 * Math.pow(jumpStrength, 3) + 3.689713992 * Math.pow(jumpStrength, 2) + 2.128599134 * jumpStrength - 0.343930367;
message = message.concat("\n" + LocaleLoader.getString("Combat.BeastLoreHorseSpeed", horseLikeCreature.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).getValue() * 43))
.concat("\n" + LocaleLoader.getString("Combat.BeastLoreHorseJumpStrength", jumpStrength));
diff --git a/src/main/java/com/gmail/nossr50/util/BlockUtils.java b/src/main/java/com/gmail/nossr50/util/BlockUtils.java
index d9df151f6..7ef3cbc81 100644
--- a/src/main/java/com/gmail/nossr50/util/BlockUtils.java
+++ b/src/main/java/com/gmail/nossr50/util/BlockUtils.java
@@ -22,6 +22,9 @@ import java.util.HashSet;
public final class BlockUtils {
+ public static final String SHORT_GRASS = "SHORT_GRASS";
+ public static final String GRASS = "GRASS";
+
private BlockUtils() {
}
@@ -38,6 +41,21 @@ public final class BlockUtils {
blockState.setMetadata(MetadataConstants.METADATA_KEY_BONUS_DROPS, new BonusDropMeta(1, mcMMO.p));
}
+ /**
+ * Util method for compatibility across Minecraft versions, grabs the {@link Material} enum for short_grass
+ *
+ * @return the {@link Material} enum for short_grass
+ */
+ public static Material getShortGrass() {
+ if (Material.getMaterial(SHORT_GRASS) != null) {
+ return Material.getMaterial(SHORT_GRASS);
+ } else if (Material.getMaterial(GRASS) != null) {
+ return Material.getMaterial(GRASS);
+ } else {
+ throw new UnsupportedOperationException("Unable to find short grass material");
+ }
+ }
+
/**
* Set up the state for a block to be seen as unnatural and cleanup any unwanted metadata from the block
* @param block target block
diff --git a/src/main/java/com/gmail/nossr50/util/MaterialMapStore.java b/src/main/java/com/gmail/nossr50/util/MaterialMapStore.java
index 16b5a73e4..6a54cd608 100644
--- a/src/main/java/com/gmail/nossr50/util/MaterialMapStore.java
+++ b/src/main/java/com/gmail/nossr50/util/MaterialMapStore.java
@@ -996,8 +996,8 @@ public class MaterialMapStore {
private void fillShroomyWhiteList()
{
canMakeShroomyWhiteList.add("dirt");
- canMakeShroomyWhiteList.add("grass");
- canMakeShroomyWhiteList.add("grass_path");
+ canMakeShroomyWhiteList.add("grass_block");
+ canMakeShroomyWhiteList.add("dirt_path");
}
private void fillBlockCrackerWhiteList()
@@ -1010,8 +1010,8 @@ public class MaterialMapStore {
private void fillHerbalismAbilityBlackList()
{
herbalismAbilityBlackList.add("dirt");
- herbalismAbilityBlackList.add("grass");
- herbalismAbilityBlackList.add("grass_path");
+ herbalismAbilityBlackList.add("grass_block");
+ herbalismAbilityBlackList.add("dirt_path");
herbalismAbilityBlackList.add("farmland");
}
diff --git a/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java b/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java
index ff895c3a2..aede17cf0 100644
--- a/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java
+++ b/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java
@@ -16,7 +16,6 @@ import com.gmail.nossr50.util.sounds.SoundType;
import com.gmail.nossr50.util.text.McMMOMessageType;
import com.gmail.nossr50.util.text.TextComponentFactory;
import net.kyori.adventure.audience.Audience;
-import net.kyori.adventure.audience.MessageType;
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
@@ -49,7 +48,9 @@ public class NotificationManager {
if(UserManager.getPlayer(player) == null || !UserManager.getPlayer(player).useChatNotifications())
return;
- McMMOMessageType destination = mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(notificationType) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
+ McMMOMessageType destination
+ = mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(notificationType)
+ ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
Component message = TextComponentFactory.getNotificationTextComponentFromLocale(key);
McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(player, notificationType, destination, message);
@@ -75,7 +76,8 @@ public class NotificationManager {
* @param key Locale Key for the string to use with this event
* @param values values to be injected into the locale string
*/
- public static void sendNearbyPlayersInformation(Player targetPlayer, NotificationType notificationType, String key, String... values)
+ public static void sendNearbyPlayersInformation(Player targetPlayer, NotificationType notificationType, String key,
+ String... values)
{
sendPlayerInformation(targetPlayer, notificationType, key, values);
}
@@ -99,7 +101,8 @@ public class NotificationManager {
player.sendMessage(prefixFormattedMessage);
}
- public static void sendPlayerInformation(Player player, NotificationType notificationType, String key, String... values)
+ public static void sendPlayerInformation(Player player, NotificationType notificationType, String key,
+ String... values)
{
if(UserManager.getPlayer(player) == null || !UserManager.getPlayer(player).useChatNotifications())
return;
@@ -119,24 +122,28 @@ public class NotificationManager {
final Audience audience = mcMMO.getAudiences().player(player);
//If the message is being sent to the action bar we need to check if the copy if a copy is sent to the chat system
+ Component notificationTextComponent = customEvent.getNotificationTextComponent();
if(customEvent.getChatMessageType() == McMMOMessageType.ACTION_BAR)
{
- audience.sendActionBar(customEvent.getNotificationTextComponent());
+ audience.sendActionBar(notificationTextComponent);
if(customEvent.isMessageAlsoBeingSentToChat())
{
//Send copy to chat system
- audience.sendMessage(Identity.nil(), customEvent.getNotificationTextComponent(), MessageType.SYSTEM);
+ audience.sendMessage(notificationTextComponent);
}
} else {
- audience.sendMessage(Identity.nil(), customEvent.getNotificationTextComponent(), MessageType.SYSTEM);
+ audience.sendMessage(notificationTextComponent);
}
}
- private static McMMOPlayerNotificationEvent checkNotificationEvent(Player player, NotificationType notificationType, McMMOMessageType destination, Component message) {
+ private static McMMOPlayerNotificationEvent checkNotificationEvent(Player player, NotificationType notificationType,
+ McMMOMessageType destination,
+ Component message) {
//Init event
McMMOPlayerNotificationEvent customEvent = new McMMOPlayerNotificationEvent(player,
- notificationType, message, destination, mcMMO.p.getAdvancedConfig().doesNotificationSendCopyToChat(notificationType));
+ notificationType, message, destination,
+ mcMMO.p.getAdvancedConfig().doesNotificationSendCopyToChat(notificationType));
//Call event
mcMMO.p.getServer().getPluginManager().callEvent(customEvent);
@@ -149,15 +156,23 @@ public class NotificationManager {
* @param skillName skill that leveled up
* @param newLevel new level of that skill
*/
- public static void sendPlayerLevelUpNotification(McMMOPlayer mcMMOPlayer, PrimarySkillType skillName, int levelsGained, int newLevel)
+ public static void sendPlayerLevelUpNotification(McMMOPlayer mcMMOPlayer, PrimarySkillType skillName,
+ int levelsGained, int newLevel)
{
if(!mcMMOPlayer.useChatNotifications())
return;
- McMMOMessageType destination = mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(NotificationType.LEVEL_UP_MESSAGE) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
+ McMMOMessageType destination
+ = mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(NotificationType.LEVEL_UP_MESSAGE)
+ ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
- Component levelUpTextComponent = TextComponentFactory.getNotificationLevelUpTextComponent(skillName, levelsGained, newLevel);
- McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(mcMMOPlayer.getPlayer(), NotificationType.LEVEL_UP_MESSAGE, destination, levelUpTextComponent);
+ Component levelUpTextComponent = TextComponentFactory.getNotificationLevelUpTextComponent(
+ skillName, levelsGained, newLevel);
+ McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(
+ mcMMOPlayer.getPlayer(),
+ NotificationType.LEVEL_UP_MESSAGE,
+ destination,
+ levelUpTextComponent);
sendNotification(mcMMOPlayer.getPlayer(), customEvent);
}
@@ -176,17 +191,12 @@ public class NotificationManager {
return;
//CHAT MESSAGE
- mcMMO.getAudiences().player(mcMMOPlayer.getPlayer()).sendMessage(Identity.nil(), TextComponentFactory.getSubSkillUnlockedNotificationComponents(mcMMOPlayer.getPlayer(), subSkillType));
+ mcMMO.getAudiences().player(mcMMOPlayer.getPlayer()).sendMessage(Identity.nil(),
+ TextComponentFactory.getSubSkillUnlockedNotificationComponents(mcMMOPlayer.getPlayer(), subSkillType));
//Unlock Sound Effect
- SoundManager.sendCategorizedSound(mcMMOPlayer.getPlayer(), mcMMOPlayer.getPlayer().getLocation(), SoundType.SKILL_UNLOCKED, SoundCategory.MASTER);
-
- //ACTION BAR MESSAGE
- /*if(mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(NotificationType.SUBSKILL_UNLOCKED))
- mcMMOPlayer.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(LocaleLoader.getString("JSON.SkillUnlockMessage",
- subSkillType.getLocaleName(),
- String.valueOf(RankUtils.getRank(mcMMOPlayer.getPlayer(),
- subSkillType)))));*/
+ SoundManager.sendCategorizedSound(mcMMOPlayer.getPlayer(), mcMMOPlayer.getPlayer().getLocation(),
+ SoundType.SKILL_UNLOCKED, SoundCategory.MASTER);
}
/**
@@ -225,7 +235,8 @@ public class NotificationManager {
* @param commandSender the command user
* @param sensitiveCommandType type of command issued
*/
- public static void processSensitiveCommandNotification(CommandSender commandSender, SensitiveCommandType sensitiveCommandType, String... args) {
+ public static void processSensitiveCommandNotification(CommandSender commandSender,
+ SensitiveCommandType sensitiveCommandType, String... args) {
/*
* Determine the 'identity' of the one who executed the command to pass as a parameters
*/
@@ -233,19 +244,26 @@ public class NotificationManager {
if(commandSender instanceof Player)
{
- senderName = ((Player) commandSender).getDisplayName() + ChatColor.RESET + "-" + ((Player) commandSender).getUniqueId();
+ senderName = ((Player) commandSender).getDisplayName()
+ + ChatColor.RESET + "-" + ((Player) commandSender).getUniqueId();
}
//Send the notification
switch(sensitiveCommandType)
{
case XPRATE_MODIFY:
- sendAdminNotification(LocaleLoader.getString("Notifications.Admin.XPRate.Start.Others", addItemToFirstPositionOfArray(senderName, args)));
- sendAdminCommandConfirmation(commandSender, LocaleLoader.getString("Notifications.Admin.XPRate.Start.Self", args));
+ sendAdminNotification(LocaleLoader.getString("Notifications.Admin.XPRate.Start.Others",
+ addItemToFirstPositionOfArray(senderName, args)));
+ sendAdminCommandConfirmation(
+ commandSender, LocaleLoader.getString("Notifications.Admin.XPRate.Start.Self", args));
break;
case XPRATE_END:
- sendAdminNotification(LocaleLoader.getString("Notifications.Admin.XPRate.End.Others", addItemToFirstPositionOfArray(senderName, args)));
- sendAdminCommandConfirmation(commandSender, LocaleLoader.getString("Notifications.Admin.XPRate.End.Self", args));
+ sendAdminNotification(
+ LocaleLoader.getString(
+ "Notifications.Admin.XPRate.End.Others",
+ addItemToFirstPositionOfArray(senderName, args)));
+ sendAdminCommandConfirmation(commandSender,
+ LocaleLoader.getString("Notifications.Admin.XPRate.End.Self", args));
break;
}
}
@@ -266,8 +284,6 @@ public class NotificationManager {
return newArray;
}
- //TODO: Remove the code duplication, am lazy atm
- //TODO: Fix broadcasts being skipped for situations where a player skips over the milestone like with the addlevels command
public static void processLevelUpBroadcasting(@NotNull McMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType, int level) {
if(level <= 0)
return;
@@ -290,13 +306,22 @@ public class NotificationManager {
.append(Component.newline())
.append(Component.text(LocalDate.now().toString()))
.append(Component.newline())
- .append(Component.text(mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType)+" reached level "+level)).color(TextColor.fromHexString(HEX_BEIGE_COLOR))
+ .append(Component.text(
+ mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType)
+ + " reached level "+level)).color(TextColor.fromHexString(HEX_BEIGE_COLOR))
.asHoverEvent();
- String localeMessage = LocaleLoader.getString("Broadcasts.LevelUpMilestone", mmoPlayer.getPlayer().getDisplayName(), level, mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType));
- Component message = LegacyComponentSerializer.legacySection().deserialize(localeMessage).hoverEvent(levelMilestoneHover);
+ String localeMessage = LocaleLoader.getString(
+ "Broadcasts.LevelUpMilestone", mmoPlayer.getPlayer().getDisplayName(), level,
+ mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType));
+ Component component = LegacyComponentSerializer
+ .legacySection()
+ .deserialize(localeMessage)
+ .hoverEvent(levelMilestoneHover);
- mcMMO.p.getFoliaLib().getImpl().runNextTick(t -> audience.sendMessage(Identity.nil(), message));
+ // TODO: Update system msg API
+ mcMMO.p.getFoliaLib().getImpl().runNextTick(
+ t -> audience.sendMessage(component));
}
}
}
@@ -331,7 +356,7 @@ public class NotificationManager {
String localeMessage = LocaleLoader.getString("Broadcasts.PowerLevelUpMilestone", mmoPlayer.getPlayer().getDisplayName(), powerLevel);
Component message = LegacyComponentSerializer.legacySection().deserialize(localeMessage).hoverEvent(levelMilestoneHover);
- mcMMO.p.getFoliaLib().getImpl().runNextTick(t -> audience.sendMessage(Identity.nil(), message));
+ mcMMO.p.getFoliaLib().getImpl().runNextTick(t -> audience.sendMessage(message));
}
}
}
diff --git a/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java b/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java
index ae2f842ad..ec4d56481 100644
--- a/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java
+++ b/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java
@@ -291,30 +291,12 @@ public class RankUtils {
subSkillRanks.computeIfAbsent(s, k -> new HashMap<>());
}
-/* public static int getSubSkillUnlockRequirement(SubSkillType subSkillType)
- {
- String skillName = subSkillType.toString();
- int numRanks = subSkillType.getNumRanks();
-
- if(subSkillRanks == null)
- subSkillRanks = new HashMap<>();
-
- if(numRanks == 0)
- return -1; //-1 Means the skill doesn't have ranks
-
- if(subSkillRanks.get(skillName) == null && numRanks > 0)
- addRanks(subSkillType);
-
- return subSkillRanks.get(subSkillType.toString()).get(1);
- }*/
-
/**
* Gets the unlock level for a specific rank in a subskill
* @param subSkillType The target subskill
* @param rank The target rank
* @return The level at which this rank unlocks
*/
- @Deprecated
public static int getRankUnlockLevel(SubSkillType subSkillType, int rank)
{
return RankConfig.getInstance().getSubSkillUnlockLevel(subSkillType, rank);
diff --git a/src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java b/src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java
index e6961de1d..81ac8da28 100644
--- a/src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java
+++ b/src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java
@@ -12,8 +12,6 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.skills.RankUtils;
import net.kyori.adventure.audience.Audience;
-import net.kyori.adventure.audience.MessageType;
-import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.event.ClickEvent;
@@ -35,41 +33,37 @@ public class TextComponentFactory {
/**
* Makes a text component using strings from a locale and supports passing an undefined number of variables to the LocaleLoader
+ *
* @param localeKey target locale string address
- * @param values vars to be passed to the locale loader
+ * @param values vars to be passed to the locale loader
* @return
*/
- public static TextComponent getNotificationMultipleValues(String localeKey, String... values)
- {
+ public static TextComponent getNotificationMultipleValues(String localeKey, String... values) {
String preColoredString = LocaleLoader.getString(localeKey, (Object[]) values);
return Component.text(preColoredString);
}
- public static Component getNotificationTextComponentFromLocale(String localeKey)
- {
+ public static Component getNotificationTextComponentFromLocale(String localeKey) {
return getNotificationTextComponent(LocaleLoader.getString(localeKey));
}
- public static Component getNotificationLevelUpTextComponent(PrimarySkillType skill, int levelsGained, int currentLevel)
- {
- return Component.text(LocaleLoader.getString("Overhaul.Levelup", LocaleLoader.getString("Overhaul.Name."+ StringUtils.getCapitalized(skill.toString())), levelsGained, currentLevel));
+ public static Component getNotificationLevelUpTextComponent(PrimarySkillType skill, int levelsGained, int currentLevel) {
+ return Component.text(LocaleLoader.getString("Overhaul.Levelup", LocaleLoader.getString("Overhaul.Name." + StringUtils.getCapitalized(skill.toString())), levelsGained, currentLevel));
}
- private static TextComponent getNotificationTextComponent(String text)
- {
+ private static TextComponent getNotificationTextComponent(String text) {
//textComponent.setColor(getNotificationColor(notificationType));
return Component.text(text);
}
- public static void sendPlayerSubSkillWikiLink(Player player, String subskillformatted)
- {
- if(!mcMMO.p.getGeneralConfig().getUrlLinksEnabled())
+ public static void sendPlayerSubSkillWikiLink(Player player, String subskillformatted) {
+ if (!mcMMO.p.getGeneralConfig().getUrlLinksEnabled())
return;
TextComponent.Builder wikiLinkComponent = Component.text().content(LocaleLoader.getString("Overhaul.mcMMO.MmoInfo.Wiki"));
wikiLinkComponent.decoration(TextDecoration.UNDERLINED, true);
- String wikiUrl = "https://wiki.mcmmo.org/"+subskillformatted;
+ String wikiUrl = "https://wiki.mcmmo.org/" + subskillformatted;
wikiLinkComponent.clickEvent(ClickEvent.openUrl(wikiUrl));
@@ -77,39 +71,40 @@ public class TextComponentFactory {
wikiLinkComponent.hoverEvent(HoverEvent.showText(componentBuilder.build()));
- mcMMO.getAudiences().player(player).sendMessage(Identity.nil(), wikiLinkComponent, MessageType.SYSTEM);
+ mcMMO.getAudiences().player(player).sendMessage(wikiLinkComponent);
}
public static void sendPlayerUrlHeader(Player player) {
TextComponent prefix = Component.text(LocaleLoader.getString("Overhaul.mcMMO.Url.Wrap.Prefix") + " ");
/*prefix.setColor(ChatColor.DARK_AQUA);*/
- TextComponent suffix = Component.text(" "+LocaleLoader.getString("Overhaul.mcMMO.Url.Wrap.Suffix"));
+ TextComponent suffix = Component.text(" " + LocaleLoader.getString("Overhaul.mcMMO.Url.Wrap.Suffix"));
/*suffix.setColor(ChatColor.DARK_AQUA);*/
TextComponent emptySpace = Component.space();
- mcMMO.getAudiences().player(player).sendMessage(Identity.nil(),TextComponent.ofChildren(
- prefix,
- getWebLinkTextComponent(McMMOWebLinks.WEBSITE),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.DISCORD),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.PATREON),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.WIKI),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.SPIGOT),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.HELP_TRANSLATE),
- suffix
- ), MessageType.SYSTEM);
+ // TODO: Update system msg API
+ mcMMO.getAudiences().player(player).sendMessage(Component.textOfChildren(
+ prefix,
+ getWebLinkTextComponent(McMMOWebLinks.WEBSITE),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.DISCORD),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.PATREON),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.WIKI),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.SPIGOT),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.HELP_TRANSLATE),
+ suffix
+ ));
}
/**
* Sends a player a bunch of text components that represent a list of sub-skills
* Styling and formatting is applied before sending the messages
*
- * @param player target player
+ * @param player target player
* @param subSkillComponents the text components representing the sub-skills by name
*/
public static void sendPlayerSubSkillList(@NotNull Player player, @NotNull List subSkillComponents) {
@@ -129,17 +124,15 @@ public class TextComponentFactory {
}
//Send each group
- for(Component curLine : individualLinesToSend) {
- audience.sendMessage(Identity.nil(), curLine);
+ for (Component curLine : individualLinesToSend) {
+ audience.sendMessage(curLine);
}
}
- private static Component getWebLinkTextComponent(McMMOWebLinks webLinks)
- {
+ private static Component getWebLinkTextComponent(McMMOWebLinks webLinks) {
TextComponent.Builder webTextComponent;
- switch(webLinks)
- {
+ switch (webLinks) {
case WEBSITE:
webTextComponent = Component.text().content(LocaleLoader.getString("JSON.Hover.AtSymbolURL"));
TextUtils.addChildWebComponent(webTextComponent, "Web");
@@ -180,12 +173,10 @@ public class TextComponentFactory {
return webTextComponent.build();
}
- private static Component getUrlHoverEvent(McMMOWebLinks webLinks)
- {
+ private static Component getUrlHoverEvent(McMMOWebLinks webLinks) {
TextComponent.Builder componentBuilder = Component.text().content(webLinks.getNiceTitle());
- switch(webLinks)
- {
+ switch (webLinks) {
case WEBSITE:
addUrlHeaderHover(webLinks, componentBuilder);
componentBuilder.append(Component.newline()).append(Component.newline());
@@ -223,7 +214,7 @@ public class TextComponentFactory {
componentBuilder.append(Component.text(webLinks.getLocaleDescription(), NamedTextColor.GREEN));
componentBuilder.append(Component.newline());
componentBuilder.append(Component.text("You can use this website to help translate mcMMO into your language!" +
- "\nIf you want to know more contact me in discord.", NamedTextColor.DARK_GRAY));
+ "\nIf you want to know more contact me in discord.", NamedTextColor.DARK_GRAY));
}
return componentBuilder.build();
@@ -234,13 +225,11 @@ public class TextComponentFactory {
componentBuilder.append(Component.text(webLinks.getUrl(), NamedTextColor.GRAY, TextDecoration.ITALIC));
}
- private static ClickEvent getUrlClickEvent(String url)
- {
+ private static ClickEvent getUrlClickEvent(String url) {
return ClickEvent.openUrl(url);
}
- private static Component getSubSkillTextComponent(Player player, SubSkillType subSkillType)
- {
+ private static Component getSubSkillTextComponent(Player player, SubSkillType subSkillType) {
//Get skill name
String skillName = subSkillType.getLocaleName();
@@ -257,8 +246,7 @@ public class TextComponentFactory {
return textComponent.build();
}
- private static TextComponent getSubSkillTextComponent(Player player, AbstractSubSkill abstractSubSkill)
- {
+ private static TextComponent getSubSkillTextComponent(Player player, AbstractSubSkill abstractSubSkill) {
//String key = abstractSubSkill.getConfigKeyName();
String skillName = abstractSubSkill.getNiceName();
@@ -297,46 +285,37 @@ public class TextComponentFactory {
return textComponent;
}
- private static Component getSubSkillHoverComponent(Player player, AbstractSubSkill abstractSubSkill)
- {
+ private static Component getSubSkillHoverComponent(Player player, AbstractSubSkill abstractSubSkill) {
return getSubSkillHoverEventJSON(abstractSubSkill, player);
}
- private static Component getSubSkillHoverComponent(Player player, SubSkillType subSkillType)
- {
+ private static Component getSubSkillHoverComponent(Player player, SubSkillType subSkillType) {
return getSubSkillHoverEventJSON(subSkillType, player);
}
/**
* Used for the skill in the new skill system (Deriving from AbstractSubSkill)
+ *
* @param abstractSubSkill this subskill
- * @param player the player who owns this subskill
+ * @param player the player who owns this subskill
* @return the hover basecomponent object for this subskill
*/
- private static Component getSubSkillHoverEventJSON(AbstractSubSkill abstractSubSkill, Player player)
- {
+ private static Component getSubSkillHoverEventJSON(AbstractSubSkill abstractSubSkill, Player player) {
String skillName = abstractSubSkill.getNiceName();
/*
* Hover Event BaseComponent color table
*/
- TextColor ccSubSkillHeader = NamedTextColor.GOLD;
- TextColor ccRank = NamedTextColor.BLUE;
- TextColor ccCurRank = NamedTextColor.GREEN;
- TextColor ccPossessive = NamedTextColor.WHITE;
- //ChatColor ccDescriptionHeader = ChatColor.DARK_PURPLE;
- //ChatColor ccDescription = ChatColor.WHITE;
- TextColor ccLocked = NamedTextColor.DARK_GRAY;
- TextColor ccLevelRequirement = NamedTextColor.BLUE;
- TextColor ccLevelRequired = NamedTextColor.RED;
+ TextColor ccLocked = NamedTextColor.DARK_GRAY;
+ TextColor ccLevelRequirement = NamedTextColor.BLUE;
+ TextColor ccLevelRequired = NamedTextColor.RED;
SubSkillType subSkillType = abstractSubSkill.getSubSkillType();
//SubSkillType Name
TextComponent.Builder componentBuilder = setupSkillComponentNameStyle(player, skillName, subSkillType, RankUtils.hasUnlockedSubskill(player, abstractSubSkill));
- if(!RankUtils.hasUnlockedSubskill(player, abstractSubSkill))
- {
+ if (!RankUtils.hasUnlockedSubskill(player, abstractSubSkill)) {
//Skill is not unlocked yet
addLocked(abstractSubSkill, ccLocked, ccLevelRequirement, ccLevelRequired, componentBuilder);
} else {
@@ -346,12 +325,11 @@ public class TextComponentFactory {
int curRank = RankUtils.getRank(player, abstractSubSkill);
int nextRank = 0;
- if(curRank < abstractSubSkill.getNumRanks() && abstractSubSkill.getNumRanks() > 0)
- {
- nextRank = RankUtils.getRankUnlockLevel(abstractSubSkill, curRank+1);
+ if (curRank < abstractSubSkill.getNumRanks() && abstractSubSkill.getNumRanks() > 0) {
+ nextRank = RankUtils.getRankUnlockLevel(abstractSubSkill, curRank + 1);
}
- addRanked(ccRank, ccCurRank, ccPossessive, ccCurRank, componentBuilder, abstractSubSkill.getNumRanks(), RankUtils.getRank(player, abstractSubSkill), nextRank);
+ addRanked(componentBuilder, abstractSubSkill.getNumRanks(), RankUtils.getRank(player, abstractSubSkill), nextRank);
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.DescriptionHeader")));
componentBuilder.append(Component.newline()).append(Component.text(abstractSubSkill.getDescription())).append(Component.newline());
@@ -386,17 +364,14 @@ public class TextComponentFactory {
return componentBuilder;
}
- private static void addRanked(TextColor ccRank, TextColor ccCurRank, TextColor ccPossessive, TextColor ccNumRanks, TextComponent.Builder componentBuilder, int numRanks, int rank, int nextRank) {
+ private static void addRanked(TextComponent.Builder componentBuilder, int numRanks, int rank, int nextRank) {
if (numRanks > 0) {
//Rank: x
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Hover.Rank", String.valueOf(rank)))).append(Component.newline());
//Next Rank: x
- if(nextRank > rank)
+ if (nextRank > rank)
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Hover.NextRank", String.valueOf(nextRank)))).append(Component.newline());
-
- /*componentBuilder.append(" " + LocaleLoader.getString("JSON.RankPossesive") + " ").color(ccPossessive);
- componentBuilder.append(String.valueOf(numRanks)).color(ccNumRanks);*/
}
}
@@ -418,47 +393,38 @@ public class TextComponentFactory {
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.LevelRequirement") + ": ", ccLevelRequirement));
}
- @Deprecated
- private static Component getSubSkillHoverEventJSON(SubSkillType subSkillType, Player player)
- {
+ private static Component getSubSkillHoverEventJSON(SubSkillType subSkillType, Player player) {
String skillName = subSkillType.getLocaleName();
/*
* Hover Event BaseComponent color table
*/
- TextColor ccSubSkillHeader = NamedTextColor.GOLD;
- TextColor ccRank = NamedTextColor.BLUE;
- TextColor ccCurRank = NamedTextColor.GREEN;
- TextColor ccPossessive = NamedTextColor.WHITE;
- TextColor ccDescriptionHeader = NamedTextColor.DARK_PURPLE;
- TextColor ccDescription = NamedTextColor.DARK_GRAY;
- TextColor ccLocked = NamedTextColor.DARK_GRAY;
- TextColor ccLevelRequirement = NamedTextColor.BLUE;
- TextColor ccLevelRequired = NamedTextColor.RED;
+ TextColor ccDescriptionHeader = NamedTextColor.DARK_PURPLE;
+ TextColor ccDescription = NamedTextColor.DARK_GRAY;
+ TextColor ccLocked = NamedTextColor.DARK_GRAY;
+ TextColor ccLevelRequirement = NamedTextColor.BLUE;
+ TextColor ccLevelRequired = NamedTextColor.RED;
//SubSkillType Name
TextComponent.Builder componentBuilder = setupSkillComponentNameStyle(player, skillName, subSkillType, RankUtils.hasUnlockedSubskill(player, subSkillType));
- if(!RankUtils.hasUnlockedSubskill(player, subSkillType))
- {
+ if (!RankUtils.hasUnlockedSubskill(player, subSkillType)) {
//Skill is not unlocked yet
addLocked(subSkillType, ccLocked, ccLevelRequirement, ccLevelRequired, componentBuilder);
} else {
//addSubSkillTypeToHoverEventJSON(subSkillType, componentBuilder);
//RANK
- if(subSkillType.getNumRanks() > 0)
- {
+ if (subSkillType.getNumRanks() > 0) {
int curRank = RankUtils.getRank(player, subSkillType);
int nextRank = 0;
- if(curRank < subSkillType.getNumRanks())
- {
- nextRank = RankUtils.getRankUnlockLevel(subSkillType, curRank+1);
+ if (curRank < subSkillType.getNumRanks()) {
+ nextRank = RankUtils.getRankUnlockLevel(subSkillType, curRank + 1);
}
- addRanked(ccRank, ccCurRank, ccPossessive, ccCurRank, componentBuilder, subSkillType.getNumRanks(), RankUtils.getRank(player, subSkillType), nextRank);
-
+ addRanked(componentBuilder, subSkillType.getNumRanks(),
+ RankUtils.getRank(player, subSkillType), nextRank);
}
componentBuilder.append(Component.newline());
@@ -472,55 +438,52 @@ public class TextComponentFactory {
return componentBuilder.build();
}
- private static void addSubSkillTypeToHoverEventJSON(AbstractSubSkill abstractSubSkill, TextComponent.Builder componentBuilder)
- {
- if(abstractSubSkill.isSuperAbility())
- {
- componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.SuperAbility"), NamedTextColor.LIGHT_PURPLE, TextDecoration.BOLD));
- } else if(abstractSubSkill.isActiveUse())
- {
- componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.Active"), NamedTextColor.DARK_RED, TextDecoration.BOLD));
+ private static void addSubSkillTypeToHoverEventJSON(AbstractSubSkill abstractSubSkill,
+ TextComponent.Builder componentBuilder) {
+ if (abstractSubSkill.isSuperAbility()) {
+ componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.SuperAbility"),
+ NamedTextColor.LIGHT_PURPLE, TextDecoration.BOLD));
+ } else if (abstractSubSkill.isActiveUse()) {
+ componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.Active"),
+ NamedTextColor.DARK_RED, TextDecoration.BOLD));
} else {
- componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.Passive"), NamedTextColor.GREEN, TextDecoration.BOLD));
+ componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.Passive"),
+ NamedTextColor.GREEN, TextDecoration.BOLD));
}
componentBuilder.append(Component.newline());
}
- public static void getSubSkillTextComponents(Player player, List textComponents, PrimarySkillType parentSkill) {
- for(SubSkillType subSkillType : SubSkillType.values())
- {
- if(subSkillType.getParentSkill() == parentSkill)
- {
+ public static void getSubSkillTextComponents(Player player, List textComponents,
+ PrimarySkillType parentSkill) {
+ for (SubSkillType subSkillType : SubSkillType.values()) {
+ if (subSkillType.getParentSkill() == parentSkill) {
//TODO: Hacky rewrite later
//Only some versions of MC have this skill
- if(subSkillType == SubSkillType.FISHING_MASTER_ANGLER && mcMMO.getCompatibilityManager().getMasterAnglerCompatibilityLayer() == null)
+ if (subSkillType == SubSkillType.FISHING_MASTER_ANGLER
+ && mcMMO.getCompatibilityManager().getMasterAnglerCompatibilityLayer() == null)
continue;
- if(Permissions.isSubSkillEnabled(player, subSkillType))
- {
- if(!InteractionManager.hasSubSkill(subSkillType))
+ if (Permissions.isSubSkillEnabled(player, subSkillType)) {
+ if (!InteractionManager.hasSubSkill(subSkillType))
textComponents.add(TextComponentFactory.getSubSkillTextComponent(player, subSkillType));
}
}
}
/* NEW SKILL SYSTEM */
- for(AbstractSubSkill abstractSubSkill : InteractionManager.getSubSkillList())
- {
- if(abstractSubSkill.getPrimarySkill() == parentSkill)
- {
- if(Permissions.isSubSkillEnabled(player, abstractSubSkill))
+ for (AbstractSubSkill abstractSubSkill : InteractionManager.getSubSkillList()) {
+ if (abstractSubSkill.getPrimarySkill() == parentSkill) {
+ if (Permissions.isSubSkillEnabled(player, abstractSubSkill))
textComponents.add(TextComponentFactory.getSubSkillTextComponent(player, abstractSubSkill));
}
}
}
- public static TextComponent getSubSkillUnlockedNotificationComponents(Player player, SubSkillType subSkillType)
- {
+ public static TextComponent getSubSkillUnlockedNotificationComponents(Player player, SubSkillType subSkillType) {
TextComponent.Builder unlockMessage = Component.text().content(LocaleLoader.getString("JSON.SkillUnlockMessage", subSkillType.getLocaleName(), RankUtils.getRank(player, subSkillType)));
unlockMessage.hoverEvent(HoverEvent.showText(getSubSkillHoverComponent(player, subSkillType)));
- unlockMessage.clickEvent(ClickEvent.runCommand("/"+subSkillType.getParentSkill().toString().toLowerCase(Locale.ENGLISH)));
+ unlockMessage.clickEvent(ClickEvent.runCommand("/" + subSkillType.getParentSkill().toString().toLowerCase(Locale.ENGLISH)));
return unlockMessage.build();
}
}
diff --git a/src/main/resources/advanced.yml b/src/main/resources/advanced.yml
index 4ade2d77c..4e37db678 100644
--- a/src/main/resources/advanced.yml
+++ b/src/main/resources/advanced.yml
@@ -209,7 +209,14 @@ Skills:
Fishing:
ShakeChance:
- Rank_1: 30
+ Rank_1: 15.0
+ Rank_2: 20.0
+ Rank_3: 25.0
+ Rank_4: 35.0
+ Rank_5: 45.0
+ Rank_6: 55.0
+ Rank_7: 65.0
+ Rank_8: 75.0
# VanillaXPMultiplier: Vanilla XP gained from fishing is multiplied by these values.
VanillaXPMultiplier:
diff --git a/src/main/resources/experience.yml b/src/main/resources/experience.yml
index 7c4111c59..00e72f01d 100644
--- a/src/main/resources/experience.yml
+++ b/src/main/resources/experience.yml
@@ -393,6 +393,7 @@ Experience_Values:
Rose_Bush: 50
Fern: 10
Grass: 10
+ Short_Grass: 10
Sugar_Cane: 30
Sunflower: 50
Tall_Grass: 50
diff --git a/src/main/resources/locale/locale_ko.properties b/src/main/resources/locale/locale_ko.properties
index 488fb8e82..5eabe51e2 100644
--- a/src/main/resources/locale/locale_ko.properties
+++ b/src/main/resources/locale/locale_ko.properties
@@ -15,7 +15,130 @@
#
# --wolfwork
+#DO NOT USE COLOR CODES IN THE JSON KEYS
+#COLORS ARE DEFINED IN advanced.yml IF YOU WISH TO CHANGE THEM
+JSON.Rank=๋ญํฌ
+JSON.DescriptionHeader=์ค๋ช
+JSON.JWrapper.Header=์ธ๋ถ ์ ๋ณด
+JSON.Type.Passive=ํจ์๋ธ
+JSON.Type.Active=์กํฐ๋ธ
+JSON.Type.SuperAbility=์ํผ ๋ฅ๋ ฅ
+JSON.Locked=-=[ํด๊ธ๋์ง ์์]=-
+JSON.LevelRequirement=๋ ๋ฒจ ์๊ตฌ ์ฌํญ
+JSON.JWrapper.Target.Type=๋์ ์ ํ:
+JSON.JWrapper.Target.Block=๋ธ๋ก
+JSON.JWrapper.Target.Player=ํ๋ ์ด์ด
+JSON.JWrapper.Perks.Header=&6ํ์ด ํฝ
+JSON.JWrapper.Perks.Lucky={0}% ๋ ์ข์ ํ๋ฅ
+JSON.Hover.Tips=ํ
+JSON.Acrobatics=๊ณก์
+JSON.Alchemy=์ฐ๊ธ์
+JSON.Archery=๊ถ์
+JSON.Axes=๋ถ์
+JSON.Excavation=๋ฐ๊ตด
+JSON.Fishing=๋์
+JSON.Herbalism=์ฝ์ดํ
+JSON.Mining=์ฑ๊ด
+JSON.Repair=์๋ฆฌ
+JSON.Salvage=ํ์
+JSON.Swords=๊ฒ์
+JSON.Taming=์กฐ๋ จ
+JSON.Unarmed=๋น๋ฌด์ฅ
+JSON.Woodcutting=๋ฒ๋ชฉ
+JSON.URL.Website=mcMMO ๊ณต์ ์น์ฌ์ดํธ!
+JSON.URL.Discord=mcMMO ๊ณต์ ๋์ค์ฝ๋ ์๋ฒ!
+JSON.URL.Patreon=nossr50์ mcMMO๋ฅผ ์ํ Patreon์์ ์ง์ํ์ธ์!
+JSON.URL.Spigot=mcMMO ๊ณต์ Spigot ๋ฆฌ์์ค ํ์ด์ง!
+JSON.URL.Translation=mcMMO๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ๋ฒ์ญํ์ธ์!
+JSON.URL.Wiki=mcMMO ๊ณต์ ์ํค!
+JSON.SkillUnlockMessage=&6[ mcMMO&e @&3{0} &6๋ญํฌ &3{1}&6์ด(๊ฐ) ํด์ ๋์์ต๋๋ค! ]
+JSON.Hover.Rank=&e&l๋ญํฌ:&r &f{0}
+JSON.Hover.NextRank=&7&o๋ค์ ์
๊ทธ๋ ์ด๋: ๋ ๋ฒจ {0}
+# for JSON.Hover.Mystery you can add {0} to insert the level required into the name, I don't like how that looks so I'm not doing that atm
+JSON.Hover.Mystery=&7???
+JSON.Hover.Mystery2=&e[&8{0}&e]&8???&r
+JSON.Hover.SkillName=&3{0}&r
+JSON.Hover.SuperAbility=&5{0}&r
+JSON.Hover.MaxRankSkillName=&6{0}&r
+JSON.Hover.AtSymbolSkills=&e@
+JSON.Hover.AtSymbolURL=&e@
+
+#This is the message sent to players when an ability is activated
+JSON.Notification.SuperAbility={0}
+
+#These are the JSON Strings used for SubSkills
+JSON.Acrobatics.Roll.Interaction.Activated=ํ
์คํธ &c๊ตฌ๋ฅธ ํ
์คํธ
+JSON.Acrobatics.SubSkill.Roll.Details.Tips=๋ํ ์ค ์
ํฌ๋ฆฌ๊ธฐ ํค๋ฅผ ๋๋ฅด๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ ๋ฐ๋ฏธ์ง์ 2๋ฐฐ๊น์ง ๋ฐฉ์งํ ์ ์์ต๋๋ค!
+Anvil.SingleItemStack=&cํ๋ ์ด์์ ์์ดํ
์ ๊ฐ์ง ์์ดํ
์คํ์ ํ์ํ๊ฑฐ๋ ์๋ฆฌํ ์ ์์ต๋๋ค. ๋จผ์ ์คํ์ ๋ถํ ํ์ธ์.
+
+#DO NOT USE COLOR CODES IN THE JSON KEYS
+#COLORS ARE DEFINED IN advanced.yml IF YOU WISH TO CHANGE THEM
+
+mcMMO.Template.Prefix=&6(&amcMMO&6) &7{0}
+
+# BEGIN STYLING
+Ability.Generic.Refresh=&a**๋ฅ๋ ฅ์ด ๊ฐฑ์ ๋์์ต๋๋ค!**
+Ability.Generic.Template.Lock=&7{0}
+
+# Skill Command Styling
+Ability.Generic.Template=&3{0}: &a{1}
+Ability.Generic.Template.Custom=&3{0}
+Skills.Overhaul.Header=&c[]=====[]&a {0} &c[]=====[]
+Effects.Effects=ํจ๊ณผ
+Effects.SubSkills.Overhaul=๋ถ๊ฐ ์คํฌ
+Effects.Child.Overhaul=&3ํ์ ๋ ๋ฒจ.&e {0}&3: {1}
+Effects.Child.ParentList=&a{0}&6(&3๋ ๋ฒจ.&e{1}&6)
+Effects.Level.Overhaul=&6๋ ๋ฒจ: &e{0} &3๊ฒฝํ์น&e(&6{1}&e/&6{2}&e)
+Effects.Parent=&6{0} -
+Effects.Template=&3{0}: &a{1}
+Commands.Stats.Self.Overhaul=์คํฏ
+Commands.XPGain.Overhaul=&6๊ฒฝํ์น ํ๋: &3{0}
+MOTD.Version.Overhaul=&6[mcMMO] &3Overhaul ์๋&6 - &3{0}
+Overhaul.mcMMO.Header=&c[]=====[]&a mcMMO - Overhaul ์๋ &c[]=====[]
+Overhaul.mcMMO.Url.Wrap.Prefix=&c[|
+Overhaul.mcMMO.Url.Wrap.Suffix=&c|]
+Overhaul.mcMMO.MmoInfo.Wiki=&e[&f์ด ์คํฌ์ ์ํค์์ ๋ณด๊ธฐ!&e]
+
+# /mcMMO Command Style Stuff
+Commands.mcc.Header=&c---[]&amcMMO ๋ช
๋ น์ด&c[]---
+Commands.Other=&c---[]&aํน์ ๋ช
๋ น์ด&c[]---
+Commands.Party.Header=&c-----[]&aํํฐ&c[]-----
+Commands.Party.Features.Header=&c-----[]&a๊ธฐ๋ฅ&c[]-----
+# XP BAR Allows for the following variables -- {0} = Skill Level, {1} Current XP, {2} XP Needed for next level, {3} Power Level, {4} Percentage of Level
+# Make sure you turn on Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained if you want the XP bar title to update every time a player gains XP!
+XPBar.Template={0}
+XPBar.Template.EarlyGameBoost=&6์๋ก์ด ์คํฌ์ ์ต๋ํ๋ ์ค...
+XPBar.Acrobatics=๊ณก์ Lv.&6{0}
+XPBar.Alchemy=์ฐ๊ธ์ Lv.&6{0}
+XPBar.Archery=๊ถ์ Lv.&6{0}
+XPBar.Axes=๋ถ์ Lv.&6{0}
+XPBar.Excavation=๋ฐ๊ตด Lv.&6{0}
+XPBar.Fishing=๋์ Lv.&6{0}
+XPBar.Herbalism=์ฝ์ดํ Lv.&6{0}
+XPBar.Mining=์ฑ๊ด Lv.&6{0}
+XPBar.Repair=์๋ฆฌ Lv.&6{0}
+XPBar.Salvage=ํ์ Lv.&6{0}
+XPBar.Smelting=์ ๋ จ Lv.&6{0}
+XPBar.Swords=๊ฒ์ Lv.&6{0}
+XPBar.Taming=์กฐ๋ จ Lv.&6{0}
+XPBar.Unarmed=๋น๋ฌด์ฅ Lv.&6{0}
+XPBar.Woodcutting=๋ฒ๋ชฉ Lv.&6{0}
+XPBar.Complex.Template={0} &3 {4}&f% &3(&f{1}&3/&f{2}&3)
+#This is just a preset template that gets used if the 'ExtraDetails' setting is turned on in experience.yml (off by default), you can ignore this template and just edit the strings above
+XPBar.Complex.Template={0} &3 {4}&f% &3(&f{1}&3/&f{2}&3)
+# XP BAR Allows for the following variables -- {0} = Skill Level, {1} Current XP, {2} XP Needed for next level, {3} Power Level, {4} Percentage of Level
+# Make sure you turn on Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained if you want the XP bar title to update every time a player gains XP!
+# END STYLING
+
+
#ACROBATICS
+Acrobatics.SubSkill.Roll.Stats=&6๊ตฌ๋ฅด๊ธฐ ํ๋ฅ &e{0}%&6 ์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ ํ๋ฅ &e {1}%
+Acrobatics.SubSkill.Roll.Stat=๊ตฌ๋ฅด๊ธฐ ํ๋ฅ
+Acrobatics.SubSkill.Roll.Stat.Extra=์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ ํ๋ฅ
+Acrobatics.SubSkill.Roll.Chance=๊ตฌ๋ฅด๊ธฐ ํ๋ฅ : &e{0}
+Acrobatics.SubSkill.Roll.Mechanics=&7๊ตฌ๋ฅด๊ธฐ๋ ์๋์ ์ธ ๋ถ๋ถ์ด ์๋ ๋ฅ๋ ฅ์
๋๋ค.\n๋ํ ๋ฐ๋ฏธ์ง๋ฅผ ์
์ ๋๋ง๋ค, ๋น์ ์ ๋น์ ์ ๋ฅ๋ ฅ ๋ ๋ฒจ์ ๋ฐ๋ผ ๋ฐ๋ฏธ์ง๋ฅผ ์์ ํ ๋ฌดํจํํ ์ ์์ต๋๋ค. ๋ฅ๋ ฅ ๋ ๋ฒจ์ด &e{6}%&7์ผ ๋, ๋น์ ์ &e{0}%&7์ ํ๋ฅ ๋ก ๋ฐ๋ฏธ์ง๋ฅผ ๋ฌดํจํํ ์ ์์ผ๋ฉฐ, ์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํ์ฑํํ๋ฉด &e{1}%&7์ ํ๋ฅ ๋ก ๋ฐ๋ฏธ์ง๋ฅผ ๋ฌดํจํํ ์ ์์ต๋๋ค.\n์ฑ๊ณต ํ๋ฅ ์ ๋ฅ๋ ฅ ๋ ๋ฒจ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์กฐ์ ๋๋ฉฐ, ๋ฅ๋ ฅ ๋ ๋ฒจ &e{2}&7์์ ์ต๋์น์ ๋๋ฌํฉ๋๋ค. ๊ณก์ ๋ฅ๋ ฅ์ 1 ๋ ๋ฒจ ์ฌ๋ฆด ๋๋ง๋ค &e{3}%&7์ ํ๋ฅ ์ด ์ฆ๊ฐํฉ๋๋ค.\n์
ํฌ๋ฆฌ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ตฌ๋ฅด๊ธฐ ํ๋ฅ ์ด 2๋ฐฐ๊ฐ ๋๋ฉฐ, ๋ฐ๋ฏธ์ง๋ฅผ 2๋ฐฐ๋ก ๊ฐ์์ํฌ ์ ์์ต๋๋ค. ์
ํฌ๋ฆฌ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ผ๋ฐ์ ์ธ ๊ตฌ๋ฅด๊ธฐ๊ฐ ์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ๋ก ๋ณํฉ๋๋ค.\n๊ตฌ๋ฅด๊ธฐ๋ ์ต๋ &c{4}&7์ ๋ฐ๋ฏธ์ง๋ฅผ ๋ฌดํจํํฉ๋๋ค. ์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ๋ ์ต๋ &a{5}&7์ ๋ฐ๋ฏธ์ง๋ฅผ ๋ฌดํจํํฉ๋๋ค.
+Acrobatics.SubSkill.GracefulRoll.Name=์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ
+Acrobatics.SubSkill.Dodge.Stat=๊ตฌ๋ฅด๊ธฐ ํ๋ฅ
Acrobatics.Ability.Proc=&a**์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ**
Acrobatics.Combat.Proc=&a**ํํผ**
Acrobatics.DodgeChance=ํํผ ํ๋ฅ : &e{0}
@@ -44,6 +167,11 @@ Alchemy.Concoctions.Rank=ํผํฉ ๋ญํฌ: &e{0}/{1}
Alchemy.Concoctions.Ingredients=์ฑ๋ถ [&e{0}&c]: &e{1}
Alchemy.SkillName=์ฐ๊ธ์
Alchemy.Skillup=์ฐ๊ธ์ ๊ธฐ์ ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Alchemy.SubSkill.Catalysis.Stat=์์กฐ ์๋
+Alchemy.SubSkill.Concoctions.Stat=ํผํฉ ๋ญํฌ: &a{0}&3/&a{1}
+Alchemy.SubSkill.Concoctions.Stat.Extra=์ฑ๋ถ [&a{0}&3]: &a{1}
+Alchemy.Ability.Locked.0={0}+ ๋ ๋ฒจ์์ ํด๊ธ๋ฉ๋๋ค (์ด๋งค)
+Alchemy.SkillName=์ฐ๊ธ์
#ARCHERY
Archery.Combat.DazeChance=ํํน ํ๋ฅ : &e{0}
@@ -58,6 +186,13 @@ Archery.SubSkill.ArrowRetrieval.Description=์์ฒด์์ ํ์ด ํ์ ํ๋ฅ
Archery.Listener=๊ถ์ (ARCHERY):
Archery.SkillName=๊ถ์
Archery.Skillup=๊ถ์ ๊ธฐ์ ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Archery.SubSkill.SkillShot.Stat=์คํฌ์ท ์ถ๊ฐ ํผํด
+Archery.SubSkill.Daze.Stat=ํํน ํ๋ฅ
+Archery.SubSkill.ArrowRetrieval.Stat=ํ์ด ํ์ ํ๋ฅ
+Archery.SubSkill.ArcheryLimitBreak.Name=๊ถ์ ํ๊ณ ๋ํ
+Archery.SubSkill.ArcheryLimitBreak.Description=ํ๊ณ ๋ํ. ๊ฐํ ์ ์๊ฒ ์ถ๊ฐ ํผํด๋ฅผ ์ค๋๋ค. PVP๋ฅผ ์ํด ๋ง๋ค์ด์ก์ผ๋ฉฐ, PVE์์ ์ถ๊ฐ ํผํด๋ฅผ ์ค์ง๋ ์๋ฒ ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
+Archery.SubSkill.ArcheryLimitBreak.Stat=ํ๊ณ ๋ํ ์ต๋ ํผํด
+
#AXES
Axes.Ability.Bonus.0=๋๋ผ ๋ง์คํฐ๋ฆฌ
@@ -93,6 +228,12 @@ Axes.Skills.SS.Refresh=&a๋น์ ์ &e๋ผ ์ชผ๊ฐ๊ธฐ &a๊ธฐ์ ์ ์ด์ ์ฌ์ฉ ๊ฐ
Axes.Skills.SS.Other.Off={0}๋์ด &c๋ผ ์ชผ๊ฐ๊ธฐ๋ฅผ&a ์ค๋น ํด์ ํ์ต๋๋ค
Axes.Skills.SS.Other.On=&a{0}&2๋์ด &c๋ผ ์ชผ๊ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ์ต๋๋ค!
Axes.Skillup=๋ถ์ ๊ธฐ์ ์ด {0} ์ฌ๋ผ ์ด ({1}) ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Axes.Ability.Ready.Extra=๋๋ผ ์ค๋น ์๋ฃ. &7({0}์ {1}์ด ๋์ ์ฟจํ์ ์ค์
๋๋ค)
+Axes.SubSkill.SkullSplitter.Stat=๋ผ ์ชผ๊ฐ๊ธฐ ์ง์์๊ฐ
+Axes.SubSkill.CriticalStrikes.Stat=ํฌ๋ฆฌํฐ์ปฌ ์คํธ๋ผ์ดํฌ ํ๋ฅ
+Axes.SubSkill.AxesLimitBreak.Name=๋๋ผ ํ๊ณ ๋ํ
+Axes.SubSkill.AxesLimitBreak.Description=ํ๊ณ๋ฅผ ๋ํํฉ๋๋ค. ๊ฐํ ์๋์ ๋ํ ์ถ๊ฐ ํผํด๊ฐ ์ฆ๊ฐํฉ๋๋ค. PVP๋ฅผ ์ํด ๋ง๋ค์ด์ก์ผ๋ฉฐ, PVE์์ ์ถ๊ฐ ํผํด๋ฅผ ์ค์ง๋ ์๋ฒ ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
+Axes.SubSkill.AxesLimitBreak.Stat=ํ๊ณ ๋ํ ์ต๋ ํผํด
#EXCAVATION
Excavation.Ability.Lower=&7**์ฝ ์ค๋น ํด์ **
@@ -110,6 +251,11 @@ Excavation.Skills.GigaDrillBreaker.Refresh=&a๋น์ ์ &e๊ธฐ๊ฐ ๋๋ฆด ๋ฒ์์ปค
Excavation.Skills.GigaDrillBreaker.Other.Off={0}&2๋์ &c๊ธฐ๊ฐ ๋๋ฆด ๋ฒ์์ปค๋ฅผ ์ฌ์ฉํ์ต๋๋ค!
Excavation.Skills.GigaDrillBreaker.Other.On=&a{0}&2๋์ &c๊ธฐ๊ฐ ๋๋ฆด ๋ฒ์์ปค๋ฅผ ์ฌ์ฉ ํ์ต๋๋ค!
Excavation.Skillup=๋ฐ๊ตด ๊ธฐ์ ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Excavation.SubSkill.GigaDrillBreaker.Stat=๊ธฐ๊ฐ ๋๋ฆด ๋ฒ์์ปค ์ง์์๊ฐ
+Excavation.SubSkill.Archaeology.Name=๊ณ ๊ณ ํ
+Excavation.SubSkill.Archaeology.Description=๋
์ ๋น๋ฐ์ ๋ฐ๊ตดํ์ธ์! ๋์ ๊ธฐ์ ๋ ๋ฒจ์ ๋ณด๋ฌผ์ ์ฐพ์ ๋ ๊ฒฝํ์น ๊ตฌ์ฌ์ ์ฐพ์ ํ๋ฅ ์ ๋์
๋๋ค!
+Excavation.SubSkill.Archaeology.Stat=๊ณ ๊ณ ํ ๊ฒฝํ์น ๊ตฌ์ฌ ํ๋ฅ
+Excavation.SubSkill.Archaeology.Stat.Extra=๊ณ ๊ณ ํ ๊ฒฝํ์น ๊ตฌ์ฌ๋
#FISHING
Fishing.Ability.Chance=์
์ง ํ๋ฅ : &e{0}
@@ -126,7 +272,7 @@ Fishing.Ability.FD=์ด๋ถ์ ๋ค์ด์ดํธ ๋ญํฌ: &e{0}๋ญํฌ
Fishing.SubSkill.TreasureHunter.Name=ํธ๋ ์ ธ ํํฐ (ํจ์๋ธ)
Fishing.SubSkill.TreasureHunter.Description=๋ฌผ๊ฑด(๊ทธ์ธ) ๋์
Fishing.SubSkill.MagicHunter.Name=๋งค์ง ํํฐ
-Fishing.SubSkill.MagicHunter.Description=์ธ์ฑํธ ์์ดํ
๋ฐ๊ฒฌ
+Fishing.SubSkill.MagicHunter.Description=์ธ์ฑํธ๋ ์์ดํ
๋ฐ๊ฒฌ
Fishing.SubSkill.Shake.Name=ํ๋ค๊ธฐ (vs. ๋
๋ฆฝ์ฒด)
Fishing.SubSkill.Shake.Description=์์ดํ
์ ๋ชน์ด๋ ๋์์์ ์ป์
Fishing.SubSkill.FishermansDiet.Name=์ด๋ถ์ ๋ค์ด์ดํธ
@@ -141,6 +287,19 @@ Fishing.Ability.TH.Boom=&7ํญ๋ฐ ์๊ฐ!!!
Fishing.Ability.TH.Poison=&7๋์๊ฐ ์ข์ง ์์ต๋๋ค...
Fishing.SkillName=๋์
Fishing.Skillup=๋์ ๊ธฐ์ ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Fishing.ScarcityTip=&e&o์ด ์ง์ญ์ ๊ณผ์ ๋์๋ก ์ธํด ์ดํ์ด ๋ถ์กฑํฉ๋๋ค. ๋ ๋ง์ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ก์ผ๋ ค๋ฉด ๋ค๋ฅธ ๊ณณ์ ๋์ฏ๋๋ฅผ ๋์ ธ๋ณด์ธ์. ์ ์ด๋ {0} ๋ธ๋ก ์ด์ ๋จ์ด์ง ๊ณณ์์ ๋์ํ์ธ์.
+Fishing.Scared=&7&o๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋๋ผ๊ฒ ํ๋ ๋ถ๊ท์นํ ์์ง์์
๋๋ค!
+Fishing.Exhausting=&c&o๋์ฏ๋๋ฅผ ๋ถ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ํผ๋ก๊ฐ ์์ด๊ณ ๋์ฏ๋๊ฐ ๋ณ์๋ฒ๋ฆฝ๋๋ค!
+Fishing.LowResourcesTip=&7์ด ์ง์ญ์๋ ๋ฌผ๊ณ ๊ธฐ๊ฐ ๋ง์ด ๋จ์์์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ด๋ {0} ๋ธ๋ก ์ด์ ๋จ์ด์ง ๊ณณ์์ ๋์ํด๋ณด์ธ์.
+Fishing.SubSkill.TreasureHunter.Stat=๋ณด๋ฌผ ์ฌ๋ฅ๊พผ ๋ญํฌ: &a{0}&3/&a{1}
+Fishing.SubSkill.TreasureHunter.Stat.Extra=๋๋กญ ๋น์จ: &7์ผ๋ฐ: &e{0} &aํฌ๊ท: &e{1}\n&9๋ ์ด: &e{2} &d์ํฝ: &e{3} &6๋ ์ ๋๋ฆฌ: &e{4} &b์ ํ: &e{5}
+Fishing.SubSkill.MagicHunter.Stat=๋งค์ง ํํฐ ํ๋ฅ
+Fishing.SubSkill.Shake.Stat=ํ๋ค๊ธฐ ํ๋ฅ
+Fishing.SubSkill.FishermansDiet.Stat=์ด๋ถ์ ๋ค์ด์ดํธ: &a๋ญํฌ {0}
+Fishing.SubSkill.MasterAngler.Description=์ด๋ถ๊ฐ ๋ ์์ฃผ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ก์ต๋๋ค. ๋ณดํธ์์ ๋์ํ ๋ ๋ ์ ์๋ํฉ๋๋ค.
+Fishing.SubSkill.MasterAngler.Stat=๋์ ์ต์ ๋๊ธฐ ์๊ฐ ๊ฐ์: &a-{0} ์ด
+Fishing.SubSkill.MasterAngler.Stat.Extra=๋์ ์ต๋ ๋๊ธฐ ์๊ฐ ๊ฐ์: &a-{0} ์ด
+Fishing.SubSkill.IceFishing.Stat=์ผ์ ๋์
#HERBALISM
Herbalism.Ability.DoubleDropChance=2๋ฐฐ ๋๋กญ ํ๋ฅ : &e{0}
@@ -151,23 +310,23 @@ Herbalism.Ability.GTh.Chance=์ฌ๋ฐฐ์ ์ฌ๋ฅ ํ๋ฅ : &e{0}
Herbalism.Ability.GTh.Fail=**์ฌ๋ฐฐ์ ์ฌ๋ฅ ์คํจ**
Herbalism.Ability.GTh.Stage=์ฌ๋ฐฐ์ ์ฌ๋ฅ ๋จ๊ณ: &e ์๋ฌผ ์ฌ๋ฐฐ {0}๋จ๊ณ
Herbalism.Ability.GTh=&a**์ฌ๋ฐฐ์ ์ฌ๋ฅ**
-Herbalism.Ability.HylianLuck=ํ์ผ๋ฆฌ์์ ํ์ด ํ๋ฅ : &e{0}
+Herbalism.Ability.HylianLuck=ํ์ด๋์ธ์ ํ์ด ํ๋ฅ : &e{0}
Herbalism.Ability.Lower=&7**ํธ๋ฏธ ์ค๋น ํด์ **
Herbalism.Ability.Ready=&a**ํธ๋ฏธ ์ค๋น ์๋ฃ**
Herbalism.Ability.ShroomThumb.Chance=๋ฒ์ฏ์ฌ๋ฐฐ์์ ์จ๊ฒฐ ํ๋ฅ : &e{0}
Herbalism.Ability.ShroomThumb.Fail=**๋ฒ์ฏ์ฌ๋ฐฐ์์ ์จ๊ฒฐ ์คํจ**
Herbalism.SubSkill.GreenTerra.Name=์ฌ๋ฐฐ์ ๋์ง (๋ฅ๋ ฅ)
-Herbalism.SubSkill.GreenTerra.Description=๋์ง ๋ฟ๋ฆฌ๊ธฐ, ๋๋กญ 3๋ฐฐ
+Herbalism.SubSkill.GreenTerra.Description=๋์ง ๋ฟ๋ฆฌ๊ธฐ, ๋๋กญ 3๋ฐฐ, ์ฌ๋ฐฐ์ ์ฌ๋ฅ ๋ถ์คํธ
Herbalism.SubSkill.GreenThumb.Name=์ฌ๋ฐฐ์ ์ฌ๋ฅ (๋ฐ)
Herbalism.SubSkill.GreenThumb.Description=์ํ์ ์๋ ์จ ์ฌ๊ธฐ
Herbalism.Effect.4=์ฌ๋ฐฐ์ ์ฌ๋ฅ (๋ธ๋ก๋ค)
-Herbalism.SubSkill.GreenThumb.Description.2=์ด๋ผ๋ ๋ธ๋ก ๋ง๋ค๊ธฐ, ์๋ ์๋ผ๊ฒํ๊ธฐ
+Herbalism.SubSkill.GreenThumb.Description.2=์ด๋ผ ๋ ๋ธ๋ก ๋ง๋ค๊ธฐ, ์๋ ์๋ผ๊ฒ ํ๊ธฐ
Herbalism.SubSkill.FarmersDiet.Name=๋๋ถ์ ๋ค์ด์ดํธ
Herbalism.SubSkill.FarmersDiet.Description=๋์๋ฌผ ๋ฐฐ๊ณ ํ ํ๋ณต ํฅ์
Herbalism.SubSkill.DoubleDrops.Name=2๋ฐฐ ๋๋กญ (๋ชจ๋ ์๋ฌผ)
Herbalism.SubSkill.DoubleDrops.Description=ํญ์ ๋๋กญ 2๋ฐฐ
-Herbalism.SubSkill.HylianLuck.Name=ํ์ผ๋ฆฌ์์ ํ์ด
-Herbalism.SubSkill.HylianLuck.Description=์ ์ ํ๋ฅ ๋ก ๋ ์ด์์ดํ
์ป์
+Herbalism.SubSkill.HylianLuck.Name=ํ์ด๋์ธ์ ํ์ด
+Herbalism.SubSkill.HylianLuck.Description=์ ์ ํ๋ฅ ๋ก ๋ ์ด ์์ดํ
์ป์
Herbalism.SubSkill.ShroomThumb.Name=๋ฒ์ฏ์ฌ๋ฐฐ์์ ์จ๊ฒฐ
Herbalism.SubSkill.ShroomThumb.Description=ํ & ์๋์ ๊ท ์ฌ์ฒด ์ดํฌ
Herbalism.HylianLuck=&aํ์ด๋์ ํ์ด์ด ์ค๋ ๋์๊ฒ ๋ฐ๋ฅด๋๊ตฌ๋!
@@ -179,6 +338,13 @@ Herbalism.Skills.GTe.Refresh=&a๋น์ ์ &e์ฌ๋ฐฐ์ ๋์ง &a๊ธฐ์ ์ ์ด์
Herbalism.Skills.GTe.Other.Off={0}&2๋์ &c์ฌ๋ฐฐ์ ๋์ง๋ฅผ ์ฌ์ฉํ์ต๋๋ค!
Herbalism.Skills.GTe.Other.On=&a{0}&2๋์ &c์ฌ๋ฐฐ์ ๋์ง๋ฅผ ์ฌ์ฉํ์ต๋๋ค!
Herbalism.Skillup=์ฝ์ดํ ๊ธฐ์ ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Herbalism.SubSkill.GreenTerra.Stat=์ฌ๋ฐฐ์ ๋์ง ์ง์ ์๊ฐ
+Herbalism.SubSkill.GreenThumb.Stat=์ฌ๋ฐฐ์ ์ฌ๋ฅ ํ๋ฅ
+Herbalism.SubSkill.GreenThumb.Stat.Extra=์ฌ๋ฐฐ์ ์ฌ๋ฅ ๋จ๊ณ: &a์๋ฌผ์ด {0} ๋จ๊ณ๋ก ์๋ผ๋ฉ๋๋ค
+Herbalism.SubSkill.FarmersDiet.Stat=๋๋ถ์ ๋ค์ด์ดํธ: &a๋ญํฌ {0}
+Herbalism.SubSkill.DoubleDrops.Stat=2๋ฐฐ ๋๋กญ ํ๋ฅ
+Herbalism.SubSkill.HylianLuck.Stat=ํ์ด๋์ธ์ ํ์ด ํ๋ฅ
+Herbalism.SubSkill.ShroomThumb.Stat=๋ฒ์ฏ์ฌ๋ฐฐ์์ ์จ๊ฒฐ ํ๋ฅ
#MINING
Mining.Ability.Length=ํ๊ดด์ ์ง์์๊ฐ: &e{0}s
@@ -207,8 +373,13 @@ Mining.Skills.SuperBreaker.Other.Off={0}&2๋์ &cํ๊ดด์๋ฅผ ์ฌ์ฉํ์ต๋
Mining.Skills.SuperBreaker.Other.On=&a{0}&2๋์ &cํ๊ดด์๋ฅผ ์ฌ์ฉํ์ต๋๋ค!
Mining.Skills.SuperBreaker.Refresh=&a๋น์ ์ &eํ๊ดด์๋ &a์ด์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค!
Mining.Skillup=์ฑ๊ด ๊ธฐ์ ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Mining.SubSkill.SuperBreaker.Stat=ํ๊ดด์ ์ง์ ์๊ฐ
+Mining.SubSkill.DoubleDrops.Stat=๋๋กญ 2๋ฐฐ ํ๋ฅ
+Mining.SubSkill.BlastMining.Stat=ํญ๋ฐ ์ฑ๊ด: &a๋ญํฌ {0}/{1} &7({2})
+Mining.SubSkill.BlastMining.Stat.Extra=ํญ๋ฐ ๋ฒ์ ์ฆ๊ฐ: &a+{0}
+Mining.SubSkill.DemolitionsExpertise.Stat=์ ๋ฌธ ํญํ ํผํด ๊ฐ์
-#Blast Mining
+#ํญ๋ฐ ์ฑ๊ตด
Mining.Blast.Boom=&7**ํญ๋ฐ**
Mining.Blast.Effect=+{0} ๊ด๋ฌผ ์ด์ต, {1}x ๋๋กญ
Mining.Blast.Radius.Increase=ํญ๋ฐ ๋ฐ๊ฒฝ ์ฆ๊ฐ: &e+{0}
@@ -249,6 +420,10 @@ Repair.Skills.StackedItems=&4ํ๋ฒ์ ๋ง์ ์์ดํ
์ ์๋ฆฌํ ์ ์์ต
Repair.Skills.Super.Chance=์ํผ ์๋ฆฌ ํ๋ฅ : &e{0}
Repair.Skillup=์๋ฆฌ ๊ธฐ์ ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
Repair.Pretty.Name=์๋ฆฌ
+Repair.SubSkill.RepairMastery.Stat=์๋ฆฌ ๋ง์คํฐ๋ฆฌ: &a์ถ๊ฐ {0} ๋ด๊ตฌ์ฑ ๋ณต๊ตฌ
+Repair.SubSkill.SuperRepair.Stat=์ํผ ์๋ฆฌ ํ๋ฅ
+Repair.SubSkill.ArcaneForging.Stat=์ธ์ฑํธ ์์ดํ
์๋ฆฌ: &e๋ญํฌ {0}/{1}
+Repair.SubSkill.ArcaneForging.Stat.Extra=&3์ธ์ฑํธ ์์ดํ
์๋ฆฌ ํ๋ฅ :&7 ์ฑ๊ณต &a{0}&7%, ์คํจ &c{1}&7%
#Arcane Forging
Repair.Arcane.Chance.Downgrade=&7์ธ์ฑํธ ์๋ฆฌ ๊ฒฉํ ํ๋ฅ : &e{0}%
@@ -263,8 +438,6 @@ Repair.Arcane.Rank=์ธ์ฑํธ ์๋ฆฌ: &e{0}/{1}๋ญํฌ
Salvage.Pretty.Name=ํ์
Salvage.SubSkill.AdvancedSalvage.Name=์ ๋ฌธ์ ์ธ ํ์
Salvage.SubSkill.AdvancedSalvage.Description=์์๋ ์์ดํ
ํ์
-Salvage.SubSkill.ArcaneSalvaging.Name=์ ๋น๋ก์ด ํ์
-Salvage.SubSkill.ArcaneSalvaging.Description=์์ดํ
์ ์ธ์ฑํธ ์ถ์ถ
Salvage.Ability.Locked.0={0} ๋ ๋ฒจ ๋ ๊ธฐ์ ํด์ (์ ๋ฌธ์ ์ธ ํ์)
Salvage.Ability.Bonus.0=์ ๋ฌธ์ ์ธ ํ์
Salvage.Ability.Bonus.1=๋ถ์
์ง ์์ดํ
์ ์ต๋ ์ถ์ถ๋ {0}
@@ -281,6 +454,21 @@ Salvage.Skills.ArcaneSuccess=&a๋น์ ์ ์ด ์์ดํ
์ ๋ชจ๋ ์ง์์ ์ถ
Salvage.Listener.Anvil=&4๋น์ ์ ํ์ ๋ชจ๋ฃจ๋ฅผ ๋์์ต๋๋ค, ๋๊ตฌ๋ ๋ฐฉ์ด๊ตฌ ํ์์ ์ฐ์
๋๋ค.
Salvage.Listener=ํ์(SALVAGE):
Salvage.SkillName=ํ์
+Salvage.Pretty.Name=Salvage
+Salvage.SubSkill.UnderstandingTheArt.Name=์์ ์ ์ดํด
+Salvage.SubSkill.UnderstandingTheArt.Description=์ด์์ ์ฐ๋ ๊ธฐ๋ฅผ ๋ค์ง๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ํ๊ฒฝ์ ๋ณดํธํ๋ ๊ฒ์
๋๋ค.\nํ์์ ๋ค์ํ ์์ฑ์ ๊ฐํํฉ๋๋ค.
+Salvage.SubSkill.ScrapCollector.Name=ํ๊ธฐ๋ฌผ ์์ง๊ฐ
+Salvage.SubSkill.ScrapCollector.Description=์์ดํ
์์ ์ฌ๋ฃ๋ฅผ ํ์ํ๋ฉฐ, ์๋ฒฝํ ํ์๋ ๊ธฐ์ ๊ณผ ์ด์ ๋ฌ๋ ค ์์ต๋๋ค.
+Salvage.SubSkill.ScrapCollector.Stat=ํ๊ธฐ๋ฌผ ์์ง๊ฐ: &a์ต๋ &e{0}&a๊ฐ์ ์์ดํ
์ ํ์ํฉ๋๋ค. ์ด์ด ์กฐ๊ธ ๊ด์ฌ๋ฉ๋๋ค.
+Salvage.SubSkill.ArcaneSalvage.Name=์ ๋น๋ก์ด ํ์
+Salvage.SubSkill.ArcaneSalvage.Description=์์ดํ
์์ ์ธ์ฑํธ ์ถ์ถ
+Salvage.SubSkill.ArcaneSalvage.Stat=์ ๋น๋ก์ด ํ์: &e๋ญํฌ {0}/{1}
+Salvage.Skills.Lottery.Normal=&6{1}&6์์ &3{0}&6๊ฐ์ ์ฌ๋ฃ๋ฅผ ํ์ํ์ต๋๋ค.
+Salvage.Skills.Lottery.Perfect=&a&l์๋ฒฝํฉ๋๋ค!&r&6{1}&6์์ ์๊ณ ์์ด &3{0}&6๊ฐ์ ์ฌ๋ฃ๋ฅผ ํ์ํ์ต๋๋ค.
+Salvage.Skills.Lottery.Untrained=&7ํ์์ ์ ์ ํ๊ฒ ํ๋ จ๋์ง ์์์ต๋๋ค. {1}&7์์๋ &c{0}&7๊ฐ์ ์ฌ๋ฃ๋ง ํ์ํ ์ ์์์ต๋๋ค.
+
+#Anvil (Shared between SALVAGE and REPAIR)
+Anvil.Unbreakable=์ด ์์ดํ
์ Unbreakable์
๋๋ค!
#SWORDS
Swords.Ability.Lower=&7**๊ฒ ์ค๋น ํด์ **
@@ -312,6 +500,21 @@ Swords.Skills.SS.Other.Off={0}&2๋์ &cํฑ๋ ๊ณต๊ฒฉ ์คํฌ์ ์ฌ์ฉ ํด์
Swords.Skills.SS.Other.On=&a{0}&2๋์ &cํฑ๋ ๊ณต๊ฒฉ ์คํฌ์ ์ฌ์ฉํ์ต๋๋ค!
Swords.Skillup=๊ฒ์ ์คํฌ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
Swords.SS.Length=ํฑ๋ ๊ณต๊ฒฉ ์ง์์๊ฐ: &e{0}์ด
+Swords.Combat.Rupture.Note.Update.One=&7(ํ์ด ๋
ธํธ): ์ฃผ๊ธฐ์ ์ธ ํผํด๋ ์น๋ช
์ ์ด์ง ์์ผ๋ฉฐ ์ด๋น ๋ ๋ฒ ๋ฐ์ํ๋ฉฐ ๋ฐฉ์ด๊ตฌ๋ฅผ ๋ฌด์ํฉ๋๋ค.
+Swords.SubSkill.CounterAttack.Stat=๋ฐ๊ฒฉ ํ๋ฅ
+Swords.SubSkill.SerratedStrikes.Stat=ํฑ๋ ๊ณต๊ฒฉ ์ง์์๊ฐ
+Swords.SubSkill.Rupture.Name=ํ์ด
+Swords.SubSkill.Rupture.Description=ํญ๋ฐ์ ์ผ๋ก ๋๋๋ ์ง์ ํผํด ํจ๊ณผ
+Swords.SubSkill.Stab.Name=์ฐ๋ฅด๊ธฐ
+Swords.SubSkill.Stab.Description=๊ณต๊ฒฉ์ ์ถ๊ฐ ํผํด๋ฅผ ์ค๋๋ค.
+Swords.SubSkill.Stab.Stat=์ฐ๋ฅด๊ธฐ ํผํด
+Swords.SubSkill.SwordsLimitBreak.Name=๊ฒ ํ๊ณ ๋ํ
+Swords.SubSkill.SwordsLimitBreak.Description=ํ๊ณ๋ฅผ ๊นจ๋ ๊ฒ. ๊ฐ๋ ฅํ ์๋์ ๋ํ ์ถ๊ฐ ํผํด. PVP๋ฅผ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ, PVE์์ ํผํด ์ฆ๊ฐ ์ฌ๋ถ๋ ์๋ฒ ์ค์ ์ ๋ฐ๋ฆ
๋๋ค.
+Swords.SubSkill.SwordsLimitBreak.Stat=ํ๊ณ ๋ํ ์ต๋ ํผํด
+Swords.SubSkill.Rupture.Stat=ํ์ด ํ๋ฅ
+Swords.SubSkill.Rupture.Stat.Extra=[[DARK_AQUA]]ํ์ด ์ง์ ์๊ฐ: &e{0}์ด&a (ํ๋ ์ด์ด), &e{1}์ด&a (๋ชน).
+Swords.SubSkill.Rupture.Stat.TickDamage=[[DARK_AQUA]]ํ์ด ์์ ํฑ ํผํด: &e{0}&a (ํ๋ ์ด์ด), &e{1}&a (๋ชน).
+Swords.SubSkill.Rupture.Stat.ExplosionDamage=[[DARK_AQUA]]ํ์ด ํญ๋ฐ ํผํด: &e{0}&a (ํ๋ ์ด์ด), &e{1}&a (๋ชน).
#TAMING
Taming.Ability.Bonus.0=ํ๊ฒฝ ์ธ์
@@ -335,9 +538,9 @@ Taming.Ability.Locked.5={0}๋ ๋ฒจ ๋ ์คํฌํด์ (์ ์ฑํ ์ฌ๋ฅ๊ฐ)
Taming.Combat.Chance.Gore=๋์ง ํ๋ฅ : &e{0}
Taming.SubSkill.BeastLore.Name=์ง์น์ ํฌํจ
Taming.SubSkill.BeastLore.Description=๋ผ๋ก ๋๋/์ค์
๋กฏ ๊ฒ์ฌ
-Taming.SubSkill.ShockProof.Name=์ถฉ๊ฒฉ ์ฆ๋ช
+Taming.SubSkill.ShockProof.Name=์ถฉ๊ฒฉ ๋ฐฉ์ง
Taming.SubSkill.ShockProof.Description=ํญ๋ฐ ํผํด ์ ๊ฐ
-Taming.SubSkill.CallOfTheWild.Name=์ง์น์ ํฌํจ
+Taming.SubSkill.CallOfTheWild.Name=์ผ์์ ํฌํจ
Taming.SubSkill.CallOfTheWild.Description=์์ ๋๋ฌผ ์ํ
Taming.SubSkill.CallOfTheWild.Description.2=&7COTW (์ค์
๋กฏ): ์ญ๊ทธ๋ฆฌ๋ฉด์ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋ค๊ณ {0}๋ฒ ์ข ํด๋ฆญ
Taming.Effect.15=&7COTW (๋๋): ์ญ๊ทธ๋ฆฌ๋ฉด์ ๋ผ๋ฅผ ๋ค๊ณ {0}๋ฒ ์ข ํด๋ฆญ
@@ -362,7 +565,17 @@ Taming.Summon.Complete=&a์ํ ์๋ฃ
Taming.Summon.Fail.Ocelot=๋น์ ๊ทผ์ฒ์ ์ด๋ฏธ ๋ง์ ์ค์
๋กฏ์ด ์์ด ๋๋ ์ํ์ํฌ ์ ์์ต๋๋ค.
Taming.Summon.Fail.Wolf=๋น์ ๊ทผ์ฒ์ ์ด๋ฏธ ๋ง์ ๋๋๊ฐ ์์ด ๋๋ ์ํ์ํฌ ์ ์์ต๋๋ค.
Taming.Summon.Fail.Horse=๋น์ ๊ทผ์ฒ์ ์ด๋ฏธ ๋ง์ ๋ง์ด ์์ด ๋๋ ์ํ์ํฌ ์ ์์ต๋๋ค.
-Taming.Summon.Name.Format={0}์ {1}
+Taming.SubSkill.Pummel.Name=ํผ๋ฉ
+Taming.SubSkill.Pummel.Description=๋น์ ์ ๋๋๋ ์๋๋ฐฉ์ ๋๋ฐฑ์ํฌ ํ๋ฅ ์ด ์์ต๋๋ค.
+Taming.SubSkill.Pummel.TargetMessage=๋๋์ ์ํด ๋๋ฐฑ๋นํ์ต๋๋ค!
+Taming.Summon.COTW.Success.WithoutLifespan=&a(Call Of The Wild) &7๋น์ ์ &6{0}&7์ ์ํํ์ต๋๋ค.
+Taming.Summon.COTW.Success.WithLifespan=&a(Call Of The Wild) &7๋น์ ์ &6{0}&7์ ์ํํ์ผ๋ฉฐ, ์ง์ ์๊ฐ์ &6{1}&7์ด์
๋๋ค.
+Taming.Summon.COTW.Limit=&a(Call Of The Wild) &7๋์์ ์ํํ ์ ์๋ ์ ์๋๋ฌผ์ ์ต๋ &c{0}๋ง๋ฆฌ&7์
๋๋ค.
+Taming.Summon.COTW.TimeExpired=&a(Call Of The Wild) &7์๊ฐ์ด ์ง๋ฌ์ต๋๋ค. ๋น์ ์ &6{0}&7์ด(๊ฐ) ๋ ๋ฉ๋๋ค.
+Taming.Summon.COTW.Removed=&a(Call Of The Wild) &7์ํ๋ &6{0}&7์ด(๊ฐ) ์ด ์ธ์์์ ์ฌ๋ผ์ก์ต๋๋ค.
+Taming.Summon.COTW.BreedingDisallowed=&a(Call Of The Wild) &c์ํ๋ ๋๋ฌผ์ ๋ฒ์ํ ์ ์์ต๋๋ค.
+Taming.Summon.COTW.NeedMoreItems=&a(Call Of The Wild) &7๋ ํ์ํ ์์ดํ
์ &e{0}&7๊ฐ์ &3{1}&7์
๋๋ค.
+Taming.Summon.Name.Format=&6(COTW) &f{0}์ {1}
#UNARMED
Unarmed.Ability.Berserk.Length=๋ฒ์์ปค ์ง์์๊ฐ: &e{0}์ด
@@ -393,13 +606,24 @@ Unarmed.Skills.Berserk.Other.Off={0}&2๋์ &c๋ฒ์์ปค๋ฅผ ์ฌ์ฉํ์ต๋๋ค!
Unarmed.Skills.Berserk.Other.On=&a{0}&2๋์ &c๋ฒ์์ปค๋ฅผ ์ฌ์ฉํฉ๋๋ค!
Unarmed.Skills.Berserk.Refresh=&a๋น์ ์ &e๋ฒ์์ปค &a์คํฌ์ ์ด์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค!
Unarmed.Skillup=๋น๋ฌด์ฅ ์คํฌ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Unarmed.SubSkill.Berserk.Stat=๋ฒ์์ปค ์ง์์๊ฐ
+Unarmed.SubSkill.Disarm.Stat=๋น๋ฌด์ฅ ํ๋ฅ
+Unarmed.SubSkill.UnarmedLimitBreak.Name=๋น๋ฌด์ฅ ํ๊ณ ๋ํ
+Unarmed.SubSkill.UnarmedLimitBreak.Description=ํ๊ณ๋ฅผ ๊นจ๋ ๊ฒ. ๊ฐํ ์๋์ ๋ํ ํฅ์๋ ํผํด. PVP๋ฅผ ์ํด ๊ณ ์๋์์ผ๋ฉฐ, PVE์์ ํผํด ์ฆ๊ฐ ์ฌ๋ถ๋ ์๋ฒ ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
+Unarmed.SubSkill.UnarmedLimitBreak.Stat=ํ๊ณ ๋ํ ์ต๋ ํผํด
+Unarmed.SubSkill.SteelArmStyle.Name=๊ฐ์ฒ ํ ํํ
+Unarmed.SubSkill.SteelArmStyle.Description=๊ฒฌ๊ณ ํด์ง๋ ํ
+Unarmed.SubSkill.ArrowDeflect.Stat=ํ์ด ํํผ ํ๋ฅ
+Unarmed.SubSkill.IronGrip.Stat=๊ฐ์ฒ ์ฃผ๋จน ํ๋ฅ
+Unarmed.SubSkill.BlockCracker.Name=๋ธ๋ก ํฌ๋์ปค
+Unarmed.SubSkill.BlockCracker.Description=์ฃผ๋จน์ผ๋ก ๋ฐ์ ๋ถ์๊ธฐ
#WOODCUTTING
Woodcutting.Ability.0=๋๋ญ์ ๋จ์ดํธ๋ฆฌ๊ธฐ
Woodcutting.Ability.1=๋๋ญ์ ์ฒญ์
Woodcutting.Ability.Chance.DDrop=๋๋กญ 2๋ฐฐ ํ๋ฅ : &e{0}
Woodcutting.Ability.Length=๋๋ฌด๊พผ ์ง์์๊ฐ: &e{0}์ด
-Woodcutting.Ability.Locked.0={0}๋ ๋ฒจ ๋ ์คํฌ์ด ํด์ ๋ฉ๋๋ค (๋๋ญ์ ๋ฐ๋)
+Woodcutting.Ability.Locked.0={0}๋ ๋ฒจ ๋ ์คํฌ์ด ํด์ ๋ฉ๋๋ค (๋๋ญ์ ๋จ์ดํธ๋ฆฌ๊ธฐ)
Woodcutting.SubSkill.TreeFeller.Name=๋๋ฌด๊พผ (๋ฅ๋ ฅ)
Woodcutting.SubSkill.TreeFeller.Description=๋๋ฌด ํญ๋ฐ์ํค๊ธฐ
Woodcutting.SubSkill.LeafBlower.Name=๋๋ญ์ ๋จ์ดํธ๋ฆฌ๊ธฐ
@@ -416,12 +640,21 @@ Woodcutting.Skills.TreeFeller.Other.On=&a{0}&2๋์ &c๋๋ฌด๊พผ ์คํฌ์ ์ฌ
Woodcutting.Skills.TreeFeller.Splinter=๋๋ผ ํํธ ์กฐ๊ฐ ์์ง!
Woodcutting.Skills.TreeFeller.Threshold=๊ทธ ๋๋ฌด๋ ๋๋ฌด ํฝ๋๋ค!
Woodcutting.Skillup=๋ฒ๋ชฉ ์คํฌ์ด {0} ์ฌ๋ผ ์ด {1} ๋ ๋ฒจ์ด ๋์์ต๋๋ค
+Woodcutting.SubSkill.TreeFeller.Stat=๋๋ฌด๊พผ ์ง์์๊ฐ
+Woodcutting.SubSkill.KnockOnWood.Name=๋๋ฌด ๋๋๋ฆฌ๊ธฐ
+Woodcutting.SubSkill.KnockOnWood.Description=๋๋ฌด๊พผ์ ์ฌ์ฉํ ๋ ์ถ๊ฐ ์์ดํ
์ ์ฐพ์ ์ ์์ต๋๋ค.
+Woodcutting.SubSkill.KnockOnWood.Stat=๋๋ฌด ๋๋๋ฆฌ๊ธฐ
+Woodcutting.SubSkill.KnockOnWood.Loot.Normal=๋๋ฌด์์ ์ผ๋ฐ์ ์ธ ์์ดํ
ํ๋
+Woodcutting.SubSkill.KnockOnWood.Loot.Rank2=๋๋ฌด์์ ์ผ๋ฐ์ ์ธ ์์ดํ
๊ณผ ๊ฒฝํ์น ์ค๋ธ ํ๋
+Woodcutting.SubSkill.HarvestLumber.Stat=๋๋กญ 2๋ฐฐ ํ๋ฅ
+Woodcutting.SubSkill.Splinter.Name=ํํธ
+Woodcutting.SubSkill.Splinter.Description=๋๋ฌด๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ๋ฒ ์ด๋ด์ธ์.
+Woodcutting.SubSkill.BarkSurgeon.Name=๋๋ฌด ๊ป์ง ์์
+Woodcutting.SubSkill.BarkSurgeon.Description=๋๋ฌด ๊ป์ง์ ๋ฒ๊ธธ ๋ ์ ์ฉํ ์ฌ๋ฃ๋ฅผ ์ถ์ถํ์ธ์.
+Woodcutting.SubSkill.NaturesBounty.Name=์์ฐ์ ํ์
+Woodcutting.SubSkill.NaturesBounty.Description=์์ฐ์์ ๊ฒฝํ์น๋ฅผ ๋ชจ์ผ์ธ์.
#ABILITIY
-##generic
-Ability.Generic.Refresh=&a**๋ฅ๋ ฅ์ด ์ฌ ๊ณต๊ธ ๋์์ต๋๋ค!**
-Ability.Generic.Template.Lock=&7{0}
-Ability.Generic.Template=&6{0}: &3{1}
#COMBAT
Combat.ArrowDeflect=&f**ํ์ด ํํผ**
@@ -432,10 +665,13 @@ Combat.Gore=&a**๋์ง**
Combat.StruckByGore=**๋์ง์ ๋ง์์ต๋๋ค**
Combat.TargetDazed=๋ชฉํ๊ฐ &4ํผ๋์ค๋ฌ์ํฉ๋๋ค
Combat.TouchedFuzzy=&4ํผ๋์ด ์ผ์ด๋ฌ์ต๋๋ค. ์~ ์ด์ง๋ฌ์.
+Combat.BeastLoreHorseSpeed=&3๋ง ์ด๋ ์๋ (&a{0} ๋ธ๋ก/์ด&3)
+Combat.BeastLoreHorseJumpStrength=&3๋ง ์ ํ ๊ฐ๋ (&a์ต๋ {0} ๋ธ๋ก&3)
#COMMANDS
##generic
mcMMO.Description=mcMMO&3 ํ๋ก์ ํธ์ ๋ํด์:,&6mcMMO๋ ํ &c์คํ ์์ค&6 RPG ๋ชจ๋๋ก 2011๋
2์์ &9nossr50&6๋์ด ๋ง๋ค์์ต๋๋ค. ๋ชฉํ๋ ์ง์ข์ RPG ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ ์
๋๋ค.,&3ํ:,&6 - &c/mcmmo help&a ๋ช
๋ น์ด๋ค์ ๋ด
๋๋ค,&6 - &aํ์
&c/์คํฌ์ด๋ฆ&a ์์ธํ ์คํฌ ์ ๋ณด๋ฅผ ๋ด
๋๋ค,&3๊ฐ๋ฐ์๋ค:,&6 - &anossr50 &9(์ ์์),&6 - &aGJ &9(ํ๋ก์ ํธ ์ฃผ์ฅ),&6 - &aNuclearW &9(๊ฐ๋ฐ์),&6 - &abm01 &9(๊ฐ๋ฐ์),&6 - &aTfT_02 &9(๊ฐ๋ฐ์),&6 - &aGlitchfinder &9(๊ฐ๋ฐ์),&6 - &at00thpick1 &9(๊ฐ๋ฐ์),&3์ ์ฉํ ๋งํฌ:,&6 - &ahttps://github.com/mcMMO-Dev/mcMMO/issues&6 ๋ฒ๊ทธ ๋ณด๊ณ ,&6 - &a#mcmmo @ irc.esper.net&6 IRC ์ฑํ
,
+mcMMO.Description.FormerDevs=&3์ด์ ๊ฐ๋ฐ์: &aGJ, NuclearW, bm01, TfT_02, Glitchfinder
Commands.addlevels.AwardAll.1=&a๋น์ ์ ๋ชจ๋ ์คํฌ์ {0} ๋ ๋ฒจ์ ์ง๊ธํ์ต๋๋ค!
Commands.addlevels.AwardAll.2=๋ชจ๋ ์คํฌ์ด {0}๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค
Commands.addlevels.AwardSkill.1=&a๋น์ ์ {0} ๋ ๋ฒจ์ {1}์ ์ง๊ธํ์์ต๋๋ค!
@@ -453,12 +689,17 @@ Commands.Cooldowns.Header=&6--= &amcMMO ๋ฅ๋ ฅ ์ฌ ์ฌ์ฉ ๋๊ธฐ์๊ฐ&6 =--
Commands.Cooldowns.Row.N=\ &c{0}&f - &6{1}์ด ๋จ์
Commands.Cooldowns.Row.Y=\ &b{0}&f - &2์ค๋น!
Commands.Database.Cooldown=์ด ๋ช
๋ น์ด๋ฅผ ๋ค์ ์น๊ธฐ์ ์ 1์ด๋ฅผ ๊ธฐ๋ฌ๋ ค์ผ๋ง ํฉ๋๋ค.
-Commands.Database.Processing=๋น์ ์ ์ด์ ๋ช
๋ น์ด๋ ์ฌ์ ํ ์์
์ค์
๋๋ค. ๊ธฐ๋ค๋ ค์ฃผ์ธ์.
+Commands.Database.Processing=๋น์ ์ ์ด์ ๋ช
๋ น์ด๊ฐ ์ฌ์ ํ ์คํ ์ค์
๋๋ค. ๊ธฐ๋ค๋ ค์ฃผ์ธ์.
+Commands.Database.CooldownMS=์ด ๋ช
๋ น์ด๋ฅผ ๋ค์ ์ฌ์ฉํ๊ธฐ ์ ์ {0} ๋ฐ๋ฆฌ์ด๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
Commands.Disabled=์ด ๋ช
๋ น์ด๋ ๋นํ์ฑํ ๋์์ต๋๋ค.
-Commands.DoesNotExist= &cํ๋ ์ด์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ์ง ์์ต๋๋ค!
+Commands.DoesNotExist= &cํ๋ ์ด์ด๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ์ง ์์ต๋๋ค!
+Commands.AdminChatSpy.Enabled=mcMMO ํํฐ ์ฑํ
๊ฐ์๊ฐ ํ์ฑํ๋์์ต๋๋ค.
+Commands.AdminChatSpy.Disabled=mcMMO ํํฐ ์ฑํ
๊ฐ์๊ฐ ๋นํ์ฑํ๋์์ต๋๋ค.
+Commands.AdminChatSpy.Toggle=mcMMO ํํฐ ์ฑํ
๊ฐ์๊ฐ &e{0}&6๋์ ์ํด ํ ๊ธ๋์์ต๋๋ค.
+Commands.AdminChatSpy.Chat=&6[๊ฐ์: &a{0}&6] &f{1}
Commands.GodMode.Disabled=mcMMO ๋ถ์ฌ์ ๋ชจ๋ ๋นํ์ฑํ
Commands.GodMode.Enabled=mcMMO ๋ถ์ฌ์ ๋ชจ๋ ํ์ฑํ
-Commands.GodMode.Forbidden=[mcMMO] ์ด ์๋์์ ๋ถ์ฌ์ ๋ชจ๋๋ ํ์ฉ ๊ธ์ง์
๋๋ค (ํ๋ฏธ์ ํ์ธ)
+Commands.GodMode.Forbidden=[mcMMO] ์ด ์๋์์ ๋ถ์ฌ์ ๋ชจ๋๋ ํ์ฉ ๊ธ์ง์
๋๋ค (ํ๋ฏธ์
์ ํ์ธํ์ธ์)
Commands.GodMode.Toggle=๋ถ์ฌ์ ๋ชจ๋๋ &e{0}&f(์ผ)๋ก ์ ํ๋์์ต๋๋ค
Commands.Healthbars.Changed.HEARTS=[mcMMO] ๋น์ ์ ์ฒด๋ ฅ๋ฐ ๋ณด๊ธฐ ๋ฐฉ์์ &cํํธ&f๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
Commands.Healthbars.Changed.BAR=[mcMMO] ๋น์ ์ ์ฒด๋ ฅ๋ฐ ๋ณด๊ธฐ ๋ฐฉ์์ &e๋ฐ์ค&f๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
@@ -497,7 +738,7 @@ Commands.NoConsole=์ด ๋ช
๋ น์ด๋ ์ฝ์์์์ ์ฌ์ฉ์ ์ง์ํ์ง ์
Commands.Notifications.Off=๋ฅ๋ ฅ ์๋ฆผ์ด &c์ผ์ก์ต๋๋ค
Commands.Notifications.On=๋ฅ๋ ฅ ์๋ฆผ์ด &a๊บผ์ก์ต๋๋ค
Commands.Offline=์ด ๋ช
๋ น์ด๋ ์คํ๋ผ์ธ ํ๋ ์ด์ด์๊ฒ ๋์ํ์ง ์์ต๋๋ค.
-Commands.NotLoaded=ํ๋ ์ด์ด ํ๋กํ์ผ์ ๋ถ๋ฌ์์ง์ง ์์์ต๋๋คPlayer profile is not loaded yet.
+Commands.NotLoaded=ํ๋ ์ด์ด ํ๋กํ์ผ์ ์์ง ๋ถ๋ฌ์ค์ง ๋ชปํ์ต๋๋ค.
Commands.Other=---[]&a๊ธฐํ ๋ช
๋ น์ด&c[]---
Commands.Party.Header=-----[]&aํํฐ&c[]-----
Commands.Party.Features.Header=-----[]&aํน์ง&c[]-----
@@ -568,6 +809,7 @@ Commands.Scoreboard.Help.3=&3/mcscoreboard&b time [n] &f - McMMO ์ ์ํ์ &d
Commands.Scoreboard.Tip.Keep=&6ํ: &c/mcscoreboard keep&6 ์ ์ํ์ ๋ณด์ด๊ฒ ํญ์ ์ ์ง.
Commands.Scoreboard.Tip.Clear=&6ํ: &c/mcscoreboard clear&6 ์ ์ํ ๊ฐ์ถค.
Commands.Skill.Invalid=์๋ชป๋ ์คํฌ ์ด๋ฆ ์
๋๋ค!
+Commands.Skill.ChildSkill=์ด ๋ช
๋ น์ด์๋ ๋ถ๊ฐ ์คํฌ์ ์ฌ์ฉํ ์ ์์ต๋๋ค!
Commands.Skill.Leaderboard=--mcMMO &9{0}&e ์ ์ํ--
Commands.SkillInfo=&a- ์คํฌ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ๋ด
๋๋ค
Commands.Stats.Self=๋น์ ์ ํต๊ณ
@@ -577,6 +819,7 @@ Commands.Usage.0=์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ /{0}
Commands.Usage.1=์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ /{0} {1}
Commands.Usage.2=์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ /{0} {1} {2}
Commands.Usage.3=์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ /{0} {1} {2} {3}
+Commands.Usage.3.XP=&c์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ์ /{0} {1} {2} {3}&7์
๋๋ค (๋ช
๋ น์ด๋ฅผ ์คํํ ํ๋ ์ด์ด์๊ฒ ์๋ฆฌ์ง ์๊ณ ์คํํ๋ ค๋ฉด ๋์ -s๋ฅผ ํฌํจ์ํฌ ์ ์์ต๋๋ค)
Commands.Usage.FullClassName=ํด๋ ์ค์ด๋ฆ
Commands.Usage.Level=๋ ๋ฒจ
Commands.Usage.Message=๋ฉ์ธ์ง
@@ -586,13 +829,28 @@ Commands.Usage.Password=๋น๋ฐ๋ฒํธ
Commands.Usage.Player=ํ๋ ์ด์ด
Commands.Usage.Rate=๋ฐฐ์จ
Commands.Usage.Skill=์คํฌ
+Commands.Usage.SubSkill=๋ถ๊ฐ ์คํฌ
Commands.Usage.XP=xp
+Commands.XPBar.Reset=&6mcMMO์ XP ๋ฐ ์ค์ ์ด ์ด๊ธฐํ๋์์ต๋๋ค.
+Commands.XPBar.SettingChanged=&6{0}&6์ XP ๋ฐ ์ค์ ์ด &a{1}&6๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
+Commands.Description.mmoinfo=์คํฌ ๋๋ ๋ฉ์ปค๋์ฆ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ฝ์ต๋๋ค.
+Commands.MmoInfo.Mystery=&7์์ง ์ด ์คํฌ์ ํด๊ธํ์ง ์์์ง๋ง, ํด๊ธํ๋ฉด ์ฌ๊ธฐ์์ ์์ธํ ์ ๋ณด๋ฅผ ์ฝ์ ์ ์์ต๋๋ค!
+Commands.MmoInfo.NoMatch=ํด๋น ๋ถ๊ฐ ์คํฌ์ด ์กด์ฌํ์ง ์์ต๋๋ค!
+Commands.MmoInfo.Header=&3-=[]=====[]&6 MMO ์ ๋ณด &3[]=====[]=-
+Commands.MmoInfo.SubSkillHeader=&6์ด๋ฆ:&e {0}
+Commands.MmoInfo.DetailsHeader=&3-=[]=====[]&a ์์ธํ ๋ด์ฉ &3[]=====[]=-
+Commands.MmoInfo.OldSkill=&7mcMMO ์คํฌ์ ๊ฐ์ ๋ ๋ชจ๋์ ์คํฌ ์์คํ
์ผ๋ก ๋ณํ๋๊ณ ์์ต๋๋ค. ๋ถํํ๋ ์ด ์คํฌ์ ์์ง ๋ณํ๋์ง ์์์ผ๋ฉฐ ์์ธํ ํต๊ณ๊ฐ ์์ต๋๋ค. ์๋ก์ด ์์คํ
์ ์๋ก์ด mcMMO ์คํฌ์ ๋ ๋น ๋ฅด๊ฒ ์ถ์ํ๊ณ ๊ธฐ์กด ์คํฌ์ ๋ํ ์ ์ฐ์ฑ์ ๋์ผ ์ ์๊ฒ ํด์ค๋๋ค.
+Commands.MmoInfo.Mechanics=&3-=[]=====[]&6 ๋ฉ์ปค๋์ฆ &3[]=====[]=-
+Commands.MmoInfo.Stats=ํต๊ณ: {0}
+Commands.Mmodebug.Toggle=mcMMO ๋๋ฒ๊ทธ ๋ชจ๋๊ฐ &6{0}&7๋์์ต๋๋ค. ๋๋ฒ๊ทธ ๋ชจ๋๋ฅผ ํ์ฑํํ๋ฉด ์ง์์ ์ํด ์ ์ฉํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ๋ธ๋ก์ ํด๋ฆญํ ์ ์์ต๋๋ค.
mcMMO.NoInvites=์ด ์๊ฐ์ ๋น์ ์ ์ด๋ํ์ง ๋ชปํฉ๋๋ค
mcMMO.NoPermission=&4๊ถํ์ด ๋ถ์กฑํฉ๋๋ค.
mcMMO.NoSkillNote=&8๋ง์ฝ ๋น์ ์ด ์คํฌ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ฌ๊ธฐ์ ํ์๋์ง ์์ต๋๋ค.
+
+
##party
-Party.Forbidden=[mcMMO] ์ด ์๋์์ ํํฐ๋ฅผ ํ์ค ์ ์์ต๋๋ค (ํ๋ฏธ์ ํ์ธ)
+Party.Forbidden=[mcMMO] ์ด ์๋์์ ํํฐ๋ฅผ ํ์ค ์ ์์ต๋๋ค (ํ๋ฏธ์
์ ํ์ธํ์ธ์)
Party.Help.0=์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ &3{0} <ํ๋ ์ด์ด> [๋น๋ฐ๋ฒํธ].
Party.Help.1=ํํฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด, &3{0} <์ด๋ฆ> [๋น๋ฐ๋ฒํธ].
Party.Help.2=ํํฐ ์ ๋ณด๋ฅผ ๋ณผ๋ ค๋ฉด &3{0}
@@ -694,14 +952,22 @@ Commands.xprate.proper.2=์ด๊ฒ์ XP ์ด๋ฒคํธ์ธ์ง ์๋์ง true ๋๋ fals
Commands.xprate.started.0=&6mcMMO ๊ฒฝํ์น ์ด๋ฒคํธ๊ฐ ์์๋์์ต๋๋ค!
Commands.xprate.started.1=&6mcMMO ๊ฒฝํ์น ๋ฐฐ์จ์ {0}๋ฐฐ ์
๋๋ค!
XPRate.Event= &6mcMMO ๋ ํ์ฌ ๊ฒฝํ์น ์ด๋ฒคํธ ์ค์
๋๋ค! ๊ฒฝํ์น๋ {0}๋ฐฐ ์
๋๋ค!
+Commands.NegativeNumberWarn=๋ง์ด๋์ค ์ซ์๋ ํ์ฉ๋์ง ์์ต๋๋ค!
+Commands.Event.Start=&amcMMO&6 ์ด๋ฒคํธ ์์!
+Commands.Event.Stop=&amcMMO&3 ์ด๋ฒคํธ ์ข
๋ฃ!
+Commands.Event.Stop.Subtitle=&a์ฆ๊ฑฐ์ด ์๊ฐ์ด์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
+Commands.Event.XP=&3XP ๋ฐฐ์จ์ด ์ด์ &6{0}&3๋ฐฐ์
๋๋ค
+Commands.xprate.started.0=&6mcMMO XP ์ด๋ฒคํธ๊ฐ ์์๋์์ต๋๋ค!
+Commands.xprate.started.1=&6mcMMO XP ๋ฐฐ์จ์ ์ด์ {0}๋ฐฐ์
๋๋ค!
-#EFFECTS
-##generic
-Effects.Effects=ํจ๊ณผ
-Effects.Child=&8LVL: &a{0}
-Effects.Level=&8LVL: &a{0} &3XP&e(&6{1}&e/&6{2}&e)
-Effects.Parent= &6{0} -
-Effects.Template=&3{0}: &a{1}
+# Admin Notifications
+Server.ConsoleName=&e[์๋ฒ]
+Notifications.Admin.XPRate.Start.Self=&7์ ์ฒด XP ๋ฐฐ์จ์ &6{0}๋ฐฐ๋ก ์ค์ ํ์ต๋๋ค.
+Notifications.Admin.XPRate.End.Self=&7XP ๋ฐฐ์จ ์ด๋ฒคํธ๋ฅผ ์ข
๋ฃํ์ต๋๋ค.
+Notifications.Admin.XPRate.End.Others={0} &7๋์ด XP ๋ฐฐ์จ ์ด๋ฒคํธ๋ฅผ ์ข
๋ฃํ์ต๋๋ค.
+Notifications.Admin.XPRate.Start.Others={0} &7๋์ด ์ ์ฒด XP ๋ฐฐ์จ {1}๋ฐฐ๋ก ์ด๋ฒคํธ๋ฅผ ์์ ๋๋ ์์ ํ์ต๋๋ค.
+Notifications.Admin.Format.Others=&6(&amcMMO &3๊ด๋ฆฌ์&6) &7{0}
+Notifications.Admin.Format.Self=&6(&amcMMO&6) &7{0}
#GUIDES
Guides.Available=&7{0} ๊ฐ์ด๋๊ฐ ์์ต๋๋ค - ํ์
/{1} ? [ํ์ด์ง]
@@ -711,148 +977,153 @@ Guides.Page.OutOfRange=๊ทธ ํ์ด์ง๋ ์กด์ฌํ์ง ์์ต๋๋ค, ์ค์ง ์ด {0
Guides.Usage= ์ฌ์ฉ๋ฒ /{0} ? [ํ์ด์ง]
##Acrobatics
-Guides.Acrobatics.Section.0=&3๊ณก์์ ๋ํ์ฌ:\n&e๊ณก์๋ mcMMO์ ์ฐ์ํ๊ฒ ์์ง์ด๋ ์์ ์
๋๋ค.\n&e์ ํฌ ํนํ์ ํ๊ฒฝ ์์ ํนํ๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.\n\n&3XP ์ป๊ธฐ:\n&e์ด ์คํฌ์ XP๋ฅผ ์ป์๋ ค๋ฉด ์ ํฌ๋ ์์กด์์ ํผํด๋ฅผ \n&e์
๋ ๋ํ์์ ์ฐฉ์ง ํ๋์ด ์๊ตฌ๋ฉ๋๋ค.
-Guides.Acrobatics.Section.1=&3์ด๋ป๊ฒ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํ๋์?\n&e๋น์ ์ด ๋ํ ํผํด๋ฅผ ๋ฐ์ ๋ ํผํด๋ฅผ ๋ฌดํจํํ \n&e์ง์์ ์ธ ๊ธฐํ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ์ญ๊ตฌ๋ฆฌ๊ธฐ ๋ฒํผ์ ๋๋ฅด๊ณ ์์ผ๋ฉด\n&e๋จ์ด์ง๋ ๋์ ๋๋ฐฐ์ ๊ธฐํ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.\n&eThis triggers a Graceful Roll instead of a standard one.\n&eGraceful Rolls are like regular rolls but are twice as likely to\n&eoccur and provide more damage safety than regular rolls.\n&eRolling chance is tied to your skill level
+Guides.Acrobatics.Section.0=&3๊ณก์์ ๋ํ์ฌ:\n&e๊ณก์๋ mcMMO์ ์ฐ์ํ๊ฒ ์์ง์ด๋ ์์ ์
๋๋ค.\n&e์ ํฌ ํนํ์ ํ๊ฒฝ ์์ ํนํ๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.\n\n&3XP ์ป๊ธฐ:\n&e์ด ์คํฌ์ XP๋ฅผ ์ป์๋ ค๋ฉด ์ ํฌ๋ ์์กด์์ ํผํด๋ฅผ \n&e์
๋ ๋ํ์์ ์ฐฉ์ง ํ๋์ด ์๊ตฌ๋ฉ๋๋ค.
+Guides.Acrobatics.Section.1=&3์ด๋ป๊ฒ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํ๋์?\n&e๋น์ ์ด ๋ํ ํผํด๋ฅผ ๋ฐ์ ๋ ํผํด๋ฅผ ๋ฌดํจํํ \n&e์ง์์ ์ธ ๊ธฐํ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ์
ํฌ๋ฆฌ๊ธฐ ํค๋ฅผ ๋๋ฅด๊ณ ์์ผ๋ฉด\n&e๋จ์ด์ง๋ ๋์ ๋ ๋ฐฐ์ ๊ธฐํ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.\n&e์ด๋ ์ผ๋ฐ ๊ตฌ๋ฅด๊ธฐ ๋์ ์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ๋ฐ๋์ํต๋๋ค.\n&e์ฐ์ํ ๊ตฌ๋ฅด๊ธฐ๋ ์ผ๋ฐ ๊ตฌ๋ฅด๊ธฐ๋ณด๋ค ๋ ๋ฐฐ ๋ ์์ฃผ ๋ฐ๋๋๋ฉฐ\n&e์ผ๋ฐ ๊ตฌ๋ฅด๊ธฐ๋ณด๋ค ๋ ๋ง์ ํผํด ๋ฐฉ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.\n&e๊ตฌ๋ฅด๊ธฐ ํ๋ฅ ์ ์คํฌ ๋ ๋ฒจ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
Guides.Acrobatics.Section.2=&3์ด๋ป๊ฒ ํํผ๋ฅผ ํ๋์?\n&eํํผ๋ ๋น์ ์ด ์ ํฌ์์ ์์ฒ๋ฅผ ์
์ ๋ ์
๋\n&eํผํด๋ฅผ ๋ฐ๊ฐ์ํค๋ ์ง์์ ์ธ ๊ธฐํ์
๋๋ค.\n&e์ด๊ฒ์ ๋น์ ์ ์คํฌ ๋ ๋ฒจ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค.
##Alchemy
-Guides.Alchemy.Section.0=&3About Alchemy:\n&eAlchemy is about brewing potions.\n&eIt provides a speed increase in the potion brew time, as well\n&eas the addition of new (previously) unobtainable potions.\n\n\n&3XP GAIN:\n&eTo gain XP in this skill you need to brew potions.
-Guides.Alchemy.Section.1=&3How does Catalysis work?\n&eCatalysis speeds of the brewing process, with a\n&emax speed of 4x at level 1000.\n&eThis ability is unlocked at level 100 by default.
-Guides.Alchemy.Section.2=&3How does Concoctions work?\n&eConcoctions allows brewing of more potions with custom ingredients.\n&eWhich special ingredients are unlocked is determined\n&eby your Rank. There are 8 ranks to unlock.
-Guides.Alchemy.Section.3=&3Concoctions tier 1 ingredients:\n&eBlaze Powder, Fermented Spider Eye, Ghast Tear, Redstone,\n&eGlowstone Dust, Sugar, Glistering Melon, Golden Carrot,\n&eMagma Cream, Nether Wart, Spider Eye, Suplhur, Water Lily,\n&ePufferfish\n&e(Vanilla Potions)
-Guides.Alchemy.Section.4=&3Concoctions tier 2 ingredients:\n&eCarrot (Potion of Haste)\n&eSlimeball (Potion of Dullness)\n\n&3Concoctions tier 3 ingredients:\n&eQuartz (Potion of Absorption)\n&eRed Mushroom (Potion of Leaping)
-Guides.Alchemy.Section.5=&3Concoctions tier 4 ingredients:\n&eApple (Potion of Health Boost)\n&eRotten Flesh (Potion of Hunger)\n\n&3Concoctions tier 5 ingredients:\n&eBrown Mushroom (Potion of Nausea)\n&eInk Sack (Potion of Blindness)
-Guides.Alchemy.Section.6=&3Concoctions tier 6 ingredients:\n&eFern (Potion of Saturation)\n\n&3Concoctions tier 7 ingredients:\n&ePoisonous Potato (Potion of Decay)\n\n&3Concoctions tier 8 ingredients:\n&eRegular Golden Apple (Potion of Resistance)
+Guides.Alchemy.Section.0=[[DARK_AQUA]]์ฐ๊ธ์ ์ ๋ํ์ฌ:\n[[YELLOW]]์ฐ๊ธ์ ์ ๋ฌผ์ฝ์ ์์กฐํ๋ ๊ฒ์
๋๋ค.\n[[YELLOW]]๋ฌผ์ฝ ์์กฐ ์๊ฐ์ ๋น ๋ฅด๊ฒ ํ๊ณ , ์ด์ ์ ์ป์ ์ ์์๋\n[[YELLOW]]์๋ก์ด ๋ฌผ์ฝ์ ์ถ๊ฐํฉ๋๋ค.\n\n\n[[DARK_AQUA]]XP ํ๋:\n[[YELLOW]]์ด ์คํฌ์์ XP๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ฌผ์ฝ์ ์์กฐํด์ผ ํฉ๋๋ค.
+Guides.Alchemy.Section.1=[[DARK_AQUA]]Catalysis๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n[[YELLOW]]Catalysis๋ ์์กฐ ๊ณผ์ ์ ๊ฐ์ํ์ํค๋ฉฐ, ์ต๋\n[[YELLOW]]์๋๋ ๊ธฐ๋ณธ ์ค์ ์์ ๋ ๋ฒจ 1000์์ 4๋ฐฐ์
๋๋ค.\n[[YELLOW]]์ด ๋ฅ๋ ฅ์ ๊ธฐ๋ณธ ์ค์ ์์ ๋ ๋ฒจ 100์์ ์ ๊ธ ํด์ ๋ฉ๋๋ค.
+Guides.Alchemy.Section.2=[[DARK_AQUA]]Concoctions๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n[[YELLOW]]Concoctions๋ ์ฌ์ฉ์ ์ ์ ์ฌ๋ฃ๋ก ๋ ๋ง์ ๋ฌผ์ฝ์ ์์กฐํ ์ ์๊ฒ ํฉ๋๋ค.\n[[YELLOW]]์ ๊ธ ํด์ ๋๋ ํน๋ณํ ์ฌ๋ฃ๋ ๋ฑ๊ธ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค.\n[[YELLOW]]์ ๊ธ ํด์ ํ ์ ์๋ ๋ฑ๊ธ์ ์ด 8๊ฐ์
๋๋ค.
+Guides.Alchemy.Section.3=[[DARK_AQUA]]Concoctions 1๋จ๊ณ ์ฌ๋ฃ:\n[[YELLOW]]๋ธ๋ ์ด์ฆ ๊ฐ๋ฃจ, ๋ฐํจ๋ ๊ฑฐ๋ฏธ ๋, ๊ฐ์คํธ ๋๋ฌผ, ๋ ๋์คํค,\n[[YELLOW]]๋ฐ๊ด์ ๊ฐ๋ฃจ, ์คํ, ๋ฐ์ง์ด๋ ์๋ฐ ์กฐ๊ฐ, ํฉ๊ธ ๋น๊ทผ,\n[[YELLOW]]๋ง๊ทธ๋ง ํฌ๋ฆผ, ๋ค๋ ์ฌ๋ง๊ท, ๊ฑฐ๋ฏธ ๋, ์ํํ๋ฅด, ์ํฐ ๋ฆด๋ฆฌ,\n[[YELLOW]]๋ณต์ด\n[[YELLOW]](๋ฐ๋๋ผ ๋ฌผ์ฝ)
+Guides.Alchemy.Section.4=[[DARK_AQUA]]Concoctions 2๋จ๊ณ ์ฌ๋ฃ:\n[[YELLOW]]๋น๊ทผ (์ ์์ ๋ฌผ์ฝ)\n[[YELLOW]]์ฌ๋ผ์๋ณผ (์ฑ๊ตด ํผ๋ก์ ๋ฌผ์ฝ)\n\n[[DARK_AQUA]]Concoctions 3๋จ๊ณ ์ฌ๋ฃ:\n[[YELLOW]]์์ (ํก์์ ๋ฌผ์ฝ)\n[[YELLOW]]ํ ๋ผ ๋ฐ (๋์ฝ์ ๋ฌผ์ฝ)
+Guides.Alchemy.Section.5=[[DARK_AQUA]]Concoctions 4๋จ๊ณ ์ฌ๋ฃ:\n[[YELLOW]]์ฌ๊ณผ (์๋ช
๋ ฅ ๊ฐํ์ ๋ฌผ์ฝ)\n[[YELLOW]]์ฉ์ ๊ณ ๊ธฐ (ํ๊ธฐ์ ๋ฌผ์ฝ)\n\n[[DARK_AQUA]]Concoctions 5๋จ๊ณ ์ฌ๋ฃ:\n[[YELLOW]]๊ฐ์ ๋ฒ์ฏ (๋ฉ๋ฏธ์ ๋ฌผ์ฝ)\n[[YELLOW]]์ํฌ ์ฃผ๋จธ๋ (์ค๋ช
์ ๋ฌผ์ฝ)
+Guides.Alchemy.Section.6=[[DARK_AQUA]]Concoctions 6๋จ๊ณ ์ฌ๋ฃ:\n[[YELLOW]]๊ณ ์ฌ๋ฆฌ (ํฌํ์ ๋ฌผ์ฝ)\n\n[[DARK_AQUA]]Concoctions 7๋จ๊ณ ์ฌ๋ฃ:\n[[YELLOW]]๋
์ด ์๋ ๊ฐ์ (๋ถํจ์ ๋ฌผ์ฝ)\n\n[[DARK_AQUA]]Concoctions 8๋จ๊ณ ์ฌ๋ฃ:\n[[YELLOW]]์ผ๋ฐ ํฉ๊ธ ์ฌ๊ณผ (์ ํญ์ ๋ฌผ์ฝ)
##Archery
-Guides.Archery.Section.0=&3๊ถ์ ์ ๋ํ์ฌ:\n&e๊ถ์ ์ ํ๊ณผ ํ์ด๋ก ์๋ ๊ฒ์ ๋ปํฉ๋๋ค.\n&e๊ถ์ ์ PVP์์ ๋น์ ์ด ์ ์ ํํน์ํค๋ ๋ฅ๋ ฅ๊ณผ\n&e๋ ๋ฒจ ํฌ๊ธฐ์ ๋ฐ๋ฏธ์ง ๋ถ์คํฐ๋ฅผ ๊ฐ์ ๊ฒ์ผ๋ก\n&e์ ํฌ ๋ณด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. In addition to this, you can retrieve\n&esome of your spent arrows from the corpses of your foes.\n\n\n&3XP GAIN:\n&eTo gain XP in this skill you need to shoot mobs or\n&eother players.
-Guides.Archery.Section.1=&3How does Skill Shot work?\n&eSkill Shot provides additional damage to your shots.\n&eThe bonus damage from Skill Shot increases as you\n&elevel in Archery.\n&eWith the default settings, your archery damage increases 10%\n&eevery 50 levels, to a maximum of 200% bonus damage.
-Guides.Archery.Section.2=&3How does Daze work?\n&eYou have a passive chance to daze other players when\n&eyou shoot them. When Daze triggers it forces your opponents\n&eto look straight up for a short duration.\n&eA Daze shot also deals an additional 4 damage (2 hearts).
-Guides.Archery.Section.3=&3How does Arrow Retrieval work?\n&eYou have a passive chance to retrieve some of your arrows\n&ewhen you kill a mob with your bow.\n&eThis chance increases as you level in Archery.\n&eBy default, this ability increases by 0.1% per level, up to 100%\n&eat level 1000.
+Guides.Archery.Section.0=&3๊ถ์ ์ ๋ํ์ฌ:\n&e๊ถ์ ์ ํ๊ณผ ํ์ด๋ก ์ฌ๊ฒฉํ๋ ๊ฒ์
๋๋ค.\n&e๋ ๋ฒจ์ ๋ฐ๋ผ ์ฆ๊ฐํ๋ ๋ฐ๋ฏธ์ง ๋ณด๋์ค์ PvP์์ ์๋๋ฅผ\n&eํผ๋์ํค๋ ๋ฅ๋ ฅ๊ณผ ๊ฐ์ ๋ค์ํ ์ ํฌ ๋ณด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.\n&e๋ํ, ์๋์ ์์ฒด์์ ์ฌ์ฉํ ํ์ด์ ์ผ๋ถ ํ์ํ ์ ์์ต๋๋ค.\n\n\n&3XP ํ๋:\n&e์ด ์คํฌ์์ XP๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ชน์ด๋ ๋ค๋ฅธ ํ๋ ์ด์ด๋ฅผ\n&e์ด์ ๋ง์ถฐ์ผ ํฉ๋๋ค.
+Guides.Archery.Section.1=&3Skill Shot์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&eSkill Shot์ ์ฌ๊ฒฉ์ ์ถ๊ฐ ๋ฐ๋ฏธ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.\n&eSkill Shot์ ๋ณด๋์ค ๋ฐ๋ฏธ์ง๋ ๊ถ์ ๋ ๋ฒจ์ ๋ฐ๋ผ\n&e์ฆ๊ฐํฉ๋๋ค.\n&e๊ธฐ๋ณธ ์ค์ ์์ Archery ๋ ๋ฒจ๋น ํ ๋ฐ๋ฏธ์ง๊ฐ 50 ๋ ๋ฒจ๋ง๋ค\n&e10% ์ฆ๊ฐํ์ฌ ์ต๋ 200%์ ๋ณด๋์ค ๋ฐ๋ฏธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค.
+Guides.Archery.Section.2=&3Daze๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์๋๋ฅผ ์ฌ๊ฒฉํ ๋ ์๋๋ฅผ ํผ๋์ํค๋ ํ๋ฅ ์ด ์์ต๋๋ค.\n&eDaze๊ฐ ๋ฐ๋๋๋ฉด ์๋๋ ์ ์ ๋์ ์๋ฅผ ๋ฐ๋ผ๋ณด๊ฒ ๋ฉ๋๋ค.\n&eDaze ์ฌ๊ฒฉ์ ์ถ๊ฐ๋ก 4์ ๋ฐ๋ฏธ์ง(2 ํํธ)๋ฅผ ์
ํ๋๋ค.
+Guides.Archery.Section.3=&3Arrow Retrieval์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&eํ๋ก ๋ชน์ ์ฒ์นํ ๋ ์ผ๋ถ ํ์ด์ ํ์ํ ์ ์๋\n&eํ๋ฅ ์ด ์์ต๋๋ค.\n&e์ด ํ๋ฅ ์ ๊ถ์ ๋ ๋ฒจ์ ๋ฐ๋ผ ์ฆ๊ฐํฉ๋๋ค.\n&e๊ธฐ๋ณธ ์ค์ ์์ ์ด ๋ฅ๋ ฅ์ ๋ ๋ฒจ๋น 0.1%์ฉ ์ฆ๊ฐํ์ฌ\n&e๋ ๋ฒจ 1000์์ 100%๊น์ง ์ฆ๊ฐํฉ๋๋ค.
##Axes
-Guides.Axes.Section.0=&3About Axes:\n&eWith the Axes skill you can use your axe for much more then\n&ejust deforesting! You can hack and chop away at mobs\n&eand players to gain XP, hitting mobs with the effect of\n&eknockback and inflicting DEADLY criticals on mobs and players.\n&eYour axe also becomes a hand-held woodchipper,\n&ebreaking down the enemy's armor with ease as your level\n&eincreases.\n&3XP GAIN:\n&eTo gain XP in this skill you need hit other mobs or players\n&ewith an Axe.
-Guides.Axes.Section.1=&3How does Skull Splitter work?\n&eThis ability allows you to deal an AoE (Area of Effect) hit.\n&eThis AoE hit will deal half as much damage as you did to the\n&emain target, so it's great for clearing out large piles of mobs.
-Guides.Axes.Section.2=&3How does Critical Strikes work?\n&eCritical Strikes is a passive ability which gives players a\n&echance to deal additional damage.\n&eWith the default settings, every 2 skill levels in Axes awards a\n&e0.1% chance to deal a Critical Strike, causing 2.0 times damage\n&eto mobs or 1.5 times damage against other players.
-Guides.Axes.Section.3=&3How does Axe Mastery work?\n&eAxe Mastery is a passive ability that will add additional damage\n&eto your hits when using Axes.\n&eBy default, the bonus damage increases by 1 every 50 levels,\n&eup to a cap of 4 extra damage at level 200.
-Guides.Axes.Section.4=&3How does Armor Impact work?\n&eStrike with enough force to shatter armor!\n&eArmor Impact has a passive chance to damage your\n&eopponent's armor. This damage increases as you level in Axes.
-Guides.Axes.Section.5=&3How does Greater Impact work?\n&eYou have a passive chance to achieve a greater impact when\n&ehitting mobs or players with your axe.\n&eBy default this chance is 25%. This passive ability has an\n&eextreme knockback effect, similar to the Knockback II\n&eenchantment. In addition, it deals bonus damage to the target.
+Guides.Axes.Section.0=&3๋ถ์ ์ ๋ํ์ฌ:\n&e๋ถ์ ์คํฌ์ ์ฌ์ฉํ์ฌ ๋๋ผ๋ก ๋๋ฌด๋ฅผ ๋ฒ ๋ ๊ฒ ์ด์์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.\n&e๋ถ์ ์คํฌ์ ์ฌ์ฉํ์ฌ ๋ชน๊ณผ ํ๋ ์ด์ด๋ฅผ ๊ณต๊ฒฉํ๊ณ ๊ฒฝํ์น๋ฅผ ์ป์ ์ ์์ผ๋ฉฐ,\n&e๋๋ฐฑ ํจ๊ณผ๋ก ๋ชน์๊ฒ ์น๋ช
์ ์ธ ์ผ๊ฒฉ์ ๊ฐํ ์ ์์ต๋๋ค.\n&e๋ํ, ๋ ๋ฒจ์ด ์ฌ๋ผ๊ฐ์ ๋ฐ๋ผ ์ ์ ๊ฐ์ท์ ์ฝ๊ฒ ํ๊ดดํ ์ ์๋\n&e์์ ๋ค๊ณ ์ฌ์ฉํ๋ ๋๋ฌด ๊ตด์ญ๊ธฐ๊ฐ ๋ฉ๋๋ค.\n&3XP ํ๋:\n&e์ด ์คํฌ์์ XP๋ฅผ ์ป์ผ๋ ค๋ฉด ๋๋ผ๋ก ๋ค๋ฅธ ๋ชน์ด๋ ํ๋ ์ด์ด๋ฅผ ๊ณต๊ฒฉํด์ผ ํฉ๋๋ค.
+Guides.Axes.Section.1=&3๋ผ ์ชผ๊ฐ๊ธฐ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ๋ฅ๋ ฅ์ ์ฌ์ฉํ๋ฉด AoE(์์ญ ํจ๊ณผ) ๊ณต๊ฒฉ์ ํ ์ ์์ต๋๋ค.\n&e์ด AoE ๊ณต๊ฒฉ์ ์ฃผ์ ๋์์ ๊ฐํ ๋ฐ๋ฏธ์ง์ ์ ๋ฐ๋งํผ์ ๋ฐ๋ฏธ์ง๋ฅผ ์
ํ๋๋ค.\n&e๋ฐ๋ผ์ ๋๋์ ๋ชน์ ์ ๊ฑฐํ๋ ๋ฐ์ ํจ๊ณผ์ ์
๋๋ค.
+Guides.Axes.Section.2=&3ํฌ๋ฆฌํฐ์ปฌ ํํธ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&eํฌ๋ฆฌํฐ์ปฌ ํํธ๋ ํ๋ ์ด์ด๊ฐ ์ถ๊ฐ ๋ฐ๋ฏธ์ง๋ฅผ ์
ํ ์ ์๋\n&eํ๋ฅ ์ ์ธ ๋ฅ๋ ฅ์
๋๋ค.\n&e๊ธฐ๋ณธ ์ค์ ์์, ๋ถ์ ์คํฌ ๋ ๋ฒจ 2๋ง๋ค 0.1%์ ํ๋ฅ ๋ก\n&eํฌ๋ฆฌํฐ์ปฌ ํํธ๋ฅผ ๊ฐํ ์ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ๋ชน์๊ฒ๋\n&e2๋ฐฐ์ ๋ฐ๋ฏธ์ง๋ฅผ, ๋ค๋ฅธ ํ๋ ์ด์ด์๊ฒ๋ 1.5๋ฐฐ์ ๋ฐ๋ฏธ์ง๋ฅผ ์
ํ๋๋ค.
+Guides.Axes.Section.3=&3๋๋ผ ๋ง์คํฐ๋ฆฌ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๋๋ผ ๋ง์คํฐ๋ฆฌ๋ ์ก์ค๋ฅผ ์ฌ์ฉํ ๋ ๊ณต๊ฒฉ์ ์ถ๊ฐ ๋ฐ๋ฏธ์ง๋ฅผ\n&e์ค๋๋ค.\n&e๊ธฐ๋ณธ ์ค์ ์์, ๋ณด๋์ค ๋ฐ๋ฏธ์ง๋ ๋ ๋ฒจ๋น 50๋ง๋ค 1์ฉ ์ฆ๊ฐํ๋ฉฐ,\n&e๋ ๋ฒจ 200์์ ์ต๋ 4์ ์ถ๊ฐ ๋ฐ๋ฏธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค.
+Guides.Axes.Section.4=&3๊ฐ์ท ์ถฉ๊ฒฉ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๊ฐ๋ ฅํ ํ์ผ๋ก ๊ฐ์ท์ ํ๊ดดํ์ธ์!\n&e๊ฐ์ท ์ถฉ๊ฒฉ๋ ์๋์ ๊ฐ์ท์ ์์์ํฌ ํ๋ฅ ์ด ์์ต๋๋ค.\n&e์ด ํ๋ฅ ์ ๋ถ์ ์คํฌ ๋ ๋ฒจ์ด ์ฌ๋ผ๊ฐ์ ๋ฐ๋ผ ์ฆ๊ฐํฉ๋๋ค.
+Guides.Axes.Section.5=&3์์ฒญ๋ ์ถฉ๊ฒฉ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๋ถ์ ์คํฌ๋ก ๋ชน์ด๋ ํ๋ ์ด์ด๋ฅผ ๊ณต๊ฒฉํ ๋\n&e๋ ํฐ ์ํฅ์ ์ค ํ๋ฅ ์ด ์์ต๋๋ค.\n&e๊ธฐ๋ณธ ์ค์ ์์ ์ด ํ๋ฅ ์ 25%์
๋๋ค.\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ๋๋ฐฑ II ๋ง๋ฒ๊ณผ ์ ์ฌํ\n&e์ธ์ฑํธ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋์์๊ฒ ์ถ๊ฐ ๋ฐ๋ฏธ์ง๋ฅผ ์
ํ๋๋ค.
##Excavation
-Guides.Excavation.Section.0=&3About Excavation:\n&eExcavation is the act of digging up dirt to find treasures.\n&eBy excavating the land you will find treasures.\n&eThe more you do this the more treasures you can find.\n\n&3XP GAIN:\n&eTo gain XP in this skill you must dig with a shovel in hand.\n&eOnly certain materials can be dug up for treasures and XP.
-Guides.Excavation.Section.1=&3Compatible Materials:\n&eGrass, Dirt, Sand, Clay, Gravel, Mycelium, Soul Sand, Snow
-Guides.Excavation.Section.2=&3How to use Giga Drill Breaker:\n&eWith a shovel in hand right click to ready your tool.\n&eOnce in this state you have about 4 seconds to make\n&econtact with Excavation compatible materials this will\n&eactivate Giga Drill Breaker.
-Guides.Excavation.Section.3=&3What is Giga Drill Breaker?\n&eGiga Drill Breaker is an ability with a cooldown\n&etied to Excavation skill. It triples your chance\n&eof finding treasures and enables instant break\n&eon Excavation materials.
-Guides.Excavation.Section.4=&3How does Treasure Hunter work?\n&eEvery possible treasure for Excavation has its own\n&eskill level requirement for it to drop, as a result it's\n&edifficult to say how much it is helping you.\n&eJust keep in mind that the higher your Excavation skill\n&eis, the more treasures that can be found.\n&eAnd also keep in mind that each type of Excavation\n&ecompatible material has its own unique list of treasures.\n&eIn other words you will find different treasures in Dirt\nðan you would in Gravel.
-Guides.Excavation.Section.5=&3Notes about Excavation:\n&eExcavation drops are completely customizeable\n&eSo results vary server to server.
+Guides.Excavation.Section.0=&3๋ฐ๊ตด์ ๋ํ์ฌ:\n&e๋ฐ๊ตด์ ๋ณด๋ฌผ์ ์ฐพ๊ธฐ ์ํด ํ์ ํ๋ด๋ ํ์์
๋๋ค.\n&e๋
์ ํ๋ด๋ฉด ๋ณด๋ฌผ์ ์ฐพ์ ์ ์์ต๋๋ค.\n&e์ด๋ฅผ ๊ณ์ํ๋ฉด ๋ ๋ง์ ๋ณด๋ฌผ์ ์ฐพ์ ์ ์์ต๋๋ค.\n\n&3XP ํ๋:\n&e์ด ์คํฌ์์ XP๋ฅผ ์ป์ผ๋ ค๋ฉด ์ฝ์ ๋ค๊ณ ํ์ผ ํฉ๋๋ค.\n&e์ผ๋ถ ์ฌ๋ฃ๋ง ๋ณด๋ฌผ๊ณผ XP๋ฅผ ์ป์ ์ ์์ต๋๋ค.
+Guides.Excavation.Section.1=&3ํธํ ๊ฐ๋ฅํ ์ฌ๋ฃ:\n&eํ, ํ, ๋ชจ๋, ์ ํ , ์๊ฐ, ๋ฒ์ฏ, ์ํผ ๋ชจ๋, ๋
+Guides.Excavation.Section.2=&3๊ธฐ๊ฐ ๋๋ฆด ๋ฒ์์ปค ์ฌ์ฉ ๋ฐฉ๋ฒ:\n&e์ฝ์ ๋ค๊ณ ์ฐํด๋ฆญํ์ฌ ๋๊ตฌ๋ฅผ ์ค๋นํฉ๋๋ค.\n&e์ด ์ํ์์ ์ฝ 4์ด ์์ ๋ฐ๊ตด ํธํ ๊ฐ๋ฅํ ์ฌ๋ฃ์\n&e์ ์ดํ๋ฉด ๊ธฐ๊ฐ ๋๋ฆด ๋ฒ์์ปค๊ฐ ํ์ฑํ๋ฉ๋๋ค.
+Guides.Excavation.Section.3=&3๊ธฐ๊ฐ ๋๋ฆด ๋ฒ์์ปค๋ ๋ฌด์์ธ๊ฐ์?\n&e๊ธฐ๊ฐ ๋๋ฆด ๋ฒ์์ปค๋ ๋ฐ๊ตด ์คํฌ๊ณผ ์ฐ๊ฒฐ๋ ์ฌ์ฌ์ฉ ๋๊ธฐ์๊ฐ์ด ์๋\n&e๋ฅ๋ ฅ์
๋๋ค. ์ด๋ ๋ณด๋ฌผ์ ์ฐพ์ ํ๋ฅ ์ ์ธ ๋ฐฐ๋ก ๋๋ฆฌ๊ณ \n&e๋ฐ๊ตด ์ฌ๋ฃ๋ฅผ ์ฆ์ ๋ถ์ ์ ์๊ฒ ํฉ๋๋ค.
+Guides.Excavation.Section.4=&3๊ณ ๊ณ ํ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๋ฐ๊ตด์ ์ํ ๊ฐ๋ฅํ ๋ชจ๋ ๋ณด๋ฌผ์ ๋จ์ด์ง๊ธฐ ์ํ\n&e์คํฌ ๋ ๋ฒจ ์๊ตฌ ์ฌํญ์ด ์์ผ๋ฏ๋ก, ์ผ๋ง๋ ๋์์ด ๋๋์ง\n&์ ํํ ๋งํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.\n&e๋จ์ง ๊ธฐ์ตํด ๋์ธ์. ๋ฐ๊ตด ์คํฌ์ด ๋์์๋ก\n&๋ ๋ง์ ๋ณด๋ฌผ์ ์ฐพ์ ์ ์์ต๋๋ค.\n&๋ํ, ๊ฐ๊ฐ์ ๋ฐ๊ตด ํธํ ๊ฐ๋ฅํ ์ฌ๋ฃ์๋ ๊ณ ์ ํ ๋ณด๋ฌผ ๋ชฉ๋ก์ด ์์ต๋๋ค.\n&๋ค์ ๋งํด, ํ์์ ์ฐพ๋ ๋ณด๋ฌผ๊ณผ ์๊ฐ์์ ์ฐพ๋ ๋ณด๋ฌผ์ ๋ค๋ฆ
๋๋ค.
+Guides.Excavation.Section.5=&3๋ฐ๊ตด์ ๋ํ ์ฐธ๊ณ ์ฌํญ:\n&e๋ฐ๊ตด ๋ณด์์ ์์ ํ ์ฌ์ฉ์ ์ ์ํ ์ ์์ผ๋ฏ๋ก\n&๊ฒฐ๊ณผ๋ ์๋ฒ๋ง๋ค ๋ค๋ฆ
๋๋ค.
##Fishing
-Guides.Fishing.Section.0=&3About Fishing:\n&eWith the Fishing skill, Fishing is exciting again!\n&eFind hidden treasures, and shake items off mobs.\n\n&3XP GAIN:\n&eCatch fish.
-Guides.Fishing.Section.1=&3How does Treasure Hunter work?\n&eThis ability allows you to find treasure from fishing \n&ewith a small chance of the items being enchanted.\n&eEvery possible treasure for Fishing has a chance\n&eto drop on any level. It depends however\n&ewhat the rarity of the item is how often it will drop.\n&eThe higher your Fishing skill is, the better\n&eyour chances are to find better treasures.
-Guides.Fishing.Section.2=&3How does Ice Fishing work?\n&eThis passive skill allows you to fish in ice lakes!\n&eCast your fishing rod in an ice lake and the ability will\n&ecreate a small hole in the ice to fish in.
-Guides.Fishing.Section.3=&3How does Master Angler work?\n&eThis passive skill increases the bite chance while fishing.\n&eWhen you've unlocked this ability, fishing while in\n&ea boat or when an ocean biome doubles the bite chance.
-Guides.Fishing.Section.4=&3How does Shake work?\n&eThis active ability allows you to shake items loose from mobs\n&eby hooking them with the fishing rod. \n&eMobs will drop items they would normally drop on death.\n&eIt is also possible to acquire mob skulls, which are normally \n&eunobtainable in survival mode.
-Guides.Fishing.Section.5=&3How does Fisherman's Diet work?\n&eThis passive skill increases the amount of hunger restored \n&efrom eating fish.
-Guides.Fishing.Section.6=&3Notes about Fishing:\n&eFishing drops are completely customizable,\n&eso results vary server to server.
+Guides.Fishing.Section.0=&3๋์์ ๋ํ์ฌ:\n&e๋์ ์คํฌ์ด ์๋ค๋ฉด ๋์๊ฐ ๋ค์ ์ฆ๊ฑฐ์์ง๋๋ค!\n&e์จ๊ฒจ์ง ๋ณด๋ฌผ์ ์ฐพ๊ณ ๋ชน์์ ์์ดํ
์ ๋จ์ด๋จ๋ฆฝ๋๋ค.\n\n&3XP ํ๋:\n&e๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋์์ ๊ฒฝํ์น๋ฅผ ์ป์ต๋๋ค.
+Guides.Fishing.Section.1=&3๋ณด๋ฌผ ์ฌ๋ฅ๊พผ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ๋ฅ๋ ฅ์ ์ฌ์ฉํ๋ฉด ๋์๋ก ๋ณด๋ฌผ์ ์ฐพ์ ์ ์์ต๋๋ค.\n&e์์ดํ
์ด ์ธ์ฑํธ๋ ์ํ๋ก ๋๋กญ๋ ์ ์๋ ์์ ํ๋ฅ ์ด ์์ต๋๋ค.\n&e๋์๋ก ์ป์ ์ ์๋ ๋ชจ๋ ๋ณด๋ฌผ์ ์ด๋ค ๋ ๋ฒจ์์๋ ๋๋กญ๋ ์ ์์ต๋๋ค.\n&e๊ทธ๋ฌ๋ ์์ดํ
์ ํฌ๊ท๋์ ๋ฐ๋ผ ์ผ๋ง๋ ์์ฃผ ๋๋กญ๋๋์ง๊ฐ ๋ฌ๋ผ์ง๋๋ค.\n&e๋์ ์คํฌ์ด ๋์์๋ก ๋ ์ข์ ๋ณด๋ฌผ์ ์ฐพ์ ํ๋ฅ ์ด ๋์์ง๋๋ค.
+Guides.Fishing.Section.2=&3์ผ์ ๋์๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ์คํฌ์ ์ฌ์ฉํ๋ฉด ์ผ์ ํธ์์์ ๋์๋ฅผ ํ ์ ์์ต๋๋ค!\n&e๋์ฏ๋๋ฅผ ์ผ์ ํธ์์ ๋์ง๋ฉด ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋์ ์ ์๋ ์์ ๊ตฌ๋ฉ์ด ์์ฑ๋ฉ๋๋ค.
+Guides.Fishing.Section.3=&3๋์๊พผ ์ฅ์ธ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ์คํฌ์ ๋์ํ ๋ ๋ฌผ๊ณ ๊ธฐ๊ฐ ๋ฌผ์ ๋ฌผ๋ฆด ํ๋ฅ ์ ์ฆ๊ฐ์ํต๋๋ค.\n&e์ด ๋ฅ๋ ฅ์ ์ ๊ธ ํด์ ํ๋ฉด ๋ณดํธ์์ ๋์ํ ๋\n&e๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ก์ ํ๋ฅ ์ด ๋์์ง๋๋ค.
+Guides.Fishing.Section.4=&3ํ๋ค๊ธฐ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ์กํฐ๋ธ ๋ฅ๋ ฅ์ ์ฌ์ฉํ๋ฉด ๋์ฏ๋๋ก ๋ชน์๊ฒ์ ์์ดํ
์ ํ๋ค์ด ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค.\n&e๋ชน์ ์ผ๋ฐ์ ์ผ๋ก ์ฃฝ์ ๋ ๋จ์ด๋จ๋ฆฌ๋ ์์ดํ
์ ๋๋กญํฉ๋๋ค.\n&e๋ํ, ์๋ฐ์ด๋ฒ ๋ชจ๋์์๋ ์ป์ ์ ์๋ ๋ชน ๋จธ๋ฆฌ๋ฅผ ํ๋ํ ์๋ ์์ต๋๋ค.
+Guides.Fishing.Section.5=&3์ด๋ถ์ ๋ค์ด์ดํธ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ์คํฌ์ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋จน์ ๋ ํ๋ณต๋๋ ํฌ๋ง๊ฐ์ ์ฆ๊ฐ์ํต๋๋ค.
+Guides.Fishing.Section.6=&3๋์์ ๋ํ ์ฐธ๊ณ ์ฌํญ:\n&e๋์ ์์ดํ
์ ์์ ํ ์ฌ์ฉ์ ์ ์ํ ์ ์์ผ๋ฏ๋ก\n&๊ฒฐ๊ณผ๋ ์๋ฒ๋ง๋ค ๋ค๋ฆ
๋๋ค.
##Herbalism
-Guides.Herbalism.Section.0=&3About Herbalism:\n&eHerbalism is about collecting herbs and plants.\n\n\n&3XP GAIN:\n&eCollect plants and herbs.
-Guides.Herbalism.Section.1=&3Compatible Blocks\n&eWheat, Potatoes, Carrots, Melons, \n&ePumpkins, Sugar Canes, Cocoa Beans, Flowers, Cacti, Mushrooms,\n&eNether Wart, Lily Pads, and Vines.
-Guides.Herbalism.Section.2=&3How does Green Terra work?\n&eGreen Terra is an active ability, you can right-click\n&ewhile holding a hoe to activate Green Terra.\n&eGreen Terra grants players a chance to get 3x drops from\n&eharvesting plants. It also gives players the ability to\n&espread life into blocks and transform them using seeds\n&efrom your inventory.
-Guides.Herbalism.Section.3=&3How does Green Thumb (Crops) work?\n&eThis passive ability will automatically replant crops when\n&eharvesting.\n&eYour chance of success depends on your Herbalism skill.
-Guides.Herbalism.Section.4=&3How does Green Thumb (Cobble/Stone Brick/Dirt) work?\n&eThis active ability allows you to turn blocks into their\n&e"plant-related" counterparts. You can do this by right-clicking\n&ea block, while holding seeds. This will consume 1 seed.
-Guides.Herbalism.Section.5=&3How does Farmer's Diet work?\n&eThis passive skill increases the amount of hunger restored \n&ewhen eating Bread, Cookies, Melons, Mushroom Soup, Carrots,\n&eand Potatoes.
-Guides.Herbalism.Section.6=&3How does Hylian Luck work?\n&eThis passive ability gives you a chance to find rare items\n&ewhen certain blocks are broken with a sword.
-Guides.Herbalism.Section.7=&3How do Double Drops work?\n&eThis passive ability gives players more yield from their\n&eharvests.
+Guides.Herbalism.Section.0=&3์ฝ์ดํ์ ๋ํ์ฌ:\n&e์ฝ์ดํ์ ํ๋ธ์ ์๋ฌผ์ ์์งํ๋ ๊ฒ์ ๊ดํ ์คํฌ์
๋๋ค.\n\n\n&3XP ํ๋:\n&e์๋ฌผ๊ณผ ํ๋ธ๋ฅผ ์์งํ์ธ์.
+Guides.Herbalism.Section.1=&3ํธํ ๊ฐ๋ฅํ ๋ธ๋ก:\n&e๋ฐ, ๊ฐ์, ๋น๊ทผ, ์๋ฐ, \n&eํธ๋ฐ, ์ฌํ์์, ์ฝ์ฝ์ ์ฝฉ, ๊ฝ, ์ ์ธ์ฅ, ๋ฒ์ฏ,\n&e๋ค๋ ์ฌ๋ง๊ท, ์๋ฐ, ๋ฉ๊ตด.
+Guides.Herbalism.Section.2=&3์ฌ๋ฐฐ์ ๋์ง๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ฌ๋ฐฐ์ ๋์ง๋ ์กํฐ๋ธ ๋ฅ๋ ฅ์ผ๋ก, ๊ดญ์ด๋ฅผ ๋ค๊ณ ์ฐํด๋ฆญํ์ฌ\n&e์ฌ๋ฐฐ์ ๋์ง๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค.\n&e์ฌ๋ฐฐ์ ๋์ง๋ ์๋ฌผ์ ์ํํ ๋ 3๋ฐฐ์ ๋๋กญ์ ์ป์ ํ๋ฅ ์\n&์ ๊ณตํฉ๋๋ค. ๋ํ ์ธ๋ฒคํ ๋ฆฌ์ ์จ์์ ์ฌ์ฉํ์ฌ ๋ธ๋ก์\n&์๋ช
์ ๋ถ์ด๋ฃ๊ณ ๋ณํ์ํฌ ์ ์๋ ๋ฅ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
+Guides.Herbalism.Section.3=&3์ฌ๋ฐฐ์ ์ฌ๋ฅ (์๋ฌผ)์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ์๋ฌผ์ ์ํํ ๋ ์๋์ผ๋ก ์ฌ์ฌ์\n&ํฉ๋๋ค. ์ฑ๊ณต ํ๋ฅ ์ ์ฝ์ดํ ์คํฌ ๋ ๋ฒจ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
+Guides.Herbalism.Section.4=&3์ฌ๋ฐฐ์ ์ฌ๋ฅ (์์ฌ/๋/ํ)์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ์กํฐ๋ธ ๋ฅ๋ ฅ์ ๋ธ๋ก์ ํด๋นํ๋ "์๋ฌผ ๊ด๋ จ" ๋ธ๋ก์ผ๋ก\n&๋ณํํ ์ ์๊ฒ ํฉ๋๋ค. ์จ์์ ๋ค๊ณ ๋ธ๋ก์ ์ฐํด๋ฆญํ์ฌ\n&์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๊ณผ์ ์์ 1๊ฐ์ ์จ์์ด ์๋ชจ๋ฉ๋๋ค.
+Guides.Herbalism.Section.5=&3๋๋ถ์ ๋ค์ด์ดํธ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ์คํฌ์ ๋นต, ์ฟ ํค, ์๋ฐ, ๋ฒ์ฏ ์คํ, ๋น๊ทผ,\n&๊ฐ์๋ฅผ ์ญ์ทจํ ๋ ํ๋ณต๋๋ ํฌ๋ง๊ฐ์ ์ฆ๊ฐ์ํต๋๋ค.
+Guides.Herbalism.Section.6=&3ํ์ด๋์ธ์ ํ์ด์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ๊ฒ์ผ๋ก ํน์ ๋ธ๋ก์ ๋ถ์ ๋\n&ํฌ๊ท ์์ดํ
์ ์ป์ ํ๋ฅ ์ ์ ๊ณตํฉ๋๋ค.
+Guides.Herbalism.Section.7=&32๋ฐฐ ๋๋กญ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ์ํ ์ ๋ ๋ง์ ์ํ๋์ ์ ๊ณตํฉ๋๋ค.
##Mining
-Guides.Mining.Section.0=&3About Mining:\n&eMining consists of mining stone and ores. It provides bonuses\n&eto the amount of materials dropped while mining.\n\n&3XP GAIN:\n&eTo gain XP in this skill, you must mine with a pickaxe in hand.\n&eOnly certain blocks award XP.
-Guides.Mining.Section.1=&3Compatible Materials:\n&eStone, Coal Ore, Iron Ore, Gold Ore, Diamond Ore, Redstone Ore,\n&eLapis Ore, Obsidian, Mossy Cobblestone, Ender Stone,\n&eGlowstone, and Netherrack.
-Guides.Mining.Section.2=&3How to use Super Breaker:\n&eWith a pickaxe in your hand, right click to ready your tool.\n&eOnce in this state, you have about 4 seconds to make contact\n&ewith Mining compatible materials, which will activate Super\n&eBreaker.
-Guides.Mining.Section.3=&3What is Super Breaker?\n&eSuper Breaker is an ability with a cooldown tied to the Mining\n&eskill. It triples your chance of extra items dropping and\n&eenables instant break on Mining materials.
-Guides.Mining.Section.4=&3How to use Blast Mining:\n&eWith a detonator in hand, which is a flint & steel by default,\n&ecrouch and right-click on TNT from a distance. This will cause the TNT\n&eto instantly explode.
-Guides.Mining.Section.5=&3How does Blast Mining work?\n&eBlast Mining is an ability with a cooldown tied to the Mining\n&eskill. It gives bonuses when mining with TNT and allows you\n&eto remote detonate TNT. There are three parts to Blast Mining.\n&eThe first part is Bigger Bombs, which increases blast radius.\n&eThe second is Demolitions Expert, which decreases damage\n&efrom TNT explosions. The third part simply increases the\n&eamount of ores dropped from TNT and decreases the\n&edebris dropped.
+Guides.Mining.Section.0=&3์ฑ๊ด์ ๋ํ์ฌ:\n&e์ฑ๊ด์ ๋๊ณผ ๊ด์์ ์บ๋ ๊ฒ์ผ๋ก, ์ฑ๊ตด ์ ๋๋กญ๋๋ ์์์ ์์ ๋ณด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.\n\n&3XP ํ๋:\n&e์ด ์คํฌ์์ XP๋ฅผ ์ป์ผ๋ ค๋ฉด ์์ ๊ณก๊ดญ์ด๋ฅผ ๋ค๊ณ ์ฑ๊ตดํด์ผ ํฉ๋๋ค.\n&e์ผ๋ถ ๋ธ๋ก๋ง XP๋ฅผ ์ ๊ณตํฉ๋๋ค.
+Guides.Mining.Section.1=&3ํธํ ๊ฐ๋ฅํ ์๋ฃ:\n&e๋, ์ํ ๊ด์, ์ฒ ๊ด์, ๊ธ ๊ด์, ๋ค์ด์๋ชฌ๋ ๊ด์, ๋ ๋์คํค ๊ด์,\n&e์ฒญ๊ธ์ ๊ด์, ํ์์, ์ด๋ผ ๋ ์์ฌ, ์๋ ๋,\n&e๋ฐ๊ด์, ๋ค๋๋์
๋๋ค.
+Guides.Mining.Section.2=&3ํ๊ดด์๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๊ณก๊ดญ์ด๋ฅผ ์์ ๋ค๊ณ , ์ฐํด๋ฆญ์ ํ๋ฉด ๋๊ตฌ๊ฐ ์ค๋น ์ํ๊ฐ ๋ฉ๋๋ค.\n&e์ด ์ํ์์, 4์ด ์์ ์ฑ๊ด ๊ฐ๋ฅ ๋ธ๋ก์ ์ขํด๋ฆญํ๋ฉด, ์ด๊ฒ์ ํ๊ดด์๋ฅผ ๋ฐ๋ํ ๊ฒ์
๋๋ค.
+Guides.Mining.Section.3=&3ํ๊ดด์๊ฐ ๋ฌด์์ธ๊ฐ์?\n&eํ๊ดด์๋ ์ฑ๊ด ์คํฌ๊ณผ ์ฐ๊ฒฐ๋ ์ฌ์ฌ์ฉ ๋๊ธฐ์๊ฐ์ด ์๋ ๋ฅ๋ ฅ์
๋๋ค. ์ด๋ ์ถ๊ฐ ์์ดํ
์ด ๋จ์ด์ง ํ๋ฅ ์ ์ธ ๋ฐฐ๋ก ๋๋ฆฌ๊ณ ์ฑ๊ด ์ฌ๋ฃ๋ฅผ ์ฆ์ ๋ถ์ ์ ์๊ฒ ํฉ๋๋ค.
+Guides.Mining.Section.4=&3ํญ๋ฐ ์ฑ๊ตด์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๊ณก๊ดญ์ด๋ฅผ ์์ ๋ค๊ณ ์
ํฌ๋ฆฌ๊ธฐ๋ฅผ ํ ํ TNT๋ฅผ ๋ฉ๋ฆฌ์ ์ฐํด๋ฆญํ์ธ์. ์ด๊ฒ์ TNT๋ฅผ ์ฆ์ ํญ๋ฐ์ํฌ ๊ฒ์
๋๋ค.
+Guides.Mining.Section.5=&3ํญ๋ฐ ์ฑ๊ตด์ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?\n&e ํญ๋ฐ ์ฑ๊ตด์ ์ฑ๊ด ์คํฌ๊ณผ ์ฐ๊ฒฐ๋ ์ฟจํ์์ด ์๋ ๊ธฐ๋ฅ์
๋๋ค. TNT๋ก ์ฑ๊ตดํ ๋ ๋ณด๋์ค๋ฅผ ์ ๊ณตํ๊ณ TNT๋ฅผ ์๊ฒฉ์ผ๋ก ํญ๋ฐ์ํฌ ์ ์์ต๋๋ค. ํญ๋ฐ ์ฑ๊ตด์๋ ์ธ ๊ฐ์ง ๋ถ๋ถ์ด ์์ต๋๋ค.\n&e ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ํญ๋ฐ ๋ฐ๊ฒฝ์ ์ฆ๊ฐ์ํค๋ ๋ ํฐ ํญํ์
๋๋ค.\n&e ๋ ๋ฒ์งธ ๋ถ๋ถ์ TNT ํญ๋ฐ๋ก ์ธํ ํผํด๋ฅผ ๊ฐ์์ํค๋ ํด์ฒด ์ ๋ฌธ๊ฐ์
๋๋ค. ์ธ ๋ฒ์งธ ๋ถ๋ถ์ ๋จ์ํ TNT์์ ๋จ์ด์ง๋ ๊ด์์ ์์ ์ฆ๊ฐ์ํค๊ณ ๋จ์ด์ง๋ ํํธ์ ๊ฐ์์ํต๋๋ค.
##Repair
-Guides.Repair.Section.0=&3About Repair:\n&eRepair allows you to use an iron block to repair armor and\n&etools, or a gold block to salvage armor and tools.\n\n&3XP GAIN:\n&eRepair tools or armor using the mcMMO Anvil. This is an\n&eiron block by default and should not be confused with\nðe Vanilla Minecraft Anvil.
-Guides.Repair.Section.1=&3How can I use Repair?\n&ePlace down a mcMMO Anvil and right-click to repair the item \n&eyou're currently holding. This consumes 1 item on every use.
-Guides.Repair.Section.2=&3How does Repair Mastery work?\n&eRepair Mastery increases the repair amount. The extra amount\n&erepaired is influenced by your Repair skill level.
-Guides.Repair.Section.3=&3How does Super Repair work?\n&eSuper Repair is a passive ability. When repairing an item,\n&eit grants players a chance to repair an item with\n&edouble effectiveness.
-Guides.Repair.Section.4=&3How does Arcane Forging work?\n&eThis passive ability allows you to repair items with a certain\n&echance of maintaining its enchantments. The enchants may be\n&ekept at their existing levels, downgraded to a lower level,\n&eor lost entirely.
+Guides.Repair.Section.0=&3์๋ฆฌ์ ๋ํ์ฌ:\n&e์๋ฆฌ๋ ์ฒ ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ๊ฐ์ท๊ณผ ๋๊ตฌ๋ฅผ ์๋ฆฌํ ์ ์๊ฒ ํฉ๋๋ค.\n\n&3XP ํ๋:\n&emcMMO ๋ชจ๋ฃจ๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ตฌ๋ ๊ฐ์ท์ ์๋ฆฌํ์ธ์. ์ด๋\n&e๊ธฐ๋ณธ์ ์ผ๋ก ์ฒ ๋ธ๋ก์ด๋ฉฐ, Minecraft์ ์ผ๋ฐ ๋ชจ๋ฃจ์ ํผ๋๋์ง ์์์ผ ํฉ๋๋ค.
+Guides.Repair.Section.1=&3์ด๋ป๊ฒ ์๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋์?\n&emcMMO ๋ชจ๋ฃจ๋ฅผ ์ค์นํ๊ณ ํ์ฌ ๋ค๊ณ ์๋ ์์ดํ
์ ์ฐํด๋ฆญํ์ฌ ์๋ฆฌํ์ธ์. ์ด๋ ์ฌ์ฉํ ๋๋ง๋ค 1๊ฐ์ ์์ดํ
์ ์๋ชจํฉ๋๋ค.
+Guides.Repair.Section.2=&3์๋ฆฌ ๋ง์คํฐ๋ฆฌ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์๋ฆฌ ๋ง์คํฐ๋ฆฌ์ ์๋ฆฌ๋์ ์ฆ๊ฐ์ํต๋๋ค. ์ถ๊ฐ๋ก ์๋ฆฌ๋๋ ์์ ์๋ฆฌ ์คํฌ ๋ ๋ฒจ์ ์ํฅ์ ๋ฐ์ต๋๋ค.
+Guides.Repair.Section.3=&3์ํผ ์๋ฆฌ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ํผ ์๋ฆฌ๋ ํจ์๋ธ ๋ฅ๋ ฅ์
๋๋ค. ์์ดํ
์ ์๋ฆฌํ ๋\n&e๋์ฑ ํจ๊ณผ์ ์ผ๋ก ์์ดํ
์ ์๋ฆฌํ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
+Guides.Repair.Section.4=&3์ธ์ฑํธ ์์ดํ
์๋ฆฌ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ์ผ์ ํ๋ฅ ๋ก ์์ดํ
์ ์๋ฆฌํ ๋\n&e์ธ์ฑํธ๋ฅผ ์ ์งํ ์ ์๊ฒ ํฉ๋๋ค. ์ธ์ฑํธ๋\n&e๊ธฐ์กด ๋ ๋ฒจ๋ก ์ ์ง๋๊ฑฐ๋ ๋ฎ์ ๋ ๋ฒจ๋ก ๊ฐ๋ฑ๋๊ฑฐ๋\n&์์ ํ ์ฌ๋ผ์ง ์ ์์ต๋๋ค.
##Salvage
-Guides.Salvage.Section.0=&3About Salvage:\n&eSalvage allows you to use an gold block to salvage armor and\n&etools.\n\n&3XP GAIN:\n&eSalvage is a child skill of Repair and Fishing, your Salvage\n&eskill level is based on your Fishing and Repair skill levels.
-Guides.Salvage.Section.1=&3How can I use Salvage?\n&ePlace down a mcMMO Salvage Anvil and right-click to salvage\nðe item you're currently holding. This will break apart the item,\n&eand give back materials used to craft the item.\n\n&eFor example, salvaging an iron pickaxe will give you iron bars.
-Guides.Salvage.Section.2=&3How does Advanced Salvage work?\n&eWhen unlocked, this ability allows you to salvage damaged items.\n&eThe yield percentage increases as you level up. A higher yield\n&emeans that you can get more materials back.\n&eWith advanced salvage you will always get 1 material back,\n&eunless the item is too damaged. So you don't have to worry\n&eabout destroying items without getting anything in return.
-Guides.Salvage.Section.3=&3To illustrate how this works, here's an example:\n&eLet's say we salvage a gold pickaxe which is damaged for 20%,\nðis means that the maximum amount you could get is only 2\n&e(because the pick is crafted with 3 ingots - each worth\n&e33,33% durability) which is equal to 66%. If your yield\n&epercentage is below 66% you are not able to get 2 ingots.\n&eIf it is above this value you are able to gain the "full amount",\n&ewhich means that you will get 2 ingots.
-Guides.Salvage.Section.4=&3How does Arcane Salvage work?\n&eThis ability allows you to get enchanted books when salvaging\n&eenchanted items. Depending on your level the chance of\n&esuccessfully extracting a full or partial enchantment varies.\n\n&eWhen an enchantment is partially extracted, the enchantment\n&ebook will have a lower level enchantment compared to what\n&eit was on the item.
+Guides.Salvage.Section.0=&3ํ์์ ๋ํ์ฌ:\n&eํ์๋ ๊ธ ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ๊ฐ์ท๊ณผ ๋๊ตฌ๋ฅผ ํ์ํ ์ ์๊ฒ ํฉ๋๋ค.\n\n&3XP ํ๋:\n&eํ์๋ ์๋ฆฌ ๋ฐ ๋์์ ๋ถ๊ฐ ์คํฌ๋ก, ํ์ ์คํฌ ๋ ๋ฒจ์ ๋์ ๋ฐ ์๋ฆฌ ์คํฌ ๋ ๋ฒจ์ ๊ธฐ๋ฐํฉ๋๋ค.
+Guides.Salvage.Section.1=&3ํ์๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์?\n&emcMMO ํ์ ๋ชจ๋ฃจ๋ฅผ ์ค์นํ๊ณ ํ์ฌ ๋ค๊ณ ์๋ ์์ดํ
์ ์ฐํด๋ฆญํ์ฌ ํ์ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์์ดํ
์ด ๋ถํด๋๊ณ ์์ดํ
์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ฌ๋ฃ๊ฐ ๋ฐํ๋ฉ๋๋ค.\n\n&e์๋ฅผ ๋ค์ด, ์ฒ ๊ณก๊ดญ์ด๋ฅผ ํ์ํ๋ฉด ์ฒ ์ฃผ๊ดด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
+Guides.Salvage.Section.2=&3์ ๋ฌธ์ ์ธ ํ์๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ ๋ฌธ์ ์ธ ํ์๋ฅผ ์ ๊ธ ํด์ ํ๋ฉด ์์๋ ์์ดํ
์ ํ์ํ ์ ์์ต๋๋ค. ๋ ๋ฒจ์ด ์ฌ๋ผ๊ฐ์ ๋ฐ๋ผ ์ํ๋ฅ ์ด ์ฆ๊ฐํฉ๋๋ค. ๋์ ์ํ๋ฅ ์ ๋ ๋ง์ ์ฌ๋ฃ๋ฅผ ์ป์ ์ ์์์ ์๋ฏธํฉ๋๋ค.\n&e์ ๋ฌธ์ ์ธ ํ์๋ฅผ ์ฌ์ฉํ๋ฉด ํญ์ 1๊ฐ์ ์ฌ๋ฃ๋ฅผ ์ป๊ฒ ๋๋ฉฐ, ์์ดํ
์ด ๋๋ฌด ์์๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ์์ดํ
์ ํ๊ดดํ๊ณ ์๋ฌด๊ฒ๋ ์ป์ง ๋ชปํ๋ ์ผ์ ์์ต๋๋ค.
+Guides.Salvage.Section.3=&3์๋ ๋ฐฉ์์ ์ค๋ช
ํ๊ธฐ ์ํด ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค:\n&e์์๋ ๊ธ ๊ณก๊ดญ์ด๋ฅผ ํ์ํ๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค. ์ด ๊ฒฝ์ฐ ์ต๋๋ก ์ป์ ์ ์๋ ์์ 2๊ฐ์
๋๋ค(๊ณก๊ดญ์ด๋ 3๊ฐ์ ์ฃผ๊ดด๋ก ์ ์๋๋ฉฐ ๊ฐ๊ฐ์ ์ฃผ๊ดด๋ 33.33%์ ๋ด๊ตฌ์ฑ์ ๊ฐ์ง๋ฏ๋ก 66%์ ํด๋นํ๋ 2๊ฐ์
๋๋ค). ์ํ๋ฅ ์ด 66%๋ณด๋ค ๋ฎ์ผ๋ฉด 2๊ฐ์ ์ฃผ๊ดด๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ํ๋ฅ ์ด ์ด ๊ฐ๋ณด๋ค ๋์ผ๋ฉด "์ ์ฒด ์"์ ์ป์ ์ ์์ผ๋ฉฐ, ์ฆ 2๊ฐ์ ์ฃผ๊ดด๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค.
+Guides.Salvage.Section.4=&3์ ๋น๋ก์ด ํ์๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ๋ฅ๋ ฅ์ ์ฌ์ฉํ๋ฉด ๋ง๋ฒ์ด ๋ถ์ฌ๋ ์์ดํ
์ ํ์ํ ๋ ๋ง๋ฒ์ด ๋ถ์ฌ๋ ์ฑ
์ ์ป์ ์ ์์ต๋๋ค. ๋ ๋ฒจ์ ๋ฐ๋ผ ์์ ํ ๋ถ๋ถ ๋๋ ๋ถ๋ถ์ ์ธ ๋ถ์ฌ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ถ์ถํ ํ๋ฅ ์ด ๋ค๋ฆ
๋๋ค.\n\n&e๋ถ๋ถ์ ์ผ๋ก ์ถ์ถ๋ ๊ฒฝ์ฐ, ๋ถ์ฌ๋ ์ฑ
์ ์์ดํ
์ ์๋ ๋ถ์ฌ๋ณด๋ค ๋ฎ์ ๋ ๋ฒจ์ ๋ถ์ฌ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
##Smelting
-Guides.Smelting.Section.0=Coming soon...
+Guides.Smelting.Section.0=์ค๋น ์ค...
##Swords
-Guides.Swords.Section.0=&3About Swords:\n&eThis skill awards combat bonuses to anyone fighting with a\n&esword.\n\n&3XP GAIN:\n&eXP is gained based on the amount of damage dealt to mobs or \n&eother players when wielding a sword.
-Guides.Swords.Section.1=&3How does Serrated Strikes work?\n&eSerrated Strikes is an active ability, you can activate it by\n&eright-clicking with a sword. This ability allows you to deal \n&ean AoE (Area of Effect) hit. This AoE will do a bonus 25%\n&edamage and will inflict a bleed effect that lasts for 5 ticks.
-Guides.Swords.Section.2=&3How does Counter Attack work?\n&eCounter Attack is an active ability. When blocking and taking\n&ehits from mobs, you will have a chance to reflect 50% of \nðe damage that was taken.
-Guides.Swords.Section.3=&3How does Bleed work?\n&eBleed causes enemies to take damage every two seconds. The \n&etarget will bleed until the effect wears off, or death, \n&ewhichever comes first.\n&eThe duration of the bleed is increased by your sword skill.
+Guides.Swords.Section.0=&3๊ฒ์ ์ ๋ํด:\n&e์ด ์คํฌ์ ๊ฒ์ ์ฌ์ฉํ๋ ์ฌ๋์๊ฒ ์ ํฌ ๋ณด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.\n\n&3XP ํ๋:\n&e๊ฒ์ ์ฌ์ฉํ์ฌ ๋ชน์ด๋ ๋ค๋ฅธ ํ๋ ์ด์ด์๊ฒ ์
ํ ๋ฐ๋ฏธ์ง์ ๋ฐ๋ผ ๊ฒฝํ์น๋ฅผ ํ๋ํฉ๋๋ค.
+Guides.Swords.Section.1=&3ํฑ๋ ๊ณต๊ฒฉ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&eํฑ๋ ๊ณต๊ฒฉ์ ์กํฐ๋ธ ๋ฅ๋ ฅ์ผ๋ก, ๊ฒ์ผ๋ก ์ฐํด๋ฆญํ์ฌ ํ์ฑํํ ์ ์์ต๋๋ค. ์ด ๋ฅ๋ ฅ์ ์ฌ์ฉํ๋ฉด AoE(์์ญ ํจ๊ณผ) ๊ณต๊ฒฉ์ ํ ์ ์์ต๋๋ค. ์ด AoE๋ ์ถ๊ฐ 25%์ ๋ฐ๋ฏธ์ง๋ฅผ ์
ํ๋ฉฐ, Rupture๋ฅผ ์ ์ฉํ ์๋ ์์ต๋๋ค.
+Guides.Swords.Section.2=&3์นด์ดํฐ ์ดํ์ ํ์ฑ ๋ฅ๋ ฅ์
๋๋ค. ๋ชน์ผ๋ก๋ถํฐ ๊ณต๊ฒฉ์ ๋ง์ผ๋ฉด์ ํผํด๋ฅผ ์
์ ๋, ๋ฐ์ ํผํด์ 50%๋ฅผ ๋ฐ์ฌํ ํ๋ฅ ์ด ์์ต๋๋ค.
+Guides.Swords.Section.3=&3ํ์ด์ ์ ์๊ฒ 2์ด๋ง๋ค ํผํด๋ฅผ ์
ํ๋๋ค. ์ด ํจ๊ณผ๋ ํผํด๋ฅผ ์
์ ๋์์ด ์ฃฝ๊ฑฐ๋ ํจ๊ณผ๊ฐ ์ฌ๋ผ์ง ๋๊น์ง ๊ณ์๋ฉ๋๋ค. ๊ฒ ๊ธฐ์ ์ด ๋์์๋ก ํผ ํจ๊ณผ์ ์ง์ ์๊ฐ์ด ์ฆ๊ฐํฉ๋๋ค.
##Taming
-Guides.Taming.Section.0=&3About Taming:\n&eTaming will give players various combat bonuses when using\n&etamed wolves.\n\n&3XP GAIN:\n&eTo gain XP in this skill, you need to tame wolves/ocelots or\n&eget into combat with your wolves.
-Guides.Taming.Section.1=&3How does Call of the Wild work?\n&eCall of the Wild is an active ability that will allow you to summon\n&ea wolf or an ocelot by your side. You can do this by\n&eleft-clicking while holding bones or fish.
-Guides.Taming.Section.2=&3How does Beast Lore work?\n&eBeast Lore allows players to inspect pets and to check the\n&estats of wolves and ocelots. Left-click a wolf or ocelot to use\n&eBeast Lore.
-Guides.Taming.Section.3=&3How does Gore work?\n&eGore is a passive ability that has a chance of inflicting a\n&ebleeding effect on your wolves' targets.
-Guides.Taming.Section.4=&3How does Sharpened Claws work?\n&eSharpened Claws provides a damage bonus to damage dealt\n&eby wolves. The damage bonus depends on your Taming level.
-Guides.Taming.Section.5=&3How does Environmentally Aware work?\n&eThis passive ability will allow wolves to teleport to you when\nðey get near hazards, such as Cacti/Lava. It will also give\n&ewolves fall damage immunity.
-Guides.Taming.Section.6=&3How does Thick Fur work?\n&eThis passive ability will reduce damage and make wolves\n&efire resistant.
-Guides.Taming.Section.7=&3How does Shock Proof work?\n&eThis passive ability reduces damage done to wolves\n&efrom explosions.
-Guides.Taming.Section.8=&3How does Fast Food Service work?\n&eThis passive ability gives wolves a chance to heal whenever\nðey perform an attack.
+Guides.Taming.Section.0=&3์กฐ๋ จ์ ๋ํ์ฌ:\n&e์กฐ๋ จ์ ๊ธธ๋ค์ธ ๋๋๋ฅผ ์ฌ์ฉํ ๋ ๋ค์ํ ์ ํฌ ๋ณด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.\n\n&3XP ํ๋:\n&e์ด ์คํฌ์์ ๊ฒฝํ์น๋ฅผ ์ป์ผ๋ ค๋ฉด ๋๋/์ค์
๋กฏ์ ๊ธธ๋ค์ด๊ฑฐ๋\n&e๋๋์ ์ ํฌํด์ผ ํฉ๋๋ค.
+Guides.Taming.Section.1=&3์ผ์์ ํฌํจ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ผ์์ ํฌํจ๋ ์กํฐ๋ธ ๋ฅ๋ ฅ์ผ๋ก, ๋ผ๋ค๊ท๋ ์์ ์ ๋ค๊ณ \n&e์
ํฌ๋ฆฌ๊ณ ์ขํด๋ฆญํ์ฌ ๋๋๋ ์ค์
๋กฏ์ ์ํํ ์ ์์ต๋๋ค.
+Guides.Taming.Section.2=&3์ง์น์ ํฌํจ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ง์น์ ํฌํจ๋ ํซ์ ๊ฒ์ฌํ๊ณ ๋๋์ ์ค์
๋กฏ์\n&estats๋ฅผ ํ์ธํ ์ ์๊ฒ ํฉ๋๋ค. ๋๋๋ ์ค์
๋กฏ์ ์ขํด๋ฆญํ์ฌ\n&e์ง์น์ ํฌํจ๋ฅผ ์ฌ์ฉํ์ธ์.
+Guides.Taming.Section.3=&3๋์ง์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๋์ง์ ํจ์๋ธ ๋ฅ๋ ฅ์ผ๋ก, ๋๋์ ๋์์๊ฒ ์ถํ ํจ๊ณผ๋ฅผ\n&์ ์ฉํ ์ ์๋ ํ๋ฅ ์ด ์์ต๋๋ค.
+Guides.Taming.Section.4=&3๋ ์นด๋ก์ด ๋ฐํฑ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๋ ์นด๋ก์ด ๋ฐํฑ์ ๋๋๊ฐ ์
ํ๋ ํผํด์ ์ถ๊ฐ์ ์ธ ๋ฐ๋ฏธ์ง ๋ณด๋์ค๋ฅผ\n&์ ๊ณตํฉ๋๋ค. ์ด ๋ฐ๋ฏธ์ง ๋ณด๋์ค๋ ํ
์ด๋ฐ ๋ ๋ฒจ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
+Guides.Taming.Section.5=&3ํ๊ฒฝ ์ธ์์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ๋๋๊ฐ ์ ์ธ์ฅ/์ฉ์๊ณผ ๊ฐ์ ์ํ ์์์\n&๊ฐ๊น์ด ๋ค๊ฐ๊ฐ ๋ ๋น์ ์๊ฒ ์๊ฐ์ด๋ํ ์ ์๊ฒ ํฉ๋๋ค.\n&๋ํ, ๋๋์๊ฒ ๋ํ ํผํด ๋ฉด์ญ์ฑ์ ์ ๊ณตํฉ๋๋ค.
+Guides.Taming.Section.6=&3๋๊บผ์ด ํธ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ๋๋์ ํผํด๋ฅผ ๊ฐ์์ํค๊ณ \n&๋ถ์ ๋ํ ๋ด์ฑ์ ์ ๊ณตํฉ๋๋ค.
+Guides.Taming.Section.7=&3์ถฉ๊ฒฉ ๋ฐฉ์ง๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ๋๋๊ฐ ํญ๋ฐ๋ก ์ธํ ํผํด๋ฅผ\n&๊ฐ์์ํต๋๋ค.
+Guides.Taming.Section.8=&3๋น ๋ฅธ ์์ ์ ๊ณต์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ๋๋๊ฐ ๊ณต๊ฒฉํ ๋๋ง๋ค ํ๋ณตํ \n&์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
##Unarmed
-Guides.Unarmed.Section.0=&3About Unarmed:\n&eUnarmed will give players various combat bonuses when using\n&eyour fists as a weapon. \n\n&3XP GAIN:\n&eXP is gained based on the amount of damage dealt to mobs \n&eor other players when unarmed.
-Guides.Unarmed.Section.1=&3How does Berserk work?\n&eBeserk is an active ability that is activated by\n&eright-clicking. While in Beserk mode, you deal 50% more\n&edamage and you can break weak materials instantly, such as\n&eDirt and Grass.
-Guides.Unarmed.Section.2=&3How does Iron Arm work?\n&eIron Arm increases the damage dealt when hitting mobs or\n&eplayers with your fists.
-Guides.Unarmed.Section.3=&3How does Arrow Deflect work?\n&eArrow Deflect is a passive ability that gives you a chance\n&eto deflect arrows shot by Skeletons or other players.\n&eThe arrow will fall harmlessly to the ground.
-Guides.Unarmed.Section.4=&3How does Iron Grip work?\n&eIron Grip is a passive ability that counters disarm. As your\n&eunarmed level increases, the chance of preventing a disarm increases.
-Guides.Unarmed.Section.5=&3How does Disarm work?\n&eThis passive ability allows players to disarm other players,\n&ecausing the target's equipped item to fall to the ground.
+Guides.Unarmed.Section.0=&3๋น๋ฌด์ฅ์ ๋ํด:\n&e๋น๋ฌด์ฅ์ ์ฃผ๋จน์ ๋ฌด๊ธฐ๋ก ์ฌ์ฉํ ๋ ํ๋ ์ด์ด์๊ฒ ๋ค์ํ ์ ํฌ ๋ณด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. \n\n&3XP ํ๋:\n&e๋งจ์์ผ๋ก ๋ชน์ด๋ ๋ค๋ฅธ ํ๋ ์ด์ด์๊ฒ ์
ํ ํผํด๋์ ๋ฐ๋ผ ๊ฒฝํ์น๋ฅผ ํ๋ํฉ๋๋ค.
+Guides.Unarmed.Section.1=&3๋ฒ์์ปค๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๋ฒ์์ปค๋ ์ฐํด๋ฆญ์ผ๋ก ํ์ฑํ๋๋ ์กํฐ๋ธ ๋ฅ๋ ฅ์
๋๋ค. ๋ฒ์์ปค ๋ชจ๋์์๋ ์ถ๊ฐ๋ก 50%์ ํผํด๋ฅผ ์
ํ๋ฉฐ, ํ๊ณผ ํ๊ณผ ๊ฐ์ ์ฝํ ์ฌ๋ฃ๋ฅผ ์ฆ์ ๋ถ์ ์ ์์ต๋๋ค.
+Guides.Unarmed.Section.2=&3๊ฐ์ฒ ํ ํํ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๊ฐ์ฒ ํ ํํ๋ ์ฃผ๋จน์ผ๋ก ๋ชน์ด๋ ํ๋ ์ด์ด๋ฅผ ๋๋ฆด ๋ ์
ํ๋ ํผํด๋์ ์ฆ๊ฐ์ํต๋๋ค.
+Guides.Unarmed.Section.3=&3ํ์ด ํํผ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&eํ์ด ํ๊น์ ์ค์ผ๋ ํค์ด๋ ๋ค๋ฅธ ํ๋ ์ด์ด๊ฐ ๋ฐ์ฌํ ํ์ด์ ํ๊ธธ ํ๋ฅ ์ ์ ๊ณตํ๋ ํจ์๋ธ ๋ฅ๋ ฅ์
๋๋ค. ํ์ด์ ํผํด๋ฅผ ์
ํ์ง ์๊ณ ๋
์ ๋จ์ด์ง๋๋ค.
+Guides.Unarmed.Section.4=&3๊ฐ์ฒ ์ฃผ๋จน์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๊ฐ์ฒ ์ฃผ๋จน์ ๋ค๋ฅธ ์คํฌ์ ๊ฐ์ ๋ฌด์ฅ ํด์ ํจ๊ณผ๋ฅผ ๋ฐฉ์งํ๋ ํจ์๋ธ ๋ฅ๋ ฅ์
๋๋ค. ๋น๋ฌด์ฅ ๋ ๋ฒจ์ด ์ฌ๋ผ๊ฐ์๋ก ๊ฐ์ ๋ฌด์ฅ ํด์ ๋ฅผ ๋ฐฉ์งํ๋ ํ๋ฅ ์ด ์ฆ๊ฐํฉ๋๋ค.
+Guides.Unarmed.Section.5=&3๋น๋ฌด์ฅ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ํ๋ ์ด์ด๊ฐ ๋ค๋ฅธ ํ๋ ์ด์ด์ ๋ฌด๊ธฐ๋ฅผ ํด์ ํ ์ ์๊ฒ ํด์ค๋๋ค. ๋์์ ์ฅ์ฐฉ๋ ์์ดํ
์ ๋
์ ๋จ์ด์ง๋๋ค.
##Woodcutting
-Guides.Woodcutting.Section.0=&3About Woodcutting:\n&eWoodcutting is all about chopping down trees.\n\n&3XP GAIN:\n&eXP is gained whenever you break log blocks.
-Guides.Woodcutting.Section.1=&3How does Tree Feller work?\n&eTree Feller is an active ability, you can right-click\n&ewhile holding an ax to activate Tree Feller. This will\n&ecause the entire tree to break instantly, dropping all\n&eof its logs at once.
-Guides.Woodcutting.Section.2=&3How does Leaf Blower work?\n&eLeaf Blower is a passive ability that will cause leaf\n&eblocks to break instantly when hit with an axe. By default,\nðis ability unlocks at level 100.
-Guides.Woodcutting.Section.3=&3How do Double Drops work?\n&eThis passive ability gives you a chance to obtain an extra\n&eblock for every log you chop.
+Guides.Woodcutting.Section.0=&3๋ฒ๋ชฉ์ ๋ํ์ฌ:\n&e๋ฒ๋ชฉ์ ๋๋ฌด๋ฅผ ๋ฒ ๋ ๊ฒ์ ๊ดํ ์คํฌ์
๋๋ค.\n\n&3XP ํ๋:\n&e๋๋ฌด ๋ธ๋ก์ ๋ถ์ ๋๋ง๋ค ๊ฒฝํ์น๋ฅผ ์ป์ต๋๋ค.
+Guides.Woodcutting.Section.1=&3๋๋ฌด๊พผ์ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๋๋ฌด๊พผ์ ์กํฐ๋ธ ๋ฅ๋ ฅ์ผ๋ก, ๋๋ผ๋ฅผ ๋ค๊ณ ์ฐํด๋ฆญํ์ฌ\n&e๋๋ฌด ๋ฒ ๊ธฐ๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด\n&e์ ์ฒด ๋๋ฌด๊ฐ ์ฆ์ ๋ถ์์ง๊ณ ํ ๋ฒ์ ๋ชจ๋ \n&๋๋ฌด ๋ธ๋ก์ด ๋จ์ด์ง๋๋ค.
+Guides.Woodcutting.Section.2=&3๋๋ญ์ ์ฒญ์๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e๋๋ญ์ ์ฒญ์๋ ํจ์๋ธ ๋ฅ๋ ฅ์ผ๋ก, ๋๋ผ๋ก\n&๋งํ ์์ฌ๊ท ๋ธ๋ก์ด ์ฆ์ ๋ถ์์ง๊ฒ ํฉ๋๋ค.\n&๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๋ฅ๋ ฅ์ ๋ ๋ฒจ 100์์ ํด๊ธ๋ฉ๋๋ค.
+Guides.Woodcutting.Section.3=&3๋๋กญ 2๋ฐฐ๋ ์ด๋ป๊ฒ ์๋ํ๋์?\n&e์ด ํจ์๋ธ ๋ฅ๋ ฅ์ ๋ฒ ๋ ๋๋ฌด๋ง๋ค ์ถ๊ฐ๋ก\n&ํ ๊ฐ์ ๋ธ๋ก์ ์ป์ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
#INSPECT
-Inspect.Offline= &c๊ทธ ํ๋ ์ด์ด๋ ์คํ๋ผ์ธ ์
๋๋ค, ์ค์ง op๋ค๋ง ๊ฒ์ฌํ ์ ์์ต๋๋ค!
+Inspect.Offline= &c๊ทธ ํ๋ ์ด์ด๋ ์คํ๋ผ์ธ ์ํ์ด๋ฏ๋ก ๊ฒ์ฌํ ์ ์์ต๋๋ค. ์คํ๋ผ์ธ ํ๋ ์ด์ด๋ฅผ ๊ฒ์ฌํ๋ ค๋ฉด ๊ถํ์ด ํ์ํฉ๋๋ค.
Inspect.OfflineStats=mcMMO ์คํ๋ผ์ธ ์ ์ ์คํ
์ &e{0} ์
๋๋ค
Inspect.Stats=&amcMMO ์คํ
์ &e{0} ์
๋๋ค
Inspect.TooFar=๋น์ ์ ๊ทธ ํ๋ ์ด์ด์ ๋๋ฌด ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ด ๊ฒ์ฌํ ์ ์์ต๋๋ค!
#ITEMS
Item.ChimaeraWing.Fail=**ํค๋ฉ๋ผ์ ๋ ๊ฐ ์คํจ!**
-Item.ChimaeraWing.Pass=**ํค๋ฉ๋ผ ๋ ๊ฐ**
-Item.ChimaeraWing.Name=ํค๋ฉ๋ผ ๋ ๊ฐ
+Item.ChimaeraWing.Pass=**ํค๋ฉ๋ผ์ ๋ ๊ฐ**
+Item.ChimaeraWing.Name=ํค๋ฉ๋ผ์ ๋ ๊ฐ
Item.ChimaeraWing.Lore=&7๋น์ ์ ์นจ๋๋ก ํ
๋ ํฌํธํฉ๋๋ค.
-Item.Generic.Wait=ํค๋ฉ๋ผ์ ๋ ๊ฐ๋ฅผ ๋ค์ ์ฌ์ฉํ ๋ ค๋ฉด &e({0}์ด) &c๊ธฐ๋ฌ๋ ค์ผ ํฉ๋๋ค!
-Item.Injured.Wait=๋น์ ์ ์ต๊ทผ์ ๋ถ์์ ๋นํ๊ณ ์ฌ์ฉํ ๋ ค๋ฉด &e({0}์ด) &f๊ธฐ๋ฌ๋ ค์ผ ํฉ๋๋ค
+Item.Generic.Wait=ํค๋ฉ๋ผ์ ๋ ๊ฐ๋ฅผ ๋ค์ ์ฌ์ฉํ๋ ค๋ฉด &e({0}์ด) &c๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค!
+Item.Injured.Wait=๋น์ ์ ์ต๊ทผ์ ๋ถ์์ ๋นํ์ผ๋ฉฐ ์ด๊ฒ์ ์ฌ์ฉํ๋ ค๋ฉด &e({0}์ด) &f๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค
Item.FluxPickaxe.Name=์ฉํด ๊ณก๊ดญ์ด
Item.FluxPickaxe.Lore.1=&7๊ด๋ฌผ์ ์ฆ์ ์ ๋ จํ ๊ธฐํ๋ฅผ ๊ฐ์ง๋๋ค.
Item.FluxPickaxe.Lore.2=&7์ ๋ จ ์๊ตฌ ๋ ๋ฒจ {0} ์ด์
#TELEPORTATION
-Teleport.Commencing=&7ํ
๋ ํฌํธ๊ฐ &6({0}) &7์ด์์ ์์๋ฉ๋๋ค, ๊ฐ๋งํ ๊ธฐ๋ฌ๋ ค์ฃผ์ธ์...
+Teleport.Commencing=&7ํ
๋ ํฌํธ๊ฐ &6({0}) &7์ด์์ ์์๋ฉ๋๋ค, ๊ฐ๋งํ ๊ธฐ๋ค๋ ค์ฃผ์ธ์...
Teleport.Cancelled=&4ํ
๋ ํฌํธ ์ทจ์๋จ!
#SKILLS
-Skills.Child=&6(ํ์ ์คํฌ)
+Skills.Child=&6(๋ถ๊ฐ ์คํฌ)
Skills.Disarmed=&4๋น์ ์ ๋ฌด์ฅ ํด์ ๋์์ต๋๋ค!
Skills.Header=-----[]&a{0}&c[]-----
-Skills.NeedMore=&4๋น์ ์ &7{0}๊ฐ ๋ ํ์ํฉ๋๋ค
-Skills.Parents = ์์๋ค
+Skills.NeedMore=&4๋น์ ์ &7{0}&4๊ฐ ๋ ํ์ํฉ๋๋ค
+Skills.NeedMore.Extra=&4๋น์ ์ &7{0}{1}๊ฐ ๋ ํ์ํฉ๋๋ค
+Skills.Parents = ์์ ์์ฑ๋ค
+Skills.MaxXP=์ต๋ XP
Skills.Stats={0}&a{1}&3 XP(&7{2}&3/&7{3}&3)
Skills.ChildStats={0}&a{1}
Skills.TooTired=์คํฌ ์ฌ ์ฌ์ฉ ๋๊ธฐ์๊ฐ: ({0}์ด)
+Skills.TooTired.Named=&7(&6{0}&e {1}s&7)
+Skills.TooTired.Extra=&6{0}&e์ ์ฟจํ์: {1}
Skills.Cancelled={0} ์ทจ์๋จ!
Skills.ConfirmOrCancel=&a๋ค์ ์ฐ-ํด๋ฆญ์ ํ๋ฉด ํ์ธ &6{0}&a. ์ข-ํด๋ฆญ์ ํ๋ฉด ์ทจ์๊ฐ ๋ฉ๋๋ค.
+Skills.AbilityGateRequirementFail=&7์ด ์ํผ ๋ฅ๋ ฅ์ ์ฌ์ฉํ๋ ค๋ฉด &e{0}&7๋งํผ์ &3{1}&7 ์คํฌ ๋ ๋ฒจ์ด ํ์ํฉ๋๋ค.
#STATISTICS
Stats.Header.Combat=&6-=์ ํฌ ์คํฌ=-
@@ -879,62 +1150,47 @@ Hardcore.Mode.Enabled=&6[mcMMO] ํ๋์ฝ์ด ๋ชจ๋ {0}๊ฐ {1}์ ํ์ฑํ๋จ.
Hardcore.DeathStatLoss.Name=์คํฌ ๋ฐ์ค ํจ๋ํฐ
Hardcore.DeathStatLoss.PlayerDeath=&6[mcMMO] &4๋น์ ์ ์ฃฝ์ด์ &9{0}&4 ๋ ๋ฒจ์ ์์์ต๋๋ค.
Hardcore.DeathStatLoss.PercentageChanged=&6[mcMMO] ์คํ
๊ฐ์ ๋น์จ์ด {0}๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค..
-Hardcore.Vampirism.Name=๋ฑํ์ด์ด๋ฆฌ์
-Hardcore.Vampirism.Killer.Failure=&6[mcMMO] &e{0}&7๋์ ํน๋ณํ ๊ธฐ์ ์ ๊ฐ์ง๊ณ ์์ง์์ ๋น์ ์ด ๊ฐ์ ธ๊ฐ ์ง์์ด ์์ต๋๋ค.
+Hardcore.Vampirism.Name=๋ฑํ์ด์ด๋ฆฌ์ฆ
+Hardcore.Vampirism.Killer.Failure=&6[mcMMO] &e{0}&7๋์ ํน๋ณํ ๊ธฐ์ ์ ๊ฐ์ง๊ณ ์์ง ์์ ๋น์ ์ด ๊ฐ์ ธ๊ฐ ์ง์์ด ์์ต๋๋ค.
Hardcore.Vampirism.Killer.Success=&6[mcMMO] &3๋น์ ์ &e{1}&3๋์ผ๋ก๋ถํฐ &9{0}&3 ๋ ๋ฒจ์ ํ์ณค์ต๋๋ค.
-Hardcore.Vampirism.Victim.Failure=&6[mcMMO] &e{0}&7๋์ ๋น์ ์ ์ง์์ ๊ฐ์ ธ๊ฐ์ ์์์ต๋๋ค!
+Hardcore.Vampirism.Victim.Failure=&6[mcMMO] &e{0}&7๋์ ๋น์ ์ ์ง์์ ๊ฐ์ ธ๊ฐ ์ ์์์ต๋๋ค!
Hardcore.Vampirism.Victim.Success=&6[mcMMO] &e{0}&4๋์ ๋น์ ์๊ฒ์ &9{1}&4 ๋ ๋ฒจ์ ํ์ณ๊ฐ์ต๋๋ค!
-Hardcore.Vampirism.PercentageChanged=&6[mcMMO] ์คํ
ํกํ ๋น์จ์ด {0}๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
#MOTD
MOTD.Donate=&3๊ธฐ๋ถ ์ ๋ณด:
MOTD.Hardcore.Enabled=&6[mcMMO] &3ํ๋์ฝ์ด ๋ชจ๋ ํ์ฑํ๋จ: &4{0}
MOTD.Hardcore.DeathStatLoss.Stats=&6[mcMMO] &3๋ฐ์ค ํจ๋ํฐ ๋ฅ๋ ฅ: &4{0}%
-MOTD.Hardcore.Vampirism.Stats=&6[mcMMO] &3๋ฑํ์ด์ด๋ฆฌ์ ์คํ
ํก์: &4{0}%
+MOTD.Hardcore.Vampirism.Stats=&6[mcMMO] &3๋ฑํ์ด์ด๋ฆฌ์ฆ ์คํ
ํก์: &4{0}%
MOTD.PerksPrefix=[mcMMO ํน์ ]
MOTD.Version=&6[mcMMO] ๊ตฌ๋์ค์ธ ๋ฒ์ &3{0}
MOTD.Website=&6[mcMMO] &a{0}&e - mcMMO ์น์ฌ์ดํธ
-# XP BAR
-XPBar.Template={0}
-XPBar.Template.EarlyGameBoost=&6์๋ก์ด ์คํฌ์ ๋ฐฐ์ฐ๋ ์ค...
-XPBar.Acrobatics=๊ณก์ Lv.&6{0}
-XPBar.Alchemy=์ฐ๊ธ์ Lv.&6{0}
-XPBar.Archery=๊ถ์ Lv.&6{0}
-XPBar.Axes=๋ถ์ Lv.&6{0}
-XPBar.Excavation=๋ฐ๊ตด Lv.&6{0}
-XPBar.Fishing=๋์ Lv.&6{0}
-XPBar.Herbalism=์ฝ์ดํ Lv.&6{0}
-XPBar.Mining=์ฑ๊ด Lv.&6{0}
-XPBar.Repair=์๋ฆฌ Lv.&6{0}
-XPBar.Salvage=ํ์ Lv.&6{0}
-XPBar.Smelting=์ ๋ จ Lv.&6{0}
-XPBar.Swords=๊ฒ์ Lv.&6{0}
-XPBar.Taming=์กฐ๋ จ Lv.&6{0}
-XPBar.Unarmed=๋น๋ฌด์ฅ Lv.&6{0}
-XPBar.Woodcutting=๋ฒ๋ชฉ Lv.&6{0}
-XPBar.Complex.Template={0} &3 {4}&f% &3(&f{1}&3/&f{2}&3)
-
-
#SMELTING
Smelting.Ability.FluxMining=์ ๋ ์ฑ๊ตด ํ๋ฅ : &e{0}
-Smelting.Ability.FuelEfficiency=์ ๋ ํจ์จ์ฑ ๋ฐฐ์จ: &e{0}x
+Smelting.Ability.FuelEfficiency=์ฐ๋ฃ ํจ์จ์ฑ ๋ฐฐ์จ: &e{0}x
Smelting.Ability.Locked.0={0}๋ ๋ฒจ ๋ ๊ธฐ์ ์ด ํด์ ๋ฉ๋๋ค (๋ฐ๋๋ผ XP ๋ถ์คํธ)
Smelting.Ability.Locked.1={0}๋ ๋ฒจ ๋ ๊ธฐ์ ์ด ํด์ ๋ฉ๋๋ค (์ ๋ ์ฑ๊ตด)
Smelting.Ability.SecondSmelt=๋๋ฒ์งธ ์ฌ๋ จ ํ๋ฅ : &e{0}
Smelting.Ability.VanillaXPBoost=๋ฐ๋๋ผ XP ๋ฐฐ์จ: &e{0}x
-Smelting.SubSkill.FuelEfficiency.Name=์ ๋ ํจ์จ์ฑ
+Smelting.SubSkill.UnderstandingTheArt.Name=์์ ์ ์ดํด
+Smelting.SubSkill.UnderstandingTheArt.Description=์๋ง๋ ๋๊ตด์์ ๋๋ฌด ๋ง์ ์๊ฐ์ ๋ณด๋ด๊ณ ์์์ง๋ ๋ชจ๋ฆ
๋๋ค.\n์ ๋ จ์ ๋ค์ํ ์์ฑ์ ๊ฐํํฉ๋๋ค.
+Smelting.SubSkill.UnderstandingTheArt.Stat=๋ฐ๋๋ผ XP ๋ฐฐ์จ: &e{0}๋ฐฐ
+Smelting.SubSkill.FuelEfficiency.Name=์ฐ๋ฃ ํจ์จ์ฑ
+Smelting.SubSkill.FuelEfficiency.Stat=์ฐ๋ฃ ํจ์จ์ฑ ๋ฐฐ์จ: &e{0}๋ฐฐ
Smelting.SubSkill.FuelEfficiency.Description=ํ๋ก์์ ์ฌ๋ จ์ ์ฐ๋ฃ ์ฐ์ ์๊ฐ ์ฆ๊ฐ
-Smelting.SubSkill.SecondSmelt.Name=๋๋ฒ์งธ ์ ๋ จ
+Smelting.SubSkill.SecondSmelt.Name=๋ ๋ฒ์งธ ์ ๋ จ
Smelting.SubSkill.SecondSmelt.Description=์ ๋ จ์ ์ป๋ ์์ 2๋ฐฐ
+Smelting.SubSkill.SecondSmelt.Stat=๋ ๋ฒ์งธ ์ฌ๋ จ ํ๋ฅ
Smelting.Effect.4=๋ฐ๋๋ผ XP ๋ถ์คํธ
Smelting.Effect.5=์ ๋ จ์ค ๋ฐ๋๋ผ XP ์ป๊ธฐ ์ฆ๊ฐ
Smelting.SubSkill.FluxMining.Name=์ ๋ ์ฑ๊ตด
Smelting.SubSkill.FluxMining.Description=์ฑ๊ตด์ค ๊ด๋ฌผ ์ฆ์ ์ฌ๋ จ ํ๋ฅ
+Smelting.SubSkill.FluxMining.Stat=์ ๋ ์ฑ๊ตด ํ๋ฅ
Smelting.FluxMining.Success=&a๊ด๋ฌผ์ด ์ฌ๋ จ๋์์ต๋๋ค!
Smelting.Listener=์ ๋ จ(Smelting):
Smelting.SkillName=์ ๋ จ
+
#COMMAND DESCRIPTIONS
Commands.Description.addlevels=mcMMO ๋ ๋ฒจ์ ์ ์ ์๊ฒ ์ถ๊ฐ
Commands.Description.adminchat=mcMMO ๊ด๋ฆฌ์ ์ฑํ
์ผ๊ธฐ/๋๊ธฐ๋ ๊ด๋ฆฌ์ ์ฑํ
๋ฉ์ธ์ง ๋ณด๋ด๊ธฐ
@@ -943,6 +1199,7 @@ Commands.Description.hardcore=mcMMO ํ๋์ฝ์ด ํ๋ฅ ์์ ์ด๋ ํ๋์ฝ
Commands.Description.inspect=๋ค๋ฅธ ํ๋ ์ด์ด์ mcMMO ์์ธํ ์ ๋ณด ๋ณด๊ธฐ
Commands.Description.mcability=mcMMO ์ฐ-ํด๋ฆญ ๋ฅ๋ ฅ ์ผ๊ธฐ/๋๊ธฐ
Commands.Description.mccooldown=๋ชจ๋ mcMMO ๋ฅ๋ ฅ ์ฌ ์ฌ์ฉ ๋๊ธฐ์๊ฐ ๋ณด๊ธฐ
+Commands.Description.mcchatspy=mcMMO ํํฐ ์ฑํ
๊ฐ์ ์ผ๊ธฐ/๋๊ธฐ
Commands.Description.mcgod=mcMMO ๋ถ์ฌ์ -๋ชจ๋ ์ผ๊ธฐ/๋๊ธฐ
Commands.Description.mchud=mcMMO HUD ๋ฐฉ์ ๋ณ๊ฒฝ
Commands.Description.mcmmo=mcMMO ์ ์์ ์ค๋ช
๋ณด๊ธฐ
@@ -955,6 +1212,7 @@ Commands.Description.mcscoreboard=๋น์ ์ mcMMO ์ ์ํ ๊ด๋ฆฌ
Commands.Description.mcstats=์์ ์ mcMMO ๋ ๋ฒจ๊ณผ XP ๋ณด๊ธฐ
Commands.Description.mctop=mcMMO ์ ์ํ ๋ณด๊ธฐ
Commands.Description.mmoedit=์ ์ ์ mcMMO ๋ ๋ฒจ ์์
+Commands.Description.mmodebug=๋ธ๋ก์ ๋๋ฆด ๋ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ ๋๋ฒ๊ทธ ๋ชจ๋๋ฅผ ์ผ๊ธฐ/๋๊ธฐ.
Commands.Description.mmoupdate=mcMMO ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ flatfile์์ MySQL๋ก ์ ํ
Commands.Description.mcconvert=๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์
๋๋ ๊ฒฝํ ๊ณต์ ํ์
์ ํ
Commands.Description.mmoshowdb=ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์
์ด๋ฆ ๋ณด๊ธฐ(๋์ค์ /mmoupdate์ ํจ๊ป ์ฐ์
๋๋ค)
@@ -963,13 +1221,13 @@ Commands.Description.partychat=mcMMO ํํฐ ์ฑํ
์ผ๊ธฐ/๋๊ธฐ๋ ํํฐ ์ฑ
Commands.Description.ptp=mcMMO ํํฐ ๋งด๋ฒ ํ
๋ ํฌํธ
Commands.Description.Skill=mcMMO ๊ธฐ์ {0}์ ์์ธํ ์ ๋ณด ๋ณด๊ธฐ
Commands.Description.skillreset=์ ์ ์ mcMMO ๋ ๋ฒจ ์ฌ์ค์
-Commands.Description.vampirism=mcMMO ๋ฑํ์ด์ด๋ฆฌ์ ๋น์จ์ด๋ ๋ฑํ์ด์ด๋ฆฌ์ ๋ชจ๋ ์ผ๊ธฐ/๋๊ธฐ
+Commands.Description.vampirism=mcMMO ๋ฑํ์ด์ด๋ฆฌ์ฆ ๋น์จ์ด๋ ๋ฑํ์ด์ด๋ฆฌ์ฆ ๋ชจ๋ ์ผ๊ธฐ/๋๊ธฐ
Commands.Description.xplock=๋ช
ํํ mcMMO ๊ธฐ์ ์ mcMMO xp ๋ฐ๋ฅผ ์ ๊ธ
Commands.Description.xprate=mcMMO XP ๋ฐฐ์จ ์์ ์ด๋ mcMMO XP ์ด๋ฒคํธ ์์
#UPDATE CHECKER
UpdateChecker.outdated=๋น์ ์ mcMMO ๊ตฌ๋ฒ์ ์ ์ฌ์ฉ์ค์
๋๋ค!
-UpdateChecker.newavailable=์ ๋ฒ์ ์ด BukkitDev์ ์
๋ก๋๋์ด ์์ต๋๋ค.
+UpdateChecker.newavailable=์ ๋ฒ์ ์ด Spigot์ ์
๋ก๋๋์ด ์์ต๋๋ค.
#SCOREBOARD HEADERS
Scoreboard.Header.PlayerStats=mcMMO ์คํ
@@ -983,29 +1241,49 @@ Scoreboard.Misc.CurrentXP=&aํ์ฌ XP
Scoreboard.Misc.RemainingXP=๋จ์ XP
Scoreboard.Misc.Cooldown=&d์ฌ ์ฌ์ฉ ๋๊ธฐ์๊ฐ
Scoreboard.Misc.Overall=&6์ข
ํฉ
+Scoreboard.Misc.Ability=๋ฅ๋ ฅ
#DATABASE RECOVERY
-Profile.Loading.Success=&a๋น์ ์ mcMMO ํ๋กํ์ผ์ด ๋ถ๋ฌ์์ก์ต๋๋ค.
+Profile.PendingLoad=&c๋น์ ์ mcMMO ํ๋กํ์ผ์ ์์ง ๋ถ๋ฌ์ค์ง ๋ชปํ์ต๋๋ค.
+Profile.Loading.Success=&a๋น์ ์ mcMMO ํ๋กํ์ผ์ ๋ถ๋ฌ์์ต๋๋ค.
Profile.Loading.Failure=mcMMO๋ ์ฌ์ ํ ๋น์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ๋น์ ์ ์๋ง๋ &b์๋ฒ๊ด๋ฆฌ์์ ์ฐ๋ฝ&cํ๊ธฐ๋ฅผ ์ํ ๊ฒ์
๋๋ค.\n&e๋น์ ์ ์ฌ์ ํ ์๋ฒ์์ ๊ฒ์์ค์ด์ง๋ง, ๋น์ ์ &lmcMMO ๋ ๋ฒจ์ด ์๊ณ &e ๋น์ ์ด ์ป์ ์ด๋ XP๋ &l์ ์ฅ๋์ง ์์ ๊ฒ๋๋ค&e.
Profile.Loading.AdminFailureNotice=&4[A]&c mcMMO๋ &e{0}&c ํ๋ ์ด์ด ๋ฐ์ดํฐ ์ฝ๊ธฐ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค. &d๋น์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์น๋ฅผ ๊ฒ์ฌํด์ฃผ์ธ์.
-Commands.XPBar.Usage=Proper usage is /mmoxpbar
-Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
-Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.
+Profile.Loading.FailurePlayer=mcMMO๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ก๋ ์๋ ํ์: {0}ํ. ์ด ๋ฌธ์ ์ ๋ํด ์๋ฒ ๊ด๋ฆฌ์์๊ฒ ๋ฌธ์ํ์ญ์์ค. ๋ฐ์ดํฐ๊ฐ ๋ก๋๋์ง ์์ ๋์ XP๋ฅผ ํ๋ํ๊ฑฐ๋ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
+Profile.Loading.FailureNotice=&4[A]&c mcMMO๋ &e{0}&c ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค. &d๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ์ ํ์ธํ์ญ์์ค. ํ์ฌ๊น์ง ์๋ํ ํ์: {1}.
+Commands.XPBar.Usage=์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ: /mmoxpbar <์คํฌ๋ช
| reset>
+Commands.Description.mmoxpbar=mcMMO XP ๋ฐ์ ๋ํ ํ๋ ์ด์ด ์ค์
+Commands.Description.mmocompat=mcMMO์ ํธํ ๋ชจ๋ ๋๋ ์์ ํ ๊ธฐ๋ฅ ์ฌ๋ถ์ ๋ํ ์ ๋ณด
-#OVERHAULs
-Overhaul.Levelup=&l{0} &r(์ด)๊ฐ ๋ ๋ฒจ &r&a&l{2}&r&f ๋ก ์ฑ์ฅ ํ์ต๋๋ค.
-Overhaul.Name.Acrobatics=๊ณก์
-Overhaul.Name.Alchemy=์ฐ๊ธ์
-Overhaul.Name.Archery=๊ถ์
-Overhaul.Name.Axes=๋ถ์
-Overhaul.Name.Excavation=๋ฐ๊ตด
-Overhaul.Name.Fishing=๋์
-Overhaul.Name.Herbalism=์ฝ์ดํ
-Overhaul.Name.Mining=์ฑ๊ด
-Overhaul.Name.Repair=์๋ฆฌ
-Overhaul.Name.Salvage=ํ์
-Overhaul.Name.Smelting=์ ๋ จ
-Overhaul.Name.Swords=๊ฒ์
-Overhaul.Name.Taming=์กฐ๋ จ
-Overhaul.Name.Unarmed=๋น๋ฌด์ฅ
-Overhaul.Name.Woodcutting=๋ฒ๋ชฉ
+#Holiday
+Holiday.AprilFools.Levelup=&6{0}์(๋) ์ด์ &a{1}&6๋ ๋ฒจ์
๋๋ค!
+Holiday.Anniversary=&9{0}์ฃผ๋
์ ์ถํํฉ๋๋ค!\n&9nossr50์ ๋ชจ๋ ์์
๊ณผ ๊ฐ๋ฐ์๋ค์ ๊ธฐ๋ฆฌ๊ธฐ ์ํด ๋ถ๊ฝ์ผ๋ฅผ ์ ๋ฌผํฉ๋๋ค!
+
+#Reminder Messages
+Reminder.Squelched=&7์๋ฆผ: ํ์ฌ mcMMO๋ก๋ถํฐ ์๋ฆผ์ ๋ฐ์ง ์๊ณ ์์ต๋๋ค. ์๋ฆผ์ ํ์ฑํํ๋ ค๋ฉด ๋ค์ /mcnotify ๋ช
๋ น์ ์คํํ์ญ์์ค. ์ด๊ฒ์ ์๋์ผ๋ก ๋งค ์๊ฐ๋ง๋ค ์๋ฆผ์ด ์ ์ก๋๋ ๊ฒ์
๋๋ค.
+
+#Locale
+Locale.Reloaded=&a๋ฒ์ญ์ ๋ฆฌ๋ก๋ํ์ต๋๋ค!
+
+#Player Leveling Stuff
+LevelCap.PowerLevel=&6(&amcMMO&6) &eํ์ ๋ ๋ฒจ &c{0}&e์ ๋๋ฌํ์ต๋๋ค. ์ด์ ๋ถํฐ ์คํฌ ๋ ๋ฒจ์ด ์์นํ์ง ์์ต๋๋ค.
+LevelCap.Skill=&6(&amcMMO&6) &e&6{1}&e ์คํฌ์ ๋ ๋ฒจ ์บก &c{0}&e์ ๋๋ฌํ์ต๋๋ค. ์ด์ ๋ถํฐ ์ด ์คํฌ์ ๋ ๋ฒจ์ด ์์นํ์ง ์์ต๋๋ค.
+Commands.XPBar.Usage=์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ: /mmoxpbar <์คํฌ๋ช
| reset>
+Commands.Description.mmoxpbar=mcMMO XP ๋ฐ์ ๋ํ ํ๋ ์ด์ด ์ค์
+Commands.Description.mmocompat=mcMMO์ ํธํ ๋ชจ๋ ๋๋ ์์ ํ ๊ธฐ๋ฅ ์ฌ๋ถ์ ๋ํ ์ ๋ณด
+Compatibility.Layer.Unsupported=&6{0}&6์ ํธํ์ฑ์ ์ด ๋ฒ์ ์ Minecraft์์ ์ง์๋์ง ์์ต๋๋ค.
+Compatibility.Layer.PartialSupport=&6{0}&6์ ํธํ์ฑ์ ์ด ๋ฒ์ ์ Minecraft์์ ์์ ํ ์ง์๋์ง ์์ง๋ง, mcMMO๋ ์ผ๋ถ ๊ธฐ๋ฅ์ ์๋ฎฌ๋ ์ด์
ํ๊ธฐ ์ํด ๋ณด์กฐ ์์คํ
์ ์คํ ์ค์
๋๋ค.
+Commands.XPBar.DisableAll=&6๋ชจ๋ mcMMO XP ๋ฐ๊ฐ ๋นํ์ฑํ๋์์ต๋๋ค. ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ๋ณต์ํ๋ ค๋ฉด /mmoxpbar reset์ ์ฌ์ฉํ์ธ์.
+
+#Modern Chat Settings
+Chat.Style.Admin=&b(A) &r{0} &b\u2192 &r{1}
+Chat.Style.Party=&a(P) &r{0} &a\u2192 &r{1}
+Chat.Style.Party.Leader=&a(P) &r{0} &6\u2192 &r{1}
+Chat.Identity.Console=&6* ์ฝ์ *
+Chat.Channel.On=&6(&amcMMO-Chat&6) &e๋น์ ์ ์ฑํ
๋ฉ์์ง๋ ์ด์ &a{0}&e ์ฑํ
์ฑ๋๋ก ์๋ ์ ๋ฌ๋ฉ๋๋ค.
+Chat.Channel.Off=&6(&amcMMO-Chat&6) &7๋น์ ์ ์ฑํ
๋ฉ์์ง๋ ๋ ์ด์ ํน์ ์ฑํ
์ฑ๋๋ก ์๋ ์ ๋ฌ๋์ง ์์ต๋๋ค.
+Chat.Spy.Party=&6[&eSPY&6-&a{2}&6] &r{0} &b\u2192 &r{1}
+Broadcasts.LevelUpMilestone=&6(&amcMMO&6) {0}&7๋์ด &3{2}&7์์ ๋ ๋ฒจ &a{1}&7์ ๋๋ฌํ์ต๋๋ค!
+Broadcasts.PowerLevelUpMilestone=&6(&amcMMO&6) {0}&7๋์ด ํ์ ๋ ๋ฒจ &a{1}&7์ ๋๋ฌํ์ต๋๋ค!
+Scoreboard.Recovery=mcMMO ์ ์ํ์ ๋ณต๊ตฌํ๋ ์ค์
๋๋ค...
+Scoreboard.Disabled=์ด ์๋ฒ์ mcMMO ์ ์ํ์ด ๋นํ์ฑํ๋์์ต๋๋ค. ์ด ์ค์ ์ mcMMO/config.yml์์ ์ฐพ์ ์ ์์ต๋๋ค.
+Scoreboard.NotSetupYet=๋น์ ์ mcMMO ์ ์ํ์ด ์์ง ์ค์ ๋์ง ์์์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด๋ณด์ธ์.
diff --git a/src/main/resources/locale/locale_zh_CN.properties b/src/main/resources/locale/locale_zh_CN.properties
index 0b139369c..d7c53438e 100644
--- a/src/main/resources/locale/locale_zh_CN.properties
+++ b/src/main/resources/locale/locale_zh_CN.properties
@@ -518,7 +518,7 @@ Unarmed.SubSkill.IronGrip.Name=้่
Unarmed.SubSkill.IronGrip.Description=้ฒๆญขไฝ ่ขซ็ผดๆขฐ
Unarmed.SubSkill.IronGrip.Stat=้่
่งฆๅๆฆ็
Unarmed.SubSkill.BlockCracker.Name=ๆนๅ็ฒ็ขๆบ
-Unarmed.SubSkill.BlockCracker.Description=็จๆณๅคดๆ็ขๆฏๅคด
+Unarmed.SubSkill.BlockCracker.Description=็จๆณๅคดๆ็ข็ณๅคด
Unarmed.Listener=ๆ ผๆ(Unarmed):
Unarmed.SkillName=ๆ ผๆ
Unarmed.Skills.Berserk.Off=**็ๆด็ปๆ**
diff --git a/src/main/resources/skillranks.yml b/src/main/resources/skillranks.yml
index 6e68929a0..1a305921b 100644
--- a/src/main/resources/skillranks.yml
+++ b/src/main/resources/skillranks.yml
@@ -406,8 +406,22 @@ Fishing:
Shake:
Standard:
Rank_1: 15
+ Rank_2: 20
+ Rank_3: 25
+ Rank_4: 30
+ Rank_5: 40
+ Rank_6: 50
+ Rank_7: 60
+ Rank_8: 70
RetroMode:
Rank_1: 150
+ Rank_2: 200
+ Rank_3: 250
+ Rank_4: 300
+ Rank_5: 400
+ Rank_6: 500
+ Rank_7: 600
+ Rank_8: 700
MasterAngler:
Standard:
Rank_1: 1