mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2026-02-19 02:12:58 +01:00
Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a66ff7659 | ||
|
|
df53e2fd4f | ||
|
|
4210920c5f | ||
|
|
3440833af8 | ||
|
|
1e738263bc | ||
|
|
9cf322ca0b | ||
|
|
0c027ca697 | ||
|
|
27ed5f7c38 | ||
|
|
2f83e559a4 | ||
|
|
8b55744447 | ||
|
|
2f491b24e2 | ||
|
|
d2cb55befa | ||
|
|
e3e4cf9884 | ||
|
|
1b461ac96a | ||
|
|
1fc3c8fab2 | ||
|
|
7c28be5e62 | ||
|
|
cbe9cae4ea | ||
|
|
c0b7f8a323 | ||
|
|
f8b4412049 | ||
|
|
10e227a5ac | ||
|
|
077431630a | ||
|
|
37395a70e6 | ||
|
|
b779258d69 | ||
|
|
d3ec976f44 | ||
|
|
79a5732c4d | ||
|
|
12c6bfc2e8 | ||
|
|
31fff0623d | ||
|
|
0d2b87834c | ||
|
|
2feba8f64c | ||
|
|
cf82ae4c66 | ||
|
|
0d7c402c01 | ||
|
|
ae8b70be0f | ||
|
|
a87336b7ee | ||
|
|
7814fa8d46 |
@@ -7,6 +7,28 @@ Key:
|
||||
! Change
|
||||
- Removal
|
||||
|
||||
Version 1.4.02
|
||||
+ Added API to get the skill and power level caps.
|
||||
= Fixed bug where Deflect was calculated based on the attacker, not the defender
|
||||
= Fixed bug where some skills weren't registering as unlocked until one level later
|
||||
= Fixed bug where the PTP cooldown was being read improperly
|
||||
= Fixed bug where /ptp <accept|toggle|acceptall> where broken
|
||||
= Fixed ClassCastException relating to counter-attack with Swords
|
||||
= Fixed issue with some skill activations not activating enough or activating too much
|
||||
|
||||
Version 1.4.01
|
||||
= Fixed bug where trying to use /mctop or /xplock with the Smelting child skill caused NPEs
|
||||
= Fixed bug where /mctop and /mcrank wouldn't show overall power levels for servers using Flatfile
|
||||
= Fixed bug where Smelting would throw consistent errors due to offline players
|
||||
= Fixed bug where repairing an mcMMO ability-buffed item with mcMMO repair could take the enchant but leave the lore tag
|
||||
= Fixed bug where using '/party chat message...' would result in the first word of the message being printed repeatedly
|
||||
= Fixed bug where the wrong flag was being set when taking damage
|
||||
= Fixed bug where the PTP cooldown was set improperly
|
||||
= Fixed bug where ptp permissions weren't being handled properly
|
||||
= Fixed bug where Beast Lore wouldn't work
|
||||
= Fixed bug where Chimaera Wing would always teleport to spawn, even when the player had a valid bed spawn location
|
||||
= Updated locale files
|
||||
|
||||
Version 1.4.00
|
||||
+ Added new Child Skill - Smelting!
|
||||
+ Added a version check, admins will get notified when a new version is available!
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -2,7 +2,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.gmail.nossr50.mcMMO</groupId>
|
||||
<artifactId>mcMMO</artifactId>
|
||||
<version>1.4.00</version>
|
||||
<version>1.4.02</version>
|
||||
<name>mcMMO</name>
|
||||
<url>https://github.com/mcMMO-Dev/mcMMO</url>
|
||||
<issueManagement>
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.gmail.nossr50.api;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
@@ -10,38 +10,38 @@ public final class AbilityAPI {
|
||||
private AbilityAPI() {}
|
||||
|
||||
public static boolean berserkEnabled(Player player) {
|
||||
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.BERSERK);
|
||||
return UserManager.getPlayer(player).getAbilityMode(AbilityType.BERSERK);
|
||||
}
|
||||
|
||||
public static boolean gigaDrillBreakerEnabled(Player player) {
|
||||
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.GIGA_DRILL_BREAKER);
|
||||
return UserManager.getPlayer(player).getAbilityMode(AbilityType.GIGA_DRILL_BREAKER);
|
||||
}
|
||||
|
||||
public static boolean greenTerraEnabled(Player player) {
|
||||
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.GREEN_TERRA);
|
||||
return UserManager.getPlayer(player).getAbilityMode(AbilityType.GREEN_TERRA);
|
||||
}
|
||||
|
||||
public static boolean serratedStrikesEnabled(Player player) {
|
||||
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.SERRATED_STRIKES);
|
||||
return UserManager.getPlayer(player).getAbilityMode(AbilityType.SERRATED_STRIKES);
|
||||
}
|
||||
|
||||
public static boolean skullSplitterEnabled(Player player) {
|
||||
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.SKULL_SPLITTER);
|
||||
return UserManager.getPlayer(player).getAbilityMode(AbilityType.SKULL_SPLITTER);
|
||||
}
|
||||
|
||||
public static boolean superBreakerEnabled(Player player) {
|
||||
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.SUPER_BREAKER);
|
||||
return UserManager.getPlayer(player).getAbilityMode(AbilityType.SUPER_BREAKER);
|
||||
}
|
||||
|
||||
public static boolean treeFellerEnabled(Player player) {
|
||||
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.TREE_FELLER);
|
||||
return UserManager.getPlayer(player).getAbilityMode(AbilityType.TREE_FELLER);
|
||||
}
|
||||
|
||||
public static boolean isAnyAbilityEnabled(Player player) {
|
||||
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
|
||||
for (AbilityType ability : AbilityType.values()) {
|
||||
if (profile.getAbilityMode(ability)) {
|
||||
if (mcMMOPlayer.getAbilityMode(ability)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,6 +237,29 @@ public final class ExperienceAPI {
|
||||
return UserManager.getPlayer(player).getPowerLevel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the level cap of a specific skill.
|
||||
* </br>
|
||||
* This function is designed for API usage.
|
||||
*
|
||||
* @param skillType The skill to get the level cap for
|
||||
* @return the level cap of a given skill
|
||||
*/
|
||||
public static int getLevelCap(String skillType) {
|
||||
return Config.getInstance().getLevelCap(SkillType.getSkill(skillType));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the power level cap.
|
||||
* </br>
|
||||
* This function is designed for API usage.
|
||||
*
|
||||
* @return the power level cap of a given skill
|
||||
*/
|
||||
public static int getPowerLevelCap() {
|
||||
return Config.getInstance().getPowerLevelCap();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the level of a player in a specific skill type.
|
||||
* </br>
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.gmail.nossr50.util.player.UserManager;
|
||||
public class McabilityCommand implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
PlayerProfile profile;
|
||||
McMMOPlayer mcMMOPlayer;
|
||||
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
@@ -23,16 +23,16 @@ public class McabilityCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
profile = UserManager.getPlayer((Player) sender).getProfile();
|
||||
mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
||||
|
||||
if (profile.getAbilityUse()) {
|
||||
if (mcMMOPlayer.getAbilityUse()) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Ability.Off"));
|
||||
}
|
||||
else {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Ability.On"));
|
||||
}
|
||||
|
||||
profile.toggleAbilityUse();
|
||||
mcMMOPlayer.toggleAbilityUse();
|
||||
return true;
|
||||
|
||||
case 1:
|
||||
@@ -41,12 +41,12 @@ public class McabilityCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||
|
||||
if (mcMMOPlayer == null) {
|
||||
profile = new PlayerProfile(args[0], false);
|
||||
PlayerProfile playerProfile = new PlayerProfile(args[0], false);
|
||||
|
||||
if (!profile.isLoaded()) {
|
||||
if (!playerProfile.isLoaded()) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
||||
return true;
|
||||
}
|
||||
@@ -56,21 +56,20 @@ public class McabilityCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
Player player = mcMMOPlayer.getPlayer();
|
||||
profile = mcMMOPlayer.getProfile();
|
||||
|
||||
if (!player.isOnline()) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (profile.getAbilityUse()) {
|
||||
if (mcMMOPlayer.getAbilityUse()) {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Ability.Off"));
|
||||
}
|
||||
else {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Ability.On"));
|
||||
}
|
||||
|
||||
profile.toggleAbilityUse();
|
||||
mcMMOPlayer.toggleAbilityUse();
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.gmail.nossr50.util.player.UserManager;
|
||||
public class McgodCommand implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
PlayerProfile profile;
|
||||
McMMOPlayer mcMMOPlayer;
|
||||
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
@@ -27,21 +27,21 @@ public class McgodCommand implements CommandExecutor {
|
||||
return false;
|
||||
}
|
||||
|
||||
profile = UserManager.getPlayer((Player) sender).getProfile();
|
||||
mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
||||
|
||||
if (profile == null) {
|
||||
if (mcMMOPlayer == null) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (profile.getGodMode()) {
|
||||
if (mcMMOPlayer.getGodMode()) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled"));
|
||||
}
|
||||
else {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Enabled"));
|
||||
}
|
||||
|
||||
profile.toggleGodMode();
|
||||
mcMMOPlayer.toggleGodMode();
|
||||
return true;
|
||||
|
||||
case 1:
|
||||
@@ -50,12 +50,12 @@ public class McgodCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||
|
||||
if (mcMMOPlayer == null) {
|
||||
profile = new PlayerProfile(args[0], false);
|
||||
PlayerProfile playerProfile = new PlayerProfile(args[0], false);
|
||||
|
||||
if (!profile.isLoaded()) {
|
||||
if (!playerProfile.isLoaded()) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
||||
return true;
|
||||
}
|
||||
@@ -64,7 +64,6 @@ public class McgodCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
profile = mcMMOPlayer.getProfile();
|
||||
Player player = mcMMOPlayer.getPlayer();
|
||||
|
||||
if (!player.isOnline()) {
|
||||
@@ -72,14 +71,14 @@ public class McgodCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (profile.getGodMode()) {
|
||||
if (mcMMOPlayer.getGodMode()) {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled"));
|
||||
}
|
||||
else {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.GodMode.Enabled"));
|
||||
}
|
||||
|
||||
profile.toggleGodMode();
|
||||
mcMMOPlayer.toggleGodMode();
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
||||
@@ -5,7 +5,7 @@ import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
@@ -14,16 +14,16 @@ public class McnotifyCommand implements CommandExecutor {
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
PlayerProfile profile = UserManager.getPlayer((Player) sender).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
||||
|
||||
if (profile.useChatNotifications()) {
|
||||
if (mcMMOPlayer.useChatNotifications()) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Notifications.Off"));
|
||||
}
|
||||
else {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Notifications.On"));
|
||||
}
|
||||
|
||||
profile.toggleChatNotifications();
|
||||
mcMMOPlayer.toggleChatNotifications();
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.gmail.nossr50.util.player.UserManager;
|
||||
public class McrefreshCommand implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
PlayerProfile profile;
|
||||
McMMOPlayer mcMMOPlayer;
|
||||
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
@@ -27,12 +27,12 @@ public class McrefreshCommand implements CommandExecutor {
|
||||
return false;
|
||||
}
|
||||
|
||||
profile = UserManager.getPlayer(sender.getName()).getProfile();
|
||||
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||
|
||||
profile.setRecentlyHurt(0);
|
||||
profile.resetCooldowns();
|
||||
profile.resetToolPrepMode();
|
||||
profile.resetAbilityMode();
|
||||
mcMMOPlayer.setRecentlyHurt(0);
|
||||
mcMMOPlayer.getProfile().resetCooldowns();
|
||||
mcMMOPlayer.resetToolPrepMode();
|
||||
mcMMOPlayer.resetAbilityMode();
|
||||
|
||||
sender.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
||||
return true;
|
||||
@@ -43,12 +43,12 @@ public class McrefreshCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||
|
||||
if (mcMMOPlayer == null) {
|
||||
profile = new PlayerProfile(args[0], false);
|
||||
PlayerProfile playerProfile = new PlayerProfile(args[0], false);
|
||||
|
||||
if (!profile.isLoaded()) {
|
||||
if (!playerProfile.isLoaded()) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
||||
return true;
|
||||
}
|
||||
@@ -56,7 +56,7 @@ public class McrefreshCommand implements CommandExecutor {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
||||
return true;
|
||||
}
|
||||
profile = mcMMOPlayer.getProfile();
|
||||
|
||||
Player player = mcMMOPlayer.getPlayer();
|
||||
|
||||
if (!player.isOnline()) {
|
||||
@@ -64,10 +64,10 @@ public class McrefreshCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
profile.setRecentlyHurt(0);
|
||||
profile.resetCooldowns();
|
||||
profile.resetToolPrepMode();
|
||||
profile.resetAbilityMode();
|
||||
mcMMOPlayer.setRecentlyHurt(0);
|
||||
mcMMOPlayer.getProfile().resetCooldowns();
|
||||
mcMMOPlayer.resetToolPrepMode();
|
||||
mcMMOPlayer.resetAbilityMode();
|
||||
|
||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrefresh.Success", args[0]));
|
||||
|
||||
@@ -146,7 +146,7 @@ public class PartyCommand implements CommandExecutor {
|
||||
String[] newArgs = new String[args.length - 1];
|
||||
|
||||
for (int i = 1; i < args.length; i++) {
|
||||
newArgs[i - 1] = args[1];
|
||||
newArgs[i - 1] = args[i];
|
||||
}
|
||||
|
||||
return newArgs;
|
||||
|
||||
@@ -9,7 +9,6 @@ import org.bukkit.entity.Player;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.events.party.McMMOPartyTeleportEvent;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.party.PartyManager;
|
||||
@@ -21,7 +20,6 @@ import com.gmail.nossr50.util.player.UserManager;
|
||||
public class PtpCommand implements CommandExecutor {
|
||||
private Player player;
|
||||
private McMMOPlayer mcMMOPlayer;
|
||||
private PlayerProfile playerProfile;
|
||||
|
||||
private Player target;
|
||||
private McMMOPlayer mcMMOTarget;
|
||||
@@ -36,7 +34,6 @@ public class PtpCommand implements CommandExecutor {
|
||||
case 1:
|
||||
player = (Player) sender;
|
||||
mcMMOPlayer = UserManager.getPlayer(player);
|
||||
playerProfile = mcMMOPlayer.getProfile();
|
||||
|
||||
if (args[0].equalsIgnoreCase("toggle")) {
|
||||
if (!Permissions.partyTeleportToggle(sender)) {
|
||||
@@ -57,8 +54,9 @@ public class PtpCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
int ptpCooldown = Config.getInstance().getPTPCommandCooldown();
|
||||
long recentlyHurt = UserManager.getPlayer(player).getRecentlyHurt();
|
||||
|
||||
if (playerProfile.getRecentlyHurt() + (ptpCooldown * Misc.TIME_CONVERSION_FACTOR) > System.currentTimeMillis()) {
|
||||
if ((recentlyHurt * Misc.TIME_CONVERSION_FACTOR + ptpCooldown * Misc.TIME_CONVERSION_FACTOR) > System.currentTimeMillis()) {
|
||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Hurt", ptpCooldown));
|
||||
return true;
|
||||
}
|
||||
@@ -93,6 +91,7 @@ public class PtpCommand implements CommandExecutor {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Invite.Success"));
|
||||
|
||||
int ptpRequestExpire = Config.getInstance().getPTPCommandTimeout();
|
||||
|
||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request1", player.getName()));
|
||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request2", ptpRequestExpire));
|
||||
return true;
|
||||
@@ -113,9 +112,9 @@ public class PtpCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
target = mcMMOPlayer.getPtpRequest();
|
||||
mcMMOPlayer.removePtpRequest();
|
||||
|
||||
if (!canTeleport(target.getName())) {
|
||||
mcMMOPlayer.removePtpRequest();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -202,8 +201,8 @@ public class PtpCommand implements CommandExecutor {
|
||||
|
||||
private boolean handlePartyTeleportEvent(Player player, Player target) {
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
|
||||
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(player, target, mcMMOPlayer.getParty().getName());
|
||||
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
@@ -213,7 +212,7 @@ public class PtpCommand implements CommandExecutor {
|
||||
player.teleport(target);
|
||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Player", target.getName()));
|
||||
target.sendMessage(LocaleLoader.getString("Party.Teleport.Target", player.getName()));
|
||||
mcMMOPlayer.getProfile().setRecentlyHurt(System.currentTimeMillis());
|
||||
mcMMOPlayer.actualizeRecentlyHurt();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,14 @@ public class MctopCommand implements CommandExecutor {
|
||||
display(Integer.parseInt(args[0]), "ALL", sender, useMySQL, command);
|
||||
}
|
||||
else if (SkillUtils.isSkill(args[0])) {
|
||||
display(1, SkillType.getSkill(args[0]).toString(), sender, useMySQL, command);
|
||||
SkillType skill = SkillType.getSkill(args[0]);
|
||||
|
||||
if (skill.isChildSkill()) {
|
||||
sender.sendMessage("Child skills are not yet supported by this command."); // TODO: Localize this
|
||||
return true;
|
||||
}
|
||||
|
||||
display(1, skill.toString(), sender, useMySQL, command);
|
||||
}
|
||||
else {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
||||
@@ -45,7 +52,14 @@ public class MctopCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
if (SkillUtils.isSkill(args[0])) {
|
||||
display(Integer.parseInt(args[1]), SkillType.getSkill(args[0]).toString(), sender, useMySQL, command);
|
||||
SkillType skill = SkillType.getSkill(args[0]);
|
||||
|
||||
if (skill.isChildSkill()) {
|
||||
sender.sendMessage("Child skills are not yet supported by this command."); // TODO: Localize this
|
||||
return true;
|
||||
}
|
||||
|
||||
display(Integer.parseInt(args[1]), skill.toString(), sender, useMySQL, command);
|
||||
}
|
||||
else {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
||||
|
||||
@@ -3,9 +3,9 @@ package com.gmail.nossr50.commands.skills;
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||
import com.gmail.nossr50.skills.fishing.Fishing;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
public class FishingCommand extends SkillCommand {
|
||||
private int lootTier;
|
||||
@@ -27,7 +27,7 @@ public class FishingCommand extends SkillCommand {
|
||||
|
||||
@Override
|
||||
protected void dataCalculations() {
|
||||
lootTier = SkillManagerStore.getInstance().getFishingManager(player.getName()).getLootTier();
|
||||
lootTier = UserManager.getPlayer(player).getFishingManager().getLootTier();
|
||||
|
||||
// TREASURE HUNTER
|
||||
double enchantChance = lootTier * AdvancedConfig.getInstance().getFishingMagicMultiplier();
|
||||
@@ -42,7 +42,7 @@ public class FishingCommand extends SkillCommand {
|
||||
magicChanceLucky = treasureHunterStrings[1];
|
||||
|
||||
// SHAKE
|
||||
String[] shakeStrings = calculateAbilityDisplayValues(SkillManagerStore.getInstance().getFishingManager(player.getName()).getShakeProbability());
|
||||
String[] shakeStrings = calculateAbilityDisplayValues(UserManager.getPlayer(player).getFishingManager().getShakeProbability());
|
||||
shakeChance = shakeStrings[0];
|
||||
shakeChanceLucky = shakeStrings[1];
|
||||
|
||||
|
||||
@@ -3,10 +3,10 @@ package com.gmail.nossr50.commands.skills;
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||
import com.gmail.nossr50.skills.mining.Mining;
|
||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
public class MiningCommand extends SkillCommand {
|
||||
private String doubleDropChance;
|
||||
@@ -45,7 +45,7 @@ public class MiningCommand extends SkillCommand {
|
||||
doubleDropChanceLucky = doubleDropStrings[1];
|
||||
|
||||
// BLAST MINING
|
||||
MiningManager miningManager = SkillManagerStore.getInstance().getMiningManager(player.getName());
|
||||
MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
|
||||
blastMiningRank = miningManager.getBlastMiningTier();
|
||||
bonusTNTDrops = miningManager.getDropMultiplier();
|
||||
oreBonus = percent.format(miningManager.getOreBonus() / 30.0D); // Base received in TNT is 30%
|
||||
|
||||
@@ -3,9 +3,9 @@ package com.gmail.nossr50.commands.skills;
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||
import com.gmail.nossr50.skills.smelting.Smelting;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
public class SmeltingCommand extends SkillCommand {
|
||||
private String burnTimeModifier;
|
||||
@@ -41,7 +41,7 @@ public class SmeltingCommand extends SkillCommand {
|
||||
fluxMiningChanceLucky = fluxMiningStrings[1];
|
||||
|
||||
// VANILLA XP BOOST
|
||||
vanillaXPModifier = SkillManagerStore.getInstance().getSmeltingManager(player.getName()).getVanillaXpMultiplier();
|
||||
vanillaXPModifier = UserManager.getPlayer(player).getSmeltingManager().getVanillaXpMultiplier();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -39,6 +39,11 @@ public class XplockCommand extends SpoutCommand {
|
||||
|
||||
SkillType skill = SkillType.getSkill(args[0]);
|
||||
|
||||
if (skill.isChildSkill()) {
|
||||
sender.sendMessage("Child skills are not yet supported by this command."); // TODO: Localize this
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!Permissions.xplock(sender, skill)) {
|
||||
sender.sendMessage(command.getPermissionMessage());
|
||||
return true;
|
||||
|
||||
@@ -52,6 +52,11 @@ public class TreasureConfig extends ConfigLoader {
|
||||
protected void loadKeys() {
|
||||
Map<String, Treasure> treasures = new HashMap<String, Treasure>();
|
||||
ConfigurationSection treasureSection = config.getConfigurationSection("Treasures");
|
||||
|
||||
if (treasureSection == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Set<String> treasureConfigSet = treasureSection.getKeys(false);
|
||||
|
||||
for (String treasureName : treasureConfigSet) {
|
||||
@@ -211,14 +216,14 @@ public class TreasureConfig extends ConfigLoader {
|
||||
Treasure treasure = nextEntry.getValue();
|
||||
|
||||
if (treasure instanceof FishingTreasure) {
|
||||
if (!fishingTreasures.contains(treasureKey)) {
|
||||
if (fishingTreasures == null || !fishingTreasures.contains(treasureKey)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
fishingRewards.add((FishingTreasure) treasure);
|
||||
}
|
||||
else if (treasure instanceof HylianTreasure) {
|
||||
if (!hylianTreasures.contains(treasureKey)) {
|
||||
if (hylianTreasures == null || !hylianTreasures.contains(treasureKey)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -237,7 +242,7 @@ public class TreasureConfig extends ConfigLoader {
|
||||
}
|
||||
}
|
||||
else if (treasure instanceof ExcavationTreasure) {
|
||||
if (!excavationTreasures.contains(treasureKey)) {
|
||||
if (excavationTreasures == null || !excavationTreasures.contains(treasureKey)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ public final class LeaderboardManager {
|
||||
}
|
||||
|
||||
lastUpdate = System.currentTimeMillis(); // Log when the last update was run
|
||||
powerLevels.clear(); // Clear old values from the power levels
|
||||
|
||||
// Initialize lists
|
||||
List<PlayerStat> mining = new ArrayList<PlayerStat>();
|
||||
@@ -50,7 +51,6 @@ public final class LeaderboardManager {
|
||||
List<PlayerStat> unarmed = new ArrayList<PlayerStat>();
|
||||
List<PlayerStat> taming = new ArrayList<PlayerStat>();
|
||||
List<PlayerStat> fishing = new ArrayList<PlayerStat>();
|
||||
List<PlayerStat> powerLevels = new ArrayList<PlayerStat>();
|
||||
|
||||
// Read from the FlatFile database and fill our arrays with information
|
||||
try {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.gmail.nossr50.datatypes.player;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.GameMode;
|
||||
@@ -10,12 +12,26 @@ import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.mods.CustomTool;
|
||||
import com.gmail.nossr50.datatypes.party.Party;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
||||
import com.gmail.nossr50.events.experience.McMMOPlayerXpGainEvent;
|
||||
import com.gmail.nossr50.party.PartyManager;
|
||||
import com.gmail.nossr50.party.ShareHandler;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
|
||||
import com.gmail.nossr50.skills.archery.ArcheryManager;
|
||||
import com.gmail.nossr50.skills.axes.AxesManager;
|
||||
import com.gmail.nossr50.skills.child.FamilyTree;
|
||||
import com.gmail.nossr50.skills.excavation.ExcavationManager;
|
||||
import com.gmail.nossr50.skills.fishing.FishingManager;
|
||||
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
|
||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||
import com.gmail.nossr50.skills.smelting.SmeltingManager;
|
||||
import com.gmail.nossr50.skills.swords.SwordsManager;
|
||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.ModUtils;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
@@ -26,8 +42,18 @@ public class McMMOPlayer {
|
||||
private Player player;
|
||||
private PlayerProfile profile;
|
||||
|
||||
private Party party;
|
||||
private Party invite;
|
||||
/*
|
||||
* Since SkillManager isn't a "polymorphic type" we may prefer to have one field for each of our
|
||||
* class inheriting from SkillManager. This would also prevent the need for casting.
|
||||
* However, by using the map and the loop in the constructor
|
||||
* we make sure that all class inheriting from SkillManager are instanced.
|
||||
* Which solution is better, I let you decide. - bm01
|
||||
*/
|
||||
private Map<SkillType, SkillManager> skillManagers = new HashMap<SkillType, SkillManager>();
|
||||
|
||||
private Party party;
|
||||
private Party invite;
|
||||
private int itemShareModifier;
|
||||
|
||||
private Player ptpRequest;
|
||||
private boolean ptpEnabled = true;
|
||||
@@ -36,15 +62,294 @@ public class McMMOPlayer {
|
||||
|
||||
private boolean partyChatMode;
|
||||
private boolean adminChatMode;
|
||||
private boolean displaySkillNotifications = true;
|
||||
|
||||
private int itemShareModifier;
|
||||
private boolean abilityUse = true;
|
||||
private boolean placedAnvil;
|
||||
private boolean placedSalvageAnvil;
|
||||
private boolean godMode;
|
||||
|
||||
private Map<AbilityType, Boolean> abilityMode = new HashMap<AbilityType, Boolean>();
|
||||
private Map<AbilityType, Boolean> abilityInformed = new HashMap<AbilityType, Boolean>();
|
||||
|
||||
private Map<ToolType, Boolean> toolMode = new HashMap<ToolType, Boolean>();
|
||||
private Map<ToolType, Integer> toolATS = new HashMap<ToolType, Integer>();
|
||||
|
||||
private int recentlyHurt;
|
||||
private int respawnATS;
|
||||
|
||||
public McMMOPlayer(Player player) {
|
||||
String playerName = player.getName();
|
||||
|
||||
this.player = player;
|
||||
this.profile = new PlayerProfile(playerName, true);
|
||||
this.party = PartyManager.getPlayerParty(playerName);
|
||||
profile = new PlayerProfile(playerName, true);
|
||||
party = PartyManager.getPlayerParty(playerName);
|
||||
|
||||
/*
|
||||
* I'm using this method because it makes code shorter and safer (we don't have to add all SkillTypes manually),
|
||||
* but I actually have no idea about the performance impact, if there is any.
|
||||
* If in the future someone wants to remove this, don't forget to also remove what is in the SkillType enum. - bm01
|
||||
*/
|
||||
try {
|
||||
for (SkillType skillType : SkillType.values()) {
|
||||
Class<? extends SkillManager> skillManagerClass = skillType.getManagerClass();
|
||||
|
||||
// TODO: The null check is needed only because currently some SkillType doesn't have a valid skillManagerClass
|
||||
if (skillManagerClass != null) {
|
||||
skillManagers.put(skillType, skillManagerClass.getConstructor(McMMOPlayer.class).newInstance(this));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p);
|
||||
}
|
||||
|
||||
for (AbilityType abilityType : AbilityType.values()) {
|
||||
abilityMode.put(abilityType, false);
|
||||
abilityInformed.put(abilityType, true); // This is intended
|
||||
}
|
||||
|
||||
for (ToolType toolType : ToolType.values()) {
|
||||
toolMode.put(toolType, false);
|
||||
toolATS.put(toolType, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public AcrobaticsManager getAcrobaticsManager() {
|
||||
return (AcrobaticsManager) skillManagers.get(SkillType.ACROBATICS);
|
||||
}
|
||||
|
||||
public ArcheryManager getArcheryManager() {
|
||||
return (ArcheryManager) skillManagers.get(SkillType.ARCHERY);
|
||||
}
|
||||
|
||||
public AxesManager getAxesManager() {
|
||||
return (AxesManager) skillManagers.get(SkillType.AXES);
|
||||
}
|
||||
|
||||
public ExcavationManager getExcavationManager() {
|
||||
return (ExcavationManager) skillManagers.get(SkillType.EXCAVATION);
|
||||
}
|
||||
|
||||
public FishingManager getFishingManager() {
|
||||
return (FishingManager) skillManagers.get(SkillType.FISHING);
|
||||
}
|
||||
|
||||
public HerbalismManager getHerbalismManager() {
|
||||
return (HerbalismManager) skillManagers.get(SkillType.HERBALISM);
|
||||
}
|
||||
|
||||
public MiningManager getMiningManager() {
|
||||
return (MiningManager) skillManagers.get(SkillType.MINING);
|
||||
}
|
||||
|
||||
public SmeltingManager getSmeltingManager() {
|
||||
return (SmeltingManager) skillManagers.get(SkillType.SMELTING);
|
||||
}
|
||||
|
||||
public SwordsManager getSwordsManager() {
|
||||
return (SwordsManager) skillManagers.get(SkillType.SWORDS);
|
||||
}
|
||||
|
||||
public TamingManager getTamingManager() {
|
||||
return (TamingManager) skillManagers.get(SkillType.TAMING);
|
||||
}
|
||||
|
||||
public UnarmedManager getUnarmedManager() {
|
||||
return (UnarmedManager) skillManagers.get(SkillType.UNARMED);
|
||||
}
|
||||
|
||||
/*
|
||||
* Abilities
|
||||
*/
|
||||
|
||||
/**
|
||||
* Reset the mode of all abilities.
|
||||
*/
|
||||
public void resetAbilityMode() {
|
||||
for (AbilityType ability : AbilityType.values()) {
|
||||
setAbilityMode(ability, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mode of an ability.
|
||||
*
|
||||
* @param ability The ability to check
|
||||
* @return true if the ability is enabled, false otherwise
|
||||
*/
|
||||
public boolean getAbilityMode(AbilityType ability) {
|
||||
return abilityMode.get(ability);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the mode of an ability.
|
||||
*
|
||||
* @param ability The ability to check
|
||||
* @param bool True if the ability is active, false otherwise
|
||||
*/
|
||||
public void setAbilityMode(AbilityType ability, boolean bool) {
|
||||
abilityMode.put(ability, bool);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the informed state of an ability
|
||||
*
|
||||
* @param ability The ability to check
|
||||
* @return true if the ability is informed, false otherwise
|
||||
*/
|
||||
public boolean getAbilityInformed(AbilityType ability) {
|
||||
return abilityInformed.get(ability);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the informed state of an ability.
|
||||
*
|
||||
* @param ability The ability to check
|
||||
* @param bool True if the ability is informed, false otherwise
|
||||
*/
|
||||
public void setAbilityInformed(AbilityType ability, boolean bool) {
|
||||
abilityInformed.put(ability, bool);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current prep mode of a tool.
|
||||
*
|
||||
* @param tool Tool to get the mode for
|
||||
* @return true if the tool is prepped, false otherwise
|
||||
*/
|
||||
public boolean getToolPreparationMode(ToolType tool) {
|
||||
return toolMode.get(tool);
|
||||
}
|
||||
|
||||
public boolean getAbilityUse() {
|
||||
return abilityUse;
|
||||
}
|
||||
|
||||
public void toggleAbilityUse() {
|
||||
abilityUse = !abilityUse;
|
||||
}
|
||||
|
||||
/*
|
||||
* Tools
|
||||
*/
|
||||
|
||||
/**
|
||||
* Reset the prep modes of all tools.
|
||||
*/
|
||||
public void resetToolPrepMode() {
|
||||
for (ToolType tool : ToolType.values()) {
|
||||
setToolPreparationMode(tool, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current prep mode of a tool.
|
||||
*
|
||||
* @param tool Tool to set the mode for
|
||||
* @param bool true if the tool should be prepped, false otherwise
|
||||
*/
|
||||
public void setToolPreparationMode(ToolType tool, boolean bool) {
|
||||
toolMode.put(tool, bool);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current prep ATS of a tool.
|
||||
*
|
||||
* @param tool Tool to get the ATS for
|
||||
* @return the ATS for the tool
|
||||
*/
|
||||
public long getToolPreparationATS(ToolType tool) {
|
||||
return toolATS.get(tool);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current prep ATS of a tool.
|
||||
*
|
||||
* @param tool Tool to set the ATS for
|
||||
* @param ATS the ATS of the tool
|
||||
*/
|
||||
public void setToolPreparationATS(ToolType tool, long ATS) {
|
||||
int startTime = (int) (ATS / Misc.TIME_CONVERSION_FACTOR);
|
||||
|
||||
toolATS.put(tool, startTime);
|
||||
}
|
||||
|
||||
/*
|
||||
* Recently Hurt
|
||||
*/
|
||||
|
||||
public int getRecentlyHurt() {
|
||||
return recentlyHurt;
|
||||
}
|
||||
|
||||
public void setRecentlyHurt(int value) {
|
||||
recentlyHurt = value;
|
||||
}
|
||||
|
||||
public void actualizeRecentlyHurt() {
|
||||
recentlyHurt = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Exploit Prevention
|
||||
*/
|
||||
|
||||
public int getRespawnATS() {
|
||||
return respawnATS;
|
||||
}
|
||||
|
||||
public void actualizeRespawnATS() {
|
||||
respawnATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Repair Anvil Placement
|
||||
*/
|
||||
|
||||
public void togglePlacedAnvil() {
|
||||
placedAnvil = !placedAnvil;
|
||||
}
|
||||
|
||||
public Boolean getPlacedAnvil() {
|
||||
return placedAnvil;
|
||||
}
|
||||
|
||||
/*
|
||||
* Salvage Anvil Placement
|
||||
*/
|
||||
|
||||
public void togglePlacedSalvageAnvil() {
|
||||
placedSalvageAnvil = !placedSalvageAnvil;
|
||||
}
|
||||
|
||||
public Boolean getPlacedSalvageAnvil() {
|
||||
return placedSalvageAnvil;
|
||||
}
|
||||
|
||||
/*
|
||||
* God Mode
|
||||
*/
|
||||
|
||||
public boolean getGodMode() {
|
||||
return godMode;
|
||||
}
|
||||
|
||||
public void toggleGodMode() {
|
||||
godMode = !godMode;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skill notifications
|
||||
*/
|
||||
|
||||
public boolean useChatNotifications() {
|
||||
return displaySkillNotifications;
|
||||
}
|
||||
|
||||
public void toggleChatNotifications() {
|
||||
displaySkillNotifications = !displaySkillNotifications;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -136,7 +441,9 @@ public class McMMOPlayer {
|
||||
SkillUtils.xpCheckSkill(skillType, player, profile);
|
||||
}
|
||||
|
||||
// Players & Profiles
|
||||
/*
|
||||
* Players & Profiles
|
||||
*/
|
||||
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
@@ -150,7 +457,9 @@ public class McMMOPlayer {
|
||||
return profile;
|
||||
}
|
||||
|
||||
// Party Stuff
|
||||
/*
|
||||
* Party Stuff
|
||||
*/
|
||||
|
||||
public void setPartyInvite(Party invite) {
|
||||
this.invite = invite;
|
||||
@@ -252,6 +561,10 @@ public class McMMOPlayer {
|
||||
itemShareModifier = modifier;
|
||||
}
|
||||
|
||||
/*
|
||||
* Chat modes
|
||||
*/
|
||||
|
||||
public boolean getAdminChatMode() {
|
||||
return adminChatMode;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
@@ -14,7 +15,6 @@ import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
import com.gmail.nossr50.database.DatabaseManager;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
||||
import com.gmail.nossr50.skills.child.FamilyTree;
|
||||
@@ -28,51 +28,14 @@ public class PlayerProfile {
|
||||
private McMMOHud spoutHud;
|
||||
private HudType hudType;
|
||||
|
||||
// Toggles
|
||||
private boolean loaded;
|
||||
private boolean godMode;
|
||||
|
||||
private boolean placedAnvil;
|
||||
private boolean placedSalvageAnvil;
|
||||
|
||||
private boolean hoePreparationMode;
|
||||
private boolean shovelPreparationMode;
|
||||
private boolean swordsPreparationMode;
|
||||
private boolean fistsPreparationMode;
|
||||
private boolean pickaxePreparationMode;
|
||||
private boolean axePreparationMode;
|
||||
|
||||
private boolean greenTerraMode;
|
||||
private boolean treeFellerMode;
|
||||
private boolean superBreakerMode;
|
||||
private boolean gigaDrillBreakerMode;
|
||||
private boolean serratedStrikesMode;
|
||||
private boolean skullSplitterMode;
|
||||
private boolean berserkMode;
|
||||
|
||||
private boolean greenTerraInformed = true;
|
||||
private boolean berserkInformed = true;
|
||||
private boolean skullSplitterInformed = true;
|
||||
private boolean gigaDrillBreakerInformed = true;
|
||||
private boolean superBreakerInformed = true;
|
||||
private boolean blastMiningInformed = true;
|
||||
private boolean serratedStrikesInformed = true;
|
||||
private boolean treeFellerInformed = true;
|
||||
|
||||
private boolean abilityUse = true;
|
||||
private boolean displaySkillNotifications = true;
|
||||
|
||||
// Timestamps
|
||||
private long recentlyHurt;
|
||||
private int respawnATS;
|
||||
|
||||
// mySQL Stuff
|
||||
private int userId;
|
||||
|
||||
private HashMap<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); // Skills and Levels
|
||||
private HashMap<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); // Skills and Xp
|
||||
private HashMap<AbilityType, Integer> skillsDATS = new HashMap<AbilityType, Integer>();
|
||||
private HashMap<ToolType, Integer> toolATS = new HashMap<ToolType, Integer>();
|
||||
private boolean loaded;
|
||||
|
||||
private Map<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); // Skills and Levels
|
||||
private Map<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); // Skills and Xp
|
||||
private Map<AbilityType, Integer> skillsDATS = new HashMap<AbilityType, Integer>();
|
||||
|
||||
private final static String location = mcMMO.getUsersFilePath();
|
||||
|
||||
@@ -565,42 +528,6 @@ public class PlayerProfile {
|
||||
return loaded;
|
||||
}
|
||||
|
||||
/*
|
||||
* God Mode
|
||||
*/
|
||||
|
||||
public boolean getGodMode() {
|
||||
return godMode;
|
||||
}
|
||||
|
||||
public void toggleGodMode() {
|
||||
godMode = !godMode;
|
||||
}
|
||||
|
||||
/*
|
||||
* Repair Anvil Placement
|
||||
*/
|
||||
|
||||
public void togglePlacedAnvil() {
|
||||
placedAnvil = !placedAnvil;
|
||||
}
|
||||
|
||||
public Boolean getPlacedAnvil() {
|
||||
return placedAnvil;
|
||||
}
|
||||
|
||||
/*
|
||||
* Salvage Anvil Placement
|
||||
*/
|
||||
|
||||
public void togglePlacedSalvageAnvil() {
|
||||
placedSalvageAnvil = !placedSalvageAnvil;
|
||||
}
|
||||
|
||||
public Boolean getPlacedSalvageAnvil() {
|
||||
return placedSalvageAnvil;
|
||||
}
|
||||
|
||||
/*
|
||||
* HUD Stuff
|
||||
*/
|
||||
@@ -621,315 +548,6 @@ public class PlayerProfile {
|
||||
this.hudType = hudType;
|
||||
}
|
||||
|
||||
/*
|
||||
* Tools
|
||||
*/
|
||||
|
||||
/**
|
||||
* Reset the prep modes of all tools.
|
||||
*/
|
||||
public void resetToolPrepMode() {
|
||||
for (ToolType tool : ToolType.values()) {
|
||||
setToolPreparationMode(tool, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current prep mode of a tool.
|
||||
*
|
||||
* @param tool Tool to get the mode for
|
||||
* @return true if the tool is prepped, false otherwise
|
||||
*/
|
||||
public boolean getToolPreparationMode(ToolType tool) {
|
||||
switch (tool) {
|
||||
case AXE:
|
||||
return axePreparationMode;
|
||||
|
||||
case FISTS:
|
||||
return fistsPreparationMode;
|
||||
|
||||
case HOE:
|
||||
return hoePreparationMode;
|
||||
|
||||
case PICKAXE:
|
||||
return pickaxePreparationMode;
|
||||
|
||||
case SHOVEL:
|
||||
return shovelPreparationMode;
|
||||
|
||||
case SWORD:
|
||||
return swordsPreparationMode;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current prep mode of a tool.
|
||||
*
|
||||
* @param tool Tool to set the mode for
|
||||
* @param bool true if the tool should be prepped, false otherwise
|
||||
*/
|
||||
public void setToolPreparationMode(ToolType tool, boolean bool) {
|
||||
switch (tool) {
|
||||
case AXE:
|
||||
axePreparationMode = bool;
|
||||
break;
|
||||
|
||||
case FISTS:
|
||||
fistsPreparationMode = bool;
|
||||
break;
|
||||
|
||||
case HOE:
|
||||
hoePreparationMode = bool;
|
||||
break;
|
||||
|
||||
case PICKAXE:
|
||||
pickaxePreparationMode = bool;
|
||||
break;
|
||||
|
||||
case SHOVEL:
|
||||
shovelPreparationMode = bool;
|
||||
break;
|
||||
|
||||
case SWORD:
|
||||
swordsPreparationMode = bool;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current prep ATS of a tool.
|
||||
*
|
||||
* @param tool Tool to get the ATS for
|
||||
* @return the ATS for the tool
|
||||
*/
|
||||
public long getToolPreparationATS(ToolType tool) {
|
||||
return toolATS.get(tool);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current prep ATS of a tool.
|
||||
*
|
||||
* @param tool Tool to set the ATS for
|
||||
* @param ATS the ATS of the tool
|
||||
*/
|
||||
public void setToolPreparationATS(ToolType tool, long ATS) {
|
||||
int startTime = (int) (ATS / Misc.TIME_CONVERSION_FACTOR);
|
||||
|
||||
toolATS.put(tool, startTime);
|
||||
}
|
||||
|
||||
/*
|
||||
* Abilities
|
||||
*/
|
||||
|
||||
/**
|
||||
* Reset the prep modes of all tools.
|
||||
*/
|
||||
public void resetAbilityMode() {
|
||||
for (AbilityType ability : AbilityType.values()) {
|
||||
setAbilityMode(ability, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mode of an ability.
|
||||
*
|
||||
* @param ability The ability to check
|
||||
* @return true if the ability is enabled, false otherwise
|
||||
*/
|
||||
public boolean getAbilityMode(AbilityType ability) {
|
||||
switch (ability) {
|
||||
case BERSERK:
|
||||
return berserkMode;
|
||||
|
||||
case SUPER_BREAKER:
|
||||
return superBreakerMode;
|
||||
|
||||
case GIGA_DRILL_BREAKER:
|
||||
return gigaDrillBreakerMode;
|
||||
|
||||
case GREEN_TERRA:
|
||||
return greenTerraMode;
|
||||
|
||||
case SKULL_SPLITTER:
|
||||
return skullSplitterMode;
|
||||
|
||||
case TREE_FELLER:
|
||||
return treeFellerMode;
|
||||
|
||||
case SERRATED_STRIKES:
|
||||
return serratedStrikesMode;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the mode of an ability.
|
||||
*
|
||||
* @param ability The ability to check
|
||||
* @param bool True if the ability is active, false otherwise
|
||||
*/
|
||||
public void setAbilityMode(AbilityType ability, boolean bool) {
|
||||
switch (ability) {
|
||||
case BERSERK:
|
||||
berserkMode = bool;
|
||||
break;
|
||||
|
||||
case SUPER_BREAKER:
|
||||
superBreakerMode = bool;
|
||||
break;
|
||||
|
||||
case GIGA_DRILL_BREAKER:
|
||||
gigaDrillBreakerMode = bool;
|
||||
break;
|
||||
|
||||
case GREEN_TERRA:
|
||||
greenTerraMode = bool;
|
||||
break;
|
||||
|
||||
case SKULL_SPLITTER:
|
||||
skullSplitterMode = bool;
|
||||
break;
|
||||
|
||||
case TREE_FELLER:
|
||||
treeFellerMode = bool;
|
||||
break;
|
||||
|
||||
case SERRATED_STRIKES:
|
||||
serratedStrikesMode = bool;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the informed state of an ability
|
||||
*
|
||||
* @param ability The ability to check
|
||||
* @return true if the ability is informed, false otherwise
|
||||
*/
|
||||
public boolean getAbilityInformed(AbilityType ability) {
|
||||
switch (ability) {
|
||||
case BERSERK:
|
||||
return berserkInformed;
|
||||
|
||||
case BLAST_MINING:
|
||||
return blastMiningInformed;
|
||||
|
||||
case SUPER_BREAKER:
|
||||
return superBreakerInformed;
|
||||
|
||||
case GIGA_DRILL_BREAKER:
|
||||
return gigaDrillBreakerInformed;
|
||||
|
||||
case GREEN_TERRA:
|
||||
return greenTerraInformed;
|
||||
|
||||
case SKULL_SPLITTER:
|
||||
return skullSplitterInformed;
|
||||
|
||||
case TREE_FELLER:
|
||||
return treeFellerInformed;
|
||||
|
||||
case SERRATED_STRIKES:
|
||||
return serratedStrikesInformed;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the informed state of an ability.
|
||||
*
|
||||
* @param ability The ability to check
|
||||
* @param bool True if the ability is informed, false otherwise
|
||||
*/
|
||||
public void setAbilityInformed(AbilityType ability, boolean bool) {
|
||||
switch (ability) {
|
||||
case BERSERK:
|
||||
berserkInformed = bool;
|
||||
break;
|
||||
|
||||
case BLAST_MINING:
|
||||
blastMiningInformed = bool;
|
||||
break;
|
||||
|
||||
case SUPER_BREAKER:
|
||||
superBreakerInformed = bool;
|
||||
break;
|
||||
|
||||
case GIGA_DRILL_BREAKER:
|
||||
gigaDrillBreakerInformed = bool;
|
||||
break;
|
||||
|
||||
case GREEN_TERRA:
|
||||
greenTerraInformed = bool;
|
||||
break;
|
||||
|
||||
case SKULL_SPLITTER:
|
||||
skullSplitterInformed = bool;
|
||||
break;
|
||||
|
||||
case TREE_FELLER:
|
||||
treeFellerInformed = bool;
|
||||
break;
|
||||
|
||||
case SERRATED_STRIKES:
|
||||
serratedStrikesInformed = bool;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getAbilityUse() {
|
||||
return abilityUse;
|
||||
}
|
||||
|
||||
public void toggleAbilityUse() {
|
||||
abilityUse = !abilityUse;
|
||||
}
|
||||
|
||||
/*
|
||||
* Recently Hurt
|
||||
*/
|
||||
|
||||
public long getRecentlyHurt() {
|
||||
return recentlyHurt;
|
||||
}
|
||||
|
||||
public void setRecentlyHurt(long value) {
|
||||
recentlyHurt = value;
|
||||
}
|
||||
|
||||
public void actualizeRecentlyHurt() {
|
||||
respawnATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Ability Notifications
|
||||
*/
|
||||
|
||||
public boolean useChatNotifications() {
|
||||
return displaySkillNotifications;
|
||||
}
|
||||
|
||||
public void toggleChatNotifications() {
|
||||
displaySkillNotifications = !displaySkillNotifications;
|
||||
}
|
||||
|
||||
/*
|
||||
* Cooldowns
|
||||
*/
|
||||
@@ -965,18 +583,6 @@ public class PlayerProfile {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Exploit Prevention
|
||||
*/
|
||||
|
||||
public int getRespawnATS() {
|
||||
return respawnATS;
|
||||
}
|
||||
|
||||
public void actualizeRespawnATS() {
|
||||
respawnATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Xp Functions
|
||||
*/
|
||||
|
||||
@@ -3,36 +3,55 @@ package com.gmail.nossr50.datatypes.skills;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
|
||||
import com.gmail.nossr50.skills.archery.ArcheryManager;
|
||||
import com.gmail.nossr50.skills.axes.AxesManager;
|
||||
import com.gmail.nossr50.skills.excavation.ExcavationManager;
|
||||
import com.gmail.nossr50.skills.fishing.FishingManager;
|
||||
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
|
||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||
import com.gmail.nossr50.skills.smelting.SmeltingManager;
|
||||
import com.gmail.nossr50.skills.swords.SwordsManager;
|
||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
|
||||
public enum SkillType {
|
||||
ACROBATICS,
|
||||
ARCHERY,
|
||||
AXES(AbilityType.SKULL_SPLITTER, ToolType.AXE),
|
||||
EXCAVATION(AbilityType.GIGA_DRILL_BREAKER, ToolType.SHOVEL),
|
||||
FISHING,
|
||||
HERBALISM(AbilityType.GREEN_TERRA, ToolType.HOE),
|
||||
MINING(AbilityType.SUPER_BREAKER, ToolType.PICKAXE),
|
||||
REPAIR,
|
||||
SMELTING,
|
||||
SWORDS(AbilityType.SERRATED_STRIKES, ToolType.SWORD),
|
||||
TAMING,
|
||||
UNARMED(AbilityType.BERSERK, ToolType.FISTS),
|
||||
WOODCUTTING(AbilityType.TREE_FELLER, ToolType.AXE);
|
||||
ACROBATICS(AcrobaticsManager.class),
|
||||
ARCHERY(ArcheryManager.class),
|
||||
AXES(AxesManager.class, AbilityType.SKULL_SPLITTER, ToolType.AXE),
|
||||
EXCAVATION(ExcavationManager.class, AbilityType.GIGA_DRILL_BREAKER, ToolType.SHOVEL),
|
||||
FISHING(FishingManager.class),
|
||||
HERBALISM(HerbalismManager.class, AbilityType.GREEN_TERRA, ToolType.HOE),
|
||||
MINING(MiningManager.class, AbilityType.SUPER_BREAKER, ToolType.PICKAXE),
|
||||
REPAIR(null), // TODO: Create a proper RepairManager class
|
||||
SMELTING(SmeltingManager.class),
|
||||
SWORDS(SwordsManager.class, AbilityType.SERRATED_STRIKES, ToolType.SWORD),
|
||||
TAMING(TamingManager.class),
|
||||
UNARMED(UnarmedManager.class, AbilityType.BERSERK, ToolType.FISTS),
|
||||
WOODCUTTING(null, AbilityType.TREE_FELLER, ToolType.AXE); // TODO: Create a proper WoodcuttingManager class
|
||||
|
||||
private Class<? extends SkillManager> managerClass;
|
||||
private AbilityType ability;
|
||||
private ToolType tool;
|
||||
|
||||
private SkillType() {
|
||||
this.ability = null;
|
||||
this.tool = null;
|
||||
private SkillType(Class<? extends SkillManager> managerClass) {
|
||||
this.managerClass = managerClass;
|
||||
ability = null;
|
||||
tool = null;
|
||||
}
|
||||
|
||||
private SkillType(AbilityType ability, ToolType tool) {
|
||||
private SkillType(Class<? extends SkillManager> managerClass, AbilityType ability, ToolType tool) {
|
||||
this.managerClass = managerClass;
|
||||
this.ability = ability;
|
||||
this.tool = tool;
|
||||
}
|
||||
|
||||
public Class<? extends SkillManager> getManagerClass() {
|
||||
return managerClass;
|
||||
}
|
||||
|
||||
public AbilityType getAbility() {
|
||||
return ability;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@@ -23,7 +24,6 @@ import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.config.HiddenConfig;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
@@ -31,12 +31,12 @@ import com.gmail.nossr50.events.fake.FakeBlockBreakEvent;
|
||||
import com.gmail.nossr50.events.fake.FakeBlockDamageEvent;
|
||||
import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
|
||||
import com.gmail.nossr50.runnables.StickyPistonTrackerTask;
|
||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||
import com.gmail.nossr50.skills.excavation.ExcavationManager;
|
||||
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
|
||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||
import com.gmail.nossr50.skills.repair.Repair;
|
||||
import com.gmail.nossr50.skills.repair.Salvage;
|
||||
import com.gmail.nossr50.skills.smelting.SmeltingManager;
|
||||
import com.gmail.nossr50.skills.unarmed.Unarmed;
|
||||
import com.gmail.nossr50.skills.woodcutting.Woodcutting;
|
||||
import com.gmail.nossr50.util.BlockUtils;
|
||||
@@ -145,18 +145,17 @@ public class BlockListener implements Listener {
|
||||
}
|
||||
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
PlayerProfile profile = mcMMOPlayer.getProfile();
|
||||
BlockState blockState = event.getBlock().getState();
|
||||
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
|
||||
/* HERBALISM */
|
||||
if (BlockUtils.affectedByGreenTerra(blockState)) {
|
||||
HerbalismManager herbalismManager = SkillManagerStore.getInstance().getHerbalismManager(player.getName());
|
||||
HerbalismManager herbalismManager = UserManager.getPlayer(player).getHerbalismManager();
|
||||
|
||||
/* Green Terra */
|
||||
if (herbalismManager.canActivateAbility()) {
|
||||
SkillUtils.abilityCheck(player, SkillType.HERBALISM);
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.HERBALISM);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -177,17 +176,17 @@ public class BlockListener implements Listener {
|
||||
|
||||
/* MINING */
|
||||
else if (BlockUtils.affectedBySuperBreaker(blockState) && ItemUtils.isPickaxe(heldItem) && Permissions.skillEnabled(player, SkillType.MINING) && !mcMMO.placeStore.isTrue(blockState)) {
|
||||
MiningManager miningManager = SkillManagerStore.getInstance().getMiningManager(player.getName());
|
||||
MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
|
||||
miningManager.miningBlockCheck(blockState);
|
||||
|
||||
if (profile.getAbilityMode(AbilityType.SUPER_BREAKER)) {
|
||||
if (mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) {
|
||||
miningManager.miningBlockCheck(blockState);
|
||||
}
|
||||
}
|
||||
|
||||
/* WOOD CUTTING */
|
||||
else if (BlockUtils.isLog(blockState) && Permissions.skillEnabled(player, SkillType.WOODCUTTING) && !mcMMO.placeStore.isTrue(blockState)) {
|
||||
if (profile.getAbilityMode(AbilityType.TREE_FELLER) && Permissions.treeFeller(player) && ItemUtils.isAxe(heldItem)) {
|
||||
if (mcMMOPlayer.getAbilityMode(AbilityType.TREE_FELLER) && Permissions.treeFeller(player) && ItemUtils.isAxe(heldItem)) {
|
||||
Woodcutting.beginTreeFeller(blockState, player);
|
||||
}
|
||||
else {
|
||||
@@ -204,10 +203,10 @@ public class BlockListener implements Listener {
|
||||
|
||||
/* EXCAVATION */
|
||||
else if (BlockUtils.affectedByGigaDrillBreaker(blockState) && ItemUtils.isShovel(heldItem) && Permissions.skillEnabled(player, SkillType.EXCAVATION) && !mcMMO.placeStore.isTrue(blockState)) {
|
||||
ExcavationManager excavationManager = SkillManagerStore.getInstance().getExcavationManager(player.getName());
|
||||
ExcavationManager excavationManager = UserManager.getPlayer(player).getExcavationManager();
|
||||
excavationManager.excavationBlockCheck(blockState);
|
||||
|
||||
if (profile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) {
|
||||
if (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) {
|
||||
excavationManager.gigaDrillBreaker(blockState);
|
||||
}
|
||||
}
|
||||
@@ -235,19 +234,27 @@ public class BlockListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
String playerName = player.getName();
|
||||
BlockState blockState = event.getBlock().getState();
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
|
||||
if (SkillManagerStore.getInstance().getHerbalismManager(playerName).canUseHylianLuck()) {
|
||||
if (SkillManagerStore.getInstance().getHerbalismManager(playerName).processHylianLuck(blockState)) {
|
||||
blockState.update(true);
|
||||
event.setCancelled(true);
|
||||
if (ItemUtils.isSword(heldItem)) {
|
||||
HerbalismManager herbalismManager = UserManager.getPlayer(player).getHerbalismManager();
|
||||
|
||||
if (herbalismManager.canUseHylianLuck()) {
|
||||
if (herbalismManager.processHylianLuck(blockState)) {
|
||||
blockState.update(true);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (SkillManagerStore.getInstance().getSmeltingManager(playerName).canUseFluxMining(blockState)) {
|
||||
if (SkillManagerStore.getInstance().getSmeltingManager(playerName).processFluxMining(blockState)) {
|
||||
blockState.update(true);
|
||||
event.setCancelled(true);
|
||||
else if (ItemUtils.isPickaxe(heldItem) && !heldItem.containsEnchantment(Enchantment.SILK_TOUCH)) {
|
||||
SmeltingManager smeltingManager = UserManager.getPlayer(player).getSmeltingManager();
|
||||
|
||||
if (smeltingManager.canUseFluxMining(blockState)) {
|
||||
if (smeltingManager.processFluxMining(blockState)) {
|
||||
blockState.update(true);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -269,7 +276,7 @@ public class BlockListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
BlockState blockState = event.getBlock().getState();
|
||||
|
||||
/*
|
||||
@@ -281,30 +288,30 @@ public class BlockListener implements Listener {
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
|
||||
if (HiddenConfig.getInstance().useEnchantmentBuffs()) {
|
||||
if ((ItemUtils.isPickaxe(heldItem) && !profile.getAbilityMode(AbilityType.SUPER_BREAKER)) || (ItemUtils.isShovel(heldItem) && !profile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER))) {
|
||||
if ((ItemUtils.isPickaxe(heldItem) && !mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) || (ItemUtils.isShovel(heldItem) && !mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER))) {
|
||||
SkillUtils.removeAbilityBuff(heldItem);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((profile.getAbilityMode(AbilityType.SUPER_BREAKER) && !BlockUtils.affectedBySuperBreaker(blockState)) || (profile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) && !BlockUtils.affectedByGigaDrillBreaker(blockState))) {
|
||||
if ((mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER) && !BlockUtils.affectedBySuperBreaker(blockState)) || (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) && !BlockUtils.affectedByGigaDrillBreaker(blockState))) {
|
||||
SkillUtils.handleAbilitySpeedDecrease(player);
|
||||
}
|
||||
}
|
||||
|
||||
if (profile.getToolPreparationMode(ToolType.HOE) && ItemUtils.isHoe(heldItem) && (BlockUtils.affectedByGreenTerra(blockState) || BlockUtils.canMakeMossy(blockState)) && Permissions.greenTerra(player)) {
|
||||
SkillUtils.abilityCheck(player, SkillType.HERBALISM);
|
||||
if (mcMMOPlayer.getToolPreparationMode(ToolType.HOE) && ItemUtils.isHoe(heldItem) && (BlockUtils.affectedByGreenTerra(blockState) || BlockUtils.canMakeMossy(blockState)) && Permissions.greenTerra(player)) {
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.HERBALISM);
|
||||
}
|
||||
else if (profile.getToolPreparationMode(ToolType.AXE) && ItemUtils.isAxe(heldItem) && BlockUtils.isLog(blockState) && Permissions.treeFeller(player)) {
|
||||
SkillUtils.abilityCheck(player, SkillType.WOODCUTTING);
|
||||
else if (mcMMOPlayer.getToolPreparationMode(ToolType.AXE) && ItemUtils.isAxe(heldItem) && BlockUtils.isLog(blockState) && Permissions.treeFeller(player)) {
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.WOODCUTTING);
|
||||
}
|
||||
else if (profile.getToolPreparationMode(ToolType.PICKAXE) && ItemUtils.isPickaxe(heldItem) && BlockUtils.affectedBySuperBreaker(blockState) && Permissions.superBreaker(player)) {
|
||||
SkillUtils.abilityCheck(player, SkillType.MINING);
|
||||
else if (mcMMOPlayer.getToolPreparationMode(ToolType.PICKAXE) && ItemUtils.isPickaxe(heldItem) && BlockUtils.affectedBySuperBreaker(blockState) && Permissions.superBreaker(player)) {
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.MINING);
|
||||
}
|
||||
else if (profile.getToolPreparationMode(ToolType.SHOVEL) && ItemUtils.isShovel(heldItem) && BlockUtils.affectedByGigaDrillBreaker(blockState) && Permissions.gigaDrillBreaker(player)) {
|
||||
SkillUtils.abilityCheck(player, SkillType.EXCAVATION);
|
||||
else if (mcMMOPlayer.getToolPreparationMode(ToolType.SHOVEL) && ItemUtils.isShovel(heldItem) && BlockUtils.affectedByGigaDrillBreaker(blockState) && Permissions.gigaDrillBreaker(player)) {
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.EXCAVATION);
|
||||
}
|
||||
else if (profile.getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockUtils.affectedByGigaDrillBreaker(blockState) || blockState.getType() == Material.SNOW || BlockUtils.affectedByBlockCracker(blockState) && Permissions.berserk(player))) {
|
||||
SkillUtils.abilityCheck(player, SkillType.UNARMED);
|
||||
else if (mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockUtils.affectedByGigaDrillBreaker(blockState) || blockState.getType() == Material.SNOW || BlockUtils.affectedByBlockCracker(blockState) && Permissions.berserk(player))) {
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.UNARMED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -313,7 +320,7 @@ public class BlockListener implements Listener {
|
||||
*
|
||||
* We don't need to check permissions here because they've already been checked for the ability to even activate.
|
||||
*/
|
||||
if (profile.getAbilityMode(AbilityType.TREE_FELLER) && BlockUtils.isLog(blockState)) {
|
||||
if (mcMMOPlayer.getAbilityMode(AbilityType.TREE_FELLER) && BlockUtils.isLog(blockState)) {
|
||||
player.playSound(blockState.getLocation(), Sound.FIZZ, Misc.FIZZ_VOLUME, Misc.FIZZ_PITCH);
|
||||
}
|
||||
}
|
||||
@@ -335,24 +342,23 @@ public class BlockListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
String playerName = player.getName();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
PlayerProfile profile = mcMMOPlayer.getProfile();
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
Block block = event.getBlock();
|
||||
BlockState blockState = block.getState();
|
||||
HerbalismManager herbalismManager = mcMMOPlayer.getHerbalismManager();
|
||||
|
||||
/*
|
||||
* ABILITY TRIGGER CHECKS
|
||||
*
|
||||
* We don't need to check permissions here because they've already been checked for the ability to even activate.
|
||||
*/
|
||||
if (SkillManagerStore.getInstance().getHerbalismManager(playerName).canGreenTerraBlock(blockState)) {
|
||||
if (SkillManagerStore.getInstance().getHerbalismManager(playerName).processGreenTerra(blockState)) {
|
||||
if (herbalismManager.canGreenTerraBlock(blockState)) {
|
||||
if (herbalismManager.processGreenTerra(blockState)) {
|
||||
blockState.update(true);
|
||||
}
|
||||
}
|
||||
else if (profile.getAbilityMode(AbilityType.BERSERK)) {
|
||||
else if (mcMMOPlayer.getAbilityMode(AbilityType.BERSERK)) {
|
||||
if (SkillUtils.triggerCheck(player, block, AbilityType.BERSERK)) {
|
||||
if (heldItem.getType() == Material.AIR) {
|
||||
plugin.getServer().getPluginManager().callEvent(new FakePlayerAnimationEvent(player));
|
||||
@@ -368,7 +374,7 @@ public class BlockListener implements Listener {
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((profile.getSkillLevel(SkillType.WOODCUTTING) >= AdvancedConfig.getInstance().getLeafBlowUnlockLevel()) && BlockUtils.isLeaves(blockState)) {
|
||||
else if ((mcMMOPlayer.getProfile().getSkillLevel(SkillType.WOODCUTTING) >= AdvancedConfig.getInstance().getLeafBlowUnlockLevel()) && BlockUtils.isLeaves(blockState)) {
|
||||
if (SkillUtils.triggerCheck(player, block, AbilityType.LEAF_BLOWER)) {
|
||||
if (Config.getInstance().getWoodcuttingRequiresTool()) {
|
||||
if (ItemUtils.isAxe(heldItem)) {
|
||||
|
||||
@@ -28,17 +28,17 @@ import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
|
||||
import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
|
||||
import com.gmail.nossr50.party.PartyManager;
|
||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
|
||||
import com.gmail.nossr50.skills.archery.Archery;
|
||||
import com.gmail.nossr50.skills.fishing.Fishing;
|
||||
import com.gmail.nossr50.skills.herbalism.Herbalism;
|
||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||
import com.gmail.nossr50.skills.taming.Taming;
|
||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
@@ -60,16 +60,19 @@ public class EntityListener implements Listener {
|
||||
public void onEntityChangeBlockEvent(EntityChangeBlockEvent event) {
|
||||
Entity entity = event.getEntity();
|
||||
|
||||
if (entity instanceof FallingBlock) {
|
||||
Block block = event.getBlock();
|
||||
if (!(entity instanceof FallingBlock)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mcMMO.placeStore.isTrue(block) && !entity.hasMetadata(mcMMO.entityMetadataKey)) {
|
||||
mcMMO.placeStore.setFalse(block);
|
||||
entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
|
||||
}
|
||||
else if (entity.hasMetadata(mcMMO.entityMetadataKey)) {
|
||||
mcMMO.placeStore.setTrue(block);
|
||||
}
|
||||
Block block = event.getBlock();
|
||||
boolean isTracked = entity.hasMetadata(mcMMO.entityMetadataKey);
|
||||
|
||||
if (mcMMO.placeStore.isTrue(block) && !isTracked) {
|
||||
mcMMO.placeStore.setFalse(block);
|
||||
entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
|
||||
}
|
||||
else if (isTracked) {
|
||||
mcMMO.placeStore.setTrue(block);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,11 +89,16 @@ public class EntityListener implements Listener {
|
||||
|
||||
Entity defender = event.getEntity();
|
||||
|
||||
if (Misc.isNPCEntity(defender) || defender.isDead()) {
|
||||
if (Misc.isNPCEntity(defender) || !defender.isValid() || !(defender instanceof LivingEntity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Entity attacker = event.getDamager();
|
||||
LivingEntity target = (LivingEntity) defender;
|
||||
|
||||
if (CombatUtils.isInvincible(target, event.getDamage())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (attacker instanceof Projectile) {
|
||||
attacker = ((Projectile) attacker).getShooter();
|
||||
@@ -103,37 +111,22 @@ public class EntityListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
if (defender instanceof Player) {
|
||||
if (defender instanceof Player && attacker instanceof Player) {
|
||||
Player defendingPlayer = (Player) defender;
|
||||
Player attackingPlayer = (Player) attacker;
|
||||
|
||||
// TODO: Is this even possible?
|
||||
if (!defendingPlayer.isOnline()) {
|
||||
// We want to make sure we're not gaining XP or applying abilities when we hit ourselves
|
||||
if (defendingPlayer.equals(attackingPlayer)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (attacker instanceof Player) {
|
||||
Player attackingPlayer = (Player) attacker;
|
||||
|
||||
if (defendingPlayer == attackingPlayer) {
|
||||
return;
|
||||
}
|
||||
else if (PartyManager.inSameParty(defendingPlayer, attackingPlayer)) {
|
||||
if (!(Permissions.friendlyFire(attackingPlayer) && Permissions.friendlyFire(defendingPlayer))) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (PartyManager.inSameParty(defendingPlayer, attackingPlayer) && !(Permissions.friendlyFire(attackingPlayer) && Permissions.friendlyFire(defendingPlayer))) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check for invincibility */
|
||||
if (defender instanceof LivingEntity) {
|
||||
LivingEntity livingDefender = (LivingEntity) defender;
|
||||
|
||||
if (!CombatUtils.isInvincible(livingDefender, event.getDamage())) {
|
||||
CombatUtils.combatChecks(event, attacker, livingDefender);
|
||||
}
|
||||
}
|
||||
CombatUtils.combatChecks(event, attacker, target);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -163,24 +156,24 @@ public class EntityListener implements Listener {
|
||||
if (livingEntity instanceof Player) {
|
||||
Player player = (Player) entity;
|
||||
|
||||
// TODO: Is it even possible for the player to be off-line here?
|
||||
if (!player.isOnline() || Misc.isNPCEntity(player)) {
|
||||
if (Misc.isNPCEntity(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
PlayerProfile profile = mcMMOPlayer.getProfile();
|
||||
|
||||
/* Check for invincibility */
|
||||
if (profile.getGodMode()) {
|
||||
if (mcMMOPlayer.getGodMode()) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (cause) {
|
||||
case FALL:
|
||||
if (SkillManagerStore.getInstance().getAcrobaticsManager(player.getName()).canRoll()) {
|
||||
event.setDamage(SkillManagerStore.getInstance().getAcrobaticsManager(player.getName()).rollCheck(event.getDamage()));
|
||||
AcrobaticsManager acrobaticsManager = mcMMOPlayer.getAcrobaticsManager();
|
||||
|
||||
if (acrobaticsManager.canRoll()) {
|
||||
event.setDamage(acrobaticsManager.rollCheck(event.getDamage()));
|
||||
|
||||
if (event.getDamage() == 0) {
|
||||
event.setCancelled(true);
|
||||
@@ -190,7 +183,7 @@ public class EntityListener implements Listener {
|
||||
break;
|
||||
|
||||
case BLOCK_EXPLOSION:
|
||||
MiningManager miningManager = SkillManagerStore.getInstance().getMiningManager(player.getName());
|
||||
MiningManager miningManager = mcMMOPlayer.getMiningManager();
|
||||
|
||||
if (miningManager.canUseDemolitionsExpertise()) {
|
||||
event.setDamage(miningManager.processDemolitionsExpertise(event.getDamage()));
|
||||
@@ -207,7 +200,7 @@ public class EntityListener implements Listener {
|
||||
}
|
||||
|
||||
if (event.getDamage() >= 1) {
|
||||
profile.actualizeRecentlyHurt();
|
||||
mcMMOPlayer.actualizeRecentlyHurt();
|
||||
}
|
||||
}
|
||||
else if (livingEntity instanceof Tameable) {
|
||||
@@ -218,24 +211,26 @@ public class EntityListener implements Listener {
|
||||
Player player = (Player) owner;
|
||||
Wolf wolf = (Wolf) pet;
|
||||
|
||||
TamingManager tamingManager = UserManager.getPlayer(player).getTamingManager();
|
||||
|
||||
switch (cause) {
|
||||
case CONTACT:
|
||||
case FIRE:
|
||||
case LAVA:
|
||||
if (Taming.canUseEnvironmentallyAware(player)) {
|
||||
Taming.processEnvironmentallyAware(player, wolf, event.getDamage());
|
||||
if (tamingManager.canUseEnvironmentallyAware()) {
|
||||
tamingManager.processEnvironmentallyAware(wolf, event.getDamage());
|
||||
}
|
||||
return;
|
||||
|
||||
case FALL:
|
||||
if (Taming.canUseEnvironmentallyAware(player)) {
|
||||
if (tamingManager.canUseEnvironmentallyAware()) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
return;
|
||||
|
||||
case ENTITY_ATTACK:
|
||||
case PROJECTILE:
|
||||
if (Taming.canUseThickFur(player)) {
|
||||
if (tamingManager.canUseThickFur()) {
|
||||
event.setDamage(Taming.processThickFur(wolf, event.getDamage()));
|
||||
|
||||
if (event.getDamage() == 0) {
|
||||
@@ -245,7 +240,7 @@ public class EntityListener implements Listener {
|
||||
return;
|
||||
|
||||
case FIRE_TICK:
|
||||
if (Taming.canUseThickFur(player)) {
|
||||
if (tamingManager.canUseThickFur()) {
|
||||
Taming.processThickFurFire(wolf);
|
||||
}
|
||||
return;
|
||||
@@ -253,7 +248,7 @@ public class EntityListener implements Listener {
|
||||
case MAGIC:
|
||||
case POISON:
|
||||
case WITHER:
|
||||
if (Taming.canUseHolyHound(player)) {
|
||||
if (tamingManager.canUseHolyHound()) {
|
||||
Taming.processHolyHound(wolf, event.getDamage());
|
||||
}
|
||||
return;
|
||||
@@ -261,7 +256,7 @@ public class EntityListener implements Listener {
|
||||
case BLOCK_EXPLOSION:
|
||||
case ENTITY_EXPLOSION:
|
||||
case LIGHTNING:
|
||||
if (Taming.canUseShockProof(player)) {
|
||||
if (tamingManager.canUseShockProof()) {
|
||||
event.setDamage(Taming.processShockProof(wolf, event.getDamage()));
|
||||
|
||||
if (event.getDamage() == 0) {
|
||||
@@ -302,7 +297,7 @@ public class EntityListener implements Listener {
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onCreatureSpawn(CreatureSpawnEvent event) {
|
||||
if (Misc.isSpawnerXPEnabled || event.getEntity() == null) {
|
||||
if (Misc.isSpawnerXPEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -325,12 +320,14 @@ public class EntityListener implements Listener {
|
||||
if (entity instanceof TNTPrimed) {
|
||||
int id = entity.getEntityId();
|
||||
|
||||
if (plugin.tntIsTracked(id)) {
|
||||
MiningManager miningManager = SkillManagerStore.getInstance().getMiningManager(plugin.getTNTPlayer(id).getName());
|
||||
if (!plugin.tntIsTracked(id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (miningManager.canUseBiggerBombs()) {
|
||||
event.setRadius(miningManager.biggerBombs(event.getRadius()));
|
||||
}
|
||||
MiningManager miningManager = UserManager.getPlayer(plugin.getTNTPlayer(id)).getMiningManager();
|
||||
|
||||
if (miningManager.canUseBiggerBombs()) {
|
||||
event.setRadius(miningManager.biggerBombs(event.getRadius()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -347,16 +344,18 @@ public class EntityListener implements Listener {
|
||||
if (entity instanceof TNTPrimed) {
|
||||
int id = entity.getEntityId();
|
||||
|
||||
if (plugin.tntIsTracked(id)) {
|
||||
MiningManager miningManager = SkillManagerStore.getInstance().getMiningManager(plugin.getTNTPlayer(id).getName());
|
||||
|
||||
if (miningManager.canUseBlastMining()) {
|
||||
miningManager.blastMiningDropProcessing(event.getYield(), event.blockList());
|
||||
event.setYield(0);
|
||||
}
|
||||
|
||||
plugin.removeFromTNTTracker(id);
|
||||
if (!plugin.tntIsTracked(id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
MiningManager miningManager = UserManager.getPlayer(plugin.getTNTPlayer(id)).getMiningManager();
|
||||
|
||||
if (miningManager.canUseBlastMining()) {
|
||||
miningManager.blastMiningDropProcessing(event.getYield(), event.blockList());
|
||||
event.setYield(0);
|
||||
}
|
||||
|
||||
plugin.removeFromTNTTracker(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -380,49 +379,51 @@ public class EntityListener implements Listener {
|
||||
int newFoodLevel = event.getFoodLevel();
|
||||
int foodChange = newFoodLevel - currentFoodLevel;
|
||||
|
||||
if (foodChange <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Some foods have 3 ranks
|
||||
* Some foods have 5 ranks
|
||||
* The number of ranks is based on how 'common' the item is
|
||||
* We can adjust this quite easily if we find something is giving too much of a bonus
|
||||
*/
|
||||
if (foodChange > 0) {
|
||||
switch (player.getItemInHand().getType()) {
|
||||
case BAKED_POTATO: /* RESTORES 3 HUNGER - RESTORES 5 1/2 HUNGER @ 1000 */
|
||||
case BREAD: /* RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ 1000 */
|
||||
case CARROT_ITEM: /* RESTORES 2 HUNGER - RESTORES 4 1/2 HUNGER @ 1000 */
|
||||
case GOLDEN_CARROT: /* RESTORES 3 HUNGER - RESTORES 5 1/2 HUNGER @ 1000 */
|
||||
case MUSHROOM_SOUP: /* RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
|
||||
case PUMPKIN_PIE: /* RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
|
||||
if (Permissions.farmersDiet(player)) {
|
||||
event.setFoodLevel(SkillManagerStore.getInstance().getHerbalismManager(player.getName()).farmersDiet(Herbalism.farmersDietRankLevel1, newFoodLevel));
|
||||
}
|
||||
return;
|
||||
switch (player.getItemInHand().getType()) {
|
||||
case BAKED_POTATO: /* RESTORES 3 HUNGER - RESTORES 5 1/2 HUNGER @ 1000 */
|
||||
case BREAD: /* RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ 1000 */
|
||||
case CARROT_ITEM: /* RESTORES 2 HUNGER - RESTORES 4 1/2 HUNGER @ 1000 */
|
||||
case GOLDEN_CARROT: /* RESTORES 3 HUNGER - RESTORES 5 1/2 HUNGER @ 1000 */
|
||||
case MUSHROOM_SOUP: /* RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
|
||||
case PUMPKIN_PIE: /* RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
|
||||
if (Permissions.farmersDiet(player)) {
|
||||
event.setFoodLevel(UserManager.getPlayer(player).getHerbalismManager().farmersDiet(Herbalism.farmersDietRankLevel1, newFoodLevel));
|
||||
}
|
||||
return;
|
||||
|
||||
case COOKIE: /* RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */
|
||||
case MELON: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
|
||||
case POISONOUS_POTATO: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
|
||||
case POTATO_ITEM: /* RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */
|
||||
if (Permissions.farmersDiet(player)) {
|
||||
event.setFoodLevel(SkillManagerStore.getInstance().getHerbalismManager(player.getName()).farmersDiet(Herbalism.farmersDietRankLevel2, newFoodLevel));
|
||||
}
|
||||
return;
|
||||
case COOKIE: /* RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */
|
||||
case MELON: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
|
||||
case POISONOUS_POTATO: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
|
||||
case POTATO_ITEM: /* RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */
|
||||
if (Permissions.farmersDiet(player)) {
|
||||
event.setFoodLevel(UserManager.getPlayer(player).getHerbalismManager().farmersDiet(Herbalism.farmersDietRankLevel2, newFoodLevel));
|
||||
}
|
||||
return;
|
||||
|
||||
case COOKED_FISH: /* RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ 1000 */
|
||||
if (Permissions.fishermansDiet(player)) {
|
||||
event.setFoodLevel(SkillManagerStore.getInstance().getFishingManager(player.getName()).handleFishermanDiet(Fishing.fishermansDietRankLevel1, newFoodLevel));
|
||||
}
|
||||
return;
|
||||
case COOKED_FISH: /* RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ 1000 */
|
||||
if (Permissions.fishermansDiet(player)) {
|
||||
event.setFoodLevel(UserManager.getPlayer(player).getFishingManager().handleFishermanDiet(Fishing.fishermansDietRankLevel1, newFoodLevel));
|
||||
}
|
||||
return;
|
||||
|
||||
case RAW_FISH: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
|
||||
if (Permissions.fishermansDiet(player)) {
|
||||
event.setFoodLevel(SkillManagerStore.getInstance().getFishingManager(player.getName()).handleFishermanDiet(Fishing.fishermansDietRankLevel2, newFoodLevel));
|
||||
}
|
||||
return;
|
||||
case RAW_FISH: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
|
||||
if (Permissions.fishermansDiet(player)) {
|
||||
event.setFoodLevel(UserManager.getPlayer(player).getFishingManager().handleFishermanDiet(Fishing.fishermansDietRankLevel2, newFoodLevel));
|
||||
}
|
||||
return;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -435,32 +436,38 @@ public class EntityListener implements Listener {
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onEntityTame(EntityTameEvent event) {
|
||||
Player player = (Player) event.getOwner();
|
||||
LivingEntity entity = event.getEntity();
|
||||
|
||||
if (Misc.isNPCEntity(player)) {
|
||||
if (Misc.isNPCEntity(player) || Misc.isNPCEntity(entity) || entity.hasMetadata(mcMMO.entityMetadataKey)) {
|
||||
return;
|
||||
}
|
||||
|
||||
LivingEntity entity = event.getEntity();
|
||||
|
||||
if (entity != null && !entity.hasMetadata(mcMMO.entityMetadataKey)) {
|
||||
SkillManagerStore.getInstance().getTamingManager(player.getName()).awardTamingXP(entity);
|
||||
}
|
||||
UserManager.getPlayer(player).getTamingManager().awardTamingXP(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle EntityTarget events.
|
||||
*
|
||||
* @param event The event to process
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onEntityTarget(EntityTargetEvent event) {
|
||||
if (event.getEntity() instanceof Tameable && event.getTarget() instanceof Player) {
|
||||
Player player = (Player) event.getTarget();
|
||||
Tameable tameable = (Tameable) event.getEntity();
|
||||
Entity entity = event.getEntity();
|
||||
Entity target = event.getTarget();
|
||||
|
||||
if (CombatUtils.isFriendlyPet(player, tameable)) {
|
||||
// isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the same party
|
||||
// So we can make some assumptions here, about our casting and our check
|
||||
Player owner = (Player) tameable.getOwner();
|
||||
if (!(Permissions.friendlyFire(player) && Permissions.friendlyFire(owner))) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (entity instanceof Tameable && target instanceof Player) {
|
||||
Player player = (Player) target;
|
||||
Tameable tameable = (Tameable) entity;
|
||||
|
||||
if (!CombatUtils.isFriendlyPet(player, tameable)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the same party
|
||||
// So we can make some assumptions here, about our casting and our check
|
||||
if (!(Permissions.friendlyFire(player) && Permissions.friendlyFire((Player) tameable.getOwner()))) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,9 +18,8 @@ import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||
import com.gmail.nossr50.skills.smelting.SmeltingManager;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
@@ -94,13 +93,11 @@ public class InventoryListener implements Listener {
|
||||
if (plugin.furnaceIsTracked(furnaceBlock) && smelting != null && ItemUtils.isSmeltable(smelting)) {
|
||||
Player player = plugin.getFurnacePlayer(furnaceBlock);
|
||||
|
||||
if (!Misc.isNPCEntity(player)) {
|
||||
if (Misc.isNPCEntity(player) || !Permissions.fuelEfficiency(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Permissions.fuelEfficiency(player)) {
|
||||
event.setBurnTime(SkillManagerStore.getInstance().getSmeltingManager(player.getName()).fuelEfficiency(event.getBurnTime()));
|
||||
}
|
||||
event.setBurnTime(UserManager.getPlayer(player).getSmeltingManager().fuelEfficiency(event.getBurnTime()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -115,13 +112,11 @@ public class InventoryListener implements Listener {
|
||||
if (plugin.furnaceIsTracked(furnaceBlock) && smelting != null && ItemUtils.isSmeltable(smelting)) {
|
||||
Player player = plugin.getFurnacePlayer(furnaceBlock);
|
||||
|
||||
if (!Misc.isNPCEntity(player)) {
|
||||
if (Misc.isNPCEntity(player) || !Permissions.skillEnabled(player, SkillType.SMELTING)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Permissions.skillEnabled(player, SkillType.SMELTING)) {
|
||||
event.setResult(SkillManagerStore.getInstance().getSmeltingManager(player.getName()).smeltProcessing(event.getSource().getType(), event.getResult()));
|
||||
}
|
||||
event.setResult(UserManager.getPlayer(player).getSmeltingManager().smeltProcessing(event.getSource().getType(), event.getResult()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -134,10 +129,12 @@ public class InventoryListener implements Listener {
|
||||
ItemStack result = ((Furnace) furnaceBlock).getInventory().getResult();
|
||||
|
||||
if (plugin.furnaceIsTracked(furnaceBlock) && result != null && ItemUtils.isSmelted(result)) {
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(event.getPlayer());
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (mcMMOPlayer.getPlayer().equals(plugin.getFurnacePlayer(furnaceBlock))) {
|
||||
event.setExpToDrop(SkillManagerStore.getInstance().getSmeltingManager(event.getPlayer().getName()).vanillaXPBoost(event.getExpToDrop()));
|
||||
SmeltingManager smeltingManager = UserManager.getPlayer(player).getSmeltingManager();
|
||||
|
||||
if (smeltingManager.canUseVanillaXpBoost()) {
|
||||
event.setExpToDrop(smeltingManager.vanillaXPBoost(event.getExpToDrop()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,17 +30,17 @@ import com.gmail.nossr50.chat.ChatManager;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.party.Party;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.party.ShareHandler;
|
||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||
import com.gmail.nossr50.skills.fishing.FishingManager;
|
||||
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
|
||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||
import com.gmail.nossr50.skills.repair.Repair;
|
||||
import com.gmail.nossr50.skills.repair.Salvage;
|
||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||
import com.gmail.nossr50.util.BlockUtils;
|
||||
import com.gmail.nossr50.util.ChimaeraWing;
|
||||
import com.gmail.nossr50.util.HardcoreManager;
|
||||
@@ -100,10 +100,9 @@ public class PlayerListener implements Listener {
|
||||
}
|
||||
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
PlayerProfile profile = mcMMOPlayer.getProfile();
|
||||
|
||||
if (profile.getGodMode() && !Permissions.mcgod(player)) {
|
||||
profile.toggleGodMode();
|
||||
if (mcMMOPlayer.getGodMode() && !Permissions.mcgod(player)) {
|
||||
mcMMOPlayer.toggleGodMode();
|
||||
player.sendMessage(LocaleLoader.getString("Commands.GodMode.Forbidden"));
|
||||
}
|
||||
|
||||
@@ -127,7 +126,7 @@ public class PlayerListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
UserManager.addUser(player).getProfile().actualizeRespawnATS();
|
||||
UserManager.addUser(player).actualizeRespawnATS();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,9 +138,9 @@ public class PlayerListener implements Listener {
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerDropItemEvent(PlayerDropItemEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
PlayerProfile playerProfile = UserManager.getPlayer(player).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
|
||||
if (playerProfile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) || playerProfile.getAbilityMode(AbilityType.SUPER_BREAKER)) {
|
||||
if (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) || mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
@@ -162,7 +161,7 @@ public class PlayerListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
FishingManager fishingManager = SkillManagerStore.getInstance().getFishingManager(player.getName());
|
||||
FishingManager fishingManager = UserManager.getPlayer(player).getFishingManager();
|
||||
|
||||
switch (event.getState()) {
|
||||
case CAUGHT_FISH:
|
||||
@@ -260,7 +259,7 @@ public class PlayerListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
UserManager.getPlayer(player).getProfile().actualizeRespawnATS();
|
||||
UserManager.getPlayer(player).actualizeRespawnATS();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -278,6 +277,8 @@ public class PlayerListener implements Listener {
|
||||
|
||||
Block block = event.getClickedBlock();
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
MiningManager miningManager = mcMMOPlayer.getMiningManager();
|
||||
|
||||
switch (event.getAction()) {
|
||||
case RIGHT_CLICK_BLOCK:
|
||||
@@ -285,7 +286,7 @@ public class PlayerListener implements Listener {
|
||||
|
||||
/* REPAIR CHECKS */
|
||||
if (blockID == Repair.anvilID && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.repairManager.isRepairable(heldItem)) {
|
||||
mcMMO.repairManager.handleRepair(UserManager.getPlayer(player), heldItem);
|
||||
mcMMO.repairManager.handleRepair(mcMMOPlayer, heldItem);
|
||||
event.setCancelled(true);
|
||||
player.updateInventory();
|
||||
}
|
||||
@@ -296,12 +297,12 @@ public class PlayerListener implements Listener {
|
||||
player.updateInventory();
|
||||
}
|
||||
/* BLAST MINING CHECK */
|
||||
else if (SkillManagerStore.getInstance().getMiningManager(player.getName()).canDetonate()) {
|
||||
else if (miningManager.canDetonate()) {
|
||||
if (blockID == Material.TNT.getId()) {
|
||||
event.setCancelled(true); // Don't detonate the TNT if they're too close
|
||||
}
|
||||
else {
|
||||
SkillManagerStore.getInstance().getMiningManager(player.getName()).remoteDetonation();
|
||||
miningManager.remoteDetonation();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -309,8 +310,8 @@ public class PlayerListener implements Listener {
|
||||
|
||||
case RIGHT_CLICK_AIR:
|
||||
/* BLAST MINING CHECK */
|
||||
if (SkillManagerStore.getInstance().getMiningManager(player.getName()).canDetonate()) {
|
||||
SkillManagerStore.getInstance().getMiningManager(player.getName()).remoteDetonation();
|
||||
if (miningManager.canDetonate()) {
|
||||
miningManager.remoteDetonation();
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -334,6 +335,7 @@ public class PlayerListener implements Listener {
|
||||
}
|
||||
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
|
||||
switch (event.getAction()) {
|
||||
case RIGHT_CLICK_BLOCK:
|
||||
@@ -359,7 +361,7 @@ public class PlayerListener implements Listener {
|
||||
}
|
||||
|
||||
/* GREEN THUMB CHECK */
|
||||
HerbalismManager herbalismManager = SkillManagerStore.getInstance().getHerbalismManager(player.getName());
|
||||
HerbalismManager herbalismManager = mcMMOPlayer.getHerbalismManager();
|
||||
|
||||
if (herbalismManager.canGreenThumbBlock(blockState)) {
|
||||
player.setItemInHand(new ItemStack(Material.SEEDS, heldItem.getAmount() - 1));
|
||||
@@ -399,14 +401,15 @@ public class PlayerListener implements Listener {
|
||||
case LEFT_CLICK_BLOCK:
|
||||
|
||||
/* CALL OF THE WILD CHECKS */
|
||||
if (player.isSneaking()) {
|
||||
if (player.isSneaking() && Permissions.callOfTheWild(player)) {
|
||||
Material type = heldItem.getType();
|
||||
TamingManager tamingManager = mcMMOPlayer.getTamingManager();
|
||||
|
||||
if (type == Material.RAW_FISH) {
|
||||
SkillManagerStore.getInstance().getTamingManager(player.getName()).summonOcelot();
|
||||
tamingManager.summonOcelot();
|
||||
}
|
||||
else if (type == Material.BONE) {
|
||||
SkillManagerStore.getInstance().getTamingManager(player.getName()).summonWolf();
|
||||
tamingManager.summonWolf();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.gmail.nossr50.runnables.skills;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
@@ -20,14 +20,14 @@ public class SkillMonitorTask implements Runnable {
|
||||
continue;
|
||||
}
|
||||
|
||||
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
|
||||
/*
|
||||
* MONITOR SKILLS
|
||||
*/
|
||||
for (SkillType skill : SkillType.values()) {
|
||||
if (skill.getTool() != null && skill.getAbility() != null) {
|
||||
SkillUtils.monitorSkill(player, profile, curTime, skill);
|
||||
SkillUtils.monitorSkill(mcMMOPlayer, curTime, skill);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public class SkillMonitorTask implements Runnable {
|
||||
*/
|
||||
for (AbilityType ability : AbilityType.values()) {
|
||||
if (ability.getCooldown() > 0) {
|
||||
SkillUtils.watchCooldown(player, profile, ability);
|
||||
SkillUtils.watchCooldown(mcMMOPlayer, ability);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
package com.gmail.nossr50.skills;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
|
||||
import com.gmail.nossr50.skills.archery.ArcheryManager;
|
||||
import com.gmail.nossr50.skills.axes.AxeManager;
|
||||
import com.gmail.nossr50.skills.excavation.ExcavationManager;
|
||||
import com.gmail.nossr50.skills.fishing.FishingManager;
|
||||
import com.gmail.nossr50.skills.herbalism.HerbalismManager;
|
||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||
import com.gmail.nossr50.skills.smelting.SmeltingManager;
|
||||
import com.gmail.nossr50.skills.swords.SwordsManager;
|
||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
public class SkillManagerStore {
|
||||
private static SkillManagerStore instance;
|
||||
|
||||
private HashMap<String, AcrobaticsManager> acrobaticsManagers = new HashMap<String, AcrobaticsManager>();
|
||||
private HashMap<String, ArcheryManager> archeryManagers = new HashMap<String, ArcheryManager>();
|
||||
private HashMap<String, AxeManager> axeManagers = new HashMap<String, AxeManager>();
|
||||
private HashMap<String, ExcavationManager> excavationManagers = new HashMap<String, ExcavationManager>();
|
||||
private HashMap<String, FishingManager> fishingManagers = new HashMap<String, FishingManager>();
|
||||
private HashMap<String, HerbalismManager> herbalismManagers = new HashMap<String, HerbalismManager>();
|
||||
private HashMap<String, MiningManager> miningManagers = new HashMap<String, MiningManager>();
|
||||
private HashMap<String, SmeltingManager> smeltingManagers = new HashMap<String, SmeltingManager>();
|
||||
private HashMap<String, SwordsManager> swordsManagers = new HashMap<String, SwordsManager>();
|
||||
private HashMap<String, TamingManager> tamingManagers = new HashMap<String, TamingManager>();
|
||||
private HashMap<String, UnarmedManager> unarmedManagers = new HashMap<String, UnarmedManager>();
|
||||
|
||||
public static SkillManagerStore getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new SkillManagerStore();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
public AcrobaticsManager getAcrobaticsManager(String playerName) {
|
||||
if (!acrobaticsManagers.containsKey(playerName)) {
|
||||
acrobaticsManagers.put(playerName, new AcrobaticsManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return acrobaticsManagers.get(playerName);
|
||||
}
|
||||
|
||||
public ArcheryManager getArcheryManager(String playerName) {
|
||||
if (!archeryManagers.containsKey(playerName)) {
|
||||
archeryManagers.put(playerName, new ArcheryManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return archeryManagers.get(playerName);
|
||||
}
|
||||
|
||||
public AxeManager getAxeManager(String playerName) {
|
||||
if (!axeManagers.containsKey(playerName)) {
|
||||
axeManagers.put(playerName, new AxeManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return axeManagers.get(playerName);
|
||||
}
|
||||
|
||||
public ExcavationManager getExcavationManager(String playerName) {
|
||||
if (!excavationManagers.containsKey(playerName)) {
|
||||
excavationManagers.put(playerName, new ExcavationManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return excavationManagers.get(playerName);
|
||||
}
|
||||
|
||||
public FishingManager getFishingManager(String playerName) {
|
||||
if (!fishingManagers.containsKey(playerName)) {
|
||||
fishingManagers.put(playerName, new FishingManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return fishingManagers.get(playerName);
|
||||
}
|
||||
|
||||
public HerbalismManager getHerbalismManager(String playerName) {
|
||||
if (!herbalismManagers.containsKey(playerName)) {
|
||||
herbalismManagers.put(playerName, new HerbalismManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return herbalismManagers.get(playerName);
|
||||
}
|
||||
|
||||
public MiningManager getMiningManager(String playerName) {
|
||||
if (!miningManagers.containsKey(playerName)) {
|
||||
miningManagers.put(playerName, new MiningManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return miningManagers.get(playerName);
|
||||
}
|
||||
|
||||
public SmeltingManager getSmeltingManager(String playerName) {
|
||||
if (!smeltingManagers.containsKey(playerName)) {
|
||||
smeltingManagers.put(playerName, new SmeltingManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return smeltingManagers.get(playerName);
|
||||
}
|
||||
|
||||
public SwordsManager getSwordsManager(String playerName) {
|
||||
if (!swordsManagers.containsKey(playerName)) {
|
||||
swordsManagers.put(playerName, new SwordsManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return swordsManagers.get(playerName);
|
||||
}
|
||||
|
||||
public TamingManager getTamingManager(String playerName) {
|
||||
if (!tamingManagers.containsKey(playerName)) {
|
||||
tamingManagers.put(playerName, new TamingManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return tamingManagers.get(playerName);
|
||||
}
|
||||
|
||||
public UnarmedManager getUnarmedManager(String playerName) {
|
||||
if (!unarmedManagers.containsKey(playerName)) {
|
||||
unarmedManagers.put(playerName, new UnarmedManager(UserManager.getPlayer(playerName)));
|
||||
}
|
||||
|
||||
return unarmedManagers.get(playerName);
|
||||
}
|
||||
}
|
||||
@@ -6,12 +6,12 @@ import org.bukkit.entity.LightningStrike;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.skills.CombatUtils;
|
||||
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
@@ -28,12 +28,11 @@ public class AcrobaticsManager extends SkillManager {
|
||||
|
||||
public boolean canDodge(Entity damager) {
|
||||
if (Permissions.dodge(getPlayer())) {
|
||||
if (damager instanceof Player && SkillType.ACROBATICS.getPVPEnabled()) {
|
||||
return true;
|
||||
}
|
||||
else if (!(damager instanceof Player) && SkillType.ACROBATICS.getPVEEnabled() && !(damager instanceof LightningStrike && Acrobatics.dodgeLightningDisabled)) {
|
||||
return true;
|
||||
if (damager instanceof LightningStrike && Acrobatics.dodgeLightningDisabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return CombatUtils.shouldProcessSkill(damager, skill);
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -49,17 +48,15 @@ public class AcrobaticsManager extends SkillManager {
|
||||
int modifiedDamage = Acrobatics.calculateModifiedDodgeDamage(damage, Acrobatics.dodgeDamageModifier);
|
||||
Player player = getPlayer();
|
||||
|
||||
if (!isFatal(modifiedDamage) && SkillUtils.activationSuccessful(player, skill, Acrobatics.dodgeMaxChance, Acrobatics.dodgeMaxBonusLevel)) {
|
||||
if (!isFatal(modifiedDamage) && SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Acrobatics.dodgeMaxChance, Acrobatics.dodgeMaxBonusLevel)) {
|
||||
ParticleEffectUtils.playDodgeEffect(player);
|
||||
|
||||
PlayerProfile playerProfile = getProfile();
|
||||
|
||||
if (playerProfile.useChatNotifications()) {
|
||||
if (mcMMOPlayer.useChatNotifications()) {
|
||||
player.sendMessage(LocaleLoader.getString("Acrobatics.Combat.Proc"));
|
||||
}
|
||||
|
||||
// Why do we check respawn cooldown here?
|
||||
if (System.currentTimeMillis() >= playerProfile.getRespawnATS() + Misc.PLAYER_RESPAWN_COOLDOWN_SECONDS) {
|
||||
if (System.currentTimeMillis() >= mcMMOPlayer.getRespawnATS() + Misc.PLAYER_RESPAWN_COOLDOWN_SECONDS) {
|
||||
applyXpGain(damage * Acrobatics.dodgeXpModifier);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,9 +26,7 @@ public class ArcheryManager extends SkillManager {
|
||||
}
|
||||
|
||||
public boolean canSkillShot() {
|
||||
Player player = getPlayer();
|
||||
|
||||
return SkillUtils.unlockLevelReached(player, skill, Archery.skillShotIncreaseLevel) && Permissions.bonusDamage(player, skill);
|
||||
return getSkillLevel() >= Archery.skillShotIncreaseLevel && Permissions.bonusDamage(getPlayer(), skill);
|
||||
}
|
||||
|
||||
public boolean canTrackArrows() {
|
||||
@@ -64,7 +62,7 @@ public class ArcheryManager extends SkillManager {
|
||||
* @param target The {@link LivingEntity} damaged by the arrow
|
||||
*/
|
||||
public void trackArrows(LivingEntity target) {
|
||||
if (SkillUtils.activationSuccessful(getPlayer(), skill, Archery.retrieveMaxChance, Archery.retrieveMaxBonusLevel)) {
|
||||
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Archery.retrieveMaxChance, Archery.retrieveMaxBonusLevel)) {
|
||||
Archery.incrementTrackerValue(target);
|
||||
}
|
||||
}
|
||||
@@ -72,26 +70,24 @@ public class ArcheryManager extends SkillManager {
|
||||
/**
|
||||
* Handle the effects of the Daze ability
|
||||
*
|
||||
* @param defender The player being affected by the ability
|
||||
* @param defender The {@link Player} being affected by the ability
|
||||
* @param damage The amount of damage initially dealt by the event
|
||||
* @return the modified event damage if the ability was successful, the original event damage otherwise
|
||||
*/
|
||||
public int dazeCheck(Player defender, int damage) {
|
||||
Player attacker = getPlayer();
|
||||
|
||||
if (SkillUtils.activationSuccessful(attacker, skill, Archery.dazeMaxBonus, Archery.dazeMaxBonusLevel)) {
|
||||
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Archery.dazeMaxBonus, Archery.dazeMaxBonusLevel)) {
|
||||
Location dazedLocation = defender.getLocation();
|
||||
dazedLocation.setPitch(90 - Misc.getRandom().nextInt(181));
|
||||
|
||||
defender.teleport(dazedLocation);
|
||||
defender.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 20 * 10, 10));
|
||||
|
||||
if (UserManager.getPlayer(defender).getProfile().useChatNotifications()) {
|
||||
if (UserManager.getPlayer(defender).useChatNotifications()) {
|
||||
defender.sendMessage(LocaleLoader.getString("Combat.TouchedFuzzy"));
|
||||
}
|
||||
|
||||
if (getProfile().useChatNotifications()) {
|
||||
attacker.sendMessage(LocaleLoader.getString("Combat.TargetDazed"));
|
||||
if (mcMMOPlayer.useChatNotifications()) {
|
||||
getPlayer().sendMessage(LocaleLoader.getString("Combat.TargetDazed"));
|
||||
}
|
||||
|
||||
return damage + Archery.dazeModifier;
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.ModUtils;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
@@ -19,8 +20,8 @@ import com.gmail.nossr50.util.skills.CombatUtils;
|
||||
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
public class AxeManager extends SkillManager {
|
||||
public AxeManager(McMMOPlayer mcMMOPlayer) {
|
||||
public class AxesManager extends SkillManager {
|
||||
public AxesManager(McMMOPlayer mcMMOPlayer) {
|
||||
super(mcMMOPlayer, SkillType.AXES);
|
||||
}
|
||||
|
||||
@@ -41,11 +42,11 @@ public class AxeManager extends SkillManager {
|
||||
}
|
||||
|
||||
public boolean canUseSkullSplitter(LivingEntity target) {
|
||||
return target.isValid() && getProfile().getAbilityMode(AbilityType.SKULL_SPLITTER) && Permissions.skullSplitter(getPlayer());
|
||||
return target.isValid() && mcMMOPlayer.getAbilityMode(AbilityType.SKULL_SPLITTER) && Permissions.skullSplitter(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canActivateAbility() {
|
||||
return getProfile().getToolPreparationMode(ToolType.AXE) && Permissions.skullSplitter(getPlayer());
|
||||
return mcMMOPlayer.getToolPreparationMode(ToolType.AXE) && Permissions.skullSplitter(getPlayer());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -68,10 +69,8 @@ public class AxeManager extends SkillManager {
|
||||
* @return the modified event damage if the ability was successful, the original event damage otherwise
|
||||
*/
|
||||
public int criticalHitCheck(LivingEntity target, int damage) {
|
||||
Player player = getPlayer();
|
||||
|
||||
if (SkillUtils.activationSuccessful(player, skill, Axes.criticalHitMaxChance, Axes.criticalHitMaxBonusLevel)) {
|
||||
player.sendMessage(LocaleLoader.getString("Axes.Combat.CriticalHit"));
|
||||
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Axes.criticalHitMaxChance, Axes.criticalHitMaxBonusLevel)) {
|
||||
getPlayer().sendMessage(LocaleLoader.getString("Axes.Combat.CriticalHit"));
|
||||
|
||||
if (target instanceof Player) {
|
||||
((Player) target).sendMessage(LocaleLoader.getString("Axes.Combat.CritStruck"));
|
||||
@@ -94,10 +93,11 @@ public class AxeManager extends SkillManager {
|
||||
int durabilityDamage = 1 + (getSkillLevel() / Axes.impactIncreaseLevel);
|
||||
|
||||
for (ItemStack armor : target.getEquipment().getArmorContents()) {
|
||||
if (ItemUtils.isArmor(armor) && SkillUtils.activationSuccessful(getPlayer(), skill, Axes.impactChance)) {
|
||||
if (ItemUtils.isArmor(armor) && Axes.impactChance > Misc.getRandom().nextInt(getActivationChance())) {
|
||||
double durabilityModifier = 1 / (armor.getEnchantmentLevel(Enchantment.DURABILITY) + 1); // Modifier to simulate the durability enchantment behavior
|
||||
double modifiedDurabilityDamage = durabilityDamage * durabilityModifier;
|
||||
double maxDurabilityDamage = (ModUtils.isCustomArmor(armor) ? ModUtils.getArmorFromItemStack(armor).getDurability() : armor.getType().getMaxDurability()) * Axes.impactMaxDurabilityModifier;
|
||||
short maxDurability = ModUtils.isCustomArmor(armor) ? ModUtils.getArmorFromItemStack(armor).getDurability() : armor.getType().getMaxDurability();
|
||||
double maxDurabilityDamage = maxDurability * Axes.impactMaxDurabilityModifier;
|
||||
|
||||
armor.setDurability((short) (Math.min(modifiedDurabilityDamage, maxDurabilityDamage) + armor.getDurability()));
|
||||
}
|
||||
@@ -112,20 +112,20 @@ public class AxeManager extends SkillManager {
|
||||
* @return the modified event damage if the ability was successful, the original event damage otherwise
|
||||
*/
|
||||
public int greaterImpactCheck(LivingEntity target, int damage) {
|
||||
Player player = getPlayer();
|
||||
if (Axes.greaterImpactChance > Misc.getRandom().nextInt(getActivationChance())) {
|
||||
Player player = getPlayer();
|
||||
|
||||
if (SkillUtils.activationSuccessful(player, skill, Axes.greaterImpactChance)) {
|
||||
ParticleEffectUtils.playGreaterImpactEffect(target);
|
||||
target.setVelocity(player.getLocation().getDirection().normalize().multiply(Axes.greaterImpactKnockbackMultiplier));
|
||||
|
||||
if (getProfile().useChatNotifications()) {
|
||||
if (mcMMOPlayer.useChatNotifications()) {
|
||||
player.sendMessage(LocaleLoader.getString("Axes.Combat.GI.Proc"));
|
||||
}
|
||||
|
||||
if (target instanceof Player) {
|
||||
Player defender = (Player) target;
|
||||
|
||||
if (UserManager.getPlayer(defender).getProfile().useChatNotifications()) {
|
||||
if (UserManager.getPlayer(defender).useChatNotifications()) {
|
||||
defender.sendMessage(LocaleLoader.getString("Axes.Combat.GI.Struck"));
|
||||
}
|
||||
}
|
||||
@@ -38,9 +38,7 @@ public class FishingManager extends SkillManager {
|
||||
}
|
||||
|
||||
public boolean canShake(Entity target) {
|
||||
Player player = getPlayer();
|
||||
|
||||
return target instanceof LivingEntity && SkillUtils.unlockLevelReached(player, skill, AdvancedConfig.getInstance().getShakeUnlockLevel()) && Permissions.shake(player);
|
||||
return target instanceof LivingEntity && getSkillLevel() >= AdvancedConfig.getInstance().getShakeUnlockLevel() && Permissions.shake(getPlayer());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -136,7 +134,7 @@ public class FishingManager extends SkillManager {
|
||||
* @param mob The {@link LivingEntity} affected by the ability
|
||||
*/
|
||||
public void shakeCheck(LivingEntity target) {
|
||||
if (SkillUtils.activationSuccessful(getPlayer(), skill, getShakeProbability())) {
|
||||
if (getShakeProbability() > Misc.getRandom().nextInt(getActivationChance())) {
|
||||
Map<ItemStack, Integer> possibleDrops = new HashMap<ItemStack, Integer>();
|
||||
|
||||
Fishing.findPossibleDrops(target, possibleDrops);
|
||||
|
||||
@@ -15,7 +15,6 @@ import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||
import com.gmail.nossr50.datatypes.mods.CustomBlock;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
@@ -25,12 +24,10 @@ import com.gmail.nossr50.runnables.skills.herbalism.GreenTerraTimerTask;
|
||||
import com.gmail.nossr50.runnables.skills.herbalism.GreenThumbTimerTask;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.util.BlockUtils;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.ModUtils;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
public class HerbalismManager extends SkillManager {
|
||||
@@ -56,21 +53,19 @@ public class HerbalismManager extends SkillManager {
|
||||
}
|
||||
|
||||
public boolean canUseHylianLuck() {
|
||||
Player player = getPlayer();
|
||||
|
||||
return ItemUtils.isSword(player.getItemInHand()) && Permissions.hylianLuck(player);
|
||||
return Permissions.hylianLuck(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canGreenTerraBlock(BlockState blockState) {
|
||||
return getProfile().getAbilityMode(AbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState);
|
||||
return mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState);
|
||||
}
|
||||
|
||||
public boolean canActivateAbility() {
|
||||
return getProfile().getToolPreparationMode(ToolType.HOE) && Permissions.greenTerra(getPlayer());
|
||||
return mcMMOPlayer.getToolPreparationMode(ToolType.HOE) && Permissions.greenTerra(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canGreenTerraPlant() {
|
||||
return getProfile().getAbilityMode(AbilityType.GREEN_TERRA);
|
||||
return mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -152,7 +147,7 @@ public class HerbalismManager extends SkillManager {
|
||||
xp = customBlock.getXpGain();
|
||||
}
|
||||
|
||||
if (Permissions.doubleDrops(player, skill) && SkillUtils.activationSuccessful(player, skill, Herbalism.doubleDropsMaxChance, Herbalism.doubleDropsMaxLevel)) {
|
||||
if (Permissions.doubleDrops(player, skill) && SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Herbalism.doubleDropsMaxChance, Herbalism.doubleDropsMaxLevel)) {
|
||||
Location location = blockState.getLocation();
|
||||
|
||||
if (dropItem != null && herbalismBlock != null && herbalismBlock.canDoubleDrop()) {
|
||||
@@ -180,10 +175,8 @@ public class HerbalismManager extends SkillManager {
|
||||
* @return true if the ability was successful, false otherwise
|
||||
*/
|
||||
public boolean processGreenThumbBlocks(BlockState blockState) {
|
||||
Player player = getPlayer();
|
||||
|
||||
if (!SkillUtils.activationSuccessful(player, skill, Herbalism.greenThumbMaxChance, Herbalism.greenThumbMaxLevel)) {
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Fail"));
|
||||
if (!SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Herbalism.greenThumbMaxChance, Herbalism.greenThumbMaxLevel)) {
|
||||
getPlayer().sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Fail"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -197,9 +190,7 @@ public class HerbalismManager extends SkillManager {
|
||||
* @return true if the ability was successful, false otherwise
|
||||
*/
|
||||
public boolean processHylianLuck(BlockState blockState) {
|
||||
Player player = getPlayer();
|
||||
|
||||
if (!SkillUtils.activationSuccessful(player, skill, Herbalism.hylianLuckMaxChance, Herbalism.hylianLuckMaxLevel)) {
|
||||
if (!SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Herbalism.hylianLuckMaxChance, Herbalism.hylianLuckMaxLevel)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -238,7 +229,7 @@ public class HerbalismManager extends SkillManager {
|
||||
blockState.setType(Material.AIR);
|
||||
|
||||
Misc.dropItem(blockState.getLocation(), treasures.get(Misc.getRandom().nextInt(treasures.size())).getDrop());
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.HylianLuck"));
|
||||
getPlayer().sendMessage(LocaleLoader.getString("Herbalism.HylianLuck"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -266,7 +257,7 @@ public class HerbalismManager extends SkillManager {
|
||||
playerInventory.removeItem(new ItemStack(Material.RED_MUSHROOM));
|
||||
player.updateInventory();
|
||||
|
||||
if (!SkillUtils.activationSuccessful(player, skill, Herbalism.shroomThumbMaxChance, Herbalism.shroomThumbMaxLevel)) {
|
||||
if (!SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Herbalism.shroomThumbMaxChance, Herbalism.shroomThumbMaxLevel)) {
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.ShroomThumb.Fail"));
|
||||
return false;
|
||||
}
|
||||
@@ -288,16 +279,14 @@ public class HerbalismManager extends SkillManager {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerProfile playerProfile = UserManager.getPlayer(player).getProfile();
|
||||
|
||||
if (playerProfile.getAbilityMode(AbilityType.GREEN_TERRA)) {
|
||||
if (mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA)) {
|
||||
playerInventory.removeItem(seed);
|
||||
player.updateInventory(); // Needed until replacement available
|
||||
|
||||
mcMMO.p.getServer().getScheduler().scheduleSyncDelayedTask(mcMMO.p, new GreenTerraTimerTask(blockState), 0);
|
||||
return;
|
||||
}
|
||||
else if (SkillUtils.activationSuccessful(player, skill, Herbalism.greenThumbMaxChance, Herbalism.greenThumbMaxLevel)) {
|
||||
else if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Herbalism.greenThumbMaxChance, Herbalism.greenThumbMaxLevel)) {
|
||||
playerInventory.removeItem(seed);
|
||||
player.updateInventory(); // Needed until replacement available
|
||||
|
||||
|
||||
@@ -30,38 +30,33 @@ public class MiningManager extends SkillManager{
|
||||
}
|
||||
|
||||
public boolean canUseDemolitionsExpertise() {
|
||||
Player player = getPlayer();
|
||||
|
||||
return SkillUtils.unlockLevelReached(player, skill, BlastMining.Tier.FOUR.getLevel()) && Permissions.demolitionsExpertise(player);
|
||||
return getSkillLevel() >= BlastMining.Tier.FOUR.getLevel() && Permissions.demolitionsExpertise(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canDetonate() {
|
||||
Player player = getPlayer();
|
||||
|
||||
return player.isSneaking() && player.getItemInHand().getTypeId() == BlastMining.detonatorID && Permissions.remoteDetonation(player) && SkillUtils.unlockLevelReached(player, skill, BlastMining.Tier.ONE.getLevel());
|
||||
return canUseBlastMining() && player.isSneaking() && player.getItemInHand().getTypeId() == BlastMining.detonatorID && Permissions.remoteDetonation(player);
|
||||
}
|
||||
|
||||
public boolean canUseBlastMining() {
|
||||
return SkillUtils.unlockLevelReached(getPlayer(), skill, BlastMining.Tier.ONE.getLevel());
|
||||
return getSkillLevel() >= BlastMining.Tier.ONE.getLevel();
|
||||
}
|
||||
|
||||
public boolean canUseBiggerBombs() {
|
||||
Player player = getPlayer();
|
||||
|
||||
return Permissions.biggerBombs(player) && SkillUtils.unlockLevelReached(getPlayer(), skill, BlastMining.Tier.TWO.getLevel());
|
||||
return getSkillLevel() >= BlastMining.Tier.TWO.getLevel() && Permissions.biggerBombs(getPlayer());
|
||||
}
|
||||
|
||||
/**
|
||||
* Process double drops & XP gain for Mining.
|
||||
*
|
||||
* @param blockState The {@link BlockState} to check ability activation for
|
||||
* @param player The {@link Player} using this ability
|
||||
*/
|
||||
public void miningBlockCheck(BlockState blockState) {
|
||||
Player player = getPlayer();
|
||||
int xp = Mining.getBlockXp(blockState);
|
||||
|
||||
if (Permissions.doubleDrops(player, skill) && SkillUtils.activationSuccessful(player, skill, Mining.doubleDropsMaxChance, Mining.doubleDropsMaxLevel)) {
|
||||
if (Permissions.doubleDrops(player, skill) && SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Mining.doubleDropsMaxChance, Mining.doubleDropsMaxLevel)) {
|
||||
if (player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) {
|
||||
Mining.handleSilkTouchDrops(blockState);
|
||||
}
|
||||
@@ -86,7 +81,6 @@ public class MiningManager extends SkillManager{
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerProfile profile = getProfile();
|
||||
TNTPrimed tnt = player.getWorld().spawn(targetBlock.getLocation(), TNTPrimed.class);
|
||||
|
||||
SkillUtils.sendSkillMessage(player, AbilityType.BLAST_MINING.getAbilityPlayer(player));
|
||||
@@ -97,8 +91,8 @@ public class MiningManager extends SkillManager{
|
||||
targetBlock.setData((byte) 0x0);
|
||||
targetBlock.setType(Material.AIR);
|
||||
|
||||
profile.setSkillDATS(AbilityType.BLAST_MINING, System.currentTimeMillis());
|
||||
profile.setAbilityInformed(AbilityType.BLAST_MINING, false);
|
||||
getProfile().setSkillDATS(AbilityType.BLAST_MINING, System.currentTimeMillis());
|
||||
mcMMOPlayer.setAbilityInformed(AbilityType.BLAST_MINING, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -204,9 +204,9 @@ public class Repair {
|
||||
* @param anvilID The item ID of the anvil block
|
||||
*/
|
||||
public static void placedAnvilCheck(Player player, int anvilID) {
|
||||
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
|
||||
if (!profile.getPlacedAnvil()) {
|
||||
if (!mcMMOPlayer.getPlacedAnvil()) {
|
||||
if (mcMMO.spoutEnabled) {
|
||||
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
|
||||
|
||||
@@ -219,7 +219,7 @@ public class Repair {
|
||||
}
|
||||
|
||||
player.playSound(player.getLocation(), Sound.ANVIL_LAND, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH);
|
||||
profile.togglePlacedAnvil();
|
||||
mcMMOPlayer.togglePlacedAnvil();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
@@ -59,9 +59,9 @@ public class Salvage {
|
||||
* @param anvilID The item ID of the anvil block
|
||||
*/
|
||||
public static void placedAnvilCheck(final Player player, final int anvilID) {
|
||||
final PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
|
||||
if (!profile.getPlacedSalvageAnvil()) {
|
||||
if (!mcMMOPlayer.getPlacedSalvageAnvil()) {
|
||||
if (mcMMO.spoutEnabled) {
|
||||
final SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
|
||||
|
||||
@@ -74,7 +74,7 @@ public class Salvage {
|
||||
}
|
||||
|
||||
player.playSound(player.getLocation(), Sound.ANVIL_LAND, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH);
|
||||
profile.togglePlacedSalvageAnvil();
|
||||
mcMMOPlayer.togglePlacedSalvageAnvil();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.gmail.nossr50.events.skills.repair.McMMOPlayerRepairCheckEvent;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
public class SimpleRepairManager implements RepairManager {
|
||||
private HashMap<Integer, Repairable> repairables;
|
||||
@@ -108,6 +109,9 @@ public class SimpleRepairManager implements RepairManager {
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear ability buffs before trying to repair.
|
||||
SkillUtils.removeAbilityBuff(item);
|
||||
|
||||
// Lets get down to business,
|
||||
// To defeat, the huns.
|
||||
int baseRepairAmount = repairable.getBaseRepairDurability(); // Did they send me daughters?
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.gmail.nossr50.skills.smelting;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.FurnaceBurnEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@@ -16,7 +15,6 @@ import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.skills.mining.Mining;
|
||||
import com.gmail.nossr50.skills.smelting.Smelting.Tier;
|
||||
import com.gmail.nossr50.util.BlockUtils;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
@@ -27,16 +25,11 @@ public class SmeltingManager extends SkillManager {
|
||||
}
|
||||
|
||||
public boolean canUseFluxMining(BlockState blockState) {
|
||||
Player player = getPlayer();
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
|
||||
return BlockUtils.affectedByFluxMining(blockState) && ItemUtils.isPickaxe(heldItem) && !heldItem.containsEnchantment(Enchantment.SILK_TOUCH) && Permissions.fluxMining(player) && !mcMMO.placeStore.isTrue(blockState);
|
||||
return getSkillLevel() >= Smelting.fluxMiningUnlockLevel && BlockUtils.affectedByFluxMining(blockState) && Permissions.fluxMining(getPlayer()) && !mcMMO.placeStore.isTrue(blockState);
|
||||
}
|
||||
|
||||
public boolean canUseVanillaXpBoost() {
|
||||
Player player = getPlayer();
|
||||
|
||||
return SkillUtils.unlockLevelReached(player, skill, Smelting.Tier.ONE.getLevel()) && Permissions.vanillaXpBoost(player, skill);
|
||||
return getSkillLevel() >= Smelting.Tier.ONE.getLevel() && Permissions.vanillaXpBoost(getPlayer(), skill);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -48,7 +41,7 @@ public class SmeltingManager extends SkillManager {
|
||||
public boolean processFluxMining(BlockState blockState) {
|
||||
Player player = getPlayer();
|
||||
|
||||
if (SkillUtils.unlockLevelReached(player, skill, Smelting.fluxMiningUnlockLevel) && SkillUtils.activationSuccessful(player, skill, Smelting.fluxMiningChance)) {
|
||||
if (Smelting.fluxMiningChance > Misc.getRandom().nextInt(getActivationChance())) {
|
||||
ItemStack item = null;
|
||||
|
||||
switch (blockState.getType()) {
|
||||
@@ -72,7 +65,7 @@ public class SmeltingManager extends SkillManager {
|
||||
|
||||
Misc.dropItem(location, item);
|
||||
|
||||
if (Permissions.doubleDrops(player, skill) && SkillUtils.activationSuccessful(player, skill, Mining.doubleDropsMaxChance, Mining.doubleDropsMaxLevel)) {
|
||||
if (Permissions.doubleDrops(player, skill) && SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Mining.doubleDropsMaxChance, Mining.doubleDropsMaxLevel)) {
|
||||
Misc.dropItem(location, item);
|
||||
}
|
||||
|
||||
@@ -101,7 +94,7 @@ public class SmeltingManager extends SkillManager {
|
||||
|
||||
applyXpGain(Smelting.getResourceXp(resourceType));
|
||||
|
||||
if (Permissions.doubleDrops(player, skill) && SkillUtils.activationSuccessful(player, skill, Smelting.secondSmeltMaxChance, Smelting.secondSmeltMaxLevel)) {
|
||||
if (Permissions.doubleDrops(player, skill) && SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Smelting.secondSmeltMaxChance, Smelting.secondSmeltMaxLevel)) {
|
||||
ItemStack newResult = new ItemStack(result.getType(), result.getAmount() + 1);
|
||||
return newResult;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
package com.gmail.nossr50.skills.swords;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.gmail.nossr50.util.skills.CombatUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
@@ -17,15 +21,29 @@ public class SwordsManager extends SkillManager {
|
||||
super(mcMMOPlayer, SkillType.SWORDS);
|
||||
}
|
||||
|
||||
public boolean canActivateAbility() {
|
||||
return mcMMOPlayer.getToolPreparationMode(ToolType.SWORD) && Permissions.serratedStrikes(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseBleed() {
|
||||
return Permissions.bleed(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseCounterAttack(Entity target) {
|
||||
return target instanceof LivingEntity && Permissions.counterAttack(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseSerratedStrike() {
|
||||
return mcMMOPlayer.getAbilityMode(AbilityType.SERRATED_STRIKES) && Permissions.serratedStrikes(getPlayer());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for Bleed effect.
|
||||
*
|
||||
* @param target The defending entity
|
||||
*/
|
||||
public void bleedCheck(LivingEntity target) {
|
||||
Player player = getPlayer();
|
||||
|
||||
if (SkillUtils.activationSuccessful(player, skill, Swords.bleedMaxChance, Swords.bleedMaxBonusLevel)) {
|
||||
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Swords.bleedMaxChance, Swords.bleedMaxBonusLevel)) {
|
||||
|
||||
if (getSkillLevel() >= Swords.bleedMaxBonusLevel) {
|
||||
BleedTimerTask.add(target, Swords.bleedMaxTicks);
|
||||
@@ -34,14 +52,14 @@ public class SwordsManager extends SkillManager {
|
||||
BleedTimerTask.add(target, Swords.bleedBaseTicks);
|
||||
}
|
||||
|
||||
if (getProfile().useChatNotifications()) {
|
||||
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleeding"));
|
||||
if (mcMMOPlayer.useChatNotifications()) {
|
||||
getPlayer().sendMessage(LocaleLoader.getString("Swords.Combat.Bleeding"));
|
||||
}
|
||||
|
||||
if (target instanceof Player) {
|
||||
Player defender = (Player) target;
|
||||
|
||||
if (UserManager.getPlayer(defender).getProfile().useChatNotifications()) {
|
||||
if (UserManager.getPlayer(defender).useChatNotifications()) {
|
||||
defender.sendMessage(LocaleLoader.getString("Swords.Combat.Bleeding.Started"));
|
||||
}
|
||||
}
|
||||
@@ -49,7 +67,7 @@ public class SwordsManager extends SkillManager {
|
||||
}
|
||||
|
||||
public void counterAttackChecks(LivingEntity attacker, int damage) {
|
||||
if (SkillUtils.activationSuccessful(getPlayer(), skill, Swords.counterAttackMaxChance, Swords.counterAttackMaxBonusLevel)) {
|
||||
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Swords.counterAttackMaxChance, Swords.counterAttackMaxBonusLevel)) {
|
||||
CombatUtils.dealDamage(attacker, damage / Swords.counterAttackModifier);
|
||||
|
||||
getPlayer().sendMessage(LocaleLoader.getString("Swords.Combat.Countered"));
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.AnimalTamer;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Tameable;
|
||||
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
|
||||
public class BeastLoreEventHandler {
|
||||
private Player player;
|
||||
private LivingEntity livingEntity;
|
||||
private Tameable beast;
|
||||
|
||||
protected BeastLoreEventHandler(Player player, LivingEntity livingEntity) {
|
||||
this.player = player;
|
||||
this.livingEntity = livingEntity;
|
||||
this.beast = (Tameable) livingEntity;
|
||||
}
|
||||
|
||||
protected void sendInspectMessage() {
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String message = LocaleLoader.getString("Combat.BeastLore") + " ";
|
||||
|
||||
if (beast.isTamed()) {
|
||||
message = message.concat(LocaleLoader.getString("Combat.BeastLoreOwner", getOwnerName()) + " ");
|
||||
}
|
||||
|
||||
message = message.concat(LocaleLoader.getString("Combat.BeastLoreHealth", livingEntity.getHealth(), livingEntity.getMaxHealth()));
|
||||
player.sendMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of a tameable animal's owner.
|
||||
*
|
||||
* @return the name of the animal's owner
|
||||
*/
|
||||
private String getOwnerName() {
|
||||
AnimalTamer tamer = beast.getOwner();
|
||||
|
||||
if (tamer instanceof Player) {
|
||||
return ((Player) tamer).getName();
|
||||
}
|
||||
else if (tamer instanceof OfflinePlayer) {
|
||||
return ((OfflinePlayer) tamer).getName();
|
||||
}
|
||||
|
||||
return "Unknown Master";
|
||||
}
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Ocelot;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Tameable;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
|
||||
public class CallOfTheWildEventHandler {
|
||||
protected Player player;
|
||||
protected ItemStack inHand;
|
||||
protected EntityType type;
|
||||
protected int summonAmount;
|
||||
|
||||
protected CallOfTheWildEventHandler(Player player, EntityType type, int summonAmount) {
|
||||
this.player = player;
|
||||
this.inHand = player.getItemInHand();
|
||||
this.type = type;
|
||||
this.summonAmount = summonAmount;
|
||||
}
|
||||
|
||||
protected void sendInsufficientAmountMessage() {
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
player.sendMessage(LocaleLoader.getString("Skills.NeedMore", StringUtils.getPrettyItemString(inHand.getTypeId())));
|
||||
}
|
||||
|
||||
protected boolean nearbyEntityExists() {
|
||||
if (player == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean entityExists = false;
|
||||
|
||||
for (Entity entity : player.getNearbyEntities(40, 40, 40)) {
|
||||
if (entity.getType() == type) {
|
||||
entityExists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return entityExists;
|
||||
}
|
||||
|
||||
protected void sendFailureMessage() {
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (type == EntityType.OCELOT) {
|
||||
player.sendMessage(LocaleLoader.getString("Taming.Summon.Fail.Ocelot"));
|
||||
}
|
||||
else {
|
||||
player.sendMessage(LocaleLoader.getString("Taming.Summon.Fail.Wolf"));
|
||||
}
|
||||
}
|
||||
|
||||
protected void spawnCreature() {
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
|
||||
entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
|
||||
|
||||
((Tameable) entity).setOwner(player);
|
||||
|
||||
if (type == EntityType.OCELOT) {
|
||||
((Ocelot) entity).setCatType(Ocelot.Type.getType(1 + Misc.getRandom().nextInt(3)));
|
||||
}
|
||||
else {
|
||||
entity.setHealth(entity.getMaxHealth());
|
||||
}
|
||||
}
|
||||
|
||||
protected void processResourceCost() {
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
int newAmount = inHand.getAmount() - summonAmount;
|
||||
|
||||
if (newAmount == 0) {
|
||||
player.setItemInHand(new ItemStack(Material.AIR));
|
||||
}
|
||||
else {
|
||||
player.getItemInHand().setAmount(inHand.getAmount() - summonAmount);
|
||||
}
|
||||
}
|
||||
|
||||
protected void sendSuccessMessage() {
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
player.sendMessage(LocaleLoader.getString("Taming.Summon.Complete"));
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import org.bukkit.entity.Wolf;
|
||||
|
||||
public class FastFoodServiceEventHandler {
|
||||
private Wolf wolf;
|
||||
|
||||
public FastFoodServiceEventHandler(Wolf wolf) {
|
||||
this.wolf = wolf;
|
||||
}
|
||||
|
||||
protected void modifyHealth(int damage) {
|
||||
int health = wolf.getHealth();
|
||||
int maxHealth = wolf.getMaxHealth();
|
||||
|
||||
if (health < maxHealth) {
|
||||
int newHealth = health + damage;
|
||||
|
||||
if (newHealth <= maxHealth) {
|
||||
wolf.setHealth(newHealth);
|
||||
}
|
||||
else {
|
||||
wolf.setHealth(maxHealth);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
public class GoreEventHandler {
|
||||
private TamingManager manager;
|
||||
private EntityDamageEvent event;
|
||||
private Entity entity;
|
||||
protected int skillModifier;
|
||||
|
||||
protected GoreEventHandler(TamingManager manager, EntityDamageEvent event) {
|
||||
this.manager = manager;
|
||||
this.event = event;
|
||||
this.entity = event.getEntity();
|
||||
calculateSkillModifier();
|
||||
}
|
||||
|
||||
protected void calculateSkillModifier() {
|
||||
this.skillModifier = SkillUtils.skillCheck(manager.getSkillLevel(), Taming.goreMaxBonusLevel);
|
||||
}
|
||||
|
||||
protected void modifyEventDamage() {
|
||||
event.setDamage(event.getDamage() * Taming.goreModifier);
|
||||
}
|
||||
|
||||
protected void sendAbilityMessage() {
|
||||
if (entity instanceof Player) {
|
||||
((Player) entity).sendMessage(LocaleLoader.getString("Combat.StruckByGore"));
|
||||
}
|
||||
|
||||
manager.getMcMMOPlayer().getPlayer().sendMessage(LocaleLoader.getString("Combat.Gore"));
|
||||
}
|
||||
|
||||
protected void applyBleed() {
|
||||
BleedTimerTask.add((LivingEntity) entity, Taming.goreBleedTicks);
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
|
||||
public class SharpenedClawsEventHandler {
|
||||
private EntityDamageEvent event;
|
||||
|
||||
public SharpenedClawsEventHandler(EntityDamageEvent event) {
|
||||
this.event = event;
|
||||
}
|
||||
|
||||
protected void modifyEventDamage() {
|
||||
event.setDamage(event.getDamage() + Taming.sharpenedClawsBonusDamage);
|
||||
}
|
||||
}
|
||||
@@ -2,28 +2,26 @@ package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import org.bukkit.EntityEffect;
|
||||
import org.bukkit.entity.AnimalTamer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Tameable;
|
||||
import org.bukkit.entity.Wolf;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
public class Taming {
|
||||
public static int environmentallyAwareUnlockLevel = AdvancedConfig.getInstance().getEnviromentallyAwareUnlock();
|
||||
public static int holyHoundUnlockLevel = AdvancedConfig.getInstance().getHolyHoundUnlock();
|
||||
|
||||
public static int fastFoodServiceUnlockLevel = AdvancedConfig.getInstance().getFastFoodUnlock();
|
||||
public static int fastFoodServiceUnlockLevel = AdvancedConfig.getInstance().getFastFoodUnlock();
|
||||
public static double fastFoodServiceActivationChance = AdvancedConfig.getInstance().getFastFoodChance();
|
||||
|
||||
public static int goreBleedTicks = AdvancedConfig.getInstance().getGoreBleedTicks();
|
||||
public static int goreBleedTicks = AdvancedConfig.getInstance().getGoreBleedTicks();
|
||||
public static int goreMaxBonusLevel = AdvancedConfig.getInstance().getGoreMaxBonusLevel();
|
||||
public static int goreModifier = AdvancedConfig.getInstance().getGoreModifier();
|
||||
public static double goreMaxChance = AdvancedConfig.getInstance().getGoreChanceMax();
|
||||
public static int goreModifier = AdvancedConfig.getInstance().getGoreModifier();
|
||||
public static double goreMaxChance = AdvancedConfig.getInstance().getGoreChanceMax();
|
||||
|
||||
public static int sharpenedClawsUnlockLevel = AdvancedConfig.getInstance().getSharpenedClawsUnlock();
|
||||
public static int sharpenedClawsBonusDamage = AdvancedConfig.getInstance().getSharpenedClawsBonus();
|
||||
@@ -41,22 +39,6 @@ public class Taming {
|
||||
return pet.isTamed() && owner instanceof Player && pet instanceof Wolf;
|
||||
}
|
||||
|
||||
public static boolean canUseThickFur(Player player) {
|
||||
return SkillUtils.unlockLevelReached(player, SkillType.TAMING, thickFurUnlockLevel) && Permissions.thickFur(player);
|
||||
}
|
||||
|
||||
public static boolean canUseEnvironmentallyAware(Player player) {
|
||||
return SkillUtils.unlockLevelReached(player, SkillType.TAMING, environmentallyAwareUnlockLevel) && Permissions.environmentallyAware(player);
|
||||
}
|
||||
|
||||
public static boolean canUseShockProof(Player player) {
|
||||
return SkillUtils.unlockLevelReached(player, SkillType.TAMING, shockProofUnlockLevel) && Permissions.shockProof(player);
|
||||
}
|
||||
|
||||
public static boolean canUseHolyHound(Player player) {
|
||||
return SkillUtils.unlockLevelReached(player, SkillType.TAMING, holyHoundUnlockLevel) && Permissions.holyHound(player);
|
||||
}
|
||||
|
||||
public static int processThickFur(Wolf wolf, int damage) {
|
||||
wolf.playEffect(EntityEffect.WOLF_SHAKE);
|
||||
return damage / thickFurModifier;
|
||||
@@ -67,24 +49,37 @@ public class Taming {
|
||||
wolf.setFireTicks(0);
|
||||
}
|
||||
|
||||
public static void processEnvironmentallyAware(Player player, Wolf wolf, int damage) {
|
||||
if (damage > wolf.getHealth()) {
|
||||
return;
|
||||
}
|
||||
|
||||
wolf.teleport(player);
|
||||
player.sendMessage(LocaleLoader.getString("Taming.Listener.Wolf"));
|
||||
}
|
||||
|
||||
public static int processShockProof(Wolf wolf, int damage) {
|
||||
wolf.playEffect(EntityEffect.WOLF_SHAKE);
|
||||
return damage / shockProofModifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the Sharpened Claws ability.
|
||||
*
|
||||
* @param event The event to modify
|
||||
*/
|
||||
public static int sharpenedClaws(int damage) {
|
||||
return damage + Taming.sharpenedClawsBonusDamage;
|
||||
}
|
||||
|
||||
public static void processHolyHound(Wolf wolf, int damage) {
|
||||
int modifiedHealth = Math.min(wolf.getHealth() + damage, wolf.getMaxHealth());
|
||||
|
||||
wolf.setHealth(modifiedHealth);
|
||||
wolf.playEffect(EntityEffect.WOLF_HEARTS);
|
||||
}
|
||||
|
||||
protected static String getCallOfTheWildFailureMessage(EntityType type) {
|
||||
switch (type) {
|
||||
case OCELOT:
|
||||
return LocaleLoader.getString("Taming.Summon.Fail.Ocelot");
|
||||
|
||||
case WOLF:
|
||||
return LocaleLoader.getString("Taming.Summon.Fail.Wolf");
|
||||
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Ocelot;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Tameable;
|
||||
import org.bukkit.entity.Wolf;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
public class TamingManager extends SkillManager {
|
||||
@@ -19,6 +26,38 @@ public class TamingManager extends SkillManager {
|
||||
super(mcMMOPlayer, SkillType.TAMING);
|
||||
}
|
||||
|
||||
public boolean canUseThickFur() {
|
||||
return getSkillLevel() >= Taming.thickFurUnlockLevel && Permissions.thickFur(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseEnvironmentallyAware() {
|
||||
return getSkillLevel() >= Taming.environmentallyAwareUnlockLevel && Permissions.environmentallyAware(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseShockProof() {
|
||||
return getSkillLevel() >= Taming.shockProofUnlockLevel && Permissions.shockProof(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseHolyHound() {
|
||||
return getSkillLevel() >= Taming.holyHoundUnlockLevel && Permissions.holyHound(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseFastFoodService() {
|
||||
return getSkillLevel() >= Taming.fastFoodServiceUnlockLevel && Permissions.fastFoodService(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseSharpenedClaws() {
|
||||
return getSkillLevel() >= Taming.sharpenedClawsUnlockLevel && Permissions.sharpenedClaws(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseGore() {
|
||||
return Permissions.gore(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseBeastLore() {
|
||||
return Permissions.beastLore(getPlayer());
|
||||
}
|
||||
|
||||
/**
|
||||
* Award XP for taming.
|
||||
*
|
||||
@@ -46,7 +85,7 @@ public class TamingManager extends SkillManager {
|
||||
* @param damage The damage being absorbed by the wolf
|
||||
*/
|
||||
public void fastFoodService(Wolf wolf, int damage) {
|
||||
if (SkillUtils.activationSuccessful(getPlayer(), skill, Taming.fastFoodServiceActivationChance)) {
|
||||
if (Taming.fastFoodServiceActivationChance > Misc.getRandom().nextInt(getActivationChance())) {
|
||||
|
||||
int health = wolf.getHealth();
|
||||
int maxHealth = wolf.getMaxHealth();
|
||||
@@ -58,34 +97,24 @@ public class TamingManager extends SkillManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the Sharpened Claws ability.
|
||||
*
|
||||
* @param event The event to modify
|
||||
*/
|
||||
public void sharpenedClaws(EntityDamageEvent event) {
|
||||
SharpenedClawsEventHandler eventHandler = new SharpenedClawsEventHandler(event);
|
||||
eventHandler.modifyEventDamage();
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the Gore ability.
|
||||
*
|
||||
* @param event The event to modify
|
||||
*/
|
||||
public void gore(EntityDamageEvent event) {
|
||||
GoreEventHandler eventHandler = new GoreEventHandler(this, event);
|
||||
public int gore(LivingEntity target, int damage) {
|
||||
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Taming.goreMaxChance, Taming.goreMaxBonusLevel)) {
|
||||
BleedTimerTask.add(target, Taming.goreBleedTicks);
|
||||
|
||||
float chance = (float) ((Taming.goreMaxChance / Taming.goreMaxBonusLevel) * getSkillLevel());
|
||||
if (chance > Taming.goreMaxChance) {
|
||||
chance = (float) Taming.goreMaxChance;
|
||||
if (target instanceof Player) {
|
||||
((Player) target).sendMessage(LocaleLoader.getString("Combat.StruckByGore"));
|
||||
}
|
||||
|
||||
getPlayer().sendMessage(LocaleLoader.getString("Combat.Gore"));
|
||||
return damage * Taming.goreModifier;
|
||||
}
|
||||
|
||||
if (chance > Misc.getRandom().nextInt(activationChance)) {
|
||||
eventHandler.modifyEventDamage();
|
||||
eventHandler.applyBleed();
|
||||
eventHandler.sendAbilityMessage();
|
||||
}
|
||||
return damage;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -105,11 +134,31 @@ public class TamingManager extends SkillManager {
|
||||
/**
|
||||
* Handle the Beast Lore ability.
|
||||
*
|
||||
* @param livingEntity The entity to examine
|
||||
* @param target The entity to examine
|
||||
*/
|
||||
public void beastLore(LivingEntity livingEntity) {
|
||||
BeastLoreEventHandler eventHandler = new BeastLoreEventHandler(mcMMOPlayer.getPlayer(), livingEntity);
|
||||
eventHandler.sendInspectMessage();
|
||||
public void beastLore(LivingEntity target) {
|
||||
Player player = getPlayer();
|
||||
Tameable beast = (Tameable) target;
|
||||
|
||||
String message = LocaleLoader.getString("Combat.BeastLore") + " ";
|
||||
|
||||
if (beast.isTamed()) {
|
||||
message = message.concat(LocaleLoader.getString("Combat.BeastLoreOwner", beast.getOwner().getName()) + " ");
|
||||
}
|
||||
|
||||
message = message.concat(LocaleLoader.getString("Combat.BeastLoreHealth", target.getHealth(), target.getMaxHealth()));
|
||||
player.sendMessage(message);
|
||||
}
|
||||
|
||||
public void processEnvironmentallyAware(Wolf wolf, int damage) {
|
||||
if (damage > wolf.getHealth()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Player owner = getPlayer();
|
||||
|
||||
wolf.teleport(owner);
|
||||
owner.sendMessage(LocaleLoader.getString("Taming.Listener.Wolf"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,27 +168,36 @@ public class TamingManager extends SkillManager {
|
||||
* @param summonAmount The amount of material needed to summon the entity
|
||||
*/
|
||||
private void callOfTheWild(EntityType type, int summonAmount) {
|
||||
if (!Permissions.callOfTheWild(mcMMOPlayer.getPlayer())) {
|
||||
Player player = getPlayer();
|
||||
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
int heldItemAmount = heldItem.getAmount();
|
||||
|
||||
if (heldItemAmount < summonAmount) {
|
||||
player.sendMessage(LocaleLoader.getString("Skills.NeedMore", StringUtils.getPrettyItemString(heldItem.getTypeId())));
|
||||
return;
|
||||
}
|
||||
|
||||
CallOfTheWildEventHandler eventHandler = new CallOfTheWildEventHandler(mcMMOPlayer.getPlayer(), type, summonAmount);
|
||||
|
||||
ItemStack inHand = eventHandler.inHand;
|
||||
int inHandAmount = inHand.getAmount();
|
||||
|
||||
if (inHandAmount < summonAmount) {
|
||||
eventHandler.sendInsufficientAmountMessage();
|
||||
return;
|
||||
for (Entity entity : player.getNearbyEntities(40, 40, 40)) {
|
||||
if (entity.getType() == type) {
|
||||
player.sendMessage(Taming.getCallOfTheWildFailureMessage(type));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (eventHandler.nearbyEntityExists()) {
|
||||
eventHandler.sendFailureMessage();
|
||||
LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
|
||||
|
||||
entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue);
|
||||
((Tameable) entity).setOwner(player);
|
||||
|
||||
if (type == EntityType.OCELOT) {
|
||||
((Ocelot) entity).setCatType(Ocelot.Type.getType(1 + Misc.getRandom().nextInt(3)));
|
||||
}
|
||||
else {
|
||||
eventHandler.spawnCreature();
|
||||
eventHandler.processResourceCost();
|
||||
eventHandler.sendSuccessMessage();
|
||||
entity.setHealth(entity.getMaxHealth());
|
||||
}
|
||||
|
||||
player.setItemInHand(new ItemStack(heldItem.getType(), heldItemAmount - summonAmount));
|
||||
player.sendMessage(LocaleLoader.getString("Taming.Summon.Complete"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
package com.gmail.nossr50.skills.unarmed;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
import com.gmail.nossr50.events.skills.unarmed.McMMOPlayerDisarmEvent;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
@@ -19,13 +22,35 @@ public class UnarmedManager extends SkillManager {
|
||||
super(mcMMOPlayer, SkillType.UNARMED);
|
||||
}
|
||||
|
||||
public boolean canActivateAbility() {
|
||||
return mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && Permissions.berserk(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canUseIronArm() {
|
||||
return Permissions.bonusDamage(getPlayer(), skill);
|
||||
}
|
||||
|
||||
public boolean canUseBerserk() {
|
||||
return mcMMOPlayer.getAbilityMode(AbilityType.BERSERK) && Permissions.berserk(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canDisarm(LivingEntity target) {
|
||||
return target instanceof Player && ((Player) target).getItemInHand().getType() != Material.AIR && Permissions.disarm(getPlayer());
|
||||
}
|
||||
|
||||
public boolean canDeflect() {
|
||||
Player player = getPlayer();
|
||||
|
||||
return player.getItemInHand().getType() == Material.AIR && Permissions.arrowDeflect(player);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for disarm.
|
||||
*
|
||||
* @param defender The defending player
|
||||
*/
|
||||
public void disarmCheck(Player defender) {
|
||||
if (SkillUtils.activationSuccessful(getPlayer(), skill, Unarmed.disarmMaxChance, Unarmed.disarmMaxBonusLevel) && !hasIronGrip(defender)) {
|
||||
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Unarmed.disarmMaxChance, Unarmed.disarmMaxBonusLevel) && !hasIronGrip(defender)) {
|
||||
McMMOPlayerDisarmEvent disarmEvent = new McMMOPlayerDisarmEvent(defender);
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(disarmEvent);
|
||||
|
||||
@@ -42,10 +67,8 @@ public class UnarmedManager extends SkillManager {
|
||||
* Check for arrow deflection.
|
||||
*/
|
||||
public boolean deflectCheck() {
|
||||
Player player = getPlayer();
|
||||
|
||||
if (SkillUtils.activationSuccessful(player, skill, Unarmed.deflectMaxChance, Unarmed.deflectMaxBonusLevel)) {
|
||||
player.sendMessage(LocaleLoader.getString("Combat.ArrowDeflect"));
|
||||
if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Unarmed.deflectMaxChance, Unarmed.deflectMaxBonusLevel)) {
|
||||
getPlayer().sendMessage(LocaleLoader.getString("Combat.ArrowDeflect"));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.metrics.MetricsManager;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
@@ -27,10 +26,9 @@ public final class ChimaeraWing {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
Block block = player.getLocation().getBlock();
|
||||
int amount = inHand.getAmount();
|
||||
long recentlyHurt = profile.getRecentlyHurt();
|
||||
long recentlyHurt = UserManager.getPlayer(player).getRecentlyHurt() * Misc.TIME_CONVERSION_FACTOR;
|
||||
|
||||
if (Permissions.chimaeraWing(player) && inHand.getTypeId() == Config.getInstance().getChimaeraItemId()) {
|
||||
if (SkillUtils.cooldownOver(recentlyHurt, 60, player) && amount >= Config.getInstance().getChimaeraCost()) {
|
||||
@@ -44,7 +42,7 @@ public final class ChimaeraWing {
|
||||
}
|
||||
}
|
||||
|
||||
if (player.getBedSpawnLocation() != null && player.getBedSpawnLocation().getBlock().getType() == Material.BED_BLOCK) {
|
||||
if (player.getBedSpawnLocation() != null) {
|
||||
player.teleport(player.getBedSpawnLocation());
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -331,7 +331,7 @@ public final class CommandRegistrationManager {
|
||||
public static void registerPtpCommand() {
|
||||
PluginCommand command = mcMMO.p.getCommand("ptp");
|
||||
command.setDescription(LocaleLoader.getString("Commands.Description.ptp"));
|
||||
command.setPermission("mcmmo.commands.ptp;mcmmo.commands.ptp.accept;mcmmo.commands.ptp.acceptall;mcmmo.commands.ptp.toggle");
|
||||
command.setPermission("mcmmo.commands.ptp"); // Only need the main one, not the individual ones for toggle/accept/acceptall
|
||||
command.setPermissionMessage(permissionsMessage);
|
||||
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "ptp", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"));
|
||||
command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "ptp", "<toggle|accept|acceptall>"));
|
||||
|
||||
@@ -21,20 +21,21 @@ import org.bukkit.inventory.ItemStack;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
|
||||
import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.party.PartyManager;
|
||||
import com.gmail.nossr50.runnables.skills.AwardCombatXpTask;
|
||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||
import com.gmail.nossr50.skills.SkillManagerStore;
|
||||
import com.gmail.nossr50.skills.axes.AxeManager;
|
||||
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
|
||||
import com.gmail.nossr50.skills.archery.ArcheryManager;
|
||||
import com.gmail.nossr50.skills.axes.AxesManager;
|
||||
import com.gmail.nossr50.skills.swords.Swords;
|
||||
import com.gmail.nossr50.skills.swords.SwordsManager;
|
||||
import com.gmail.nossr50.skills.taming.Taming;
|
||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.ModUtils;
|
||||
@@ -50,8 +51,6 @@ public final class CombatUtils {
|
||||
* @param event The event to run the combat checks on.
|
||||
*/
|
||||
public static void combatChecks(EntityDamageByEntityEvent event, Entity attacker, LivingEntity target) {
|
||||
boolean targetIsPlayer = (target.getType() == EntityType.PLAYER);
|
||||
boolean targetIsTamedPet = (target instanceof Tameable) ? ((Tameable) target).isTamed() : false;
|
||||
Entity damager = event.getDamager();
|
||||
|
||||
if (attacker instanceof Player && damager.getType() == EntityType.PLAYER) {
|
||||
@@ -61,121 +60,109 @@ public final class CombatUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
if (target instanceof Tameable && isFriendlyPet(player, (Tameable) target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
Material heldItemType = heldItem.getType();
|
||||
|
||||
if (ItemUtils.isSword(heldItem)) {
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!SkillType.SWORDS.getPVPEnabled()) {
|
||||
if (target instanceof Tameable) {
|
||||
if (isFriendlyPet(player, (Tameable) target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (heldItem.getType() == Material.BONE) {
|
||||
TamingManager tamingManager = mcMMOPlayer.getTamingManager();
|
||||
|
||||
if (tamingManager.canUseBeastLore()) {
|
||||
tamingManager.beastLore(target);
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!SkillType.SWORDS.getPVEEnabled()) {
|
||||
}
|
||||
|
||||
if (ItemUtils.isSword(heldItem)) {
|
||||
if (!shouldProcessSkill(target, SkillType.SWORDS)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Permissions.skillEnabled(player, SkillType.SWORDS)) {
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
PlayerProfile profile = mcMMOPlayer.getProfile();
|
||||
String playerName = player.getName();
|
||||
boolean canSerratedStrike = Permissions.serratedStrikes(player); // So we don't have to check the same permission twice
|
||||
SwordsManager swordsManager = mcMMOPlayer.getSwordsManager();
|
||||
|
||||
if (profile.getToolPreparationMode(ToolType.SWORD) && canSerratedStrike) {
|
||||
SkillUtils.abilityCheck(player, SkillType.SWORDS);
|
||||
if (swordsManager.canActivateAbility()) {
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.SWORDS);
|
||||
}
|
||||
|
||||
if (Permissions.bleed(player)) {
|
||||
SkillManagerStore.getInstance().getSwordsManager(playerName).bleedCheck(target);
|
||||
if (swordsManager.canUseBleed()) {
|
||||
swordsManager.bleedCheck(target);
|
||||
}
|
||||
|
||||
if (profile.getAbilityMode(AbilityType.SERRATED_STRIKES) && canSerratedStrike) {
|
||||
SkillManagerStore.getInstance().getSwordsManager(playerName).serratedStrikes(target, event.getDamage());
|
||||
if (swordsManager.canUseSerratedStrike()) {
|
||||
swordsManager.serratedStrikes(target, event.getDamage());
|
||||
}
|
||||
|
||||
startGainXp(mcMMOPlayer, target, SkillType.SWORDS);
|
||||
}
|
||||
}
|
||||
else if (ItemUtils.isAxe(heldItem)) {
|
||||
if (((targetIsPlayer || targetIsTamedPet) && !SkillType.AXES.getPVPEnabled()) || (!targetIsPlayer && !targetIsTamedPet && !SkillType.AXES.getPVEEnabled())) {
|
||||
if (!shouldProcessSkill(target, SkillType.AXES)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Permissions.skillEnabled(player, SkillType.AXES)) {
|
||||
AxeManager axeManager = SkillManagerStore.getInstance().getAxeManager(player.getName());
|
||||
AxesManager axesManager = mcMMOPlayer.getAxesManager();
|
||||
|
||||
if (axeManager.canActivateAbility()) {
|
||||
SkillUtils.abilityCheck(player, SkillType.AXES);
|
||||
if (axesManager.canActivateAbility()) {
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.AXES);
|
||||
}
|
||||
|
||||
if (axeManager.canUseAxeMastery()) {
|
||||
event.setDamage(axeManager.axeMasteryCheck(event.getDamage()));
|
||||
if (axesManager.canUseAxeMastery()) {
|
||||
event.setDamage(axesManager.axeMasteryCheck(event.getDamage()));
|
||||
}
|
||||
|
||||
if (axeManager.canCriticalHit(target)) {
|
||||
event.setDamage(axeManager.criticalHitCheck(target, event.getDamage()));
|
||||
if (axesManager.canCriticalHit(target)) {
|
||||
event.setDamage(axesManager.criticalHitCheck(target, event.getDamage()));
|
||||
}
|
||||
|
||||
if (axeManager.canImpact(target)) {
|
||||
axeManager.impactCheck(target);
|
||||
if (axesManager.canImpact(target)) {
|
||||
axesManager.impactCheck(target);
|
||||
}
|
||||
else if (axeManager.canGreaterImpact(target)) {
|
||||
event.setDamage(axeManager.greaterImpactCheck(target, event.getDamage()));
|
||||
else if (axesManager.canGreaterImpact(target)) {
|
||||
event.setDamage(axesManager.greaterImpactCheck(target, event.getDamage()));
|
||||
}
|
||||
|
||||
if (axeManager.canUseSkullSplitter(target)) {
|
||||
axeManager.skullSplitterCheck(target, event.getDamage());
|
||||
if (axesManager.canUseSkullSplitter(target)) {
|
||||
axesManager.skullSplitterCheck(target, event.getDamage());
|
||||
}
|
||||
|
||||
startGainXp(axeManager.getMcMMOPlayer(), target, SkillType.AXES);
|
||||
startGainXp(mcMMOPlayer, target, SkillType.AXES);
|
||||
}
|
||||
}
|
||||
else if (heldItemType == Material.AIR) {
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!SkillType.UNARMED.getPVPEnabled()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!SkillType.UNARMED.getPVEEnabled()) {
|
||||
else if (heldItem.getType() == Material.AIR) {
|
||||
if (!shouldProcessSkill(target, SkillType.UNARMED)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Permissions.skillEnabled(player, SkillType.UNARMED)) {
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
PlayerProfile profile = mcMMOPlayer.getProfile();
|
||||
String playerName = player.getName();
|
||||
UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager();
|
||||
|
||||
boolean canBerserk = Permissions.berserk(player); // So we don't have to check the same permission twice
|
||||
|
||||
if (profile.getToolPreparationMode(ToolType.FISTS) && canBerserk) {
|
||||
SkillUtils.abilityCheck(player, SkillType.UNARMED);
|
||||
if (unarmedManager.canActivateAbility()) {
|
||||
SkillUtils.abilityCheck(mcMMOPlayer, SkillType.UNARMED);
|
||||
}
|
||||
|
||||
if (Permissions.bonusDamage(player, SkillType.UNARMED)) {
|
||||
event.setDamage(SkillManagerStore.getInstance().getUnarmedManager(playerName).ironArmCheck(event.getDamage()));
|
||||
if (unarmedManager.canUseIronArm()) {
|
||||
event.setDamage(unarmedManager.ironArmCheck(event.getDamage()));
|
||||
}
|
||||
|
||||
if (profile.getAbilityMode(AbilityType.BERSERK) && canBerserk) {
|
||||
event.setDamage(SkillManagerStore.getInstance().getUnarmedManager(playerName).berserkDamage(event.getDamage()));
|
||||
if (unarmedManager.canUseBerserk()) {
|
||||
event.setDamage(unarmedManager.berserkDamage(event.getDamage()));
|
||||
}
|
||||
|
||||
if (target instanceof Player && Permissions.disarm(player)) {
|
||||
Player defender = (Player) target;
|
||||
|
||||
if (defender.getItemInHand().getType() != Material.AIR) {
|
||||
SkillManagerStore.getInstance().getUnarmedManager(playerName).disarmCheck((Player) target);
|
||||
}
|
||||
if (unarmedManager.canDisarm(target)) {
|
||||
unarmedManager.disarmCheck((Player) target);
|
||||
}
|
||||
|
||||
startGainXp(mcMMOPlayer, target, SkillType.UNARMED);
|
||||
}
|
||||
}
|
||||
else if (heldItemType == Material.BONE && target instanceof Tameable && Permissions.beastLore(player)) {
|
||||
SkillManagerStore.getInstance().getTamingManager(player.getName()).beastLore(target);
|
||||
}
|
||||
}
|
||||
|
||||
switch (damager.getType()) {
|
||||
@@ -189,29 +176,24 @@ public final class CombatUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!SkillType.TAMING.getPVPEnabled()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!SkillType.TAMING.getPVEEnabled()) {
|
||||
if (!shouldProcessSkill(target, SkillType.TAMING)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Permissions.skillEnabled(master, SkillType.TAMING)) {
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(master);
|
||||
int skillLevel = SkillManagerStore.getInstance().getTamingManager(master.getName()).getSkillLevel();
|
||||
TamingManager tamingManager = mcMMOPlayer.getTamingManager();
|
||||
|
||||
if (skillLevel >= Taming.fastFoodServiceUnlockLevel && Permissions.fastFoodService(master)) {
|
||||
SkillManagerStore.getInstance().getTamingManager(master.getName()).fastFoodService(wolf, event.getDamage());
|
||||
if (tamingManager.canUseFastFoodService()) {
|
||||
tamingManager.fastFoodService(wolf, event.getDamage());
|
||||
}
|
||||
|
||||
if (skillLevel >= Taming.sharpenedClawsUnlockLevel && Permissions.sharpenedClaws(master)) {
|
||||
SkillManagerStore.getInstance().getTamingManager(master.getName()).sharpenedClaws(event);
|
||||
if (tamingManager.canUseSharpenedClaws()) {
|
||||
event.setDamage(Taming.sharpenedClaws(event.getDamage()));
|
||||
}
|
||||
|
||||
if (Permissions.gore(master)) {
|
||||
SkillManagerStore.getInstance().getTamingManager(master.getName()).gore(event);
|
||||
if (tamingManager.canUseGore()) {
|
||||
event.setDamage(tamingManager.gore(target, event.getDamage()));
|
||||
}
|
||||
|
||||
startGainXp(mcMMOPlayer, target, SkillType.TAMING);
|
||||
@@ -228,85 +210,79 @@ public final class CombatUtils {
|
||||
break;
|
||||
}
|
||||
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!SkillType.ARCHERY.getPVPEnabled()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!SkillType.ARCHERY.getPVEEnabled()) {
|
||||
return;
|
||||
if (!shouldProcessSkill(target, SkillType.ARCHERY)) {
|
||||
break;
|
||||
}
|
||||
|
||||
Player player = (Player) shooter;
|
||||
|
||||
if (Misc.isNPCEntity(player)) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (Permissions.skillEnabled(player, SkillType.ARCHERY)) {
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
ArcheryManager archeryManager = mcMMOPlayer.getArcheryManager();
|
||||
|
||||
if (archeryManager.canSkillShot()) {
|
||||
event.setDamage(archeryManager.skillShotCheck(event.getDamage()));
|
||||
}
|
||||
|
||||
if (target instanceof Player && SkillType.UNARMED.getPVPEnabled()) {
|
||||
UnarmedManager unarmedManager = UserManager.getPlayer((Player) target).getUnarmedManager();
|
||||
|
||||
if (unarmedManager.canDeflect()) {
|
||||
event.setCancelled(mcMMOPlayer.getUnarmedManager().deflectCheck());
|
||||
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (archeryManager.canDaze(target)) {
|
||||
event.setDamage(archeryManager.dazeCheck((Player) target, event.getDamage()));
|
||||
}
|
||||
|
||||
if (archeryManager.canTrackArrows()) {
|
||||
archeryManager.trackArrows(target);
|
||||
}
|
||||
|
||||
archeryManager.distanceXpBonus(target);
|
||||
startGainXp(mcMMOPlayer, target, SkillType.ARCHERY);
|
||||
}
|
||||
|
||||
archeryCheck((Player) shooter, target, event);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (targetIsPlayer) {
|
||||
if (target instanceof Player) {
|
||||
Player player = (Player) target;
|
||||
|
||||
if (Misc.isNPCEntity(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack heldItem = player.getItemInHand();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
AcrobaticsManager acrobaticsManager = mcMMOPlayer.getAcrobaticsManager();
|
||||
|
||||
if (SkillManagerStore.getInstance().getAcrobaticsManager(player.getName()).canDodge(damager)) {
|
||||
event.setDamage(SkillManagerStore.getInstance().getAcrobaticsManager(player.getName()).dodgeCheck(event.getDamage()));
|
||||
if (acrobaticsManager.canDodge(damager)) {
|
||||
event.setDamage(acrobaticsManager.dodgeCheck(event.getDamage()));
|
||||
}
|
||||
|
||||
if (damager instanceof Player) {
|
||||
if (SkillType.SWORDS.getPVPEnabled() && ItemUtils.isSword(heldItem) && Permissions.counterAttack(player)) {
|
||||
SkillManagerStore.getInstance().getSwordsManager(player.getName()).counterAttackChecks((LivingEntity) damager, event.getDamage());
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (SkillType.SWORDS.getPVEEnabled() && damager instanceof LivingEntity && ItemUtils.isSword(heldItem) && Permissions.counterAttack(player)) {
|
||||
SkillManagerStore.getInstance().getSwordsManager(player.getName()).counterAttackChecks((LivingEntity) damager, event.getDamage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process archery abilities.
|
||||
*
|
||||
* @param shooter The player shooting
|
||||
* @param target The defending entity
|
||||
* @param event The event to run the archery checks on.
|
||||
*/
|
||||
private static void archeryCheck(Player shooter, LivingEntity target, EntityDamageByEntityEvent event) {
|
||||
if (Misc.isNPCEntity(shooter)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Permissions.skillEnabled(shooter, SkillType.ARCHERY)) {
|
||||
String playerName = shooter.getName();
|
||||
|
||||
if (SkillManagerStore.getInstance().getArcheryManager(playerName).canSkillShot()) {
|
||||
event.setDamage(SkillManagerStore.getInstance().getArcheryManager(playerName).skillShotCheck(event.getDamage()));
|
||||
}
|
||||
|
||||
if (target instanceof Player && SkillType.UNARMED.getPVPEnabled() && ((Player) target).getItemInHand().getType() == Material.AIR && Permissions.arrowDeflect((Player) target)) {
|
||||
event.setCancelled(SkillManagerStore.getInstance().getUnarmedManager(((Player) target).getName()).deflectCheck());
|
||||
|
||||
if (event.isCancelled()) {
|
||||
if (ItemUtils.isSword(player.getItemInHand())) {
|
||||
if (!shouldProcessSkill(target, SkillType.SWORDS)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (SkillManagerStore.getInstance().getArcheryManager(playerName).canDaze(target)) {
|
||||
event.setDamage(SkillManagerStore.getInstance().getArcheryManager(playerName).dazeCheck((Player) target, event.getDamage()));
|
||||
}
|
||||
SwordsManager swordsManager = mcMMOPlayer.getSwordsManager();
|
||||
|
||||
if (SkillManagerStore.getInstance().getArcheryManager(playerName).canTrackArrows()) {
|
||||
SkillManagerStore.getInstance().getArcheryManager(playerName).trackArrows(target);
|
||||
if (swordsManager.canUseCounterAttack(damager)) {
|
||||
swordsManager.counterAttackChecks((LivingEntity) damager, event.getDamage());
|
||||
}
|
||||
}
|
||||
|
||||
SkillManagerStore.getInstance().getArcheryManager(playerName).distanceXpBonus(target);
|
||||
startGainXp(UserManager.getPlayer(shooter), target, SkillType.ARCHERY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -437,7 +413,7 @@ public final class CombatUtils {
|
||||
|
||||
Player defender = (Player) target;
|
||||
|
||||
if (System.currentTimeMillis() >= UserManager.getPlayer(defender).getProfile().getRespawnATS() + 5) {
|
||||
if (System.currentTimeMillis() >= UserManager.getPlayer(defender).getRespawnATS() + 5) {
|
||||
baseXP = 20 * Config.getInstance().getPlayerVersusPlayerXP();
|
||||
}
|
||||
}
|
||||
@@ -525,7 +501,7 @@ public final class CombatUtils {
|
||||
if (entity instanceof Player) {
|
||||
Player defender = (Player) entity;
|
||||
|
||||
if (!defender.getWorld().getPVP() || defender == player || UserManager.getPlayer(defender).getProfile().getGodMode()) {
|
||||
if (!defender.getWorld().getPVP() || defender == player || UserManager.getPlayer(defender).getGodMode()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -597,4 +573,17 @@ public final class CombatUtils {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean shouldProcessSkill(Entity target, SkillType skill) {
|
||||
boolean process;
|
||||
|
||||
if (target instanceof Player || (target instanceof Tameable && ((Tameable) target).isTamed())) {
|
||||
process = skill.getPVPEnabled();
|
||||
}
|
||||
else {
|
||||
process = skill.getPVEEnabled();
|
||||
}
|
||||
|
||||
return process;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.config.HiddenConfig;
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
@@ -87,17 +88,18 @@ public class SkillUtils {
|
||||
/**
|
||||
* Sends a message to the player when the cooldown expires.
|
||||
*
|
||||
* @param player The player to send a message to
|
||||
* @param profile The profile of the player
|
||||
* @param mcMMOPlayer The player to send a message to
|
||||
* @param ability The ability to watch cooldowns for
|
||||
*/
|
||||
public static void watchCooldown(Player player, PlayerProfile profile, AbilityType ability) {
|
||||
if (player == null || profile == null || ability == null) {
|
||||
public static void watchCooldown(McMMOPlayer mcMMOPlayer, AbilityType ability) {
|
||||
if (mcMMOPlayer == null || ability == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!profile.getAbilityInformed(ability) && cooldownOver(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
|
||||
profile.setAbilityInformed(ability, true);
|
||||
Player player = mcMMOPlayer.getPlayer();
|
||||
|
||||
if (!mcMMOPlayer.getAbilityInformed(ability) && cooldownOver(mcMMOPlayer.getProfile().getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
|
||||
mcMMOPlayer.setAbilityInformed(ability, true);
|
||||
player.sendMessage(ability.getAbilityRefresh());
|
||||
}
|
||||
}
|
||||
@@ -113,7 +115,7 @@ public class SkillUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
AbilityType ability = skill.getAbility();
|
||||
ToolType tool = skill.getTool();
|
||||
ItemStack inHand = player.getItemInHand();
|
||||
@@ -122,29 +124,26 @@ public class SkillUtils {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check if any abilities are active */
|
||||
if (profile == null) {
|
||||
if (!mcMMOPlayer.getAbilityUse()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!profile.getAbilityUse()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (AbilityType x : AbilityType.values()) {
|
||||
if (profile.getAbilityMode(x)) {
|
||||
for (AbilityType abilityType : AbilityType.values()) {
|
||||
if (mcMMOPlayer.getAbilityMode(abilityType)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
PlayerProfile playerProfile = mcMMOPlayer.getProfile();
|
||||
|
||||
/*
|
||||
* Woodcutting & Axes need to be treated differently.
|
||||
* Basically the tool always needs to ready and we check to see if the cooldown is over when the user takes action
|
||||
*/
|
||||
if (ability.getPermissions(player) && tool.inHand(inHand) && !profile.getToolPreparationMode(tool)) {
|
||||
if (ability.getPermissions(player) && tool.inHand(inHand) && !mcMMOPlayer.getToolPreparationMode(tool)) {
|
||||
if (skill != SkillType.WOODCUTTING && skill != SkillType.AXES) {
|
||||
if (!profile.getAbilityMode(ability) && !cooldownOver(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
|
||||
player.sendMessage(LocaleLoader.getString("Skills.TooTired", calculateTimeLeft(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)));
|
||||
if (!mcMMOPlayer.getAbilityMode(ability) && !cooldownOver(playerProfile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
|
||||
player.sendMessage(LocaleLoader.getString("Skills.TooTired", calculateTimeLeft(playerProfile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -153,39 +152,36 @@ public class SkillUtils {
|
||||
player.sendMessage(tool.getRaiseTool());
|
||||
}
|
||||
|
||||
profile.setToolPreparationATS(tool, System.currentTimeMillis());
|
||||
profile.setToolPreparationMode(tool, true);
|
||||
mcMMOPlayer.setToolPreparationATS(tool, System.currentTimeMillis());
|
||||
mcMMOPlayer.setToolPreparationMode(tool, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Monitors various things relating to skill abilities.
|
||||
*
|
||||
* @param player The player using the skill
|
||||
* @param mcMMOPlayer The player using the skill
|
||||
* @param profile The profile of the player
|
||||
* @param curTime The current system time
|
||||
* @param skill The skill being monitored
|
||||
*/
|
||||
public static void monitorSkill(Player player, PlayerProfile profile, long curTime, SkillType skill) {
|
||||
public static void monitorSkill(McMMOPlayer mcMMOPlayer, long curTime, SkillType skill) {
|
||||
final int FOUR_SECONDS = 4000;
|
||||
|
||||
ToolType tool = skill.getTool();
|
||||
AbilityType ability = skill.getAbility();
|
||||
|
||||
if (profile == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (profile.getToolPreparationMode(tool) && curTime - (profile.getToolPreparationATS(tool) * Misc.TIME_CONVERSION_FACTOR) >= FOUR_SECONDS) {
|
||||
profile.setToolPreparationMode(tool, false);
|
||||
if (mcMMOPlayer.getToolPreparationMode(tool) && curTime - (mcMMOPlayer.getToolPreparationATS(tool) * Misc.TIME_CONVERSION_FACTOR) >= FOUR_SECONDS) {
|
||||
mcMMOPlayer.setToolPreparationMode(tool, false);
|
||||
|
||||
if (Config.getInstance().getAbilityMessagesEnabled()) {
|
||||
player.sendMessage(tool.getLowerTool());
|
||||
mcMMOPlayer.getPlayer().sendMessage(tool.getLowerTool());
|
||||
}
|
||||
}
|
||||
|
||||
AbilityType ability = skill.getAbility();
|
||||
Player player = mcMMOPlayer.getPlayer();
|
||||
|
||||
if (ability.getPermissions(player)) {
|
||||
if (profile.getAbilityMode(ability) && (profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR) <= curTime) {
|
||||
if (mcMMOPlayer.getAbilityMode(ability) && (mcMMOPlayer.getProfile().getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR) <= curTime) {
|
||||
if (ability == AbilityType.BERSERK) {
|
||||
player.setCanPickupItems(true);
|
||||
}
|
||||
@@ -193,12 +189,12 @@ public class SkillUtils {
|
||||
handleAbilitySpeedDecrease(player);
|
||||
}
|
||||
|
||||
profile.setAbilityMode(ability, false);
|
||||
profile.setAbilityInformed(ability, false);
|
||||
mcMMOPlayer.setAbilityMode(ability, false);
|
||||
mcMMOPlayer.setAbilityInformed(ability, false);
|
||||
|
||||
ParticleEffectUtils.playAbilityDisabledEffect(player);
|
||||
|
||||
if (profile.useChatNotifications()) {
|
||||
if (mcMMOPlayer.useChatNotifications()) {
|
||||
player.sendMessage(ability.getAbilityOff());
|
||||
}
|
||||
|
||||
@@ -368,40 +364,42 @@ public class SkillUtils {
|
||||
/**
|
||||
* Check to see if an ability can be activated.
|
||||
*
|
||||
* @param player The player activating the ability
|
||||
* @param mcMMOPlayer The player activating the ability
|
||||
* @param type The skill the ability is based on
|
||||
*/
|
||||
public static void abilityCheck(Player player, SkillType type) {
|
||||
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
public static void abilityCheck(McMMOPlayer mcMMOPlayer, SkillType type) {
|
||||
ToolType tool = type.getTool();
|
||||
AbilityType ability = type.getAbility();
|
||||
|
||||
profile.setToolPreparationMode(tool, false);
|
||||
mcMMOPlayer.setToolPreparationMode(tool, false);
|
||||
|
||||
Player player = mcMMOPlayer.getPlayer();
|
||||
PlayerProfile playerProfile = mcMMOPlayer.getProfile();
|
||||
|
||||
/*
|
||||
* Axes and Woodcutting are odd because they share the same tool.
|
||||
* We show them the too tired message when they take action.
|
||||
*/
|
||||
if (type == SkillType.WOODCUTTING || type == SkillType.AXES) {
|
||||
if (!profile.getAbilityMode(ability) && !cooldownOver(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
|
||||
player.sendMessage(LocaleLoader.getString("Skills.TooTired", calculateTimeLeft(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)));
|
||||
if (!mcMMOPlayer.getAbilityMode(ability) && !cooldownOver(playerProfile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
|
||||
player.sendMessage(LocaleLoader.getString("Skills.TooTired", calculateTimeLeft(playerProfile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!profile.getAbilityMode(ability) && cooldownOver(profile.getSkillDATS(ability), ability.getCooldown(), player)) {
|
||||
int ticks = PerksUtils.handleActivationPerks(player, 2 + (profile.getSkillLevel(type) / AdvancedConfig.getInstance().getAbilityLength()), ability.getMaxTicks());
|
||||
if (!mcMMOPlayer.getAbilityMode(ability) && cooldownOver(playerProfile.getSkillDATS(ability), ability.getCooldown(), player)) {
|
||||
int ticks = PerksUtils.handleActivationPerks(player, 2 + (playerProfile.getSkillLevel(type) / AdvancedConfig.getInstance().getAbilityLength()), ability.getMaxTicks());
|
||||
|
||||
ParticleEffectUtils.playAbilityEnabledEffect(player);
|
||||
|
||||
if (profile.useChatNotifications()) {
|
||||
if (mcMMOPlayer.useChatNotifications()) {
|
||||
player.sendMessage(ability.getAbilityOn());
|
||||
}
|
||||
|
||||
SkillUtils.sendSkillMessage(player, ability.getAbilityPlayer(player));
|
||||
|
||||
profile.setSkillDATS(ability, System.currentTimeMillis() + (ticks * Misc.TIME_CONVERSION_FACTOR));
|
||||
profile.setAbilityMode(ability, true);
|
||||
playerProfile.setSkillDATS(ability, System.currentTimeMillis() + (ticks * Misc.TIME_CONVERSION_FACTOR));
|
||||
mcMMOPlayer.setAbilityMode(ability, true);
|
||||
|
||||
if (ability == AbilityType.BERSERK) {
|
||||
player.setCanPickupItems(false);
|
||||
@@ -514,14 +512,14 @@ public class SkillUtils {
|
||||
}
|
||||
}
|
||||
|
||||
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||
int ticks = 0;
|
||||
|
||||
if (profile.getAbilityMode(AbilityType.SUPER_BREAKER)) {
|
||||
ticks = ((int) (profile.getSkillDATS(AbilityType.SUPER_BREAKER) - System.currentTimeMillis())) / Misc.TIME_CONVERSION_FACTOR;
|
||||
if (mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) {
|
||||
ticks = ((int) (mcMMOPlayer.getProfile().getSkillDATS(AbilityType.SUPER_BREAKER) - System.currentTimeMillis())) / Misc.TIME_CONVERSION_FACTOR;
|
||||
}
|
||||
else if (profile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) {
|
||||
ticks = ((int) (profile.getSkillDATS(AbilityType.GIGA_DRILL_BREAKER) - System.currentTimeMillis())) / Misc.TIME_CONVERSION_FACTOR;
|
||||
else if (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) {
|
||||
ticks = ((int) (mcMMOPlayer.getProfile().getSkillDATS(AbilityType.GIGA_DRILL_BREAKER) - System.currentTimeMillis())) / Misc.TIME_CONVERSION_FACTOR;
|
||||
}
|
||||
|
||||
PotionEffect abilityBuff = new PotionEffect(PotionEffectType.FAST_DIGGING, duration + ticks, amplifier + 10);
|
||||
@@ -614,12 +612,8 @@ public class SkillUtils {
|
||||
return chance > Misc.getRandom().nextInt(activationChance);
|
||||
}
|
||||
|
||||
public static boolean activationSuccessful(Player player, SkillType skill, double chance) {
|
||||
return chance > Misc.getRandom().nextInt(PerksUtils.handleLuckyPerks(player, skill));
|
||||
}
|
||||
|
||||
public static boolean unlockLevelReached(Player player, SkillType skill, int unlockLevel) {
|
||||
return UserManager.getPlayer(player).getProfile().getSkillLevel(skill) > unlockLevel;
|
||||
public static boolean activationSuccessful(int skillLevel, int activationChance, double maxChance, int maxLevel) {
|
||||
return ((maxChance / maxLevel) * Math.min(skillLevel, maxLevel)) > Misc.getRandom().nextInt(activationChance);
|
||||
}
|
||||
|
||||
public static boolean treasureDropSuccessful(double dropChance, int activationChance) {
|
||||
|
||||
@@ -336,7 +336,7 @@ Experience:
|
||||
Wither: 7.0
|
||||
Witch: 4.0
|
||||
Iron_Golem: 2.0
|
||||
Wither_Skeleton: 4.0;
|
||||
Wither_Skeleton: 4.0
|
||||
#
|
||||
# Settings for commands
|
||||
###
|
||||
|
||||
@@ -32,7 +32,6 @@ Axes.Ability.Bonus.4=Vyssi ucinek
|
||||
Axes.Ability.Bonus.5=Zpusobi bonusove zraneni o velkosi {0} vsem neozbrojenym nepratelum
|
||||
Axes.Ability.Lower=[[GRAY]]**ODLOZIL JSI SVOU SEKERU**
|
||||
Axes.Ability.Ready=[[GREEN]]**P\u0158IPRAVUJE\u0160 SI SVOJ\u00cd SEKERU!**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]Zas\u00e1hnut ROZ\u0160T\u00cdPNUT\u00cdM!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]Byl jsi KRITICKY zasazen!
|
||||
Axes.Combat.CritChance=[[RED]]Sance na kriticky uder: [[YELLOW]]{0}%
|
||||
Axes.Combat.CriticalHit=[[RED]]KRITICK\u00dd Z\u00c1SAH!
|
||||
@@ -73,13 +72,16 @@ Excavation.Skills.GigaDrillBreaker.Other.Off=[[RED]]Ni\u010ditel hl\u00edny[[GRE
|
||||
Excavation.Skills.GigaDrillBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] pou\u017eil [[RED]]Giga Vrta\u010dku!
|
||||
Excavation.Skillup=[[YELLOW]]Dovednost v kopani byla navysena o {0}. Celkem ({1})
|
||||
Fishing.Ability.Info=[[RED]]Magick\u00fd lovec: [[GRAY]] **Zvy\u0161uje se s dovednost\u00ed Lovec poklad\u016f**
|
||||
Fishing.Ability.Locked.0=Uzam\u010deno do {0}+ schopnosti (Prot\u0159ep\u00e1n\u00ed)
|
||||
Fishing.Ability.Rank=[[RED]]Lovec Poklad\u016f Level: [[YELLOW]]{0}/5
|
||||
Fishing.Ability.FD=[[RED]]Ryb\u00e1\u0159\u016fv apetit: [[YELLOW]]Rank {0}
|
||||
Fishing.Effect.0=Lovec pokladu (pasivni)
|
||||
Fishing.Effect.1=Fish up misc. objects
|
||||
Fishing.Effect.2=Magicky Lovec
|
||||
Fishing.Effect.3=Na\u0161el si o\u010darovanou v\u011bc
|
||||
Fishing.Effect.4=Shake (vs. Entities)
|
||||
Fishing.Effect.5=Vyklepni p\u0159edm\u011bty z p\u0159\u00ed\u0161er s prutem
|
||||
Fishing.Effect.6=Ryb\u00e1\u0159\u016fv apetit
|
||||
Fishing.Enchant.Chance=[[RED]]\u0160ance na magick\u00e9ho lovce: [[YELLOW]]{0}
|
||||
Fishing.ItemFound=[[GRAY]]Nasel si poklad!
|
||||
Fishing.Listener=Rybareni:
|
||||
@@ -96,6 +98,7 @@ Herbalism.Ability.Ready=[[GREEN]]**PRIPRAVIL JSI SVOU MOTYKU**
|
||||
Herbalism.Effect.0=Green Terra (SCHOPNOST)
|
||||
Herbalism.Effect.1=\u0160\u00ed\u0159en\u00ed planety, 3x v\u00edce drop\u016f
|
||||
Herbalism.Effect.2=Zahradnik (Wheat)
|
||||
Herbalism.Effect.3=Automaticky sazi plodiny pri sklizeni
|
||||
Herbalism.Effect.4=Zahradn\u00edk (Cobble/Stone Brick/Dirt)
|
||||
Herbalism.Effect.5=Zar\u016fst cihly mechem, nebo nebo nechat vyr\u016fst tr\u00e1vu
|
||||
Herbalism.Effect.6=Farm\u00e1\u0159\u016fv apetit
|
||||
@@ -115,7 +118,7 @@ Mining.Ability.Lower=[[GRAY]]**SLOZIL SI SVUJ KRUMPAC**
|
||||
Mining.Ability.Ready=[[GREEN]]**KRUMPAC PRIPRAVEN**
|
||||
Mining.Effect.0=Super Breaker (SCHOPNOST)
|
||||
Mining.Effect.1=Rychlost+, sance na trojnasobny zisk
|
||||
Mining.Effect.2=Dvojnasobne zisky
|
||||
Mining.Effect.2=Dvojn\u00e1sobn\u00fd zisk
|
||||
Mining.Effect.3=Zdvojnasobi normalni zisk
|
||||
Mining.Effect.4=Tezeni vybuchem
|
||||
Mining.Effect.5=Bonusy za tezeni s TNT
|
||||
@@ -134,14 +137,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]M
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Schopnost [[YELLOW]]Super Breaker [[GREEN]]obnovena!
|
||||
Mining.Skillup=[[YELLOW]]Dovednost v dolovani byla navysena o {0}. Celkem ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**VYBUCH**
|
||||
Mining.Blast.Effect.0=+35% rud
|
||||
Mining.Blast.Effect.1=+40% rud
|
||||
Mining.Blast.Effect.2=+45% rud, bez suti
|
||||
Mining.Blast.Effect.3=+50% rud, bez suti
|
||||
Mining.Blast.Effect.4=+55% rud, bez suti, dvojit\u00e9 dropy
|
||||
Mining.Blast.Effect.5=+60% rud, bez suti, dvojit\u00e9 dropy
|
||||
Mining.Blast.Effect.6=+65% rud, bez suti, trojit\u00e9 dropy
|
||||
Mining.Blast.Effect.7=+70% rud, bez suti, trojit\u00e9 dropy
|
||||
Mining.Blast.Radius.Increase=[[RED]]Navyseni radiusu vybuchu: [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]V\u00fdbu\u0161n\u00e9 t\u011b\u017een\u00ed [[YELLOW]] Rank {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] pou\u017eil [[RED]]V\u00fdbu\u0161n\u00e9 T\u011b\u017een\u00ed!
|
||||
@@ -179,7 +174,7 @@ Repair.Skills.StackedItems=[[DARK_RED]]Nem\u016f\u017ee\u0161 opravovat nestacko
|
||||
Repair.Skills.Super.Chance=[[RED]]\u0160ance na superopravov\u00e1n\u00ed: [[YELLOW]]{0}
|
||||
Repair.Skillup=[[YELLOW]]Dovednost v opravovani byla navysena o {0}. Celkem ({1})
|
||||
Repair.Arcane.Chance.Downgrade=[[GRAY]]Sance na degradovani magicke sily predmetu: [[YELLOW]]{0}%
|
||||
Repair.Arcane.Chance.Success=[[GRAY]]Mira uspesnosti AF: [[YELLOW]]{0}%
|
||||
Repair.Arcane.Chance.Success=[[GRAY]]Pravd\u011bpodobnost \u00fasp\u011bchu AF: [[YELLOW]]{0}%
|
||||
Repair.Arcane.Downgrade=[[RED]]Magick\u00e1 s\u00edla tohoto p\u0159edm\u011btu zesl\u00e1bla.
|
||||
Repair.Arcane.Fail=[[RED]]Predmet ztratil navzdy svou magickou silu.
|
||||
Repair.Arcane.Lost=[[RED]]Nemel jsi dostatocnou dovednost pro zachovani ocarovani predmetu.
|
||||
@@ -217,6 +212,7 @@ Taming.Ability.Bonus.2=Husta srst
|
||||
Taming.Ability.Bonus.4=Otresuvzdorny
|
||||
Taming.Ability.Bonus.6=Nabrousene drapy
|
||||
Taming.Ability.Bonus.8=Rychl\u00e9 Ob\u010derstven\u00ed
|
||||
Taming.Ability.Bonus.9={0} \u0161ance na vyl\u00e9\u010den\u00ed p\u0159i \u00fatoku
|
||||
Taming.Combat.Chance.Gore=[[RED]]\u0160ance na nabodnut\u00ed: [[YELLOW]]{0}
|
||||
Taming.Effect.0=Tradice \u0161elem
|
||||
Taming.Effect.1=Na\u0159\u00edznut\u00ed kost\u00ed kontroluje vlky & oceloty
|
||||
@@ -293,9 +289,7 @@ Combat.ArrowDeflect=[[WHITE]]**SIP VYCHYLEN**
|
||||
Combat.BeastLore=[[GREEN]]**TRADICE SELEM**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Zivoty ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Vlastn\u00edk ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Byl jsi zasazen horicim sipem!
|
||||
Combat.Gore=[[GREEN]]**PRUNIK**
|
||||
Combat.Ignition=[[RED]]**VZPLANUTI**
|
||||
Combat.StruckByGore=[[RED]]**BYL JSI PROBODNUT**
|
||||
Combat.TargetDazed=C\u00edl byl [[DARK_RED]]Omr\u00e1\u010den
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Nejasne dotcen. Mas zavrat.
|
||||
@@ -314,6 +308,9 @@ Commands.Invite.Accepted=[[GREEN]]Pozvanka prijata. Pridal jsi se k party {0}
|
||||
Commands.Invite.Success=[[GREEN]]Pozv\u00e1nka \u00faspesne odesl\u00e1na.
|
||||
Commands.Leaderboards=<skill> <page> [[RED]]- Tabulka nejlep\u0161\u00edch
|
||||
Commands.mcgod=[[RED]]- Prepnout GodMod
|
||||
Commands.mchud.Invalid=Nespr\u00e1vn\u00fd typ HUD.
|
||||
Commands.mcrank.Heading=[[GOLD]]-=OSOBN\u00cd HODNOCEN\u00cd=-
|
||||
Commands.mctop.Tip=[[GOLD]]Tip: Pro osobn\u00ed statistiky pou\u017eij [[RED]]/mcrank[[GOLD]]!
|
||||
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - Modify target
|
||||
Commands.ModDescription=[[RED]]- Precti si strucny popis pluginu
|
||||
Commands.NoConsole=Tento prikaz nepodporuje pouziti z konzole.
|
||||
@@ -321,8 +318,10 @@ Commands.Other=[[GREEN]]--OSTATNI PRIKAZY--
|
||||
Commands.Party.Accept=[[RED]]- Potvrdit pozvanku do party
|
||||
Commands.Party.Chat.Off=Chat jenom pro partu [[RED]]Vypnuty
|
||||
Commands.Party.Chat.On=Party chat [[RED]]Off
|
||||
Commands.Party.Chat.Prefix=[[GREEN]]([[WHITE]]{0}[[GREEN]])
|
||||
Commands.Party.Commands=[[GREEN]]--P\u0158\u00cdKAZY PARTY--
|
||||
Commands.Party.Invite.0=[[RED]]VAROVANI: [[GREEN]]Obdrzel jsi pozvanku do party {0} od {1}
|
||||
Commands.Party.Rename=[[GRAY]]Jm\u00e9no party zm\u011bn\u011bno na: [[WHITE]]{0}
|
||||
Commands.Party.Kick=[[RED]]Byl jsi vyhozen z party {0}!
|
||||
Commands.Party.Leave=[[RED]]Opustil jsi party
|
||||
Commands.Party.None=[RED]]Nejsi v zadne party.
|
||||
@@ -332,12 +331,17 @@ Commands.Party.Toggle=[[RED]]- Zapnout party chat
|
||||
Commands.PowerLevel.Leaderboard=[[YELLOW]]--mcMMO[[BLUE]] Rebricek [[YELLOW]]Celkovych levelu--
|
||||
Commands.PowerLevel=[[DARK_RED]]CELKOVY LEVEL: [[GREEN]]{0}
|
||||
Commands.Reset.All=[[GREEN]] Vsechny vase dovednosti byli byli uspesne resetov\u00e1ny.
|
||||
Commands.Reset.Single=[[GREEN]] Vsechny vase dovednosti byly uspesne resetov\u00e1ny.
|
||||
Commands.Skill.Invalid=[[RED]]Neplatny nazev dovednosti!
|
||||
Commands.Skill.Leaderboard=[[YELLOW]]--mcMMO [[BLUE]]{0}[[YELLOW]] Tabulka nejlepsich--
|
||||
Commands.SkillInfo=/<skill> [[RED]]- Zjist\u00ed\u0161 bliz\u0161\u00ed informace o skillu
|
||||
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.Message=zprava
|
||||
Commands.Usage.Page=stranka
|
||||
Commands.Usage.Password=heslo
|
||||
Commands.Usage.Player=hrac
|
||||
mcMMO.NoInvites=[[RED]]Momentalne nemas zadne pozvanky
|
||||
mcMMO.NoPermission=[[DARK_RED]]Nedostatecna prava
|
||||
mcMMO.NoSkillNote=[[DARK_GRAY]]Pokud nemas pristup k schopnosti, nebude zobrazena.
|
||||
@@ -349,9 +353,12 @@ Party.Locked=[[RED]]Parta je zamnuta, pouze velitel party t\u011b m\u016f\u017ee
|
||||
Party.NotInYourParty=[[DARK_RED]]{0} nen\u00ed ve tv\u00e9 part\u011b.
|
||||
Party.Password.Set=[[GREEN]]Heslo do party nastaveno na {0}
|
||||
Party.Player.Invalid=[[RED]]Tohle neni platny hrac.
|
||||
Party.NotOnline=[[DARK_RED]]{0} nen\u00ed online!
|
||||
Party.Player.InSameParty=[[RED]]{0} u\u017e je na va\u0161\u00ed party!
|
||||
Party.PlayerNotInParty=[[DARK_RED]]{0} nen\u00ed na party
|
||||
Party.Teleport.Dead=[[RED]]Nemuzes se teleportovat k mrtvemu hraci.
|
||||
Party.Teleport.Hurt=[[RED]]Byl jsi zasa\u017een p\u0159ed {0} sekundami a nem\u016f\u017ee\u0161 se teleportovat.
|
||||
Party.Teleport.Player=[[GREEN]]Byl jsi teleportovan k {0}.
|
||||
Party.Teleport.Self=[[RED]]Nem\u016f\u017ee\u0161 se teleportovat s\u00e1m na sebe!
|
||||
Party.Teleport.Target=[[GREEN]]{0} se k tobe teleportoval.
|
||||
Party.Unlocked=[[GRAY]]Party je odemknuta
|
||||
Commands.XPGain.Acrobatics=Padani
|
||||
@@ -380,8 +387,10 @@ Effects.Level=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{
|
||||
Effects.Template=[[DARK_AQUA]]{0}: [[GREEN]]{1}
|
||||
Guides.Acrobatics=[[DARK_AQUA]]O akrobacii:\n[[YELLOW]]Akrobacie je um \u00fa\u017easn\u00e9ho pohybu v mcMMO.\n[[YELLOW]]D\u00e1v\u00e1 ti bonusy v boji a bonusy po\u0161kozen\u00ed v prost\u0159ed\u00ed.\n[[DARK_AQUA]]Zisk XP:\n[[YELLOW]]K z\u00edsk\u00e1n\u00ed XP v t\u00e9to dovednosti mus\u00ed\u0161 uhybat\n[[YELLOW]]p\u0159ed ranami nep\u0159\u00edtele, nebo p\u0159e\u017e\u00edvat p\u00e1dy.\n[[DARK_AQUA]]Jak fungujou kotrmelce?\n[[YELLOW]]M\u00e1\u0161 \u0161anci kdy\u017e pad\u00e1\u0161 zmen\u0161it \u0161kody, kter\u00e9\n[[YELLOW]]by ti zp\u016fsobily p\u00e1dy. Dr\u017e kl\u00e1vesu na skr\u010den\u00ed\n[[YELLOW]]p\u0159i p\u00e1du k v\u00fd\u0161en\u00ed \u0161ance na kotrmelec.\n[[YELLOW]]T\u00edm vznik\u00e1 P\u016fvabn\u00fd kotrmelec m\u00edsto standartn\u00edho.\n[[YELLOW]]P\u016fvabn\u00e9 kotrmelce jsou jako norm\u00e1ln\u00ed, ale m\u00e1\u0161 2x v\u011bt\u0161\u00ed \u0161anci\n[[YELLOW]]p\u0159e\u017e\u00edt p\u00e1d a jsou bezpe\u010dn\u011bj\u0161\u00ed ne\u017e norm\u00e1ln\u00ed\n[[YELLOW]]\u0160ance na kotrmelec jsou ovlivn\u011bny tv\u00fdmi dovednostmi\n[[DARK_AQUA]]Jak funguje \u00faskok?\n[[YELLOW]]\u00daskok je \u0161ance na rozp\u016flen\u00ed \u0161kod\n[[YELLOW]]kter\u00e9 by jsi z\u00edskal v boji.\n[[YELLOW]]Je ovlivn\u011bn tv\u00fdmi dovednostmi
|
||||
Guides.Axes=Pruvodce jiz brzy...
|
||||
Guides.Available=[[DARK_AQUA]]N\u00e1vod k {0} - napi\u0161te /{1} ? [page]
|
||||
Guides.Excavation=[[DARK_AQUA]]O kopani:\n[[YELLOW]]Kopani je cinnost vykonavana nicenim bloku hliny lopatou a nachazenim pokladu.\n[[YELLOW]]Nicenim bloku lopatou ziskavate sanci, ze naleznete poklady.\n[[YELLOW]]Cim dele tuhle cinnost provozujete, tim vic zvysujete svou sanci k naleznuti.\n[[DARK_AQUA]]Zisk dovednosti:\n[[YELLOW]]Pro zisk dovednosti v kopani musite nicit hlinene bloky lopatou.\n[[YELLOW]]Pro naleznuti pokladu muzou byt niceni jen nektere bloky.\n[[DARK_AQUA]]Seznam bloku se sanci pro nalezeni pokladu:\n[[YELLOW]]Trava, Hlina, Pisek, Jil, Sterk, Podhubi, Zvetrany pisek\n[[DARK_AQUA]]Jak pouzivat Giga Drill Breaker:\n[[YELLOW]]S lopatou v ruce a klikem pravym tlacidlem aktivujete svuj nastroj.\n[[YELLOW]]Once in this state you have about 4 seconds to make\n[[YELLOW]]contact with Excavation compatible materials this will\n[[YELLOW]]activate Giga Drill Breaker.\n[[DARK_AQUA]]What is Giga Drill Breaker?\n[[YELLOW]]Giga Drill Breaker is an ability with a cooldown\n[[YELLOW]]tied to Excavation skill. It triples your chance\n[[YELLOW]]of finding treasures and enables instant break\n[[YELLOW]]on Excavation materials.\n[[DARK_AQUA]]How does Treasure Hunter work?\n[[YELLOW]]Every possible treasure for Excavation has its own\n[[YELLOW]]skill level requirement for it to drop, as a result it\'s\n[[YELLOW]]difficult to say how much it is helping you.\n[[YELLOW]]Just keep in mind that the higher your Excavation skill\n[[YELLOW]]is, the more treasures that can be found.\n[[YELLOW]]And also keep in mind that each type of Excavation\n[[YELLOW]]compatible material has its own unique list of treasures.\n[[YELLOW]]In other words you will find different treasures in Dirt\n[[YELLOW]]than you would in Gravel.\n[[DARK_AQUA]]Notes about Excavation:\n[[YELLOW]]Excavation drops are completely customizeable\n[[YELLOW]]So results vary server to server.
|
||||
Guides.Mining=[[DARK_AQUA]]O Miningu:\n[[YELLOW]]Mining spo\u010d\u00edv\u00e1 v t\u011b\u017een\u00ed kamenu a rud. Poskytuje bonusy\n[[YELLOW]]v po\u010dtu materi\u00e1lu, kter\u00fd vyt\u011b\u017e\u00edte.\n\n[[DARK_AQUA]]Z\u00edskan\u00ed XP:\n[[YELLOW]]Aby jste dostali XP, mus\u00edte m\u00edt v ruce krump\u00e1\u010d.\n[[YELLOW]]XP v\u00e1m d\u00e1vaj\u00ed jenom jist\u00e9 bloky.\n\n[[DARK_AQUA]]Kompatibiln\u00ed materi\u00e1ly:\n[[YELLOW]]Stone, Coal Ore, Iron Ore, Gold Ore, Diamond Ore, Redstone Ore,\n[[YELLOW]]Lapis Ore, Obsidian, Mossy Cobblestone, Ender Stone,\n[[YELLOW]]Glowstone, a Netherrack.\n\n\n[[DARK_AQUA]]Jak pou\u017e\u00edt Super Breaker:\n[[YELLOW]]Dr\u017ete v ruce krump\u00e1\u010d a stisknete prav\u00e9 tla\u010ditko na my\u0161i.\n[[YELLOW]]Vr\u00e1mci \u010dty\u0159 sekund m\u00fa\u017eete buchnout do bloku, kter\u00fd je naps\u00e1n\n[[YELLOW]]v kompatibiln\u00edch materi\u00e1lech, kter\u00e9 aktivujou\n[[YELLOW]]Super Breaker.\n\n[[DARK_AQUA]]Co je to Super Breaker?\n[[YELLOW]]Super Breaker je schopnost, kter\u00e1 trv\u00e1 podle toho,\n[[YELLOW]]jak\u00fd m\u00e1te skill. Ztrojn\u00e1sobuje va\u0161i \u0161anci na z\u00edskan\u00ed extra v\u011bc\u00ed\n[[YELLOW]]a t\u011b\u017e\u00edte bloky na jednu r\u00e1nu.\n\n[[DARK_AQUA]]Jak pou\u017e\u00edt Blast Mining:\n[[YELLOW]]Kdy\u017e m\u00e1te v ruce odpalova\u010d, kter\u00fdm je flint and steel ve vychoz\u00edm nastaven\u00ed,\n[[YELLOW]]klikn\u011bte prav\u00fdm tla\u010ditkem na my\u0161i na TNT, a to zp\u016fsob\u00ed,\n[[YELLOW]]\u017ee hned bouchne.\n\n[[DARK_AQUA]]Jak funguje Blast Mining?\n[[YELLOW]]Blast Mining je schopnost, kter\u00e1 trv\u00e1 podle toho, jak\u00fd m\u00e1te\n[[YELLOW]]skill. D\u00e1va bonusy kdy\u017e t\u011b\u017e\u00edte pou\u017eit\u00edm TNT a umo\u017e\u0148uje v\u00e1m\n[[YELLOW]]d\u00e1lkov\u011b odp\u00e1lit TNT. Blast mining m\u00e1 3 \u010d\u00e1sti.\n[[YELLOW]]Prvn\u00ed \u010d\u00e1st je Bigger Bombs, kter\u00e1 zv\u011bt\u0161uje oblast v\u00fdbuchu.\n[[YELLOW]]Druh\u00e1 \u010d\u00e1st je Demolitions Expert, kter\u00e1 zvy\u0161uje po\u0161kozen\u00ed\n[[YELLOW]]v\u00fdbuchem TNT. T\u0159et\u00ed \u010d\u00e1st prost\u011b zvy\u0161uje mno\u017estvi rud, kter\u00e9\n[[YELLOW]]z\u00edsk\u00e1te z TNT a zni\u017euje su\u0165,\n[[YELLOW]]kter\u00e1 padne.
|
||||
Guides.Page.Invalid=Nespr\u00e1vn\u00e9 \u010d\u00edslo str\u00e1nky!
|
||||
Inspect.Offline=[[RED]]Nem\u00e1\u0161 pr\u00e1va kontrolovat hr\u00e1\u010de co nejsou online!
|
||||
Inspect.OfflineStats=mcMMO Statistiky pro offline hrace [[YELLOW]]{0}
|
||||
Inspect.Stats=[[GREEN]]mcMMO Statistiky pro [[YELLOW]]{0}
|
||||
@@ -401,3 +410,13 @@ Stats.Own.Stats=[[GREEN]][mcMMO] Statistiky
|
||||
Perks.xp.name=Zku\u0161enost
|
||||
Perks.xp.desc=Obdrzene {0}x Zkusenosti
|
||||
Perks.lucky.name=\u0160test\u00ed
|
||||
Perks.cooldowns.name=Rychle zotaveni
|
||||
Perks.activationtime.name=Vytrvalost
|
||||
Perks.activationtime.desc=Prodlu\u017euje pou\u017eit\u00ed schopnosti na {0} sekund.
|
||||
Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]Z\u00edskal jsi [[BLUE]]{0}[[DARK_AQUA]] level\u016f od [[YELLOW]]{1}.
|
||||
Spout.Donate=[[YELLOW]][mcMMO] P\u0159isp\u011bjte!
|
||||
Spout.Menu.HudButton.1=Typ HUD: {0}
|
||||
Spout.Menu.HudButton.2=Zm\u011b\u0148te si styl HUD!
|
||||
MOTD.Version=[[GOLD]][mcMMO] - verze [[DARK_AQUA]]{0}
|
||||
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - Web mcMMO
|
||||
Commands.Description.mcremove=Odstranit u\u017eivatele z datab\u00e1ze mcMMO
|
||||
|
||||
@@ -32,7 +32,6 @@ Axes.Ability.Bonus.4=Greater Impact
|
||||
Axes.Ability.Bonus.5=Deal {0} Bonus DMG to unarmored foes
|
||||
Axes.Ability.Lower=[[GRAY]]**YOU LOWER YOUR AXE**
|
||||
Axes.Ability.Ready=[[GREEN]]**YOU READY YOUR AXE**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]Struck by CLEAVE!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]You were CRITICALLY hit!
|
||||
Axes.Combat.CritChance=[[RED]]Chance to critically strike: [[YELLOW]]{0}
|
||||
Axes.Combat.CriticalHit=[[RED]]CRITICAL HIT!
|
||||
@@ -146,14 +145,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]S
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]] Eich [[YELLOW]] Super Torri\'r [[GREEN]] gallu ei hadnewyddu!
|
||||
Mining.Skillup=[[YELLOW]] sgiliau Mwyngloddio cynyddu {0}. Cyfanswm ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**BOOM**
|
||||
Mining.Blast.Effect.0=+35% ore yield
|
||||
Mining.Blast.Effect.1=+40% ore yield
|
||||
Mining.Blast.Effect.2=+45% ore yield, no debris
|
||||
Mining.Blast.Effect.3=+50% ore yield, no debris
|
||||
Mining.Blast.Effect.4=+55% ore yield, no debris, double drops
|
||||
Mining.Blast.Effect.5=+60% ore yield, no debris, double drops
|
||||
Mining.Blast.Effect.6=+65% ore yield, no debris, triple drops
|
||||
Mining.Blast.Effect.7=+70% ore yield, no debris, triple drops
|
||||
Mining.Blast.Radius.Increase=[[RED]] Chwyth Cynnydd Radiws [[YELLOW]] {0}
|
||||
Mining.Blast.Rank=[[RED]]Blast Mining: [[YELLOW]] Rank {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] has used [[RED]]Blast Mining!
|
||||
@@ -321,9 +312,7 @@ Combat.ArrowDeflect=[[WHITE]]**ARROW DEFLECT**
|
||||
Combat.BeastLore=[[GREEN]] ** bwystfil ll\u00ean **
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]] Iechyd ([[GREEN]] {0} [[DARK_AQUA]] / {1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Owner ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]You were struck by a burning arrow!
|
||||
Combat.Gore=[[GREEN]]**GORED**
|
||||
Combat.Ignition=[[RED]]**IGNITION**
|
||||
Combat.StruckByGore=[[RED]]**YOU HAVE BEEN GORED**
|
||||
Combat.TargetDazed=Target was [[DARK_RED]]Dazed
|
||||
Combat.TouchedFuzzy=[[DARK_RED]] cyffwrdd Fuzzy. Teimlo benysgafn.
|
||||
@@ -416,7 +405,6 @@ Party.Password.Incorrect=[[RED]]Party password is incorrect.
|
||||
Party.Password.Set=[[GREEN]] Blaid cyfrinair wedi ei osod i {0}
|
||||
Party.Player.Invalid=[[RED]] Nid yw hynny\'n chwaraewr ddilys.
|
||||
Party.Teleport.Dead=[[RED]] Ni allwch teleport y chwaraewr yn farw.
|
||||
Party.Teleport.Hurt=[[RED]]You\'ve been hurt in the last {0} seconds and cannnot teleport.
|
||||
Party.Teleport.Player=[[GREEN]]You have teleported to {0}.
|
||||
Party.Teleport.Self=[[RED]]You can\'t teleport to yourself!
|
||||
Party.Teleport.Target=[[GREEN]] {0} wedi teleported i chi.
|
||||
|
||||
@@ -32,7 +32,6 @@ Axes.Ability.Bonus.4=St\u00f8rre Slag
|
||||
Axes.Ability.Bonus.5=P\u00e5f\u00f8r {0} Bonus Skade til ubev\u00e6bnede fjender
|
||||
Axes.Ability.Lower=[[GRAY]]**DU S\u00c6NKER DIN \u00d8KSE**
|
||||
Axes.Ability.Ready=[[GREEN]]**DU G\u00d8R DIN \u00d8KSE KLAR**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]Du bliver hugget midt over!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]Du er blevet KRITISK ramt!
|
||||
Axes.Combat.CritChance=[[RED]]Chance for at ramme kritisk: [[YELLOW]]{0}
|
||||
Axes.Combat.CriticalHit=[[RED]]KRITISK SLAG!
|
||||
@@ -146,14 +145,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] har brugt [[RED]]
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Din [[YELLOW]]Super Smadrer [[GREEN]]evne er genindl\u00e6st!
|
||||
Mining.Skillup=[[YELLOW]]Minedriftsevne for\u00f8get med {0}. Total ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**BOOM**
|
||||
Mining.Blast.Effect.0=35% malm udbytte
|
||||
Mining.Blast.Effect.1=40% malm udbytte
|
||||
Mining.Blast.Effect.2=45% malm udbytte, ingen byggeaffald
|
||||
Mining.Blast.Effect.3=50% malm udbytte, ingen byggeaffald
|
||||
Mining.Blast.Effect.4=+55% malm udbytte, ingen byggeaffald, 2x udbytte
|
||||
Mining.Blast.Effect.5=+60% malm udbytte, ingen byggeaffald, 2x udbytte
|
||||
Mining.Blast.Effect.6=+65% malm udbytte, ingen byggeaffald, 3x udbytte
|
||||
Mining.Blast.Effect.7=+70% malm udbytte, ingen byggeaffald, 3x udbytte
|
||||
Mining.Blast.Radius.Increase=[[RED]]Eksplosions Radius For\u00f8gelse: [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]Blast Mining: [[YELLOW]] Rank {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] her brugt [[RED]]Blast Mining!
|
||||
@@ -320,9 +311,7 @@ Combat.ArrowDeflect=[[WHITE]]**UNDVIGER PIL**
|
||||
Combat.BeastLore=[[GREEN]]**TIGGENDE MONSTER**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Liv ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Ejer ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Du er blevet ramt af en brandene pil!
|
||||
Combat.Gore=[[GREEN]]**SPIDDET**
|
||||
Combat.Ignition=[[RED]]**ANT\u00c6NDING**
|
||||
Combat.StruckByGore=[[RED]]**DU ER BLEVET SPIDDET**
|
||||
Combat.TargetDazed=M\u00e5let er nu [[DARK_RED]]Bed\u00f8vet
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]R\u00f8rte Plysse. F\u00f8lte mig svimmel.
|
||||
@@ -417,7 +406,6 @@ Party.Password.Incorrect=[[RED]]Gruppe kodeord er forkert.
|
||||
Party.Password.Set=[[GREEN]]Gruppe adgangskode sat til {0}
|
||||
Party.Player.Invalid=[[RED]]Dette er ikke en rigtig spiller.
|
||||
Party.Teleport.Dead=[[RED]]Du kan ikke teleportere til en d\u00f8d spiller.
|
||||
Party.Teleport.Hurt=[[RED]]Du er blevet skadet infenfor de sidste {0} sekunder og kan ikke teleportere.
|
||||
Party.Teleport.Player=[[GREEN]]Du har teleporteret til {0}.
|
||||
Party.Teleport.Self=[[RED]]Du kan ikke teleportere dig selv!
|
||||
Party.Teleport.Target=[[GREEN]]{0} har teleporteret til dig.
|
||||
|
||||
@@ -32,7 +32,6 @@ Axes.Ability.Bonus.4=Wucht-Schlag
|
||||
Axes.Ability.Bonus.5=Veraursacht {0} Zusatz-Schaden gegen ungepanzerte Feinde
|
||||
Axes.Ability.Lower=[[GRAY]]**Du senkst deine Axt**
|
||||
Axes.Ability.Ready=[[GREEN]]**Deine Axt ist bereit**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]AUSGESCHALTET durch SCHLITZER!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]Du wurdest KRITISCH getroffen!
|
||||
Axes.Combat.CritChance=[[RED]]Chance auf kritischen Treffer: [[YELLOW]]{0}
|
||||
Axes.Combat.CriticalHit=[[RED]]KRITISCHER TREFFER!
|
||||
@@ -151,14 +150,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]S
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Dein [[YELLOW]]Super-Brecher [[GREEN]]ist wieder bereit!
|
||||
Mining.Skillup=[[YELLOW]]Bergbau Fertigkeit ist um {0} gestiegen. Gesamt ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**BOOM**
|
||||
Mining.Blast.Effect.0=+35% Erz-Ausbeute
|
||||
Mining.Blast.Effect.1=+40% Erz-Ausbeute
|
||||
Mining.Blast.Effect.2=+45% Erz-Ausbeute, kein Schutt
|
||||
Mining.Blast.Effect.3=+50% Erz-Ausbeute, kein Schutt
|
||||
Mining.Blast.Effect.4=+55% Erz-Ausbeute, kein Schutt, Doppel-Drops
|
||||
Mining.Blast.Effect.5=+60% Erz-Ausbeute, kein Schutt, Doppel-Drops
|
||||
Mining.Blast.Effect.6=+65% Erz-Ausbeute, kein Schutt, Dreifach-Drops
|
||||
Mining.Blast.Effect.7=+70% Erz-Ausbeute, kein Schutt, Dreifach-Drops
|
||||
Mining.Blast.Radius.Increase=[[RED]]Z\u00fcndstoff Radius Erh\u00f6hung: [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]Z\u00fcndstoff Rang:[[YELLOW]] {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] benutzte [[RED]]Z\u00fcndstoff!
|
||||
@@ -329,9 +320,7 @@ Combat.ArrowDeflect=[[WHITE]]**Pfeil ABGELENKT**
|
||||
Combat.BeastLore=[[GREEN]]**BESTIENKUNDE**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Gesundheit ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Besitzer ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Du wurdest von einem BRENNENDEM PFEIL getroffen!
|
||||
Combat.Gore=[[GREEN]]**AUFGESCHLITZT**
|
||||
Combat.Ignition=[[RED]]**ENTZ\u00dcNDUNG**
|
||||
Combat.StruckByGore=[[RED]]**du wurdest AUFGESCHLITZT**
|
||||
Combat.TargetDazed=Ziel wurde [[DARK_RED]]BET\u00c4UBT
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Ungl\u00fccklich ber\u00fchrt. Schwindelgef\u00fchl.
|
||||
@@ -426,7 +415,6 @@ Party.Password.Incorrect=[[RED]]Party password is incorrect.
|
||||
Party.Password.Set=[[GREEN]]Gruppen-Password ge\u00e4ndert zu: {0}
|
||||
Party.Player.Invalid=[[RED]]Dies ist kein g\u00fcltiger Spieler.
|
||||
Party.Teleport.Dead=[[RED]]Du kannst dich nicht zu toten Spielern teleportieren
|
||||
Party.Teleport.Hurt=[[RED]]Du wurdest in den letzten {0} Sekunden verletzt und kannst dich nicht teleportieren.
|
||||
Party.Teleport.Player=[[GREEN]]Du wurdest zu {0} teleportiert.
|
||||
Party.Teleport.Self=[[RED]]You can\'t teleport to yourself!
|
||||
Party.Teleport.Target=[[GREEN]]{0} hat sich zu dir teleportiert.
|
||||
|
||||
@@ -543,7 +543,7 @@ Party.Player.InSameParty=[[RED]]{0} already is in your party!
|
||||
Party.PlayerNotInParty=[[DARK_RED]]{0} is not in a party
|
||||
Party.Specify=[[RED]]You must specify a party.
|
||||
Party.Teleport.Dead=[[RED]]You can't teleport to a dead player.
|
||||
Party.Teleport.Hurt=[[RED]]You've been hurt in the last {0} seconds and cannnot teleport.
|
||||
Party.Teleport.Hurt=[[RED]]You have been hurt in the last {0} seconds and cannot teleport.
|
||||
Party.Teleport.Player=[[GREEN]]You have teleported to {0}.
|
||||
Party.Teleport.Self=[[RED]]You can't teleport to yourself!
|
||||
Party.Teleport.Target=[[GREEN]]{0} has teleported to you.
|
||||
|
||||
@@ -32,7 +32,6 @@ Axes.Ability.Bonus.4=Gran Impacto
|
||||
Axes.Ability.Bonus.5=Hacer {0} de da\u00f1o bonus a los enemigos sin armadura
|
||||
Axes.Ability.Lower=[[GRAY]]**BAJAS TU HACHA**
|
||||
Axes.Ability.Ready=[[GREEN]]**PREPARAS TU HACHA**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]\u00a1Golpeado por PARTIR!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]\u00a1Fuiste golpeado CR\u00cdTICAMENTE!
|
||||
Axes.Combat.CritChance=[[RED]]Probabilidad de golpe cr\u00edtico: [[YELLOW]]{0}%
|
||||
Axes.Combat.CriticalHit=[[RED]]\u00a1GOLPE CR\u00cdTICO!
|
||||
@@ -134,14 +133,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]\u00a1{0}[[DARK_GREEN]] us\u00f3 [[
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u00a1Tu habilidad de [[YELLOW]]S\u00faper Destructor [[GREEN]]est\u00e1 refrescada!
|
||||
Mining.Skillup=[[YELLOW]]Habilidad de Miner\u00eda incrementada en {0}. Total ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**BOOM**
|
||||
Mining.Blast.Effect.0=+35% de producci\u00f3n minera
|
||||
Mining.Blast.Effect.1=+40% de producci\u00f3n minera
|
||||
Mining.Blast.Effect.2=+45% de producci\u00f3n minera, sin residuos
|
||||
Mining.Blast.Effect.3=+50% de producci\u00f3n minera, sin residuos
|
||||
Mining.Blast.Effect.4=+55% de producci\u00f3n minera, sin residuos, doble drops
|
||||
Mining.Blast.Effect.5=+60% de producci\u00f3n minera, sin residuos, doble drops
|
||||
Mining.Blast.Effect.6=+65% de producci\u00f3n minera, sin residuos y triple drops
|
||||
Mining.Blast.Effect.7=+70% de producci\u00f3n minera, sin residuos, triple drops
|
||||
Mining.Blast.Radius.Increase=[[RED]]Incrementado Radio de Explosi\u00f3n: [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]Miner\u00eda Explosiva: [[YELLOW]] Rango {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]\u00a1{0}[[DARK_GREEN]] us\u00f3 [[RED]]Miner\u00eda Explosiva!
|
||||
@@ -290,9 +281,7 @@ Combat.ArrowDeflect=[[WHITE]]**FLECHA DESVIADA**
|
||||
Combat.BeastLore=[[GREEN]]**CONOCIMIENTO DE LA BESTIA**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Salud ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Due\u00f1o ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Has sido golpeado por una flecha ardiendo\\!
|
||||
Combat.Gore=[[GREEN]]**MORDISCO**
|
||||
Combat.Ignition=[[RED]]**IGNICION**
|
||||
Combat.StruckByGore=[[RED]]**FUISTE MORDISQUEADO**
|
||||
Combat.TargetDazed=El objetivo fue [[DARK_RED]]aturdido
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Est\u00e1s confuso. Te sientes mareado.
|
||||
@@ -346,7 +335,6 @@ Party.NotInYourParty=[[DARK_RED]]{0} no esta en tu fiesta
|
||||
Party.Password.Set=[[GREEN]]Contrase\u00f1a del grupo establecida: [[RED]]{0}
|
||||
Party.Player.Invalid=[[RED]]Ese no es un jugador v\u00e1lido.
|
||||
Party.Teleport.Dead=[[RED]]No te puedes teletransportar a un jugador muerto.
|
||||
Party.Teleport.Hurt=[[RED]]Fuiste herido en los \u00faltimos {0} segundos y no te puedes teletransportar.
|
||||
Party.Teleport.Player=[[GREEN]]Te teletransportaste a {0}.
|
||||
Party.Teleport.Target=[[GREEN]]{0} se teletransport\u00f3 a ti.
|
||||
Party.Unlocked=[[GRAY]]El grupo est\u00e1 desbloqueado
|
||||
|
||||
@@ -13,9 +13,7 @@ Combat.ArrowDeflect=[[WHITE]]**NUOLI TORJUTTU**
|
||||
Combat.BeastLore=[[GREEN]]**BEAST LORE**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Owner ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Palava nuoli osui sinuun\\!
|
||||
Combat.Gore=[[GREEN]]**PISTO**
|
||||
Combat.Ignition=[[RED]]**SYTYTYS**
|
||||
Combat.StruckByGore=[[RED]]**SINUA ON PISTETTY**
|
||||
Combat.TargetDazed=Kohde [[DARK_RED]]tyrm\u00e4tty
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]T\u00f6kk\u00e4sit P\u00f6rr\u00f6\u00e4. Tunsit huimauksen.
|
||||
|
||||
@@ -32,7 +32,6 @@ Axes.Ability.Bonus.4=Impact puissant
|
||||
Axes.Ability.Bonus.5=Inflige {0} de d\u00e9g\u00e2ts en plus aux ennemis sans armure
|
||||
Axes.Ability.Lower=[[GRAY]]**VOUS ABAISSEZ VOTRE HACHE**
|
||||
Axes.Ability.Ready=[[GREEN]]**VOUS LEVEZ VOTRE HACHE**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]Frapp\u00e9 par Tranche-cr\u00e2ne !
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]Vous avez re\u00e7u un coup critique !
|
||||
Axes.Combat.CritChance=[[RED]]Chance d\'infliger un coup critique : [[YELLOW]]{0}%
|
||||
Axes.Combat.CriticalHit=[[RED]]COUP CRITIQUE !
|
||||
@@ -133,14 +132,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Votre comp\u00e9tence [[YELLOW]]Broyeur [[GREEN]]est pr\u00eate !
|
||||
Mining.Skillup=[[YELLOW]]Le talent Minage augmente de {0}. Total ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**BOUM**
|
||||
Mining.Blast.Effect.0=+35% de rendement
|
||||
Mining.Blast.Effect.1=+40% de rendement
|
||||
Mining.Blast.Effect.2=+45% de rendement, pas de d\u00e9bris
|
||||
Mining.Blast.Effect.3=+50% de rendement, pas de d\u00e9bris
|
||||
Mining.Blast.Effect.4=+55% de rendement, pas de d\u00e9bris, double drops
|
||||
Mining.Blast.Effect.5=+60% de rendement, pas de d\u00e9bris, double drops
|
||||
Mining.Blast.Effect.6=+65% de rendement, pas de d\u00e9bris, triple drops
|
||||
Mining.Blast.Effect.7=+70% de rendement, pas de d\u00e9bris, triple drops
|
||||
Mining.Blast.Radius.Increase=[[RED]]Rayon d\'explosion : [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]Minage explosif : [[YELLOW]]Rang {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] a utilis\u00e9 [[RED]]Minage explosif !
|
||||
@@ -282,9 +273,7 @@ Combat.ArrowDeflect=[[WHITE]]**FL\u00c8CHE DEVI\u00c9E**
|
||||
Combat.BeastLore=[[GREEN]]**CONNAISSANCE DES B\u00caTES**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Vie ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Propri\u00e9taire ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Vous avez \u00e9t\u00e9 frapp\u00e9 par une fl\u00e8che br\u00fblante\\!
|
||||
Combat.Gore=[[GREEN]]**SANG**
|
||||
Combat.Ignition=[[RED]]**ALLUMAGE**
|
||||
Combat.StruckByGore=[[RED]]**FRAPP\u00c9 JUSQU\'AU SANG**
|
||||
Combat.TargetDazed=La cible a \u00e9t\u00e9 [[DARK_RED]]\u00c9tourdi
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Vous \u00eates \u00e9tourdi.
|
||||
@@ -338,7 +327,6 @@ Party.NotInYourParty=[[DARK_RED]]{0} is not in your party
|
||||
Party.Password.Set=[[GREEN]]Mot de passe d\u00e9fini : {0}
|
||||
Party.Player.Invalid=[[RED]]Ce joueur n\'existe pas.
|
||||
Party.Teleport.Dead=[[RED]]Vous ne pouvez pas vous t\u00e9l\u00e9porter sur un joueur mort.
|
||||
Party.Teleport.Hurt=[[RED]]Vous avez \u00e9t\u00e9 bless\u00e9 durant les {0} derni\u00e8res secondes et ne pouvez pas vous t\u00e9l\u00e9porter.
|
||||
Party.Teleport.Player=[[GREEN]]Vous vous \u00eates t\u00e9l\u00e9port\u00e9 sur {0}.
|
||||
Party.Teleport.Target=[[GREEN]]{0} s\'est t\u00e9l\u00e9port\u00e9 sur vous.
|
||||
Party.Unlocked=[[GRAY]]Le groupe est d\u00e9verrouill\u00e9.
|
||||
|
||||
@@ -1,19 +1,39 @@
|
||||
Acrobatics.Combat.Proc=[[GREEN]]**Elker\u00fclve**
|
||||
Acrobatics.SkillName=AKROBATIKA
|
||||
Acrobatics.Skillup=[[YELLOW]]Akrobatika fejl\u0151d\u00f6tt {0} szinttel. \u00d6sszesen: ({1})
|
||||
Archery.Skillup=[[YELLOW]]\u00cdj\u00e1szat fejl\u0151d\u00f6tt {0} szinttel. \u00d6sszesen: ({1})
|
||||
Axes.Combat.GI.Struck=[[RED]]**HATALMAS EREJ\u0170 \u00dcT\u00c9S**
|
||||
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] haszn\u00e1lta a [[RED]]Koponya T\u00f6r\u0151t!
|
||||
Excavation.SkillName=\u00c1S\u00c1S
|
||||
Herbalism.Listener=Gy\u00f3gyn\u00f6v\u00e9nytan:
|
||||
Mining.Ability.Ready=[[GREEN]]**CS\u00c1K\u00c1NYOD K\u00c9SZEN \u00c1LL**
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]A [[YELLOW]] Szuper Z\u00faz\u00f3 [[GREEN]]k\u00e9pess\u00e9ged \u00fajra haszn\u00e1lhat\u00f3!
|
||||
Mining.Skillup=[[YELLOW]]B\u00e1ny\u00e1szat fejl\u0151d\u00f6tt {0} szinttel. \u00d6sszesen: ({1})
|
||||
Mining.Blast.Refresh=[[GREEN]]A [[YELLOW]]Robban\u00f3 B\u00e1ny\u00e1szat [[GREEN]]k\u00e9pess\u00e9ged \u00fajra el\u00e9rhet\u0151!
|
||||
Repair.Skills.AdeptGold=[[DARK_RED]]Nem vagy el\u00e9g k\u00e9pzett ahhoz, hogy arany t\u00e1rgyakat jav\u00edts.
|
||||
Repair.Arcane.Fail=[[RED]]A t\u00e1rgyon l\u00e9v\u0151 var\u00e1zslat szertefoszlott.
|
||||
Swords.Combat.Bleeding.Stopped=[[GRAY]]A v\u00e9rz\u00e9s [[GREEN]]elm\u00falt[[GRAY]]!
|
||||
Swords.Combat.Bleeding=[[GREEN]]**ELLENS\u00c9G V\u00c9RZIK**
|
||||
Swords.Skills.SS.On=[[GREEN]]**F\u0170R\u00c9SZES CSAP\u00c1S AKTIV\u00c1LVA**
|
||||
Unarmed.Skills.Berserk.Off=[[RED]]**Tombol\u00e1sod befejez\u0151d\u00f6tt**
|
||||
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] haszn\u00e1lta a [[RED]]Tombol\u00e1st!
|
||||
Woodcutting.Ability.0=Lev\u00e9l F\u00faj\u00f3
|
||||
Woodcutting.Ability.1=Elf\u00fajja a leveleket.
|
||||
Woodcutting.SkillName=FAV\u00c1G\u00c1S
|
||||
Ability.Generic.Template=[[RED]]{0}: [[YELLOW]]{1}
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Bolyhosat \u00e9rintettem. Elsz\u00e9d\u00fcltem.
|
||||
Commands.AdminChat.Off=Admin Chat [[RED]]kikapcsolva
|
||||
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - M\u00f3dos\u00edtva
|
||||
Commands.Party.Kick=[[RED]]Kidobtak a csoportb\u00f3l {0}!
|
||||
Commands.PowerLevel=[[DARK_RED]]POWER LEVEL: [[GREEN]]{0}
|
||||
Party.Unlocked=[[GRAY]]Csoport nyitva
|
||||
Commands.XPGain.Excavation=\u00c1sni \u00e9s kincset tal\u00e1lni.
|
||||
Commands.XPGain.Herbalism=N\u00f6v\u00e9nyek betakar\u00edt\u00e1sa
|
||||
Commands.XPGain.Mining=K\u0151 \u00e9s \u00e9rcek kib\u00e1ny\u00e1sz\u00e1sa
|
||||
Commands.XPGain.Taming=\u00c1llatok idom\u00edt\u00e1sa vagy harc a farkasoddal
|
||||
Commands.XPGain=[[DARK_GRAY]]KAPOTT TP: [[WHITE]]{0}
|
||||
Guides.Excavation=[[DARK_AQUA]]\u00c1s\u00e1sr\u00f3l:\n[[YELLOW]]\u00c1s\u00e1s a kincskeres\u00e9s egyik fajt\u00e1ja..\n[[YELLOW]]\u00c1s\u00e1s sor\u00e1n ez\u00e9rt kincseket kaphatsz.\n[[YELLOW]]Min\u00e9l t\u00f6bbet \u00e1sol, ann\u00e1l t\u00f6bb kincset tal\u00e1lhatsz.\n\n[[DARK_AQUA]]Tapasztalat Pont (TP) szerz\u00e9s:\n[[YELLOW]]Ahhoz, hogy TP-t szerezhess, \u00e1s\u00f3val a kezedben kell \u00e1snod.\n[[YELLOW]]Csak meghat\u00e1rozott t\u00edpus\u00fa blokkokban tal\u00e1lhatsz kincseket.\n[[DARK_AQUA]]Meghat\u00e1rozott blokkok:\n[[YELLOW]]F\u0171, f\u00f6ld, homok, agyag, s\u00f3der, gomb\u00e1s f\u00f6ld, l\u00e9lekhomok\n\n[[DARK_AQUA]]Hogyan haszn\u00e1ld a Hatalmas F\u00far\u00f3t:\n[[YELLOW]]Kezedben az \u00e1s\u00f3val kattonts a jobb eg\u00e9r gombbak.\n[[YELLOW]]Ezut\u00e1n 4 m\u00e1sodperced van, hogy\n[[YELLOW]]elkezdj \u00e1sni egy megfelel\u0151 anyagon. Ez \n[[YELLOW]]aktiv\u00e1lni fogja a Hatalmas F\u00far\u00f3t.\n[[DARK_AQUA]]Mi az a Hatalmas F\u00far\u00f3?\n[[YELLOW]]Hatalmas f\u00far\u00f3 egy k\u00e9pess\u00e9g, amely az \u00c1s\u00e1s\n[[YELLOW]]j\u00e1rtass\u00e1godhoz k\u00f6t\u0151dik. Megh\u00e1romszorozza\n[[YELLOW]]a kincs es\u00e9s\u00e9nek es\u00e9ly\u00e9t \u00e9s azonnal sz\u00e9tt\u00f6ri\n[[YELLOW]]az \u00e1s\u00e1shoz kapcsol\u00f3d\u00f3 blokkokat.\n\n[[DARK_AQUA]]HHogyan m\u0171k\u00f6dik a kincskeres\u00e9s?\n[[YELLOW]]Every possible treasure for Excavation has its own\n[[YELLOW]]skill level requirement for it to drop, as a result it\'s\n[[YELLOW]]difficult to say how much it is helping you.\n[[YELLOW]]Just keep in mind that the higher your Excavation skill\n[[YELLOW]]is, the more treasures that can be found.\n[[YELLOW]]And also keep in mind that each type of Excavation\n[[YELLOW]]compatible material has its own unique list of treasures.\n[[YELLOW]]In other words you will find different treasures in Dirt\n[[YELLOW]]than you would in Gravel.\n[[DARK_AQUA]]Notes about Excavation:\n[[YELLOW]]Excavation drops are completely customizeable\n[[YELLOW]]So results vary server to server.
|
||||
XPRate.Event=[[GOLD]]mcMMO-ban most TP r\u00e1ta n\u00f6vel\u0151 esem\u00e9ny van! TP r\u00e1ta {0}x!
|
||||
Guides.Excavation=[[DARK_AQUA]]\u00c1s\u00e1sr\u00f3l:\n\n[[YELLOW]]\u00c1s\u00e1s a kincskeres\u00e9s egyik fajt\u00e1ja..\n\n[[YELLOW]]\u00c1s\u00e1s sor\u00e1n ez\u00e9rt kincseket kaphatsz.\n\n[[YELLOW]]Min\u00e9l t\u00f6bbet \u00e1sol, ann\u00e1l t\u00f6bb kincset tal\u00e1lhatsz.\n\n\n\n[[DARK_AQUA]]Tapasztalat Pont (TP) szerz\u00e9s:\n\n[[YELLOW]]Ahhoz, hogy TP-t szerezhess, \u00e1s\u00f3val a kezedben kell \u00e1snod.\n\n[[YELLOW]]Csak meghat\u00e1rozott t\u00edpus\u00fa blokkokban tal\u00e1lhatsz kincseket.\n\n[[DARK_AQUA]]Meghat\u00e1rozott blokkok:\n\n[[YELLOW]]F\u0171, f\u00f6ld, homok, agyag, s\u00f3der, gomb\u00e1s f\u00f6ld, l\u00e9lekhomok\n\n\n\n[[DARK_AQUA]]Hogyan haszn\u00e1ld a Hatalmas F\u00far\u00f3t:\n\n[[YELLOW]]Kezedben az \u00e1s\u00f3val kattints a jobb eg\u00e9r gombbak.\n\n[[YELLOW]]Ezut\u00e1n 4 m\u00e1sodperced van, hogy\n\n[[YELLOW]]elkezdj \u00e1sni egy megfelel\u0151 anyagon. Ez \n\n[[YELLOW]]aktiv\u00e1lni fogja a Hatalmas F\u00far\u00f3t.\n\n[[DARK_AQUA]]Mi az a Hatalmas F\u00far\u00f3?\n\n[[YELLOW]]Hatalmas f\u00far\u00f3 egy k\u00e9pess\u00e9g, amely az \u00c1s\u00e1s\n\n[[YELLOW]]j\u00e1rtass\u00e1godhoz k\u00f6t\u0151dik. Megh\u00e1romszorozza\n\n[[YELLOW]]a kincs es\u00e9s\u00e9nek es\u00e9ly\u00e9t \u00e9s azonnal sz\u00e9tt\u00f6ri\n\n[[YELLOW]]az \u00e1s\u00e1shoz kapcsol\u00f3d\u00f3 blokkokat.\n\n\n\n[[DARK_AQUA]]Hogyan m\u0171k\u00f6dik a kincskeres\u00e9s?\n\n[[YELLOW]]Minden kincsnek megvan a maga \n\n[[YELLOW]]szintbeli k\u00f6vetelm\u00e9nye, amely ut\u00e1n eshet, ennek k\u00f6vetkezt\u00e9ben \n\n[[YELLOW]]neh\u00e9z megmondani, hogy mennyire hasznos.\n\n[[YELLOW]]Csak tartsd \u00e9szben, hogy min\u00e9l nagyobb az \u00c1s\u00e1sbeli j\u00e1rtass\u00e1god,\n\n[[YELLOW]]ann\u00e1l t\u00f6bb kincset kaphatsz.\n\n[[YELLOW]]Ezen fel\u00fcl azt se felejtsd el, hogy minden \u00c1sat\u00e1shoz k\u00f6t\u0151d\u0151\n\n[[YELLOW]]anyagnak megvan a saj\u00e1t list\u00e1ja, arra, hogy milyen kincset tartalmazhat.\n\n[[YELLOW]]M\u00e1s szavakkal, m\u00e1s kincset tal\u00e1lhatsz egy f\u00f6ld blokkban\n\n[[YELLOW]]mint egy homok blokkban.\n\n[[DARK_AQUA]]Megjegyz\u00e9s az \u00c1s\u00e1shoz:\n\n[[YELLOW]]A kincsek teljesen szem\u00e9lyre szabhat\u00f3ak.\n\n[[YELLOW]]\u00cdgy szerverenk\u00e9nt elt\u00e9rhetnek egym\u00e1st\u00f3l.
|
||||
Skills.Disarmed=[[DARK_RED]]Lefegyvereztek!
|
||||
Stats.Header.Combat=[[GOLD]]-=HARCI K\u00c9PZETTS\u00c9GEK=-
|
||||
Stats.Header.Gathering=[[GOLD]]-= GY\u0170JT\u00d6GET\u0150 K\u00c9PESS\u00c9GEK=-
|
||||
|
||||
@@ -33,7 +33,6 @@ Axes.Ability.Bonus.4=Impatto Maggiore
|
||||
Axes.Ability.Bonus.5=Infliggi {0} danni bonus ai nemici senza armatura
|
||||
Axes.Ability.Lower=[[GRAY]]**ABBASSI L\'ASCIA**
|
||||
Axes.Ability.Ready=[[GREEN]]**PREPARI L\'ASCIA**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]Colpito da SFONDAMENTO!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]Hai subito un colpo CRITICO!
|
||||
Axes.Combat.CritChance=[[RED]]Probabilit\u00e0 di un colpo critico: [[YELLOW]]{0}%
|
||||
Axes.Combat.CriticalHit=[[RED]]COLPO CRITICO!
|
||||
@@ -104,6 +103,8 @@ Herbalism.Ability.GTh=[[GREEN]]**POLLICE VERDE**
|
||||
Herbalism.Ability.HylianLuck=[[RED]]Probabilit\u00e0 di Fotruna Hylian: [[YELLOW]]{0}
|
||||
Herbalism.Ability.Lower=[[GRAY]]**ABBASSI LA ZAPPA**
|
||||
Herbalism.Ability.Ready=[[GREEN]]**PREPARI LA ZAPPA**
|
||||
Herbalism.Ability.ShroomThumb.Chance=[[RED]]Possibilit\u00e0 di Pollice Fungo: [[YELLOW]]{0}
|
||||
Herbalism.Ability.ShroomThumb.Fail=[[RED]]**POLLICE FUNGO FALLITO**
|
||||
Herbalism.Effect.0=TERRA VERDE (CAPACIT\u00c0)
|
||||
Herbalism.Effect.1=Diffonde il Verde, Drop x3
|
||||
Herbalism.Effect.2=Pollice Verde (Grano)
|
||||
@@ -116,6 +117,8 @@ Herbalism.Effect.8=Doppi Drop (Ogni Pianta)
|
||||
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.HylianLuck=[[GREEN]]Oggi la fortuna di Hyrule \u00e8 con te!
|
||||
Herbalism.Listener=Erboristeria:
|
||||
Herbalism.SkillName=ERBORISTERIA
|
||||
@@ -152,14 +155,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]S
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]La tua capacit\u00e0 [[YELLOW]]Super Demolitore [[GREEN]]si \u00e8 rigenerata!
|
||||
Mining.Skillup=[[YELLOW]]L\'abilit\u00e0 Estrazione \u00e8 aumentata di {0}. Totale ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**BOOM**
|
||||
Mining.Blast.Effect.0=+35% minerali estratti
|
||||
Mining.Blast.Effect.1=+40% minerali estratti
|
||||
Mining.Blast.Effect.2=+45% minerali estratti, niente macerie
|
||||
Mining.Blast.Effect.3=+50% minerali estratti, niente macerie
|
||||
Mining.Blast.Effect.4=+55% minerali estratti, niente macerie, doppi drop.
|
||||
Mining.Blast.Effect.5=+60% minerali estratti, niente macerie, doppi drop.
|
||||
Mining.Blast.Effect.6=+65% minerali estratti, niente macerie, tripli drop.
|
||||
Mining.Blast.Effect.7=+70% minerali estratti, niente macerie, tripli drop.
|
||||
Mining.Blast.Radius.Increase=[[RED]]Incremento del Raggio di Esplosione: [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]Estrazione Esplosiva: [[YELLOW]] Grado {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] ha usato [[RED]]Estrazione Esplosiva!
|
||||
@@ -249,6 +244,7 @@ Taming.Ability.Bonus.6=Artigli Affilati
|
||||
Taming.Ability.Bonus.7=+{0} al Danno
|
||||
Taming.Ability.Bonus.8=Servizio Fast Food
|
||||
Taming.Ability.Bonus.9={0}% Probabilit\u00e0 di guarire quando si attacca
|
||||
Taming.Ability.Bonus.11=Recupera salute quando viene danneggiato da magia o veleno
|
||||
Taming.Ability.Locked.0=BLOCCATO FINO AD ABILIT\u00c0 {0}+ (SICUREZZA AMBIENTALE)
|
||||
Taming.Ability.Locked.1=BLOCCATO FINO AD ABILIT\u00c0 {0}+ (PELLICCIA FOLTA)
|
||||
Taming.Ability.Locked.2=BLOCCATO FINO AD ABILIT\u00c0 {0}+ (A PROVA D\'URTO)
|
||||
@@ -265,6 +261,7 @@ Taming.Effect.14=[[GRAY]]RDN (Ocelot): Chinati e clicca col sinistro con {0} Pes
|
||||
Taming.Effect.15=[[GRAY]]RDN (Lupo): Chinati e clicca col sinistro con {0} Ossi in mano
|
||||
Taming.Effect.16=Servizio Fast Food
|
||||
Taming.Effect.17=Probabilit\u00e0 che i lupi di guarire quando attaccano
|
||||
Taming.Effect.19=Guarito da Magia & Veleno
|
||||
Taming.Effect.2=Sbranare
|
||||
Taming.Effect.3=Colpo Critico che applica Emorragia
|
||||
Taming.Effect.4=Artigli Affilati
|
||||
@@ -336,13 +333,11 @@ Combat.ArrowDeflect=[[WHITE]]**FRECCIA DEVIATA**
|
||||
Combat.BeastLore=[[GREEN]]**CONOSCENZA DELLE BESTIE**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Salute ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Proprietario ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Sei stato colpito da una freccia infuocata!
|
||||
Combat.Gore=[[GREEN]]**SBRANATO**
|
||||
Combat.Ignition=[[RED]]**ACCENSIONE**
|
||||
Combat.StruckByGore=[[RED]]**SEI STATO SBRANATO**
|
||||
Combat.TargetDazed=Il bersaglio \u00e8 rimasto [[DARK_RED]]Stordito
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Toccato sfocato. Feltro vertiginoso.
|
||||
mcMMO.Description=[[DARK_AQUA]]Riguardo il progetto [[YELLOW]]mcMMO[[DARK_AQUA]]:,[[GOLD]]mcMMO \u00e8 una mod GdR [[RED]]open source[[GOLD]] creata nel Febbraio 2011,[[GOLD]]da [[BLUE]]nossr50[[GOLD]]. L\'obiettivo \u00e8 di fornire un\'esperienza GdR di qualit\u00e0.,[[DARK_AQUA]]Suggerimenti:,[[GOLD]] - [[GREEN]]Usa [[RED]]/mcmmo help[[GREEN]] per vedere i comandi,[[GOLD]] - [[GREEN]]Digita [[RED]]/NOMEABILIT\u00c0[[GREEN]] per vedere informazioni dettagliate sull\'abilit\u00e0,[[DARK_AQUA]]Sviluppatori:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](Fondatore),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Capo Progetto),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](Sviluppatore),[[DARK_AQUA]]Link Utili:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] Segnalazioni Bug,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,
|
||||
mcMMO.Description=[[DARK_AQUA]]Riguardo il [[DARK_AQUA]]Progetto [[YELLOW]]mcMMO:,[[GOLD]]mcMMO \u00e8 una mod GdR [[RED]]open source[[GOLD]] creata nel Febbraio 2011,[[GOLD]]da [[BLUE]]nossr50[[GOLD]]. L\'obiettivo \u00e8 quello di fornire un\'esperienza GdR di qualit\u00e0.,[[DARK_AQUA]]Suggerimenti:,[[GOLD]] - [[GREEN]]Usa [[RED]]/mcmmo help[[GREEN]] per vedere i comandi,[[GOLD]] - [[GREEN]]Digita [[RED]]/NOMEABILIT\u00c0[[GREEN]] per vedere informazioni dettagliate su un\'abilit\u00e0,[[DARK_AQUA]]Sviluppatori:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](Fondatore),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Capo Progetto),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]bm01 [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]TfT_02 [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]Glitchfinder [[BLUE]](Sviluppatore),[[GOLD]] - [[GREEN]]t00thpick1 [[BLUE]](Sviluppatore),[[DARK_AQUA]]Link Utili:,[[GOLD]] - [[GREEN]]https://github.com/mcMMO-Dev/mcMMO/issues[[GOLD]] Segnalazione Bug,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,
|
||||
Commands.addlevels.AwardAll.1=[[GREEN]]Ti sono stati aggiudicati {0} livelli in tutte le abilit\u00e0!
|
||||
Commands.addlevels.AwardAll.2=[[RED]]Tutte le abilit\u00e0 sono state modificate per {0}.
|
||||
Commands.addlevels.AwardSkill.1=[[GREEN]]Ti sono stati aggiudicati {0} livelli in {1}!
|
||||
@@ -385,6 +380,8 @@ Commands.mmoupdate.Start=[[GRAY]]Inizio conversione...
|
||||
Commands.mmoupdate.Finish=[[GREEN]]Conversione terminata!
|
||||
Commands.ModDescription=[[RED]]- Leggi una breve descrizione della mod
|
||||
Commands.NoConsole=Questo comando non supporta l\'uso da console.
|
||||
Commands.Notifications.Off=Notifiche delle capacit\u00e0 [[RED]]disattivate
|
||||
Commands.Notifications.On=Notifiche delle capacit\u00e0 [[GREEN]]attivate
|
||||
Commands.Offline=[[RED]]Questo comando non funziona per i giocatori offline.
|
||||
Commands.Other=[[GREEN]]--ALTRI COMANDI--
|
||||
Commands.Party.Header=[[RED]]-----[][[GREEN]]COMPAGNIA[[RED]][]-----
|
||||
@@ -405,6 +402,7 @@ Commands.Party.Join=[[GRAY]]Ti sei unito alla compagnia: {0}
|
||||
Commands.Party.Create=[[GRAY]]Creata la Compagnia: {0}
|
||||
Commands.Party.Rename=[[GRAY]]Nome della compagnia cambiato in: [[WHITE]]{0}
|
||||
Commands.Party.SetSharing=[[GRAY]]Modalit\u00e0 spartizione della compagnia {0} impostata come: [[DARK_AQUA]]{1}
|
||||
Commands.Party.ToggleShareCategory=[[GRAY]]La condivisione oggetti di compagnia di [[GOLD]]{0} [[GRAY]]\u00e8 stata [[DARK_AQUA]]{1}
|
||||
Commands.Party.AlreadyExists=[[DARK_RED]]La Compagnia {0} esiste gi\u00e0!
|
||||
Commands.Party.Kick=[[RED]]Sei stato sospeso dalla tua compagnia {0}!
|
||||
Commands.Party.Leave=[[RED]]Hai abbandonato quella compagnia
|
||||
@@ -419,6 +417,7 @@ Commands.Party2=[[RED]]- entra in una compagnia di giocatori
|
||||
Commands.ptp.Enabled=Teletrasporto di compagnia [[GREEN]]abilitato
|
||||
Commands.ptp.Disabled=Teletrasporto di compagnia [[GREEN]]disabilitato
|
||||
Commands.ptp.NoRequests=[[RED]]Non hai richieste di teletrasporto in questo momento
|
||||
Commands.ptp.NoWorldPermissions=[[RED]][mcMMO] Non hai il permesso di teletrasportarti verso il mondo {0}.
|
||||
Commands.ptp.Request1=[[YELLOW]]{0} [[GREEN]]ha richiesto di teletrasportarsi da te.
|
||||
Commands.ptp.Request2=[[GREEN]]Per teletrasportarti, digita [[YELLOW]]/ptp accept. [[GREEN]]La richiesta scadr\u00e0 fra [[RED]]{0} [[GREEN]]secondi.
|
||||
Commands.ptp.AcceptAny.Enabled=Conferma delle richieste di teletrasporto di compagnia [[GREEN]]abilitata
|
||||
@@ -484,7 +483,6 @@ Party.Player.InSameParty=[[RED]]{0} \u00e8 gi\u00e0 nella tua compagnia!
|
||||
Party.PlayerNotInParty=[[DARK_RED]]{0} non \u00e8 in una compagnia
|
||||
Party.Specify=[[RED]]Devi specificare una compagnia.
|
||||
Party.Teleport.Dead=[[RED]]Non puoi teletrasportarti verso un giocatore morto.
|
||||
Party.Teleport.Hurt=[[RED]]Sei stato ferito negli ultimi {0} secondi e non puoi teletrasportarti.
|
||||
Party.Teleport.Player=[[GREEN]]Ti sei teletrasportato da {0}.
|
||||
Party.Teleport.Self=[[RED]]Non puoi teletrasportarti verso te stesso!
|
||||
Party.Teleport.Target=[[GREEN]]{0} ti ha teletrasportato.
|
||||
@@ -608,6 +606,7 @@ Commands.Description.mcability=Attiva o disattiva il fatto che le capacit\u00e0
|
||||
Commands.Description.mcgod=Attiva o Disattiva la modalit\u00e0 dio mcMMO
|
||||
Commands.Description.mchud=Cambia il tuo stile di HUD di mcMMO
|
||||
Commands.Description.mcmmo=Mostra una breve descrizione di mcMMO
|
||||
Commands.Description.mcnotify=Attiva o disattiva le notifiche delle capacit\u00e0 di mcMMO nel display di chat
|
||||
Commands.Description.mcpurge=Elimina dal database mcMMO gli utenti senza livelli mcMMO e quelli che non si sono connessi negli ultimi {0} mesi.
|
||||
Commands.Description.mcrank=Mostra la graduatoria mcMMO di un giocatore
|
||||
Commands.Description.mcrefresh=Rigenera tutti i raffreddamenti di mcMMO
|
||||
@@ -624,3 +623,5 @@ 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.
|
||||
UpdateChecker.outdated=Stai usando una versione sorpassata di mcMMO!
|
||||
UpdateChecker.newavailable=\u00c8 disponibile una nuova versione su BukkitDev.
|
||||
|
||||
@@ -14,10 +14,12 @@ Axes.Skills.SS.Other.On=[[\ub179\uc0c9]] {0} [[\uc5b4\ub450\uc6b4 \ub179\uc0c9]]
|
||||
Axes.Skillup=[[YELLOW]]\ub3c4\ub07c \uae30\uc220\uc774 {0} \uc99d\uac00\ud588\uc2b5\ub2c8\ub2e4. \ucd1d ({1})
|
||||
Excavation.SkillName=\ubc1c\uad74
|
||||
Fishing.ItemFound=[[GRAY]]\ubcf4\ubb3c\uc744 \ubc1c\uacac\ud588\uc2b5\ub2c8\ub2e4!
|
||||
Herbalism.Ability.GTh=[[GREEN]]**\ucc98\uc138\uc220**
|
||||
Herbalism.Listener=\uc57d\ucd08\ud559 :
|
||||
Herbalism.Skills.GTe.Refresh=[[\ub179\uc0c9]] \ub2f9\uc2e0\uc758 [[\ub178\ub780\uc0c9]] \uadf8\ub9b0 \ud14c\ub77c [[\ub179\uc0c9]] \ub2a5\ub825\uc774 \uc0c8\ub85c \uace0\uccd0\uc9d1\ub2c8\ub2e4!
|
||||
Herbalism.Skills.GTe.Other.Off=[[\ub808\ub4dc]] \uadf8\ub9b0 \ud14c\ub77c [[\ub179\uc0c9]]\uc5d0 \ub300\ud55c \ud6a8\ub825\uc774 [[\ub178\ub780\uc0c9]] {0}
|
||||
Mining.Ability.Length=[[\ub808\ub4dc]] \uc288\ud37c \ucc28\ub2e8\uae30 \uae38\uc774 : [[\ub178\ub780\uc0c9]] {0} \ucd08
|
||||
Mining.Ability.Lower=[[GRAY]]**\ub2f9\uc2e0\uc758 \uace1\uad2d\uc774\uac00 \ub108\ubb34 \ubb34\uac81\uc2b5\ub2c8\ub2e4.**
|
||||
Mining.Ability.Ready=[[GREEN]]**\uace1\uad2d\uc774\ub97c \uc900\ube44\ud558\uc138\uc694.**
|
||||
Mining.Listener=\uad11\uc5c5:
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\ub2f9\uc2e0\uc758 [[YELLOW]]\uc288\ud37c \ube0c\ub808\uc774\ucee4[[GREEN]] \ub2a5\ub825\uc774 \uc6d0\uc0c1\ubcf5\uadc0 \ub418\uc5c8\uc2b5\ub2c8\ub2e4!
|
||||
@@ -26,6 +28,8 @@ Mining.Blast.Radius.Increase=[[RED]]\ud3ed\ubc1c \ubc94\uc704 \uc99d\uac00\ub7c9
|
||||
Mining.Blast.Refresh=[[GREEN]]\ub2f9\uc2e0\uc758 [[YELLOW]]\ubc1c\ud30c [[GREEN]]\ub2a5\ub825\uc774 \uc6d0\uc0c1\ubcf5\uadc0 \ub418\uc5c8\uc2b5\ub2c8\ub2e4!
|
||||
Repair.Effect.0=\uc218\ub9ac
|
||||
Repair.Effect.2=\uc218\ub9ac \ub9c8\uc2a4\ud130\ub9ac
|
||||
Repair.Effect.5=\uc911\ubcf5 \ud6a8\uacfc
|
||||
Repair.Effect.7=\ub2e4\uc774\uc544\ubaac\ub4dc \uc7a5\ube44 \uc218\ub9ac
|
||||
Repair.Effect.9=\ub9c8\ubc95 \ud56d\ubaa9\uc744 \ubcf5\uad6c
|
||||
Repair.Listener=\ubcf5\uad6c :
|
||||
Repair.SkillName=REPAIR
|
||||
@@ -45,6 +49,7 @@ Swords.Skills.SS.Other.Off=[[\ub808\ub4dc]] \ud1b1\ub2c8 \ubaa8\uc591\uc758 \uac
|
||||
Swords.Skills.SS.Other.On=[[\ub179\uc0c9]] {0} [[\uc5b4\ub450\uc6b4 \ub179\uc0c9]] \uc0ac\uc6a9\ud55c [[\ub808\ub4dc]] \ud1b1\ub2c8 \ubaa8\uc591\uc758 \uacbd\uace0!
|
||||
Taming.Ability.Bonus.2=\ub450\uaebc\uc6b4 \ubaa8\ud53c
|
||||
Taming.Listener.Wolf=[[\uc5b4\ub450\uc6b4 \ud68c\uc0c9]] \ub2e4\uc2dc\uc5d0 \ub300\ud55c \uadc0\ud558\uc758 \ub291\ub300 scurries ...
|
||||
Taming.Skillup=[[YELLOW]]\uae38\ub4e4\uc774\uae30 \uae30\uc220 {0} \uc99d\uac00\ud588\uc2b5\ub2c8\ub2e4. \ucd1d ({1})
|
||||
Unarmed.Listener=\ubb34\uae30 :
|
||||
Unarmed.SkillName=\ube44\ubb34\uc7a5
|
||||
Unarmed.Skills.Berserk.Off=[[RED]]**\ubc84\uc11c\ud06c \ud574\uc81c**
|
||||
@@ -68,6 +73,7 @@ Commands.DoesNotExist=[[RED]]\uc0ac\uc6a9\uc790\uac00 DB\uc5d0 \uc874\uc7ac\ud55
|
||||
Commands.GodMode.Disabled=[[YELLOW]]mcMMO Godmode \ube44\ud65c\uc131\ud654
|
||||
Commands.Invite.Accepted=[[\ub179\uc0c9]] \uc811\uc218 \ucd08\ub300\ud569\ub2c8\ub2e4. \ub2f9\uc2e0\uc740 \ud30c\ud2f0\uc5d0 \uc744 (\ub97c) \uac00\uc785 {0}
|
||||
Commands.mmoedit=[\ud50c\ub808\uc774\uc5b4] <skill> <newvalue> [[RED]] - \ubaa9\ud45c\ub97c \uc218\uc815
|
||||
Commands.Party.Accept=[[RED]]- \ud30c\ud2f0 \ucd08\ub300 \uc218\ub77d
|
||||
Commands.Party.Invite.0=[[\uc801\uc0c9]] \uacbd\uace0 : [[\ub179\uc0c9]] \ub2f9\uc2e0\uc740 \ub098\uc5d0\uac8c \ud30c\ud2f0 \ucd08\ub300\ub97c\ubc1b\uc740 {0}\uc5d0\uc11c {1}
|
||||
Commands.Party.Kick=[[\ub808\ub4dc]] \ub2f9\uc2e0\uc740 \uc790 {0}\uc5d0\uc11c \ucad3\uaca8\ub418\uc5c8\uc2b5\ub2c8\ub2e4!
|
||||
Commands.Party.Leave=[[\ub808\ub4dc]] \ub2f9\uc2e0\uc774 \ub0a8\uaca8 \ub450\uc5c8\ub358 \uadf8 \ub2f9\uc0ac\uc790
|
||||
|
||||
@@ -1,23 +1,56 @@
|
||||
Acrobatics.Combat.Proc=[[GREEN]]**Ontweken**
|
||||
Acrobatics.Effect.0=Rollen
|
||||
Acrobatics.Effect.4=Ontwijken
|
||||
Acrobatics.Listener=Acrobatiek
|
||||
Acrobatics.SkillName=ACROBATIEK
|
||||
Acrobatics.Skillup=[[YELLOW]]Acrobatiek toegenomen met {0}. Totaal ({1})
|
||||
Archery.Effect.0=Ervaringsschot
|
||||
Archery.Effect.1=Neemt de schade van bogen toe
|
||||
Archery.Effect.2=Verdoven (Spelers)
|
||||
Archery.Effect.5=Kans om pijlen te krijgen van lijken
|
||||
Archery.Listener=Boogschieten:
|
||||
Archery.SkillName=BOOGSCHIETEN
|
||||
Archery.Skillup=[[YELLOW]] Boogschieten ervaring toegenomen met {0}. Totaal ({1})
|
||||
Axes.Ability.Bonus.0=Bijl Meesterschap
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]Je bent KRITISCH geraakt
|
||||
Axes.Combat.GI.Struck=[[RED]]**GETROFFEN MET MEER SCHADE**
|
||||
Axes.Combat.SS.Length=[[RED]]Schedel Splijter Lengte: [[YELLOW]]{0}s
|
||||
Axes.Effect.3=Verdubbelde Schade
|
||||
Axes.Effect.5=Voegt DMG bonus toe
|
||||
Axes.SkillName=BIJLEN
|
||||
Axes.Skills.SS.On=[[GREEN]]**SCHEDEL SPLIJTER GEACTIVEERD**
|
||||
Axes.Skills.SS.Refresh=[[GREEN]]Jou [[YELLOW]]Schedel Splijten [[GREEN]]kracht is hersteld!
|
||||
Axes.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] heeft [[RED]]Schedel Splijter[[DARK_GREEN]]gebruikt!
|
||||
Axes.Skillup=[[YELLOW]]Bijl ervaring toegenomen met {0}. Totaal ({1})
|
||||
Excavation.Effect.2=Schatten Jager
|
||||
Excavation.Listener=Uitgraving:
|
||||
Excavation.SkillName=Uitgraving
|
||||
Excavation.Skills.GigaDrillBreaker.On=[[GREEN]]**GIGA DRILL BREKER GEACTIVEERD**
|
||||
Excavation.Skillup=[[YELLOW]]Uitgravings ervaring toegenomen met {0}. Totaal ({1})
|
||||
Fishing.Chance.Raining=[[BLUE]] Regen Bonus
|
||||
Fishing.ItemFound=[[GRAY]]Schat gevonden!
|
||||
Fishing.Listener=Vissen:
|
||||
Fishing.MagicFound=[[GRAY]]Jij voelt een vleugje magie met deze vangst...
|
||||
Herbalism.Ability.GTh=[[GREEN]]**GROEN DUIMPJE**
|
||||
Herbalism.Listener=Kruidenkunde:
|
||||
Herbalism.Skills.GTe.Refresh=[[GREEN]]Jou [[YELLOW]]groene Vingers [[GREEN]]kracht is hersteld!
|
||||
Herbalism.Skills.GTe.Other.Off=[[RED]]Groene vingers[[GREEN]] is uitgewerkt voor [[YELLOW]]{0}
|
||||
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]]heeft[[RED]]Groene Aarde[[DARK_GREEN]]gebruikt!
|
||||
Mining.Ability.Length=[[RED]]Super BrekerLengte: [[YELLOW]]{0}s
|
||||
Mining.Ability.Ready=[[GREEN]]**JE HOUDT JE PIKHOUWEEL GEREED**
|
||||
Mining.Listener=Mijnbouw:
|
||||
Mining.Skills.SuperBreaker.Other.Off=[[RED]] Super Breker[[GREEN]] is uitgewerkt voor [[YELLOW]]{0}
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]Jou[[YELLOW]]Super Breek[[GREEN]]kracht is hersteld!
|
||||
Mining.Skillup=[[YELLOW]]Mijn ervaring toegenomen met {0}. Totaal: ({1})
|
||||
Mining.Blast.Refresh=[[GREEN]]Jou[[YELLOW]]explosie mijn [[GREEN]]kracht is hersteld!
|
||||
Repair.Effect.0=Repareren
|
||||
Repair.Effect.2=Reparatie Meesterschap
|
||||
Repair.Effect.3=Toegenomen reparatie aantal
|
||||
Repair.Effect.4=Super Reparatie
|
||||
Repair.Effect.5=Verdubbelde effectiefheid
|
||||
Repair.Effect.6=Diamanten Reparatie ({0}+ SKILL)
|
||||
Repair.Effect.7=Repareer Diamanten Gereedschap & Wapenuitrusting
|
||||
Repair.Effect.8=Arcane Smeden
|
||||
Repair.Effect.9=Magische voorwerpen repareren
|
||||
Repair.Listener.Anvil=[[DARK.RED]]Je hebt een aambeeld geplaatst, met een aambeeld kun je je gereedschappen en pantser mee repareren
|
||||
Repair.Listener=Repareer:
|
||||
@@ -27,12 +60,19 @@ Repair.Skills.AdeptGold=[[DARK_RED]]Je bent niet goed genoeg om goud te reparere
|
||||
Repair.Skills.AdeptStone=[[DARK_RED]]Je bent nog niet sterk genoeg om steen te repareren.
|
||||
Repair.Skills.FeltEasy=[[GRAY]]Dat voelde makkelijk.
|
||||
Repair.Skillup=[[YELLOW]]Repareer ervaring toegenomen met {0}. Totaal: ({1})
|
||||
Repair.Arcane.Chance.Downgrade=[[GRAY]]AF Downgrade Kans: [[YELLOW]]{0}%
|
||||
Repair.Arcane.Chance.Success=[[GRAY]] Mystiek Smeden Succes Percentage: [[YELLOW]]{0}%
|
||||
Repair.Arcane.Fail=[[RED]]Mysterieuze kracht heeft het voorwerp voorgoed verlaten.
|
||||
Repair.Arcane.Lost=[[RED]]Je hebt niet genoeg ervaring om de betoveringen te behouden
|
||||
Swords.Ability.Ready=[[GREEN]]**JIJ HOUD JOU WAPEN GEREED**
|
||||
Swords.Combat.Bleeding.Stopped=[[GRAY]]Het bloeden is [[GREEN]]Gestopt[[GRAY]]!
|
||||
Swords.Combat.Bleeding=[[GREEN]]**VIJAND BLOED**
|
||||
Swords.Combat.Counter.Hit=[[DARK_RED]]Geraakt door een tegenaanval
|
||||
Swords.Combat.Countered=[[GREEN]]**TEGEN-AANVAL**
|
||||
Swords.Combat.SS.Struck=[[DARK_RED]]Geraakt door GEKARTELDE SLAG!
|
||||
Swords.Effect.2=Gekartelde Slag (Vermogen)
|
||||
Swords.Effect.4=Gekartelde Slag Bloed+
|
||||
Swords.Effect.6=Bloeden
|
||||
Swords.Listener=Zwaarden:
|
||||
Swords.SkillName=ZWAARDEN
|
||||
Swords.Skills.SS.On=[[GREEN]]**GEKARTELDE SLAG GEACTIVEERD**
|
||||
@@ -40,6 +80,19 @@ Swords.Skills.SS.Other.Off=[[RED]]Gekartelde Slag[[GREEN]] is uitgewerkt voor [[
|
||||
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] heeft [[RED]]Gekartelde Slag[[DARK_GREEN]]gebruikt!
|
||||
Swords.Skillup=[[YELLOW]]Zwaarden ervaring toegenomen met {0}. Totaal: ({1})
|
||||
Taming.Ability.Bonus.2=Dikke Vacht
|
||||
Taming.Ability.Bonus.7=+{0} Schade
|
||||
Taming.Effect.10=Schokbestendig
|
||||
Taming.Effect.11=Explosieve Schade Verkleining
|
||||
Taming.Effect.12=Roep van het WIld
|
||||
Taming.Effect.13=Roep een dier aan je zijde op
|
||||
Taming.Effect.14=[[GRAY]]COTW (Ocelot): Buk en linkermuisknop met {0} Vis in je hand
|
||||
Taming.Effect.15=[[GRAY]]COTW (Wolf): Buk en linkermuisknop met {0} Botten in je hand
|
||||
Taming.Effect.16=Fast Food Service
|
||||
Taming.Effect.17=Kans voor wolven na een aanval te regeneren
|
||||
Taming.Listener.Wolf=[[DARK_GRAY]]Jouw wolf dribbelt terug naar je...
|
||||
Taming.Listener=Temming:
|
||||
Taming.Skillup=[[YELLOW]]Temmings ervaring toegenomen met {0}. Totaal ({1})
|
||||
Taming.Summon.Complete=[[GREEN]]Oproepen voltooid
|
||||
Unarmed.Ability.Berserk.Length=[[RED]]Razernij Lengte: [[YELLOW]]{0}s
|
||||
Unarmed.Effect.0=Razernij (KRACHT)
|
||||
Unarmed.Listener=Ongewapend:
|
||||
@@ -51,9 +104,10 @@ Unarmed.Skills.Berserk.Refresh=[[GREEN]]Jou[[YELLOW]]Razernij [[GREEN]]kracht is
|
||||
Woodcutting.Ability.0=Bladblazer
|
||||
Woodcutting.Ability.1=Bladeren wegblazen
|
||||
Woodcutting.Effect.2=Bladblazer
|
||||
Woodcutting.Listener=Houthakken
|
||||
Woodcutting.Listener=Houthakken:
|
||||
Woodcutting.SkillName=Houthakken
|
||||
Woodcutting.Skills.TreeFeller.Other.Off=[[RED]]Boom Veller[[GREEN]] is uitgewerkt voor [[YELLOW]]{0}
|
||||
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK)GREEN]]heeft[[RED]]Tree Feller[[DARK_GREEN]]gebruikt!
|
||||
Woodcutting.Skills.TreeFeller.Splinter=[[RED]]JOU BIJL SPLINTERT IN DUIZENDEN STUKJES!
|
||||
Woodcutting.Skillup=[[YELLOW]]Houthakken toegenomen met {0}. Totaal ({1})
|
||||
Ability.Generic.Template.Lock=[[GRAY]]{0}
|
||||
@@ -62,18 +116,21 @@ Combat.ArrowDeflect=[[WHITE]]**PIJL AFWIJKING**
|
||||
Combat.BeastLore=[[GREEN]]**WOLFINSPECTIE**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Levens ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Eigenaar ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Je bent geraakt door een brandende pijl\\!
|
||||
Combat.Gore=[[GREEN]]**GESTOLD BLOED**
|
||||
Combat.Ignition=[[RED]]**ONTSTEKING**
|
||||
Combat.StruckByGore=[[RED]]**VAST DOOR GESTOLD BLOED**
|
||||
Combat.TargetDazed=Doelwit was [[DARK_RED]]versuft
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Je raakte Fuzzy aan. Je voelt je duizelig.
|
||||
Commands.AdminChat.Off=Alleen Admin gesprek[[RED]]Uit
|
||||
Commands.AdminToggle=[[RED]]- Zet Admin Chat aan/uit
|
||||
Commands.Disabled=[[RED]]Deze opdracht is gedeactiveerd.
|
||||
Commands.DoesNotExist=[[RED]]Speler bestaat niet in de database!
|
||||
Commands.GodMode.Disabled=[[YELLOW]]mcMMO GodModus Uitgeschakeld
|
||||
Commands.Invite.Accepted=[[GREEN]]Uitnodiging geacepteerd. Jij hebt de groep {0} betreden
|
||||
Commands.mcgod=[[RED]]- GodModus Schakelen
|
||||
Commands.mcrank.Player=[[RED]]DOELWIT: [[WHITE]]{0}
|
||||
Commands.mmoedit=[player] <Kracht> <Nieuwe waarde> [[RED]] - Pas doel aan
|
||||
Commands.mmoupdate.Start=[[GRAY]]Beginnen met converteren...
|
||||
Commands.ModDescription=[[RED]]- Lees instructie mod beschrijving
|
||||
Commands.NoConsole=Deze commando wordt niet ondersteund vanuit de console.
|
||||
Commands.Party.ShareMode=[[DARK_GRAY]]DEEL MODUS:
|
||||
Commands.Party.Accept=[[RED]]- Accepteer groep uitnodiging
|
||||
@@ -81,22 +138,30 @@ Commands.Party.Chat.Off=Groep\'s Chat [[RED]]Uit
|
||||
Commands.Party.Chat.On=Groep\'s Chat [[GREEN]]Aan
|
||||
Commands.Party.Commands=[[GREEN]]--GROEP COMMANDOS--
|
||||
Commands.Party.Invite.0=[[RED]]ALERT: [[GREEN]]Jij hebt een groep uitnodiging ontvangen voor {0} van {1}
|
||||
Commands.Party.Invite=[[RED]]- Verstuur groepsuitnodiging
|
||||
Commands.Party.Create=[[GRAY]]Groep aangemaakt: {0}
|
||||
Commands.Party.Rename=[[GRAY]]Groep\'s naan veranderd naar: [[WHITE]]{0}
|
||||
Commands.Party.AlreadyExists=[[DARK_RED]]Groep {0} bestaat al!
|
||||
Commands.Party.Kick=[[RED]]Je bent verwijderd uit de groep {0}!
|
||||
Commands.Party.Leave=[[RED]]Je hebt de groep verlaten
|
||||
Commands.Party.Members.Header=[[RED]]-----[][[GREEN]]LEDEN[[RED]][]-----
|
||||
Commands.Party.Members={0}
|
||||
Commands.Party.None=[[RED]]Je bent niet in een groep.
|
||||
Commands.Party.Quit=[[RED]]- Verlaat je huidige groep
|
||||
Commands.Party.Teleport=<player> [[RED]]- Teleport naar een groepslid
|
||||
Commands.Party.Toggle=[[RED]]- Zet Party Chat aan/uit
|
||||
Commands.Party1=[[RED]]- Maak een nieuwe groep
|
||||
Commands.ptp.RequestExpired=[[RED]]Groep\'s teleport verzoek is verlopen!
|
||||
Commands.PowerLevel.Leaderboard=[[YELLOW]]--mcMMO[[BLUE]] Kracht Level [[YELLOW]]Leiderbord--
|
||||
Commands.PowerLevel=[[DARK_RED]]KRACHT LEVEL: [[GREEN]]{0}
|
||||
Commands.Usage.Level=niveau
|
||||
Commands.Usage.Message=bericht
|
||||
Commands.Usage.PartyName=naam
|
||||
Commands.Usage.Password=wachtwoord
|
||||
Commands.Usage.XP=xp
|
||||
mcMMO.NoSkillNote=[[DARK_GRAY]]als je geen toegang hebt tot een vermogen, wordt die hier niet getoont
|
||||
Party.Forbidden=[mcMMO] Groepen niet toegestaan op deze wereld (zie Machtigingen)
|
||||
Party.InformedOnQuit={0} [[GREEN]]heeft de groep verlaten
|
||||
Party.InvalidName=[[DARK_RED]]Dat is geen geldige groep\'s naam.
|
||||
Party.IsLocked=[[RED]]Deze groep is al gesloten!
|
||||
Party.IsntLocked=[[RED]]Deze groep is niet gesloten!
|
||||
@@ -109,24 +174,37 @@ Party.Owner.Player=[[GREEN]]Jij bent nu de groep eigenaar.
|
||||
Party.Password.None=[[RED]]Deze groep is vergrendeld met een wachtwoord. Voer het wachtwoord in om in deze groep te komen.
|
||||
Party.Password.Incorrect=[[RED]]Groeps- wachtwoord is incorrect.
|
||||
Party.Password.Set=[[GREEN]]Groep wachtwoord veranderd in {0}
|
||||
Party.Password.Removed=[[GREEN]]Groepswachtwoord is verwijderd.
|
||||
Party.Player.Invalid=[[RED]]Dat is geen geldige speler.
|
||||
Party.NotOnline=[[DARK_RED]]{0} is niet online!
|
||||
Party.Player.InSameParty=[[RED]]{0} zit al in uw groep!
|
||||
Party.PlayerNotInParty=[[DARK_RED]]{0} zit niet in een groep
|
||||
Party.Specify=[[RED]]Je moet een groep invullen.
|
||||
Party.Teleport.Dead=[RED]Je kan niet naar een dode speler teleporteren.
|
||||
Party.Teleport.Target=[[GREEN]]{0} is naar jou toe gedeporteerd.
|
||||
Party.Teleport.Disabled=[[RED]]{0} staat groeps-teleportaties niet toe.
|
||||
Party.Join.Self=[[RED]]Je kan niet meedoen met jezelf!
|
||||
Party.Unlocked=[[GRAY]]Groep is ontgrendeld
|
||||
Party.Status.Unlocked=[[DARK_GREEN]](OPEN)
|
||||
Party.ShareMode.None=NIKS
|
||||
Party.ShareMode.Equal=GELIJK
|
||||
Party.ShareMode.Random=WILLEKEURIG
|
||||
Party.ExpShare.Disabled=[[RED]]Groep experience delen in uitgeschakeld.
|
||||
Party.ItemShare.Disabled=[[RED]]Groeps item delen is uitgezet.
|
||||
Commands.XPGain.Acrobatics=Vallen
|
||||
Commands.XPGain.Axes=Monsters aanvallen
|
||||
Commands.XPGain.Excavation=Graven en schatten vinden
|
||||
Commands.XPGain.Fishing=Vissen (Wat denk je zelf?)
|
||||
Commands.XPGain.Herbalism=Kruiden Verzamelen
|
||||
Commands.XPGain.Mining=Het Mijnen van Steen & Erts
|
||||
Commands.XPGain.Repair=Repareren
|
||||
Commands.XPGain.Swords=Monsters aanvallen
|
||||
Commands.XPGain.Taming=Dieren Temmen, of vechten met je wolven
|
||||
Commands.XPGain=[[DARK_GRAY]]XP GEWONNEN: [[WHITE]]{0}
|
||||
Commands.xplock.locked=[[GOLD]]Jou XP BALK is nu bevroren op {0}!
|
||||
Commands.xplock.unlocked=[[GOLD]]Jou XP BALK is nu[[GREEN]]ONTGRENDELD[[GOLD]]!
|
||||
Commands.xprate.over=[[RED]]mcMMO XP Verdubbeling Evenement is VOORBIJ!!
|
||||
Commands.xprate.proper.0=[[RED]]Juiste gebruiking om de XP snelheid te veranderen is /xprate <integer> <true/false>
|
||||
XPRate.Event=[[GOLD]]mcMMO is momenteel in een XP verdubbeling evenement! XP verdubbeling is {0}x!
|
||||
Effects.Effects=EFFECTEN
|
||||
Guides.Axes=Guide coming soon...
|
||||
@@ -135,8 +213,12 @@ Guides.Mining=[[DARK_AQUA]]About Mining:\n[[YELLOW]]Mining consists of mining st
|
||||
Inspect.OfflineStats=mcMMO statistieken voor offline-speler [[YELLOW]]{0}
|
||||
Inspect.Stats=[[GREEN]]mcMMO Statistieken voor [[YELLOW]]{0}
|
||||
Inspect.TooFar=[[RED]]Jij bent te ver weg om deze speler te inspecteren!
|
||||
Item.ChimaeraWing.Pass=**CHIMAERA VLEUGEL**
|
||||
Item.Injured.Wait=Je bent recent gewond geraakt en je moet wachter om dit te gebruiken. [[YELLOW]]({0}s)
|
||||
Skills.Disarmed=[[DARK_RED]]Je bent ontwapend!
|
||||
Skills.NeedMore=[[DARK_RED]]Jij hebt te weinig [[GRAY]]{0}
|
||||
Skills.TooTired=[[RED]]Jij bent te moe om die kracht opnieuw te gebruiken. [[YELLOW]]({0}s)
|
||||
Stats.Header.Combat=[[GOLD]]-=Strijd Ervaring=-
|
||||
Stats.Header.Gathering=[[GOLD]]-=VERZAMELAAR VAARDIGHEDEN=-
|
||||
Stats.Header.Misc=[[GOLD]]-=MISC ERVARING=-
|
||||
Stats.Own.Stats=[[GREEN]][mcMMO] Stats
|
||||
|
||||
@@ -79,9 +79,7 @@ Combat.ArrowDeflect=[[WHITE]]**ODBICIE STRZALY**
|
||||
Combat.BeastLore=[[GREEN]]**WIEDZA O ZWIERZETACH**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Zycie ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Wlasciciel ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Zostales trafiony plonaca strzala\\!
|
||||
Combat.Gore=[[GREEN]]**KRWOTOK**
|
||||
Combat.Ignition=[[RED]]**PODPALENIE**
|
||||
Combat.StruckByGore=[[RED]]**WYKRWAWIENIE**
|
||||
Combat.TargetDazed=Cel zostal [[DARK_RED]]oszolomiony.
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Zostales oszolomiony.
|
||||
@@ -134,7 +132,6 @@ Guides.Smelting=Wkrotce...
|
||||
Inspect.OfflineStats=mcMMO Stats for Offline Player [[YELLOW]]{0}
|
||||
Inspect.Stats=[[GREEN]]mcMMO Stats for [[YELLOW]]{0}
|
||||
Inspect.TooFar=[[RED]]You are too far away to inspect that player!
|
||||
Item.ChimaeraWing.Fail=**CHIMAERA WING FAILED!**
|
||||
Item.ChimaeraWing.Pass=**SKRZYD\u0141O CHIMERY**
|
||||
Skills.Disarmed=[[DARK_RED]]Zostales rozbrojony!
|
||||
Skills.NeedMore=[[DARK_RED]]Potrzebujesz wiecej
|
||||
|
||||
@@ -10,9 +10,7 @@ Combat.ArrowDeflect=[[WHITE]]*DESVIOU A FLECHA*
|
||||
Combat.BeastLore=[[GREEN]]*CONHECIMENTO DE FERAS*
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]Dono ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]Voc\u00ea foi atingido por uma flecha flamejante\\!
|
||||
Combat.Gore=[[GREEN]]*MORDIDA*
|
||||
Combat.Ignition=[[RED]]*IGNI\u00c7AO*
|
||||
Combat.StruckByGore=[[RED]]*ATINGIDO POR MORDIDA*
|
||||
Combat.TargetDazed=Alvo foi [[DARK_RED]]Atordoado
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]Visao turva. Sente Tonturas.
|
||||
|
||||
@@ -33,7 +33,6 @@ Axes.Ability.Bonus.4=\u0412\u0435\u043b\u0438\u043a\u0438\u0439 \u0423\u0434\u04
|
||||
Axes.Ability.Bonus.5=\u041d\u0430\u043d\u043e\u0441\u0438\u0442 {0} \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0423\u0440\u043e\u043d\u0430 \u0431\u0435\u0437\u043e\u0440\u0443\u0436\u043d\u044b\u043c \u0432\u0440\u0430\u0433\u0430\u043c
|
||||
Axes.Ability.Lower=[[GREEN]]**\u0422\u041e\u041f\u041e\u0420 \u0412 \u041e\u0411\u042b\u0427\u041d\u041e\u041c \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0418**
|
||||
Axes.Ability.Ready=[[GREEN]]**\u0422\u041e\u041f\u041e\u0420 \u0412 \u0421\u041e\u0421\u0422\u041e\u042f\u041d\u0418\u0418 \u0413\u041e\u0422\u041e\u0412\u041d\u041e\u0421\u0422\u0418**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]\u041f\u043e\u0440\u0430\u0436\u0435\u043d \u0421\u041f\u041b\u042d\u0428 \u0423\u0414\u0410\u0420\u041e\u041c!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]\u0412\u0430\u043c \u043d\u0430\u043d\u0435\u0441\u0435\u043d\u043e \u041a\u0420\u0418\u0422\u0418\u0427\u0415\u0421\u041a\u041e\u0415 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435!
|
||||
Axes.Combat.CritChance=[[RED]]\u0428\u0430\u043d\u0441 \u043d\u0430\u043d\u0435\u0441\u0442\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0434\u0430\u0440: [[YELLOW]]{0}%
|
||||
Axes.Combat.CriticalHit=[[RED]]\u041a\u0420\u0418\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0419 \u0423\u0414\u0410\u0420!
|
||||
@@ -122,7 +121,7 @@ Herbalism.SkillName=\u0422\u0420\u0410\u0412\u041d\u0418\u0427\u0415\u0421\u0422
|
||||
Herbalism.Skills.GTe.Off=[[RED]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u041e\u0437\u0435\u043b\u0435\u043d\u0435\u043d\u0438\u0435\" \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435**
|
||||
Herbalism.Skills.GTe.On=[[GREEN]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u041e\u0437\u0435\u043b\u0435\u043d\u0435\u043d\u0438\u0435\" \u0410\u041a\u0422\u0418\u0412\u0418\u0420\u041e\u0412\u0410\u041d\u041e**
|
||||
Herbalism.Skills.GTe.Refresh=[[GREEN]]\u0412\u0430\u0448\u0435 \u0443\u043c\u0435\u043d\u0438\u0435 [[YELLOW]]\"\u041e\u0437\u0435\u043b\u0435\u043d\u0435\u043d\u0438\u0435\" [[GREEN]]\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e!
|
||||
Herbalism.Skills.GTe.Other.Off=[[RED]]\u0423\u043c\u0435\u043d\u0438\u0435 \"\u041e\u0437\u0435\u043b\u0435\u043d\u0435\u043d\u0438\u0435\"[[GREEN]] \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443 [[YELLOW]]{0}
|
||||
Herbalism.Skills.GTe.Other.Off=[[GREEN]] \u0423\u043c\u0435\u043d\u0438\u0435 \"[[RED]]\u041e\u0437\u0435\u043b\u0435\u043d\u0435\u043d\u0438\u0435[[GREEN]] \" \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443 [[YELLOW]]{0}
|
||||
Herbalism.Skills.GTe.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0443\u043c\u0435\u043d\u0438\u0435 [[RED]] \"\u041e\u0437\u0435\u043b\u0435\u043d\u0435\u043d\u0438\u0435\"!
|
||||
Herbalism.Skillup=[[YELLOW]]\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430\u0432\u044b\u043a\u0430 \"\u0422\u0440\u0430\u0432\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u043e\" \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u043d\u0430 {0}. \u0412\u0441\u0435\u0433\u043e ({1})
|
||||
Mining.Ability.Length=[[RED]]\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u043c\u0435\u043d\u0438\u044f \"\u0421\u0443\u043f\u0435\u0440 \u0414\u0440\u043e\u0431\u0438\u043b\u043a\u0430\": [[YELLOW]]{0}\u0441.
|
||||
@@ -152,14 +151,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u0438\u0441\u043
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u0412\u0430\u0448\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c [[YELLOW]]\u041a\u043e\u043f\u0430\u0442\u0435\u043b\u044c [[GREEN]]\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430!
|
||||
Mining.Skillup=[[YELLOW]]\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430\u0432\u044b\u043a\u0430 \"\u0428\u0430\u0445\u0442\u0451\u0440\u0441\u0442\u0432\u043e\" \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u043d\u0430 {0}. \u0412\u0441\u0435\u0433\u043e ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**\u0411\u0423\u041c**
|
||||
Mining.Blast.Effect.0=+35% \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0443\u0434
|
||||
Mining.Blast.Effect.1=+40% \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0443\u0434
|
||||
Mining.Blast.Effect.2=+45% \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0443\u0434, \u0431\u0435\u0437 \u043c\u0443\u0441\u043e\u0440\u0430
|
||||
Mining.Blast.Effect.3=+50% \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0443\u0434, \u0431\u0435\u0437 \u043c\u0443\u0441\u043e\u0440\u0430
|
||||
Mining.Blast.Effect.4=+55% \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0443\u0434, \u0431\u0435\u0437 \u043c\u0443\u0441\u043e\u0440\u0430, \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0434\u0440\u043e\u043f
|
||||
Mining.Blast.Effect.5=+60% \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0443\u0434, \u0431\u0435\u0437 \u043c\u0443\u0441\u043e\u0440\u0430, \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0434\u0440\u043e\u043f
|
||||
Mining.Blast.Effect.6=+65% \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0443\u0434, \u0431\u0435\u0437 \u043c\u0443\u0441\u043e\u0440\u0430, \u0442\u0440\u043e\u0439\u043d\u043e\u0439 \u0434\u0440\u043e\u043f
|
||||
Mining.Blast.Effect.7=+70% \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0443\u0434, \u0431\u0435\u0437 \u043c\u0443\u0441\u043e\u0440\u0430, \u0442\u0440\u043e\u0439\u043d\u043e\u0439 \u0434\u0440\u043e\u043f
|
||||
Mining.Blast.Radius.Increase=[[RED]]\u0420\u0430\u0434\u0438\u0443\u0441 \u0412\u0437\u0440\u044b\u0432\u0430 \u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d: [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]\u041f\u043e\u0434\u0440\u044b\u0432\u043d\u0430\u044f \u0414\u043e\u0431\u044b\u0447\u0430: [[YELLOW]] \u0420\u0430\u043d\u0433 {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0443\u043c\u0435\u043d\u0438\u0435 [[RED]]\"\u041f\u043e\u0434\u0440\u044b\u0432\u043d\u0430\u044f \u0414\u043e\u0431\u044b\u0447\u0430\"!
|
||||
@@ -235,7 +226,7 @@ Swords.SkillName=\u0412\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u041c\u0435\u
|
||||
Swords.Skills.SS.Off=[[RED]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u0420\u0435\u0436\u0443\u0449\u0438\u0439 \u0443\u0434\u0430\u0440\" \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435**
|
||||
Swords.Skills.SS.On=[[GREEN]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u0420\u0435\u0436\u0443\u0449\u0438\u0439 \u0443\u0434\u0430\u0440\" \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043e**
|
||||
Swords.Skills.SS.Refresh=[[GREEN]]\u0412\u0430\u0448\u0435 \u0443\u043c\u0435\u043d\u0438\u0435 [[YELLOW]]\"\u0420\u0435\u0436\u0443\u0449\u0438\u0439 \u0423\u0434\u0430\u0440\" [[GREEN]]\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e!
|
||||
Swords.Skills.SS.Other.Off=[[RED]]\u0423\u043c\u0435\u043d\u0438\u0435 \"\u0420\u0435\u0436\u0443\u0449\u0438\u0439 \u0443\u0434\u0430\u0440\"[[GREEN]] \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443 [[YELLOW]]{0}
|
||||
Swords.Skills.SS.Other.Off=[[GREEN]]\u0423\u043c\u0435\u043d\u0438\u0435 \"[[RED]]\u0420\u0435\u0436\u0443\u0449\u0438\u0439 \u0443\u0434\u0430\u0440[[GREEN]]\" \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443 [[YELLOW]]{0}
|
||||
Swords.Skills.SS.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0443\u043c\u0435\u043d\u0438\u0435 [[RED]]\"\u0420\u0435\u0436\u0443\u0449\u0438\u0439 \u0423\u0434\u0430\u0440\"!
|
||||
Swords.Skillup=[[YELLOW]]\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430\u0432\u044b\u043a\u0430 \"\u0412\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u041c\u0435\u0447\u0435\u043c\" \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u043d\u0430 {0}. \u0412\u0441\u0435\u0433\u043e ({1})
|
||||
Swords.SS.Length=[[RED]]\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u043c\u0435\u043d\u0438\u044f \"\u0420\u0435\u0436\u0443\u0449\u0438\u0439 \u0423\u0434\u0430\u0440\": [[YELLOW]]{0}\u0441.
|
||||
@@ -249,6 +240,7 @@ Taming.Ability.Bonus.6=\u041e\u0441\u0442\u0440\u044b\u0435 \u041a\u043e\u0433\u
|
||||
Taming.Ability.Bonus.7=+{0} \u0423\u0440\u043e\u043d\u0430
|
||||
Taming.Ability.Bonus.8=\u0411\u044b\u0441\u0442\u0440\u043e\u0435 \u041f\u0438\u0442\u0430\u043d\u0438\u0435
|
||||
Taming.Ability.Bonus.9={0}% \u0428\u0430\u043d\u0441 \u0432\u044b\u043b\u0435\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0430\u0442\u0430\u043a\u0435
|
||||
Taming.Ability.Bonus.10=\u0421\u0432\u044f\u0442\u043e\u0439 \u041f\u0435\u0441
|
||||
Taming.Ability.Locked.0=\u0417\u0410\u0411\u041b\u041e\u041a\u0418\u0420\u041e\u0412\u0410\u041d\u041e \u0414\u041e \u0414\u041e\u0421\u0422\u0418\u0416\u0415\u041d\u0418\u042f {0}+ \u0423\u0420\u041e\u0412\u041d\u042f \u041d\u0410\u0412\u042b\u041a\u0410 (\u042d\u041a\u041e\u041b\u041e\u0413\u0418\u0427\u0415\u0421\u041a\u041e\u0415 \u0421\u041e\u0417\u041d\u0410\u041d\u0418\u0415)
|
||||
Taming.Ability.Locked.1=\u0417\u0410\u0411\u041b\u041e\u041a\u0418\u0420\u041e\u0412\u0410\u041d\u041e \u0414\u041e \u0414\u041e\u0421\u0422\u0418\u0416\u0415\u041d\u0418\u042f {0}+ \u0423\u0420\u041e\u0412\u041d\u042f \u041d\u0410\u0412\u042b\u041a\u0410 (\u0413\u0423\u0421\u0422\u041e\u0419 \u041c\u0415\u0425)
|
||||
Taming.Ability.Locked.2=\u0417\u0410\u0411\u041b\u041e\u041a\u0418\u0420\u041e\u0412\u0410\u041d\u041e \u0414\u041e \u0414\u041e\u0421\u0422\u0418\u0416\u0415\u041d\u0418\u042f {0}+ \u0423\u0420\u041e\u0412\u041d\u042f \u041d\u0410\u0412\u042b\u041a\u0410 (\u0417\u0410\u0429\u0418\u0422\u0410 \u041e\u0422 \u0428\u041e\u041a\u0410)
|
||||
@@ -265,6 +257,8 @@ Taming.Effect.14=[[GRAY]]COTW (\u041e\u0446\u0435\u043b\u043e\u0442): \u041f\u04
|
||||
Taming.Effect.15=[[GRAY]]COTW (\u0412\u043e\u043b\u043a): \u041f\u0440\u0438\u0441\u044f\u0434\u044c\u0442\u0435 \u0438 \u043a\u043b\u0438\u043a\u043d\u0438\u0442\u0435 \u043b\u0435\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0441 {0} \u041a\u043e\u0441\u0442\u044c\u044e \u0432 \u0440\u0443\u043a\u0435
|
||||
Taming.Effect.16=\u0411\u044b\u0441\u0442\u0440\u043e\u0435 \u041f\u0438\u0442\u0430\u043d\u0438\u0435
|
||||
Taming.Effect.17=\u0423 \u0432\u043e\u043b\u043a\u043e\u0432 \u0435\u0441\u0442\u044c \u0448\u0430\u043d\u0441 \u0432\u044b\u043b\u0435\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0430\u0442\u0430\u043a\u0435
|
||||
Taming.Effect.18=\u0421\u0432\u044f\u0442\u043e\u0439 \u041f\u0435\u0441
|
||||
Taming.Effect.19=\u0418\u0437\u043b\u0435\u0447\u0435\u043d\u043d\u044b\u0439 \u0432\u043e\u043b\u0448\u0435\u0431\u0441\u0442\u0432\u043e\u043c & \u044f\u0434\u043e\u043c
|
||||
Taming.Effect.2=\u041f\u0440\u043e\u043d\u0437\u0430\u043d\u0438\u0435 \u041a\u043b\u044b\u043a\u0430\u043c\u0438
|
||||
Taming.Effect.3=\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0423\u0434\u0430\u0440, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u041a\u0440\u043e\u0432\u043e\u0442\u0435\u0447\u0435\u043d\u0438\u0435
|
||||
Taming.Effect.4=\u041e\u0441\u0442\u0440\u044b\u0435 \u041a\u043e\u0433\u0442\u0438
|
||||
@@ -278,7 +272,7 @@ Taming.Listener=\u0423\u043a\u0440\u043e\u0449\u0435\u043d\u0438\u0435:
|
||||
Taming.SkillName=\u0423\u041a\u0420\u041e\u0429\u0415\u041d\u0418\u0415
|
||||
Taming.Skillup=[[YELLOW]]\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430\u0432\u044b\u043a\u0430 \"\u0423\u043a\u0440\u043e\u0449\u0435\u043d\u0438\u0435\" \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u043d\u0430 {0}. \u0412\u0441\u0435\u0433\u043e ({1})
|
||||
Taming.Summon.Complete=[[GREEN]]\u0412\u044b\u0437\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d
|
||||
Taming.Summon.Fail.Ocelot=[[RED]]\u0412\u043e\u043a\u0440\u0443\u0433 \u0412\u0430\u0441 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043e\u0446\u0435\u043b\u043e\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0437\u0432\u0430\u0442\u044c \u0435\u0449\u0435.
|
||||
Taming.Summon.Fail.Ocelot=[[RED]]\u0412\u043e\u043a\u0440\u0443\u0433 \u0412\u0430\u0441 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043e\u0446\u0435\u043b\u043e\u0442\u043e\u0432.
|
||||
Taming.Summon.Fail.Wolf=[[RED]]\u0412\u043e\u043a\u0440\u0443\u0433 \u0412\u0430\u0441 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u043b\u043a\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0437\u0432\u0430\u0442\u044c \u0435\u0449\u0435.
|
||||
Unarmed.Ability.Berserk.Length=[[RED]]\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u043c\u0435\u043d\u0438\u044f \"\u0411\u0435\u0440\u0441\u0435\u0440\u043a\": [[YELLOW]]{0}\u0441.
|
||||
Unarmed.Ability.Bonus.0=\u0421\u0442\u0438\u043b\u044c \"\u0416\u0435\u043b\u0435\u0437\u043d\u044b\u0439 \u041a\u0443\u043b\u0430\u043a\"
|
||||
@@ -304,7 +298,7 @@ Unarmed.Listener=\u0411\u0435\u0437\u043e\u0440\u0443\u0436\u043d\u044b\u0439:
|
||||
Unarmed.SkillName=\u0411\u0415\u0417\u041e\u0420\u0423\u0416\u041d\u042b\u0419
|
||||
Unarmed.Skills.Berserk.Off=[[RED]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u0411\u0435\u0440\u0441\u0435\u0440\u043a\" \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435**
|
||||
Unarmed.Skills.Berserk.On=[[GREEN]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u0411\u0435\u0440\u0441\u0435\u0440\u043a\" \u0410\u041a\u0422\u0418\u0412\u0418\u0420\u041e\u0412\u0410\u041d\u041e**
|
||||
Unarmed.Skills.Berserk.Other.Off=[[RED]]\u0423\u043c\u0435\u043d\u0438\u0435 \"\u0411\u0435\u0440\u0441\u0435\u0440\u043a\"[[GREEN]] \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443 [[YELLOW]]{0}
|
||||
Unarmed.Skills.Berserk.Other.Off=[[GREEN]]\u0423\u043c\u0435\u043d\u0438\u0435 \"[[RED]]\u0411\u0435\u0440\u0441\u0435\u0440\u043a[[GREEN]]\" \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443 [[YELLOW]]{0}
|
||||
Unarmed.Skills.Berserk.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u0432\u043a\u043b\u044e\u0447\u0438\u043b [[RED]]\u0443\u043c\u0435\u043d\u0438\u0435 \"\u0411\u0435\u0440\u0441\u0435\u0440\u043a\"!
|
||||
Unarmed.Skills.Berserk.Refresh=[[GREEN]]\u0412\u0430\u0448\u0435 \u0443\u043c\u0435\u043d\u0438\u0435 [[YELLOW]]\"\u0411\u0435\u0440\u0441\u0435\u0440\u043a\" [[GREEN]]\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e!
|
||||
Unarmed.Skillup=[[YELLOW]]\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430\u0432\u044b\u043a\u0430 \"\u0411\u0435\u0437\u043e\u0440\u0443\u0436\u043d\u044b\u0439\" \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u043d\u0430 {0}. \u0412\u0441\u0435\u0433\u043e ({1})
|
||||
@@ -324,7 +318,7 @@ Woodcutting.SkillName=\u041b\u0415\u0421\u041e\u0420\u0423\u0411\u0421\u0422\u04
|
||||
Woodcutting.Skills.TreeFeller.Off=[RED]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u041b\u0435\u0441\u043e\u0440\u0443\u0431\" \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435**
|
||||
Woodcutting.Skills.TreeFeller.On=[[GREEN]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u041b\u0435\u0441\u043e\u0440\u0443\u0431\" \u0410\u041a\u0422\u0418\u0412\u0418\u0420\u041e\u0412\u0410\u041d\u041e**
|
||||
Woodcutting.Skills.TreeFeller.Refresh=[[GREEN]]\u0412\u0430\u0448\u0435 \u0443\u043c\u0435\u043d\u0438\u0435 [[YELLOW]]\"\u041b\u0435\u0441\u043e\u0440\u0443\u0431\" [[GREEN]]\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e!
|
||||
Woodcutting.Skills.TreeFeller.Other.Off=[[RED]]\u0423\u043c\u0435\u043d\u0438\u0435 \"\u041b\u0435\u0441\u043e\u0440\u0443\u0431\"[[GREEN]] \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443 [[YELLOW]]{0}
|
||||
Woodcutting.Skills.TreeFeller.Other.Off=[[GREEN]]\u0423\u043c\u0435\u043d\u0438\u0435 \"[[RED]]\u041b\u0435\u0441\u043e\u0440\u0443\u0431[[GREEN]]\" \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443 [[YELLOW]]{0}
|
||||
Woodcutting.Skills.TreeFeller.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0443\u043c\u0435\u043d\u0438\u0435 [[RED]]\"\u041b\u0435\u0441\u043e\u0440\u0443\u0431\"!
|
||||
Woodcutting.Skills.TreeFeller.Splinter=[[RED]]\u0412\u0410\u0428 \u0422\u041e\u041f\u041e\u0420 \u0420\u0410\u0421\u041a\u041e\u041b\u041e\u041b\u0421\u042f \u041d\u0410 \u0414\u0415\u0421\u042f\u0422\u041a\u0418 \u041a\u0423\u0421\u041a\u041e\u0412!
|
||||
Woodcutting.Skills.TreeFellerThreshold=[[RED]]\u042d\u0442\u043e \u0434\u0435\u0440\u0435\u0432\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0435!
|
||||
@@ -336,9 +330,7 @@ Combat.ArrowDeflect=[[WHITE]]**\u0421\u0422\u0420\u0415\u041b\u0410 \u041e\u0422
|
||||
Combat.BeastLore=[[GREEN]]**\u0423\u043c\u0435\u043d\u0438\u0435 \"\u0423\u0434\u0430\u0440 \u0432\u043e\u043b\u043a\u0430\" \u0410\u041a\u0422\u0418\u0412\u0418\u0420\u041e\u0412\u0410\u041d\u041e**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]\u0417\u0434\u043e\u0440\u043e\u0432\u044c\u0435 ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]\u0412\u044b \u0431\u044b\u043b\u0438 \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u044b \u0433\u043e\u0440\u044f\u0449\u0435\u0439 \u0441\u0442\u0440\u0435\u043b\u043e\u0439!
|
||||
Combat.Gore=[[GREEN]]**\u041f\u0420\u041e\u041d\u0417\u0410\u041d\u0418\u0415 \u041a\u041b\u042b\u041a\u0410\u041c\u0418**
|
||||
Combat.Ignition=[[RED]]**\u0412\u041e\u0421\u041f\u041b\u0410\u041c\u0415\u041d\u0415\u041d\u0418\u0415**
|
||||
Combat.StruckByGore=[[RED]]**\u0412\u0410\u0421 \u041f\u0420\u041e\u041d\u0417\u0418\u041b\u0418 \u041a\u041b\u042b\u041a\u0410\u041c\u0418**
|
||||
Combat.TargetDazed=\u0412\u0430\u0448\u0430 \u0446\u0435\u043b\u044c [[DARK_RED]]\u0428\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]\u0412\u044b \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442\u0435 \u043a\u0440\u043e\u0432\u044c\u044e. \u041a\u0440\u0443\u0436\u0438\u0442\u0441\u044f \u0433\u043e\u043b\u043e\u0432\u0430.
|
||||
@@ -357,15 +349,15 @@ Commands.AdminToggle=[[RED]]- \u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u04
|
||||
Commands.Chat.Console=*\u041a\u043e\u043d\u0441\u043e\u043b\u044c*
|
||||
Commands.Disabled=[[RED]]\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430.
|
||||
Commands.DoesNotExist=[[RED]]\u0418\u0433\u0440\u043e\u043a\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445!
|
||||
Commands.GodMode.Disabled=[[YELLOW]]\u0420\u0435\u0436\u0438\u043c \u0411\u043e\u0433\u0430 mcMMO \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d
|
||||
Commands.GodMode.Enabled=[[YELLOW]]\u0420\u0435\u0436\u0438\u043c \u0411\u043e\u0433\u0430 mcMMO \u0412\u043a\u043b\u044e\u0447\u0435\u043d
|
||||
Commands.GodMode.Disabled=[[YELLOW]]\u0420\u0435\u0436\u0438\u043c-\u0431\u043e\u0433\u0430 mcMMO \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d
|
||||
Commands.GodMode.Enabled=[[YELLOW]]\u0420\u0435\u0436\u0438\u043c-\u0431\u043e\u0433\u0430 mcMMO \u0412\u043a\u043b\u044e\u0447\u0435\u043d
|
||||
Commands.GodMode.Forbidden=[mcMMO] \u0420\u0435\u0436\u0438\u043c \u0411\u043e\u0433\u0430 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d \u0432 \u044d\u0442\u043e\u043c \u043c\u0438\u0440\u0435 (\u0421\u043c\u043e\u0442\u0440\u0438 Permissions)
|
||||
Commands.Inspect=<player> [[RED]]- \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0438\u0433\u0440\u043e\u043a\u0435
|
||||
Commands.Invite.Accepted=[[GREEN]]\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e. \u0412\u044b \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u043a \u0433\u0440\u0443\u043f\u0435 {0}
|
||||
Commands.Invite.Success=[[GREEN]]\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e.
|
||||
Commands.Leaderboards=<skill> <page> [[RED]]- \u0421\u043f\u0438\u0441\u043a\u0438 \u041b\u0438\u0434\u0435\u0440\u043e\u0432
|
||||
Commands.mcc.Header=[[RED]]---[][[YELLOW]]\u041a\u043e\u043c\u0430\u043d\u0434\u044b mcMMO[[RED]][]---
|
||||
Commands.mcgod=[[RED]]- \u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0420\u0435\u0436\u0438\u043c \u0411\u043e\u0433\u0430
|
||||
Commands.mcgod=[[RED]]- \u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0440\u0435\u0436\u0438\u043c-\u0431\u043e\u0433\u0430 mcMMO
|
||||
Commands.mchud.Invalid=[[RED]]\u042d\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u041f\u0430\u043d\u0435\u043b\u0438 \u0412\u0430\u0436\u043d\u043e\u0439 \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.
|
||||
Commands.mcpurge.Success=[[GREEN]]\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044b\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430!
|
||||
Commands.mcrank.Heading=[[GOLD]]-=\u041f\u0415\u0420\u0421\u041e\u041d\u0410\u041b\u042c\u041d\u042b\u0415 \u0420\u0410\u041d\u0413\u0418=-
|
||||
@@ -377,12 +369,15 @@ Commands.mcrefresh.Success=[[RED]]{0} \u043e\u0447\u043a\u043e\u0432 \u0443\u043
|
||||
Commands.mcremove.Success=[[GREEN]]{0} \u0431\u044b\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0434\u0430\u043b\u0435\u043d \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445!
|
||||
Commands.mctop.Tip=[[GOLD]]\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 [[RED]]/mcrank[[GOLD]] \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u043d\u0433\u0438!
|
||||
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0446\u0435\u043b\u0438
|
||||
Commands.mmoedit.AllSkills.1=[[GREEN]]\u0412\u0430\u0448 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u0432\u044b\u043a\u0430\u0445 \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 {0}!
|
||||
Commands.mmoedit.Modified.1=[[GREEN]]\u0412\u0430\u0448 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432 {0} \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 {1}!
|
||||
Commands.mmoedit.Modified.2=[[RED]]{0} \u0431\u044b\u043b\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f {1}.
|
||||
Commands.mmoupdate.Start=[[GRAY]]\u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f...
|
||||
Commands.mmoupdate.Finish=[[GREEN]]\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e!
|
||||
Commands.ModDescription=[[RED]]- \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0430
|
||||
Commands.NoConsole=\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043a\u043e\u043d\u0441\u043e\u043b\u0438
|
||||
Commands.Notifications.On=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u043e [[GREEN]] \u043d\u0430
|
||||
Commands.Offline=[RED]] \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u0433\u0440\u043e\u043a\u043e\u0432.
|
||||
Commands.Other=[[GREEN]]--\u0414\u0420\u0423\u0413\u0418\u0415 \u041a\u041e\u041c\u0410\u041d\u0414\u042b--
|
||||
Commands.Party.Header=[[RED]]-----[][[GREEN]]\u0413\u0420\u0423\u041f\u041f\u0410[[RED]][]-----
|
||||
Commands.Party.Status=[[DARK_GRAY]]\u041d\u0410\u0417\u0412\u0410\u041d\u0418\u0415: [[WHITE]]{0} {1}
|
||||
@@ -433,24 +428,29 @@ Commands.SkillInfo=/<skill> [[RED]]- \u041f\u043e\u0441\u043c\u043e\u0442\u0440\
|
||||
Commands.Stats.Self=\u0412\u0410\u0428\u0410 \u0421\u0422\u0410\u0422\u0418\u0421\u0422\u0418\u041a\u0410
|
||||
Commands.Stats=[[RED]]- \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0412\u0430\u0448\u0443 mcMMO \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443
|
||||
Commands.ToggleAbility=[[RED]]- \u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u043c\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u043c\u044b\u0448\u0438
|
||||
Commands.Usage.0=[[RED]]\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 /{0}
|
||||
Commands.Usage.1=[[RED]]\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 /{0} {1}
|
||||
Commands.Usage.2=[[RED]]\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 /{0} {1} {2}
|
||||
Commands.Usage.3=[[RED]]\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 /{0} {1} {2} {3}
|
||||
Commands.Usage.Level=level
|
||||
Commands.Usage.Message=message
|
||||
Commands.Usage.Page=page
|
||||
Commands.Usage.PartyName=\u0438\u043c\u044f
|
||||
Commands.Usage.Password=password
|
||||
Commands.Usage.Player=player
|
||||
Commands.Usage.Rate=rate
|
||||
Commands.Usage.Skill=skill
|
||||
Commands.Usage.XP=xp
|
||||
mcMMO.NoInvites=[[RED]]\u0421\u0435\u0439\u0447\u0430\u0441 \u0443 \u0412\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0439
|
||||
mcMMO.NoPermission=[[DARK_RED]]\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432.
|
||||
mcMMO.NoSkillNote=[[DARK_GRAY]]\u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0430\u0432\u044b\u043a\u0443, \u0442\u043e \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u0441\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f.
|
||||
mcMMO.NoSkillNote=[[DARK_GRAY]]\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0430\u0432\u044b\u043a\u0443, \u0442\u043e \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0434\u0435\u0441\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0451\u043d.
|
||||
Party.Forbidden=[mcMMO] \u0413\u0440\u0443\u043f\u043f\u044b \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0432 \u044d\u0442\u043e\u043c \u043c\u0438\u0440\u0435 (\u0421\u043c\u043e\u0442\u0440\u0438 Permissions)
|
||||
Party.Help.6=[[RED]] \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0433\u043d\u0430\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u0430 \u0438\u0437 \u0432\u0430\u0448\u0435\u0439 \u043f\u0430\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 [[DARK_AQUA]] {0} <player>
|
||||
Party.InformedOnJoin={0} [[GREEN]]\u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0435\u043d\u0438\u043b\u0441\u044f \u043a \u0432\u0430\u0448\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u0435
|
||||
Party.InformedOnQuit={0} [[GREEN]]\u043f\u043e\u043a\u0438\u043d\u0443\u043b \u0432\u0430\u0448\u0443 \u0433\u0440\u0443\u043f\u043f\u0443
|
||||
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u043d\u0430 [[WHITE]]{1}
|
||||
Party.InvalidName=[[DARK_RED]]\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b.
|
||||
Party.Invite.Self=[[RED]]\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u0441\u0435\u0431\u044f!
|
||||
Party.IsLocked=[[RED]]\u042d\u0442\u0430 \u0433\u0440\u0443\u043f\u043f\u0430 \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0430!
|
||||
Party.IsntLocked=[[RED]]\u042d\u0442\u0430 \u0433\u0440\u0443\u043f\u043f\u0430 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0430!
|
||||
Party.Locked=[[RED]]\u0413\u0440\u0443\u043f\u043f\u0430 \u0437\u0430\u043f\u0430\u0440\u043e\u043b\u0435\u043d\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438\u0434\u0435\u0440 \u0433\u0440\u0443\u043f\u043f\u044b \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0442\u044c.
|
||||
@@ -466,18 +466,20 @@ Party.Player.Invalid=[[RED]]\u042d\u0442\u043e \u043d\u0435\u0434\u0435\u0439\u0
|
||||
Party.NotOnline=[[DARK_RED]]{0} \u043d\u0435 \u0432 \u043e\u043d\u043b\u0430\u0439\u043d\u0435!
|
||||
Party.Player.InSameParty=[[RED]]{0} \u0443\u0436\u0435 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u0435!
|
||||
Party.PlayerNotInParty=[[DARK_RED]]{0} \u043d\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435
|
||||
Party.Specify=[[RED]]\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0443.
|
||||
Party.Teleport.Dead=[[RED]]\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u0441\u044f \u043a \u043c\u0435\u0440\u0442\u0432\u043e\u043c\u0443 \u0438\u0433\u0440\u043e\u043a\u0443.
|
||||
Party.Teleport.Hurt=[[RED]]\u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 {0} \u0441\u0435\u043a\u0443\u043d\u0434 \u0412\u044b \u0431\u044b\u043b\u0438 \u0440\u0430\u043d\u0435\u043d\u044b \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f.
|
||||
Party.Teleport.Player=[[GREEN]]\u0412\u044b \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043a {0}.
|
||||
Party.Teleport.Self=[[RED]]\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0435\u0431\u0435!
|
||||
Party.Teleport.Target=[[GREEN]]{0} \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043a \u0412\u0430\u043c.
|
||||
Party.Teleport.Disabled=[[RED]]\u0422\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0430\u0446\u0438\u044f \u043a \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u0433\u0440\u0443\u043f\u043f\u044b {0} \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430
|
||||
Party.Join.Self=[[RED]]\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0431\u0435!
|
||||
Party.Unlocked=[[GRAY]]\u0413\u0440\u0443\u043f\u043f\u0430 \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430
|
||||
Party.Disband=[[GRAY]\u0413\u0440\u0443\u043f\u043f\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u0441\u043f\u0443\u0449\u0435\u043d\u0430
|
||||
Party.Status.Locked=[[DARK_RED]](\u0422\u041e\u041b\u042c\u041a\u041e \u041f\u041e \u041f\u0420\u0418\u0413\u041b\u0410\u0428\u0415\u041d\u0418\u042e)
|
||||
Party.Status.Unlocked=[[DARK_GREEN]](\u041e\u0422\u041a\u0420\u042b\u0422\u041e)
|
||||
Party.ShareType.Exp=\u041e\u041f\u042b\u0422
|
||||
Party.ShareType.Item=\u041f\u0420\u0415\u0414\u041c\u0415\u0422
|
||||
Party.ShareMode.None=\u041d\u0418\u0427\u0415\u0413\u041e
|
||||
Party.ShareMode.Equal=\u0420\u0410\u0412\u041d\u042b\u0419
|
||||
Party.ShareMode.Random=\u0421\u041b\u0423\u0427\u0410\u0419\u041d\u041e
|
||||
Commands.XPGain.Acrobatics=\u041f\u0440\u044b\u0433\u0430\u0439\u0442\u0435 \u0441 \u0432\u044b\u0441\u043e\u0442\u044b
|
||||
@@ -554,6 +556,7 @@ Vampirism.Killer.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] \u0431\u044b\u043
|
||||
Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]\u0412\u044b \u0443\u043a\u0440\u0430\u043b\u0438 [[BLUE]]{0}[[DARK_AQUA]] \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0443 [[YELLOW]]{1}
|
||||
Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] \u0431\u044b\u043b \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0443\u043a\u0440\u0430\u0441\u0442\u044c \u0432\u0430\u0448\u0438 \u0437\u043d\u0430\u043d\u0438\u044f!
|
||||
Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]] \u0443\u043a\u0440\u0430\u043b [[BLUE]]{1}[[DARK_RED]] \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0443 \u0432\u0430\u0441!
|
||||
Hardcore.Enabled=[[GOLD]][mcMMO] \u0425\u0430\u0440\u0434\u043a\u043e\u0440 \u043c\u043e\u0434 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d.
|
||||
Spout.Donate=[[YELLOW]][mcMMO] \u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u043e!
|
||||
Spout.LevelUp.1=[[GREEN]\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u043e\u0432\u044b\u0448\u0435\u043d!
|
||||
Spout.LevelUp.2=[[YELLOW]]{0}[[DARK_AQUA]] ([[GREEN]]{1}[[DARK_AQUA]])
|
||||
@@ -588,3 +591,23 @@ Smelting.Effect.7=\u0428\u0430\u043d\u0441 \u0447\u0442\u043e \u0440\u0443\u0434
|
||||
Smelting.FluxMining.Success=[[GREEN]]\u042d\u0442\u0430 \u0440\u0443\u0434\u0430 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u0430 \u0441\u043e\u0431\u043e\u0439!
|
||||
Smelting.Listener=\u0412\u044b\u043f\u043b\u0430\u0432\u043a\u0430:
|
||||
Smelting.SkillName=\u0412\u042b\u041f\u041b\u0410\u0412\u041a\u0410
|
||||
Commands.Description.addlevels=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c mcMMO \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
|
||||
Commands.Description.adminchat=\u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0440\u0435\u0436\u0438\u043c \u0447\u0430\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0436\u0434\u0443 \u0430\u0434\u043c\u0438\u043d\u0430\u043c\u0438 \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435
|
||||
Commands.Description.addxp=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043e\u043f\u044b\u0442 mcMMO
|
||||
Commands.Description.mcability=\u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u0443\u043c\u0435\u043d\u0438\u0439 mcMMO \u043a\u043b\u0438\u043a\u043e\u043c \u041f\u041a\u041c
|
||||
Commands.Description.mcgod=\u0412\u043a\u043b./\u043e\u0442\u043a\u043b. \u0440\u0435\u0436\u0438\u043c-\u0431\u043e\u0433\u0430 mcMMO
|
||||
Commands.Description.mcmmo=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 mcMMO
|
||||
Commands.Description.mcpurge=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u0435\u0437 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 mcMMO \u0438 \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 {0} \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 mcMMO.
|
||||
Commands.Description.mcrank=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c mcMMO \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0438\u0433\u0440\u043e\u043a\u0430
|
||||
Commands.Description.mcrefresh=\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0443\u043b\u0434\u0430\u0443\u043d\u044b \u0434\u043b\u044f mcMMO
|
||||
Commands.Description.mcremove=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 mcMMO
|
||||
Commands.Description.mcstats=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u0448\u0438 mcMMO \u0443\u0440\u043e\u0432\u043d\u0438 \u0438 \u043e\u043f\u044b\u0442
|
||||
Commands.Description.mctop=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043b\u0438\u0434\u0435\u0440\u043e\u0432 mcMMO
|
||||
Commands.Description.mmoedit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c mcMMO \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
|
||||
Commands.Description.mmoupdate=\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 mcMMO \u0438\u0437 Flatfile \u0432 MySQL
|
||||
Commands.Description.party=\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u0430\u0442\u0438 mcMMO
|
||||
Commands.Description.Skill=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0430\u0432\u044b\u043a\u0430\u0445 mcMMO \u0434\u043b\u044f {0}
|
||||
Commands.Description.skillreset=\u0421\u0431\u0440\u043e\u0441 mcMMO \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
|
||||
Commands.Description.vampirism=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 mcMMO \u043a\u0440\u043e\u0432\u043e\u0436\u0430\u0434\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u043a\u0440\u043e\u0432\u043e\u0436\u0430\u0434\u043d\u043e\u0441\u0442\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c
|
||||
UpdateChecker.outdated=\u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e mcMMO!
|
||||
UpdateChecker.newavailable=\u0415\u0441\u0442\u044c \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u043d\u0430 BukkitDev.
|
||||
|
||||
@@ -32,7 +32,6 @@ Axes.Ability.Bonus.4=\u5f3a\u70c8\u51b2\u51fb
|
||||
Axes.Ability.Bonus.5=\u5bf9\u65e0\u62a4\u7532\u654c\u4eba\u9020\u6210 {0} \u70b9\u989d\u5916\u4f24\u5bb3
|
||||
Axes.Ability.Lower=[[GRAY]]**\u4f60\u6536\u8d77\u4e86\u4f60\u7684\u65a7\u5934**
|
||||
Axes.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7d27\u4e86\u4f60\u7684\u65a7\u5934**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]\u53d7\u5230\u5288\u88c2\u6253\u51fb!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]\u4f60\u6253\u51fa\u4e86\u66b4\u51fb!
|
||||
Axes.Combat.CritChance=[[RED]]\u66b4\u51fb\u51e0\u7387: [[YELLOW]]{0}%
|
||||
Axes.Combat.CriticalHit=[[RED]]\u66b4\u51fb!
|
||||
@@ -142,14 +141,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e8
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u8d85\u7ea7\u77ff\u5de5 [[GREEN]]\u6280\u80fd\u5df2\u7ecf\u53ef\u4ee5\u518d\u6b21\u4f7f\u7528\u4e86\uff01
|
||||
Mining.Skillup=[[YELLOW]]\u6316\u77ff\u6280\u80fd\u4e0a\u5347\u4e86 {0}. \u603b\u7b49\u7ea7 ({1})
|
||||
Mining.Blast.Boom=[[GRAY]]**\u5623**
|
||||
Mining.Blast.Effect.0=+35% \u77ff\u77f3\u4ea7\u91cf
|
||||
Mining.Blast.Effect.1=+40% \u77ff\u77f3\u4ea7\u91cf
|
||||
Mining.Blast.Effect.2=+45% \u77ff\u77f3\u4ea7\u91cf, \u65e0\u788e\u7247
|
||||
Mining.Blast.Effect.3= +50% \u77ff\u7269\u4ea7\u7387, \u65e0\u788e\u7247
|
||||
Mining.Blast.Effect.4=+55% \u77ff\u7269\u4ea7\u7387, \u65e0\u788e\u7247, \u4e09\u500d\u6389\u843d
|
||||
Mining.Blast.Effect.5=+60% \u77ff\u7269\u4ea7\u7387, \u65e0\u788e\u7247, \u4e09\u500d\u6389\u843d
|
||||
Mining.Blast.Effect.6=+65% \u77ff\u7269\u4ea7\u7387, \u65e0\u788e\u7247, \u4e09\u500d\u6389\u843d
|
||||
Mining.Blast.Effect.7=+70% \u77ff\u77f3\u4ea7\u91cf,\u65e0\u788e\u7247,3\u500d\u6389\u843d
|
||||
Mining.Blast.Radius.Increase=[[RED]]\u7206\u70b8\u534a\u5f84\u63d0\u5347: [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]\u7206\u7834\u5f00\u91c7: [[YELLOW]] \u6392\u540d {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u7206\u7834\u5f00\u91c7!
|
||||
@@ -310,9 +301,7 @@ Combat.ArrowDeflect=[[WHITE]]**\u7bad\u77e2\u504f\u5411**
|
||||
Combat.BeastLore=[[GREEN]]**\u9a6f\u517d\u77e5\u8bc6**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]\u751f\u547d\u503c ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]\u62e5\u6709\u8005 ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]\u4f60\u88ab\u4e00\u652f\u706b\u7bad\u51fb\u4e2d\u4e86!
|
||||
Combat.Gore=[[GREEN]]**\u6d41\u8840**
|
||||
Combat.Ignition=[[RED]]**\u70b9\u71c3**
|
||||
Combat.StruckByGore=[[RED]]**\u4f60\u5f00\u59cb\u6d41\u8840\u4e86**
|
||||
Combat.TargetDazed=\u76ee\u6807\u88ab [[DARK_RED]]\u88ab\u51fb\u6655
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]\u5934\u6655\u76ee\u7729
|
||||
@@ -388,7 +377,6 @@ Party.Owner.NotLeader=[[DARK_RED]]\u4f60\u5df2\u7ecf\u4e0d\u518d\u662f\u6d3e\u7c
|
||||
Party.Password.Set=[[GREEN]]\u961f\u4f0d\u5bc6\u7801\u8bbe\u7f6e\u4e3a {0}
|
||||
Party.Player.Invalid=[[RED]]\u8fd9\u4e0d\u662f\u4e00\u540d\u6709\u6548\u7684\u73a9\u5bb6
|
||||
Party.Teleport.Dead=[[RED]]\u4f60\u4e0d\u80fd\u4f20\u9001\u5230\u6b7b\u4ea1\u7684\u73a9\u5bb6\u8eab\u8fb9
|
||||
Party.Teleport.Hurt=[[RED]]\u4f60\u5df2\u7ecf\u5728 {0} \u79d2\u524d\u53d7\u4f24\u5e76\u4e14\u65e0\u6cd5\u4f20\u9001.
|
||||
Party.Teleport.Player=[[GREEN]]\u4f60\u5df2\u7ecf\u4f20\u9001\u5230 {0}.
|
||||
Party.Teleport.Self=[[RED]]\u4f60\u4e0d\u80fd\u4f20\u9001\u5230\u4f60\u81ea\u5df1\u90a3\u91cc!
|
||||
Party.Teleport.Target=[[GREEN]]{0} \u5df2\u7ecf\u4f20\u9001\u5230\u4f60\u8eab\u8fb9.
|
||||
@@ -449,3 +437,6 @@ Perks.cooldowns.name=\u5feb\u901f\u6062\u590d
|
||||
Perks.cooldowns.desc=\u51cf\u5c11\u51b7\u5374\u65f6\u95f4 {0}.
|
||||
Perks.activationtime.name=\u8010\u529b
|
||||
Perks.activationtime.desc=\u63d0\u9ad8\u80fd\u529b\uff0c\u6fc0\u6d3b\u65f6\u95f4 {0} \u79d2.
|
||||
Hardcore.Enabled=[[GOLD]][mcMMO] \u542f\u7528\u786c\u6838\u6a21\u5f0f
|
||||
UpdateChecker.outdated=\u4f60\u6b63\u4f7f\u7528\u7740\u4e00\u4e2a\u8fc7\u65f6\u7248\u672c\u7684mcMMO!
|
||||
UpdateChecker.newavailable=\u53d1\u73b0BukkitDev\u4e0a\u6709\u53ef\u7528\u65b0\u7248\u672c.
|
||||
|
||||
@@ -32,7 +32,6 @@ Axes.Ability.Bonus.4=\u5f37\u529b\u5c04\u64ca
|
||||
Axes.Ability.Bonus.5=\u5c0d\u7121\u88dd\u7532\u6575\u4eba\u984d\u5916\u9020\u6210 {0} \u50b7\u5bb3
|
||||
Axes.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u65a7\u982d**
|
||||
Axes.Ability.Ready=[[GREEN]]**\u4f60\u63e1\u7dca\u4e86\u4f60\u7684\u65a7\u982d**
|
||||
Axes.Combat.Cleave.Proc=[[DARK_RED]]\u53d7\u5230\u5f37\u70c8\u6253\u64ca!
|
||||
Axes.Combat.CritStruck=[[DARK_RED]]\u4f60\u6253\u51fa\u4e86\u6703\u5fc3\u4e00\u64ca!
|
||||
Axes.Combat.CritChance=[[RED]]\u66b4\u64ca\u6a5f\u7387: [[YELLOW]]{0}%
|
||||
Axes.Combat.CriticalHit=[[RED]]\u6703\u5fc3\u4e00\u64ca!
|
||||
@@ -125,7 +124,7 @@ Mining.Ability.Locked.0=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u6316\u792
|
||||
Mining.Ability.Locked.1=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u66f4\u5927\u7684\u70b8\u5f48)
|
||||
Mining.Ability.Locked.2=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u7206\u7834\u5c08\u5bb6)
|
||||
Mining.Ability.Lower=[[GRAY]]**\u4f60\u653e\u4e0b\u4e86\u4f60\u7684\u7a3f\u5b50**
|
||||
Mining.Ability.Ready=[GREEN]**\u4f60\u63e1\u7dca\u4e86\u4f60\u7684\u7a3f\u5b50**\n\n
|
||||
Mining.Ability.Ready=[GREEN]**\u4f60\u63e1\u7dca\u4e86\u4f60\u7684\u93ac\u5b50**\\\n\\\n
|
||||
Mining.Effect.0=\u8d85\u7d1a\u5de5\u4eba (\u4e3b\u52d5\u6280\u80fd)
|
||||
Mining.Effect.1=\u901f\u5ea6+, 3\u500d\u6389\u843d\u7387
|
||||
Mining.Effect.2=\u96d9\u500d\u6389\u843d
|
||||
@@ -147,14 +146,6 @@ Mining.Skills.SuperBreaker.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e8
|
||||
Mining.Skills.SuperBreaker.Refresh=[[GREEN]]\u4f60\u7684 [[YELLOW]]\u8d85\u7d1a\u5de5\u4eba [[GREEN]]\u6280\u80fd\u5df2\u7d93\u53ef\u4ee5\u518d\u6b21\u4f7f\u7528\u4e86\uff01
|
||||
Mining.Skillup=[[YELLOW]]\u6316\u7926\u6280\u80fd\u4e0a\u5347\u4e86 {0}! \u7e3d\u7b49\u7d1a ({1})!
|
||||
Mining.Blast.Boom=[[GRAY]]**BOOM!**
|
||||
Mining.Blast.Effect.0=+35% \u7926\u7269\u7522\u91cf
|
||||
Mining.Blast.Effect.1=+40% \u7926\u7269\u7522\u91cf
|
||||
Mining.Blast.Effect.2=+45% \u7926\u7269\u7522\u91cf, \u7121\u788e\u7247
|
||||
Mining.Blast.Effect.3=+50% \u7926\u7269\u7522\u91cf, \u7121\u788e\u7247
|
||||
Mining.Blast.Effect.4=+55% \u7926\u7269\u7522\u91cf, \u7121\u788e\u7247,2\u500d\u6389\u843d
|
||||
Mining.Blast.Effect.5=+60% \u7926\u7269\u7522\u91cf, \u7121\u788e\u7247,2\u500d\u6389\u843d
|
||||
Mining.Blast.Effect.6=+65% \u7926\u7269\u7522\u91cf, \u7121\u788e\u7247,3\u500d\u6389\u843d
|
||||
Mining.Blast.Effect.7=+70% \u7926\u7269\u7522\u91cf, \u7121\u788e\u7247,3\u500d\u6389\u843d
|
||||
Mining.Blast.Radius.Increase=[[RED]]\u7206\u70b8\u534a\u5f91\u63d0\u5347: [[YELLOW]]+{0}
|
||||
Mining.Blast.Rank=[[RED]]\u6316\u7926\u7206\u767c: [[YELLOW]] \u6392\u540d {0}/8 [[GRAY]]({1})
|
||||
Mining.Blast.Other.On=[[GREEN]]{0}[[DARK_GREEN]] \u4f7f\u7528\u4e86 [[RED]]\u6316\u7926\u7206\u767c!
|
||||
@@ -238,6 +229,7 @@ Taming.Ability.Bonus.6=\u5229\u722a
|
||||
Taming.Ability.Bonus.7=+{0} \u50b7\u5bb3
|
||||
Taming.Ability.Bonus.8=\u5feb\u9910\u670d\u52d9
|
||||
Taming.Ability.Bonus.9={0} \u4e00\u5b9a\u6a5f\u7387\u5728\u653b\u64ca\u6642\u6062\u5fa9\u8840\u91cf
|
||||
Taming.Ability.Bonus.11=\u88ab\u6709\u5bb3\u7684\u9b54\u6cd5\u50b7\u5bb3\u6216\u4e2d\u6bd2\u6642\uff0c\u6062\u5fa9\u5065\u5eb7
|
||||
Taming.Ability.Locked.0=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u8fc5\u9748\u654f\u6377)
|
||||
Taming.Ability.Locked.1=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u539a\u5be6\u7684\u76ae\u6bdb)
|
||||
Taming.Ability.Locked.2=\u9396\u5b9a \u76f4\u5230 {0}+ \u6280\u80fd (\u885d\u64ca\u683c\u64cb)
|
||||
@@ -284,6 +276,7 @@ Unarmed.Effect.4=\u9435\u8155\u5927\u5e2b
|
||||
Unarmed.Effect.5=\u4f7f\u4f60\u7684\u88dd\u7532\u96a8\u6642\u9593\u589e\u52a0\u800c\u589e\u5f37
|
||||
Unarmed.Effect.6=\u5f13\u7bad\u504f\u5411
|
||||
Unarmed.Effect.7=\u8b93\u5f13\u7bad\u504f\u5411
|
||||
Unarmed.Effect.9=\u9632\u6b62\u4f60\u88ab\u596a\u53d6\u6b66\u5668
|
||||
Unarmed.Listener=\u5c1a\u672a\u88dd\u5099:
|
||||
Unarmed.SkillName=\u5c1a\u672a\u88dd\u5099
|
||||
Unarmed.Skills.Berserk.Off=[[RED]]**\u72c2\u66b4\u6280\u80fd\u5df2\u7ed3\u675f**
|
||||
@@ -320,9 +313,7 @@ Combat.ArrowDeflect=[[WHITE]]**\u5f13\u7bad\u504f\u5411**
|
||||
Combat.BeastLore=[[GREEN]]**\u8a13\u7378\u4e4b\u80fd**
|
||||
Combat.BeastLoreHealth=[[DARK_AQUA]]\u751f\u547d\u503c ([[GREEN]]{0}[[DARK_AQUA]]/{1})
|
||||
Combat.BeastLoreOwner=[[DARK_AQUA]]\u64c1\u6709\u8005 ([[RED]]{0}[[DARK_AQUA]])
|
||||
Combat.BurningArrowHit=[[DARK_RED]]\u4f60\u88ab\u4e00\u652f\u706b\u7bad\u64ca\u4e2d\u4e86!
|
||||
Combat.Gore=[[GREEN]]**\u6d41\u8840**
|
||||
Combat.Ignition=[[RED]]**\u9ede\u71c3**
|
||||
Combat.StruckByGore=[[RED]]**\u4f60\u958b\u59cb\u6d41\u8840\u4e86**
|
||||
Combat.TargetDazed=\u76ee\u6a19\u5df2\u88ab [[DARK_RED]] \u64ca\u6688
|
||||
Combat.TouchedFuzzy=[[DARK_RED]]\u982d\u6688\u76ee\u7729...
|
||||
@@ -360,18 +351,23 @@ Commands.mcrank.Unranked=[[WHITE]]\u6392\u884c\u699c\u5916
|
||||
Commands.mcrefresh.Success=[[RED]]{0} \u79d2\u5f8c\u51b7\u537b\u6642\u9593\u5b8c\u7562.
|
||||
Commands.mcremove.Success=[[GREEN]]{0} \u5df2\u6210\u529f\u5f9e\u6578\u64da\u88e1\u79fb\u9664!
|
||||
Commands.mmoedit=[player] <skill> <newvalue> [[RED]] - \u7de8\u8f2f\u76ee\u6a19
|
||||
Commands.mmoedit.AllSkills.1=[\u7da0\u8272]\u60a8\u6240\u6709\u7684\u6280\u80fd\u7b49\u7d1a\u88ab\u8a2d\u5b9a\u70ba{0}\uff01
|
||||
Commands.mmoedit.Modified.1=[[GREEN]]\u4f60\u7684 {0} \u7b49\u7d1a\u88ab\u8a2d\u5b9a\u70ba {1}!
|
||||
Commands.mmoedit.Modified.2=[[RED]]{0} \u56e0\u70ba {1} \u800c\u4fee\u6539.
|
||||
Commands.mmoupdate.Start=[[GRAY]]\u78ba\u8a8d\u7248\u672c\u4e2d...
|
||||
Commands.mmoupdate.Finish=[[GREEN]]\u8b80\u53d6\u7248\u672c\u5b8c\u7562!
|
||||
Commands.ModDescription=[[RED]]- \u8acb\u95b1\u8b80\u63d2\u4ef6\u63cf\u8ff0
|
||||
Commands.NoConsole=\u9019\u500b\u6307\u4ee4\u4e0d\u53ef\u4f7f\u7528
|
||||
Commands.Notifications.Off=<FONT> <FONT> [\u7da0\u8272]\u5207\u63db\u80fd\u529b\u7684\u901a\u77e5</ FONT> </ FONT>
|
||||
Commands.Notifications.On=<FONT> <FONT> [\u7da0\u8272]\u5207\u63db\u80fd\u529b\u7684\u901a\u77e5</ FONT> </ FONT>
|
||||
Commands.Offline=[RED]]\u6b64\u547d\u4ee4\u4e26\u4e0d\u9069\u7528\u65bc\u96e2\u7dda\u73a9\u5bb6\u3002
|
||||
Commands.Other=[[GREEN]]--\u5176\u4ed6\u6307\u4ee4--
|
||||
Commands.Party.Header=[[RED]]-----[][[GREEN]]\u968a\u4f0d[[RED]][]-----
|
||||
Commands.Party.Status=[[DARK_GRAY]]\u540d\u5b57: [[WHITE]]{0} {1}
|
||||
Commands.Party.ShareMode=[[DARK_GRAY]]\u5206\u4eab\u6a21\u5f0f:
|
||||
Commands.Party.ItemShare=[[GRAY]]\u7269\u54c1 [[DARK_AQUA]]({0})
|
||||
Commands.Party.ExpShare=[[GRAY]]\u7d93\u9a57\u503c [[DARK_AQUA]]({0})
|
||||
Commands.Party.ItemShareCategories=[[DARK_GRAY]]\u5171\u4eab\u9805\u76ee: [[GRAY]][[ITALIC]]{0}
|
||||
Commands.Party.MembersNear=[[DARK_GRAY]]\u63a5\u8fd1\u4f60 [[DARK_AQUA]]{0}[[DARK_GRAY]]/[[DARK_AQUA]]{1}
|
||||
Commands.Party.Accept=[[RED]]- \u63a5\u53d7\u968a\u4f0d\u9080\u8acb
|
||||
Commands.Party.Chat.Off=\u968a\u4f0d\u804a\u5929\u6a21\u5f0f[[RED]]\u53d6\u6d88
|
||||
@@ -387,6 +383,7 @@ Commands.Party.Rename=[[GRAY]]\u968a\u4f0d\u540d\u7a31\u5df2\u66f4\u6539\u70ba:
|
||||
Commands.Party.SetSharing=[[GRAY]]\u968a\u4f0d {0} \u5206\u4eab\u8a2d\u5b9a\u70ba: [[DARK_AQUA]]{1}
|
||||
Commands.Party.Kick=[[RED]]\u4f60\u5df2\u88ab {0} \u8e22\u51fa!
|
||||
Commands.Party.Leave=[[RED]]\u4f60\u96e2\u958b\u4e86\u9019\u652f\u968a\u4f0d
|
||||
Commands.Party.Members.Header=[RED]] ----- [] [GREEN]\u6703\u54e1[RED] [] -----
|
||||
Commands.Party.Members={0}
|
||||
Commands.Party.None=[[RED]]\u4f60\u4e0d\u5728\u968a\u4f0d\u4e2d.
|
||||
Commands.Party.Quit=[[RED]]- \u96e2\u958b\u4f60\u73fe\u5728\u7684\u968a\u4f0d
|
||||
@@ -397,6 +394,7 @@ Commands.Party2=[[RED]]- \u52a0\u5165\u73a9\u5bb6\u7684\u968a\u4f0d\u88e1
|
||||
Commands.ptp.Enabled=\u968a\u4f0d\u50b3\u9001 [[GREEN]]\u5141\u8a31
|
||||
Commands.ptp.Disabled=\u968a\u4f0d\u50b3\u9001 [[RED]]\u4e0d\u5141\u8a31
|
||||
Commands.ptp.NoRequests=[[RED]]\u4f60\u73fe\u5728\u4e0d\u53ef\u4ee5\u50b3\u9001
|
||||
Commands.ptp.NoWorldPermissions=[[RED]] [mcMMO]\u60a8\u6c92\u6709\u6b0a\u9650\u50b3\u9001\u5230\u6b64\u4e16\u754c{0}\u3002
|
||||
Commands.ptp.Request1=[[YELLOW]]{0} [[GREEN]]\u5df2\u50b3\u9001\u81f3\u4f60\u65c1\u908a.
|
||||
Commands.ptp.RequestExpired=[[RED]]\u968a\u4f0d\u50b3\u9001\u5df2\u6210\u529f!
|
||||
Commands.PowerLevel.Leaderboard=[[YELLOW]]--mcMMO[[BLUE]] \u80fd\u529b\u7b49\u7d1a [[YELLOW]]\u6392\u884c\u699c--
|
||||
@@ -411,12 +409,14 @@ Commands.SkillInfo=/<skill> [[RED]]- \u67e5\u770b\u6280\u80fd\u7684\u8a73\u7ec6\
|
||||
Commands.Stats.Self=\u4f60\u7684\u8a0a\u606f
|
||||
Commands.Stats=[[RED]]- \u67e5\u770b\u4f60\u7684mcMMO\u7d71\u8a08\u8a0a\u606f
|
||||
Commands.ToggleAbility=[[RED]]- \u7528\u6ed1\u9f20\u53f3\u9375\u5207\u63db\u6280\u80fd\u4f7f\u7528\u6a21\u5f0f
|
||||
Commands.Usage.0=[RED]]\u6b63\u78ba\u4f7f\u7528/ {0}
|
||||
Commands.Usage.1=[[RED]]\u8acb\u8f38\u5165 /{0} {1}
|
||||
Commands.Usage.2=[[RED]]\u8acb\u8f38\u5165 /{0} {1} {2}
|
||||
Commands.Usage.3=[[RED]]\u8acb\u8f38\u5165 /{0} {1} {2} {3}
|
||||
Commands.Usage.Level=\u7b49\u7d1a
|
||||
Commands.Usage.Message=\u8a0a\u606f
|
||||
Commands.Usage.Page=\u9801\u6578
|
||||
Commands.Usage.PartyName=<FONT> <FONT>\u540d\u7a31</ FONT> </ FONT>
|
||||
Commands.Usage.Password=\u5bc6\u78bc
|
||||
Commands.Usage.Player=\u73a9\u5bb6
|
||||
Commands.Usage.Skill=\u6280\u80fd
|
||||
@@ -425,10 +425,18 @@ mcMMO.NoInvites=[[RED]]\u4f60\u6c92\u6709\u6536\u5230\u4efb\u4f55\u968a\u4f0d\u9
|
||||
mcMMO.NoPermission=[[DARK_RED]]\u6b0a\u9650\u4e0d\u8db3
|
||||
mcMMO.NoSkillNote=[[DARK_GRAY]]\u5982\u679c\u4f60\u7121\u6cd5\u4f7f\u7528\u90a3\u4e9b\u6280\u80fd\u5c31\u4e0d\u6703\u51fa\u73fe\u5728\u9019\u88e1
|
||||
Party.Forbidden=[mcMMO] \u968a\u4f0d\u529f\u80fd\u4e0d\u5141\u8a31\u5728\u9019\u4e16\u754c\u958b\u555f (\u8acb\u89c0\u770b\u6b0a\u9650\u8a2d\u5b9a)
|
||||
Party.Help.0=[RED]]\u6b63\u78ba\u4f7f\u7528[DARK_AQUA] {0} <player> [\u5bc6\u78bc]\u3002
|
||||
Party.Help.1=[RED]]\u8981\u5275\u5efa\u4e00\u500b\u968a\u4f0d\uff0c\u8acb\u4f7f\u7528[DARK_AQUA] {0} <\u540d\u7a31> [\u5bc6\u78bc]\u3002
|
||||
Party.Help.4=[RED]]\u8981\u9396\u5b9a\u6216\u89e3\u9396\u4f60\u7684\u968a\u4f0d\uff0c\u4f7f\u7528[DARK_AQUA]] {0}
|
||||
Party.Help.5=[[RED]]\u4f7f\u7528\u5bc6\u78bc\u4fdd\u8b77\u4f60\u7684\u968a\u4f0d\uff0c\u8acb\u4f7f\u7528[DARK_AQUA] {0}<\u5bc6\u78bc>
|
||||
Party.Help.6=[[RED]]\u8981\u8e22\u7684\u7403\u54e1\u5f9e\u968a\u4f0d\u4e2d\uff0c\u4f7f\u7528[DARK_AQUA] {0} <player>
|
||||
Party.Help.7=[RED]]\u8981\u8cb4\u968a\u4f0d\u7684\u6240\u6709\u6b0a\u8f49\u79fb\uff0c\u4f7f\u7528[DARK_AQUA] {0} <player>
|
||||
Party.Help.8=[RED]\u8981\u89e3\u6563\u968a\u4f0d\uff0c\u4f7f\u7528[DARK_AQUA] {0}
|
||||
Party.InformedOnJoin={0} [[GREEN]]\u52a0\u5165\u4e86\u4f60\u7684\u968a\u4f0d
|
||||
Party.InformedOnQuit={0} [[GREEN]]\u96e2\u958b\u4e86\u4f60\u7684\u968a\u4f0d
|
||||
Party.InformedOnNameChange=[[GOLD]]{0} [[GREEN]]\u5c07\u968a\u4f0d\u540d\u7a31\u8a2d\u5b9a\u70ba [[WHITE]]{1}
|
||||
Party.InvalidName=[[DARK_RED]]\u90a3\u4e0d\u662f\u4e00\u500b\u6709\u6548\u7684\u968a\u4f0d\u540d\u7a31.
|
||||
Party.Invite.Self=[RED]\u4f60\u80fd\u4e0d\u80fd\u9080\u8acb\u81ea\u5df1\uff01
|
||||
Party.IsLocked=[[RED]]\u9019\u500b\u968a\u4f0d\u5df2\u7d93\u9396\u5b9a\u4e86!
|
||||
Party.IsntLocked=[[RED]]\u9019\u500b\u968a\u4f0d\u4e26\u6c92\u6709\u9396\u5b9a!
|
||||
Party.Locked=[[RED]]\u9019\u500b\u968a\u4f0d\u5df2\u9396\u5b9a!\u53ea\u6709\u968a\u9577\u53ef\u4ee5\u9080\u8acb!
|
||||
@@ -437,6 +445,7 @@ Party.NotOwner=[[DARK_RED]]\u4f60\u4e26\u975e\u968a\u9577.
|
||||
Party.Owner.New=[[GREEN]]{0} \u6210\u70ba\u65b0\u968a\u9577.
|
||||
Party.Owner.NotLeader=[[DARK_RED]]\u56e0\u9592\u7f6e\u904e\u4e45,\u968a\u9577\u81ea\u52d5\u8f49\u8b93.
|
||||
Party.Owner.Player=[[GREEN]]\u4f60\u6210\u70ba\u4e86\u968a\u9577.
|
||||
Party.Password.None=[RED]\u9019\u500b\u968a\u4f0d\u662f\u6709\u5bc6\u78bc\u4fdd\u8b77\u7684\u3002\u8acb\u63d0\u4f9b\u5bc6\u78bc\u624d\u80fd\u52a0\u5165\u3002
|
||||
Party.Password.Incorrect=[[RED]]\u968a\u4f0d\u5bc6\u78bc\u932f\u8aa4.
|
||||
Party.Password.Set=[[GREEN]]\u968a\u4f0d\u5bc6\u78bc\u8a2d\u5b9a\u70ba {0}
|
||||
Party.Password.Removed=[[GREEN]]\u968a\u4f0d\u5bc6\u78bc\u5df2\u522a\u9664.
|
||||
@@ -444,18 +453,23 @@ Party.Player.Invalid=[[RED]]\u6b64\u73a9\u5bb6\u4e0d\u5b58\u5728
|
||||
Party.NotOnline=[[DARK_RED]]{0} \u4e26\u4e0d\u5728\u7dda\u4e0a!
|
||||
Party.Player.InSameParty=[[RED]]{0} \u5df2\u7d93\u5728\u4f60\u968a\u4f0d\u88e1\u4e86!
|
||||
Party.PlayerNotInParty=[[DARK_RED]]{0} \u5df2\u4e0d\u5728\u4f60\u7684\u5718\u968a
|
||||
Party.Specify=[RED]\u60a8\u5fc5\u9808\u6307\u5b9a\u4e00\u500b\u968a\u4f0d\u3002
|
||||
Party.Teleport.Dead=[[RED]]\u4f60\u4e0d\u80fd\u50b3\u9001\u81f3\u6b7b\u4ea1\u7684\u73a9\u5bb6\u65c1
|
||||
Party.Teleport.Hurt=[[RED]]\u4f60\u5df2\u7d93\u5728 {0} \u79d2\u524d\u53d7\u50b7\u4e26\u4e14\u7121\u6cd5\u50b3\u9001.
|
||||
Party.Teleport.Player=[[GREEN]]\u4f60\u5df2\u7d93\u50b3\u9001\u5230 {0}.
|
||||
Party.Teleport.Self=[[RED]]\u4f60\u7121\u6cd5\u50b3\u9001\u5230\u4f60\u81ea\u5df1\u8eab\u65c1!
|
||||
Party.Teleport.Target=[[GREEN]]{0} \u5df2\u7d93\u50b3\u9001\u5230\u4f60\u8eab\u908a
|
||||
Party.Teleport.Disabled=[[RED]]{0} \u4e0d\u5141\u8a31\u968a\u4f0d\u50b3\u9001.
|
||||
Party.Rename.Same=[RED]] {0}\u4f60\u5df2\u7d93\u5728\u968a\u4f0d\u88e1\u4e86\uff01
|
||||
Party.Join.Self=[RED]\u4e0d\u80fd\u52a0\u5165\u4f60\u81ea\u5df1\uff01
|
||||
Party.Unlocked=[[GRAY]]\u968a\u4f0d\u4ee5\u89e3\u9396!
|
||||
Party.Disband=[[GRAY]]\u968a\u4f0d\u5df2\u89e3\u6563
|
||||
Party.Status.Locked=[[DARK_RED]](\u53ea\u53ef\u9080\u8acb)
|
||||
Party.Status.Unlocked=[[DARK_GREEN]](\u958b\u555f)
|
||||
Party.ShareType.Exp=\u7d93\u9a57\u503c
|
||||
Party.ShareType.Item=\u7269\u54c1
|
||||
Party.ShareMode.None=\u7121
|
||||
Party.ShareMode.Random=\u96a8\u6a5f
|
||||
Party.ExpShare.Disabled=<FONT> <FONT> [RED]\u968a\u4f0d\u7684\u7d93\u9a57\u5171\u4eab\u88ab\u7981\u7528\u3002</ FONT> </ FONT>
|
||||
Commands.XPGain.Acrobatics=\u6389\u843d
|
||||
Commands.XPGain.Archery=\u653b\u64ca\u602a\u7269
|
||||
Commands.XPGain.Axes=\u653b\u64ca\u602a\u7269
|
||||
@@ -467,6 +481,7 @@ Commands.XPGain.Repair=\u4fee\u7406
|
||||
Commands.XPGain.Swords=\u653b\u64ca\u602a\u7269
|
||||
Commands.XPGain.Taming=\u99b4\u7378,\u548c\u4f60\u7684\u72fc\u4e00\u8d77\u6230\u9b25
|
||||
Commands.XPGain.Unarmed=\u653b\u64ca\u602a\u7269
|
||||
Commands.XPGain.Woodcutting=\u780d\u6a39
|
||||
Commands.XPGain=[[DARK_GRAY]]\u7372\u5f97\u7d93\u9a57\u503c:[[WHITE]]{0}
|
||||
Commands.xplock.locked=[[GOLD]]\u4f60\u7684\u7d93\u9a57\u503c\u9396\u5b9a\u5728 {0}!
|
||||
Commands.xplock.unlocked=[[GOLD]]\u4f60\u7684\u7d93\u9a57\u503c\u73fe\u5728 [[GREEN]]\u89e3\u9664\u9396\u5b9a\u4e86[[GOLD]]!
|
||||
@@ -489,6 +504,8 @@ Inspect.Offline=[[RED]]\u4f60\u6c92\u6709\u67e5\u8a62\u96e2\u7dda\u73a9\u5bb6\u8
|
||||
Inspect.OfflineStats=\u96e2\u7dda\u73a9\u5bb6\u7684 [mcMMO] \u7d71\u8a08\u8a0a\u606f [[YELLOW]]{0}
|
||||
Inspect.Stats=[[GREEN]][mcMMO] \u7684\u7d71\u8a08\u8a0a\u606f [[YELLOW]]{0}
|
||||
Inspect.TooFar=[[RED]]\u56e0\u8ddd\u96e2\u592a\u9060\u7121\u6cd5\u67e5\u770b\u90a3\u4f4d\u73a9\u5bb6!
|
||||
Item.ChimaeraWing.Fail=**\u5947\u7f8e\u62c9\u4e4b\u7ffc\u4f7f\u7528\u5931\u6557\u4e86!**
|
||||
Item.ChimaeraWing.Pass=**\u5947\u7f8e\u62c9\u4e4b\u7ffc**
|
||||
Item.Injured.Wait=\u4f60\u904e\u5ea6\u75b2\u52de\u5fc5\u9808\u7b49\u5f85\u4e00\u6bb5\u6642\u9593\u5f8c\u624d\u53ef\u4f7f\u7528. [[YELLOW]]({0}s)
|
||||
Skills.Disarmed=[[DARK_RED]]\u4f60\u7684\u6b66\u5668\u88ab\u63a0\u596a\u4e86!
|
||||
Skills.Header=[[RED]]-----[][[GREEN]]{0}[[RED]][]-----
|
||||
@@ -512,6 +529,7 @@ Hardcore.Player.Loss=[[GOLD]][mcMMO] [[DARK_RED]]\u4f60\u5728\u6b7b\u4ea1\u4e2d\
|
||||
Vampirism.Killer.Success=[[GOLD]][mcMMO] [[DARK_AQUA]]\u4f60\u5077\u4e86 [[BLUE]]{0}[[DARK_AQUA]] \u7b49\u4f86\u81ea\u65bc[[YELLOW]]{1}.
|
||||
Vampirism.Victim.Failure=[[GOLD]][mcMMO] [[YELLOW]]{0}[[GRAY]] \u4e0d\u5141\u8a31\u5f9e\u4f60\u90a3\u596a\u53d6\u7d93\u9a57\u503c!
|
||||
Vampirism.Victim.Success=[[GOLD]][mcMMO] [[YELLOW]]{0}[[DARK_RED]] \u596a\u8d70\u4e86\u4f60 [[BLUE]]{1}[[DARK_RED]] \u7b49!
|
||||
Spout.Donate=[[YELLOW]] [mcMMO\u6350\u52a9\uff01
|
||||
Spout.LevelUp.1=[[GREEN]]\u5347\u7d1a!
|
||||
Spout.LevelUp.2=[[YELLOW]]{0}[[DARK_AQUA]] ([[GREEN]]{1}[[DARK_AQUA]])
|
||||
Spout.Menu.Exit=[[GRAY]]\u8f38\u5165 ESCAPE \u4f86\u96e2\u958b
|
||||
@@ -523,3 +541,17 @@ Spout.Title={0}\n[[YELLOW]]P[[GOLD]]\u7b49\u7d1a[[WHITE]].[[GREEN]]{1}
|
||||
MOTD.Hardcore.VampireOn=[[GOLD]][mcMMO] [[DARK_RED]]\u6b63\u7248\u6a21\u5f0f\u958b\u555f.
|
||||
MOTD.Version=[[GOLD]][mcMMO] \u6b63\u904b\u4f5c\u7684\u7248\u672c [[DARK_AQUA]]{0}
|
||||
MOTD.Website=[[GOLD]][mcMMO] [[GREEN]]{0}[[YELLOW]] - mcMMO \u9996\u9801
|
||||
Smelting.Ability.Locked.0=\u9396\u5b9a\u72c0\u614b\uff0c\u76f4\u5230{0} +\u6280\u80fd\uff08VANILLA XP BOOST\uff09
|
||||
Smelting.Ability.Locked.1=\u9396\u5b9a\u72c0\u614b\uff0c\u76f4\u5230{0} +\u6280\u80fd\uff08FLUX\u7926\u696d\uff09
|
||||
Commands.Description.adminchat=<FONT> <font class=\"\">\u5207\u63dbmcMMO\u7ba1\u7406\u804a\u5929\u958b/\u95dc\u6216\u767c\u9001\u7d66\u7ba1\u7406\u54e1\u7684\u804a\u5929\u6d88\u606f</ FONT> </ FONT>
|
||||
Commands.Description.mcmmo=\u986f\u793a\u4e00\u500bmcMMO\u7684\u7c21\u55ae\u63cf\u8ff0
|
||||
Commands.Description.mcnotify=\u5207\u63dbmcMMO\u7684\u804a\u5929\u986f\u793a\u901a\u77e5 \u958b/\u95dc
|
||||
Commands.Description.mcrank=\u986f\u793a\u6240\u6709mcMMO\u7684\u6392\u540d
|
||||
Commands.Description.mcremove=<font><font class=\"\">\u5f9emcMMO\u6578\u64da\u5eab\u4e2d\u522a\u9664\u7528\u6236</font></font>
|
||||
Commands.Description.mctop=<font><font>\u986f\u793amcMMO\u6392\u884c\u699c</font></font>
|
||||
Commands.Description.party=<FONT> <FONT>\u63a7\u5236\u5404\u7a2emcMMO\u968a\u4f0d\u7684\u8a2d\u7f6e</ FONT> </ FONT>
|
||||
Commands.Description.partychat=\u5207\u63dbmcMMO\u958b/\u95dc\u968a\u4f0d\u7684\u804a\u5929\u6216\u767c\u9001\u65b9\u7684\u804a\u5929\u4fe1\u606f
|
||||
Commands.Description.ptp=\u50b3\u9001\u5230\u4e00\u500bmcMMO\u968a\u4f0d\u6210\u54e1\u65c1
|
||||
Commands.Description.Skill=\u986f\u793a\u7684\u8a73\u7d30mcMMO\u6280\u80fd\u4fe1\u606f{0}
|
||||
UpdateChecker.outdated=\u60a8\u4f7f\u7528\u7684\u662f\u904e\u6642\u7684\u7248\u672cmcMMO\uff01
|
||||
UpdateChecker.newavailable=\u6709\u65b0\u7684\u7248\u672cBukkitDev\u3002
|
||||
|
||||
Reference in New Issue
Block a user