2
0
Эх сурвалжийг харах

Clean up some of our messes.

GJ 11 жил өмнө
parent
commit
43e2c813d1
47 өөрчлөгдсөн 133 нэмэгдсэн , 225 устгасан
  1. 1 5
      src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java
  2. 1 5
      src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java
  3. 2 11
      src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java
  4. 2 6
      src/main/java/com/gmail/nossr50/commands/party/PartyInfoCommand.java
  5. 1 1
      src/main/java/com/gmail/nossr50/commands/party/PartyItemShareCommand.java
  6. 1 1
      src/main/java/com/gmail/nossr50/commands/player/McrankCommand.java
  7. 1 1
      src/main/java/com/gmail/nossr50/commands/player/MctopCommand.java
  8. 2 2
      src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java
  9. 6 7
      src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java
  10. 8 8
      src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java
  11. 1 1
      src/main/java/com/gmail/nossr50/datatypes/experience/FormulaType.java
  12. 1 1
      src/main/java/com/gmail/nossr50/datatypes/party/Party.java
  13. 1 4
      src/main/java/com/gmail/nossr50/datatypes/party/PartyFeature.java
  14. 1 1
      src/main/java/com/gmail/nossr50/datatypes/party/ShareMode.java
  15. 2 2
      src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java
  16. 1 1
      src/main/java/com/gmail/nossr50/datatypes/treasure/Rarity.java
  17. 2 4
      src/main/java/com/gmail/nossr50/metrics/MetricsManager.java
  18. 2 8
      src/main/java/com/gmail/nossr50/runnables/items/TeleportationWarmup.java
  19. 1 2
      src/main/java/com/gmail/nossr50/runnables/skills/AlchemyBrewCheckTask.java
  20. 1 1
      src/main/java/com/gmail/nossr50/runnables/skills/BleedTimerTask.java
  21. 2 3
      src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java
  22. 1 9
      src/main/java/com/gmail/nossr50/skills/repair/Repair.java
  23. 3 4
      src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java
  24. 1 5
      src/main/java/com/gmail/nossr50/util/LogFilter.java
  25. 2 2
      src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java
  26. 4 4
      src/main/java/com/gmail/nossr50/util/Motd.java
  27. 0 30
      src/main/java/com/gmail/nossr50/util/StringUtils.java
  28. 4 14
      src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/HashChunkManager.java
  29. 3 7
      src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java
  30. 1 1
      src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java
  31. 1 1
      src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java
  32. 4 4
      src/main/resources/locale/locale_cs_CZ.properties
  33. 19 19
      src/main/resources/locale/locale_en_US.properties
  34. 10 10
      src/main/resources/locale/locale_es.properties
  35. 1 1
      src/main/resources/locale/locale_hr_HR.properties
  36. 2 2
      src/main/resources/locale/locale_hu_HU.properties
  37. 5 5
      src/main/resources/locale/locale_it.properties
  38. 1 1
      src/main/resources/locale/locale_ko.properties
  39. 5 5
      src/main/resources/locale/locale_lv.properties
  40. 2 2
      src/main/resources/locale/locale_nl.properties
  41. 1 1
      src/main/resources/locale/locale_no.properties
  42. 12 12
      src/main/resources/locale/locale_pl.properties
  43. 1 1
      src/main/resources/locale/locale_pt_PT.properties
  44. 2 2
      src/main/resources/locale/locale_ru.properties
  45. 1 1
      src/main/resources/locale/locale_sv.properties
  46. 1 1
      src/main/resources/locale/locale_zh_CN.properties
  47. 6 6
      src/main/resources/locale/locale_zh_TW.properties

+ 1 - 5
src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java

@@ -112,11 +112,7 @@ public abstract class ExperienceCommand implements TabExecutor {
     protected abstract void handlePlayerMessageSkill(Player player, int value, SkillType skill);
 
     private boolean validateArguments(CommandSender sender, String skillName, String value) {
-        if (CommandUtils.isInvalidInteger(sender, value) || (!skillName.equalsIgnoreCase("all") && CommandUtils.isInvalidSkill(sender, skillName))) {
-            return false;
-        }
-
-        return true;
+        return !(CommandUtils.isInvalidInteger(sender, value) || (!skillName.equalsIgnoreCase("all") && CommandUtils.isInvalidSkill(sender, skillName)));
     }
 
     protected static void handleSenderMessage(CommandSender sender, String playerName, SkillType skill) {

+ 1 - 5
src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java

@@ -134,11 +134,7 @@ public class SkillresetCommand implements TabExecutor {
     }
 
     private boolean validateArguments(CommandSender sender, String skillName) {
-        if (CommandUtils.isInvalidSkill(sender, skillName) && !skillName.equalsIgnoreCase("all")) {
-            return false;
-        }
-
-        return true;
+        return !(CommandUtils.isInvalidSkill(sender, skillName) && !skillName.equalsIgnoreCase("all"));
     }
 
     protected static void handleSenderMessage(CommandSender sender, String playerName, SkillType skill) {

+ 2 - 11
src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java

@@ -1,9 +1,6 @@
 package com.gmail.nossr50.commands.party;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
@@ -220,13 +217,7 @@ public class PartyCommand implements TabExecutor {
     }
 
     private String[] extractArgs(String[] args) {
-        String[] newArgs = new String[args.length - 1];
-
-        for (int i = 1; i < args.length; i++) {
-            newArgs[i - 1] = args[i];
-        }
-
-        return newArgs;
+        return Arrays.copyOfRange(args, 1, args.length - 1);
     }
 
     private boolean isItemShareCategory(String category) {

+ 2 - 6
src/main/java/com/gmail/nossr50/commands/party/PartyInfoCommand.java

@@ -47,7 +47,7 @@ public class PartyInfoCommand implements CommandExecutor {
         status.append(LocaleLoader.getString("Commands.Party.Status", party.getName(), LocaleLoader.getString("Party.Status." + (party.isLocked() ? "Locked" : "Unlocked")), party.getLevel()));
 
         if (!party.hasReachedLevelCap()) {
-            status.append(" (" + party.getXpToLevelPercentage() + ")");
+            status.append(" (").append(party.getXpToLevelPercentage()).append(")");
         }
 
         player.sendMessage(status.toString());
@@ -80,11 +80,7 @@ public class PartyInfoCommand implements CommandExecutor {
     }
 
     private boolean isUnlockedFeature(Party party, PartyFeature partyFeature) {
-        if (party.getLevel() < Config.getInstance().getPartyFeatureUnlockLevel(partyFeature)) {
-            return false;
-        }
-
-        return true;
+        return party.getLevel() >= Config.getInstance().getPartyFeatureUnlockLevel(partyFeature);
     }
 
     private void displayShareModeInfo(Player player, Party party) {

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/party/PartyItemShareCommand.java

@@ -38,7 +38,7 @@ public class PartyItemShareCommand implements CommandExecutor {
                 return true;
 
             case 3:
-                boolean toggle = false;
+                boolean toggle;
 
                 if (CommandUtils.shouldEnableToggle(args[2])) {
                     toggle = true;

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/player/McrankCommand.java

@@ -93,7 +93,7 @@ public class McrankCommand implements TabExecutor {
         }
 
         boolean useBoard = (sender instanceof Player) && (Config.getInstance().getRankUseBoard());
-        boolean useChat = useBoard ? Config.getInstance().getRankUseChat() : true;
+        boolean useChat = !useBoard || Config.getInstance().getRankUseChat();
 
         new McrankCommandAsyncTask(playerName, sender, useBoard, useChat).runTaskAsynchronously(mcMMO.p);
     }

+ 1 - 1
src/main/java/com/gmail/nossr50/commands/player/MctopCommand.java

@@ -99,7 +99,7 @@ public class MctopCommand implements TabExecutor {
 
     private void display(int page, SkillType skill, CommandSender sender) {
         boolean useBoard = (sender instanceof Player) && (Config.getInstance().getTopUseBoard());
-        boolean useChat = useBoard ? Config.getInstance().getTopUseChat() : true;
+        boolean useChat = !useBoard || Config.getInstance().getTopUseChat();
 
         new MctopCommandAsyncTask(page, skill, sender, useBoard, useChat).runTaskAsynchronously(mcMMO.p);
     }

+ 2 - 2
src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java

@@ -4,6 +4,7 @@ import java.text.DecimalFormat;
 import java.util.List;
 import java.util.Set;
 
+import com.gmail.nossr50.util.Motd;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
@@ -87,8 +88,7 @@ public abstract class SkillCommand implements TabExecutor {
                     player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Effects.Effects")));
 
                     if (isLucky) {
-                        String perkPrefix = LocaleLoader.getString("MOTD.PerksPrefix");
-                        player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Lucky.Name"), LocaleLoader.getString("Perks.Lucky.Desc", skillName)));
+                        player.sendMessage(Motd.PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Lucky.Name"), LocaleLoader.getString("Perks.Lucky.Desc", skillName)));
                     }
 
                     for (String message : effectMessages) {

+ 6 - 7
src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java

@@ -56,7 +56,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
             try {
                 in = new BufferedReader(new FileReader(usersFilePath));
                 StringBuilder writer = new StringBuilder();
-                String line = "";
+                String line;
 
                 while ((line = in.readLine()) != null) {
                     String[] character = line.split(":");
@@ -111,7 +111,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
             try {
                 in = new BufferedReader(new FileReader(usersFilePath));
                 StringBuilder writer = new StringBuilder();
-                String line = "";
+                String line;
 
                 while ((line = in.readLine()) != null) {
                     String[] character = line.split(":");
@@ -173,7 +173,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
             try {
                 in = new BufferedReader(new FileReader(usersFilePath));
                 StringBuilder writer = new StringBuilder();
-                String line = "";
+                String line;
 
                 while ((line = in.readLine()) != null) {
                     // Write out the same file but when we get to the player we want to remove, we skip his line.
@@ -390,8 +390,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
                         continue;
                     }
 
-                    PlayerProfile p = loadFromLine(character);
-                    return p;
+                    return loadFromLine(character);
                 }
 
                 // Didn't find the player, create a new one
@@ -515,7 +514,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
         synchronized (fileWritingLock) {
             try {
                 in = new BufferedReader(new FileReader(usersFilePath));
-                String line = "";
+                String line;
 
                 while ((line = in.readLine()) != null) {
                     String[] data = line.split(":");
@@ -594,7 +593,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
                 try {
                     in = new BufferedReader(new FileReader(usersFilePath));
                     StringBuilder writer = new StringBuilder();
-                    String line = "";
+                    String line;
                     HashSet<String> players = new HashSet<String>();
 
                     while ((line = in.readLine()) != null) {

+ 8 - 8
src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java

@@ -195,7 +195,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
 
         if (checkConnected()) {
             String query = skill == null ? "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing+alchemy" : skill.name().toLowerCase();
-            ResultSet resultSet = null;
+            ResultSet resultSet;
             PreparedStatement statement = null;
 
             try {
@@ -448,16 +448,16 @@ public final class SQLDatabaseManager implements DatabaseManager {
                     + "JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) "
                     + "WHERE u.user = ?");
             List<String> usernames = getStoredUsers();
-            ResultSet result = null;
+            ResultSet resultSet;
             int convertedUsers = 0;
             long startMillis = System.currentTimeMillis();
             for (String playerName : usernames) {
                 statement.setString(1, playerName);
                 try {
-                    result = statement.executeQuery();
-                    result.next();
-                    destination.saveUser(loadFromResult(playerName, result));
-                    result.close();
+                    resultSet = statement.executeQuery();
+                    resultSet.next();
+                    destination.saveUser(loadFromResult(playerName, resultSet));
+                    resultSet.close();
                 }
                 catch (SQLException e) {
                     // Ignore
@@ -798,7 +798,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
                 break;
         }
 
-        ResultSet resultSet = null;
+        ResultSet resultSet;
         HashMap<Integer, ArrayList<String>> rows = new HashMap<Integer, ArrayList<String>>();
         PreparedStatement statement = null;
 
@@ -984,7 +984,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
         int result = -1;
 
         if (checkConnected()) {
-            ResultSet resultSet = null;
+            ResultSet resultSet;
 
             try {
                 resultSet = statement.executeQuery();

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/experience/FormulaType.java

@@ -13,4 +13,4 @@ public enum FormulaType {
             return UNKNOWN;
         }
     }
-};
+}

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/party/Party.java

@@ -310,7 +310,7 @@ public class Party {
             }
 
             if (!nearMembers.contains(member) && !playerName.equalsIgnoreCase(memberName)) {
-                memberList.append(ChatColor.ITALIC + "");
+                memberList.append(ChatColor.ITALIC).append("");
             }
 
             memberList.append(memberName).append(ChatColor.RESET).append(" ");

+ 1 - 4
src/main/java/com/gmail/nossr50/datatypes/party/PartyFeature.java

@@ -45,10 +45,7 @@ public enum PartyFeature {
                 return false;
         }
 
-        if (Permissions.partySubcommand(player, partySubCommandType)) {
-            return true;
-        }
 
-        return false;
+        return Permissions.partySubcommand(player, partySubCommandType);
     }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/party/ShareMode.java

@@ -22,4 +22,4 @@ public enum ShareMode {
             return null;
         }
     }
-};
+}

+ 2 - 2
src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java

@@ -725,12 +725,12 @@ public class McMMOPlayer {
         switch (mode) {
             case ADMIN:
                 adminChatMode = !adminChatMode;
-                partyChatMode = adminChatMode ? false : partyChatMode;
+                partyChatMode = !adminChatMode && partyChatMode;
                 return;
 
             case PARTY:
                 partyChatMode = !partyChatMode;
-                adminChatMode = partyChatMode ? false : adminChatMode;
+                adminChatMode = !partyChatMode && adminChatMode;
                 return;
 
             default:

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/treasure/Rarity.java

@@ -17,4 +17,4 @@ public enum Rarity {
             return COMMON;
         }
     }
-};
+}

+ 2 - 4
src/main/java/com/gmail/nossr50/metrics/MetricsManager.java

@@ -79,7 +79,8 @@ public class MetricsManager {
 
                 if (version.contains("-")) {
                     String majorVersion = version.substring(0, version.indexOf("-"));
-                    String subVersion = "";
+                    String subVersion;
+
                     if (isOfficialBuild) {
                         int startIndex = version.indexOf("-");
                         if (version.substring(startIndex + 1).contains("-")) {
@@ -96,9 +97,6 @@ public class MetricsManager {
                     version = majorVersion + "~=~" + subVersion;
                     haveVersionInformation = true;
                 }
-                else {
-                    haveVersionInformation = false;
-                }
 
                 if (haveVersionInformation) {
                     versionDonutGraph.addPlotter(new Metrics.Plotter(version) {

+ 2 - 8
src/main/java/com/gmail/nossr50/runnables/items/TeleportationWarmup.java

@@ -13,9 +13,7 @@ import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.skills.SkillUtils;
 
 public class TeleportationWarmup extends BukkitRunnable {
-    private static Player teleportingPlayer;
     private McMMOPlayer mcMMOPlayer;
-    private static Player targetPlayer;
     private McMMOPlayer mcMMOTarget;
 
     public TeleportationWarmup(McMMOPlayer mcMMOPlayer, McMMOPlayer mcMMOTarget) {
@@ -25,12 +23,8 @@ public class TeleportationWarmup extends BukkitRunnable {
 
     @Override
     public void run() {
-        checkPartyTeleport();
-    }
-
-    private void checkPartyTeleport() {
-        teleportingPlayer = mcMMOPlayer.getPlayer();
-        targetPlayer = mcMMOTarget.getPlayer();
+        Player teleportingPlayer = mcMMOPlayer.getPlayer();
+        Player targetPlayer = mcMMOTarget.getPlayer();
         Location previousLocation = mcMMOPlayer.getTeleportCommenceLocation();
         Location newLocation = mcMMOPlayer.getPlayer().getLocation();
         long recentlyHurt = mcMMOPlayer.getRecentlyHurt();

+ 1 - 2
src/main/java/com/gmail/nossr50/runnables/skills/AlchemyBrewCheckTask.java

@@ -17,7 +17,6 @@ public class AlchemyBrewCheckTask extends BukkitRunnable {
     private Player player;
     private Block brewingStand;
     private ItemStack[] oldInventory;
-    private ItemStack[] newInventory;
 
     public AlchemyBrewCheckTask(Player player, BrewingStand brewingStand) {
         this.player = player;
@@ -27,7 +26,7 @@ public class AlchemyBrewCheckTask extends BukkitRunnable {
 
     @Override
     public void run() {
-        this.newInventory = Arrays.copyOfRange(((BrewingStand) brewingStand.getState()).getInventory().getContents(), 0, 4);
+        ItemStack[] newInventory = Arrays.copyOfRange(((BrewingStand) brewingStand.getState()).getInventory().getContents(), 0, 4);
 
         if (Alchemy.brewingStandMap.containsKey(brewingStand)) {
             if (oldInventory[INGREDIENT_SLOT] == null || newInventory[INGREDIENT_SLOT] == null || !oldInventory[INGREDIENT_SLOT].isSimilar(newInventory[INGREDIENT_SLOT]) || !AlchemyPotionBrewer.isValidBrew(player, newInventory)) {

+ 1 - 1
src/main/java/com/gmail/nossr50/runnables/skills/BleedTimerTask.java

@@ -28,7 +28,7 @@ public class BleedTimerTask extends BukkitRunnable {
                 continue;
             }
 
-            int damage = 0;
+            int damage;
 
             if (entity instanceof Player) {
                 damage = 1;

+ 2 - 3
src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java

@@ -1,6 +1,5 @@
 package com.gmail.nossr50.skills.herbalism;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
@@ -134,7 +133,7 @@ public class HerbalismManager extends SkillManager {
 
         Collection<ItemStack> drops = null;
         int amount = 1;
-        int xp = 0;
+        int xp;
         boolean greenTerra = mcMMOPlayer.getAbilityMode(skill.getAbility());
 
         if (ModUtils.isCustomHerbalismBlock(blockState)) {
@@ -203,7 +202,7 @@ public class HerbalismManager extends SkillManager {
             return false;
         }
 
-        List<HylianTreasure> treasures = new ArrayList<HylianTreasure>();
+        List<HylianTreasure> treasures;
 
         switch (blockState.getType()) {
             case DEAD_BUSH:

+ 1 - 9
src/main/java/com/gmail/nossr50/skills/repair/Repair.java

@@ -33,15 +33,7 @@ public class Repair {
      * @return true if the item is salvageable, false otherwise
      */
     public static boolean isSalvageable(ItemStack item) {
-        if (Config.getInstance().getSalvageTools() && ItemUtils.isMinecraftTool(item)) {
-            return true;
-        }
-
-        if (Config.getInstance().getSalvageArmor() && !ItemUtils.isChainmailArmor(item) && ItemUtils.isMinecraftArmor(item)) {
-            return true;
-        }
-
-        return false;
+        return (Config.getInstance().getSalvageTools() && ItemUtils.isMinecraftTool(item)) || (Config.getInstance().getSalvageArmor() && !ItemUtils.isChainmailArmor(item) && ItemUtils.isMinecraftArmor(item));
     }
 
     public static String getAnvilMessage(Material type) {

+ 3 - 4
src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java

@@ -26,9 +26,7 @@ public class Unarmed {
         if (inventory.containsAtLeast(dropStack, 1)) {
             int nextSlot = 0;
 
-            for (Iterator<ItemStack> iterator = inventory.iterator(); iterator.hasNext();) {
-                ItemStack itemstack = iterator.next();
-
+            for (ItemStack itemstack: inventory) {
                 if (dropStack.isSimilar(itemstack)) {
                     int itemAmount = itemstack.getAmount();
                     int itemMax = itemstack.getMaxStackSize();
@@ -71,7 +69,8 @@ public class Unarmed {
 
                 nextSlot++;
             }
-        } else if (firstEmpty != -1) {
+        }
+        else if (firstEmpty != -1) {
             drop.remove();
             dropStack.setAmount(dropAmount);
             inventory.setItem(firstEmpty, dropStack);

+ 1 - 5
src/main/java/com/gmail/nossr50/util/LogFilter.java

@@ -15,10 +15,6 @@ public class LogFilter implements Filter {
 
     @Override
     public boolean isLoggable(LogRecord record) {
-        if (record.getMessage().contains("[Debug]") && !debug) {
-            return false;
-        }
-
-        return true;
+        return !(record.getMessage().contains("[Debug]") && !debug);
     }
 }

+ 2 - 2
src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java

@@ -96,9 +96,9 @@ public final class MobHealthbarUtils {
         double currentHealth = Math.max(entity.getHealth() - damage, 0);
         double healthPercentage = (currentHealth / maxHealth) * 100.0D;
 
-        int fullDisplay = 0;
+        int fullDisplay;
         ChatColor color = ChatColor.BLACK;
-        String symbol = "";
+        String symbol;
 
         switch (profile.getMobHealthbarType()) {
             case HEARTS:

+ 4 - 4
src/main/java/com/gmail/nossr50/util/Motd.java

@@ -12,7 +12,7 @@ import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.util.skills.PerksUtils;
 
 public final class Motd {
-    private static final String perkPrefix = LocaleLoader.getString("MOTD.PerksPrefix");
+    public static final String PERK_PREFIX = LocaleLoader.getString("MOTD.PerksPrefix") + " ";
     private static final PluginDescriptionFile pluginDescription = mcMMO.p.getDescription();
 
     private Motd() {}
@@ -101,7 +101,7 @@ public final class Motd {
 
         if (cooldownReduction > 0.0) {
             DecimalFormat percent = new DecimalFormat("##0.00%");
-            player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Cooldowns.Name"), LocaleLoader.getString("Perks.Cooldowns.Desc", percent.format(cooldownReduction))));
+            player.sendMessage(PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Cooldowns.Name"), LocaleLoader.getString("Perks.Cooldowns.Desc", percent.format(cooldownReduction))));
         }
     }
 
@@ -114,7 +114,7 @@ public final class Motd {
         int perkAmount = PerksUtils.handleActivationPerks(player, 0, 0);
 
         if (perkAmount > 0) {
-            player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.ActivationTime.Name"), LocaleLoader.getString("Perks.ActivationTime.Desc", perkAmount)));
+            player.sendMessage(PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.ActivationTime.Name"), LocaleLoader.getString("Perks.ActivationTime.Desc", perkAmount)));
         }
     }
 
@@ -126,7 +126,7 @@ public final class Motd {
     public static void displayLuckyPerks(Player player) {
         for (SkillType skill : SkillType.values()) {
             if (Permissions.lucky(player, skill)) {
-                player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Lucky.Name"), LocaleLoader.getString("Perks.Lucky.Desc.Login")));
+                player.sendMessage(PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Lucky.Name"), LocaleLoader.getString("Perks.Lucky.Desc.Login")));
                 return;
             }
         }

+ 0 - 30
src/main/java/com/gmail/nossr50/util/StringUtils.java

@@ -69,36 +69,6 @@ public class StringUtils {
         return prettyString;
     }
 
-    /**
-     * Gets the int represented by this string.
-     *
-     * @param string The string to parse
-     * @return the int represented by this string
-     */
-    public static int getInt(String string) {
-        try {
-            return Integer.parseInt(string);
-        }
-        catch (NumberFormatException nFE) {
-            return 0;
-        }
-    }
-
-    /**
-     * Gets the long represented by this string.
-     *
-     * @param string The string to parse
-     * @return the long represented by this string
-     */
-    public static long getLong(String string) {
-        try {
-            return Long.parseLong(string);
-        }
-        catch (NumberFormatException nFE) {
-            return 0;
-        }
-    }
-
     /**
      * Determine if a string represents an Integer
      *

+ 4 - 14
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/HashChunkManager.java

@@ -233,17 +233,12 @@ public class HashChunkManager implements ChunkManager {
         for (String key : keys) {
             String[] info = key.split(",");
             if (worldName.equals(info[0])) {
-                int cx = 0;
-                int cz = 0;
-
                 try {
-                    cx = Integer.parseInt(info[1]);
-                    cz = Integer.parseInt(info[2]);
+                    saveChunk(Integer.parseInt(info[1]), Integer.parseInt(info[2]), world);
                 }
                 catch (Exception e) {
-                    continue;
+                    // Ignore
                 }
-                saveChunk(cx, cz, world);
             }
         }
     }
@@ -261,17 +256,12 @@ public class HashChunkManager implements ChunkManager {
         for (String key : keys) {
             String[] info = key.split(",");
             if (worldName.equals(info[0])) {
-                int cx = 0;
-                int cz = 0;
-
                 try {
-                    cx = Integer.parseInt(info[1]);
-                    cz = Integer.parseInt(info[2]);
+                    unloadChunk(Integer.parseInt(info[1]), Integer.parseInt(info[2]), world);
                 }
                 catch (Exception e) {
-                    continue;
+                    // Ignore
                 }
-                unloadChunk(cx, cz, world);
             }
         }
     }

+ 3 - 7
src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java

@@ -58,11 +58,7 @@ public final class CommandUtils {
     }
 
     public static boolean hidden(CommandSender sender, Player target, boolean hasPermission) {
-        if (sender instanceof Player && !((Player)sender).canSee(target) && !hasPermission) {
-            return true;
-        }
-
-        return false;
+        return sender instanceof Player && !((Player) sender).canSee(target) && !hasPermission;
     }
 
     public static boolean noConsoleUsage(CommandSender sender) {
@@ -195,10 +191,10 @@ public final class CommandUtils {
 
     public static String displaySkill(PlayerProfile profile, SkillType skill) {
         if (skill.isChildSkill()) {
-            return LocaleLoader.getString("Skills.ChildStats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener"), profile.getSkillLevel(skill));
+            return LocaleLoader.getString("Skills.ChildStats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener"), " ", profile.getSkillLevel(skill));
         }
 
-        return LocaleLoader.getString("Skills.Stats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener"), profile.getSkillLevel(skill), profile.getSkillXpLevel(skill), profile.getXpToLevel(skill));
+        return LocaleLoader.getString("Skills.Stats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener"), " ", profile.getSkillLevel(skill), profile.getSkillXpLevel(skill), profile.getXpToLevel(skill));
     }
 
     private static void printGroupedSkillData(Player inspect, CommandSender display, String header, List<SkillType> skillGroup) {

+ 1 - 1
src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java

@@ -402,6 +402,6 @@ public class ScoreboardManager {
     }
 
     public static void setRevertTimer(String playerName, int seconds) {
-        PLAYER_SCOREBOARDS.get(playerName).showBoardAndScheduleRevert(seconds * Misc.TICK_CONVERSION_FACTOR);;
+        PLAYER_SCOREBOARDS.get(playerName).showBoardAndScheduleRevert(seconds * Misc.TICK_CONVERSION_FACTOR);
     }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java

@@ -204,7 +204,7 @@ public class SkillUtils {
         return (event.getChance() * activationChance) > Misc.getRandom().nextInt(activationChance);
     }
 
-    public static boolean treasureDropSuccessful(Player player, double dropChance, int activationChance) {;
+    public static boolean treasureDropSuccessful(Player player, double dropChance, int activationChance) {
         SecondaryAbilityWeightedActivationCheckEvent event = new SecondaryAbilityWeightedActivationCheckEvent(player, SecondaryAbility.EXCAVATION_TREASURE_HUNTER, dropChance / activationChance);
         mcMMO.p.getServer().getPluginManager().callEvent(event);
         return (event.getChance() * activationChance) > (Misc.getRandom().nextDouble() * activationChance);

+ 4 - 4
src/main/resources/locale/locale_cs_CZ.properties

@@ -4,7 +4,7 @@ Acrobatics.DodgeChance=[[RED]]\u0160ance na \u00faskok: [[YELLOW]]{0}
 Acrobatics.Effect.0=Valeni
 Acrobatics.Effect.1=Redukuje nebo ru\u0161\u00ed zran\u011bn\u00ed zp\u016fsoben\u00e9 p\u00e1dem
 Acrobatics.Effect.2=\u0160\u0165astn\u00fd kotoul
-Acrobatics.Effect.3=Dvojt\u00e1 effectivita ne\u017e norm\u00e1ln\u00ed 
+Acrobatics.Effect.3=Dvojt\u00e1 effectivita ne\u017e norm\u00e1ln\u00ed
 Acrobatics.Effect.4=\u00dahyb
 Acrobatics.Effect.5=Sn\u00ed\u017een\u00e9 zran\u011bn\u00ed o polovinu
 Acrobatics.Listener=Akrobacie:
@@ -39,7 +39,7 @@ Axes.Combat.CriticalHit=[[RED]]KRITICK\u00dd Z\u00c1SAH!
 Axes.Combat.GI.Proc=[[GREEN]]**\u00daDER VELKOU SILOU**
 Axes.Combat.GI.Struck=[[RED]]**ZASAZENI S VYSSIM UCINKEM**
 Axes.Combat.SS.Length=[[RED]]Delka trvani Drtice lebek: [[YELLOW]]{0}s
-Axes.Effect.0=[[GREEN]]**Drtic lebek byl AKTIVOVAN**\n
+Axes.Effect.0=[[GREEN]]**Drtic lebek byl AKTIVOVAN**
 Axes.Effect.1=Ud\u011bl AoE zran\u011bn\u00ed
 Axes.Effect.2=Kriticky zasah
 Axes.Effect.3=Dvojite zraneni
@@ -443,8 +443,8 @@ Commands.Stats.Self=Tvoje statistiky
 Commands.Stats=[[RED]]- Shl\u00e9dnout svoje mcMMO statistiky
 Commands.ToggleAbility=[[RED]]- Aktivace schopnosti prav\u00fdm tla\u010d\u00edtkem.
 Commands.Usage.0=[[RED]]Spr\u00e1vn\u00e9 pou\u017eit\u00ed je /{0}
-Commands.Usage.1=[[RED]]Spr\u00e1vn\u00e9 pou\u017eit\u00ed je /{0} {1} 
-Commands.Usage.2=[[RED]]Spr\u00e1vn\u00e9 pou\u017eit\u00ed je /{0} {1} {2} 
+Commands.Usage.1=[[RED]]Spr\u00e1vn\u00e9 pou\u017eit\u00ed je /{0} {1}
+Commands.Usage.2=[[RED]]Spr\u00e1vn\u00e9 pou\u017eit\u00ed je /{0} {1} {2}
 Commands.Usage.3=[[RED]]Spr\u00e1vn\u00e9 pou\u017eit\u00ed je /{0} {1} {2} {3}
 Commands.Usage.Level=\u00darove\u0148
 Commands.Usage.Message=zprava

+ 19 - 19
src/main/resources/locale/locale_en_US.properties

@@ -25,7 +25,7 @@ Acrobatics.Effect.2=Graceful Roll
 Acrobatics.Effect.3=Twice as effective as a normal Roll
 Acrobatics.Effect.4=Dodge
 Acrobatics.Effect.5=Reduce attack damage by half
-Acrobatics.Listener=Acrobatics: 
+Acrobatics.Listener=Acrobatics:
 Acrobatics.Roll.Chance=[[RED]]Roll Chance: [[YELLOW]]{0}
 Acrobatics.Roll.GraceChance=[[RED]]Graceful Roll Chance: [[YELLOW]]{0}
 Acrobatics.Roll.Text=**Rolled**
@@ -55,7 +55,7 @@ Archery.Effect.2=Daze (Players)
 Archery.Effect.3=Disorients foes and deals {0} DMG
 Archery.Effect.4=Arrow Retrieval
 Archery.Effect.5=Chance to retrieve arrows from corpses
-Archery.Listener=Archery: 
+Archery.Listener=Archery:
 Archery.SkillName=ARCHERY
 Archery.Skillup=[[YELLOW]]Archery skill increased by {0}. Total ({1})
 
@@ -85,7 +85,7 @@ Axes.Effect.6=Armor Impact
 Axes.Effect.7=Strike with enough force to shatter armor
 Axes.Effect.8=Greater Impact
 Axes.Effect.9=Deal bonus damage to unarmored foes
-Axes.Listener=Axes: 
+Axes.Listener=Axes:
 Axes.SkillName=AXES
 Axes.Skills.SS.Off=[[RED]]**Skull Splitter has worn off**
 Axes.Skills.SS.On=[[GREEN]]**Skull Splitter ACTIVATED**
@@ -102,7 +102,7 @@ Excavation.Effect.1=3x Drop Rate, 3x EXP, +Speed
 Excavation.Effect.2=Treasure Hunter
 Excavation.Effect.3=Ability to dig for treasure
 Excavation.Effect.Length=[[RED]]Giga Drill Breaker Length: [[YELLOW]]{0}s
-Excavation.Listener=Excavation: 
+Excavation.Listener=Excavation:
 Excavation.SkillName=EXCAVATION
 Excavation.Skills.GigaDrillBreaker.Off=[[RED]]**Giga Drill Breaker has worn off**
 Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**GIGA DRILL BREAKER ACTIVATED**
@@ -136,7 +136,7 @@ Fishing.Effect.9=Improves chance of getting a bite while fishing
 Fishing.Effect.10=Ice Fishing
 Fishing.Effect.11=Allows you to fish in icy biomes
 Fishing.Chance.Raining=[[BLUE]] Rain Bonus
-Fishing.Listener=Fishing: 
+Fishing.Listener=Fishing:
 Fishing.Ability.TH.ItemFound=[[GRAY]]Treasure found!
 Fishing.Ability.TH.MagicFound=[[GRAY]]You feel a touch of magic with this catch...
 Fishing.Ability.TH.Boom=[[GRAY]]BOOM TIME!!!
@@ -173,7 +173,7 @@ Herbalism.Effect.11=Gives a small chance of finding rare items
 Herbalism.Effect.12=Shroom Thumb
 Herbalism.Effect.13=Spread mycelium to dirt & grass
 Herbalism.HylianLuck=[[GREEN]]The luck of Hyrule is with you today!
-Herbalism.Listener=Herbalism: 
+Herbalism.Listener=Herbalism:
 Herbalism.SkillName=HERBALISM
 Herbalism.Skills.GTe.Off=[[RED]]**Green Terra has worn off**
 Herbalism.Skills.GTe.On=[[GREEN]]**GREEN TERRA ACTIVATED**
@@ -201,7 +201,7 @@ Mining.Effect.8=Demolitions Expertise
 Mining.Effect.9=Decreases damage from TNT explosions
 Mining.Effect.Decrease=[[RED]]Demolitions Expert Damage Decrease: [[YELLOW]]{0}
 Mining.Effect.DropChance=[[RED]]Double Drop Chance: [[YELLOW]]{0}
-Mining.Listener=Mining: 
+Mining.Listener=Mining:
 Mining.SkillName=MINING
 Mining.Skills.SuperBreaker.Off=[[RED]]**Super Breaker has worn off**
 Mining.Skills.SuperBreaker.On=[[GREEN]]**SUPER BREAKER ACTIVATED**
@@ -240,7 +240,7 @@ Repair.Effect.17=Salvage Tools & Armor
 Repair.Error=[[DARK_RED]]mcMMO encountered an error attempting to repair this item!
 Repair.Listener.Anvil=[[DARK_RED]]You have placed an anvil, anvils can repair tools and armor.
 Repair.Listener.Anvil2=[[DARK_RED]]You have placed a Salvage anvil, use this to Salvage tools and armor.
-Repair.Listener=Repair: 
+Repair.Listener=Repair:
 Repair.SkillName=REPAIR
 Repair.Skills.AdeptSalvage=[[DARK_RED]]You're not skilled enough to Salvage items.
 Repair.Skills.AdeptDiamond=[[DARK_RED]]You're not skilled enough to repair Diamond.
@@ -289,8 +289,8 @@ Swords.Effect.4=Serrated Strikes Bleed+
 Swords.Effect.5={0} Tick Bleed
 Swords.Effect.6=Bleed
 Swords.Effect.7=Apply a bleed DoT
-Swords.Listener=Swords: 
-Swords.SkillName=SWORDS 
+Swords.Listener=Swords:
+Swords.SkillName=SWORDS
 Swords.Skills.SS.Off=[[RED]]**Serrated Strikes has worn off**
 Swords.Skills.SS.On=[[GREEN]]**SERRATED STRIKES ACTIVATED**
 Swords.Skills.SS.Refresh=[[GREEN]]Your [[YELLOW]]Serrated Strikes [[GREEN]]ability is refreshed!
@@ -341,7 +341,7 @@ Taming.Effect.7=Cactus/Lava Phobia, Fall DMG Immune
 Taming.Effect.8=Thick Fur
 Taming.Effect.9=DMG Reduction, Fire Resistance
 Taming.Listener.Wolf=[[DARK_GRAY]]Your wolf scurries back to you...
-Taming.Listener=Taming: 
+Taming.Listener=Taming:
 Taming.SkillName=TAMING
 Taming.Skillup=[[YELLOW]]Taming skill increased by {0}. Total ({1})
 Taming.Summon.Complete=[[GREEN]]Summoning complete
@@ -371,7 +371,7 @@ Unarmed.Effect.6=Arrow Deflect
 Unarmed.Effect.7=Deflect arrows
 Unarmed.Effect.8=Iron Grip
 Unarmed.Effect.9=Prevents you from being disarmed
-Unarmed.Listener=Unarmed: 
+Unarmed.Listener=Unarmed:
 Unarmed.SkillName=UNARMED
 Unarmed.Skills.Berserk.Off=[[RED]]**Berserk has worn off**
 Unarmed.Skills.Berserk.On=[[GREEN]]**BERSERK ACTIVATED**
@@ -392,7 +392,7 @@ Woodcutting.Effect.2=Leaf Blower
 Woodcutting.Effect.3=Blow Away Leaves
 Woodcutting.Effect.4=Double Drops
 Woodcutting.Effect.5=Double the normal loot
-Woodcutting.Listener=Woodcutting: 
+Woodcutting.Listener=Woodcutting:
 Woodcutting.SkillName=WOODCUTTING
 Woodcutting.Skills.TreeFeller.Off=[[RED]]**Tree Feller has worn off**
 Woodcutting.Skills.TreeFeller.On=[[GREEN]]**TREE FELLER ACTIVATED**
@@ -488,8 +488,8 @@ Commands.Party.Features.Header=[[RED]]-----[][[GREEN]]FEATURES[[RED]][]-----
 Commands.Party.Status=[[DARK_GRAY]]NAME: [[WHITE]]{0} {1} [[DARK_GRAY]]LEVEL: [[DARK_AQUA]]{2}
 Commands.Party.Status.Alliance=[[DARK_GRAY]]ALLY: [[WHITE]]{0}
 Commands.Party.UnlockedFeatures=[[DARK_GRAY]]Unlocked Features: [[GRAY]][[ITALIC]]{0}
-Commands.Party.ShareMode=[[DARK_GRAY]]SHARE MODE: 
-Commands.Party.ItemShare=[[GRAY]]ITEM [[DARK_AQUA]]({0}) 
+Commands.Party.ShareMode=[[DARK_GRAY]]SHARE MODE:
+Commands.Party.ItemShare=[[GRAY]]ITEM [[DARK_AQUA]]({0})
 Commands.Party.ExpShare=[[GRAY]]EXP [[DARK_AQUA]]({0})
 Commands.Party.ItemShareCategories=[[DARK_GRAY]]Sharing Items: [[GRAY]][[ITALIC]]{0}
 Commands.Party.MembersNear=[[DARK_GRAY]]NEAR YOU [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
@@ -530,7 +530,7 @@ Commands.ptp.Enabled=Party teleporting [[GREEN]]enabled
 Commands.ptp.Disabled=Party teleporting [[RED]]disabled
 Commands.ptp.NoRequests=[[RED]]You have no teleport requests at this time
 Commands.ptp.NoWorldPermissions=[[RED]][mcMMO] You do not have permission to teleport to the world {0}.
-Commands.ptp.Request1=[[YELLOW]]{0} [[GREEN]]has requested to teleport to you. 
+Commands.ptp.Request1=[[YELLOW]]{0} [[GREEN]]has requested to teleport to you.
 Commands.ptp.Request2=[[GREEN]]To teleport, type [[YELLOW]]/ptp accept[[GREEN]]. Request expires in [[RED]]{0} [[GREEN]]seconds.
 Commands.ptp.AcceptAny.Enabled=Party teleport request confirmation [[GREEN]]enabled
 Commands.ptp.AcceptAny.Disabled=Party teleport request confirmation [[RED]]disabled
@@ -545,7 +545,7 @@ Commands.Scoreboard.Clear=[[DARK_AQUA]]mcMMO scoreboard cleared.
 Commands.Scoreboard.NoBoard=[[RED]]The mcMMO scoreboard is not active.
 Commands.Scoreboard.Keep=[[DARK_AQUA]]The mcMMO scoreboard will stay up until you use [[GREEN]]/mcscoreboard clear[[DARK_AQUA]].
 Commands.Scoreboard.Timer=[[DARK_AQUA]]The mcMMO scoreboard will clear [[GOLD]]{0}[[DARK_AQUA]] seconds from now.
-Commands.Scoreboard.Help.0=[[GOLD]] == [[GREEN]]Help for [[RED]]/mcscoreboard[[GOLD]] == 
+Commands.Scoreboard.Help.0=[[GOLD]] == [[GREEN]]Help for [[RED]]/mcscoreboard[[GOLD]] ==
 Commands.Scoreboard.Help.1=[[DARK_AQUA]]/mcscoreboard[[AQUA]] clear [[WHITE]] - clear the McMMO scoreboard
 Commands.Scoreboard.Help.2=[[DARK_AQUA]]/mcscoreboard[[AQUA]] keep [[WHITE]] - keep the mcMMO scoreboard up
 Commands.Scoreboard.Help.3=[[DARK_AQUA]]/mcscoreboard[[AQUA]] time [n] [[WHITE]] - clear the McMMO scoreboard after [[LIGHT_PURPLE]]n[[WHITE]] seconds
@@ -866,7 +866,7 @@ MOTD.Donate=[[DARK_AQUA]]Donation Info:
 MOTD.Hardcore.Enabled=[[GOLD]][mcMMO] [[DARK_AQUA]]Hardcore Mode enabled: [[DARK_RED]]{0}
 MOTD.Hardcore.DeathStatLoss.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Skill Death Penalty: [[DARK_RED]]{0}%
 MOTD.Hardcore.Vampirism.Stats=[[GOLD]][mcMMO] [[DARK_AQUA]]Vampirism Stat Leech: [[DARK_RED]]{0}%
-MOTD.PerksPrefix=[[RED]][mcMMO Perks] 
+MOTD.PerksPrefix=[[RED]][mcMMO Perks]
 MOTD.Version=[[GOLD]][mcMMO] Running version [[DARK_AQUA]]{0}
 MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO Website
 
@@ -886,7 +886,7 @@ Smelting.Effect.5=Increase vanilla XP gained while smelting
 Smelting.Effect.6=Flux Mining
 Smelting.Effect.7=Chance for ores to be instantly smelted while mining
 Smelting.FluxMining.Success=[[GREEN]]That ore smelted itself!
-Smelting.Listener=Smelting: 
+Smelting.Listener=Smelting:
 Smelting.SkillName=SMELTING
 
 #COMMAND DESCRIPTIONS

+ 10 - 10
src/main/resources/locale/locale_es.properties

@@ -7,7 +7,7 @@ Acrobatics.Effect.2=Rodada Majestuosa
 Acrobatics.Effect.3=El doble de efectivo que una rodada normal
 Acrobatics.Effect.4=Esquivar
 Acrobatics.Effect.5=Reduce el da\u00f1o de ataque a la mitad
-Acrobatics.Listener=Acrobacias: 
+Acrobatics.Listener=Acrobacias:
 Acrobatics.Roll.Chance=[[RED]]Probabilidad de Rodar: [[YELLOW]]{0}%
 Acrobatics.Roll.GraceChance=[[RED]]Probabilidad de Rodada Majestuosa: [[YELLOW]]{0}%
 Acrobatics.Roll.Text=**Rodado**
@@ -22,7 +22,7 @@ Archery.Effect.2=Aturdir (Jugadores)
 Archery.Effect.3=Desorienta a los enemigos y inflige {0} DMG
 Archery.Effect.4=Recuperaci\u00f3n de Flecha
 Archery.Effect.5=Probabilidad de recuperar flechas de los cadaveres
-Archery.Listener=Arquer\u00eda: 
+Archery.Listener=Arquer\u00eda:
 Archery.SkillName=ARQUER\u00cdA
 Archery.Skillup=[[YELLOW]]Habilidad de Arquer\u00eda incrementada en {0}. Total ({1})
 Axes.Ability.Bonus.0=Dominio del Hacha
@@ -50,7 +50,7 @@ Axes.Effect.6=Impacto
 Axes.Effect.7=Golpear con fuerza como para destruir armaduras
 Axes.Effect.8=Gran Impacto
 Axes.Effect.9=Hacer da\u00f1o bonus a los enemigos sin armadura
-Axes.Listener=Hachas: 
+Axes.Listener=Hachas:
 Axes.SkillName=HACHAS
 Axes.Skills.SS.Off=[[RED]]**Parte Cr\u00e1neos ha expirado**
 Axes.Skills.SS.On=[[GREEN]]**PARTE CR\u00c1NEOS ACTIVADO**
@@ -65,7 +65,7 @@ Excavation.Effect.1=Triple Drop, Tripe EXP, M\u00e1s Velocidad
 Excavation.Effect.2=Cazador de Tesoros
 Excavation.Effect.3=Habilidad para cavar por tesoros
 Excavation.Effect.Length=[[RED]]Duraci\u00f3n de Ultra Taladro Destructor: [[YELLOW]]{0}seg
-Excavation.Listener=Excavaci\u00f3n: 
+Excavation.Listener=Excavaci\u00f3n:
 Excavation.SkillName=EXCAVACI\u00d3N
 Excavation.Skills.GigaDrillBreaker.Off=[[RED]]**Ultra Taladro Destructor ha expirado**
 Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**GIGA DRILL BREAKER ACTIVADO**
@@ -95,7 +95,7 @@ Fishing.Effect.9=Aumenta la probabilidad de ser mordido mientras se pesca
 Fishing.Effect.10=Pesca de hielo
 Fishing.Effect.11=Te permite pescar en biomas de hielo
 Fishing.Chance.Raining=[[BLUE]] Lluvia de Bonus
-Fishing.Listener=Pescador: 
+Fishing.Listener=Pescador:
 Fishing.Ability.TH.ItemFound=[[GRAY]]\u00a1Tesoro encontrado!
 Fishing.Ability.TH.MagicFound=[[GRAY]]Sientes un toque de magia con esta pesca...
 Fishing.SkillName=PESCADOR
@@ -153,7 +153,7 @@ Mining.Effect.8=Experto en Demoliciones
 Mining.Effect.9=Reduce el da\u00f1o de las explosiones de TNT
 Mining.Effect.Decrease=[[RED]]Da\u00f1o de Experto en Demolici\u00f3n Decrementado: [[YELLOW]]{0}
 Mining.Effect.DropChance=[[RED]]Probabilidad de Doble Drop: [[YELLOW]]{0}
-Mining.Listener=Miner\u00eda: 
+Mining.Listener=Miner\u00eda:
 Mining.SkillName=MINER\u00cdA
 Mining.Skills.SuperBreaker.Off=[[RED]]**S\u00faper Destructor ha expirado**
 Mining.Skills.SuperBreaker.On=[[GREEN]]**S\u00daPER DESTRUCTOR ACTIVADO**
@@ -233,7 +233,7 @@ Swords.Effect.4=Ataque Dentado Sangriento+
 Swords.Effect.5={0} marca de sangrado
 Swords.Effect.6=Sangrado
 Swords.Effect.7=Aplicar sangrado que da\u00f1a con el tiempo
-Swords.Listener=Espadas: 
+Swords.Listener=Espadas:
 Swords.SkillName=ESPADAS
 Swords.Skills.SS.Off=[[RED]]**Ataque Dentado ha expirado**
 Swords.Skills.SS.On=[[GREEN]]**ATAQUE DENTADO ACTIVADO**
@@ -283,7 +283,7 @@ Taming.Effect.7=Fobia al Cactus y a la Lava, Inmune al Da\u00f1o por Ca\u00eddas
 Taming.Effect.8=Piel Gruesa
 Taming.Effect.9=Da\u00f1o Reducido, Resistencia al Fuego
 Taming.Listener.Wolf=[[DARK_GRAY]]T\u00fa lobo se escabulle hacia t\u00ed...
-Taming.Listener=Domador: 
+Taming.Listener=Domador:
 Taming.SkillName=DOMADOR
 Taming.Skillup=[[YELLOW]]Habilidad de Domador incrementada en {0}. Total ({1})
 Taming.Summon.Complete=[[GREEN]]Invocaci\u00f3n completada
@@ -311,7 +311,7 @@ Unarmed.Effect.6=Flecha Desviada
 Unarmed.Effect.7=Desviar flechas
 Unarmed.Effect.8=Agarre de hierro
 Unarmed.Effect.9=Te previene de ser desarmado
-Unarmed.Listener=Desarmado: 
+Unarmed.Listener=Desarmado:
 Unarmed.SkillName=DESARMADO
 Unarmed.Skills.Berserk.Off=[[RED]]**Enloquecido ha expirado**
 Unarmed.Skills.Berserk.On=[[GREEN]]**ENLOQUECIDO ACTIVADO**
@@ -330,7 +330,7 @@ Woodcutting.Effect.2=Soplador de Hojas
 Woodcutting.Effect.3=Remover Hojas
 Woodcutting.Effect.4=Doble Drops
 Woodcutting.Effect.5=El doble del bot\u00edn normal
-Woodcutting.Listener=Le\u00f1ador: 
+Woodcutting.Listener=Le\u00f1ador:
 Woodcutting.SkillName=LE\u00d1ADOR
 Woodcutting.Skills.TreeFeller.Off=[[RED]]**Caida de \u00c1rbol ha expirado**
 Woodcutting.Skills.TreeFeller.On=[[GREEN]]**CA\u00cdDA DE \u00c1RBOL ACTIVADA**

+ 1 - 1
src/main/resources/locale/locale_hr_HR.properties

@@ -10,7 +10,7 @@ Repair.Effect.4=Super Poravka
 Repair.SkillName=POPRAVI
 Repair.Arcane.Fail=[[RED]]Arcane Snage Su Napustile Item.
 Swords.Combat.Bleeding.Stopped=[[GRAY]]Krvarenje je [[GREEN]]prestalo[[GRAY]]!
-Ability.Generic.Template=[[RED]]{0}: [[YELLOW]]{1}\n
+Ability.Generic.Template=[[RED]]{0}: [[YELLOW]]{1}
 Combat.TouchedFuzzy=[[DARK_RED]]Dodirnuo Fuzzy.Osjetio Fuzzy.
 Commands.Party.Kick=[[RED]]Ti Si Bio Izbacen Iz Partyja{0}!
 Party.Unlocked=[[GRAY]]Party je otkljucan

+ 2 - 2
src/main/resources/locale/locale_hu_HU.properties

@@ -6,12 +6,12 @@ Acrobatics.Skillup=[[YELLOW]]Akrobatika fejl\u0151d\u00f6tt {0} szinttel. \u00d6
 Archery.Listener=\u00cdj\u00e1szat:
 Archery.SkillName=\u00cdJ\u00c1SZAT
 Archery.Skillup=[[YELLOW]]\u00cdj\u00e1szat fejl\u0151d\u00f6tt {0} szinttel. \u00d6sszesen: ({1})
-Axes.Ability.Bonus.0=Mesteri balta 
+Axes.Ability.Bonus.0=Mesteri balta
 Axes.Ability.Lower=[[GRAY]]**LETETTED A BALT\u00c1DAT**
 Axes.Ability.Ready=[[GREEN]]**ELK\u00c9SZ\u00cdTETTED BALT\u00c1DAT**
 Axes.Combat.GI.Struck=[[RED]]**HATALMAS EREJ\u0170 \u00dcT\u00c9S**
 Axes.Effect.3=Dupla sebz\u00e9s
-Axes.Effect.4=Mesteri balta 
+Axes.Effect.4=Mesteri balta
 Axes.Listener=Balt\u00e1k:
 Axes.SkillName=BALT\u00c1K
 Axes.Skills.SS.On=[[GREEN]]**Koponya T\u00f6r\u0151 AKTIV\u00c1LVA**

+ 5 - 5
src/main/resources/locale/locale_it.properties

@@ -61,7 +61,7 @@ Axes.Skillup=[[YELLOW]]L\'abilit\u00e0 Asce \u00e8 aumentata di {0}. Totale ({1}
 Excavation.Ability.Lower=[[GRAY]]**ABBASSI LA PALA**
 Excavation.Ability.Ready=[[GREEN]]**PREPARI LA PALA**
 Excavation.Effect.0=Giga-Trivella Demolitrice (CAPACITA\')
-Excavation.Effect.1=Drop x3, XP x3, +Velocit\u00e0 
+Excavation.Effect.1=Drop x3, XP x3, +Velocit\u00e0
 Excavation.Effect.2=Cacciatore di Tesori
 Excavation.Effect.3=Capacit\u00e0 di disseppellire tesori
 Excavation.Effect.Length=[[RED]]Durata di Giga-Trivella Demolitrice: [[YELLOW]]{0}s
@@ -126,9 +126,9 @@ Herbalism.Effect.9=Raddoppia il normale drop
 Herbalism.Effect.10=Fortuna Hylian
 Herbalism.Effect.11=D\u00e0 una modesta possibilit\u00e0 di trovare oggetti rari
 Herbalism.Effect.12=Pollice Fungo
-Herbalism.Effect.13=Diffonde il micelio su terra & erba 
+Herbalism.Effect.13=Diffonde il micelio su terra & erba
 Herbalism.HylianLuck=[[GREEN]]Oggi la fortuna di Hyrule \u00e8 con te!
-Herbalism.Listener=Erboristeria: 
+Herbalism.Listener=Erboristeria:
 Herbalism.SkillName=ERBORISTERIA
 Herbalism.Skills.GTe.On=[[GREEN]]**TERRA VERDE ATTIVATA**
 Herbalism.Skills.GTe.Refresh=[[GREEN]]La tua abilit\u00e0 [[YELLOW]]Terra Verde [[GREEN]]si \u00e8 rigenerata!
@@ -609,7 +609,7 @@ Commands.Description.mcpurge=Elimina dal database mcMMO gli utenti senza livelli
 Commands.Description.mcrank=Mostra la graduatoria mcMMO di un giocatore
 Commands.Description.mcrefresh=Rigenera tutti i raffreddamenti di mcMMO
 Commands.Description.mcremove=Rimuovi un utente dal database mcMMO
-Commands.Description.mcstats=Mostra i tuoi livelli e XP mcMMO 
+Commands.Description.mcstats=Mostra i tuoi livelli e XP mcMMO
 Commands.Description.mctop=Mostra le classifiche mcMMO
 Commands.Description.mmoedit=Modifica i livelli mcMMO di un utente
 Commands.Description.mmoupdate=Migra un database mcMMO da un database vecchio a quello attuale
@@ -618,7 +618,7 @@ Commands.Description.party=Controlla varie impostazioni di compagnia mcMMO
 Commands.Description.partychat=Attiva o disattiva la chat di compagnia mcMMO o invia un messaggio in chat compagnia
 Commands.Description.ptp=Teletrasportati verso un membro della compagnia mcMMO
 Commands.Description.Skill=Visualizza informazioni dettagliate sull\'abilit\u00e0 mcMMO {0}
-Commands.Description.skillreset=Azzera i livelli mcMMO di un utente 
+Commands.Description.skillreset=Azzera i livelli mcMMO di un utente
 Commands.Description.vampirism=Modifica la percentuale di vampirismo mcMMO o attiva/disattiva la modalit\u00e0 vampirismo
 Commands.Description.xplock=Blocca la tua barra XP di mcMMO su una specifica abilit\u00e0 di mcMMO
 Commands.Description.xprate=Modifica il tasso XP di mcMMO o d\u00e0 inizio a un evento XP mcMMO.

+ 1 - 1
src/main/resources/locale/locale_ko.properties

@@ -575,7 +575,7 @@ Commands.xprate.proper.1=[[RED]]\uacbd\ud5d8\uce58 \ubc30\uc728\uc744 \ucd08\uae
 Commands.xprate.proper.2=[[RED]]\uc774\uac83\uc740 XP \uc774\ubca4\ud2b8\uc778\uc9c0 \uc544\ub2cc\uc9c0 true \ub610\ub294 false\ub85c \ub098\ud0c0\ub0b4\uae30 \uc704\ud574 \uc9c0\uc815\ud558\uc2ed\uc2dc\uc624
 Commands.xprate.started.0=[[GOLD]]mcMMO \uacbd\ud5d8\uce58 \uc774\ubca4\ud2b8\uac00 \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4!
 Commands.xprate.started.1=[[GOLD]]mcMMO \uacbd\ud5d8\uce58 \ubc30\uc728\uc740 {0}\ubc30 \uc785\ub2c8\ub2e4!
-XPRate.Event=[[GOLD]]mcMMO \ub294 \ud604\uc7ac {0}\ubc30 \uacbd\ud5d8\uce58 \uc774\ubca4\ud2b8 \uc911\uc785\ub2c8\ub2e4! 
+XPRate.Event=[[GOLD]]mcMMO \ub294 \ud604\uc7ac {0}\ubc30 \uacbd\ud5d8\uce58 \uc774\ubca4\ud2b8 \uc911\uc785\ub2c8\ub2e4!
 Effects.Effects=\ud6a8\uacfc
 Effects.Child=[[DARK_GRAY]]LVL: [[GREEN]]{0}
 Effects.Level=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELLOW]]/[[GOLD]]{2}[[YELLOW]])

+ 5 - 5
src/main/resources/locale/locale_lv.properties

@@ -1,6 +1,6 @@
 Acrobatics.Combat.Proc=[[GREEN]]**TRIKS**
 Acrobatics.SkillName=AKROB\u0100TIKA
-Axes.Ability.Bonus.1=Bonus {0} boj\u0101jumi 
+Axes.Ability.Bonus.1=Bonus {0} boj\u0101jumi
 Axes.Combat.CritChance=[[RED]]Iesp\u0113ja kritiskajam uzbrukumam: [[YELLOW]]{0}%
 Axes.Skills.SS.On=[[GREEN]]**Galvaskausu \u0161\u0137\u0113l\u0113js AKTIVIZ\u0112TS**
 Axes.Skills.SS.Refresh=[[GREEN]]Tava [[YELLOW]]Galvaskausu \u0160\u0137\u0113l\u0101ja [[GREEN]]sp\u0113ja ir atjaunota!
@@ -19,11 +19,11 @@ Repair.Skills.FeltEasy=[[GRAY]]Tas lik\u0101s viegli.
 Repair.Arcane.Fail=[[RED]]Mistisk\u0101 ener\u0123ija pameta lietu
 Swords.Combat.Bleeding.Stopped=[[GRAY]]Tu  [[GREEN]]beidzi[[GRAY]] asi\u0146ot!
 Swords.Combat.SS.Struck=[[DARK_RED]]Skarts no SERRATED STRIKES!
-Swords.Effect.0=Pretsitiens 
+Swords.Effect.0=Pretsitiens
 Swords.Skills.SS.Other.Off=[[RED]]Serrated Stikes[[GREEN]]sp\u0113ja beidz\u0101s sp\u0113l\u0113t\u0101jam [[YELLOW]]{0}
 Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] izmantoja [[RED]]Serrated Strikes
-Taming.Ability.Bonus.8=\u0100tro \u0112dienu Pakalpojumi 
-Taming.Effect.16=\u0100tro \u0112dienu Pakalpojumi 
+Taming.Ability.Bonus.8=\u0100tro \u0112dienu Pakalpojumi
+Taming.Effect.16=\u0100tro \u0112dienu Pakalpojumi
 Unarmed.Effect.2=Atbru\u0146ot(Sp\u0113l\u0113t\u0101ju)
 Unarmed.Listener=Atbru\u0146ots:
 Unarmed.SkillName=NEAPBRU\u0145OTS
@@ -42,7 +42,7 @@ Commands.Party.Kick=[[RED]]Tu tiki izmests no PARTY {0}!
 Commands.Party.Leave=[[RED]]Tu pameti PARTY
 Commands.Stats.Self=TAVI STATI
 mcMMO.NoPermission=[[DARK_RED]]Nepietiekama at\u013cauja.
-Party.Teleport.Target=[[GREEN]]{0} teleport\u0113j\u0101s pie tevis. 
+Party.Teleport.Target=[[GREEN]]{0} teleport\u0113j\u0101s pie tevis.
 Party.Unlocked=[[GRAY]] Party tika atv\u0113rts
 Commands.XPGain.Fishing=Mak\u0161\u0137er\u0113\u0161ana (Ej izdom\u0101!)
 Commands.XPGain.Mining=Rokot Akmeni & R\u016bdu

+ 2 - 2
src/main/resources/locale/locale_nl.properties

@@ -116,7 +116,7 @@ Mining.Skillup=[[YELLOW]]Mijn ervaring toegenomen met {0}. Totaal: ({1})
 Mining.Blast.Boom=[[GRAY]]**BOEM**
 Mining.Blast.Radius.Increase=[[RED]] Ontploffings Radius Verhoging: [[YELLOW]] {0}
 Mining.Blast.Rank=[[RED]]Explosie Mining: [[YELLOW]] Rang {0}/8 [[GRAY]]({1})
-Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] heeft [[RED]] Blast Mining![DARK_GREEN] gebruikt 
+Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] heeft [[RED]] Blast Mining![DARK_GREEN] gebruikt
 Mining.Blast.Refresh=[[GREEN]]Je [[YELLOW]]explosie mijn [[GREEN]]kracht is hersteld!
 Repair.Effect.0=Repareren
 Repair.Effect.1=Repareer Diamanten Gereedschap & Wapenuitrusting
@@ -360,7 +360,7 @@ Party.ItemShare.Category.Mining=Mijnbouw
 Party.ItemShare.Category.Herbalism=Kruidenkunde
 Party.ItemShare.Category.Woodcutting=Houthakken
 Commands.XPGain.Acrobatics=Vallen
-Commands.XPGain.Archery=Monsters aanvallen 
+Commands.XPGain.Archery=Monsters aanvallen
 Commands.XPGain.Axes=Monsters aanvallen
 Commands.XPGain.Excavation=Graven en schatten vinden
 Commands.XPGain.Fishing=Vissen (Wat denk je zelf?)

+ 1 - 1
src/main/resources/locale/locale_no.properties

@@ -1,5 +1,5 @@
 Acrobatics.Combat.Proc=[[GREEN]]**Dukket unna**
-Acrobatics.SkillName=AKROBATIKK 
+Acrobatics.SkillName=AKROBATIKK
 Acrobatics.Skillup=[[YELLOW]]Akrobatiske ferdigheter har blitt h\u00f8ynet med {0}. Total ({1})
 Archery.Skillup=[[YELLOW]]Bueskyting dyktighet \u00f8kt med {0}. Totalt ({1})
 Axes.Combat.GI.Struck=[[RED]]** Rammet av st\u00f8rre innvirkning **

+ 12 - 12
src/main/resources/locale/locale_pl.properties

@@ -74,7 +74,7 @@ Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\
 Excavation.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 wykopalisk wzros\u0142a o {0}. Razem({1})
 Fishing.Ability.Chance=[[RED]]Szansa na zlapanie ryby: [[YELLOW]]{0}
 Fishing.Ability.Info=[[RED]]Magiczny \u0141owca: [[GRAY]] **Ulepsza si\u0119 wraz z rang\u0105 Poszukiwacza Skarb\u00f3w**
-Fishing.Ability.Locked.0=ZABLOKOWANY DO POZIOMU {0}+ SKILL 
+Fishing.Ability.Locked.0=ZABLOKOWANY DO POZIOMU {0}+ SKILL
 Fishing.Ability.Locked.1=DOSTEPNE OD POZIOMU {0}+ (LODOWE LOWIENIE RYB)
 Fishing.Ability.Rank=[[RED]]Ranga lowienia skarbow: [[YELLOW]]{0}/5
 Fishing.Ability.TH.MagicRate=[[RED]]Szanse na Magicznego \u0141owc\u0119: [[YELLOW]]{0}
@@ -129,9 +129,9 @@ Herbalism.Skills.GTe.Other.Off=[[RED]]?Green Terra?[[GREEN]] si\u0119 sko\u0144c
 Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] u\u017cy\u0142 [[RED]]?Green Terra?!
 Herbalism.Skillup=[[YELLOW]]Umiej\u0119tno\u015b\u0107 zielarstwa wzros\u0142a o  {0}. Ca\u0142kowicie ({1})
 Mining.Ability.Length=[[RED]]D\u0142ugo\u015bc Super Kopacza: [[YELLOW]]{0}s
-Mining.Ability.Locked.0=ZABLOKOWANE DO POZIOMU {0}+ SKILL 
-Mining.Ability.Locked.1=ZABLOKOWANE DO POZIOMU {0}+ SKILL 
-Mining.Ability.Locked.2=ZABLOKOWANE DO POZIOMU {0}+ SKILL 
+Mining.Ability.Locked.0=ZABLOKOWANE DO POZIOMU {0}+ SKILL
+Mining.Ability.Locked.1=ZABLOKOWANE DO POZIOMU {0}+ SKILL
+Mining.Ability.Locked.2=ZABLOKOWANE DO POZIOMU {0}+ SKILL
 Mining.Ability.Lower=[[GRAY]]**CHOWASZ SW\u00d3J KILOF**
 Mining.Ability.Ready=[[GREEN]]**PRZYGOTOWUJESZ SWOJA SIEKIERE**
 Mining.Effect.0=Super \u0141amacz (ZDOLNO\u015a\u0106)
@@ -244,11 +244,11 @@ Taming.Ability.Bonus.7=+{0} Obrazen
 Taming.Ability.Bonus.8=Serwis FastFood\'u
 Taming.Ability.Bonus.9={0} Szansa przy ataku na odnowienie \u017cycia
 Taming.Ability.Bonus.11=Odzyskuj zdrowie podczas otrzymania obrazen od magii czy trucizny
-Taming.Ability.Locked.0=ZABLOKOWANE DO POZIOMU {0}+ SKILL 
-Taming.Ability.Locked.1=ZABLOKOWANE DO POZIOMU {0}+ SKILL 
-Taming.Ability.Locked.2=ZABLOKOWANE DO POZIOMU {0}+ SKILL 
-Taming.Ability.Locked.3=ZABLOKOWANE DO POZIOMU {0}+ SKILL 
-Taming.Ability.Locked.4=ZABLOKOWANE DO POZIOMU {0}+ SKILL 
+Taming.Ability.Locked.0=ZABLOKOWANE DO POZIOMU {0}+ SKILL
+Taming.Ability.Locked.1=ZABLOKOWANE DO POZIOMU {0}+ SKILL
+Taming.Ability.Locked.2=ZABLOKOWANE DO POZIOMU {0}+ SKILL
+Taming.Ability.Locked.3=ZABLOKOWANE DO POZIOMU {0}+ SKILL
+Taming.Ability.Locked.4=ZABLOKOWANE DO POZIOMU {0}+ SKILL
 Taming.Combat.Chance.Gore=[[RED]]Szansa na Brutalno\u015b\u0107: [[YELLOW]]{0}
 Taming.Effect.0=Wiedza o zwierz\u0119tach
 Taming.Effect.1=Ko\u015b\u0107 - przyci\u0105ga uwag\u0119 wilk\u00f3w i ocelot\u00f3w
@@ -307,7 +307,7 @@ Woodcutting.Ability.0=Dmucharka do li\u015bci
 Woodcutting.Ability.1=Zdmuchuje li\u015bcie
 Woodcutting.Ability.Chance.DDrop=[[RED]]Szansa na Dwukrotny Drop: [[YELLOW]]{0}
 Woodcutting.Ability.Length=[[RED]]D\u0142ugo\u015bc Powalacza Drzew: [[YELLOW]]{0}s
-Woodcutting.Ability.Locked.0=ZABLOKOWANY DO POZIOMU {0}+ SKILL 
+Woodcutting.Ability.Locked.0=ZABLOKOWANY DO POZIOMU {0}+ SKILL
 Woodcutting.Effect.0=Powalacz Drzew
 Woodcutting.Effect.1=Sprawia, i\u017c drzewa eksploduj\u0105
 Woodcutting.Effect.2=Dmucharka do li\u015bci
@@ -423,8 +423,8 @@ Commands.SkillInfo=[[RED]]- Zobacz szczeg\u00f3lowe informacje na temat tej umie
 Commands.Stats.Self=TWOJE STATYSTYKI
 Commands.Stats=[[RED]]- Zobacz swoje statystyki
 Commands.ToggleAbility=[[RED]]- W\u0142\u0105cza/Wy\u0142\u0105cza zdolno\u015b\u0107 PPM
-Commands.Usage.1=[[RED]]W\u0142a\u015bciwa komenda to /{0} {1} 
-Commands.Usage.2=[[RED]]W\u0142a\u015bciwa komenda to /{0} {1} {2} 
+Commands.Usage.1=[[RED]]W\u0142a\u015bciwa komenda to /{0} {1}
+Commands.Usage.2=[[RED]]W\u0142a\u015bciwa komenda to /{0} {1} {2}
 Commands.Usage.3=[[RED]]W\u0142a\u015bciwa komenda to /{0} {1} {2} {3}
 Commands.Usage.Level=poziom
 Commands.Usage.Message=wiadomo\u015b\u0107

+ 1 - 1
src/main/resources/locale/locale_pt_PT.properties

@@ -8,7 +8,7 @@ Mining.Skillup=[[YELLOW]]Habilidade de minera\u00e7\u00e3o aumentada em {0}. Tot
 Repair.Arcane.Fail=[[RED]]O objecto perdeu permanentemente os poderes Arcanos.
 Swords.Combat.Bleeding.Stopped=[[GRAY]]A hemorragia [[GREEN]]parou[[GRAY]]!
 Swords.Skills.SS.On=[[GREEN]]**ATAQUES SERRILHADOS ACTIVADO**
-Woodcutting.SkillName=LENHADOR\n
+Woodcutting.SkillName=LENHADOR
 Ability.Generic.Template=[[RED]]{0}: [[YELLOW]]{1}
 Commands.Invite.Accepted=[[GREEN]]Convite aceite. Tu entraste numa festa {0}
 Commands.Party.Kick=[[RED]]Foste expulso da festa {0}!

+ 2 - 2
src/main/resources/locale/locale_ru.properties

@@ -233,7 +233,7 @@ Swords.Effect.0=\u041a\u043e\u043d\u0442\u0440\u0430\u0442\u0430\u043a\u0430
 Swords.Effect.1=\u041e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 {0} \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u043d\u0430 \u043f\u0440\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438
 Swords.Effect.2=\u0420\u0435\u0436\u0443\u0449\u0438\u0439 \u0423\u0434\u0430\u0440 (\u0423\u041c\u0415\u041d\u0418\u0415)
 Swords.Effect.3={0} \u0423\u0440\u043e\u043d\u0430 \u043e\u0442 \u0421\u043f\u043b\u044d\u0448 \u0423\u0434\u0430\u0440\u0430, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u041a\u0440\u043e\u0432\u043e\u0442\u0435\u0447\u0435\u043d\u0438\u0435
-Swords.Effect.4=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u041a\u0440\u043e\u0432\u043e\u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0420\u0435\u0436\u0443\u0449\u0435\u043c \u0423\u0434\u0430\u0440\u0435 
+Swords.Effect.4=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u041a\u0440\u043e\u0432\u043e\u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0420\u0435\u0436\u0443\u0449\u0435\u043c \u0423\u0434\u0430\u0440\u0435
 Swords.Effect.5={0} \u0422\u0438\u043a\u043e\u0432 \u041a\u0440\u043e\u0432\u043e\u0442\u0435\u0447\u0435\u043d\u0438\u0435
 Swords.Effect.6=\u041a\u0440\u043e\u0432\u043e\u0442\u0435\u0447\u0435\u043d\u0438\u0435
 Swords.Effect.7=\u0417\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0440\u0430\u0433\u0430 \u043a\u0440\u043e\u0432\u043e\u0442\u043e\u0447\u0438\u0442\u044c
@@ -430,7 +430,7 @@ Commands.Party.Chat.Off=\u0413\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0439 \
 Commands.Party.Chat.On=\u0413\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0439 \u0427\u0430\u0442 [[RED]]\u0432\u043a\u043b\u044e\u0447\u0435\u043d
 Commands.Party.Commands=[[GREEN]]--\u0413\u0420\u0423\u041f\u041f\u041e\u0412\u042b\u0415 \u041a\u041e\u041c\u0410\u041d\u0414\u042b--
 Commands.Party.Invite.0=[[RED]]\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: [[GREEN]]\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 {0} \u043e\u0442 {1}
-Commands.Party.Invite.1=[[YELLOW]]\u041d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0439\u0442\u0435 [[GREEN]]/party accept[[YELLOW]], \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 
+Commands.Party.Invite.1=[[YELLOW]]\u041d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0439\u0442\u0435 [[GREEN]]/party accept[[YELLOW]], \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443
 Commands.Party.Invite=[[RED]]- \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443
 Commands.Party.Join=[[GRAY]]\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u0413\u0440\u0443\u043f\u043f\u044b: {0}
 Commands.Party.Create=[[GRAY]]\u0421\u043e\u0437\u0434\u0430\u043d\u0430 \u0413\u0440\u0443\u043f\u043f\u0430: {0}

+ 1 - 1
src/main/resources/locale/locale_sv.properties

@@ -117,7 +117,7 @@ Commands.GodMode.Disabled=[[YELLOW]]mcMMO Gudsl\u00e4ge avaktiverat
 Commands.Party.Invite.Accepted=[[GREEN]]F\u00f6rfr\u00e5gan accepterad. Du har nu g\u00e5tt med i gruppen {0}
 Commands.mcgod=[[RED]]- V\u00e4xla till gudsl\u00e4ge
 Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - \u00c4ndra m\u00e5l
-Commands.ModDescription=[[RED]]- L\u00e4s sammanfattad mod beskrivning. 
+Commands.ModDescription=[[RED]]- L\u00e4s sammanfattad mod beskrivning.
 Commands.Party.Accept=[[RED]]- Acceptera gruppinbjudan
 Commands.Party.Chat.Off=Endast Gruppchat  [[RED]]av.
 Commands.Party.Invite.0=[[RED]]VARNING: [[GREEN]]Du har f\u00e5tt en gruppinbjudan till {0} fr\u00e5n {1}

+ 1 - 1
src/main/resources/locale/locale_zh_CN.properties

@@ -355,7 +355,7 @@ Combat.Gore=[[GREEN]]**\u76ee\u6807\u88ab\u653e\u8840**
 Combat.StruckByGore=[[RED]]**\u4f60\u88ab\u653e\u8840\u4e86**
 Combat.TargetDazed=\u76ee\u6807\u88ab [[DARK_RED]]\u88ab\u51fb\u6655
 Combat.TouchedFuzzy=[[DARK_RED]]\u5934\u6655\u76ee\u7729
-mcMMO.Description=[[DARK_AQUA]]\u5173\u4e8e [[YELLOW]]mcMMO[[DARK_AQUA]]:,[[GOLD]]mcMMO \u662f\u4e00\u4e2a [[RED]]\u5f00\u6e90[[GOLD]] RPG mod \u521b\u5efa\u4e8e2011\u5e742\u6708,[[GOLD]]by [[BLUE]]nossr50[[GOLD]]. \u76ee\u6807\u4e3a\u73a9\u5bb6\u63d0\u4f9b\u4e00\u4e2a\u9ad8\u8d28\u91cf\u7684RPG\u4f53\u9a8c.,[[DARK_AQUA]]\u63d0\u793a:,[[GOLD]] - [[GREEN]]\u4f7f\u7528 [[RED]]/mcmmo help[[GREEN]] \u67e5\u770b\u6307\u4ee4,[[GOLD]] - [[GREEN]]\u8f93\u5165 [[RED]]/\u6280\u80fd\u540d[[GREEN]] \u67e5\u770b\u8be6\u7ec6\u7684\u6280\u80fd\u4fe1\u606f,[[DARK_AQUA]]\u5f00\u53d1\u8005:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](\u521b\u59cb\u4eba),[[GOLD]] - [[GREEN]]GJ [[BLUE]](\u9879\u76ee\u7ec4\u957f),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](\u5f00\u53d1\u8005),[[DARK_AQUA]]\u6709\u7528\u7684\u94fe\u63a5:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] \u62a5\u544aBUG,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,[[YELLOW]]\u53c2\u4e0e\u8fc7\u7ffb\u8bd1\u4e0e\u6da6\u8272\u7684\u4eba[[DARK_AQUA]]:,[[GREEN]]hzk11o11k11o wolski Chikaze(Cirno) 664365842 zesty HDfunctions,[[DARK_AQUA]]\u4fee\u6b63\u8865\u6f0f\u5de5\u4f5c\u8fd8\u5728\u7ee7\u7eed... 
+mcMMO.Description=[[DARK_AQUA]]\u5173\u4e8e [[YELLOW]]mcMMO[[DARK_AQUA]]:,[[GOLD]]mcMMO \u662f\u4e00\u4e2a [[RED]]\u5f00\u6e90[[GOLD]] RPG mod \u521b\u5efa\u4e8e2011\u5e742\u6708,[[GOLD]]by [[BLUE]]nossr50[[GOLD]]. \u76ee\u6807\u4e3a\u73a9\u5bb6\u63d0\u4f9b\u4e00\u4e2a\u9ad8\u8d28\u91cf\u7684RPG\u4f53\u9a8c.,[[DARK_AQUA]]\u63d0\u793a:,[[GOLD]] - [[GREEN]]\u4f7f\u7528 [[RED]]/mcmmo help[[GREEN]] \u67e5\u770b\u6307\u4ee4,[[GOLD]] - [[GREEN]]\u8f93\u5165 [[RED]]/\u6280\u80fd\u540d[[GREEN]] \u67e5\u770b\u8be6\u7ec6\u7684\u6280\u80fd\u4fe1\u606f,[[DARK_AQUA]]\u5f00\u53d1\u8005:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](\u521b\u59cb\u4eba),[[GOLD]] - [[GREEN]]GJ [[BLUE]](\u9879\u76ee\u7ec4\u957f),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](\u5f00\u53d1\u8005),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](\u5f00\u53d1\u8005),[[DARK_AQUA]]\u6709\u7528\u7684\u94fe\u63a5:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] \u62a5\u544aBUG,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,[[YELLOW]]\u53c2\u4e0e\u8fc7\u7ffb\u8bd1\u4e0e\u6da6\u8272\u7684\u4eba[[DARK_AQUA]]:,[[GREEN]]hzk11o11k11o wolski Chikaze(Cirno) 664365842 zesty HDfunctions,[[DARK_AQUA]]\u4fee\u6b63\u8865\u6f0f\u5de5\u4f5c\u8fd8\u5728\u7ee7\u7eed...
 Commands.addlevels.AwardAll.1=[[GREEN]]\u4f60\u7684\u6240\u6709\u7b49\u7ea7\u88ab\u5956\u52b1\u4e0a\u5347\u4e86 {0} \u7ea7!
 Commands.addlevels.AwardAll.2=[[RED]]\u6240\u6709\u6280\u80fd\u7b49\u7ea7\u5df2\u88ab\u8bbe\u7f6e\u4e3a {0}.
 Commands.addlevels.AwardSkill.1=[[GREEN]]\u4f60\u5728 {1} \u91cc\u5347\u4e86 {0} \u7ea7!

+ 6 - 6
src/main/resources/locale/locale_zh_TW.properties

@@ -251,7 +251,7 @@ Taming.Ability.Bonus.1=\u72fc\u6703\u907f\u958b\u5371\u96aa
 Taming.Ability.Bonus.2=\u6bdb\u76ae\u5f37\u5316
 Taming.Ability.Bonus.3=1/{0} \u50b7\u5bb3/\u706b\u7130\u50b7\u5bb3
 Taming.Ability.Bonus.4=\u885d\u64ca\u683c\u64cb
-Taming.Ability.Bonus.5=\u7206\u70b8\u50b7\u5bb3\u6e1b\u514d\u70ba 1/{0} 
+Taming.Ability.Bonus.5=\u7206\u70b8\u50b7\u5bb3\u6e1b\u514d\u70ba 1/{0}
 Taming.Ability.Bonus.6=\u5229\u722a
 Taming.Ability.Bonus.7=+{0} \u50b7\u5bb3
 Taming.Ability.Bonus.8=\u5feb\u9910\u670d\u52d9
@@ -429,7 +429,7 @@ Commands.Party.Accept=[[RED]]- \u63a5\u53d7\u968a\u4f0d\u9080\u8acb
 Commands.Party.Chat.Off=\u968a\u4f0d\u804a\u5929\u6a21\u5f0f[[RED]]\u53d6\u6d88
 Commands.Party.Chat.On=\u968a\u4f0d\u804a\u5929\u6a21\u5f0f [[GREEN]]\u958b\u555f
 Commands.Party.Commands=[[GREEN]]--\u7d44\u968a\u6307\u4ee4--
-Commands.Party.Invite.0=[[RED]]\u6ce8\u610f: [[GREEN]]\u4f60\u6536\u5230\u4e86\u4f86\u81ea {1} \u7684\u968a\u4f0d\u9080\u8acb {0} 
+Commands.Party.Invite.0=[[RED]]\u6ce8\u610f: [[GREEN]]\u4f60\u6536\u5230\u4e86\u4f86\u81ea {1} \u7684\u968a\u4f0d\u9080\u8acb {0}
 Commands.Party.Invite.1=[[YELLOW]]\u8f38\u5165 [[GREEN]]/party accept[[YELLOW]] \u4f86\u63a5\u53d7\u9080\u8acb
 Commands.Party.Invite=[[RED]]- \u5df2\u767c\u9001\u968a\u4f0d\u9080\u8acb
 Commands.Party.Join=[[GRAY]]\u52a0\u5165\u7684\u968a\u4f0d: {0}
@@ -498,7 +498,7 @@ mcMMO.NoSkillNote=[[DARK_GRAY]]\u5982\u679c\u4f60\u7121\u6cd5\u4f7f\u7528\u90a3\
 Party.Forbidden=[mcMMO] \u968a\u4f0d\u529f\u80fd\u4e0d\u5141\u8a31\u5728\u9019\u4e16\u754c\u958b\u555f (\u8acb\u89c0\u770b\u6b0a\u9650\u8a2d\u5b9a)
 Party.Help.0=[[RED]]\u6b63\u78ba\u7528\u6cd5\u70ba[[DARK_AQUA]]{0} <player> [password].
 Party.Help.1=[[RED]]\u8981\u5275\u5efa\u4e00\u500b\u968a\u4f0d\uff0c\u8acb\u4f7f\u7528[[DARK_AQUA]] {0} <name> [password].
-Party.Help.2=[[RED]]\u66f4\u591a\u8cc7\u8a0a\u8acb\u8aee\u8a62[[DARK_AQUA]]{0} 
+Party.Help.2=[[RED]]\u66f4\u591a\u8cc7\u8a0a\u8acb\u8aee\u8a62[[DARK_AQUA]]{0}
 Party.Help.3=[[RED]]\u4f7f\u7528 [[DARK_AQUA]]{0} <player> [password] [[RED]]\u4f86\u52a0\u5165\u6216\u4f7f\u7528 [[DARK_AQUA]]{1} [[RED]]\u4f86\u96e2\u958b
 Party.Help.4=[[RED]]\u6b32\u9396\u5b9a\u6216\u89e3\u9396\u4f60\u7684\u968a\u4f0d\uff0c\u4f7f\u7528[[DARK_AQUA]] {0}
 Party.Help.5=[[RED]]\u6b32\u4f7f\u7528\u5bc6\u78bc\u4fdd\u8b77\u4f60\u7684\u968a\u4f0d\uff0c\u8acb\u4f7f\u7528[[DARK_AQUA]] {0}<password>
@@ -586,14 +586,14 @@ Guides.Available=[[DARK_AQUA]] \u95dc\u65bc{0}\u7684\u8aaa\u660e - \u8f38\u5165
 Guides.Header=[[GOLD]]-=[[GREEN]]{0} \u6307\u5357[[GOLD]]=-
 Guides.Page.Invalid=\u4e0d\u5b58\u5728\u7684\u9801\u6578
 Guides.Page.OutOfRange=\u9019\u9801\u78bc\u4e0d\u5b58\u5728,\u7e3d\u5171\u53ea\u6709{0} \u9801.
-Guides.Usage=[[RED]]\u8acb\u8f38\u5165 /{0} 
+Guides.Usage=[[RED]]\u8acb\u8f38\u5165 /{0}
 Guides.Acrobatics.Section.0=[DARK_AQUA]]\u95dc\u65bc\u96dc\u6280:\n[[YELLOW]]\u96dc\u6280\u53ef\u4ee5\u8b93\u4f60\u5728MMO\u88e1\u73a9\u5f97\u5f88\u512a\u96c5.\n[[YELLOW]]\u5b83\u53ef\u4ee5\u8b93\u4f60\u5728\u6230\u9b25\u4e2d\u53ca\u74b0\u5883\u4e2d\u53d6\u5f97\u512a\u52e2.\n\n[[DARK_AQUA]]\u7d93\u9a57\u5982\u4f55\u7372\u53d6:\n[[YELLOW]]\u5728\u6230\u9b25\u4e2d\u9583\u8eb2\u653b\u64ca\u6216\u5f9e\u9ad8\u8655\u589c\u843d\u5c07\n[[YELLOW]]\u53ef\u7372\u5f97\u7d93\u9a57.
 Guides.Acrobatics.Section.1=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u7ffb\u6efe?\n[[YELLOW]]\u4f60\u6709\u4e00\u5b9a\u7684\u6a5f\u7387\u53ef\u4ee5\u6e1b\u514d\u5f9e\u9ad8\u8655\u589c\u843d\n[[YELLOW]]\u7684\u50b7\u5bb3. \u4f60\u53ef\u4ee5\u6309\u4f4f\u6f5b\u884c\u9375(\u9810\u8a2dshift)\n[[YELLOW]]\u4f86\u5f97\u5230\u96d9\u500d\u7684\u7ffb\u6efe\u6a5f\u7387.\n[[YELLOW]]\u9019\u5c07\u89f8\u767c\u5b8c\u7f8e\u8457\u9678\u800c\u4e0d\u53ea\u662f\u55ae\u7d14\u7684\u7ffb\u6efe.\n[[YELLOW]]\u5b8c\u7f8e\u8457\u9678\u6548\u679c\u8207\u7ffb\u6efe\u985e\u4f3c,\u4f46\u6709\u5169\u500d\n[[YELLOW]]\u7684\u89f8\u767c\u6a5f\u7387\u4e14\u53ef\u6e1b\u514d\u66f4\u591a\u50b7\u5bb3.\n[[YELLOW]]\u7ffb\u6efe\u6a5f\u7387\u95dc\u4fc2\u5230\u4f60\u7684\u96dc\u6280\u7b49\u7d1a.
 Guides.Acrobatics.Section.2=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8ff4\u907f?\n[YELLOW]]\u8ff4\u907f\u662f\u6709\u6a5f\u7387\u6e1b \u514d\u5728\u6230\u9b25\u4e2d\n[[YELLOW]]\u6575\u4eba\u5c0d\u4f60\u7684\u50b7\u5bb3.\n[[YELLOW]]\u9019\u6a5f\u7387\u95dc\u4fc2\u5230\u4f60\u7684\u96dc\u6280\u7b49\u7d1a.
 Guides.Archery.Section.0=[[DARK_AQUA]]\u7bad\u8853:\n[[YELLOW]]\u7bad\u8853\u662f\u7528\u5f13\u5c04\u7bad\u7684\u6280\u80fd.\n[[YELLOW]]\u7bad\u8853\u6709\u5404\u7a2e\u52a0\u4e58\u6548\u679c,\u5982\u52a0\u4e58\u653b\u64ca\n[[YELLOW]]\u6688\u7729\u5c0d\u624b\u7b49\u6548\u679c.\n[[YELLOW]]\u6b64\u5916\u4f60\u4e5f\u6709\u6a5f\u7387\u56de\u6536\u5df2\u7d93\u5c04\u4e2d\u6575\u4eba\u7684\u7bad\n[[YELLOW]] \u4ee5\u4e0a\u6a5f\u7387\u95dc\u4fc2\u5230\u7b49\u7d1a.\n\n[[DARK_AQUA]]\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u8981\u7372\u5f97\u7d93\u9a57\u5fc5\u9808\u7528\u5f13\u5c04\u4e2d\u602a\u7269\u6216\u73a9\u5bb6.
 Guides.Archery.Section.1=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6280\u8853\u5c04\u64ca?\n[[YELLOW]]\u6280\u8853\u5c04\u64ca\u5c07\u52a0\u4e58\u4f60\u7684\u5c04\u7bad\u57fa\u672c\u653b\u64ca\u529b.\n[[YELLOW]]\u52a0\u4e58\u7684\u7a0b\u5ea6\u95dc\u4fc2\u5230\u4f60\u7684\u7bad\u8853\u7b49\u7d1a.\n[[YELLOW]]\u9810\u8a2d\u72c0\u614b\u4e0b, \u6bcf\u534750\u7d1a\u52a0\u4e5810%\u653b\u64ca\u529b, \n[[YELLOW]]\u6700\u9ad8\u5230200%\u52a0\u4e58.
 Guides.Archery.Section.2=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6688\u7729\u6548\u679c?\n[[YELLOW]]\u7576\u4f60\u64ca\u4e2d\u76ee\u6a19\u6642\u6709\u88ab\u52d5\u6a5f\u7387\u4f7f\u76ee\u6a19\u6688\u7729.\n[[YELLOW]]\u6688\u7dda\u89f8\u767c\u6642\u5c07\u5f37\u5236\u4f60\u7684\u76ee\u6a19\u5446\u6eef\u4e00\u5c0f\u6bb5\u6642\u9593.\n[[YELLOW]]\u6688\u7729\u6548\u679c\u6709\u52a0\u4e584\u9ede\u50b7\u5bb3(2\u5fc3).
-Guides.Archery.Section.3=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u56de\u6536\u5f13\u7bad?\n[[YELLOW]]\u4f60\u6709\u6a5f\u7387\u5728\u6bba\u6b7b\u602a\u7269\u5f8c\u56de\u6536\u5c04\u51fa\u53bb\u7684\u7bad.\n[[YELLOW]]\u6a5f\u7387\u95dc\u4fc2\u5230\u4f60\u7684\u7bad\u8853\u7b49\u7d1a.\n[[YELLOW]]\u9810\u8a2d\u72c0\u614b\u4e0b,\u6bcf\u5347\u4e00\u7b49\u589e\u52a00.1%\u6a5f\u7387,\n[[YELLOW]]\u7b49\u7d1a\u5230\u90541000\u6642\u5c07\u6709100%\u56de\u6536\u7387.\n
+Guides.Archery.Section.3=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u56de\u6536\u5f13\u7bad?\n[[YELLOW]]\u4f60\u6709\u6a5f\u7387\u5728\u6bba\u6b7b\u602a\u7269\u5f8c\u56de\u6536\u5c04\u51fa\u53bb\u7684\u7bad.\n[[YELLOW]]\u6a5f\u7387\u95dc\u4fc2\u5230\u4f60\u7684\u7bad\u8853\u7b49\u7d1a.\n[[YELLOW]]\u9810\u8a2d\u72c0\u614b\u4e0b,\u6bcf\u5347\u4e00\u7b49\u589e\u52a00.1%\u6a5f\u7387,\n[[YELLOW]]\u7b49\u7d1a\u5230\u90541000\u6642\u5c07\u6709100%\u56de\u6536\u7387.
 Guides.Axes.Section.0=[[DARK_AQUA]]\u95dc\u65bc\u65a7\u6280:\n[[YELLOW]]\u6709\u4e86\u65a7\u6280, \u4f60\u5c31\u53ef\u4ee5\u4e0d\u5fc5\u53ea\u662f\u4e82\u63ee\u4e82\u780d\n[[YELLOW]]\u4f60\u53ef\u4ee5\u66f4\u6709\u6548\u5730\u64ca\u6bba\u53ef\u60e1\u7684\u602a\u7269\u5011!\n[[YELLOW]]\u800c\u4e14\u53ef\u4ee5\u5728\u63ee\u64ca\u6642\u70b8\u98db\u6216\u767c\u51fa\u81f4\u547d\u7684\u66b4\u64ca\n[[YELLOW]]\u4ee5\u91cd\u5275 \u5c0d\u624b.\n[[YELLOW]]\u4f60\u7684\u65a7\u982d\u4e5f\u53ef\u4ee5\u6210\u70ba\u4e00\u53f0\u524a\u6728\u6a5f,\n[[YELLOW]]\u91cd\u5275\u5c0d\u624b\u7684\u88dd\u7532,\u96a8\u8457\u64cd\u65a7\u6280\u80fd\u5347\u9ad8\u800c\n[[YELLOW]]\u63d0\u5347\u6548\u679c.\n[[DARK_AQUA]]\u5982\u4f55\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u8981\u7372\u53d6\u7d93\u9a57\u4f60\u5fc5\u9808\u7528\u65a7\u982d\u653b\u64ca\u73a9\u5bb6\u6216\u602a\u7269
 Guides.Axes.Section.1=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u5288\u9871\u65ac?\n[[YELLOW]]\u9019\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd(\u7bc4\u570d\u6280).\n[[YELLOW]]\u9031\u906d\u88ab\u6ce2\u53ca\u7684\u50b7\u5bb3\u70ba\u4e3b\u8981\u76ee\u6a19\u7684\u4e00\u534a\n[[YELLOW]]\u662f\u7528\u4f86\u6e05\u9664\u4e00\u5768\u602a\u7269\u7684\u5fc5\u5099\u7d55\u62db.
 Guides.Axes.Section.2=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u6703\u5fc3\u4e00\u64ca?\n[[YELLOW]]\u6703\u5fc3\u4e00\u64ca\u662f\u4e00\u500b\u53ef\u4ee5\u9020\u6210\u52a0\u4e58\u50b7\u5bb3\u7684\u88ab\u52d5\u6280\u80fd.\n[[YELLOW]]\u9810\u8a2d\u65a7\u6280\u6bcf\u5347\u5169\u7b49,\u53ef\u589e\u52a00.1%\u66b4\u64ca\u7387\n[[YELLOW]]\u5c0d\u602a\u7269\u67092\u500d\u653b\u64ca\u529b\u5c0d\u73a9\u5bb6\u67091.5\u500d.
@@ -636,7 +636,7 @@ Guides.Repair.Section.5=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u56de\u6536?\n[[YELLOW]]
 Guides.Swords.Section.0=[[DARK_AQUA]]\u528d\u8853:\n[[YELLOW]]\u528d\u8853\u8b93\u73a9\u5bb6\u5728\u4f7f\u7528\u528d\u6230\u9b25\u6642\u7372\u5f97\u5404\u7a2e\u52a0\u4e58\u6548\u679c.\n\n[[DARK_AQUA]]\u5982\u4f55\u7372\u53d6\u7d93\u9a57:\n[[YELLOW]]\u8981\u7372\u53d6\u7d93\u9a57\u4f60\u5fc5\u9808\u7528\u528d\u653b\u64ca\u73a9\u5bb6\u6216\u602a\u7269.
 Guides.Swords.Section.1=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u5272\u88c2\u65ac?\n[[YELLOW]]\u5272\u88c2\u65ac\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd, \u4f60\u53ef\u4ee5\u5c07\u528d\u62ff\u518d\u624b\u4e0a\u4e26\u6309\u4e0b\u53f3\u9375\u555f\u52d5\u5b83.\n[[YELLOW]]\u9019\u500b\u6280\u80fd\u8b93\u4f60\u767c\u52d5\u7bc4\u570d\u653b\u64ca. \u9019\u500b\u7bc4\u570d\u6280\u80fd\u5c07\u9020\u621025%\u7684\u984d\u5916\u50b7\u5bb3,\n[[YELLOW]]\u4e26\u4e14\u9644\u5e36\u81f3\u5c115\u500bticks\u7684\u653e\u8840\u6548\u679c.
 Guides.Swords.Section.2=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u53cd\u64ca?\n[[YELLOW]]\u53cd\u64ca\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd. \u7576\u683c\u6a94\u602a\u7269\u6240\u9020\u6210\u7684\u50b7\u5bb3\u6642, \u4f60\u6709\u6a5f\u6703\u53cd\u5c04\n[[YELLOW]]50%\u6240\u53d7\u5230\u7684\u50b7\u5bb3.
-Guides.Swords.Section.3=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u653e\u8840?\n[[YELLOW]]\u653e\u8840\u5c07\u9020\u6210\u6575\u4eba\u6bcf\u5169\u79d2\u9418\u53d7\u5230\u50b7\u5bb3. \u76ee\u6a19\u5c07\u6703\u4e0d \u505c\u7684\u6d41\u8840\u76f4\u5230\u6548\u679c\n[[YELLOW]]\u7d50\u675f, \u6216\u662f\u6b7b\u4ea1. \u653e\u8840\u7684\u6642\u9593\u96a8\u8457\u4f60\u7684\u528d\u8853\u7684\u63d0\u6607\u800c\u589e\u52a0.\n
+Guides.Swords.Section.3=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u653e\u8840?\n[[YELLOW]]\u653e\u8840\u5c07\u9020\u6210\u6575\u4eba\u6bcf\u5169\u79d2\u9418\u53d7\u5230\u50b7\u5bb3. \u76ee\u6a19\u5c07\u6703\u4e0d \u505c\u7684\u6d41\u8840\u76f4\u5230\u6548\u679c\n[[YELLOW]]\u7d50\u675f, \u6216\u662f\u6b7b\u4ea1. \u653e\u8840\u7684\u6642\u9593\u96a8\u8457\u4f60\u7684\u528d\u8853\u7684\u63d0\u6607\u800c\u589e\u52a0.
 Guides.Smelting.Section.0=\u4e0b\u6b21\u9084\u6709...
 Guides.Taming.Section.0=[[DARK_AQUA]]\u99b4\u7378\n[[YELLOW]]\u99b4\u7378\u6280\u80fd\u8b93\u73a9\u5bb6\u80fd\u5728\u7528\u72fc\u6230\u9b25\u6642\n[[YELLOW]]\u6642\u6709\u52a0\u4e58\u6548\u679c.\n\n[[DARK_AQUA]]\u7d93\u9a57\u7372\u53d6:\n[[YELLOW]]\u8981\u7372\u53d6\u7d93\u9a57,\u9808\u8a13\u670d\u72fc\u6216\u8c79\u8c93,\n[[YELLOW]]\u6216\u8207\u4f60\u7684\u72fc\u4e00\u540c\u6230\u9b25.
 Guides.Taming.Section.1=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u91ce\u6027\u547c\u558a?\n[[YELLOW]]\u91ce\u6027\u547c\u558a\u662f\u4e00\u500b\u4e3b\u52d5\u6280\u80fd\u8b93\u4f60\n[[YELLOW]]\u53ef\u4ee5\u53ec\u559a\u4e00\u96bb\u72fc\u6216\u8c79\u8c93,\n[[YELLOW]]\u53ea\u8981\u624b\u630110\u8ddf\u9aa8\u982d\u6216\u751f\u9b5a,\u9ede\u5de6\u9375.