mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-26 07:06:45 +01:00
Clean up some of our messes.
This commit is contained in:
parent
c6ea32f0b0
commit
43e2c813d1
@ -112,11 +112,7 @@ public abstract class ExperienceCommand implements TabExecutor {
|
|||||||
protected abstract void handlePlayerMessageSkill(Player player, int value, SkillType skill);
|
protected abstract void handlePlayerMessageSkill(Player player, int value, SkillType skill);
|
||||||
|
|
||||||
private boolean validateArguments(CommandSender sender, String skillName, String value) {
|
private boolean validateArguments(CommandSender sender, String skillName, String value) {
|
||||||
if (CommandUtils.isInvalidInteger(sender, value) || (!skillName.equalsIgnoreCase("all") && CommandUtils.isInvalidSkill(sender, skillName))) {
|
return !(CommandUtils.isInvalidInteger(sender, value) || (!skillName.equalsIgnoreCase("all") && CommandUtils.isInvalidSkill(sender, skillName)));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void handleSenderMessage(CommandSender sender, String playerName, SkillType skill) {
|
protected static void handleSenderMessage(CommandSender sender, String playerName, SkillType skill) {
|
||||||
|
@ -134,11 +134,7 @@ public class SkillresetCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean validateArguments(CommandSender sender, String skillName) {
|
private boolean validateArguments(CommandSender sender, String skillName) {
|
||||||
if (CommandUtils.isInvalidSkill(sender, skillName) && !skillName.equalsIgnoreCase("all")) {
|
return !(CommandUtils.isInvalidSkill(sender, skillName) && !skillName.equalsIgnoreCase("all"));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void handleSenderMessage(CommandSender sender, String playerName, SkillType skill) {
|
protected static void handleSenderMessage(CommandSender sender, String playerName, SkillType skill) {
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
package com.gmail.nossr50.commands.party;
|
package com.gmail.nossr50.commands.party;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
@ -220,13 +217,7 @@ public class PartyCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String[] extractArgs(String[] args) {
|
private String[] extractArgs(String[] args) {
|
||||||
String[] newArgs = new String[args.length - 1];
|
return Arrays.copyOfRange(args, 1, args.length - 1);
|
||||||
|
|
||||||
for (int i = 1; i < args.length; i++) {
|
|
||||||
newArgs[i - 1] = args[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
return newArgs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isItemShareCategory(String category) {
|
private boolean isItemShareCategory(String category) {
|
||||||
|
@ -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()));
|
status.append(LocaleLoader.getString("Commands.Party.Status", party.getName(), LocaleLoader.getString("Party.Status." + (party.isLocked() ? "Locked" : "Unlocked")), party.getLevel()));
|
||||||
|
|
||||||
if (!party.hasReachedLevelCap()) {
|
if (!party.hasReachedLevelCap()) {
|
||||||
status.append(" (" + party.getXpToLevelPercentage() + ")");
|
status.append(" (").append(party.getXpToLevelPercentage()).append(")");
|
||||||
}
|
}
|
||||||
|
|
||||||
player.sendMessage(status.toString());
|
player.sendMessage(status.toString());
|
||||||
@ -80,11 +80,7 @@ public class PartyInfoCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isUnlockedFeature(Party party, PartyFeature partyFeature) {
|
private boolean isUnlockedFeature(Party party, PartyFeature partyFeature) {
|
||||||
if (party.getLevel() < Config.getInstance().getPartyFeatureUnlockLevel(partyFeature)) {
|
return party.getLevel() >= Config.getInstance().getPartyFeatureUnlockLevel(partyFeature);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayShareModeInfo(Player player, Party party) {
|
private void displayShareModeInfo(Player player, Party party) {
|
||||||
|
@ -38,7 +38,7 @@ public class PartyItemShareCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
boolean toggle = false;
|
boolean toggle;
|
||||||
|
|
||||||
if (CommandUtils.shouldEnableToggle(args[2])) {
|
if (CommandUtils.shouldEnableToggle(args[2])) {
|
||||||
toggle = true;
|
toggle = true;
|
||||||
|
@ -93,7 +93,7 @@ public class McrankCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean useBoard = (sender instanceof Player) && (Config.getInstance().getRankUseBoard());
|
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);
|
new McrankCommandAsyncTask(playerName, sender, useBoard, useChat).runTaskAsynchronously(mcMMO.p);
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ public class MctopCommand implements TabExecutor {
|
|||||||
|
|
||||||
private void display(int page, SkillType skill, CommandSender sender) {
|
private void display(int page, SkillType skill, CommandSender sender) {
|
||||||
boolean useBoard = (sender instanceof Player) && (Config.getInstance().getTopUseBoard());
|
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);
|
new MctopCommandAsyncTask(page, skill, sender, useBoard, useChat).runTaskAsynchronously(mcMMO.p);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.text.DecimalFormat;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.util.Motd;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
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")));
|
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Effects.Effects")));
|
||||||
|
|
||||||
if (isLucky) {
|
if (isLucky) {
|
||||||
String perkPrefix = LocaleLoader.getString("MOTD.PerksPrefix");
|
player.sendMessage(Motd.PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Lucky.Name"), LocaleLoader.getString("Perks.Lucky.Desc", skillName)));
|
||||||
player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Lucky.Name"), LocaleLoader.getString("Perks.Lucky.Desc", skillName)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String message : effectMessages) {
|
for (String message : effectMessages) {
|
||||||
|
@ -56,7 +56,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
|||||||
try {
|
try {
|
||||||
in = new BufferedReader(new FileReader(usersFilePath));
|
in = new BufferedReader(new FileReader(usersFilePath));
|
||||||
StringBuilder writer = new StringBuilder();
|
StringBuilder writer = new StringBuilder();
|
||||||
String line = "";
|
String line;
|
||||||
|
|
||||||
while ((line = in.readLine()) != null) {
|
while ((line = in.readLine()) != null) {
|
||||||
String[] character = line.split(":");
|
String[] character = line.split(":");
|
||||||
@ -111,7 +111,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
|||||||
try {
|
try {
|
||||||
in = new BufferedReader(new FileReader(usersFilePath));
|
in = new BufferedReader(new FileReader(usersFilePath));
|
||||||
StringBuilder writer = new StringBuilder();
|
StringBuilder writer = new StringBuilder();
|
||||||
String line = "";
|
String line;
|
||||||
|
|
||||||
while ((line = in.readLine()) != null) {
|
while ((line = in.readLine()) != null) {
|
||||||
String[] character = line.split(":");
|
String[] character = line.split(":");
|
||||||
@ -173,7 +173,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
|||||||
try {
|
try {
|
||||||
in = new BufferedReader(new FileReader(usersFilePath));
|
in = new BufferedReader(new FileReader(usersFilePath));
|
||||||
StringBuilder writer = new StringBuilder();
|
StringBuilder writer = new StringBuilder();
|
||||||
String line = "";
|
String line;
|
||||||
|
|
||||||
while ((line = in.readLine()) != null) {
|
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.
|
// 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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerProfile p = loadFromLine(character);
|
return loadFromLine(character);
|
||||||
return p;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Didn't find the player, create a new one
|
// Didn't find the player, create a new one
|
||||||
@ -515,7 +514,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
|||||||
synchronized (fileWritingLock) {
|
synchronized (fileWritingLock) {
|
||||||
try {
|
try {
|
||||||
in = new BufferedReader(new FileReader(usersFilePath));
|
in = new BufferedReader(new FileReader(usersFilePath));
|
||||||
String line = "";
|
String line;
|
||||||
|
|
||||||
while ((line = in.readLine()) != null) {
|
while ((line = in.readLine()) != null) {
|
||||||
String[] data = line.split(":");
|
String[] data = line.split(":");
|
||||||
@ -594,7 +593,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
|||||||
try {
|
try {
|
||||||
in = new BufferedReader(new FileReader(usersFilePath));
|
in = new BufferedReader(new FileReader(usersFilePath));
|
||||||
StringBuilder writer = new StringBuilder();
|
StringBuilder writer = new StringBuilder();
|
||||||
String line = "";
|
String line;
|
||||||
HashSet<String> players = new HashSet<String>();
|
HashSet<String> players = new HashSet<String>();
|
||||||
|
|
||||||
while ((line = in.readLine()) != null) {
|
while ((line = in.readLine()) != null) {
|
||||||
|
@ -195,7 +195,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
|
|
||||||
if (checkConnected()) {
|
if (checkConnected()) {
|
||||||
String query = skill == null ? "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing+alchemy" : skill.name().toLowerCase();
|
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;
|
PreparedStatement statement = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -448,16 +448,16 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
+ "JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) "
|
+ "JOIN " + tablePrefix + "huds h ON (u.id = h.user_id) "
|
||||||
+ "WHERE u.user = ?");
|
+ "WHERE u.user = ?");
|
||||||
List<String> usernames = getStoredUsers();
|
List<String> usernames = getStoredUsers();
|
||||||
ResultSet result = null;
|
ResultSet resultSet;
|
||||||
int convertedUsers = 0;
|
int convertedUsers = 0;
|
||||||
long startMillis = System.currentTimeMillis();
|
long startMillis = System.currentTimeMillis();
|
||||||
for (String playerName : usernames) {
|
for (String playerName : usernames) {
|
||||||
statement.setString(1, playerName);
|
statement.setString(1, playerName);
|
||||||
try {
|
try {
|
||||||
result = statement.executeQuery();
|
resultSet = statement.executeQuery();
|
||||||
result.next();
|
resultSet.next();
|
||||||
destination.saveUser(loadFromResult(playerName, result));
|
destination.saveUser(loadFromResult(playerName, resultSet));
|
||||||
result.close();
|
resultSet.close();
|
||||||
}
|
}
|
||||||
catch (SQLException e) {
|
catch (SQLException e) {
|
||||||
// Ignore
|
// Ignore
|
||||||
@ -798,7 +798,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResultSet resultSet = null;
|
ResultSet resultSet;
|
||||||
HashMap<Integer, ArrayList<String>> rows = new HashMap<Integer, ArrayList<String>>();
|
HashMap<Integer, ArrayList<String>> rows = new HashMap<Integer, ArrayList<String>>();
|
||||||
PreparedStatement statement = null;
|
PreparedStatement statement = null;
|
||||||
|
|
||||||
@ -984,7 +984,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
int result = -1;
|
int result = -1;
|
||||||
|
|
||||||
if (checkConnected()) {
|
if (checkConnected()) {
|
||||||
ResultSet resultSet = null;
|
ResultSet resultSet;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
resultSet = statement.executeQuery();
|
resultSet = statement.executeQuery();
|
||||||
|
@ -13,4 +13,4 @@ public enum FormulaType {
|
|||||||
return UNKNOWN;
|
return UNKNOWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
@ -310,7 +310,7 @@ public class Party {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!nearMembers.contains(member) && !playerName.equalsIgnoreCase(memberName)) {
|
if (!nearMembers.contains(member) && !playerName.equalsIgnoreCase(memberName)) {
|
||||||
memberList.append(ChatColor.ITALIC + "");
|
memberList.append(ChatColor.ITALIC).append("");
|
||||||
}
|
}
|
||||||
|
|
||||||
memberList.append(memberName).append(ChatColor.RESET).append(" ");
|
memberList.append(memberName).append(ChatColor.RESET).append(" ");
|
||||||
|
@ -45,10 +45,7 @@ public enum PartyFeature {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Permissions.partySubcommand(player, partySubCommandType)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return Permissions.partySubcommand(player, partySubCommandType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,4 +22,4 @@ public enum ShareMode {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
@ -725,12 +725,12 @@ public class McMMOPlayer {
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case ADMIN:
|
case ADMIN:
|
||||||
adminChatMode = !adminChatMode;
|
adminChatMode = !adminChatMode;
|
||||||
partyChatMode = adminChatMode ? false : partyChatMode;
|
partyChatMode = !adminChatMode && partyChatMode;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case PARTY:
|
case PARTY:
|
||||||
partyChatMode = !partyChatMode;
|
partyChatMode = !partyChatMode;
|
||||||
adminChatMode = partyChatMode ? false : adminChatMode;
|
adminChatMode = !partyChatMode && adminChatMode;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -17,4 +17,4 @@ public enum Rarity {
|
|||||||
return COMMON;
|
return COMMON;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
@ -79,7 +79,8 @@ public class MetricsManager {
|
|||||||
|
|
||||||
if (version.contains("-")) {
|
if (version.contains("-")) {
|
||||||
String majorVersion = version.substring(0, version.indexOf("-"));
|
String majorVersion = version.substring(0, version.indexOf("-"));
|
||||||
String subVersion = "";
|
String subVersion;
|
||||||
|
|
||||||
if (isOfficialBuild) {
|
if (isOfficialBuild) {
|
||||||
int startIndex = version.indexOf("-");
|
int startIndex = version.indexOf("-");
|
||||||
if (version.substring(startIndex + 1).contains("-")) {
|
if (version.substring(startIndex + 1).contains("-")) {
|
||||||
@ -96,9 +97,6 @@ public class MetricsManager {
|
|||||||
version = majorVersion + "~=~" + subVersion;
|
version = majorVersion + "~=~" + subVersion;
|
||||||
haveVersionInformation = true;
|
haveVersionInformation = true;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
haveVersionInformation = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (haveVersionInformation) {
|
if (haveVersionInformation) {
|
||||||
versionDonutGraph.addPlotter(new Metrics.Plotter(version) {
|
versionDonutGraph.addPlotter(new Metrics.Plotter(version) {
|
||||||
|
@ -13,9 +13,7 @@ import com.gmail.nossr50.util.Misc;
|
|||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
public class TeleportationWarmup extends BukkitRunnable {
|
public class TeleportationWarmup extends BukkitRunnable {
|
||||||
private static Player teleportingPlayer;
|
|
||||||
private McMMOPlayer mcMMOPlayer;
|
private McMMOPlayer mcMMOPlayer;
|
||||||
private static Player targetPlayer;
|
|
||||||
private McMMOPlayer mcMMOTarget;
|
private McMMOPlayer mcMMOTarget;
|
||||||
|
|
||||||
public TeleportationWarmup(McMMOPlayer mcMMOPlayer, McMMOPlayer mcMMOTarget) {
|
public TeleportationWarmup(McMMOPlayer mcMMOPlayer, McMMOPlayer mcMMOTarget) {
|
||||||
@ -25,12 +23,8 @@ public class TeleportationWarmup extends BukkitRunnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
checkPartyTeleport();
|
Player teleportingPlayer = mcMMOPlayer.getPlayer();
|
||||||
}
|
Player targetPlayer = mcMMOTarget.getPlayer();
|
||||||
|
|
||||||
private void checkPartyTeleport() {
|
|
||||||
teleportingPlayer = mcMMOPlayer.getPlayer();
|
|
||||||
targetPlayer = mcMMOTarget.getPlayer();
|
|
||||||
Location previousLocation = mcMMOPlayer.getTeleportCommenceLocation();
|
Location previousLocation = mcMMOPlayer.getTeleportCommenceLocation();
|
||||||
Location newLocation = mcMMOPlayer.getPlayer().getLocation();
|
Location newLocation = mcMMOPlayer.getPlayer().getLocation();
|
||||||
long recentlyHurt = mcMMOPlayer.getRecentlyHurt();
|
long recentlyHurt = mcMMOPlayer.getRecentlyHurt();
|
||||||
|
@ -17,7 +17,6 @@ public class AlchemyBrewCheckTask extends BukkitRunnable {
|
|||||||
private Player player;
|
private Player player;
|
||||||
private Block brewingStand;
|
private Block brewingStand;
|
||||||
private ItemStack[] oldInventory;
|
private ItemStack[] oldInventory;
|
||||||
private ItemStack[] newInventory;
|
|
||||||
|
|
||||||
public AlchemyBrewCheckTask(Player player, BrewingStand brewingStand) {
|
public AlchemyBrewCheckTask(Player player, BrewingStand brewingStand) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
@ -27,7 +26,7 @@ public class AlchemyBrewCheckTask extends BukkitRunnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
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 (Alchemy.brewingStandMap.containsKey(brewingStand)) {
|
||||||
if (oldInventory[INGREDIENT_SLOT] == null || newInventory[INGREDIENT_SLOT] == null || !oldInventory[INGREDIENT_SLOT].isSimilar(newInventory[INGREDIENT_SLOT]) || !AlchemyPotionBrewer.isValidBrew(player, newInventory)) {
|
if (oldInventory[INGREDIENT_SLOT] == null || newInventory[INGREDIENT_SLOT] == null || !oldInventory[INGREDIENT_SLOT].isSimilar(newInventory[INGREDIENT_SLOT]) || !AlchemyPotionBrewer.isValidBrew(player, newInventory)) {
|
||||||
|
@ -28,7 +28,7 @@ public class BleedTimerTask extends BukkitRunnable {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int damage = 0;
|
int damage;
|
||||||
|
|
||||||
if (entity instanceof Player) {
|
if (entity instanceof Player) {
|
||||||
damage = 1;
|
damage = 1;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.skills.herbalism;
|
package com.gmail.nossr50.skills.herbalism;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -134,7 +133,7 @@ public class HerbalismManager extends SkillManager {
|
|||||||
|
|
||||||
Collection<ItemStack> drops = null;
|
Collection<ItemStack> drops = null;
|
||||||
int amount = 1;
|
int amount = 1;
|
||||||
int xp = 0;
|
int xp;
|
||||||
boolean greenTerra = mcMMOPlayer.getAbilityMode(skill.getAbility());
|
boolean greenTerra = mcMMOPlayer.getAbilityMode(skill.getAbility());
|
||||||
|
|
||||||
if (ModUtils.isCustomHerbalismBlock(blockState)) {
|
if (ModUtils.isCustomHerbalismBlock(blockState)) {
|
||||||
@ -203,7 +202,7 @@ public class HerbalismManager extends SkillManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<HylianTreasure> treasures = new ArrayList<HylianTreasure>();
|
List<HylianTreasure> treasures;
|
||||||
|
|
||||||
switch (blockState.getType()) {
|
switch (blockState.getType()) {
|
||||||
case DEAD_BUSH:
|
case DEAD_BUSH:
|
||||||
|
@ -33,15 +33,7 @@ public class Repair {
|
|||||||
* @return true if the item is salvageable, false otherwise
|
* @return true if the item is salvageable, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean isSalvageable(ItemStack item) {
|
public static boolean isSalvageable(ItemStack item) {
|
||||||
if (Config.getInstance().getSalvageTools() && ItemUtils.isMinecraftTool(item)) {
|
return (Config.getInstance().getSalvageTools() && ItemUtils.isMinecraftTool(item)) || (Config.getInstance().getSalvageArmor() && !ItemUtils.isChainmailArmor(item) && ItemUtils.isMinecraftArmor(item));
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.getInstance().getSalvageArmor() && !ItemUtils.isChainmailArmor(item) && ItemUtils.isMinecraftArmor(item)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getAnvilMessage(Material type) {
|
public static String getAnvilMessage(Material type) {
|
||||||
|
@ -26,9 +26,7 @@ public class Unarmed {
|
|||||||
if (inventory.containsAtLeast(dropStack, 1)) {
|
if (inventory.containsAtLeast(dropStack, 1)) {
|
||||||
int nextSlot = 0;
|
int nextSlot = 0;
|
||||||
|
|
||||||
for (Iterator<ItemStack> iterator = inventory.iterator(); iterator.hasNext();) {
|
for (ItemStack itemstack: inventory) {
|
||||||
ItemStack itemstack = iterator.next();
|
|
||||||
|
|
||||||
if (dropStack.isSimilar(itemstack)) {
|
if (dropStack.isSimilar(itemstack)) {
|
||||||
int itemAmount = itemstack.getAmount();
|
int itemAmount = itemstack.getAmount();
|
||||||
int itemMax = itemstack.getMaxStackSize();
|
int itemMax = itemstack.getMaxStackSize();
|
||||||
@ -71,7 +69,8 @@ public class Unarmed {
|
|||||||
|
|
||||||
nextSlot++;
|
nextSlot++;
|
||||||
}
|
}
|
||||||
} else if (firstEmpty != -1) {
|
}
|
||||||
|
else if (firstEmpty != -1) {
|
||||||
drop.remove();
|
drop.remove();
|
||||||
dropStack.setAmount(dropAmount);
|
dropStack.setAmount(dropAmount);
|
||||||
inventory.setItem(firstEmpty, dropStack);
|
inventory.setItem(firstEmpty, dropStack);
|
||||||
|
@ -15,10 +15,6 @@ public class LogFilter implements Filter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isLoggable(LogRecord record) {
|
public boolean isLoggable(LogRecord record) {
|
||||||
if (record.getMessage().contains("[Debug]") && !debug) {
|
return !(record.getMessage().contains("[Debug]") && !debug);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,9 +96,9 @@ public final class MobHealthbarUtils {
|
|||||||
double currentHealth = Math.max(entity.getHealth() - damage, 0);
|
double currentHealth = Math.max(entity.getHealth() - damage, 0);
|
||||||
double healthPercentage = (currentHealth / maxHealth) * 100.0D;
|
double healthPercentage = (currentHealth / maxHealth) * 100.0D;
|
||||||
|
|
||||||
int fullDisplay = 0;
|
int fullDisplay;
|
||||||
ChatColor color = ChatColor.BLACK;
|
ChatColor color = ChatColor.BLACK;
|
||||||
String symbol = "";
|
String symbol;
|
||||||
|
|
||||||
switch (profile.getMobHealthbarType()) {
|
switch (profile.getMobHealthbarType()) {
|
||||||
case HEARTS:
|
case HEARTS:
|
||||||
|
@ -12,7 +12,7 @@ import com.gmail.nossr50.locale.LocaleLoader;
|
|||||||
import com.gmail.nossr50.util.skills.PerksUtils;
|
import com.gmail.nossr50.util.skills.PerksUtils;
|
||||||
|
|
||||||
public final class Motd {
|
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 static final PluginDescriptionFile pluginDescription = mcMMO.p.getDescription();
|
||||||
|
|
||||||
private Motd() {}
|
private Motd() {}
|
||||||
@ -101,7 +101,7 @@ public final class Motd {
|
|||||||
|
|
||||||
if (cooldownReduction > 0.0) {
|
if (cooldownReduction > 0.0) {
|
||||||
DecimalFormat percent = new DecimalFormat("##0.00%");
|
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);
|
int perkAmount = PerksUtils.handleActivationPerks(player, 0, 0);
|
||||||
|
|
||||||
if (perkAmount > 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) {
|
public static void displayLuckyPerks(Player player) {
|
||||||
for (SkillType skill : SkillType.values()) {
|
for (SkillType skill : SkillType.values()) {
|
||||||
if (Permissions.lucky(player, skill)) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,36 +69,6 @@ public class StringUtils {
|
|||||||
return prettyString;
|
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
|
* Determine if a string represents an Integer
|
||||||
*
|
*
|
||||||
|
@ -233,17 +233,12 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
for (String key : keys) {
|
for (String key : keys) {
|
||||||
String[] info = key.split(",");
|
String[] info = key.split(",");
|
||||||
if (worldName.equals(info[0])) {
|
if (worldName.equals(info[0])) {
|
||||||
int cx = 0;
|
|
||||||
int cz = 0;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cx = Integer.parseInt(info[1]);
|
saveChunk(Integer.parseInt(info[1]), Integer.parseInt(info[2]), world);
|
||||||
cz = Integer.parseInt(info[2]);
|
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
continue;
|
// Ignore
|
||||||
}
|
}
|
||||||
saveChunk(cx, cz, world);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -261,17 +256,12 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
for (String key : keys) {
|
for (String key : keys) {
|
||||||
String[] info = key.split(",");
|
String[] info = key.split(",");
|
||||||
if (worldName.equals(info[0])) {
|
if (worldName.equals(info[0])) {
|
||||||
int cx = 0;
|
|
||||||
int cz = 0;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cx = Integer.parseInt(info[1]);
|
unloadChunk(Integer.parseInt(info[1]), Integer.parseInt(info[2]), world);
|
||||||
cz = Integer.parseInt(info[2]);
|
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
continue;
|
// Ignore
|
||||||
}
|
}
|
||||||
unloadChunk(cx, cz, world);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,11 +58,7 @@ public final class CommandUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hidden(CommandSender sender, Player target, boolean hasPermission) {
|
public static boolean hidden(CommandSender sender, Player target, boolean hasPermission) {
|
||||||
if (sender instanceof Player && !((Player)sender).canSee(target) && !hasPermission) {
|
return sender instanceof Player && !((Player) sender).canSee(target) && !hasPermission;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean noConsoleUsage(CommandSender sender) {
|
public static boolean noConsoleUsage(CommandSender sender) {
|
||||||
@ -195,10 +191,10 @@ public final class CommandUtils {
|
|||||||
|
|
||||||
public static String displaySkill(PlayerProfile profile, SkillType skill) {
|
public static String displaySkill(PlayerProfile profile, SkillType skill) {
|
||||||
if (skill.isChildSkill()) {
|
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) {
|
private static void printGroupedSkillData(Player inspect, CommandSender display, String header, List<SkillType> skillGroup) {
|
||||||
|
@ -402,6 +402,6 @@ public class ScoreboardManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void setRevertTimer(String playerName, int seconds) {
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ public class SkillUtils {
|
|||||||
return (event.getChance() * activationChance) > Misc.getRandom().nextInt(activationChance);
|
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);
|
SecondaryAbilityWeightedActivationCheckEvent event = new SecondaryAbilityWeightedActivationCheckEvent(player, SecondaryAbility.EXCAVATION_TREASURE_HUNTER, dropChance / activationChance);
|
||||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||||
return (event.getChance() * activationChance) > (Misc.getRandom().nextDouble() * activationChance);
|
return (event.getChance() * activationChance) > (Misc.getRandom().nextDouble() * activationChance);
|
||||||
|
@ -39,7 +39,7 @@ Axes.Combat.CriticalHit=[[RED]]KRITICK\u00dd Z\u00c1SAH!
|
|||||||
Axes.Combat.GI.Proc=[[GREEN]]**\u00daDER VELKOU SILOU**
|
Axes.Combat.GI.Proc=[[GREEN]]**\u00daDER VELKOU SILOU**
|
||||||
Axes.Combat.GI.Struck=[[RED]]**ZASAZENI S VYSSIM UCINKEM**
|
Axes.Combat.GI.Struck=[[RED]]**ZASAZENI S VYSSIM UCINKEM**
|
||||||
Axes.Combat.SS.Length=[[RED]]Delka trvani Drtice lebek: [[YELLOW]]{0}s
|
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.1=Ud\u011bl AoE zran\u011bn\u00ed
|
||||||
Axes.Effect.2=Kriticky zasah
|
Axes.Effect.2=Kriticky zasah
|
||||||
Axes.Effect.3=Dvojite zraneni
|
Axes.Effect.3=Dvojite zraneni
|
||||||
|
@ -10,7 +10,7 @@ Repair.Effect.4=Super Poravka
|
|||||||
Repair.SkillName=POPRAVI
|
Repair.SkillName=POPRAVI
|
||||||
Repair.Arcane.Fail=[[RED]]Arcane Snage Su Napustile Item.
|
Repair.Arcane.Fail=[[RED]]Arcane Snage Su Napustile Item.
|
||||||
Swords.Combat.Bleeding.Stopped=[[GRAY]]Krvarenje je [[GREEN]]prestalo[[GRAY]]!
|
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.
|
Combat.TouchedFuzzy=[[DARK_RED]]Dodirnuo Fuzzy.Osjetio Fuzzy.
|
||||||
Commands.Party.Kick=[[RED]]Ti Si Bio Izbacen Iz Partyja{0}!
|
Commands.Party.Kick=[[RED]]Ti Si Bio Izbacen Iz Partyja{0}!
|
||||||
Party.Unlocked=[[GRAY]]Party je otkljucan
|
Party.Unlocked=[[GRAY]]Party je otkljucan
|
||||||
|
@ -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.
|
Repair.Arcane.Fail=[[RED]]O objecto perdeu permanentemente os poderes Arcanos.
|
||||||
Swords.Combat.Bleeding.Stopped=[[GRAY]]A hemorragia [[GREEN]]parou[[GRAY]]!
|
Swords.Combat.Bleeding.Stopped=[[GRAY]]A hemorragia [[GREEN]]parou[[GRAY]]!
|
||||||
Swords.Skills.SS.On=[[GREEN]]**ATAQUES SERRILHADOS ACTIVADO**
|
Swords.Skills.SS.On=[[GREEN]]**ATAQUES SERRILHADOS ACTIVADO**
|
||||||
Woodcutting.SkillName=LENHADOR\n
|
Woodcutting.SkillName=LENHADOR
|
||||||
Ability.Generic.Template=[[RED]]{0}: [[YELLOW]]{1}
|
Ability.Generic.Template=[[RED]]{0}: [[YELLOW]]{1}
|
||||||
Commands.Invite.Accepted=[[GREEN]]Convite aceite. Tu entraste numa festa {0}
|
Commands.Invite.Accepted=[[GREEN]]Convite aceite. Tu entraste numa festa {0}
|
||||||
Commands.Party.Kick=[[RED]]Foste expulso da festa {0}!
|
Commands.Party.Kick=[[RED]]Foste expulso da festa {0}!
|
||||||
|
@ -593,7 +593,7 @@ Guides.Acrobatics.Section.2=[[DARK_AQUA]]\u4ec0\u9ebc\u662f\u8ff4\u907f?\n[YELLO
|
|||||||
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.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.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.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.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.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.
|
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.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.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.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.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.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.
|
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.
|
||||||
|
Loading…
Reference in New Issue
Block a user