diff --git a/.gitignore b/.gitignore index 265861f..1fc5c34 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,8 @@ .* # except for .gitignore !.gitignore -!.classpath -!.project +.classpath +.project # Ignore all classfiles *.class diff --git a/war/.classpath b/war/.classpath deleted file mode 100644 index 5c0a51d..0000000 --- a/war/.classpath +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/war/.project b/war/.project deleted file mode 100644 index 374f0cf..0000000 --- a/war/.project +++ /dev/null @@ -1,35 +0,0 @@ - - - war - - - - - - org.eclipse.jdt.core.javabuilder - - - - - net.sourceforge.metrics.builder - - - - - org.maven.ide.eclipse.maven2Builder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.m2e.core.maven2Nature - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - net.sourceforge.metrics.nature - - diff --git a/war/pom.xml b/war/pom.xml index e9d54ae..68a9bd7 100644 --- a/war/pom.xml +++ b/war/pom.xml @@ -3,10 +3,11 @@ 4.0.0 com.tommytony war - 1.8.1 + 1.9 jar War http://war.tommytony.com + Minecraft PVP arenas (called warzones) for a fast-paced and structured PVP experience with TDM, CTF and more! 2.2.1 @@ -15,12 +16,12 @@ - bukkit-repo - http://repo.bukkit.org/content/groups/public + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ cma-repo - http://maven.cmastudios.me/archiva/repository/internal + http://ftp.cmastudios.me/maven/ tagapi-repo @@ -31,8 +32,12 @@ http://maven.sk89q.com/repo/ - mcstats.releases - http://repo.mcstats.org/content/repositories/releases/ + mcstats + http://repo.mcstats.org/content/repositories/public/ + + + vault-repo + http://nexus.theyeticave.net/content/repositories/pub_releases @@ -112,7 +117,7 @@ org.bukkit bukkit - 1.7.2-R0.2 + 1.9.4-R0.1-SNAPSHOT org.kitteh @@ -136,8 +141,13 @@ org.mcstats.bukkit metrics - R7 + R8-SNAPSHOT compile + + net.milkbowl.vault + Vault + 1.2.32 + diff --git a/war/src/main/java/com/tommytony/war/Team.java b/war/src/main/java/com/tommytony/war/Team.java index 194af9b..7f62701 100644 --- a/war/src/main/java/com/tommytony/war/Team.java +++ b/war/src/main/java/com/tommytony/war/Team.java @@ -34,6 +34,7 @@ import com.tommytony.war.config.TeamConfig; import com.tommytony.war.config.TeamConfigBag; import com.tommytony.war.config.TeamKind; import com.tommytony.war.config.TeamSpawnStyle; +import com.tommytony.war.spout.SpoutDisplayer; import com.tommytony.war.utility.Direction; import com.tommytony.war.volume.Volume; @@ -442,6 +443,27 @@ public class Team { } } + /** + * Send an achievement to all players on the team. + * Currently implemented using SpoutCraft. + * @param line1 Achievement first line + * @param line2 Achievement second line + * @param icon Item to display in the achievement + * @param ticks Duration the achievement should be displayed + */ + public void sendAchievement(String line1, String line2, ItemStack icon, int ticks) { + if (!War.war.isSpoutServer()) + return; + line1 = SpoutDisplayer.cleanForNotification(line1); + line2 = SpoutDisplayer.cleanForNotification(line2); + for (Player player : this.players) { + SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); + if (!spoutPlayer.isSpoutCraftEnabled()) + continue; + spoutPlayer.sendNotification(line1, line2, icon, ticks); + } + } + public void setName(String name) { this.name = name; } @@ -464,7 +486,9 @@ public class Team { } thePlayer.setFireTicks(0); thePlayer.setRemainingAir(300); - this.warzone.restorePlayerState(thePlayer); + if (!this.warzone.getReallyDeadFighters().contains(thePlayer.getName())) { + this.warzone.restorePlayerState(thePlayer); + } this.warzone.getLoadoutSelections().remove(thePlayer); } diff --git a/war/src/main/java/com/tommytony/war/War.java b/war/src/main/java/com/tommytony/war/War.java index 89c5f0f..29d19f7 100644 --- a/war/src/main/java/com/tommytony/war/War.java +++ b/war/src/main/java/com/tommytony/war/War.java @@ -8,6 +8,8 @@ import java.util.logging.FileHandler; import java.util.logging.Formatter; import java.util.logging.Level; +import net.milkbowl.vault.economy.Economy; + import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; @@ -20,7 +22,10 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; import com.tommytony.war.command.WarCommandHandler; import com.tommytony.war.config.FlagReturn; @@ -97,6 +102,7 @@ public class War extends JavaPlugin { private final InventoryBag defaultInventories = new InventoryBag(); private KillstreakReward killstreakReward; private MySQLConfig mysqlConfig; + private Economy econ = null; private final WarConfigBag warConfig = new WarConfigBag(); private final WarzoneConfigBag warzoneDefaultConfig = new WarzoneConfigBag(); @@ -180,6 +186,8 @@ public class War extends JavaPlugin { warConfig.put(WarConfig.RESETSPEED, 5000); warConfig.put(WarConfig.MAXSIZE, 750); warConfig.put(WarConfig.LANGUAGE, Locale.getDefault().toString()); + warConfig.put(WarConfig.AUTOJOIN, ""); + warConfig.put(WarConfig.TPWARMUP, 0); warzoneDefaultConfig.put(WarzoneConfig.AUTOASSIGN, false); warzoneDefaultConfig.put(WarzoneConfig.BLOCKHEADS, true); @@ -224,6 +232,9 @@ public class War extends JavaPlugin { teamDefaultConfig.put(TeamConfig.KILLSTREAK, false); teamDefaultConfig.put(TeamConfig.BLOCKWHITELIST, "all"); teamDefaultConfig.put(TeamConfig.PLACEBLOCK, true); + teamDefaultConfig.put(TeamConfig.APPLYPOTION, ""); + teamDefaultConfig.put(TeamConfig.ECOREWARD, 0.0); + teamDefaultConfig.put(TeamConfig.INVENTORYDROP, false); this.getDefaultInventories().clearLoadouts(); HashMap defaultLoadout = new HashMap(); @@ -287,6 +298,13 @@ public class War extends JavaPlugin { this.getServer().getPluginManager().disablePlugin(this); } } + if (this.getServer().getPluginManager().isPluginEnabled("Vault")) { + RegisteredServiceProvider rsp = this.getServer().getServicesManager() + .getRegistration(Economy.class); + if (rsp != null) { + this.econ = rsp.getProvider(); + } + } War.reloadLanguage(); @@ -931,79 +949,62 @@ public class War extends JavaPlugin { return activeZones; } + static final boolean HIDE_BLANK_MESSAGES = true; + public void msg(CommandSender sender, String str) { + if (messages.containsKey(str)) str = this.getString(str); + if (HIDE_BLANK_MESSAGES && (str == null || str.isEmpty())) return; if (sender instanceof Player) { StringBuilder output = new StringBuilder(ChatColor.GRAY.toString()) .append(this.getString("war.prefix")).append(ChatColor.WHITE).append(' '); - if (messages.containsKey(str)) { - output.append(this.colorKnownTokens(this.getString(str), - ChatColor.WHITE)); - } else { - output.append(this.colorKnownTokens(str, ChatColor.WHITE)); - } + output.append(this.colorKnownTokens(str, ChatColor.WHITE)); sender.sendMessage(output.toString()); } else { - sender.sendMessage(messages.containsKey(str) ? messages.getString(str) : str); + sender.sendMessage(str); } } public void badMsg(CommandSender sender, String str) { + if (messages.containsKey(str)) str = this.getString(str); + if (HIDE_BLANK_MESSAGES && (str == null || str.isEmpty())) return; if (sender instanceof Player) { StringBuilder output = new StringBuilder(ChatColor.GRAY.toString()) .append(this.getString("war.prefix")).append(ChatColor.RED).append(' '); - if (messages.containsKey(str)) { - output.append(this.colorKnownTokens(this.getString(str), ChatColor.RED)); - } else { - output.append(this.colorKnownTokens(str, ChatColor.RED)); - } + output.append(this.colorKnownTokens(str, ChatColor.RED)); sender.sendMessage(output.toString()); } else { - sender.sendMessage(messages.containsKey(str) ? messages.getString(str) : str); + sender.sendMessage(str); } } public void msg(CommandSender sender, String str, Object... obj) { + if (messages.containsKey(str)) str = this.getString(str); + if (HIDE_BLANK_MESSAGES && (str == null || str.isEmpty())) return; if (sender instanceof Player) { StringBuilder output = new StringBuilder(ChatColor.GRAY.toString()) .append(this.getString("war.prefix")).append(ChatColor.WHITE).append(' '); - if (messages.containsKey(str)) { - output.append(MessageFormat.format(this.colorKnownTokens( - this.getString(str), ChatColor.WHITE), obj)); - } else { - output.append(MessageFormat.format( + output.append(MessageFormat.format( this.colorKnownTokens(str, ChatColor.WHITE), obj)); - } sender.sendMessage(output.toString()); } else { StringBuilder output = new StringBuilder(); - if (messages.containsKey(str)) { - output.append(MessageFormat.format(this.getString(str), obj)); - } else { - output.append(MessageFormat.format(str, obj)); - } + output.append(MessageFormat.format(str, obj)); sender.sendMessage(output.toString()); } } public void badMsg(CommandSender sender, String str, Object... obj) { + if (messages.containsKey(str)) str = this.getString(str); + if (HIDE_BLANK_MESSAGES && (str == null || str.isEmpty())) return; if (sender instanceof Player) { StringBuilder output = new StringBuilder(ChatColor.GRAY.toString()) .append(this.getString("war.prefix")).append(ChatColor.RED).append(' '); - if (messages.containsKey(str)) { - output.append(MessageFormat.format(this.colorKnownTokens( - this.getString(str), ChatColor.RED), obj)); - } else { - output.append(MessageFormat.format( + output.append(MessageFormat.format( this.colorKnownTokens(str, ChatColor.RED), obj)); - } sender.sendMessage(output.toString()); } else { StringBuilder output = new StringBuilder(); - if (messages.containsKey(str)) { - output.append(MessageFormat.format(this.getString(str), obj)); - } else { - output.append(MessageFormat.format(str, obj)); - } + output.append(MessageFormat.format(str, obj)); sender.sendMessage(output.toString()); } } @@ -1317,4 +1318,27 @@ public class War extends JavaPlugin { public Locale getLoadedLocale() { return messages.getLocale(); } + + /** + * Convert serialized effect to actual effect. + * @param serializedEffect String stored in configuration. + * Format: TYPE;DURATION;AMPLIFY + * @return Potion effect or null otherwise + */ + public PotionEffect getPotionEffect(String serializedEffect) { + String[] arr = serializedEffect.split(";"); + if (arr.length != 3) return null; + try { + PotionEffectType type = PotionEffectType.getByName(arr[0]); + int duration = Integer.parseInt(arr[1]); + int amplification = Integer.parseInt(arr[2]); + return new PotionEffect(type, duration, amplification); + } catch (RuntimeException ex) { + return null; + } + } + + public Economy getEconomy() { + return econ; + } } diff --git a/war/src/main/java/com/tommytony/war/Warzone.java b/war/src/main/java/com/tommytony/war/Warzone.java index 700fb41..43758c7 100644 --- a/war/src/main/java/com/tommytony/war/Warzone.java +++ b/war/src/main/java/com/tommytony/war/Warzone.java @@ -12,10 +12,11 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.logging.Level; -import com.tommytony.war.mapper.VolumeMapper; -import com.tommytony.war.mapper.ZoneVolumeMapper; +import net.milkbowl.vault.economy.EconomyResponse; + import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; @@ -27,15 +28,22 @@ import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; import org.bukkit.entity.Item; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.entity.TNTPrimed; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import org.bukkit.permissions.Permissible; +import org.bukkit.potion.PotionEffect; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Scoreboard; @@ -59,6 +67,8 @@ import com.tommytony.war.job.LoadoutResetJob; import com.tommytony.war.job.LogKillsDeathsJob; import com.tommytony.war.job.LogKillsDeathsJob.KillsDeathsRecord; import com.tommytony.war.mapper.LoadoutYmlMapper; +import com.tommytony.war.mapper.VolumeMapper; +import com.tommytony.war.mapper.ZoneVolumeMapper; import com.tommytony.war.spout.SpoutDisplayer; import com.tommytony.war.structure.Bomb; import com.tommytony.war.structure.Cake; @@ -153,6 +163,13 @@ public class Warzone { return bestGuess; } + public static Warzone getZoneByNameExact(String name) { + for (Warzone zone : War.war.getWarzones()) { + if (zone.getName().equalsIgnoreCase(name)) return zone; + } + return null; + } + public static Warzone getZoneByLocation(Location location) { for (Warzone warzone : War.war.getWarzones()) { if (location.getWorld().getName().equals(warzone.getWorld().getName()) && warzone.getVolume() != null && warzone.getVolume().contains(location)) { @@ -176,6 +193,15 @@ public class Warzone { return null; } + public static Warzone getZoneForDeadPlayer(Player player) { + for (Warzone warzone : War.war.getWarzones()) { + if (warzone.getReallyDeadFighters().contains(player.getName())) { + return warzone; + } + } + return null; + } + public boolean ready() { if (this.volume.hasTwoCorners() && !this.volume.tooSmall() && !this.volume.tooBig()) { return true; @@ -295,11 +321,13 @@ public class Warzone { // everyone back to team spawn with full health for (Team team : this.teams) { for (Player player : team.getPlayers()) { - if (respawnExempted == null - || (respawnExempted != null - && !player.getName().equals(respawnExempted.getName()))) { - this.respawnPlayer(team, player); + if (player.equals(respawnExempted)) { + continue; } + if (this.getReallyDeadFighters().contains(player.getName())) { + continue; + } + this.respawnPlayer(team, player); } team.setRemainingLives(team.getTeamConfig().resolveInt(TeamConfig.LIFEPOOL)); team.initializeTeamSpawns(); @@ -360,7 +388,6 @@ public class Warzone { this.flagThieves.clear(); this.bombThieves.clear(); this.cakeThieves.clear(); - this.reallyDeadFighters.clear(); if (this.getScoreboardType() != ScoreboardType.NONE) { this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); scoreboard.registerNewObjective(this.getScoreboardType().getDisplayName(), "dummy"); @@ -419,12 +446,21 @@ public class Warzone { private void handleRespawn(final Team team, final Player player) { // Fill hp - player.setRemainingAir(300); - player.setHealth(20); + player.setRemainingAir(player.getMaximumAir()); + player.setHealth(player.getMaxHealth()); player.setFoodLevel(20); player.setSaturation(team.getTeamConfig().resolveInt(TeamConfig.SATURATION)); player.setExhaustion(0); - player.setFireTicks(0); //this works fine here, why put it in LoudoutResetJob...? I'll keep it over there though + player.setFallDistance(0); + War.war.getServer().getScheduler().runTaskLater(War.war, new Runnable() { + + @Override + public void run() { + // Stop fire here, since doing it in the same tick as death doesn't extinguish it + player.setFireTicks(0); + } + + }, 1L); this.preventItemHackingThroughOpenedInventory(player); @@ -444,6 +480,18 @@ public class Warzone { // clear potion effects PotionEffectHelper.clearPotionEffects(player); + + String potionEffect = team.getTeamConfig().resolveString(TeamConfig.APPLYPOTION); + if (!potionEffect.isEmpty()) { + PotionEffect effect = War.war.getPotionEffect(potionEffect); + if (effect != null) { + player.addPotionEffect(effect); + } else { + War.war.getLogger().log(Level.WARNING, + "Failed to apply potion effect {0} in warzone {1}.", + new Object[] {potionEffect, name}); + } + } boolean isFirstRespawn = false; if (!this.getLoadoutSelections().keySet().contains(player.getName())) { @@ -936,206 +984,203 @@ public class Warzone { } team.addPlayer(player); team.resetSign(); - if (!this.hasPlayerState(player.getName())) { - this.keepPlayerState(player); - War.war.msg(player, "join.inventorystored"); + if (this.hasPlayerState(player.getName())) { + War.war.getLogger().log(Level.WARNING, "Player {0} in warzone {1} already has a stored state - they may have lost items", + new Object[] {player.getName(), this.getName()}); + this.playerStates.remove(player.getName()); } + this.getReallyDeadFighters().remove(player.getName()); + this.keepPlayerState(player); + War.war.msg(player, "join.inventorystored"); this.respawnPlayer(team, player); this.broadcast("join.broadcast", player.getName(), team.getKind().getFormattedName()); return true; } - - public void handleDeath(Player player) { - // THIS ISN'T THREAD SAFE - // Every death and player movement should ideally occur in sequence because - // 1) a death can cause the end of the game by emptying a lifepool causing the max score to be reached - // 2) a player movement from one block to the next (getting a flag home or causing a bomb to go off perhaps) could win the game - // - // Concurrent execution of these events could cause the inventory reset of the last players to die to fail as - // they get tp'ed back to the lobby, or perhaps kills to bleed into the next round. - - Team playerTeam = Team.getTeamByPlayerName(player.getName()); - - // Make sure the player that died is still part of a team, game may have ended while waiting. - // Ignore dying players that essentially just got tp'ed to lobby and got their state restored. - // Gotta take care of restoring ReallyDeadFighters' game-end state when in onRespawn as well. - if (playerTeam != null) { - // teleport to team spawn upon fast respawn death, but not for real deaths - if (!this.getWarzoneConfig().getBoolean(WarzoneConfig.REALDEATHS)) { - this.respawnPlayer(playerTeam, player); - } else { - // onPlayerRespawn takes care of real deaths - //player.setHealth(0); - this.getReallyDeadFighters().add(player.getName()); - } - - int remaining = playerTeam.getRemainingLifes(); - if (remaining == 0) { // your death caused your team to lose - if (this.isReinitializing()) { - // Prevent duplicate battle end. You died just after the battle ending death. - this.respawnPlayer(playerTeam, player); - } else { - // Handle team loss - List teams = this.getTeams(); - String scores = ""; - for (Team t : teams) { - if (War.war.isSpoutServer()) { - for (Player p : t.getPlayers()) { - SpoutPlayer sp = SpoutManager.getPlayer(p); - if (sp.isSpoutCraftEnabled()) { - sp.sendNotification( - SpoutDisplayer.cleanForNotification("Round over! " + playerTeam.getKind().getColor() + playerTeam.getName()), - SpoutDisplayer.cleanForNotification("ran out of lives."), - playerTeam.getKind().getBlockHead(), - 10000); - } - } - } - - t.teamcast("zone.battle.end", playerTeam.getName(), player.getName()); - if (t.getPlayers().size() != 0 && !t.getTeamConfig().resolveBoolean(TeamConfig.FLAGPOINTSONLY)) { - if (!t.getName().equals(playerTeam.getName())) { - // all other teams get a point - t.addPoint(); - t.resetSign(); - } - scores += '\n' + t.getName() + "(" + t.getPoints() + "/" + t.getTeamConfig().resolveInt(TeamConfig.MAXSCORE) + ") "; - - } - } - - // whoever didn't lose, reward them - // - List winningTeams = new ArrayList(teams.size()); - for( Team t : teams ) { - if( !t.getPlayers().contains(player)) { - winningTeams.add(t); - } - } - WarBattleWinEvent event1 = new WarBattleWinEvent(this, winningTeams); - War.war.getServer().getPluginManager().callEvent(event1); - - if (!scores.equals("")) { - this.broadcast("zone.battle.newscores", scores); - } - if (War.war.getMysqlConfig().isEnabled() && War.war.getMysqlConfig().isLoggingEnabled()) { - LogKillsDeathsJob logKillsDeathsJob = new LogKillsDeathsJob(ImmutableList.copyOf(this.getKillsDeathsTracker())); - War.war.getServer().getScheduler().runTaskAsynchronously(War.war, logKillsDeathsJob); - } - this.getKillsDeathsTracker().clear(); - // detect score cap - List scoreCapTeams = new ArrayList(); - for (Team t : teams) { - if (t.getPoints() == t.getTeamConfig().resolveInt(TeamConfig.MAXSCORE)) { - scoreCapTeams.add(t); - } - } - if (!scoreCapTeams.isEmpty()) { - String winnersStr = ""; - for (Team winner : scoreCapTeams) { - if (winner.getPlayers().size() != 0) { - winnersStr += winner.getName() + " "; - } - } - this.handleScoreCapReached(winnersStr); - } else { - // A new battle starts. Reset the zone but not the teams. - this.broadcast("zone.battle.reset"); - if (this.getWarzoneConfig().getBoolean(WarzoneConfig.RESETBLOCKS)) { - this.reinitialize(); - } else { - this.initializeZone(); - } - } - } - } else { - // player died without causing his team's demise - if (this.isFlagThief(player.getName())) { - // died while carrying flag.. dropped it - Team victim = this.getVictimTeamForFlagThief(player.getName()); - victim.getFlagVolume().resetBlocks(); - victim.initializeTeamFlag(); - this.removeFlagThief(player.getName()); - - if (War.war.isSpoutServer()) { - for (Player p : victim.getPlayers()) { - SpoutPlayer sp = SpoutManager.getPlayer(p); - if (sp.isSpoutCraftEnabled()) { - sp.sendNotification( - SpoutDisplayer.cleanForNotification(playerTeam.getKind().getColor() + player.getName() + ChatColor.YELLOW + " dropped"), - SpoutDisplayer.cleanForNotification(ChatColor.YELLOW + "your flag."), - playerTeam.getKind().getBlockHead(), - 5000); - } - } - } - - this.broadcast("drop.flag.broadcast", player.getName(), victim.getName()); - } - - // Bomb thieves - if (this.isBombThief(player.getName())) { - // died while carrying bomb.. dropped it - Bomb bomb = this.getBombForThief(player.getName()); - bomb.getVolume().resetBlocks(); - bomb.addBombBlocks(); - this.removeBombThief(player.getName()); - - for (Team t : this.getTeams()) { - t.teamcast("drop.bomb.broadcast", player.getName(), ChatColor.GREEN + bomb.getName() + ChatColor.WHITE); - if (War.war.isSpoutServer()) { - for (Player p : t.getPlayers()) { - SpoutPlayer sp = SpoutManager.getPlayer(p); - if (sp.isSpoutCraftEnabled()) { - sp.sendNotification( - SpoutDisplayer.cleanForNotification(playerTeam.getKind().getColor() + player.getName() + ChatColor.YELLOW + " dropped"), - SpoutDisplayer.cleanForNotification(ChatColor.YELLOW + "bomb " + ChatColor.GREEN + bomb.getName() + ChatColor.YELLOW + "."), - Material.TNT, - (short)0, - 5000); - } - } - } - } - } - - if (this.isCakeThief(player.getName())) { - // died while carrying cake.. dropped it - Cake cake = this.getCakeForThief(player.getName()); - cake.getVolume().resetBlocks(); - cake.addCakeBlocks(); - this.removeCakeThief(player.getName()); - - for (Team t : this.getTeams()) { - t.teamcast("drop.cake.broadcast", player.getName(), ChatColor.GREEN + cake.getName() + ChatColor.WHITE); - if (War.war.isSpoutServer()) { - for (Player p : t.getPlayers()) { - SpoutPlayer sp = SpoutManager.getPlayer(p); - if (sp.isSpoutCraftEnabled()) { - sp.sendNotification( - SpoutDisplayer.cleanForNotification(playerTeam.getKind().getColor() + player.getName() + ChatColor.YELLOW + " dropped"), - SpoutDisplayer.cleanForNotification(ChatColor.YELLOW + "cake " + ChatColor.GREEN + cake.getName() + ChatColor.YELLOW + "."), - Material.CAKE, - (short)0, - 5000); - } - } - } - } - } - - // Decrement lifepool - playerTeam.setRemainingLives(remaining - 1); - - // Lifepool empty warning - if (remaining - 1 == 0) { - this.broadcast("zone.lifepool.empty", playerTeam.getName()); - } + private void dropItems(Location location, ItemStack[] items) { + for (ItemStack item : items) { + if (item == null || item.getType() == Material.AIR) { + continue; } - playerTeam.resetSign(); + location.getWorld().dropItem(location, item); } } + + private Random killSeed = new Random(); + + /** + * Send death messages and process other records before passing off the + * death to the {@link #handleDeath(Player)} method. + * @param attacker Player who killed the defender + * @param defender Player who was killed + * @param damager Entity who caused the damage. Usually an arrow. Used for + * specific death messages. Can be null. + */ + public void handleKill(Player attacker, Player defender, Entity damager) { + Team attackerTeam = this.getPlayerTeam(attacker.getName()); + Team defenderTeam = this.getPlayerTeam(defender.getName()); + if (this.getWarzoneConfig().getBoolean(WarzoneConfig.DEATHMESSAGES)) { + String attackerString = attackerTeam.getKind().getColor() + attacker.getName(); + String defenderString = defenderTeam.getKind().getColor() + defender.getName(); + Material killerWeapon = attacker.getItemInHand().getType(); + String weaponString = killerWeapon.toString(); + if (attacker.getItemInHand().hasItemMeta() && attacker.getItemInHand().getItemMeta().hasDisplayName()) { + weaponString = attacker.getItemInHand().getItemMeta().getDisplayName() + ChatColor.WHITE; + } + if (killerWeapon == Material.AIR) { + weaponString = War.war.getString("pvp.kill.weapon.hand"); + } else if (killerWeapon == Material.BOW || damager instanceof Arrow) { + int rand = killSeed.nextInt(3); + if (rand == 0) { + weaponString = War.war.getString("pvp.kill.weapon.bow"); + } else { + weaponString = War.war.getString("pvp.kill.weapon.aim"); + } + } else if (damager instanceof Projectile) { + weaponString = War.war.getString("pvp.kill.weapon.aim"); + } + String adjectiveString = War.war.getDeadlyAdjectives().isEmpty() ? "" : War.war.getDeadlyAdjectives().get(this.killSeed.nextInt(War.war.getDeadlyAdjectives().size())); + String verbString = War.war.getKillerVerbs().isEmpty() ? "" : War.war.getKillerVerbs().get(this.killSeed.nextInt(War.war.getKillerVerbs().size())); + this.broadcast("pvp.kill.format", attackerString + ChatColor.WHITE, adjectiveString, + weaponString.toLowerCase().replace('_', ' '), verbString, defenderString); + } + this.addKillCount(attacker.getName(), 1); + this.addKillDeathRecord(attacker, 1, 0); + this.addKillDeathRecord(defender, 0, 1); + if (attackerTeam.getTeamConfig().resolveBoolean(TeamConfig.XPKILLMETER)) { + attacker.setLevel(this.getKillCount(attacker.getName())); + } + if (attackerTeam.getTeamConfig().resolveBoolean(TeamConfig.KILLSTREAK)) { + War.war.getKillstreakReward().rewardPlayer(attacker, this.getKillCount(attacker.getName())); + } + if (this.getScoreboard() != null && this.getScoreboardType() == ScoreboardType.TOPKILLS) { + Objective obj = this.getScoreboard().getObjective("Top kills"); + obj.getScore(attacker).setScore(this.getKillCount(attacker.getName())); + } + if (defenderTeam.getTeamConfig().resolveBoolean(TeamConfig.INVENTORYDROP)) { + dropItems(defender.getLocation(), defender.getInventory().getContents()); + dropItems(defender.getLocation(), defender.getInventory().getArmorContents()); + } + this.handleDeath(defender); + } + + /** + * Handle death messages before passing to {@link #handleDeath(Player)} + * for post-processing. It's like + * {@link #handleKill(Player, Player, Entity)}, but only for suicides. + * @param player Player who killed himself + */ + public void handleSuicide(Player player) { + if (this.getWarzoneConfig().getBoolean(WarzoneConfig.DEATHMESSAGES)) { + String defenderString = this.getPlayerTeam(player.getName()).getKind().getColor() + player.getName() + ChatColor.WHITE; + this.broadcast("pvp.kill.self", defenderString); + } + this.handleDeath(player); + } + + /** + * Handle a player killed naturally (like by a dispenser or explosion). + * @param player Player killed + * @param event Event causing damage + */ + public void handleNaturalKill(Player player, EntityDamageEvent event) { + if (this.getWarzoneConfig().getBoolean(WarzoneConfig.DEATHMESSAGES)) { + String defenderString = this.getPlayerTeam(player.getName()).getKind().getColor() + player.getName() + ChatColor.WHITE; + if (event instanceof EntityDamageByEntityEvent + && ((EntityDamageByEntityEvent) event).getDamager() instanceof TNTPrimed) { + this.broadcast("pvp.death.explosion", defenderString + ChatColor.WHITE); + } else if (event.getCause() == DamageCause.FIRE || event.getCause() == DamageCause.FIRE_TICK + || event.getCause() == DamageCause.LAVA || event.getCause() == DamageCause.LIGHTNING) { + this.broadcast("pvp.death.fire", defenderString); + } else if (event.getCause() == DamageCause.DROWNING) { + this.broadcast("pvp.death.drown", defenderString); + } else if (event.getCause() == DamageCause.FALL) { + this.broadcast("pvp.death.fall", defenderString); + } else { + this.broadcast("pvp.death.other", defenderString); + } + } + this.handleDeath(player); + } + + /** + * Cleanup after a player who has died. This decrements the team's + * remaining lifepool, drops stolen flags, and respawns the player. + * It also handles team lose and score cap conditions. + * This method is synchronized to prevent concurrent battle resets. + * @param player Player who died + */ + public synchronized void handleDeath(Player player) { + Team playerTeam = this.getPlayerTeam(player.getName()); + Validate.notNull(playerTeam, "Can't find team for dead player " + player.getName()); + if (this.getWarzoneConfig().getBoolean(WarzoneConfig.REALDEATHS)) { + this.getReallyDeadFighters().add(player.getName()); + } else { + this.respawnPlayer(playerTeam, player); + } + if (playerTeam.getRemainingLifes() <= 0) { + handleTeamLoss(playerTeam, player); + } else { + this.dropAllStolenObjects(player, false); + playerTeam.setRemainingLives(playerTeam.getRemainingLifes() - 1); + // Lifepool empty warning + if (playerTeam.getRemainingLifes() == 0) { + this.broadcast("zone.lifepool.empty", playerTeam.getName()); + } + } + playerTeam.resetSign(); + } + + private void handleTeamLoss(Team losingTeam, Player player) { + StringBuilder teamScores = new StringBuilder(); + List winningTeams = new ArrayList(teams.size()); + for (Team team : this.teams) { + if (team.getPlayers().isEmpty()) + continue; + if (team != losingTeam) { + team.addPoint(); + team.resetSign(); + winningTeams.add(team); + } + teamScores.append(String.format("\n%s (%d/%d) ", team.getName(), team.getPoints(), team.getTeamConfig().resolveInt(TeamConfig.MAXSCORE))); + team.sendAchievement("Round over! " + losingTeam.getKind().getFormattedName(), "ran out of lives.", losingTeam.getKind().getBlockHead(), 10000); + } + this.broadcast("zone.battle.end", losingTeam.getName(), player.getName()); + WarBattleWinEvent event1 = new WarBattleWinEvent(this, winningTeams); + War.war.getServer().getPluginManager().callEvent(event1); + if (!teamScores.toString().isEmpty()) { + this.broadcast("zone.battle.newscores", teamScores.toString()); + } + if (War.war.getMysqlConfig().isEnabled() && War.war.getMysqlConfig().isLoggingEnabled()) { + LogKillsDeathsJob logKillsDeathsJob = new LogKillsDeathsJob(ImmutableList.copyOf(this.getKillsDeathsTracker())); + War.war.getServer().getScheduler().runTaskAsynchronously(War.war, logKillsDeathsJob); + } + this.getKillsDeathsTracker().clear(); + if (!detectScoreCap()) { + this.broadcast("zone.battle.reset"); + if (this.getWarzoneConfig().getBoolean(WarzoneConfig.RESETBLOCKS)) { + this.reinitialize(); + } else { + this.initializeZone(); + } + } + } + + /** + * Check if a team has achieved max score "score cap". + * @return true if team has achieved max score, false otherwise. + */ + public boolean detectScoreCap() { + StringBuilder winnersStr = new StringBuilder(); + for (Team team : this.teams) { + if (team.getPoints() >= team.getTeamConfig().resolveInt(TeamConfig.MAXSCORE)) { + winnersStr.append(team.getName()).append(' '); + } + } + if (!winnersStr.toString().isEmpty()) + this.handleScoreCapReached(winnersStr.toString()); + return !winnersStr.toString().isEmpty(); + } public void reinitialize() { this.isReinitializing = true; @@ -1347,6 +1392,8 @@ public class Warzone { String winnersStrAndExtra = "Score cap reached. Game is over! Winning team(s): " + winnersStr; winnersStrAndExtra += ". Resetting warzone and your inventory..."; t.teamcast(winnersStrAndExtra); + double ecoReward = t.getTeamConfig().resolveDouble(TeamConfig.ECOREWARD); + boolean doEcoReward = ecoReward != 0 && War.war.getEconomy() != null; for (Iterator it = t.getPlayers().iterator(); it.hasNext();) { Player tp = it.next(); it.remove(); // Remove player from team first to prevent anti-tp @@ -1355,6 +1402,19 @@ public class Warzone { if (winnersStr.contains(t.getName())) { // give reward rewardPlayer(tp, t.getInventories().resolveReward()); + if (doEcoReward) { + EconomyResponse r; + if (ecoReward > 0) { + r = War.war.getEconomy().depositPlayer(tp.getName(), ecoReward); + } else { + r = War.war.getEconomy().withdrawPlayer(tp.getName(), ecoReward); + } + if (!r.transactionSuccess()) { + War.war.getLogger().log(Level.WARNING, + "Failed to reward player {0} ${1}. Error: {2}", + new Object[] {tp.getName(), ecoReward, r.errorMessage}); + } + } } } t.resetPoints(); @@ -1797,7 +1857,7 @@ public class Warzone { victimTeam.initializeTeamFlag(); if (!quiet) { - this.broadcast("drop.flag.broadcast", player.getName(), ChatColor.GREEN + victimTeam.getName() + ChatColor.WHITE); + this.broadcast("drop.flag.broadcast", player.getName(), victimTeam.getKind().getColor() + victimTeam.getName() + ChatColor.WHITE); } } else if (this.isCakeThief(player.getName())) { Cake cake = this.getCakeForThief(player.getName()); diff --git a/war/src/main/java/com/tommytony/war/command/ResetZoneCommand.java b/war/src/main/java/com/tommytony/war/command/ResetZoneCommand.java index 986891a..107d020 100644 --- a/war/src/main/java/com/tommytony/war/command/ResetZoneCommand.java +++ b/war/src/main/java/com/tommytony/war/command/ResetZoneCommand.java @@ -53,7 +53,9 @@ public class ResetZoneCommand extends AbstractZoneMakerCommand { Player p = it.next(); it.remove(); team.removePlayer(p); - p.teleport(zone.getEndTeleport(LeaveCause.RESET)); + if (!zone.getReallyDeadFighters().contains(p.getName())) { + p.teleport(zone.getEndTeleport(LeaveCause.RESET)); + } } team.resetPoints(); team.getPlayers().clear(); diff --git a/war/src/main/java/com/tommytony/war/command/WarhubCommand.java b/war/src/main/java/com/tommytony/war/command/WarhubCommand.java index 609de85..0f2252f 100644 --- a/war/src/main/java/com/tommytony/war/command/WarhubCommand.java +++ b/war/src/main/java/com/tommytony/war/command/WarhubCommand.java @@ -1,5 +1,7 @@ package com.tommytony.war.command; +import com.tommytony.war.config.WarConfig; +import com.tommytony.war.job.TeleportPlayerJob; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -36,7 +38,15 @@ public class WarhubCommand extends AbstractWarCommand { if (playerWarzone != null) { // was in zone playerWarzone.handlePlayerLeave(player, War.war.getWarHub().getLocation(), true); } - player.teleport(War.war.getWarHub().getLocation()); + int warmup = War.war.getWarConfig().getInt(WarConfig.TPWARMUP); + if (warmup > 0 && !player.hasPermission("war.warmupexempt")) { + final int TICKS_PER_SECOND = 20; + TeleportPlayerJob job = new TeleportPlayerJob(player, War.war.getWarHub().getLocation()); + job.runTaskLater(War.war, warmup); + this.msg("command.tp.init", warmup / TICKS_PER_SECOND); + } else { + player.teleport(War.war.getWarHub().getLocation()); + } } return true; } diff --git a/war/src/main/java/com/tommytony/war/command/WarzoneCommand.java b/war/src/main/java/com/tommytony/war/command/WarzoneCommand.java index 2b20d9e..86f9d32 100644 --- a/war/src/main/java/com/tommytony/war/command/WarzoneCommand.java +++ b/war/src/main/java/com/tommytony/war/command/WarzoneCommand.java @@ -1,5 +1,7 @@ package com.tommytony.war.command; +import com.tommytony.war.config.WarConfig; +import com.tommytony.war.job.TeleportPlayerJob; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -30,8 +32,15 @@ public class WarzoneCommand extends AbstractWarCommand { Warzone warzone = Warzone.getZoneByName(args[0]); if (warzone != null && warzone.getTeleport() != null) { Warzone playerWarzone = Warzone.getZoneByPlayerName(player.getName()); + int warmup = War.war.getWarConfig().getInt(WarConfig.TPWARMUP); if (playerWarzone != null) { playerWarzone.handlePlayerLeave(player, warzone.getTeleport(), true); + } + if (warmup > 0 && !player.hasPermission("war.warmupexempt")) { + final int TICKS_PER_SECOND = 20; + TeleportPlayerJob job = new TeleportPlayerJob(player, warzone.getTeleport()); + job.runTaskLater(War.war, warmup); + this.msg("command.tp.init", warmup / TICKS_PER_SECOND); } else { player.teleport(warzone.getTeleport()); } diff --git a/war/src/main/java/com/tommytony/war/config/KillstreakReward.java b/war/src/main/java/com/tommytony/war/config/KillstreakReward.java index 526c295..de5918c 100644 --- a/war/src/main/java/com/tommytony/war/config/KillstreakReward.java +++ b/war/src/main/java/com/tommytony/war/config/KillstreakReward.java @@ -4,12 +4,15 @@ import com.google.common.collect.ImmutableList; import com.tommytony.war.Team; import com.tommytony.war.War; import com.tommytony.war.Warzone; + import java.text.MessageFormat; import java.util.HashSet; import java.util.Map; import java.util.Set; + import org.apache.commons.lang.Validate; import org.bukkit.ChatColor; +import org.bukkit.Effect; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.MemoryConfiguration; @@ -41,6 +44,7 @@ public class KillstreakReward { section.set("5.reward.points", 1); section.set("5.reward.airstrike", true); section.set("5.reward.items", ImmutableList.of(new ItemStack(Material.ARROW, 15), new ItemStack(Material.EGG))); + section.set("5.reward.effect", Effect.GHAST_SHRIEK.name()); ItemStack sword = new ItemStack(Material.WOOD_SWORD); sword.addEnchantment(Enchantment.DAMAGE_ALL, 2); sword.addEnchantment(Enchantment.KNOCKBACK, 1); @@ -131,6 +135,10 @@ public class KillstreakReward { if (killSection.getBoolean("reward.airstrike")) { this.airstrikePlayers.add(player.getName()); } + if (killSection.contains("reward.effect")) { + Effect effect = Effect.valueOf(killSection.getString("reward.effect")); + player.getWorld().playEffect(player.getLocation(), effect, null); + } } } diff --git a/war/src/main/java/com/tommytony/war/config/ScoreboardType.java b/war/src/main/java/com/tommytony/war/config/ScoreboardType.java index 4c233e5..40de160 100644 --- a/war/src/main/java/com/tommytony/war/config/ScoreboardType.java +++ b/war/src/main/java/com/tommytony/war/config/ScoreboardType.java @@ -4,7 +4,8 @@ public enum ScoreboardType { NONE(null), POINTS("Points"), - LIFEPOOL("Lifepool"); + LIFEPOOL("Lifepool"), + TOPKILLS("Top kills"); private final String displayName; private ScoreboardType(String displayName) { diff --git a/war/src/main/java/com/tommytony/war/config/TeamConfig.java b/war/src/main/java/com/tommytony/war/config/TeamConfig.java index 222c0d5..25b4f86 100644 --- a/war/src/main/java/com/tommytony/war/config/TeamConfig.java +++ b/war/src/main/java/com/tommytony/war/config/TeamConfig.java @@ -17,7 +17,10 @@ public enum TeamConfig { XPKILLMETER (Boolean.class), KILLSTREAK (Boolean.class), BLOCKWHITELIST (String.class), - PLACEBLOCK (Boolean.class); + PLACEBLOCK (Boolean.class), + APPLYPOTION(String.class), + ECOREWARD(Double.class), + INVENTORYDROP(Boolean.class); private final Class configType; diff --git a/war/src/main/java/com/tommytony/war/config/TeamConfigBag.java b/war/src/main/java/com/tommytony/war/config/TeamConfigBag.java index cadbed5..ddd7712 100644 --- a/war/src/main/java/com/tommytony/war/config/TeamConfigBag.java +++ b/war/src/main/java/com/tommytony/war/config/TeamConfigBag.java @@ -54,6 +54,25 @@ public class TeamConfigBag { } } + public Double getDouble(TeamConfig config) { + if (this.contains(config)) { + return (Double)this.bag.get(config); + } + return null; + } + + public Double resolveDouble(TeamConfig config) { + if (this.contains(config)) { + return (Double)this.bag.get(config); + } else if (this.warzone != null && this.warzone.getTeamDefaultConfig().contains(config)){ + // use Warzone default config + return this.warzone.getTeamDefaultConfig().resolveDouble(config); + } else { + // use War default config + return War.war.getTeamDefaultConfig().resolveDouble(config); + } + } + public Integer getInt(TeamConfig config) { if (this.contains(config)) { return (Integer)this.bag.get(config); @@ -157,6 +176,8 @@ public class TeamConfigBag { this.put(config, teamConfigSection.getBoolean(config.toString())); } else if (config.getConfigType().equals(String.class)) { this.put(config, teamConfigSection.getString(config.toString())); + } else if (config.getConfigType().equals(Double.class)) { + this.put(config, teamConfigSection.getDouble(config.toString())); } else if (config.getConfigType().equals(FlagReturn.class)) { String flagReturnStr = teamConfigSection.getString(config.toString()); FlagReturn returnMode = FlagReturn.getFromString(flagReturnStr); @@ -178,7 +199,8 @@ public class TeamConfigBag { for (TeamConfig config : TeamConfig.values()) { if (this.contains(config)) { if (config.getConfigType().equals(Integer.class) - || config.getConfigType().equals(Boolean.class)) { + || config.getConfigType().equals(Boolean.class) + || config.getConfigType().equals(Double.class)) { teamConfigSection.set(config.toString(), this.bag.get(config)); } else { teamConfigSection.set(config.toString(), this.bag.get(config).toString()); @@ -195,6 +217,9 @@ public class TeamConfigBag { if (teamConfig.getConfigType().equals(Integer.class)) { int intValue = Integer.parseInt(namedParams.get(namedParam)); this.bag.put(teamConfig, intValue); + } else if (teamConfig.getConfigType().equals(Double.class)) { + double doubleValue = Double.parseDouble(namedParams.get(namedParam)); + this.bag.put(teamConfig, doubleValue); } else if (teamConfig.getConfigType().equals(Boolean.class)) { String onOff = namedParams.get(namedParam); this.bag.put(teamConfig, onOff.equals("on") || onOff.equals("true")); diff --git a/war/src/main/java/com/tommytony/war/config/WarConfig.java b/war/src/main/java/com/tommytony/war/config/WarConfig.java index 36846ea..e78e469 100644 --- a/war/src/main/java/com/tommytony/war/config/WarConfig.java +++ b/war/src/main/java/com/tommytony/war/config/WarConfig.java @@ -11,7 +11,9 @@ public enum WarConfig { TNTINZONESONLY (Boolean.class), RESETSPEED (Integer.class), MAXSIZE (Integer.class), - LANGUAGE (String.class); + LANGUAGE (String.class), + AUTOJOIN (String.class), + TPWARMUP(Integer.class); private final Class configType; diff --git a/war/src/main/java/com/tommytony/war/event/WarBlockListener.java b/war/src/main/java/com/tommytony/war/event/WarBlockListener.java index 385703d..931cda4 100644 --- a/war/src/main/java/com/tommytony/war/event/WarBlockListener.java +++ b/war/src/main/java/com/tommytony/war/event/WarBlockListener.java @@ -4,9 +4,11 @@ import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.block.BlockState; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBurnEvent; @@ -14,6 +16,7 @@ import org.bukkit.event.block.BlockDamageEvent; import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.world.StructureGrowEvent; import org.bukkit.inventory.ItemStack; import org.getspout.spoutapi.SpoutManager; import org.getspout.spoutapi.player.SpoutPlayer; @@ -460,4 +463,16 @@ public class WarBlockListener implements Listener { return; } } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onStructureGrowth(final StructureGrowEvent event) { + Warzone zone = Warzone.getZoneByLocation(event.getLocation()); + if (zone != null) { + for (BlockState state : event.getBlocks()) { + if (!zone.getVolume().contains(state.getLocation())) { + state.setType(Material.AIR); + } + } + } + } } diff --git a/war/src/main/java/com/tommytony/war/event/WarEntityListener.java b/war/src/main/java/com/tommytony/war/event/WarEntityListener.java index 09f82f3..4d39a66 100644 --- a/war/src/main/java/com/tommytony/war/event/WarEntityListener.java +++ b/war/src/main/java/com/tommytony/war/event/WarEntityListener.java @@ -2,16 +2,17 @@ package com.tommytony.war.event; import java.util.ArrayList; import java.util.List; -import java.util.Random; import java.util.logging.Level; +import java.text.MessageFormat; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockState; -import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.TNTPrimed; @@ -19,18 +20,22 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; -import org.bukkit.event.entity.EntityCombustEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; import org.bukkit.event.entity.ExplosionPrimeEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; -import org.getspout.spoutapi.SpoutManager; -import org.getspout.spoutapi.player.SpoutPlayer; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.event.hanging.HangingPlaceEvent; +import org.bukkit.event.hanging.HangingBreakByEntityEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.metadata.FixedMetadataValue; +import org.bukkit.projectiles.ProjectileSource; +import org.bukkit.util.Vector; import com.tommytony.war.Team; import com.tommytony.war.War; @@ -39,15 +44,8 @@ import com.tommytony.war.config.TeamConfig; import com.tommytony.war.config.WarConfig; import com.tommytony.war.config.WarzoneConfig; import com.tommytony.war.job.DeferredBlockResetsJob; -import com.tommytony.war.spout.SpoutDisplayer; import com.tommytony.war.structure.Bomb; import com.tommytony.war.utility.LoadoutSelection; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.util.Vector; /** * Handles Entity-Events @@ -57,8 +55,6 @@ import org.bukkit.util.Vector; */ public class WarEntityListener implements Listener { - private final Random killSeed = new Random(); - /** * Handles PVP-Damage * @@ -68,7 +64,7 @@ public class WarEntityListener implements Listener { private void handlerAttackDefend(EntityDamageByEntityEvent event) { Entity attacker = event.getDamager(); Entity defender = event.getEntity(); - + // Maybe an arrow was thrown if (attacker != null && event.getDamager() instanceof Projectile && ((Projectile)event.getDamager()).getShooter() instanceof Player){ attacker = ((Player)((Projectile)event.getDamager()).getShooter()); @@ -82,24 +78,24 @@ public class WarEntityListener implements Listener { Team attackerTeam = Team.getTeamByPlayerName(a.getName()); Warzone defenderWarzone = Warzone.getZoneByPlayerName(d.getName()); Team defenderTeam = Team.getTeamByPlayerName(d.getName()); - + if ((attackerTeam != null && defenderTeam != null && attackerTeam != defenderTeam && attackerWarzone == defenderWarzone) || (attackerTeam != null && defenderTeam != null && attacker.getEntityId() == defender.getEntityId())) { - + LoadoutSelection defenderLoadoutState = defenderWarzone.getLoadoutSelections().get(d.getName()); if (defenderLoadoutState != null && defenderLoadoutState.isStillInSpawn()) { War.war.badMsg(a, "pvp.target.spawn"); event.setCancelled(true); return; } - + LoadoutSelection attackerLoadoutState = attackerWarzone.getLoadoutSelections().get(a.getName()); if (attackerLoadoutState != null && attackerLoadoutState.isStillInSpawn()) { War.war.badMsg(a, "pvp.self.spawn"); event.setCancelled(true); return; } - + // Make sure none of them are locked in by respawn timer if (defenderWarzone.isRespawning(d)) { War.war.badMsg(a, "pvp.target.respawn"); @@ -110,7 +106,7 @@ public class WarEntityListener implements Listener { event.setCancelled(true); return; } - + if (!attackerWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.PVPINZONE)) { // spleef-like, non-pvp, zone event.setCancelled(true); @@ -120,78 +116,35 @@ public class WarEntityListener implements Listener { // Detect death, prevent it and respawn the player if (event.getDamage() >= d.getHealth()) { if (defenderWarzone.getReallyDeadFighters().contains(d.getName())) { - // don't re-kill a dead person - if (d.getHealth() != 0) { - d.setHealth(0); - } - + // don't re-kill a dead person return; } - - if (attackerWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.DEATHMESSAGES)) { - String attackerString = attackerTeam.getKind().getColor() + a.getName(); - String defenderString = defenderTeam.getKind().getColor() + d.getName(); - if (attacker.getEntityId() != defender.getEntityId()) { - Material killerWeapon = a.getItemInHand().getType(); - String weaponString = killerWeapon.toString(); - if (a.getItemInHand().hasItemMeta() && a.getItemInHand().getItemMeta().hasDisplayName()) { - weaponString = a.getItemInHand().getItemMeta().getDisplayName() + ChatColor.WHITE; - } - if (killerWeapon == Material.AIR) { - weaponString = War.war.getString("pvp.kill.weapon.hand"); - } else if (killerWeapon == Material.BOW || event.getDamager() instanceof Arrow) { - int rand = killSeed.nextInt(3); - if (rand == 0) { - weaponString = War.war.getString("pvp.kill.weapon.bow"); - } else { - weaponString = War.war.getString("pvp.kill.weapon.aim"); - } - } else if (event.getDamager() instanceof Projectile) { - weaponString = War.war.getString("pvp.kill.weapon.aim"); - } - String adjectiveString = War.war.getDeadlyAdjectives().isEmpty() ? "" : War.war.getDeadlyAdjectives().get(this.killSeed.nextInt(War.war.getDeadlyAdjectives().size())); - String verbString = War.war.getKillerVerbs().isEmpty() ? "" : War.war.getKillerVerbs().get(this.killSeed.nextInt(War.war.getKillerVerbs().size())); - defenderWarzone.broadcast("pvp.kill.format", attackerString + ChatColor.WHITE, adjectiveString, - weaponString.toLowerCase().replace('_', ' '), verbString, defenderString); - } else { - defenderWarzone.broadcast("pvp.kill.self", defenderString + ChatColor.WHITE); - } - } - if (attacker.getEntityId() != defender.getEntityId()) { - defenderWarzone.addKillCount(a.getName(), 1); - defenderWarzone.addKillDeathRecord(a, 1, 0); - defenderWarzone.addKillDeathRecord(d, 0, 1); - if (attackerTeam.getTeamConfig().resolveBoolean(TeamConfig.XPKILLMETER)) { - a.setLevel(defenderWarzone.getKillCount(a.getName())); - } - if (attackerTeam.getTeamConfig().resolveBoolean(TeamConfig.KILLSTREAK)) { - War.war.getKillstreakReward().rewardPlayer(a, defenderWarzone.getKillCount(a.getName())); - } - } WarPlayerDeathEvent event1 = new WarPlayerDeathEvent(defenderWarzone, d, a, event.getCause()); War.war.getServer().getPluginManager().callEvent(event1); - defenderWarzone.handleDeath(d); if (!defenderWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.REALDEATHS)) { // fast respawn, don't really die event.setCancelled(true); - return; } - + if (d == a) { + defenderWarzone.handleSuicide(d); + } else { + defenderWarzone.handleKill(a, d, event.getDamager()); + } } else if (defenderWarzone.isBombThief(d.getName()) && d.getLocation().distance(a.getLocation()) < 2) { - // Close combat, close enough to detonate + // Close combat, close enough to detonate Bomb bomb = defenderWarzone.getBombForThief(d.getName()); - - // Kill the bomber + + // Kill the bomber WarPlayerDeathEvent event1 = new WarPlayerDeathEvent(defenderWarzone, d, null, event.getCause()); War.war.getServer().getPluginManager().callEvent(event1); defenderWarzone.handleDeath(d); - + if (defenderWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.REALDEATHS)) { // and respawn him and remove from deadmen (cause realdeath + handleDeath means no respawn and getting queued up for onPlayerRespawn) defenderWarzone.getReallyDeadFighters().remove(d.getName()); defenderWarzone.respawnPlayer(defenderTeam, d); } - + // Blow up bomb if (!defenderWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.UNBREAKABLE)) { defenderWarzone.getWorld().createExplosion(a.getLocation(), 2F); @@ -200,27 +153,14 @@ public class WarEntityListener implements Listener { // bring back tnt bomb.getVolume().resetBlocks(); bomb.addBombBlocks(); - + // Notify everyone for (Team t : defenderWarzone.getTeams()) { - if (War.war.isSpoutServer()) { - for (Player p : t.getPlayers()) { - SpoutPlayer sp = SpoutManager.getPlayer(p); - if (sp.isSpoutCraftEnabled()) { - sp.sendNotification( - SpoutDisplayer.cleanForNotification(attackerTeam.getKind().getColor() + a.getName() + ChatColor.YELLOW + " made "), - SpoutDisplayer.cleanForNotification(defenderTeam.getKind().getColor() + d.getName() + ChatColor.YELLOW + " blow up!"), - Material.TNT, - (short)0, - 10000); - } - } - } - + t.sendAchievement(attackerTeam.getKind().getColor() + a.getName() + ChatColor.YELLOW + " made ", + defenderTeam.getKind().getColor() + d.getName() + ChatColor.YELLOW + " blow up!", new ItemStack(Material.TNT), 10000); t.teamcast("pvp.kill.bomb", attackerTeam.getKind().getColor() + a.getName() + ChatColor.WHITE, defenderTeam.getKind().getColor() + d.getName() + ChatColor.WHITE); } - } } else if (attackerTeam != null && defenderTeam != null && attackerTeam == defenderTeam && attackerWarzone == defenderWarzone && attacker.getEntityId() != defender.getEntityId()) { // same team, but not same person @@ -236,7 +176,7 @@ public class WarEntityListener implements Listener { if (!War.war.getWarConfig().getBoolean(WarConfig.DISABLEPVPMESSAGE)) { War.war.badMsg(a, "pvp.outside.permission"); } - + event.setCancelled(true); // global pvp is off } else { if (attackerTeam == null) { @@ -265,31 +205,17 @@ public class WarEntityListener implements Listener { return; } if (defenderWarzone.getReallyDeadFighters().contains(d.getName())) { - // don't re-kill a dead person - if (d.getHealth() != 0) { - d.setHealth(0); - } - + // don't re-kill a dead person return; } - - if (defenderWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.DEATHMESSAGES)) { - String defenderString = Team.getTeamByPlayerName(d.getName()).getKind().getColor() + d.getName(); - if (event.getDamager() instanceof TNTPrimed) { - defenderWarzone.broadcast("pvp.death.explosion", defenderString + ChatColor.WHITE); - } else { - defenderWarzone.broadcast("pvp.death.other", defenderString + ChatColor.WHITE); - } - } + WarPlayerDeathEvent event1 = new WarPlayerDeathEvent(defenderWarzone, d, null, event.getCause()); War.war.getServer().getPluginManager().callEvent(event1); - defenderWarzone.handleDeath(d); - if (!defenderWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.REALDEATHS)) { // fast respawn, don't really die event.setCancelled(true); - return; } + defenderWarzone.handleNaturalKill(d, event); } } } @@ -307,15 +233,15 @@ public class WarEntityListener implements Listener { // protect zones elements, lobbies and warhub from creepers and tnt List explodedBlocks = event.blockList(); List dontExplode = new ArrayList(); - + boolean explosionInAWarzone = event.getEntity() != null && Warzone.getZoneByLocation(event.getEntity().getLocation()) != null; - + if (!explosionInAWarzone && War.war.getWarConfig().getBoolean(WarConfig.TNTINZONESONLY) && event.getEntity() instanceof TNTPrimed) { // if tntinzonesonly:true, no tnt blows up outside zones event.setCancelled(true); return; } - + for (Block block : explodedBlocks) { if (block.getType() == Material.TNT) { continue; // don't restore TNT (failed to track down regression cause) @@ -346,28 +272,28 @@ public class WarEntityListener implements Listener { inOneZone = true; } } - + if (!inOneZone && explosionInAWarzone) { // if the explosion originated in warzone, always rollback dontExplode.add(block); } } } - + int dontExplodeSize = dontExplode.size(); if (dontExplode.size() > 0) { - // Reset the exploded blocks that shouldn't have exploded (some of these are zone artifacts, if rollbackexplosion some may be outside-of-zone blocks + // Reset the exploded blocks that shouldn't have exploded (some of these are zone artifacts, if rollbackexplosion some may be outside-of-zone blocks DeferredBlockResetsJob job = new DeferredBlockResetsJob(); for (Block dont : dontExplode) { job.add(dont.getState()); } War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, job); - - // Changed explosion yield following proportion of explosion prevention (makes drops less buggy too) + + // Changed explosion yield following proportion of explosion prevention (makes drops less buggy too) int explodedSize = explodedBlocks.size(); float middleYeild = (float)(explodedSize - dontExplodeSize) / (float)explodedSize; float newYeild = middleYeild * event.getYield(); - + event.setYield(newYeild); } } @@ -380,14 +306,14 @@ public class WarEntityListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityDamage(final EntityDamageEvent event) { - - if (!War.war.isLoaded()) { + + if (!War.war.isLoaded()) { return; } Entity entity = event.getEntity(); if (!(entity instanceof Player)) { - + return; } Player player = (Player) entity; @@ -399,84 +325,36 @@ public class WarEntityListener implements Listener { } // pass pvp-damage - if (event instanceof EntityDamageByEntityEvent) { + if (event instanceof EntityDamageByEntityEvent) { this.handlerAttackDefend((EntityDamageByEntityEvent) event); } else { Team team = Team.getTeamByPlayerName(player.getName()); - + if (zone != null && team != null) { - LoadoutSelection playerLoadoutState = zone.getLoadoutSelections().get(player.getName()); + LoadoutSelection playerLoadoutState = zone.getLoadoutSelections().get(player.getName()); if (team.isSpawnLocation(player.getLocation()) && playerLoadoutState != null && playerLoadoutState.isStillInSpawn()) { // don't let a player still in spawn get damaged event.setCancelled(true); } else if (event.getDamage() >= player.getHealth()) { if (zone.getReallyDeadFighters().contains(player.getName())) { - // don't re-count the death points of an already dead person, make sure they are dead though - // (reason for this is that onEntityDamage sometimes fires more than once for one death) - if (player.getHealth() != 0) { - player.setHealth(0); - } + // don't re-count the death points of an already dead person return; } - + // Detect death, prevent it and respawn the player - if (zone.getWarzoneConfig().getBoolean(WarzoneConfig.DEATHMESSAGES)) { - String playerName = Team.getTeamByPlayerName(player.getName()).getKind().getColor() + player.getName() + ChatColor.WHITE; - if (event.getCause() == DamageCause.FIRE || event.getCause() == DamageCause.FIRE_TICK - || event.getCause() == DamageCause.LAVA || event.getCause() == DamageCause.LIGHTNING) { - zone.broadcast("pvp.death.fire", playerName); - } else if (event.getCause() == DamageCause.DROWNING) { - zone.broadcast("pvp.death.drown", playerName); - } else if (event.getCause() == DamageCause.FALL) { - zone.broadcast("pvp.death.fall", playerName); - } else { - zone.broadcast("pvp.death.other", playerName); - } - } WarPlayerDeathEvent event1 = new WarPlayerDeathEvent(zone, player, null, event.getCause()); War.war.getServer().getPluginManager().callEvent(event1); - zone.handleDeath(player); - if (!zone.getWarzoneConfig().getBoolean(WarzoneConfig.REALDEATHS)) { // fast respawn, don't really die event.setCancelled(true); } + zone.handleNaturalKill(player, event); } } } } - @EventHandler - public void onEntityCombust(final EntityCombustEvent event) { - if (!War.war.isLoaded()) { - return; - } - - Entity entity = event.getEntity(); - if (entity instanceof Player) { - Player player = (Player) entity; - Team team = Team.getTeamByPlayerName(player.getName()); - Warzone zone = Warzone.getZoneByPlayerName(player.getName()); - LoadoutSelection playerLoadoutState = null; - - if (zone != null) { - playerLoadoutState = zone.getLoadoutSelections().get(player.getName()); - } - - if (team != null - && zone != null - && team.isSpawnLocation(player.getLocation()) - && playerLoadoutState != null - && playerLoadoutState.isStillInSpawn()) { - // smother out the fire that didn't burn out when you respawned - // Stop fire (but not if you came back to spawn after leaving it a first time) - player.setFireTicks(0); - event.setCancelled(true); - } - } - } - /** * Prevents creatures from spawning in warzones if no creatures is active * @@ -502,10 +380,7 @@ public class WarEntityListener implements Listener { */ @EventHandler public void onEntityRegainHealth(final EntityRegainHealthEvent event) { - if (!War.war.isLoaded() || - (event.getRegainReason() != RegainReason.REGEN - && event.getRegainReason() != RegainReason.EATING - && event.getRegainReason() != RegainReason.SATIATED)) { + if (!War.war.isLoaded()) { return; } @@ -518,8 +393,7 @@ public class WarEntityListener implements Listener { Warzone zone = Warzone.getZoneByPlayerName(player.getName()); if (zone != null) { Team team = Team.getTeamByPlayerName(player.getName()); - if ((event.getRegainReason() == RegainReason.EATING - || event.getRegainReason() != RegainReason.SATIATED ) + if (event.getRegainReason() == RegainReason.SATIATED && team.getTeamConfig().resolveBoolean(TeamConfig.NOHUNGER)) { // noHunger setting means you can't auto-heal with full hunger bar (use saturation instead to control how fast you get hungry) event.setCancelled(true); @@ -529,13 +403,13 @@ public class WarEntityListener implements Listener { } } } - + @EventHandler public void onFoodLevelChange(final FoodLevelChangeEvent event) { if (!War.war.isLoaded() || !(event.getEntity() instanceof Player)) { return; } - + Player player = (Player) event.getEntity(); Warzone zone = Warzone.getZoneByPlayerName(player.getName()); Team team = Team.getTeamByPlayerName(player.getName()); @@ -543,14 +417,10 @@ public class WarEntityListener implements Listener { event.setCancelled(true); } } - + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityDeath(final EntityDeathEvent event) { - if (!War.war.isLoaded() || !(event.getEntity() instanceof Player)) { - return; - } - - Player player = (Player) event.getEntity(); + public void onPlayerDeath(final PlayerDeathEvent event) { + Player player = event.getEntity(); Warzone zone = Warzone.getZoneByPlayerName(player.getName()); if (zone != null) { event.getDrops().clear(); @@ -561,18 +431,21 @@ public class WarEntityListener implements Listener { if (zone.getWarzoneConfig().getBoolean(WarzoneConfig.DEATHMESSAGES)) { zone.broadcast("pvp.death.other", team.getKind().getColor() + player.getName()); } + War.war.getLogger().log(Level.WARNING, "We missed the death of player {0} - something went wrong.", player.getName()); + } else { + event.setDeathMessage(""); } } } - + @EventHandler public void onExplosionPrime(final ExplosionPrimeEvent event) { if (!War.war.isLoaded()) { return; } - + Location eventLocation = event.getEntity().getLocation(); - + for (Warzone zone : War.war.getWarzones()) { if (zone.isBombBlock(eventLocation.getBlock())) { // prevent the Bomb from exploding on its pedestral @@ -610,7 +483,7 @@ public class WarEntityListener implements Listener { return; } if (event.getEntityType() == EntityType.EGG) { - LivingEntity shooter = event.getEntity().getShooter(); + ProjectileSource shooter = event.getEntity().getShooter(); if (shooter instanceof Player) { Player player = (Player) shooter; Warzone zone = Warzone.getZoneByPlayerName(player.getName()); @@ -625,4 +498,43 @@ public class WarEntityListener implements Listener { } } + @EventHandler + public void onPaintingBreakByEntity(final HangingBreakByEntityEvent event) { + if (!War.war.isLoaded()) { + return; + } + if (!(event.getRemover() instanceof Player)) { + return; + } + Player player = (Player) event.getRemover(); + Warzone zone = Warzone.getZoneByLocation(event.getEntity().getLocation()); + Team team = Team.getTeamByPlayerName(player.getName()); + boolean isZoneMaker = War.war.isZoneMaker(player); + if (team == null && isZoneMaker) { + return; + } + if (zone != null && zone.getWarzoneConfig().getBoolean(WarzoneConfig.UNBREAKABLE)) { + event.setCancelled(true); + War.war.badMsg(player, "build.denied.zone.break"); + } + } + + @EventHandler + public void onPaintingPlaceByEntity(final HangingPlaceEvent event) { + if (!War.war.isLoaded()) { + return; + } + Player player = event.getPlayer(); + Warzone zone = Warzone.getZoneByLocation(event.getBlock().getLocation()); + Team team = Team.getTeamByPlayerName(player.getName()); + boolean isZoneMaker = War.war.isZoneMaker(player); + if (team == null && isZoneMaker) { + return; + } + if (zone != null && (zone.getWarzoneConfig().getBoolean(WarzoneConfig.UNBREAKABLE) + || (team != null && !team.getTeamConfig().resolveBoolean(TeamConfig.PLACEBLOCK)))) { + event.setCancelled(true); + War.war.badMsg(player, "build.denied.zone.place"); + } + } } diff --git a/war/src/main/java/com/tommytony/war/event/WarPlayerListener.java b/war/src/main/java/com/tommytony/war/event/WarPlayerListener.java index ff61434..2cfd290 100644 --- a/war/src/main/java/com/tommytony/war/event/WarPlayerListener.java +++ b/war/src/main/java/com/tommytony/war/event/WarPlayerListener.java @@ -3,6 +3,9 @@ package com.tommytony.war.event; import java.util.HashMap; import java.util.List; +import com.tommytony.war.config.WarConfig; + +import org.apache.commons.lang.Validate; import org.bukkit.ChatColor; import org.bukkit.Effect; import org.bukkit.Location; @@ -42,6 +45,7 @@ import com.tommytony.war.utility.Direction; import com.tommytony.war.utility.Loadout; import com.tommytony.war.utility.LoadoutSelection; import com.tommytony.war.volume.Volume; + import java.util.ArrayList; import java.util.Iterator; import java.util.logging.Level; @@ -73,6 +77,34 @@ public class WarPlayerListener implements Listener { } } + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerJoin(final PlayerJoinEvent event) { + String autojoinName = War.war.getWarConfig().getString(WarConfig.AUTOJOIN); + boolean autojoinEnabled = !autojoinName.isEmpty(); + if (autojoinEnabled) { // Won't be able to find warzone if unset + Warzone autojoinWarzone = Warzone.getZoneByNameExact(autojoinName); + if (autojoinWarzone == null) { + War.war.getLogger().log(Level.WARNING, "Failed to find autojoin warzone ''{0}''.", new Object[] {autojoinName}); + return; + } + if (autojoinWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.DISABLED) || autojoinWarzone.isReinitializing()) { + War.war.badMsg(event.getPlayer(), "join.disabled"); + event.getPlayer().teleport(autojoinWarzone.getTeleport()); + } else if (!autojoinWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.JOINMIDBATTLE) && autojoinWarzone.isEnoughPlayers()) { + War.war.badMsg(event.getPlayer(), "join.progress"); + event.getPlayer().teleport(autojoinWarzone.getTeleport()); + } else if (autojoinWarzone.isFull()) { + War.war.badMsg(event.getPlayer(), "join.full.all"); + event.getPlayer().teleport(autojoinWarzone.getTeleport()); + } else if (autojoinWarzone.isFull(event.getPlayer())) { + War.war.badMsg(event.getPlayer(), "join.permission.all"); + event.getPlayer().teleport(autojoinWarzone.getTeleport()); + } else { // Player will only ever be autoassigned to a team + autojoinWarzone.autoAssign(event.getPlayer()); + } + } + } + @EventHandler public void onPlayerDropItem(final PlayerDropItemEvent event) { if (War.war.isLoaded()) { @@ -228,7 +260,7 @@ public class WarPlayerListener implements Listener { // Whenever a player dies in the middle of conflict they will // likely respawn still trying to use their items to attack // another player. - player.playSound(player.getLocation(), Sound.ITEM_BREAK, 1, 0); + player.playSound(player.getLocation(), Sound.ENTITY_ITEM_BREAK, 1, 0); } if (zone != null && event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.ENDER_CHEST && !zone.getWarzoneConfig().getBoolean(WarzoneConfig.ALLOWENDER)) { @@ -845,27 +877,30 @@ public class WarPlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerRespawn(PlayerRespawnEvent event) { - if (War.war.isLoaded()) { - // Anyone who died in warzones needs to go back there pronto! - for (Warzone zone : War.war.getWarzones()) { - if (zone.getReallyDeadFighters().contains(event.getPlayer().getName())) { - zone.getReallyDeadFighters().remove(event.getPlayer().getName()); - for (Team team : zone.getTeams()) { - if (team.getPlayers().contains(event.getPlayer())) { - event.setRespawnLocation(team.getRandomSpawn()); - zone.respawnPlayer(team, event.getPlayer()); - break; - } - } - - if (zone.hasPlayerState(event.getPlayer().getName())) { - // If not member of a team and zone has your state, then game ended while you were dead - War.war.log("Failed to restore game state to dead player.", Level.WARNING); - } - break; - } + Warzone playingZone = Warzone.getZoneByPlayerName(event.getPlayer().getName()); + Warzone deadZone = Warzone.getZoneForDeadPlayer(event.getPlayer()); + if (playingZone == null && deadZone != null) { + // Game ended while player was dead, so restore state + deadZone.getReallyDeadFighters().remove(event.getPlayer().getName()); + if (deadZone.hasPlayerState(event.getPlayer().getName())) { + deadZone.restorePlayerState(event.getPlayer()); } + event.setRespawnLocation(deadZone.getEndTeleport(LeaveCause.DISCONNECT)); + return; + } else if (playingZone == null) { + // Player not playing war + return; + } else if (deadZone == null) { + // Player is not a 'really' dead player, nothing to do here + return; } + Team team = playingZone.getPlayerTeam(event.getPlayer().getName()); + Validate.notNull(team, String.format( + "Failed to find a team for player %s in warzone %s on respawn.", + event.getPlayer().getName(), playingZone.getName())); + playingZone.getReallyDeadFighters().remove(event.getPlayer().getName()); + event.setRespawnLocation(team.getRandomSpawn()); + playingZone.respawnPlayer(team, event.getPlayer()); } @EventHandler @@ -918,7 +953,7 @@ public class WarPlayerListener implements Listener { // Prevent thieves from taking their bomb/wool/cake into a chest, etc. if (zone.isThief(player.getName())) { event.setCancelled(true); - player.playSound(player.getLocation(), Sound.FIZZ, 10, 10); + player.playSound(player.getLocation(), Sound.BLOCK_LAVA_EXTINGUISH, 10, 10); } else // Magically give player a wool block when they click their helmet if (event.getSlotType() == InventoryType.SlotType.ARMOR && event.getSlot() == 39 && zone.getWarzoneConfig().getBoolean(WarzoneConfig.BLOCKHEADS)) { @@ -932,4 +967,17 @@ public class WarPlayerListener implements Listener { public void purgeLatestPositions() { this.latestLocations.clear(); } + + @EventHandler + public void onBucketEmpty(PlayerBucketEmptyEvent event) { + Player player = (Player) event.getPlayer(); + Warzone zone = Warzone.getZoneByPlayerName(player.getName()); + if (zone == null) { + return; + } + if (zone.isImportantBlock(event.getBlockClicked())) { + event.setCancelled(true); + player.playSound(player.getLocation(), Sound.BLOCK_LAVA_EXTINGUISH, 10, 10); + } + } } diff --git a/war/src/main/java/com/tommytony/war/job/LoadoutResetJob.java b/war/src/main/java/com/tommytony/war/job/LoadoutResetJob.java index 2f35324..5a0c070 100644 --- a/war/src/main/java/com/tommytony/war/job/LoadoutResetJob.java +++ b/war/src/main/java/com/tommytony/war/job/LoadoutResetJob.java @@ -23,9 +23,6 @@ public class LoadoutResetJob implements Runnable { public void run() { this.zone.equipPlayerLoadoutSelection(player, team, isFirstRespawn, isToggle); - - // Stop fire here, since doing it in the same tick as death doesn't extinguish it - this.player.setFireTicks(0); } } diff --git a/war/src/main/java/com/tommytony/war/job/RestoreYmlWarzonesJob.java b/war/src/main/java/com/tommytony/war/job/RestoreYmlWarzonesJob.java index 7f1cf6e..ef8fd07 100644 --- a/war/src/main/java/com/tommytony/war/job/RestoreYmlWarzonesJob.java +++ b/war/src/main/java/com/tommytony/war/job/RestoreYmlWarzonesJob.java @@ -74,7 +74,7 @@ public class RestoreYmlWarzonesJob implements Runnable { } plugins.addPlotter(new PlotterEnabled("War")); // of course metrics.start(); - } catch (IOException ignored) { + } catch (Exception ignored) { } } } diff --git a/war/src/main/java/com/tommytony/war/job/TeleportPlayerJob.java b/war/src/main/java/com/tommytony/war/job/TeleportPlayerJob.java new file mode 100644 index 0000000..280f198 --- /dev/null +++ b/war/src/main/java/com/tommytony/war/job/TeleportPlayerJob.java @@ -0,0 +1,51 @@ +package com.tommytony.war.job; + +import com.tommytony.war.War; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.scheduler.BukkitRunnable; + +public class TeleportPlayerJob extends BukkitRunnable { + private final Player player; + private final Location location; + private final Location originalLocation; + private final double originalHealth; + + public TeleportPlayerJob(Player player, Location location) { + this.player = player; + this.location = location; + this.originalLocation = player.getLocation().clone(); + this.originalHealth = player.getHealth(); + } + + @Override + public void run() { + if (!player.isOnline()) { + } else if (hasPlayerMoved()) { + War.war.badMsg(player, "command.tp.moved"); + } else if (hasPlayerTakenDamage()) { + War.war.badMsg(player, "command.tp.damaged"); + } else { + player.teleport(location, PlayerTeleportEvent.TeleportCause.COMMAND); + War.war.msg(player, "command.tp.success"); + } + } + + boolean hasPlayerMoved() { + final double MAX_MOVE_TOLERANCE = 1.5; + return distance3D(player.getLocation(), originalLocation) > MAX_MOVE_TOLERANCE; + } + + boolean hasPlayerTakenDamage() { + final double MAX_DAMAGE_TOLERANCE = 2; + return Math.abs(originalHealth - player.getHealth()) > MAX_DAMAGE_TOLERANCE; + } + + double distance3D(Location pos1, Location pos2) { + double distX = pos2.getX() - pos1.getX(); + double distY = pos2.getY() - pos1.getY(); + double distZ = pos2.getZ() - pos1.getZ(); + return Math.sqrt(Math.pow(distX, 2) + Math.pow(distY, 2) + Math.pow(distZ, 2)); + } +} diff --git a/war/src/main/java/com/tommytony/war/mapper/ZoneVolumeMapper.java b/war/src/main/java/com/tommytony/war/mapper/ZoneVolumeMapper.java index e8389a7..7018410 100644 --- a/war/src/main/java/com/tommytony/war/mapper/ZoneVolumeMapper.java +++ b/war/src/main/java/com/tommytony/war/mapper/ZoneVolumeMapper.java @@ -184,7 +184,9 @@ public class ZoneVolumeMapper { // Skulls if (modify instanceof Skull) { String[] opts = query.getString("metadata").split("\n"); - ((Skull) modify).setOwner(opts[0]); + if (!opts[0].isEmpty()) { + ((Skull) modify).setOwner(opts[0]); + } ((Skull) modify).setSkullType(SkullType.valueOf(opts[1])); ((Skull) modify).setRotation(BlockFace.valueOf(opts[2])); modify.update(true, false); @@ -262,6 +264,7 @@ public class ZoneVolumeMapper { public static void loadStructure(Volume volume, Connection databaseConnection) throws SQLException { String prefix = String.format("structure_%d", volume.getName().hashCode() & Integer.MAX_VALUE); World world = volume.getWorld(); + Validate.notNull(world, String.format("Cannot find the warzone for %s", prefix)); Statement stmt = databaseConnection.createStatement(); ResultSet cornerQuery = stmt.executeQuery("SELECT * FROM " + prefix + "_corners"); cornerQuery.next(); @@ -370,7 +373,7 @@ public class ZoneVolumeMapper { dataStmt.setString(6, ((Jukebox) block.getState()).getPlaying().toString()); } else if (state instanceof Skull) { dataStmt.setString(6, String.format("%s\n%s\n%s", - ((Skull) block.getState()).getOwner(), + ((Skull) block.getState()).hasOwner() ? ((Skull) block.getState()).getOwner() : "", ((Skull) block.getState()).getSkullType().toString(), ((Skull) block.getState()).getRotation().toString())); } else if (state instanceof CommandBlock) { diff --git a/war/src/main/java/com/tommytony/war/structure/WarHub.java b/war/src/main/java/com/tommytony/war/structure/WarHub.java index c8d2e79..b1d15d1 100644 --- a/war/src/main/java/com/tommytony/war/structure/WarHub.java +++ b/war/src/main/java/com/tommytony/war/structure/WarHub.java @@ -282,8 +282,8 @@ public class WarHub { // add redstone blocks and torches to gate if there are players in it (to highlight active zones) zoneGate.getRelative(BlockFace.UP, 2).getRelative(left).setType(Material.REDSTONE_BLOCK); zoneGate.getRelative(BlockFace.UP, 2).getRelative(left.getOppositeFace()).setType(Material.REDSTONE_BLOCK); - zoneGate.getRelative(BlockFace.UP, 2).getRelative(left).getRelative(back, 1).setType(Material.TORCH); - zoneGate.getRelative(BlockFace.UP, 2).getRelative(left.getOppositeFace()).getRelative(back, 1).setType(Material.TORCH); + zoneGate.getRelative(BlockFace.UP, 2).getRelative(left).getRelative(back, 1).setType(Material.AIR); + zoneGate.getRelative(BlockFace.UP, 2).getRelative(left.getOppositeFace()).getRelative(back, 1).setType(Material.AIR); } else { zoneGate.getRelative(BlockFace.UP, 2).getRelative(left).getRelative(back, 1).setType(Material.AIR); zoneGate.getRelative(BlockFace.UP, 2).getRelative(left.getOppositeFace()).getRelative(back, 1).setType(Material.AIR); diff --git a/war/src/main/java/com/tommytony/war/utility/PotionEffectHelper.java b/war/src/main/java/com/tommytony/war/utility/PotionEffectHelper.java index 67ff373..cc62016 100644 --- a/war/src/main/java/com/tommytony/war/utility/PotionEffectHelper.java +++ b/war/src/main/java/com/tommytony/war/utility/PotionEffectHelper.java @@ -6,8 +6,9 @@ import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; public class PotionEffectHelper { - - public static void restorePotionEffects(Player player, Collection potionEffects) { + + public static void restorePotionEffects(Player player, + Collection potionEffects) { clearPotionEffects(player); for (PotionEffect effect : potionEffects) { player.addPotionEffect(effect, true); @@ -15,9 +16,8 @@ public class PotionEffectHelper { } public static void clearPotionEffects(Player player) { - for(PotionEffect effect : player.getActivePotionEffects()) - { - player.addPotionEffect(new PotionEffect(effect.getType(), 0, 0), true); + for (PotionEffect effect : player.getActivePotionEffects()) { + player.removePotionEffect(effect.getType()); } } } diff --git a/war/src/main/resources/messages.properties b/war/src/main/resources/messages.properties index 59c3727..fd8aaa8 100644 --- a/war/src/main/resources/messages.properties +++ b/war/src/main/resources/messages.properties @@ -9,6 +9,10 @@ build.denied.zone.place = You cannot place blocks in this warzone. build.denied.zone.type = You cannot modify this type of block. command.console = You can't do this if you are not in game. command.disabled = You can only use War commands (e.g. /leave) while playing. +command.tp.init = Please wait for {0} seconds before teleportation. Movement or damage will cancel the timer. +command.tp.moved = Teleportation cancelled due to movement. +command.tp.damaged = Teleportation cancelled due to damage. +command.tp.success = You have been teleported. Thanks for your patience. drop.bomb.broadcast = {0} dropped the {1} bomb! drop.bomb.disabled = You can't drop items while stealing bomb. What are you doing?! Run for your enemy's spawn! drop.cake.broadcast = {0} dropped the {1} cake! diff --git a/war/src/main/resources/messages_ar_SA.properties b/war/src/main/resources/messages_ar_SA.properties new file mode 100644 index 0000000..e36248d --- /dev/null +++ b/war/src/main/resources/messages_ar_SA.properties @@ -0,0 +1,133 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Ma T8dr Tbny Hna +build.denied.outside = Bs T8dr Tbny Gwa WarZones +build.denied.teamblock = Ymknk F86 Ast3mal Blockat Fre8k l2lt8a6 Almouments +build.denied.zone.break = Blockat Warzone Ma Ttksr +build.denied.zone.multteam = A9ln 3ndk {0} Block +build.denied.zone.outside = Ma T8dr Tksr 3shan Ant Ma Tl3b +build.denied.zone.place = Ma T8dr T76 Blockat Fe WarZone +build.denied.zone.type = Ma T8dr T3dl 3la H4a Al No3 +command.console = Ma T8dr Tswe H4a 3shank Mo Fe Al Game +command.disabled = Ma T8dr Tktb Alla (/Leave) w Ant Tl3b +command.tp.init = Alrja2 Ant9''ar {0} Thwany 8bl Ant8al. A4a Mshet Aw 9''rbk A7d By36l Ant8al. +command.tp.moved = Al Ant8al M36l 3shank Tmshy. +command.tp.damaged = Al Ant8al M36l 3shan Al 9''rb +command.tp.success = L8d Tm N8lk. Shkrn l 9brk +drop.bomb.broadcast = \u200e{0}\u200e 6a7t, \u200e{1}\u200e Al 8nblh! +drop.bomb.disabled = Ma T8dr Trmy Shy w Ant Ma54 8nblh. Wsh 8a3d Tswe?! Ahrb l Spawn Al3do! +drop.cake.broadcast = {0} 6a7t , {1} Al Cake! +drop.cake.disabled = Ma T8dr Trmy Shy w Ant Ma54 Al Cake. Wsh 8a3d Tswe?! Ahrb! +drop.flag.broadcast = {0} 6a7 , {1} Al 3lm! +drop.flag.disabled = Ma T8dr Trmy Items w Ant Ma54 Al 3lm. Wsh 8a3d Tswe?! Ahrb! +drop.item.border = ant mat8dr trmy items fe alzone +drop.item.disabled = Ma T8dr Trmy H4a Fe WarZone. +drop.item.spawn = Ant Ma T8dr Trmy w Ant Fe Spawn. +drop.team = Ant Ma T8dr Trmy {0} Blocks. +drop.wand = Ant Rmet Al Zone {0} Al 39a +join.aarequired = Al Warzone Y6lb Mnk D5ol Tl8a2y l Fre8\nAlrja2 Ad5l Ay Bwabh +join.broadcast = {0} D5l Team {1} +join.disabled = H4a Al WarZone M36l +join.full.all = Kl Al Teams Full +join.full.single = Fre8 {0} H4a Full. +join.inventorystored = .Al Inventory 78k Fe Al M5zn 7ta T6l3 /War Leave. +join.permission.all = Ma 3ndk 9la7yat l Ay Teams Fe H4e WarZone. +join.permission.single = Ma 3ndk 9la7yat Td5l Team {0} +join.progress = Ma T8dr Td5l Al7rb Bd2t Fe H4e Zone. +join.selfteam = mat8dr td5l alteam 78k +join.team404 = alteam 3''er mojod jrb aktb/ teams tshof 8a2mh alteams +leave.broadcast = {0} 6l3 mn alzone. +leave.inventoryrestore = 78ybtk tm astrja3ha +pvp.death.drown = {0} 3''r8 +pvp.death.explosion = {0} tfjr +pvp.death.fall = {0}s86 wmat fj2h +pvp.death.fire = \u200e{0}\u200e a7tr8 llshwa2 +pvp.death.other = {0} mat +pvp.ff.disabled = hjomk fashl! hdfk m3k fe alfre8 +pvp.ff.enabled = alnyran al9de8h msh3''lh! alrja2 la to24e fre8k +pvp.kill.adjectives = ;;al8wy;al8atl;b5er;d8e8;alw7shy;6a8h +pvp.kill.bomb = \u200e{0}\u200eada ela \u200e{1}\u200e tfjer! +pvp.kill.format = {0}''s{1}{2}{3}{4} +pvp.kill.self = {0} ant7r +pvp.kill.verbs = An8tl;An8tl;An8tl;Antha;Abed;8tl;Ams7;Abed +pvp.kill.weapon.aim = Hdf +pvp.kill.weapon.bow = 8os +pvp.kill.weapon.hand = Yd +pvp.outside.permission = Mat8dr Thajm Ala3ben 5arj Alwarzones. +pvp.self.notplaying = Lazm Tkon Tl3b 3shan Thjm +pvp.self.respawn = Mat8dr Thjm W Ant Trsbn +pvp.self.spawn = Ma t8dr Thjm W Ant Fe Spawn +pvp.target.notplaying = Hdfk Ma Yl3b Fe Alwarzone +pvp.target.otherzone = Hdfk Y3b Fe Warzone Thany. +pvp.target.respawn = Hdfk 7alya Yrsbn! +pvp.target.spawn = Hdfk Fe Alspawn! +sign.lobby.autoassign = Warzone\u00a0\n{0}\u00a0\nD5ol Tl8a2y -\u00a0\nAssign Gate. +sign.lobby.pick = Warzone\u00a0\n{0}\u00a0\n\u00a0 +sign.lobby.warhub = \n\n\nTo War hub\n +sign.team.limited = Fre8 \u200e{0}\u200e\n\u200e{1}\u200e/\u200e{2}\u200e La3ben\n\u200e{3}\u200e/\u200e{4}\u200e N8a6\n\u200e{5}\u200e 7yah +sign.team.unlimited = fre8 {0}\u00a0\n{1}/{2} la3ben\n{3}/{4} n8a6\n7yah la nha2yh +sign.warhub = War hub\u00a0\n(/warhub)\u00a0\na5tar al3bh +sign.warzone = Warzone\u00a0\n{0}\u00a0\n{1}/{2} la3ben\n{3} afr8h +team.chat.enable = Chat Al Fre8 Msh3''l. Byst8bl Rsayl Team 78k Bs. +team.chat.disable = Chat Al Fre8 M36l +use.anvil = mat8dr tst3ml anvil fe h4a alwarzone! +use.enchant = ma t8dr tst3ml 6awlh alt6wer fe h4a alwarzone! +use.ender = mat8dr tst3ml enderchst w ant tl3b fe warzone! +use.item.spawn = mat8dr tst3ml items w ant fe spawn +use.xpkillmeter = h4a al xpkillmeter ymkn a5tyar tsh3''elh +wand.toofar = hdf alblockh b3ed jda. +war.notadmin = mat8dr tswe h4a e4a ant mo admin fe war (permission war.admin). +war.notzm = mat8dr tswe h4a e4a ant mo warzone maker ( permssion war.zonemaker). +war.prefix = War> +war.title = War +warhub.none = mafyh warhub fe h4a alserver. jrb /zone aw /zone. +warhub.permission = ma3ndk 9la7yh al2nt8al ela war hub. +warhub.teleport = ahla bk fe WarHub. a5tr l3btk +zone.airstrike = {0} d3a fy 9''rbh jwyh ! +zone.battle.end = alm3krh antht. fre8 {0} 5sr: {1} mat w lm ykn 7yah trkt lhm +zone.battle.newscores = n8a6 jdedh - {0} +zone.battle.next = al7rb antht . a3adh alwarzone {0} ... +zone.battle.reset = stbda alm3rh aljdedh 8rabn. a3adh alwarzone... +zone.battle.resetprogress = al23adh fe t8dm: {0}%,{1}thwany... +zone.battle.resetcomplete = Al WarZone Bt3ed B3d {0} Thwany. Mbarat Gdedh Btbd2. +zone.bomb.broadcast = \u200e{0}\u200e fjr bdayh fre8 {1}. fre8 {2} n86h wa7dh. +zone.cake.broadcast = \u200e{0}\u200e cake astwlt \u200e{1}\u200e. fre8 \u200e{2}\u200e n86h wa7dh w 7yah jdedh +zone.flagcapture.broadcast = \u200e{0}\u200e fjr bdayh fre8 {1}. fre8 {2} n86h wa7dh. +zone.flagreturn.deadlock = mat8dr tstwle 3lm al3do 7ta ytm arja3 3lm fre8k +zone.flagreturn.flag = yjb an tstwle 3la 3lm 3dok ela 3lm fre8k. +zone.flagreturn.spawn = yjb 3lek an tstwle 3la 3lm 3dok ela bdayh fre8k +zone.leavenotice = ast3ml /war leave 3shan t6l3 mn alzone +zone.lifepool.empty = 7yat alfre8 \u200e{0}\u200e 5l9t . moth w7dh w y5sron al7rb +zone.loadout.equip = mjhz \u200e{0}\u200e loadout ( tsll lld5ol ) +zone.loadout.reenter = mat8dr t3''er alloadout b3d 5rojk mn albdayh. +zone.monument.badblock = yjb 3lek alt8a6 al monument m3 block al9of 78 fre8k\n54 wa7d mn bdayh fre8k +zone.monument.capture = Monument {0} tm alt8a6ha mn alfre8 {1}. +zone.monument.lose = fre8 \u200e{0}\u200e f8d alsy6rh 3la monument {1} +zone.monument.voodoo = ant tr89 tr9''e al monument''''s voodoo. ant ksbt {0} 8lob! +zone.noteamnotice = mat8dr tkon da5l alwarzone bdon fre8. +zone.score.board404 = alwarzone mo mf3l alscoreboard. +zone.score.empty = ant mat8dr ta54 score 7ta yd5l a7d alfre8 althany. +zone.spawn.minplayers = mat8dr ttrk alspawn 7ta hna al7d al2dna mn {0} ala3ben ma y8l 3n {1} fre8. +zone.spawn.timer = mat8dr ttrk alspawn 7ta {0} thanyh b3d alrespawn! +zone.steal.bomb.broadcast = {0} ldeh 8nblh {1}. +zone.steal.bomb.notice = ldyk 8nblh {0}. t9l ela spawn alfre8 althany lln8a6 . la tnlms mn a7d wla ant btnfjr! +zone.steal.bomb.prevent = mn3 {0} mn alw9wl ela alspawn 78k m3 al8nblh! +zone.steal.cake.broadcast = {0} ldyh cake {1}. +zone.steal.cake.notice = ldyk cake {0}.aw9l lfre8k lln8a6 wtjded 7yatk. +zone.steal.cake.prevent = mn3 {0} mn alw9l ela alspawn m3 alcake! +zone.steal.flag.broadcast = {0} sr8 3lm fre8 {1}. +zone.steal.flag.empty = mat8dr tsr8 3lm alfre8 {0} l2n mafy a7d da5l alfre8. +zone.steal.flag.notice = ldyk 3lm alfre8 {0} . aw9l llspawn fre8k aw al3lm 3shan tlt86h! +zone.steal.flag.prevent = mn3 {0} mn alw9l ela spawn alfre8 {1} aw al3lm +zone.stealextra.bomb = ant t8dr bs tsr8 8nblh w7dh fe w8t wa7d! +zone.stealextra.cake = ant t8dr bs tsr8 cake wa7d fe w8t wa7d! +zone.stealextra.flag = ant bs t8dr tsr8 3lm wa7d fe w8t wa7d! +zone.stealextra.other = ant bs t8dr tsr8 shy wa7d fe w8t wa7d! +zone.teaminfo.format = {0}: {1} n8a6, {2}\\{3} 7yah mtb8yh. {4} +zone.teaminfo.none = La Shy2 +zone.teaminfo.prefix = Al2fr8h: +zone.teleport = Ahln Bk Fe WarZone {0}. +zone.warp.permission = Ma 3ndk 9la7yat L Ant8al l WarZone +zone.zone404 = WarZone Mo Mwgodh. +zone.zoneinfo.format = {0}: {1} Afr8h, {2} L3ebh +zone.zoneinfo.prefix = Warzones: +zone.zoneinfo.teleport = Ast3ml /Zone 3shan Tro7 l WarZone diff --git a/war/src/main/resources/messages_cs_CZ.properties b/war/src/main/resources/messages_cs_CZ.properties new file mode 100644 index 0000000..37ed81c --- /dev/null +++ b/war/src/main/resources/messages_cs_CZ.properties @@ -0,0 +1,19 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Zde nem\u016f\u017ee\u0161 stav\u011bt. +build.denied.outside = M\u016f\u017ee\u0161 stav\u011bt pouze v bitevn\u00edch z\u00f3n\u00e1ch. +build.denied.teamblock = M\u016f\u017ee\u0161 pou\u017e\u00edvat pouze bloky tv\u00e9ho t\u00fdmu k zabr\u00e1n\u00ed monument\u016f. +build.denied.zone.break = Bloky v bitevn\u00ed z\u00f3n\u011b jsou nezni\u010diteln\u00e9! +build.denied.zone.multteam = Blok {0} u\u017e m\u00e1\u0161. +build.denied.zone.outside = Nem\u016f\u017ee\u0161 zni\u010dit bitevn\u00ed z\u00f3nu,ve kter\u00e9 nehraje\u0161. +build.denied.zone.place = Nem\u016f\u017ee\u0161 pokl\u00e1dat bloky v t\u00e9to bitevn\u00ed z\u00f3n\u011b. +build.denied.zone.type = Nem\u016f\u017ee\u0161 upravovat tento typ blok\u016f! +command.console = Toto nem\u016f\u017ee\u0161 pokud nejsi ve h\u0159e. +command.disabled = M\u016f\u017ee\u0161 pou\u017e\u00edvat pouze War p\u0159\u00edkazy (nap\u0159. /leave) kdy\u017e hraje\u0161. +drop.bomb.broadcast = {0} ztratil {1} bombu! +drop.bomb.disabled = Nem\u016f\u017ee\u0161 pokl\u00e1dat p\u0159edm\u011bty kdy\u017e krade\u0161 bombu! Co d\u011bl\u00e1\u0161?! B\u011b\u017e na nep\u0159\u00e1telsk\u00fd spawn! +drop.cake.broadcast = {0} ztratil {1} dort! +drop.cake.disabled = Nem\u016f\u017ee\u0161 pokl\u00e1dat p\u0159edm\u011bty kdy\u017e krade\u0161 dort! Co d\u011bl\u00e1\u0161?! B\u011b\u017e! +drop.flag.broadcast = {0} ztratil {1} vlajku! +drop.flag.disabled = Nem\u016f\u017ee\u0161 pokl\u00e1dat p\u0159edm\u011bty kdy\u017e krade\u0161 vlajku. Co d\u011bl\u00e1\u0161?! B\u011b\u017e! +drop.item.border = Nem\u016f\u017ee\u0161 pokl\u00e1dat p\u0159edm\u011bty bl\u00edzko hranice z\u00f3ny. +drop.item.disabled = Nem\u016f\u017ee\u0161 pokl\u00e1dat p\u0159edm\u011bty v t\u00e9to bitevn\u00ed z\u00f3n\u011b. diff --git a/war/src/main/resources/messages_da.properties b/war/src/main/resources/messages_da.properties new file mode 100644 index 0000000..615ebe9 --- /dev/null +++ b/war/src/main/resources/messages_da.properties @@ -0,0 +1,133 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Du kan ikke bygge her. +build.denied.outside = Du kan kun bygge inde i krigszoner. +build.denied.teamblock = Du kan kun bruge dit holds blokke til at overtage monumenter. +build.denied.zone.break = Blokkenede i denne krigszone er ubrydelige! +build.denied.zone.multteam = You har allerede en {0} blok. +build.denied.zone.outside = Du kan ikke \u00f8del\u00e6gge en krigszone du ikke spiller i. +build.denied.zone.place = Du kan ikke placere bloks i denne krigszone. +build.denied.zone.type = Du kan ikke \u00e6ndre denne type blok. +command.console = Du kan ikke g\u00f8re dette hvis du ikke er inde i et spil. +command.disabled = Du kan kun bruge War kommandoer (f.eks. /leave) n\u00e5r du spiller. +command.tp.init = V\u00e6r venlig at vente {0} sekunder f\u00f8r teleportation. Bev\u00e6gelse eller skade vil afbryde timeren. +command.tp.moved = Teleportation afbrudt pga. bev\u00e6gelse. +command.tp.damaged = Teleportation afbrudt pga. skade. +command.tp.success = Du er blevet teleporteret. Tak for din t\u00e5lmodighed. +drop.bomb.broadcast = {0} tabte den {1} bombe! +drop.bomb.disabled = Du kan ikke smide ting n\u00e5r du er ved at stj\u00e6le en bombe. Hvad laver du?! L\u00f8b mod din fjendes spawn! +drop.cake.broadcast = {0} tabte den {1} kage! +drop.cake.disabled = Du kan ikke smide ting n\u00e5r du er ved at stj\u00e6le en kage. Hvad laver du?! L\u00f8b! +drop.flag.broadcast = {0} tabte den {1} flag! +drop.flag.disabled = Du kan ikke smide ting n\u00e5r du er ved at stj\u00e6le et flag. Hvad laver du?! L\u00f8b! +drop.item.border = Du kan ikke smide ting n\u00e6r zone gr\u00e6nsen. +drop.item.disabled = Du kan ikke smide ting i denne krigszone. +drop.item.spawn = Du kan ikke smide ting mens du stadig er i spawn. +drop.team = Du kan ikke smide {0} blokke. +drop.wand = Du kan tabte zone {0} stav. +join.aarequired = Denne krigszone kr\u00e6ver at du automatisk bliver tildelt et hold.\nV\u00e6r venlig og g\u00e5 ind i autotildelings indgangen istedet. +join.broadcast = {0} sluttede sig til hold {1}. +join.disabled = Denne krigszone er deaktiveret. +join.full.all = Alle hold er fulde. +join.full.single = Hold {0} er fuld. +join.inventorystored = Din beholdning er i et lager indtil du forlader spillet med /war leave. +join.permission.all = Du har ikke tilladelse til nogen af de tilg\u00e6ngelige hold i denne krigszone. +join.permission.single = Du har ikke tilladelse til at tilslutte dig til team {0}. +join.progress = Du kan ikke tilslutte dig en kamp der er i gang i denne zone. +join.selfteam = Du kan ikke tilslutte dig dit eget hold. +join.team404 = Det hold blev ikke fundet. Pr\u00f8v at bruge /teams for en liste. +leave.broadcast = {0} forladte zonen. +leave.inventoryrestore = Din beholdning er i gang med at blive genoprettet. +pvp.death.drown = {0} druknede. +pvp.death.explosion = {0} eksploderede. +pvp.death.fall = {0} faldt til en alt for tidlige d\u00f8d. +pvp.death.fire = {0} br\u00e6ndte til aske. +pvp.death.other = {0} d\u00f8de. +pvp.ff.disabled = Dit angreb missede! Dit m\u00e5l er p\u00e5 dit eget hold. +pvp.ff.enabled = Egenbeskydning er aktiveret! V\u00e6r venlig ikke at dr\u00e6be dine holdkammerater. +pvp.kill.adjectives = ;;m\u00e6gtige;d\u00f8dbringende;kvalitets;pr\u00e6cise;brutale;kraftfulde +pvp.kill.bomb = {0} fik {1} til at springe i luften! +pvp.kill.format = {0}s {1} {2} {3} {4} +pvp.kill.self = {0} begik selvmord +pvp.kill.verbs = dr\u00e6bte;aflivede;dr\u00e6bte;f\u00e6rdigjorde;tilintetgjorde,myrdede;udslettede;udryddede +pvp.kill.weapon.aim = sigt +pvp.kill.weapon.bow = bue +pvp.kill.weapon.hand = h\u00e5nd +pvp.outside.permission = Du kan ikke angribe spillere udenfor kriszoner. +pvp.self.notplaying = Du bliver n\u00f8d til at spille inde i krigszonen for at kunne angribe. +pvp.self.respawn = Du kan ikke angribe spillere mens du genopst\u00e5r! +pvp.self.spawn = Du kan ikke angribe mens du stadig er i spawn! +pvp.target.notplaying = Dit m\u00e5l spiller ikke i krigszonen. +pvp.target.otherzone = Dit m\u00e5l spiller i en anden krigszone. +pvp.target.respawn = Dit m\u00e5l er i gang med at genopst\u00e5! +pvp.target.spawn = Dit m\u00e5l er stadig i spawn! +sign.lobby.autoassign = Krigszone\n{0}\nG\u00e5 ind i til-\ndelingsporten. +sign.lobby.pick = Krigszone\n{0}\n\nV\u00e6lg dit hold. +sign.lobby.warhub = \nTil War samlingspunkt\n +sign.team.limited = Hold {0}\n{1}/{2} spillere\n{3}/{4} pts\n{5} liv tilbage +sign.team.unlimited = Hold {0}\n{1}/{2} spillere\n{3}/{4} pts\nuendelig liv +sign.warhub = War samlingspunkt\n(/warhub)\nV\u00e6lg din\nkamp! +sign.warzone = Krigszone\n{0}\n{1}/{2} spillere\n{3} hold +team.chat.enable = Hold chat sl\u00e5et til. Dine normale chat beskeder vil kun blive modtaget af folk fra dit hold. +team.chat.disable = Hold chat sl\u00e5et fra. +use.anvil = Du kan ikke bruge ambolte i denne krigszone! +use.enchant = Du kan ikke bruge fortrylleses borde i denne krigszone! +use.ender = Du kan ikke bruge ender kister n\u00e5r du spiller i en krigszone! +use.item.spawn = Du kan ikke bruge ting mens du stadig er i spawn. +use.xpkillmeter = Dette skyldes, at xpkillmetereret punktet er aktiveret. +wand.toofar = Din valgte blok er for langt v\u00e6k. +war.notadmin = Du kan g\u00f8re dette hvis du ikke er en War admin (permission war.admin). +war.notzm = Du kan ikke g\u00f8re dette hvis du ikke er en krigszone bygger (permission war.zonemaker). +war.prefix = War> +war.title = War +warhub.none = Intet war samlingssted p\u00e5 denne War server. Pr\u00f8v /zones og /zone. +warhub.permission = Du har ikke tilladelse til at teleportere til War samlingstedet. +warhub.teleport = Velkommen til War samlingsstedet. V\u00e6lg din kamp! +zone.airstrike = {0} kaldte ind et luftangreb! +zone.battle.end = Kampen er ovre. Hold {0} tabte: {1} d\u00f8de og der var ikke flere live tilbage i deres livs p\u00f8l. +zone.battle.newscores = Nye scorer - {0} +zone.battle.next = Kampen blev afbrudt. Nulstiller krigszone {0}... +zone.battle.reset = En ny kamp vil begynde snart. Nulstiller krigszone... +zone.battle.resetprogress = Nulstillings fremskridt: {0}%, {1} sekunder... +zone.battle.resetcomplete = Krigszone nulstillet p\u00e5 {0} sekunder. En ny kamp begynder. +zone.bomb.broadcast = {0} spr\u00e6ngte hold {1}s spawn i luften. Hold {2} scorer \u00e9t point. +zone.cake.broadcast = {0} erobrede kage {1}. Hold {2} scorer \u00e9t point og f\u00e5r en fuld livs p\u00f8l. +zone.flagcapture.broadcast = {0} erobrede hold {1}s flag. Hold {2} scorer \u00e9t point. +zone.flagreturn.deadlock = Du kan ikke erobre fjendens flag f\u00f8r dit eget flag er returneret. +zone.flagreturn.flag = Du bliver n\u00f8d til at erobre fjendes flag p\u00e5 dit holds flag. +zone.flagreturn.spawn = Du bliver n\u00f8d til at erobre fjendes flag p\u00e5 dit holds spawn. +zone.leavenotice = Brug /war leave til at forlade zonen. +zone.lifepool.empty = Hold {0}s livs p\u00f8l et tom. \u00c9t til d\u00f8dsfald og de taber kampen! +zone.loadout.equip = Rustet med {0} udstyret (snig for at skifte). +zone.loadout.reenter = Kan ikke \u00e6ndre udstyr efter at have forladt spawn. +zone.monument.badblock = Du bliver n\u00f8d til at erobre et monument med en blok af dit holds uld farve. F\u00e5 en fra dit holds spawn. +zone.monument.capture = Monument {0} blev erobret af hold {1}. +zone.monument.lose = Hold {0} tabte kontrollen af monument {1}. +zone.monument.voodoo = Din dans tilfredsstiller monuments voodoo. Du f\u00e5r {0} hjerte(r)! +zone.noteamnotice = Du kan ikke v\u00e6re inde i en krigszone uden et hold. +zone.score.board404 = Denne krigszone har ikke en resultattavle. +zone.score.empty = Du kan ikke score indtil mindst \u00e9n spiller tilslutter sig et andet hold. +zone.spawn.minplayers = Du kan ikke forlade spawn indtil der er et minimum af {0} spiller(e) p\u00e5 mindst {1} hold. +zone.spawn.timer = Du kan ikke forlade spawn for {0} sekund(er) efter genopstandelse! +zone.steal.bomb.broadcast = {0} har bombe {1}. +zone.steal.bomb.notice = Du har bombe {0}. N\u00e5 et andet holds spawn for at score. Lad v\u00e6re med at r\u00f8re andre ellers eksplodere du! +zone.steal.bomb.prevent = Forhindre {0} i at n\u00e5 dit spawn med bomben! +zone.steal.cake.broadcast = {0} har kage {1}. +zone.steal.cake.notice = You har kage {0}. N\u00e5 dit holds spawn for at score og genopfylde din livs p\u00f8l. +zone.steal.cake.prevent = Forhindre {0} i at n\u00e5 sit spawn med kagen! +zone.steal.flag.broadcast = {0} stjal hold {1}s flag. +zone.steal.flag.empty = Du kan ikke stj\u00e6le hold {0}s flag siden ingen spillere er p\u00e5 det hold. +zone.steal.flag.notice = Du har hold {0}s flag. N\u00e5 dit holds spawn eller flag for at erobre det! +zone.steal.flag.prevent = Forhindre {0} i at n\u00e5 hold{1}s spawn eller flag. +zone.stealextra.bomb = Du kan kun stj\u00e6le \u00e9n bombe af gangen! +zone.stealextra.cake = Du kan kun stj\u00e6le \u00e9n kage af gangen! +zone.stealextra.flag = Du kan kun stj\u00e6le \u00e9t flag af gangen! +zone.stealextra.other = Du kan kun stj\u00e6le \u00e9n ting af gangen! +zone.teaminfo.format = {0}: {1} point, {2}/{3} liv tilbage. {4} +zone.teaminfo.none = intet +zone.teaminfo.prefix = Hold: +zone.teleport = Velkommen til krigszone {0}. +zone.warp.permission = Du har ikke tilladelse til at teleportere til krigszonen. +zone.zone404 = Krigszonen blev ikke fundet. +zone.zoneinfo.format = {0}: {1} hold, {2} spillere +zone.zoneinfo.prefix = Krigszoner: +zone.zoneinfo.teleport = Brug /zone for at teleportere til en krigszone. diff --git a/war/src/main/resources/messages_de.properties b/war/src/main/resources/messages_de.properties index 22cd69e..dd80c03 100644 --- a/war/src/main/resources/messages_de.properties +++ b/war/src/main/resources/messages_de.properties @@ -1,14 +1,18 @@ # Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) build.denied.location = Du kannst hier nicht bauen. -build.denied.outside = Du kannst nur inerhalb einer Warzone bauen. -build.denied.teamblock = Du kannst nur dein Team-Block nehmen, um ein Monument einzunehmen. +build.denied.outside = Du kannst nur innerhalb einer Warzone Arena bauen. +build.denied.teamblock = Du kannst nur dein Team-Block nehmen, um ein Monument zu \u00fcbernehmen. build.denied.zone.break = Die Bl\u00f6cke in dieser Warzone sind unzerst\u00f6rbar. build.denied.zone.multteam = Du hast schon einen {0} Block. -build.denied.zone.outside = Du kannst nichts in einer Warzone zerst\u00f6ren,wenn du dich nicht in ihr befindest. +build.denied.zone.outside = Du kannst nichts in einer Warzone zerst\u00f6ren, wenn du dich nicht in ihr befindest. build.denied.zone.place = Du kannst in dieser Warzone keine Bl\u00f6cke setzen. build.denied.zone.type = Du kannst keine Bl\u00f6cke dieses Typs zerst\u00f6ren. command.console = Dieser Command ist leider nicht von der Konsole aus nutzbar -command.disabled = Du kannst nur War Kommandos (Z.Bsp. /leave) ausf\u00fchren, w\u00e4hrend du spielst! +command.disabled = Du kannst nur War Kommandos (bsp /leave) ausf\u00fchren, w\u00e4hrend du spielst! +command.tp.init = Bitte warte {0} Sekunden. Schaden oder Bewegung bricht die Teleportierung ab. +command.tp.moved = Teleportation wegen Bewegung abgebrochen. +command.tp.damaged = Bewegung wegen Schaden abgebrochen +command.tp.success = Du wirst teleportiert. Vielen Dank f\u00fcr deine Geduld. drop.bomb.broadcast = {0} hat die {1} Bombe fallen gelassen. drop.bomb.disabled = Du kannst keine Items droppen w\u00e4hrend du die Bombe stielst.\nWas machst du?! Renne zu dem Spawn von deinen Feinden! drop.cake.broadcast = {0} hat den {1} Kuchen fallen gelassen. diff --git a/war/src/main/resources/messages_es.properties b/war/src/main/resources/messages_es.properties index df7fdb6..101f3ad 100644 --- a/war/src/main/resources/messages_es.properties +++ b/war/src/main/resources/messages_es.properties @@ -1,14 +1,18 @@ # Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) -build.denied.location = No puedes construir aqui! -build.denied.outside = Solo puedes contruir en la arena. +build.denied.location = No puedes construir aqui. +build.denied.outside = Solo puedes construir dentro de las arenas. build.denied.teamblock = Solo puedes usar los bloques de tu equipo para capturar los monumentos! -build.denied.zone.break = Estos bloques tienen las propiedades de la Bedrock! -build.denied.zone.multteam = Tienes {0} bloques +build.denied.zone.break = No puedes romper bloques en esta arena. +build.denied.zone.multteam = Ya tienes {0} bloques build.denied.zone.outside = No puedes destruir arenas en las que no estas jugando. -build.denied.zone.place = No puedes modificar estos bloques! +build.denied.zone.place = No puedes poner bloques dentro de esta arena. build.denied.zone.type = No puedes modificar estos bloques! command.console = No puedes usar este comando si no estas en partida. command.disabled = Solo puedes usar comandos de guerra si estas jugando (Ej: /leave). +command.tp.init = Por favor espera {0} segundos antes de la teletransportaci\u00f3n. Cualquier movimiento o da\u00f1o cancelar\u00e1 la cuenta atr\u00e1s +command.tp.moved = Teletransportaci\u00f3n cancelada debido a que te has movido. +command.tp.damaged = Teletransportaci\u00f3n cancelada debido a que has sido atacado. +command.tp.success = Te has teletransportado. Gracias por tu paciencia. drop.bomb.broadcast = {0} ha soltado la {1} bomba! drop.bomb.disabled = No puedes tirar objetos mientras tienes la bomba! drop.cake.broadcast = {0} ha soltado la {1} tarta! @@ -73,12 +77,12 @@ use.xpkillmeter = La opcion xpkillmeter esta habilitado. wand.toofar = Tu bloque objetivo esta muy lejos. war.notadmin = No puedes hacer esto si no eres un War Admin (permiso: war.admin). war.notzm = No puedes hacer esto si no eres un editor de la zona de batalla (permiso: war.zonemaker). -war.prefix = PvP> -war.title = PvP -warhub.none = No hay war central en este servidor War. Fijate las zonas con /zones o /zone. -warhub.permission = No tienes permisos para teletransportarte para el War central. -warhub.teleport = Bienvenido a la War central. Elige tu batalla! -zone.airstrike = {0} fue llamada en un ataque aereo! +war.prefix = Guerra> +war.title = Guerra +warhub.none = No hay un War Hub en este servidor War. Fijate las zonas con /zones o /zone. +warhub.permission = No tienes permisos para teletransportarte hacia el War Hub.. +warhub.teleport = Bienvenido al War Hub. Elige tu batalla! +zone.airstrike = {0} ha llamado un ataque aereo! zone.battle.end = La batalla se ha acabado. El equipo {0} perdio: {1} murio y no quedan mas vidas restantes en su equipo. zone.battle.newscores = Nuevas puntuaciones - {0} zone.battle.next = La batalla ha sido interrumpida. Reiniciando zona de batalla {0}. diff --git a/war/src/main/resources/messages_et_EE.properties b/war/src/main/resources/messages_et_EE.properties new file mode 100644 index 0000000..1bc7f2e --- /dev/null +++ b/war/src/main/resources/messages_et_EE.properties @@ -0,0 +1,133 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Sa ei saa ehitada siin. +build.denied.outside = Sa saad ehitada ainult s\u00f5jatsooni sees. +build.denied.teamblock = Sa saad kasutada ainult oma tiimi plokke, et p\u00fc\u00fcda monumente. +build.denied.zone.break = Plokid selles s\u00f5jatsoonis on purunematud! +build.denied.zone.multteam = Sul juba on {0} plokk. +build.denied.zone.outside = Sa ei saa l\u00f5hkuda s\u00f5jatsoonis kuna sa ei m\u00e4ngi selles. +build.denied.zone.place = Sa ei saa asetada plokke selles s\u00f5jatsoonis. +build.denied.zone.type = Sa ei saa muuta seda t\u00fc\u00fcpi plokki. +command.console = Sa ei saa teha seda kui sa pole m\u00e4ngus. +command.disabled = Sa saad kasutada ainult War k\u00e4sklusi (Nt /leave) kui sa m\u00e4ngid. +command.tp.init = Palun oota {0} sekundit ennem teleporteerumist. Liikumine v\u00f5i kahjustuse saamine peatab taimeri. +command.tp.moved = Teleporteertumine peatati liikumise t\u00f5ttu. +command.tp.damaged = Teleporteerumine peatati kahjustuse saamise t\u00f5ttu. +command.tp.success = Sa oled teleporteeritud. T\u00e4nan sinu kannatlikkuse eest. +drop.bomb.broadcast = {0} kukutas {1} pommi! +drop.bomb.disabled = Sa ei saa kukutada esemeid kui sa varastasid pommi. Mida sa teed?! Jookse oma vastase baasi! +drop.cake.broadcast = {0} kukutas {1} koogi! +drop.cake.disabled = Sa ei saa kukutada esemeid kui varastasid koogi. Mida sa teed?! Jookse! +drop.flag.broadcast = {0} kukutas {1} lipu! +drop.flag.disabled = Sa ei saa kukutada esemeid kui varastasid lipu. Mida sa teed?! Jookse! +drop.item.border = Sa ei saa kukutada esemeid tsooni piiri l\u00e4hedal. +drop.item.disabled = Sa ei saa kukutada esemeid selles s\u00f5jatsoonis. +drop.item.spawn = Sa ei saa kukutada esemeid kui sa oled veel alguspunktis. +drop.team = Sa ei saa kukutada {0} plokki. +drop.wand = Sa kukutasid tsooni {0} v\u00f5lukepi. +join.aarequired = See s\u00f5jatsoon n\u00f5uab, et sind saadetaks automaatselt meeskonda.\nPalun sisene automaatse suunaja v\u00e4ravasse. +join.broadcast = {0} liitus tiimiga {1}. +join.disabled = See s\u00f5jatsoon on keelatud. +join.full.all = K\u00f5ik tiimid on t\u00e4is. +join.full.single = Tiim {0} on t\u00e4is. +join.inventorystored = Sinu seljakott s\u00e4ilitati kuni sa lahkud /war leave. +join.permission.all = Sul ei ole \u00f5iguseid \u00fchelegi saadaval olevale tiimile selles s\u00f5jatsoonis. +join.permission.single = Sul ei ole \u00f5igusi, et liituda {0} tiimiga. +join.progress = Sa ei saa liituda kui s\u00f5da on pooleli. +join.selfteam = Sa ei saa liituda oma enda tiimiga. +join.team404 = Seda tiimi ei leitud. Proovi kasutada /teams ,et saada kogu nimekiri. +leave.broadcast = {0} lahkus tsoonist. +leave.inventoryrestore = Sinu seljakott taastati. +pvp.death.drown = {0} uppus +pvp.death.explosion = {0} plahvatas +pvp.death.fall = {0} kukkus surnuks +pvp.death.fire = {0} p\u00f5les \u00e4ra +pvp.death.other = {0} suri +pvp.ff.disabled = Sinu r\u00fcnnak kadus! Sihtm\u00e4rk on sinu tiimis. +pvp.ff.enabled = S\u00f5bra tapmine on lubatud! Palun, \u00e4ra tapa oma tiimi liikmeid. +pvp.kill.adjectives = ;;v\u00e4gev;surmav;korras;t\u00e4pne;j\u00f5hker;v\u00f5imas +pvp.kill.bomb = {0} tegi {1} plahvatuse. +pvp.kill.format = {0} {1} {2} {3} {4} +pvp.kill.self = {0} tegi enesetapu +pvp.kill.verbs = tapetud;tapetud;tapetud;l\u00f5petatud;h\u00e4vitatud;m\u00f5rvatud;h\u00e4vitatud;h\u00e4vitatud +pvp.kill.weapon.aim = siht +pvp.kill.weapon.bow = vibu +pvp.kill.weapon.hand = k\u00e4si +pvp.outside.permission = Sa ei saa r\u00fcnnata m\u00e4ngijaid v\u00e4ljaspool s\u00f5jatsooni. +pvp.self.notplaying = Sa pead m\u00e4ngima s\u00f5jatsoonisl, et r\u00fcnnata. +pvp.self.respawn = Sa ei saa r\u00fcnnata taass\u00fcndides! +pvp.self.spawn = Sa ei saa r\u00fcnnata kui oled endiselt alguspunktis! +pvp.target.notplaying = Sinu vastane ei m\u00e4ngi s\u00f5jatsoonis. +pvp.target.otherzone = Sinu vastane m\u00e4ngib teises s\u00f5jatsoonis. +pvp.target.respawn = Sinu vastane taass\u00fcnnib hetkel! +pvp.target.spawn = Sinu vastane on endiselt alguspunktis! +sign.lobby.autoassign = S\u00f5jatsoon\n{0}\nSisene autom.\nv\u00e4ravasse +sign.lobby.pick = S\u00f5jatsoon\n{0}\n\nVali tiim +sign.lobby.warhub = \nWar alguspunkt\n +sign.team.limited = Tiim {0}\n{1}/{2} m\u00e4ngijat\n{3}/{4} punkti\n{5} elu j\u00e4rel +sign.team.unlimited = Tiim {0}\n{1}/{2} m\u00e4ngijat\n{3}/{4} punkti\nL\u00f5pmatult elusi +sign.warhub = War alguspunkt\n(warhub)\nVali enda\ns\u00f5da! +sign.warzone = S\u00f5jatsoon\n{0}\n{1}/{2} m\u00e4ngijat\n{3} tiimi +team.chat.enable = Tiimi jutukas l\u00fclitati sisse. Sinu regulaarsed jutuka s\u00f5numeid n\u00e4eb ainult sinu tiim. +team.chat.disable = Tiimi jutukas l\u00fclitati v\u00e4lja. +use.anvil = Sa ei saa kasutada alaseid sellel s\u00f5jatsoonil! +use.enchant = Sa ei saa kasutada loitsumislauda sellel s\u00f5jatsoonil! +use.ender = Sa ei saa kasutada m\u00e4ngimise ajal l\u00f5pukirstu s\u00f5jatsoonis! +use.item.spawn = Sa ei saa kasutada esemeid kui oled alguspunktis. +use.xpkillmeter = See on seet\u00f5ttu, et kogemustasemete surmaindikaatori valik on lubatud. +wand.toofar = Sinu vastase plokk on liiga kaugel. +war.notadmin = Sa ei saa teha seda kui sa ei ole War administraator (\u00f5igus war.admin). +war.notzm = Sa ei saa teha seda kui sa ei ole s\u00f5jatsooni tegija (\u00f5igus war.zonemaker) +war.prefix = War> +war.title = War +warhub.none = Puuduvad War alguspunktid serveris. Proovi /zones ja /zone. +warhub.permission = Sul puuduvad \u00f5igused teleporteerumiseks War alguspuntki. +warhub.teleport = Tere tulemast War alguspunkti. Vali enda tiim! +zone.airstrike = {0} kutsus \u00f5hur\u00fcnnaku! +zone.battle.end = S\u00f5da on l\u00e4bi. Tiim {0} kaotas: {1} suri ja tema tiimil polnud enam elusi. +zone.battle.newscores = Uued skoorid - {0} +zone.battle.next = S\u00f5da on katkestatud. Taastatakse s\u00f5jatsoon {0}... +zone.battle.reset = Uus s\u00f5da algab varsti. Taastatakse s\u00f5jatsooni... +zone.battle.resetprogress = Taastamine k\u00e4ib: {0}%, {1} sekundit... +zone.battle.resetcomplete = Warzone l\u00e4hestatakse {0} sekundi p\u00e4rast. Uus v\u00f5itlus algab. +zone.bomb.broadcast = {0} lasi \u00f5hku tiimi {1} alguspunkti. Tiim {2} sai juurde \u00fche punkti. +zone.cake.broadcast = {0} varastas koogi {1}. Tiim {2} sai endale juurde \u00fche punkti ning nende k\u00f5ik elud taastati. +zone.flagcapture.broadcast = {0} varastas tiimi {1} lipu. Tiim {2} sai juurde \u00fche punkti. +zone.flagreturn.deadlock = Sa ei saa varastada vastase lippu ennem kui sinu tiimi lipp on tagastatud. +zone.flagreturn.flag = Sa pead tooma vastaste lipu oma lipu juurde. +zone.flagreturn.spawn = Sa pead tooma vastaste lipu oma alguskoha juurde. +zone.leavenotice = Kasuta /war leave ,et lahkuda tsoonist. +zone.lifepool.empty = Tiimi {0} elud on t\u00fchjad. 1 lisa surm ja nad kaotavad s\u00f5ja! +zone.loadout.equip = K\u00e4tte v\u00f5etud {0} v\u00e4ljalaadimine (hiili, et vahetada). +zone.loadout.reenter = V\u00e4ljalaadimist ei saa vahetada p\u00e4rast alguskohast v\u00e4ljumist. +zone.monument.badblock = Sa pead hankima kuju oma meeskonna v\u00e4rvi villaga +zone.monument.capture = Monument {0} varastati tiimi {1} poolt. +zone.monument.lose = Tiim {0} kaotas kontrolli monumendis {1}. +zone.monument.voodoo = Sinu tants rahuldab kuju voodoo''d. Sa said {0} s\u00fcdant! +zone.noteamnotice = Sa ei saa olla s\u00f5jatsooni sees kui sa ei ole \u00fcheski tiimis. +zone.score.board404 = Selles s\u00f5jatsoonis ei ole lubatud skooritabel. +zone.score.empty = Sa ei saa punkte kuni teise tiimi liitub m\u00f5ni m\u00e4ngija. +zone.spawn.minplayers = Sa ei saa lahkuda spawnist kuni on saavutatud miinumum arv {0} m\u00e4ngija(id) {1} tiimis(des) +zone.spawn.timer = Sa ei saa lahkuda spawnist {0} sekundit peale taass\u00fcndimist. +zone.steal.bomb.broadcast = {0} omab pommi {1}. +zone.steal.bomb.notice = Sul on pomm {0}. Proovi minna vastase tiimi alguspunkti. \u00c4ra puutu kedagi v\u00f5i sa plahvatad! +zone.steal.bomb.prevent = V\u00e4ldi {0} sattumist pommiga sinu tiimi alguspunkti. +zone.steal.cake.broadcast = {0} omab kooki {1}. +zone.steal.cake.notice = Sul on kook {0}. Mine oma tiimi alguspunkti, et saada \u00fcks punkt ja taastada oma elud. +zone.steal.cake.prevent = Vaata, et {0} ei j\u00f5uaks enda alguspunkti koogiga! +zone.steal.flag.broadcast = {0} varastas tiimi {1} lipu. +zone.steal.flag.empty = Sa ei saa varastada tiimi {0} lippu kuni pole \u00fchtegi m\u00e4ngijat selles tiimis. +zone.steal.flag.notice = Sul on tiimi {0} lipp. Mine oma tiimi alguspunkti v\u00f5i lipu varastamis punkti. +zone.steal.flag.prevent = Vaata, et {0} ei j\u00f5uaks meeskonna {1} alguspunkti v\u00f5i lipuni. +zone.stealextra.bomb = Sa saad varastada ainult \u00fche pommi korraga! +zone.stealextra.cake = Sa saad varastada ainult \u00fche koogi korraga! +zone.stealextra.flag = Sa saad varastada ainult \u00fche lipu korraga! +zone.stealextra.other = Sa saad varastada ainult \u00fche asja korraga! +zone.teaminfo.format = {0}: {1} punktid, {2}/{3} elu j\u00e4rgi. {4} +zone.teaminfo.none = puudub +zone.teaminfo.prefix = Tiimid: +zone.teleport = Tere tulemast s\u00f5jatsooni {0}. +zone.warp.permission = Sul ei ole \u00f5igusi, et teleporteeruda s\u00f5jatsooni. +zone.zone404 = S\u00f5jatsooni ei leitud. +zone.zoneinfo.format = {0}: {1} tiimid, {2} m\u00e4ngijad +zone.zoneinfo.prefix = S\u00f5jatsoonid: +zone.zoneinfo.teleport = Kasuta /zone ,et teleporteeruda s\u00f5jatsooni. diff --git a/war/src/main/resources/messages_fi.properties b/war/src/main/resources/messages_fi.properties new file mode 100644 index 0000000..841a29d --- /dev/null +++ b/war/src/main/resources/messages_fi.properties @@ -0,0 +1,133 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Et voi rakentaa t\u00e4h\u00e4n. +build.denied.outside = Voit rakentaa vain Sotatantereen sis\u00e4ll\u00e4. +build.denied.teamblock = Voit k\u00e4ytt\u00e4\u00e4 vain joukkueesi kuutioita monumentin valloittamiseen. +build.denied.zone.break = T\u00e4m\u00e4n Sotatantereen kuutiot ovat tuhoutumattomia. +build.denied.zone.multteam = Sinulla on jo {0} kuutio. +build.denied.zone.outside = Et voi tuhota Sotatannerta, jos et pelaa siin\u00e4. +build.denied.zone.place = Et voi asettaa kuutioita t\u00e4ss\u00e4 Sotatantereessa. +build.denied.zone.type = Et voi muokata t\u00e4m\u00e4ntyyppisi\u00e4 kuutioita. +command.console = Et voi suorittaa t\u00e4t\u00e4 toimintoa ellet ole mukana peliss\u00e4. +command.disabled = Voit k\u00e4ytt\u00e4\u00e4 vain War-lis\u00e4osan komentoja (esim. /leave) pelatessasi. +command.tp.init = Odota {0} sekuntia ennen siirtoa. Liikkuminen tai vaurioituminen peruvat siirron. +command.tp.moved = Teleportaatio peruttu liikkumisen takia. +command.tp.damaged = Teleportaatio peruttu vaurioitumisen takia. +command.tp.success = Sinut on siirretty. Kiitos k\u00e4rsiv\u00e4llisyydest\u00e4si. +drop.bomb.broadcast = {0} menetti {1} pommin! +drop.bomb.disabled = Et voi pudottaa tavaroita varastaessasi pommia. Mit\u00e4 ihmett\u00e4 olet tekem\u00e4ss\u00e4?! Juokse vihollisjoukkueen tukikohtaan! +drop.cake.broadcast = {0} pudotti {1} kakun! +drop.cake.disabled = Et voi pudottaa tavaroita varastaessasi kakkua. Mit\u00e4 ihmett\u00e4 olet tekem\u00e4ss\u00e4?! Juokse! +drop.flag.broadcast = {0} pudotti {1} lipun! +drop.flag.disabled = Et voi pudottaa tavaroita ry\u00f6st\u00e4ess\u00e4si lippua. Mit\u00e4 ihmett\u00e4 olet tekem\u00e4ss\u00e4?! Juokse! +drop.item.border = Et voi pudottaa tavaroita Sotatantereen rajojen l\u00e4heisyydess\u00e4. +drop.item.disabled = Et voi pudottaa tavaroita t\u00e4ss\u00e4 Sotatantereessa. +drop.item.spawn = Et voi pudottaa tavaroita ollessasi tukikohdassa. +drop.team = Et voi pudottaa {0} kuutioita. +drop.wand = Pudotit {0} sauvan. +join.aarequired = T\u00e4m\u00e4 Sotatanner k\u00e4ytt\u00e4\u00e4 automaattijakajaa. Astu automaattijakajan l\u00e4pi. +join.broadcast = {0} liittyi {1} joukkueeseen. +join.disabled = T\u00e4m\u00e4 Sotatanner ei ole k\u00e4yt\u00f6ss\u00e4. +join.full.all = Kaikki joukkueet ovat t\u00e4ynn\u00e4. +join.full.single = {0} joukkue on t\u00e4ynn\u00e4. +join.inventorystored = Tavaraluettelosi on varastossa siihen asti kun poistut k\u00e4ytt\u00e4m\u00e4ll\u00e4 /war leave. +join.permission.all = Sinulla ei ole valtuuksia mihink\u00e4\u00e4n joukkueeseen t\u00e4ss\u00e4 Sotatantereessa. +join.permission.single = Sinulla ei ole valtuuksia liitty\u00e4 joukkueeseen {0}. +join.progress = Et voi liitty\u00e4 t\u00e4ll\u00e4 Sotatantereella meneill\u00e4\u00e4n olevaan taisteluun. +join.selfteam = Et voi liitty\u00e4 omaan joukkueeseesi. +join.team404 = Tuota joukkuetta ei l\u00f6ydetty. Yrit\u00e4 k\u00e4ytt\u00e4\u00e4 /teams komentoa n\u00e4hd\u00e4ksesi listan. +leave.broadcast = {0} poistui Sotatantereelta. +leave.inventoryrestore = Tavaraluetteloasi palautetaan. +pvp.death.drown = {0} hukkui. +pvp.death.explosion = {0} r\u00e4j\u00e4hti. +pvp.death.fall = {0} putosi ennenaikaiseen kuolemaan. +pvp.death.fire = {0} paloi poroksi. +pvp.death.other = {0} kuoli. +pvp.ff.disabled = Hy\u00f6kk\u00e4yksesi ep\u00e4onnistui! Kohteesi on joukkueessasi. +pvp.ff.enabled = Oma tuli on sallittu. \u00c4l\u00e4 satuta joukkuetovereitasi. +pvp.kill.adjectives = ;;mahtava;kuolettava;upea;tarkka;brutaali;voimakas +pvp.kill.bomb = {1} r\u00e4j\u00e4ytettiin {0} toimesta. +pvp.kill.format = {0}''''s {1} {2} {3} {4} +pvp.kill.self = {0} teki itsemurhan. +pvp.kill.verbs = tappoi;tappoi;tappoi;viimeisteli;tuhosi;murhasi;h\u00e4vitti;tuhosi +pvp.kill.weapon.aim = nuoli +pvp.kill.weapon.bow = jousi +pvp.kill.weapon.hand = k\u00e4si +pvp.outside.permission = Et voi hy\u00f6k\u00e4t\u00e4 Sotatantereen ulkopuolisia pelaajia vastaan. +pvp.self.notplaying = Sinun t\u00e4ytyy olla mukana pelaamassa Sotatantereella hy\u00f6k\u00e4t\u00e4ksesi. +pvp.self.respawn = Et voi hy\u00f6k\u00e4t\u00e4 sill\u00e4 aikaa kun olet uudelleensyntym\u00e4ss\u00e4! +pvp.self.spawn = Et voi hy\u00f6k\u00e4t\u00e4 ollessasi viel\u00e4 tukikohdassa! +pvp.target.notplaying = Kohteesi ei pelaa Sotatantereella. +pvp.target.otherzone = Kohteesi pelaa toisella Sotatantereella. +pvp.target.respawn = Kohde on juuri uudelleensyntym\u00e4ss\u00e4! +pvp.target.spawn = Kohde on viel\u00e4 tukikohdassa! +sign.lobby.autoassign = Sotatanner\n{0}\nAstu automaatti-\njakajaan. +sign.lobby.pick = Sotanner\n{0}\n\nValitse joukkue. +sign.lobby.warhub = \nSotakeskukseen\n\n +sign.team.limited = {0} joukkue\n{1}/{2} pelaajaa\n{3}/{4} pistett\u00e4\n{5} el\u00e4m\u00e4\u00e4 j\u00e4ljell\u00e4 +sign.team.unlimited = {0} joukkue\n{1}/{2} pelaajaa\n{3}/{4} pistett\u00e4\nehtym\u00e4tt\u00f6m\u00e4t el\u00e4m\u00e4t +sign.warhub = Sotakeskus\n(/warhub)\nValitse \nottelu! +sign.warzone = Sotatanner\n{0}\n{1}/{2} pelaajaa\n{3} joukkuetta +team.chat.enable = Joukkueviestittely p\u00e4\u00e4ll\u00e4. Vain joukkueesi saa normaalit viestisi. +team.chat.disable = Joukkueviestittely pois p\u00e4\u00e4lt\u00e4. +use.anvil = Et voi k\u00e4ytt\u00e4\u00e4 alasimia t\u00e4ll\u00e4 Sotatantereella! +use.enchant = Et voi k\u00e4ytt\u00e4\u00e4 lumousp\u00f6yti\u00e4 t\u00e4ll\u00e4 Sotatantereella! +use.ender = Et voi k\u00e4ytt\u00e4\u00e4 \u00e4\u00e4riarkkuja pelatessasi Sotatantereella! +use.item.spawn = Et voi k\u00e4ytt\u00e4\u00e4 tavaroita ollessasi tukikohdassa. +use.xpkillmeter = T\u00e4m\u00e4 johtuu xpkillmeter ominaisuuden p\u00e4\u00e4ll\u00e4 olemisesta. +wand.toofar = Kohdekuutio on liian kaukana. +war.notadmin = Et voi tehd\u00e4 tuota ellet ole War:in yll\u00e4pit\u00e4j\u00e4 (lupa war.admin). +war.notzm = Et voi tehd\u00e4 tuota ellet ole Sotatantereen tekij\u00e4 (lupa war.zonemaker). +war.prefix = War> +war.title = War +warhub.none = T\u00e4ss\u00e4 serveriss\u00e4 ei ole Sotakeskusta. Yrit\u00e4 komentoja /zones ja /zone. +warhub.permission = Sinulla ei ole valtuuksia siirty\u00e4 Sotakeskukseen. +warhub.teleport = Tervetuloa Sotakeskukseen! Valitse ottelusi! +zone.airstrike = {0} kutsui ilmaiskun! +zone.battle.end = Taistelu on p\u00e4\u00e4ttynyt. {0} joukkue h\u00e4visi: {1} kuoli ja joukkueella ei ollut en\u00e4\u00e4 j\u00e4ljell\u00e4 el\u00e4mi\u00e4. +zone.battle.newscores = Uudet pisteet - {0} +zone.battle.next = Taistelu keskeytettiin. Palautetaan Sotatanner {0}... +zone.battle.reset = Uusi taistelu alkaa pian. Palautetaan Sotatannerta... +zone.battle.resetprogress = Palautusprosessi: {0}%, {1} sekuntia... +zone.battle.resetcomplete = Sotatanner palautettu {0} sekunnissa. Uusi taistelu alkaa. +zone.bomb.broadcast = {0} r\u00e4j\u00e4ytti {1} joukkueen tukikohdan. {2} joukkue saa yhden pisteen. +zone.cake.broadcast = {0} valloitti {1} kakun. {2} joukkue saa yhden pisteen ja t\u00e4ydet el\u00e4m\u00e4t. +zone.flagcapture.broadcast = {0} joukkue valloitti {1} joukkueen lipun. {2} joukkue saa yhden pisteen. +zone.flagreturn.deadlock = Et voi vallata vihollisen lippua ennen kuin oman joukkueesi lippu on palautettu. +zone.flagreturn.flag = Sinun t\u00e4ytyy vallata vihollisen lippu joukkueesi lipun luona. +zone.flagreturn.spawn = Sinun t\u00e4ytyy vallata vihollisen lippu joukkueesi tukikohdassa. +zone.leavenotice = K\u00e4yt\u00e4 komentoa /war leave poistuaksesi Sotatantereelta. +zone.lifepool.empty = {0} joukkueen el\u00e4m\u00e4t ovat ehtyneet. Viel\u00e4 yksi kuolema ja he h\u00e4vi\u00e4v\u00e4t ottelun! +zone.loadout.equip = {0} varustus otettu k\u00e4ytt\u00f6\u00f6n (paina shift vaihtaaksesi). +zone.loadout.reenter = Et voi vaihtaa varustusta poistuttuasi tukikohdasta. +zone.monument.badblock = Voit vallata monumentin joukkueesi v\u00e4risell\u00e4 villakuutiolla. Hae yksi joukkueesi tukikohdasta. +zone.monument.capture = {0} monumentti on valloitettu {1} joukkueen toimesta. +zone.monument.lose = {0} joukkue menetti {1} monumentin hallinnan. +zone.monument.voodoo = Tanssisi miellytt\u00e4\u00e4 monumentin henke\u00e4. Saat {0} syd\u00e4nt\u00e4! +zone.noteamnotice = Et voi olla Sotatantereen sis\u00e4ll\u00e4 ilman joukkuetta. +zone.score.board404 = T\u00e4ss\u00e4 Sotatantereessa ei ole k\u00e4yt\u00f6ss\u00e4 pistetaulukkoa. +zone.score.empty = Et saa pistett\u00e4 ennen kuin v\u00e4hint\u00e4\u00e4n yksi pelaaja liittyy toiseen joukkueeseen. +zone.spawn.minplayers = Et voi poistua tukikohdasta ennen kuin v\u00e4hint\u00e4\u00e4n {0} pelaaja(a) on v\u00e4hint\u00e4\u00e4n {1} joukkueessa. +zone.spawn.timer = Et voi poistua tukikohdasta {0} sekuntiin uudelleensyntymisen j\u00e4lkeen. +zone.steal.bomb.broadcast = Pelaajalla {0} on {1} pommi. +zone.steal.bomb.notice = Sinulla on {0} pommi. P\u00e4\u00e4se toisen joukkueen tukikohtaan saadaksesi pisteen. \u00c4l\u00e4 osu kehenk\u00e4\u00e4n tai muuten r\u00e4j\u00e4hd\u00e4t! +zone.steal.bomb.prevent = Est\u00e4 pelaajaa {0} p\u00e4\u00e4sem\u00e4st\u00e4 tukikohtaanne pommin kanssa! +zone.steal.cake.broadcast = Pelaajalla {0} on {1} kakku. +zone.steal.cake.notice = Sinulla on {0} kakku. P\u00e4\u00e4se joukkueesi tukikohtaan saadaksesi pisteen ja t\u00e4ydent\u00e4\u00e4ksesi el\u00e4mi\u00e4nne. +zone.steal.cake.prevent = Est\u00e4 pelaajaa {0} p\u00e4\u00e4sem\u00e4st\u00e4 heid\u00e4n tukikohtaansa kakun kanssa! +zone.steal.flag.broadcast = {0} ry\u00f6sti {1} joukkueen lipun. +zone.steal.flag.empty = Et voi ry\u00f6st\u00e4\u00e4 {0} joukkueen lippua, sill\u00e4 siin\u00e4 joukkueessa ei ole yht\u00e4\u00e4n pelaajaa. +zone.steal.flag.notice = Sinulla on {0} joukkueen lippu. P\u00e4\u00e4se joukkueesi tukikohtaan tai lipulle valloittaaksesi sen! +zone.steal.flag.prevent = Est\u00e4 pelaajaa {0} p\u00e4\u00e4sem\u00e4st\u00e4 {1} joukkueen tukikohtaan tai lipulle. +zone.stealextra.bomb = Voit ry\u00f6st\u00e4\u00e4 vain yhden pommin kerrallaan! +zone.stealextra.cake = Voit ry\u00f6st\u00e4\u00e4 vain yhden kakun kerrallaan! +zone.stealextra.flag = Voit ry\u00f6st\u00e4\u00e4 vain yhden lipun kerrallaan! +zone.stealextra.other = Voit ry\u00f6st\u00e4\u00e4 vain yhden asian kerrallaan! +zone.teaminfo.format = {0}: {1} pistett\u00e4, {2}/{3} el\u00e4m\u00e4\u00e4 j\u00e4ljell\u00e4. {4} +zone.teaminfo.none = ei yht\u00e4\u00e4n +zone.teaminfo.prefix = Joukkueet: +zone.teleport = Tervetuloa {0} Sotatantereelle. +zone.warp.permission = Sinulla ei ole valtuuksia siirty\u00e4 Sotatantereelle. +zone.zone404 = Sotatannerta ei l\u00f6ydetty. +zone.zoneinfo.format = {0}: {1} joukkuetta, {2} pelaajaa +zone.zoneinfo.prefix = Sotatantereet: +zone.zoneinfo.teleport = K\u00e4yt\u00e4 komentoa /zone siirty\u00e4ksesi Sotatantereelle. diff --git a/war/src/main/resources/messages_fr.properties b/war/src/main/resources/messages_fr.properties index 92bda2d..58a1405 100644 --- a/war/src/main/resources/messages_fr.properties +++ b/war/src/main/resources/messages_fr.properties @@ -1,129 +1,133 @@ # Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) build.denied.location = Vous ne pouvez pas construire ici. -build.denied.outside = Vous pouvez construire uniquement dans les zones de combat. -build.denied.teamblock = Vous devez utiliser les blocs de l'\u00e9quipe pour vous emparer des monuments. -build.denied.zone.break = Vous ne pouvez pas casser de bloc ! +build.denied.outside = Vous ne pouvez construire qu''\u00e0 l''int\u00e9rieur de la WarZone +build.denied.teamblock = Vous pouvez seulement utiliser les blocs de votre team pour prendre un monument. +build.denied.zone.break = Les blocs de la zone sont incassables ! build.denied.zone.multteam = Vous avez d\u00e9j\u00e0 le bloc {0}. -build.denied.zone.outside = Vous ne pouvez pas d\u00e9truire le terrain si vous n'\u00eates pas dans la partie. -build.denied.zone.place = Vous ne pouvez pas placer de bloc ici. +build.denied.zone.outside = Impossible de d\u00e9truire les blocs d''une zone sans jouer. +build.denied.zone.place = Vous ne pouvez pas placer de bloc dans cette zone. build.denied.zone.type = Vous ne pouvez pas modifier ce type de bloc. -command.console = Vous ne pouvez pas effectuer cette action si vous n'\u00eates pas dans une partie. -command.disabled = Vous ne pouvez utiliser que les commandes de combat quand vous jouez. +command.console = Vous ne pouvez pas effectuer cette action si vous n''''\u00eates pas dans la partie. +command.disabled = Vous pouvez seulement utiliser les commandes de War en jeu (ex: /war leave) +command.tp.init = Attendez {0} seconde(s) pour \u00eatre t\u00e9l\u00e9porter. Ne bougez pas. +command.tp.moved = T\u00e9l\u00e9portation annul\u00e9 \u00e0 cause de mouvement. +command.tp.damaged = T\u00e9l\u00e9portation annul\u00e9e. Vous recevez des coups ! +command.tp.success = Vous avez \u00e9t\u00e9 t\u00e9l\u00e9port\u00e9. Merci pour votre patience. drop.bomb.broadcast = {0} a perdu la bombe {1} ! -drop.bomb.disabled = Vous ne pouvez pas jeter des objets quand vous avez la bombe, Que faites vous ?!... Foncez au Spawn de l'ennemi ! +drop.bomb.disabled = Vous ne pouvez pas jeter d''objet quand vous avez la bombe ! Atteignez rapidement la base ennemie ! drop.cake.broadcast = {0} a perdu le g\u00e2teau {1} ! -drop.cake.disabled = Vous ne pouvez pas jeter des objets tout en volant un g\u00e2teau. Que faites vous ?! Courez ! +drop.cake.disabled = Vous ne pouvez pas jeter d''objet quand vous avez le g\u00e2teau ! Atteignez vite votre base ! drop.flag.broadcast = {0} a perdu le drapeau {1} ! -drop.flag.disabled = Vous ne pouvez pas jeter d'objets quand vous avez le drapeau. Que faites vous ?! Courez ! -drop.item.border = Vous ne pouvez pas jeter d'objets pr\u00e8s des fronti\u00e8res de la zone. -drop.item.disabled = Vous ne pouvez rien jeter sur ce champs de bataille. Soyez \u00e9colo ! -drop.item.spawn = Vous ne pouvez pas jeter d'objets en \u00e9tant \u00e0 votre base. -drop.team = Vous ne pouvez pas jeter de blocs {0}. -drop.wand = Vous jetez l''outil de zone {0}. +drop.flag.disabled = Vous ne pouvez pas lancer d''objet quand vous avez le drapeau ! Atteignez vite votre base ! +drop.item.border = Vous ne pouvez pas lancer d''objet pr\u00e8s des limites de la zone. +drop.item.disabled = Vous ne pouvez rien jeter sur le champ de bataille. +drop.item.spawn = Vous ne pouvez pas jeter d''objet lorsque vous \u00eates \u00e0 votre base. +drop.team = Vous ne pouvez pas jeter les blocs de l''\u00e9quipe {0}. +drop.wand = Vous jetez l''''outil de zone {0}. join.aarequired = Vous serez automatiquement int\u00e9gr\u00e9 \u00e0 une \u00e9quipe en passant le portail. -join.broadcast = {0} a rejoint l''\u00e9quipe {1}. +join.broadcast = {0} a rejoint l''''\u00e9quipe {1}. join.disabled = Cette ar\u00e8ne est d\u00e9sactiv\u00e9e. -join.full.all = Toutes les \u00e9quipes sont au complet. -join.full.single = Il n'y a plus de place dans l''\u00e9quipe {0}. -join.inventorystored = Votre inventaire est conserv\u00e9 jusqu'\u00e0 ce que vous quittiez le champs de bataille (via '/war leave'). -join.permission.all = Vous n'avez pas les permissions suffisantes pour rejoindre une \u00e9quipe. -join.permission.single = Vous n''avez pas la permission de rejoindre l''\u00e9quipe {0}. -join.progress = Les combats ont d\u00e9j\u00e0 d\u00e9marr\u00e9, vous ne pouvez pas rejoindre cette ar\u00e8ne. +join.full.all = Tous les \u00e9quipes sont pleine. +join.full.single = Il n''y a plus de place dans l''''\u00e9quipe {0}. +join.inventorystored = Votre inventaire est conserv\u00e9 jusqu''\u00e0 ce que vous quittiez le champs de bataille (via ''/war leave''). +join.permission.all = Vous n''avez pas les permissions suffisantes pour rejoindre une \u00e9quipe. +join.permission.single = Vous n''''avez pas la permission de rejoindre l''''\u00e9quipe {0}. +join.progress = Impossible de rejoindre une zone en jeu. join.selfteam = Vous ne pouvez pas rejoindre votre propre \u00e9quipe. -join.team404 = Cette \u00e9quipe n'existe pas. Utilisez '/teams' pour obtenir la liste des \u00e9quipes existantes. +join.team404 = Cette \u00e9quipe n''existe pas. Utilisez ''/teams'' pour obtenir la liste des \u00e9quipes existantes. leave.broadcast = {0} a quitt\u00e9 la bataille. -leave.inventoryrestore = Votre inventaire vient d'\u00eatre restaur\u00e9. -pvp.death.drown = {0} ne sait pas nager, et vient de se noyer ! -pvp.death.explosion = Boom ! {0} vient d''exploser ! -pvp.death.fall = {0} s''est cass\u00e9 le doigt de pied en tombant... Et il en est mort ! -pvp.death.fire = {0} vient de p\u00e9rir dans les flammes... Paix \u00e0 son \u00e2me ! +leave.inventoryrestore = Votre inventaire vient d''\u00eatre restaur\u00e9. +pvp.death.drown = {0} vient de se noyer. +pvp.death.explosion = {0} vient d''''exploser ! +pvp.death.fall = {0} est mort en tombant. +pvp.death.fire = {0} vient de p\u00e9rir dans les flammes. pvp.death.other = {0} est mort ! -pvp.ff.disabled = Rat\u00e9 ! Il est dans ton \u00e9quipe celui-l\u00e0 ! -pvp.ff.enabled = Tir ami activ\u00e9 ! Faites attention quand vous tapez ;) +pvp.ff.disabled = Il est dans ton \u00e9quipe celui-l\u00e0 ! +pvp.ff.enabled = PvP entre \u00e9quipe activ\u00e9, attention ! pvp.kill.adjectives = ;;puissant;mortel;bien;pr\u00e9cis;brutal;puissant -pvp.kill.bomb = Bien jou\u00e9 {0} ! Le souffle de l''explosion a tu\u00e9 {1} ! +pvp.kill.bomb = Bien jou\u00e9 {0} ! L''explostion a tu\u00e9 {1} ! pvp.kill.format = {1} {2} de {0} {3} {4} -pvp.kill.self = {0} s''est suicid\u00e9 ! +pvp.kill.self = {0} s''''est suicid\u00e9 ! pvp.kill.verbs = tu\u00e9;tu\u00e9;tu\u00e9;termin\u00e9;an\u00e9anti;assassin\u00e9;effac\u00e9;extermin\u00e9 pvp.kill.weapon.aim = cible pvp.kill.weapon.bow = arc pvp.kill.weapon.hand = main -pvp.outside.permission = Vous ne pouvez pas attaquer les joueurs en dehors de l'ar\u00e8ne. -pvp.self.notplaying = Vous devez rejoindre l'ar\u00e8ne pour attaquer. Allez, viens, on est bien ! -pvp.self.respawn = Attendez qu'il soit pr\u00eat pour attaquer ! -pvp.self.spawn = Vous ne pouvez pas attaquer depuis votre base. -pvp.target.notplaying = Votre cible est en dehors de l'ar\u00e8ne. -pvp.target.otherzone = Votre cible est dans une autre ar\u00e8ne... Bien tent\u00e9 ! +pvp.outside.permission = Impossible d''''attaquer les joueurs en dehors de la zone. +pvp.self.notplaying = Vous devez rejoindre l''ar\u00e8ne pour attaquer. +pvp.self.respawn = Attendez qu''il r\u00e9apparaisse pour l''attaquer ! +pvp.self.spawn = Vous ne pouvez pas attaquer depuis votre base ! +pvp.target.notplaying = Votre cible est en dehors de l''ar\u00e8ne. +pvp.target.otherzone = Votre cible est dans une autre zone... pvp.target.respawn = La cible est actuellement \u00e0 sa base ! -pvp.target.spawn = La cible est d\u00e9j\u00e0 au point d'apparition ! -sign.lobby.autoassign = Warzone\n{0}\nEntrez dans un\nportail. -sign.lobby.pick = Ar\u00e8ne\n{0}\nChoisissez\nvotre \u00e9quipe -sign.lobby.warhub = \nVers la zone de\nchoix d'ar\u00e8ne\n +pvp.target.spawn = La cible est d\u00e9j\u00e0 au point d''apparition ! +sign.lobby.autoassign = Zone\n{0}\nEntrez dans un\nportail. +sign.lobby.pick = Carte\n{0}\nChoisissez\nvotre \u00e9quipe +sign.lobby.warhub = \nVers la zone\nwarhub\n sign.team.limited = Equipe {0}\n{1}/{2} joueurs\n{3}/{4} points\n{5} vies sign.team.unlimited = Equipe {0}\n{1}/{2} joueurs\n{3}/{4} points\nVies illimit\u00e9es -sign.warhub = War hub\n( /warhub )\nChoisissez votre\nbataille ! -sign.warzone = Champs de bataille\n{0}\n{1}/{2} joueurs\n{3} \u00e9quipes -team.chat.enable = Chat d'\u00e9quipe activ\u00e9. Seule votre \u00e9quipe pourra lire vos messages. -team.chat.disable = Chat d'\u00e9quipe d\u00e9sactiv\u00e9. -use.anvil = Vous ne pouvez pas utiliser l'enclume sur ce champs de bataille ! -use.enchant = Vous ne pouvez pas utiliser la table d'enchantement sur ce champs de bataille ! -use.ender = Vous ne pouvez pas utiliser les coffres de l'end en pleine bataille ! -use.item.spawn = Vous ne pouvez pas utiliser d'objet \u00e0 votre base. -use.xpkillmeter = L'option 'xpkillmeter' doit \u00eatre activ\u00e9e. +sign.warhub = Zone \n( /warhub )\nChoisissez votre\nzone ! +sign.warzone = Zone\n{0}\n{1}/{2} joueurs\n{3} \u00e9quipes +team.chat.enable = Chat d''\u00e9quipe activ\u00e9. Seule votre \u00e9quipe pourra lire vos messages. +team.chat.disable = Chat d''\u00e9quipe d\u00e9sactiv\u00e9. +use.anvil = Vous ne pouvez pas utiliser l''enclume sur cette zone. +use.enchant = Vous ne pouvez pas utiliser la table d''enchantement sur cette zone. +use.ender = Vous ne pouvez pas utiliser les coffres de l''end en pleine bataille ! +use.item.spawn = Vous ne pouvez pas utiliser d''objet \u00e0 votre base. +use.xpkillmeter = L''option ''xpkillmeter'' doit \u00eatre activ\u00e9e. wand.toofar = Le bloc cible est trop \u00e9loign\u00e9. -war.notadmin = Vous n'avez pas la permission. -war.notzm = Vous n'avez pas la permission requise. +war.notadmin = Vous n''avez pas la permission. +war.notzm = Vous n''avez pas la permission requise. war.prefix = War > war.title = War -warhub.none = Il n'y a pas de "warhub". Utilisez '/zones' et '/zone'. -warhub.permission = Vous n'avez pas la permission de vous t\u00e9l\u00e9porter. -warhub.teleport = Bienvenue ! Choisissez un champs de bataille. +warhub.none = Il n''y a pas de "warhub". Utilisez ''/zones'' et ''/zone''. +warhub.permission = Vous n''avez pas la permission de vous t\u00e9l\u00e9porter \u00e0 la zone warhub. +warhub.teleport = Bienvenue ! Choisissez une zone pour combattre. zone.airstrike = {0} a fait un raid a\u00e9rien ! -zone.battle.end = La partie est termin\u00e9e ! L''\u00e9quipe {0} a perdu : {1} morts et plus aucune de vie. +zone.battle.end = La partie est termin\u00e9e ! L''''\u00e9quipe {0} a perdu : L''\u00e9quipe {1} est morte et n''a plus aucune de vie. zone.battle.newscores = Nouveaux scores - {0} -zone.battle.next = Le combat a \u00e9t\u00e9 interrompu... Remise \u00e0 z\u00e9ro de la zone {0}... -zone.battle.reset = Une nouvelle bataille va bient\u00f4t d\u00e9marrer. Pr\u00e9paration de l'ar\u00e8ne... -zone.battle.resetprogress = Progression: {0}%, {1} secondes... -zone.battle.resetcomplete = L''ar\u00e8ne va \u00eatre r\u00e9initialis\u00e9e dans {0} secondes. Une nouvelle bataille va commencer ! -zone.bomb.broadcast = {0} a explos\u00e9 la base de l''\u00e9quipe {1}. L''\u00e9quipe {2} gagne un point. -zone.cake.broadcast = {0} a ramen\u00e9 le g\u00e2teau {1} \u00e0 sa base. L''\u00e9quipe {2} gagne un point et r\u00e9cup\u00e8re toutes ses vies. -zone.flagcapture.broadcast = {0} a ramen\u00e9 le drapeau de l''\u00e9quipe {1} dans son camp ! L''\u00e9quipe {2} gagne un point. +zone.battle.next = Le combat a \u00e9t\u00e9 interrompu... Regen\u00e9ration de la zone {0}... +zone.battle.reset = Une nouvelle bataille va bient\u00f4t d\u00e9marrer. Regen de la zone.. +zone.battle.resetprogress = Progression: {0}%, {1} secondes pass\u00e9... +zone.battle.resetcomplete = Carte r\u00e9initialis\u00e9e en {0} secondes. Une nouvelle bataille va commencer ! +zone.bomb.broadcast = {0} a explos\u00e9 la base de l''''\u00e9quipe {1}. L''''\u00e9quipe {2} gagne 1 point. +zone.cake.broadcast = {0} a ramen\u00e9 le g\u00e2teau {1} \u00e0 sa base. L''''\u00e9quipe {2} gagne un point et r\u00e9cup\u00e8re toutes ses vies. +zone.flagcapture.broadcast = {0} a ramen\u00e9 le drapeau de l''''\u00e9quipe {1} \u00e0 sa base ! L''''\u00e9quipe {2} gagne 1 point. zone.flagreturn.deadlock = Vous ne pouvez pas rapporter un drapeau ennemi alors que votre propre drapeau a \u00e9t\u00e9 vol\u00e9 ! -zone.flagreturn.flag = Vous devez rapporter le drapeau ennemi \u00e0 votre propre drapeau. +zone.flagreturn.flag = Vous devez captuer le drapeau enemie \u00e0 votre drapeau d''\u00e9quipe. zone.flagreturn.spawn = Vous devez rapporter le drapeau ennemi \u00e0 votre base. -zone.leavenotice = Utilisez '/war leave' pour quitter le champs de bataille. -zone.lifepool.empty = L''\u00e9quipe {0} n''a plus de vie. Encore un d\u00e9c\u00e8s, et elle perd la bataille ! -zone.loadout.equip = Voici l''\u00e9quipement {0} (accroupissez-vous pour changer). +zone.leavenotice = Utilisez ''/war leave'' pour quitter la zone. +zone.lifepool.empty = L''''\u00e9quipe {0} n''''a plus de vie. Encore une mort, et elle perd la bataille ! +zone.loadout.equip = Voici votre \u00e9quipement {0} (Utiliser la touche sneak pour changer). zone.loadout.reenter = Vous ne pouvez pas changer votre \u00e9quipement apr\u00e8s avoir quitt\u00e9 votre base. -zone.monument.badblock = Vous devez vous emparer d'un monument avec une laine \u00e0 la couleur de votre \u00e9quipe. Obtenez en une \u00e0 votre base. -zone.monument.capture = L''\u00e9quipe {1} s''est empar\u00e9e du monument {0}. -zone.monument.lose = L''\u00e9quipe {0} a perdu le contr\u00f4le du monument {1}. -zone.monument.voodoo = Votre danse a plu au monument. Vous gagnez {0} coeur(s) ! -zone.noteamnotice = Vous ne pouvez pas \u00eatre dans l'ar\u00e8ne sans \u00eatre dans une \u00e9quipe. -zone.score.board404 = Le tableau des scores n'est pas activ\u00e9 dans cette ar\u00e8ne. -zone.score.empty = Vous ne pourrez pas marquer de point tant qu'aucun joueur n'aura rejoint une autre \u00e9quipe. -zone.spawn.minplayers = Vous ne pouvez pas quitter votre base s''il n''y a pas au moins {0} joueurs dans au moins {1} \u00e9quipes. -zone.spawn.timer = Vous ne pouvez pas quitter votre base pendant {0} apr\u00e8s votre apparition. -zone.steal.bomb.broadcast = {0} s''est empar\u00e9 de la bombe {1}. -zone.steal.bomb.notice = Vous avez la bombe {0}. Atteignez la base d''une \u00e9quipe ennemie pour gagner des points. Si vous vous faites toucher, vous exploserez ! -zone.steal.bomb.prevent = Emp\u00eachez {0} d''atteindre votre base avec la bombe ! +zone.monument.badblock = Vous devez vous emparer d''un monument avec une laine \u00e0 la couleur de votre \u00e9quipe. +zone.monument.capture = L''''\u00e9quipe {1} s''''est empar\u00e9e du monument {0}. +zone.monument.lose = L''''\u00e9quipe {0} a perdu le contr\u00f4le du monument {1}. +zone.monument.voodoo = Votre dance plait au monument voodoo ! Vous gagnez {0} coeur(s) ! +zone.noteamnotice = Vous ne pouvez pas \u00eatre dans la zone sans \u00eatre dans une \u00e9quipe. +zone.score.board404 = Le tableau des scores n''est pas activ\u00e9 dans cette zone. +zone.score.empty = Vous ne pourrez pas marquer de point tant qu''aucun joueur n''aura rejoint une autre \u00e9quipe. +zone.spawn.minplayers = Vous ne pouvez pas quitter votre base s''''il n''''y a pas au moins {0} joueurs dans au moins {1} \u00e9quipes. +zone.spawn.timer = Vous devez attendre {0} secondes pour quitter votre base ! +zone.steal.bomb.broadcast = {0} s''''est empar\u00e9 de la bombe {1} ! +zone.steal.bomb.notice = Vous avez la bombe {0}. Atteignez la base d''''une \u00e9quipe ennemie pour gagner des points. Si vous vous faites toucher, vous exploserez ! +zone.steal.bomb.prevent = Emp\u00eachez {0} d''''atteindre votre base avec la bombe ! zone.steal.cake.broadcast = {0} a vol\u00e9 le g\u00e2teau {1}. zone.steal.cake.notice = Vous avez le g\u00e2teau {0}. Atteignez votre base pour gagner des points et obtenir des vies ! -zone.steal.cake.prevent = Emp\u00eachez {0} d''atteindre sa base avec le g\u00e2teau ! -zone.steal.flag.broadcast = {0} a vol\u00e9 le drapeau de l''\u00e9quipe {1} ! -zone.steal.flag.empty = Vous ne pouvez pas voler le drapeau de l''\u00e9quipe {0} si aucun joueur n''a rejoint cette \u00e9quipe. -zone.steal.flag.notice = Vous avez le drapeau de l''\u00e9quipe {0}. Atteigez votre base ou votre propre drapeau, et vite ! -zone.steal.flag.prevent = Emp\u00eachez {0} d''atteindre la base ou le drapeau de l''\u00e9quipe {1} ! -zone.stealextra.bomb = Vous ne pouvez voler qu'une seule bombe \u00e0 la fois ! -zone.stealextra.cake = Vous ne pouvez voler qu'un seul g\u00e2teau \u00e0 la fois ! -zone.stealextra.flag = Vous ne pouvez voler qu'un seul drapeau \u00e0 la fois ! -zone.stealextra.other = Vous ne pouvez voler qu'une seule chose \u00e0 la fois ! +zone.steal.cake.prevent = Emp\u00eachez {0} d''''atteindre sa base avec le g\u00e2teau ! +zone.steal.flag.broadcast = {0} a vol\u00e9 le drapeau de l''''\u00e9quipe {1} ! +zone.steal.flag.empty = Vous ne pouvez pas voler le drapeau de l''''\u00e9quipe {0} si aucun joueur n''''a rejoint cette \u00e9quipe. +zone.steal.flag.notice = Vous avez le drapeau de l''''\u00e9quipe {0}. Atteignez vite votre base ! +zone.steal.flag.prevent = Emp\u00eachez {0} d''''atteindre la base de l''''\u00e9quipe {1} ! +zone.stealextra.bomb = Vous ne pouvez voler qu''une seule bombe \u00e0 la fois ! +zone.stealextra.cake = Vous ne pouvez voler qu''un seul g\u00e2teau \u00e0 la fois ! +zone.stealextra.flag = Vous ne pouvez voler qu''un seul drapeau \u00e0 la fois ! +zone.stealextra.other = Vous ne pouvez voler qu''une seule chose \u00e0 la fois ! zone.teaminfo.format = {0} : {1} points, {2}/{3} vies restantes. {4} zone.teaminfo.none = aucun(e) zone.teaminfo.prefix = Equipes : -zone.teleport = Bienvenue sur le champs de bataille {0} ! -zone.warp.permission = Vous n'avez pas la permission de vous t\u00e9l\u00e9porter \u00e0 cette ar\u00e8ne. -zone.zone404 = Ar\u00e8ne non trouv\u00e9e. +zone.teleport = Bienvenue sur la zone {0} ! +zone.warp.permission = Vous n''avez pas la permission de vous t\u00e9l\u00e9porter \u00e0 cette zone. +zone.zone404 = Zone non trouv\u00e9e. zone.zoneinfo.format = {0} : {1} \u00e9quipes, {2} joueurs -zone.zoneinfo.prefix = Liste des ar\u00e8nes : -zone.zoneinfo.teleport = Utilisez '/zone ' pour vous y t\u00e9l\u00e9porter. +zone.zoneinfo.prefix = Liste des zones: +zone.zoneinfo.teleport = Utilisez ''/zone '' pour vous y t\u00e9l\u00e9porter. diff --git a/war/src/main/resources/messages_fy.properties b/war/src/main/resources/messages_fy.properties new file mode 100644 index 0000000..052961b --- /dev/null +++ b/war/src/main/resources/messages_fy.properties @@ -0,0 +1,65 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Do kinst hjir net bouwe. +build.denied.outside = Do kinst allinnich yn oarlochsgebieten bouwe. +build.denied.teamblock = Do kinst allinnich de blokken fan dyn tiim br\u00fbke om monuminten te feroverjen. +build.denied.zone.break = Do blokken dy''t yn dit oarlochsgebiet boud binne, binne unbrekber! +build.denied.zone.multteam = Do hast al in {0} blok. +build.denied.zone.outside = Do kinst in oarlochsgebiet w\u00ear''tsto net yn spilest net ferneatigje. +build.denied.zone.place = Do kinst gjin blokken pleatsen yn dit oarlochsgebiet. +build.denied.zone.type = Do kinst blokken fan dit type net oanpasse. +command.console = Do kinst dit net dwaan at''sto net yn-spiel bist. +command.disabled = Do kinst allinnich Oarlochkommando''s (lykas /leave) br\u00fbke at''sto oan it spilen bist. +drop.bomb.broadcast = {0} hat de {1} bom fallen litten! +drop.bomb.disabled = Do kinst gjin foarwerpen fallen litten at''sto de bom oan it stelle bist. Wat dochsto?! Rin nei de spawn fan dyn fij\u00e2n! +drop.cake.broadcast = {0} hat de {1} cake fallen listen! +drop.cake.disabled = Do kinst gjin foarwerpen fallen litten at''sto de cake oan it stelle bist. Wat dochsto?! Rin! +drop.flag.broadcast = {0} hat de {1} flagge fallen litten! +drop.flag.disabled = Do kinst gjin foarwerpen fallen litten at''sto de flag oan it stelle bist. Wat dochsto?! Rin! +drop.item.border = Do kinst gjin foarwerpen fallen litten yn ''e buert fan de s\u00f4negrins. +drop.item.disabled = Do kinst gjin foarwerpen fallen litten yn dit oarlochsgebiet. +drop.item.spawn = Do kinst gjin foarwerpen fallen litten at''sto noch yn ''e spawn bist. +drop.team = Do kinst gjin {0} blokken fallen litten. +drop.wand = Do hast de s\u00f4ne {0} st\u00eaf fallen litten. +join.aarequired = Dit oarlochsgebiet ferplichtet dy om automatysk tawiisd te wurden oan in tiim. Gean asjebleaft nei de auto-tawiispoarte. +join.broadcast = {0} wie taheakke oan tiim {1} +join.disabled = Dit oarlochsgebiet is \u00fatskeakele. +join.full.all = Alle tiims binne fol. +join.full.single = Tiim {0} is fol. +join.inventorystored = Dyn ynventaris stiet yn ''e opslach oant datsto fuort geast mei /war leave. +join.permission.all = Do hast gjin tastimming foar elts fan ''e beskikbere tiims yn dit oarlochsgebiet. +join.permission.single = Do hast gjin tastimming om dysels ta te heakje oan team {0}. +join.progress = Do kinst dysels net taheakje oan in dwaande striid yn dizze s\u00f4ne. +join.selfteam = Do kinst dysels net taheakje oan dyn eigen tiim. +join.team404 = It team waard net f\u00fbn. Probearje /teams te br\u00fbken foar in list. +leave.broadcast = {0} hat de s\u00f4ne ferlitten. +leave.inventoryrestore = Dyn ynventaris wurdt wer ynoarder. +pvp.death.drown = {0} fersopen +pvp.death.explosion = {0} eksplodearre +pvp.death.fall = {0} is betiid dea gongen troch in fal +pvp.death.fire = {0} wie knapperich opbaarnd +pvp.death.other = {0} is dea gongen +pvp.ff.disabled = Dyn oanfal miste! Dyn wyt is yn dyn tiim. +pvp.ff.enabled = Freonlike fjoer stiet oan! Alsjebleaft, blessearje dyn tiimgenoaten net. +pvp.kill.adjectives = ;;machtich;deadlik;fijn;presys;br\u00fat;kr\u00eaftich +pvp.kill.bomb = {0} hat {1} opblaasd! +pvp.kill.format = {0}''''s {1} {2} {3} {4} +pvp.kill.self = {0} hat selsmoard plege +pvp.kill.weapon.aim = rjochtsje +pvp.kill.weapon.bow = b\u00f4ge +pvp.kill.weapon.hand = h\u00e2n +pvp.outside.permission = Do kinst gjin spilers oanfalle b\u00fbten de oarlochsgebieten. +pvp.self.notplaying = Do moatst yn it oarlochsgebiet w\u00eaze asto aanfalle wolst. +pvp.self.respawn = Do kinst net oanfalle asto oan it respawnen bist! +pvp.self.spawn = Do kinst net oanfalle asto noch yn ''e spawn bist! +pvp.target.notplaying = Dyn wyt spilet net yn it oarlochsgebiet. +pvp.target.otherzone = Dyn wyt spilet yn in oar oarlochsgebiet. +pvp.target.respawn = It wyt is dwaande mei respawnen! +pvp.target.spawn = Dyn wyt is noch hyltyd yn ''e spawn. +sign.lobby.autoassign = Oarlochsgebiet\n{0}\nGean nei auto-\ntawiispoarte. +sign.lobby.pick = Oarlochsgebiet\n{0} \n \nIn tiim \u00fatkieze. +sign.lobby.warhub = \nNei Oarlochshub\n\n +sign.team.limited = Tiim {0}\n{1}/{2} spilers\n{3}/{4} pnt\n{5} libbens oer +sign.team.unlimited = Tiim {0}\n{1}/{2} spilers\n{3}/{4} pnt\nlibbens unbeheind +sign.warhub = Oarlochshub\n(/warhub)\nKies dyn\nstriid! +sign.warzone = Oarlochsgebiet\n{0}\n{1}/{2} spilers\n{3} tiims +use.anvil = Do kinst gjin ambylden br\u00fbke yn dit oarlochsgebiet! diff --git a/war/src/main/resources/messages_he.properties b/war/src/main/resources/messages_he.properties new file mode 100644 index 0000000..6c3a7b0 --- /dev/null +++ b/war/src/main/resources/messages_he.properties @@ -0,0 +1,3 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = \u05d0\u05e1\u05d5\u05e8 \u05dc\u05d1\u05e0\u05d5\u05ea \u05db\u05d0\u05df +build.denied.outside = \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d1\u05e0\u05d5\u05ea \u05e8\u05e7 \u05d1\u05ea\u05d5\u05da \u05d0\u05d6\u05d5\u05e8\u05d9 \u05de\u05dc\u05d7\u05de\u05d4 diff --git a/war/src/main/resources/messages_hu.properties b/war/src/main/resources/messages_hu.properties index abe1ad2..abfd339 100644 --- a/war/src/main/resources/messages_hu.properties +++ b/war/src/main/resources/messages_hu.properties @@ -1,10 +1,133 @@ # Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) build.denied.location = Itt nem \u00e9p\u00edthetsz. build.denied.outside = Csak a j\u00e1t\u00e9kteren bel\u00fcl \u00e9p\u00edthetsz. +build.denied.teamblock = Csak arra haszn\u00e1lhatod a csapatod blokkjait, hogy elfoglald a szobrokat. +build.denied.zone.break = Ez egy t\u00f6rhetelen blokk! +build.denied.zone.multteam = Neked m\u00e1r van {0} blokkod. +build.denied.zone.outside = Nem t\u00f6rhetsz blokkokat az ar\u00e9n\u00e1ban, ha nem j\u00e1tszol +build.denied.zone.place = Nem rakhatsz le blokkokat ebben az ar\u00e9n\u00e1ban. +build.denied.zone.type = Nem m\u00f3dos\u00edthatod a blokk t\u00edpus\u00e1t. +command.console = Ezt nem csin\u00e1lhatod, ha nem j\u00e1tszol. +command.disabled = Csak a War parancsait haszn\u00e1lhatod, amikor j\u00e1tszol. (pl.: /leave) +command.tp.init = V\u00e1rj {0} m\u00e1sodpercet a teleport\u00e1l\u00e1sig. Ha mozogsz, vagy sebz\u0151dsz, az megszak\u00edtja a teleport\u00e1l\u00e1st. +command.tp.moved = Nem tudt\u00e1l teleport\u00e1l\u00f3dni, mert mozogt\u00e1l. +command.tp.damaged = Nem tudt\u00e1l teleport\u00e1l\u00f3dni, mert sebz\u0151dt\u00e9l. +command.tp.success = Elteleport\u00e1l\u00f3dt\u00e1l. K\u00f6sz\u00f6nj\u00fck a t\u00fcrelmet. +drop.bomb.broadcast = {0} eldobta a(z) {1} bomb\u00e1t! +drop.bomb.disabled = Nem dobhatsz el t\u00e1rgyakat, amikor n\u00e1lad van a bomba. Mit csin\u00e1lsz?! Fuss az ellens\u00e9ged spawnj\u00e1ra! +drop.cake.broadcast = {0} eldobta a(z) {1} tort\u00e1t! +drop.cake.disabled = Nem dobhatsz el t\u00e1rgyakat, amikor n\u00e1lad van a torta. Mit csin\u00e1lsz?! Fuss! +drop.flag.broadcast = {0} eldobta a(z) {1} csapat z\u00e1szl\u00f3j\u00e1t. +drop.flag.disabled = Nem dobhatod el a z\u00e1szl\u00f3t. Mit csin\u00e1lsz?! Fuss! +drop.item.border = Nem dobhatsz el t\u00e1rgyakat az ar\u00e9na fal\u00e1nak k\u00f6zel\u00e9ben. +drop.item.disabled = Nem dobhatsz el t\u00e1rgyakat az ar\u00e9n\u00e1ban. +drop.item.spawn = Nem dobhatsz el t\u00e1rgyakat, am\u00edg a spawnon vagy. +drop.team = Nem dobhatsz el {0} blokkot. +drop.wand = Eldobtad a(z) {0} ar\u00e9na kijel\u00f6l\u0151 eszk\u00f6z\u00e9t. +join.aarequired = Ez az ar\u00e9na megk\u00f6veteli az aut\u00f3matikus eloszt\u00e1st.\nL\u00e9pj be az eloszt\u00f3 kapun. +join.broadcast = {0} csatlakozott a(z) {1} csapatba. join.disabled = Ez az ar\u00e9na le van tiltva. -join.full.all = A csapatok tele vannak. -join.inventorystored = Az eszk\u00f6zt\u00e1rad vissza\u00e1ll, ha kil\u00e9psz a /warp leave paranccsal. -join.permission.single = Nincs jogod, hogy csatlakozz a(z) {0} csapathoz. +join.full.all = A \u00f6sszes csapat tele van. +join.full.single = A(z) {0} csapat tele van. +join.inventorystored = Az eszk\u00f6zt\u00e1rad vissza\u00e1ll, ha kil\u00e9psz a /war leave, vagy a /leave paranccsal. +join.permission.all = Egyik csapatban sem lehetsz, mivel nincs enged\u00e9lyed hozz\u00e1. +join.permission.single = Nincs jogod ahhoz, hogy csatlakozz a(z) {0} csapathoz. +join.progress = nem csatlakozhatsz, am\u00edg a jelenlegi j\u00e1t\u00e9k be nem fejez\u0151dik. +join.selfteam = Nem csatlakozhatsz a saj\u00e1t csapatodba. +join.team404 = Nincs ilyen csapat. Pr\u00f3b\u00e1ld ki a /teams parancsot. leave.broadcast = {0} kil\u00e9pett az ar\u00e9n\u00e1b\u00f3l. leave.inventoryrestore = Az eszk\u00f6zt\u00e1rad vissza\u00e1llt. +pvp.death.drown = {0} megfulladt +pvp.death.explosion = {0} felrobbant +pvp.death.fall = {0} kiesett az ar\u00e9n\u00e1b\u00f3l +pvp.death.fire = {0} porr\u00e1 \u00e9gett +pvp.death.other = {0} meghalt pvp.ff.disabled = Rossz helyre c\u00e9lozt\u00e1l! A csapat t\u00e1rsadat tal\u00e1ltad el. +pvp.ff.enabled = A Friendly fire be van kapcsolva. Ne s\u00e9rtsd meg a csapatt\u00e1rsaidat. +pvp.kill.adjectives = ;;hatalmas;hal\u00e1los;v\u00e9gs\u0151;pontos;brut\u00e1lis;er\u0151teljes +pvp.kill.bomb = {0} felrobbantotta {1}-t +pvp.kill.format = {0} {1} {2} {3} {4} +pvp.kill.self = {0} \u00f6ngyilkoss\u00e1gban meghalt +pvp.kill.verbs = meg\u00f6lte;meg\u00f6lte;meg\u00f6lte;kiv\u00e9gezte;megsemmis\u00edtette;meggyilkolta;els\u00f6p\u00f6rte;kiirtotta +pvp.kill.weapon.aim = ny\u00edlvessz\u0151 +pvp.kill.weapon.bow = \u00edj +pvp.kill.weapon.hand = k\u00e9z +pvp.outside.permission = Nem \u00fctheded meg azt, aki nem j\u00e1tszik. +pvp.self.notplaying = J\u00e1tszanod kell ahhoz, hogy megt\u00e1madhass valakit. +pvp.self.respawn = Nem t\u00e1madhatod meg azt, aki most \u00e9led \u00fajra. +pvp.self.spawn = Nem t\u00e1madhatsz, am\u00edg a spawnon \u00e1llsz. +pvp.target.notplaying = Az, akit meg akarsz \u00f6lni, nem j\u00e1tszik. +pvp.target.otherzone = Az, akit meg akarsz \u00f6lni, egy m\u00e1sik ar\u00e9n\u00e1ban j\u00e1tszik, +pvp.target.respawn = Az, akit meg akarsz \u00f6lni, jelenleg \u00fajra\u00e9led! +pvp.target.spawn = Az, akit meg akarsz \u00f6lni a kezd\u0151 ponton van! +sign.lobby.autoassign = Warzone\n{0}\nL\u00e9pj be az\neloszt\u00f3n. +sign.lobby.pick = Warzone\n{0}\nV\u00e1lassz\ncsapatot. +sign.lobby.warhub = \nA WarHub-ba\u00a0\n\n +sign.team.limited = {0} csapat\n{1}/{2} j\u00e1t\u00e9kos\n{3}/{4} pont\n{5} \u00e9let h\u00e1tra +sign.team.unlimited = {0} csapat\n{1}/{2} j\u00e1t\u00e9kos\n{3}/{4} pont\nv\u00e9gtelen \u00e9let +sign.warhub = War hub\n(/warhub)\nV\u00e1lassz\nar\u00e9n\u00e1t! +sign.warzone = Warzone\n{0}\n{1}/{2} j\u00e1t\u00e9kos\n{3} csapat +team.chat.enable = A csapat besz\u00e9lget\u00e9s bekapcsolva. Az \u00fczeneteket, amit k\u00fcldesz, csak a csapatt\u00e1rsaid l\u00e1tj\u00e1k. +team.chat.disable = A csapat besz\u00e9lget\u00e9s kikapcsolva. +use.anvil = Nem haszn\u00e1lhatsz \u00fcll\u0151t, mik\u00f6zben j\u00e1tszol! +use.enchant = Nem haszn\u00e1lhatsz enchant asztalt, mik\u00f6zben j\u00e1tszol! +use.ender = Nem haszn\u00e1lhatsz v\u00e9gzetl\u00e1d\u00e1t, mik\u00f6zben j\u00e1tszol! +use.item.spawn = Nem haszn\u00e1lhatsz t\u00e1rgyakat, am\u00edg a spawnon vagy +use.xpkillmeter = Ez az\u00e9rt van, mert az xpkillmeter be\u00e1ll\u00edt\u00e1s be van kapcsolva. +wand.toofar = A megc\u00e9lzott blokk t\u00fal messze van. +war.notadmin = Ezt nem csin\u00e1lhatod, ha nem vagy War admin (jog: war.admin) +war.notzm = Ezt nem csin\u00e1lhatod, ha nem vagy Z.M. (jog: war.zonemaker) +war.prefix = War> +war.title = War +warhub.none = Nincs warhub a szerveren. Pr\u00f3b\u00e1ld: /zones \u00e9s a /zone parancsot. +warhub.permission = Nincs jogod, hogy a Warhubba teleport\u00e1lj. +warhub.teleport = \u00dcdv a Warhubban. V\u00e1lassz ar\u00e9n\u00e1t! +zone.airstrike = {0} egy l\u00e9git\u00e1mad\u00e1st h\u00edvott! +zone.battle.end = A j\u00e1t\u00e9knak v\u00e9ge. A(z) {0} csapat vesztett: {1} meghalt, \u00e9s nem volt t\u00f6bb \u00e9lete a csapatnak. +zone.battle.newscores = \u00daj pontok - {0} +zone.battle.next = A j\u00e1t\u00e9k megszakadt. Ar\u00e9na \u00fajra\u00e9p\u00edt\u00e9se {0}... +zone.battle.reset = Hamarosan \u00faj j\u00e1t\u00e9k kezd\u0151dik. Ar\u00e9na \u00fajra\u00e9p\u00edt\u00e9se... +zone.battle.resetprogress = \u00dajra\u00e9p\u00edt\u00e9s folyamatban: {0}%, {1} m\u00e1sodperc alatt... +zone.battle.resetcomplete = Az ar\u00e9na \u00fajra\u00e9p\u00fcl {0} m\u00e1sodperc m\u00falva. \u00daj csata kezd\u0151dik. +zone.bomb.broadcast = {0} felrobbantotta a(z) {1} csapat spawnj\u00e1t. A(z) {2} csapat pontja 1 pont. +zone.cake.broadcast = {0} elfoglalta a(z) {1} tort\u00e1t. A(z) {2} csapat \u00f6sszes tagj\u00e1nak felt\u00f6lt\u0151d\u00f6tt az \u00e9lete. +zone.flagcapture.broadcast = {0} megszerezte a(z) {1} csapat z\u00e1szl\u00f3j\u00e1t. A(z) {2} csapatnak 1 pontja van. +zone.flagreturn.deadlock = Nem teheted le a z\u00e1szl\u00f3t, am\u00edg a csapatod z\u00e1szl\u00f3ja nincs a hely\u00e9n. +zone.flagreturn.flag = El kell vinned az ellens\u00e9g z\u00e1szl\u00f3j\u00e1t a csapatod z\u00e1szl\u00f3j\u00e1hoz. +zone.flagreturn.spawn = El kell vinned az ellens\u00e9g z\u00e1szl\u00f3j\u00e1t a csapatod indul\u00f3hely\u00e9hez. +zone.leavenotice = /war leave vagy /leave a kil\u00e9p\u00e9shez. +zone.lifepool.empty = A(z) {0} csapatnak nincs t\u00f6bb \u00e9lete. M\u00e9g egy hal\u00e1l \u00e9s elvesztik a j\u00e1t\u00e9kot. +zone.loadout.equip = Lek\u00e9rted a(z) {0} csomagot (guggolj a v\u00e1lt\u00e1shoz). +zone.loadout.reenter = Nem tudod v\u00e1ltoztatni a csomagot, miut\u00e1n kiment\u00e9l a kezd\u0151 helyr\u0151l. +zone.monument.badblock = A szobrokat a csapatod blokkj\u00e1val kell elfoglalnod. Szerezz egyet a csapatod kezd\u0151 pontj\u00e1r\u00f3l. +zone.monument.capture = A(z) {0} szobrot elfoglalta a(z) {1} csapat. +zone.monument.lose = A(z) {0} csapat elvesz\u00edtette az uralmat a(z) {1} szobor felett. +zone.monument.voodoo = A t\u00e1ncod tetszik a szobor szellem\u00e9nek. Szerezt\u00e9l {0} \u00e9letet! +zone.noteamnotice = Nem lehetsz egy ar\u00e9n\u00e1ban csapat n\u00e9lk\u00fcl. +zone.score.board404 = Enn\u00e9l az ar\u00e9n\u00e1n\u00e1l nem enged\u00e9lyezt\u00e9k az eredm\u00e9nyjelz\u0151t. +zone.score.empty = Nem kaphatsz pontot, am\u00edg egy j\u00e1t\u00e9kos be nem sz\u00e1ll egy m\u00e1sik csapatba. +zone.spawn.minplayers = Nem hagyhatod el a kezd\u0151 helyet, am\u00edg nem lesz minimum {0} j\u00e1t\u00e9kos {1} csapatban. +zone.spawn.timer = Nem hagyhatod el a spawn {0} m\u00e1sodpercig, az \u00fajra \u00e9led\u00e9s ut\u00e1n! +zone.steal.bomb.broadcast = {0} megszerezte a(z) {1} bomb\u00e1t. +zone.steal.bomb.notice = Megszerezted a(z) {0} bomb\u00e1t. Menj a m\u00e1sik csapat kezd\u0151 hely\u00e9hez. Vigy\u00e1zz, hogy ne \u00e9rintkezz senkivel, vagy felrobbansz! +zone.steal.bomb.prevent = Akad\u00e1lyozd meg, hogy {0} el\u00e9rje a kezd\u0151 helyedet a bomb\u00e1val. +zone.steal.cake.broadcast = {0} megszerezte a(z) {1} tort\u00e1t. +zone.steal.cake.notice = Megszerezted a(z) {0} tort\u00e1t. Menj a csapatod kezd\u0151 hely\u00e9hez, hogy pontot kapj \u00e9s felt\u00f6lt\u0151dj\u00f6n az \u00e9leted. +zone.steal.cake.prevent = Akad\u00e1lyozd meg, hogy {0} el\u00e9rje a kezd\u0151hely\u00e9t a tort\u00e1val! +zone.steal.flag.broadcast = {0} megszerezte a(z) {1} csapat z\u00e1szl\u00f3j\u00e1t. +zone.steal.flag.empty = Nem foglalhatod el a(z) {0} csapat z\u00e1szl\u00f3j\u00e1t, mert nincs senki a csapatban. +zone.steal.flag.notice = Megszerezted a(z) {0} csapat z\u00e1szl\u00f3j\u00e1t. Fuss a spawnodra, vagy a z\u00e1szl\u00f3dhoz, hogy a csapatod megkapja a pontot \u00e9rte. +zone.steal.flag.prevent = Akad\u00e1lyozd meg, hogy {0} el\u00e9rje a(z) {1} csapat z\u00e1szl\u00f3j\u00e1t. +zone.stealextra.bomb = Egyszerre csak egy bomb\u00e1t lophatsz! +zone.stealextra.cake = Egyszerre csak egy tort\u00e1t lophatsz! +zone.stealextra.flag = Egyszerre csak egy z\u00e1szl\u00f3t lophatsz! +zone.stealextra.other = Egyszerre csak egy dolgot lophatsz! +zone.teaminfo.format = {0}: {1} pont, {2}/{3} \u00e9let van h\u00e1tra. {4} +zone.teaminfo.none = semmi +zone.teaminfo.prefix = Csapatok: +zone.teleport = \u00dcdv a(z) {0} ar\u00e9n\u00e1ban. +zone.warp.permission = Nincs enged\u00e9lyed, hogy ebbe az ar\u00e9n\u00e1ba teleport\u00e1lj. +zone.zone404 = Nincs ilyen ar\u00e9na. +zone.zoneinfo.format = {0}:\n{1} csapat\n{2} j\u00e1t\u00e9kos +zone.zoneinfo.prefix = Ar\u00e9n\u00e1k: +zone.zoneinfo.teleport = Haszn\u00e1ld a /zone parancsot, hogy bel\u00e9pj egy ar\u00e9n\u00e1ba. diff --git a/war/src/main/resources/messages_id_ID.properties b/war/src/main/resources/messages_id_ID.properties new file mode 100644 index 0000000..3f792cc --- /dev/null +++ b/war/src/main/resources/messages_id_ID.properties @@ -0,0 +1,133 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Anda tidak boleh membangun disini. +build.denied.outside = Anda hanya boleh membangun dalam sebuah warzone. +build.denied.teamblock = Anda hanya bisa menggunakan balok tim anda untuk merebut sebuah monumen. +build.denied.zone.break = Balok-balok dalam warzone ini tidak bisa dirusak ! +build.denied.zone.multteam = Anda telah memiliki sebuah balok {0}. +build.denied.zone.outside = Anda tidak bisa merusak sebuah warzone yang tidak anda mainkan. +build.denied.zone.place = Anda tidak bisa menaruh balok dalam warzone ini. +build.denied.zone.type = Anda tidak bisa mengubah tipe balok ini. +command.console = Anda tidak bisa melakukan ini jika anda tidak sedang bermain. +command.disabled = Anda hanya boleh menggunakan perintah War (contoh : /leave) jika anda sedang bermain. +command.tp.init = Tunggu untuk {0} detik sebelum anda akan diteleportasi. Gerakan yang dilakukan atau cedera yang anda alami akan membatalkan timer +command.tp.moved = Teleportasi telah dibatalkan karena anda telah bergerak. +command.tp.damaged = Teleportasi telah dibatalkan karena anda telah dicederai. +command.tp.success = Anda telah diteleportasi. Terima kasih untuk kesabaran anda. +drop.bomb.broadcast = {0} menjatuhkan bom {1} ! +drop.bomb.disabled = Anda tidak bisa menjatuhkan barang saat mencuri bom. Apa yang anda sedang lakukan ?! Larilah menuju ke spawn musuhmu ! +drop.cake.broadcast = {0} menjatuhkan kue {1} ! +drop.cake.disabled = Anda tidak bisa menjatuhkan barang saat mencuri kue. Apa yang anda sedang lakukan ?! Larilah ! +drop.flag.broadcast = {0} menjatuhkan bendera {1} ! +drop.flag.disabled = Anda tidak bisa menjatuhkan barang saat mencuri bendera. Apa yang anda sedang lakukan ?! Larilah ! +drop.item.border = Anda tidak bisa menjatuhkan barang saat berada didekat perbatasan warzone. +drop.item.disabled = Anda tidak bisa menjatuhkan barang dalam warzone ini. +drop.item.spawn = Anda tidak bisa menjatuhkan barang saat anda masih didalam spawn. +drop.team = Anda tidak bisa menjatuhkan balok {0}. +drop.wand = Anda menjatuhkan tongkat zona {0}. +join.aarequired = Warzone ini memerlukan anda untuk dimasukkan ke sebuah tim secara otomatis. Anda dimohon untuk memasuki gerbang autoassign. +join.broadcast = {0} memasuki tim {1} +join.disabled = Warzone ini sedang ditutup. +join.full.all = Semua tim sudah penuh. +join.full.single = Tim {0} sudah penuh. +join.inventorystored = Barang-barang anda akan disimpan sampai anda keluar dengan /war leave. +join.permission.all = Anda tidak memiliki izin untuk semua tim yang ada dalam warzone ini. +join.permission.single = Anda tidak memiliki izin untuk memasuki tim {0}. +join.progress = Anda tidak bisa memasuki sebuah pertempuran yang sedang berlangsung dalam zona ini. +join.selfteam = Anda tidak bisa memasuki tim anda sendiri. +join.team404 = Tim itu tidak dapat ditemukan. Cobalah menggunakan /teams untuk sebuah daftar. +leave.broadcast = {0} meninggalkan zona ini. +leave.inventoryrestore = Barang-barang anda sedang dipulihkan. +pvp.death.drown = {0} tenggelam +pvp.death.explosion = {0} meledak +pvp.death.fall = {0} jatuh kedalam kematian +pvp.death.fire = {0} terbakar menjadi abu +pvp.death.other = {0} meninggal +pvp.ff.disabled = Serangan anda meleset ! Target anda adalah rekan setim anda ! +pvp.ff.enabled = Anda bisa menyerang rekan setim anda ! Tapi, dimohon untuk tidak membunuh mereka. +pvp.kill.adjectives = ;;hebat;mematikan;bagus;tepat;brutal;sangat kuat +pvp.kill.bomb = {0} telah meledakkan {1} ! +pvp.kill.format = {1} {2} {3} {4} yang dimiliki {0} +pvp.kill.self = {0} membunuh dirinya sendiri +pvp.kill.verbs = membunuh;membunuh;membunuh;menyelesaikan;menumpaskan;membunuh;mengoyak;membinasakan +pvp.kill.weapon.aim = bidikan +pvp.kill.weapon.bow = bow +pvp.kill.weapon.hand = tangan +pvp.outside.permission = Anda tidak bisa menyerang pemain diluar warzone. +pvp.self.notplaying = Anda harus bermain di warzone untuk menyerang. +pvp.self.respawn = Anda tidak bisa menyerang saat sedang respawn ! +pvp.self.spawn = Anda tidak bisa menyerang saat sedang dalam spawn ! +pvp.target.notplaying = Target anda sedang tidak bermain dalam warzone ini. +pvp.target.otherzone = Target anda sedang bermain dalam warzone lain. +pvp.target.respawn = Target anda sedang bermain dalam warzone lain. +pvp.target.spawn = Target anda masih berada dalam spawn mereka ! +sign.lobby.autoassign = Warzone\n{0}\nMasuklah ke\ngerbang autoassign +sign.lobby.pick = Warzone\n{0}\nPilihlah tim\nanda +sign.lobby.warhub = \nKe pusat War\n +sign.team.limited = Tim {0}\n{1}/{2} pemain\n{3}/{4} poin\n{5} jiwa tersisa +sign.team.unlimited = Team {0}\n{1}/{2} pemain \n{3}/{4} poin \nJiwa tak terbatas +sign.warhub = Pusat War\n(/warhub)\nPilihlah perang\nanda ! +sign.warzone = Warzone\n{0}\n{1}/{2} pemain\n{3} tim +team.chat.enable = Mode chat tim telah dinyalakan. Pesan chat biasa anda akan diterima oleh anggota tim anda saja. +team.chat.disable = Mode chat tim telah dimatikan. +use.anvil = Anda tidak bisa menggunakan anvil dalam warzone ini ! +use.enchant = Anda tidak bisa menggunakan enchantment table dalam warzone ini ! +use.ender = Anda tidak bisa menggunakan ender chest saat bermain dalam sebuah warzone ! +use.item.spawn = Anda tidak bisa menggunakan barang apapun saat berada dalam spawn. +use.xpkillmeter = Ini terjadi karena pilihan xpkillmeter yang dinyalakan. +wand.toofar = Balok target anda terlalu jauh. +war.notadmin = Anda tidak bisa melakukan ini jika anda bukan seorang admin War (izin : war.admin). +war.notzm = Anda tidak bisa melakukan ini jika anda bukan seorang pembuat warzone (izin : war.zonemaker) +war.prefix = War> +war.title = War +warhub.none = Tidak ada pusat War dalam server War ini. Cobalah /zones dan /zone. +warhub.permission = Anda tidak mempunyai izin untuk menggunakan teleportasi untuk pergi ke pusat War. +warhub.teleport = Selamat datang di pusat War. Pilihlah perang anda ! +zone.airstrike = {0} telah meluncurkan serangan udara ! +zone.battle.end = Perang ini telah selesai. Tim {0} telah kalah : {1} meninggal dan tidak ada jiwa yang tersisa dalam kumpulan jiwa-jiwa mereka. +zone.battle.newscores = Skor baru - {0} +zone.battle.next = Perang terganggu. Warzone {0} sedang di-reset... +zone.battle.reset = Perang baru akan segera dimulai. Warzone sedang di-reset... +zone.battle.resetprogress = Kemajuan reset : {0}%, {1} detik... +zone.battle.resetcomplete = Warzone akan di-reset dalam {0} detik. Sebuah perang baru dimulai. +zone.bomb.broadcast = {0} meledakkan spawn tim {1}. Tim {2} mencetak satu poin. +zone.cake.broadcast = {0} telah merebut kue {1}. Tim {2} mencetak satu poin dan mendapat kumpulan jiwa-jiwa yang penuh. +zone.flagcapture.broadcast = {0} telah merebut bendera tim {1}. Tim {2} mencetak satu poin. +zone.flagreturn.deadlock = Anda tidak bisa merebut bendera musuh anda sampai bendera tim anda kembali. +zone.flagreturn.flag = Anda harus merebut bendera musuh anda dalam tempat bendera tim anda. +zone.flagreturn.spawn = Anda harus merebut bendera musuh anda dalam spawn tim anda. +zone.leavenotice = Gunakan /war leave untuk meninggalkan zona ini. +zone.lifepool.empty = Kumpulan jiwa-jiwa tim {0} sudah kosong. Mereka akan kalah jika seseorang dalam tim mereka meninggal ! +zone.loadout.equip = Loadout {0} telah diperalati (Tekan SHIFT untuk mengganti) +zone.loadout.reenter = Tidak bisa mengganti loadout setelah meninggalkan spawn. +zone.monument.badblock = Anda harus merebut monumen dengan balok wol yang memiliki warna yang sama dengan warna tim anda. Ambil satu dari spawn anda. +zone.monument.capture = Monumen {0} telah direbut oleh tim {1}. +zone.monument.lose = Tim {0} kehilangan kendali monumen {1}. +zone.monument.voodoo = Tarian anda menyenangkan voodoo monumen. Anda mendapat {0} hati ! +zone.noteamnotice = Anda tidak bisa memasuki warzone tanpa sebuah tim. +zone.score.board404 = Warzone ini tidak menyediakan sebuah papan skor. +zone.score.empty = Anda tidak bisa mencetak skor sampai seseorang memasuki sebuah tim lain. +zone.spawn.minplayers = Anda tidak bisa meninggalkan spawn sampai ada minimum {0} pemain dalam setidaknya {1} tim. +zone.spawn.timer = Anda tidak bisa meninggalkan spawn untuk {0} detik setelah respawn ! +zone.steal.bomb.broadcast = {0} memiliki bom {1}. +zone.steal.bomb.notice = Anda memiliki bom {0}. Pergilah ke spawn tim lain untuk mencetak skor. Hindari kontak dari orang lain, atau anda akan meledak ! +zone.steal.bomb.prevent = Halangi {0} yang bertujuan untuk mencapai spawn anda dengan bomnya ! +zone.steal.cake.broadcast = {0} memiliki kue {1}. +zone.steal.cake.notice = Anda memiliki kue {0}. Pergilah ke spawn tim anda untuk mencetak skor dan mengisi kembali kumpulan jiwa-jiwa tim anda. +zone.steal.cake.prevent = Halangi {0} yang bertujuan untuk mencapai spawnnya dengan kuenya ! +zone.steal.flag.broadcast = {0} mencuri bendera tim {1}. +zone.steal.flag.empty = Anda tidak bisa mencuri bendera tim {0} karena tidak ada pemain dalam tim itu. +zone.steal.flag.notice = Anda memiliki bendera tim {0}. Pergilah ke spawn tim anda atau tempat bendera tim anda untuk merebutnya ! +zone.steal.flag.prevent = Halangi {0} yang bertujuan untuk mencapai spawn tim {1} atau bendera mereka ! +zone.stealextra.bomb = Anda hanya boleh mencuri satu bom pada waktu yang sama ! +zone.stealextra.cake = Anda hanya boleh mencuri satu kue pada waktu yang sama ! +zone.stealextra.flag = Anda hanya boleh mencuri satu bendera pada waktu yang sama ! +zone.stealextra.other = Anda hanya boleh mencuri satu barang pada waktu yang sama ! +zone.teaminfo.format = {0} : {1} poin, {2}/{3} jiwa tersisa. {4} +zone.teaminfo.none = tidak ada +zone.teaminfo.prefix = Daftar tim : +zone.teleport = Selamat datang di warzone {0}. +zone.warp.permission = Anda tidak memiliki izin untuk menggunakan teleportasi untuk pergi ke warzone itu. +zone.zone404 = Warzone itu tidak dapat ditemukan. +zone.zoneinfo.format = {0} : {1} tim, {2} pemain +zone.zoneinfo.prefix = Daftar warzone : +zone.zoneinfo.teleport = Gunakan /zone untuk menggunakan teleportasi untuk pergi ke sebuah warzone. diff --git a/war/src/main/resources/messages_it.properties b/war/src/main/resources/messages_it.properties new file mode 100644 index 0000000..2917e6e --- /dev/null +++ b/war/src/main/resources/messages_it.properties @@ -0,0 +1,114 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Non puoi costruire qui. +build.denied.outside = Puoi costruire solo dentro le Warzones. +build.denied.teamblock = Puoi usare solamente i blocchi del tuo team per catturare i monumenti. +build.denied.zone.break = I blocchi in questa warzone non sono distruttibili. +build.denied.zone.multteam = hai gi\u00e0 un blocco {0} +build.denied.zone.outside = Non puoi distruggere in una warzone se non ci stai giocando. +build.denied.zone.place = Non puoi piazzare blocchi in questa warzone. +build.denied.zone.type = Non puoi modificare questo tipo di blocco. +command.console = Non puoi fare questo se non sei in una partita. +command.disabled = Puoi usare solamente i comandi del War ( es. /leave ) mentre giochi. +command.tp.moved = Il teletrasporto \u00e8 stato cancellato poich\u00e8 ti sei mosso. +command.tp.damaged = Il teletrasporto \u00e8 stato cancellato poich\u00e8 hai subito danno. +command.tp.success = Sei stato teletrasportato. Grazie per la pazienza. +drop.bomb.broadcast = {0} ha lanciato la {1} bomba! +drop.bomb.disabled = Non puoi lanciare oggetti mentre stai portando una bomba. Che diavolo stai facendo?! Corri allo spawn del tuo nemico! +drop.cake.broadcast = {0} ha lanciato la {1} torta! +drop.cake.disabled = Non puoi lanciare oggetti mentre stai portando una torta. Che diavolo stai facendo?! Corri! +drop.flag.broadcast = {0} Ha perso la bandiera {1} +drop.flag.disabled = Non puoi lanciare oggetti mentre stai portando una bandiera. Che diavolo stai facendo?! Corri! +drop.item.border = Non puoi droppare oggetti vicino il bordo dell'arena +drop.item.disabled = Non puoi lanciare oggetti in questa warzone. +drop.item.spawn = Non puoi lanciare oggetti mentre sei ancora nello spawn. +drop.team = Non puoi lanciare i blocchi {0} +drop.wand = Hai lanciato l'ascia per l'arena {0} +join.aarequired = Quest'area richiede che tu sia assegnato automaticamente ad un team. Per favore entra dal portale automatico. +join.broadcast = {0} \u00e8 entrato nel team {1} +join.disabled = Questa warzone \u00e8 stata disabilitata. +join.full.all = Tutti i team sono pieni. +join.full.single = Il team {0} \u00e8 pieno. +join.inventorystored = Il tuo inventario \u00e8 stato salvato, ti verr\u00e0 restituito non appena uscirai dall'arena usando /war leave. +join.permission.all = Non hai il permesso per entrare in alcun team disponibile di questa zona. +join.permission.single = Non hai il permesso per entrare nel team {0}. +join.progress = Non puoi entrare in quest'arena, c'\u00e8 una battaglia in corso. +join.selfteam = Non puoi entrare nel tuo stesso team. +join.team404 = Non ho trovato questo team. Prova usando /teams per visualizzare la lista. +leave.broadcast = {0} \u00e8 uscito dall'arena. +leave.inventoryrestore = Ti stiamo ridando il tuo inventario. +pvp.death.drown = {0} \u00e8 affogato +pvp.death.explosion = {0} \u00e8 esploso +pvp.death.fall = {0} ha fatto una morte molto umiliante +pvp.death.fire = {0} ha bruciato fino a diventare croccante +pvp.death.other = {0} \u00e8 morto +pvp.ff.disabled = Hai sbagliato ad attaccare! Hai colpito un tuo compagno. +pvp.ff.enabled = Il fuoco amico \u00e8 acceso! Per favore, non far del male ai tuoi compagni. +pvp.kill.adjectives = ;;potente;mortale;fine;precisa;brutale;potente +pvp.kill.bomb = {0} ha fatto esplodere {1} +pvp.kill.self = {0} ha commesso un suicidio +pvp.kill.verbs = ucciso;ucciso;ucciso;finito;ammutilato;assassinato;obliterato;sterminato +pvp.kill.weapon.aim = scopo +pvp.kill.weapon.bow = arco +pvp.kill.weapon.hand = mano +pvp.outside.permission = Non puoi attaccare utenti fuori dalle warzone. +pvp.self.notplaying = Hai bisogno di essere in una warzone per attaccare. +pvp.self.respawn = Non puoi attaccare mentre stai respawnando! +pvp.self.spawn = Non puoi attaccare mentre sei nello spawn! +pvp.target.notplaying = Il tuo obbiettivo non \u00e8 attualmente nella warzone +pvp.target.otherzone = Il tuo obbiettivo sta giocando in un altra arena. +pvp.target.respawn = L'obbiettivo sta respawnando! +pvp.target.spawn = L'obbiettivo \u00e8 ancora all'interno dello spawn! +sign.lobby.autoassign = Warzone\n{0}\nEntra nel por-\ntale automatico +sign.lobby.pick = Warzone\n{0}\n\nScegli il team +sign.lobby.warhub = \nAlla War hub\n +sign.team.limited = Team {0}\n{1}/{2} giocatori\n{3}/{4} pts\n{5} vite rimaste +sign.team.unlimited = Team {0}\n{1}/{2} giocatori\n{3}/{4} pts\nvite illimitate +sign.warhub = War hub\n(/warhub)\nScegli la\ntua battaglia +sign.warzone = Warzone\n{0}\n{1}/{2} giocatori\n{3} team +team.chat.enable = chat del team abilitata. I tuoi messaggi verranno ricevuti solo dal tuo team. +team.chat.disable = Chat del team disabilitata. +use.anvil = Non puoi usare le anvil in quest'arena! +use.enchant = Non puoi usare i tavoli dell'incantamento in quest'arena! +use.ender = Non puoi usare le ender chest mentre stai giocando in un'arena +use.item.spawn = Non puoi usare gli oggetti mentre sei ancora nello spawn. +use.xpkillmeter = l'opzione xpkillmeter \u00e8 stata abilitata. +wand.toofar = Il tuo obbiettivo \u00e8 troppo lontano. +war.notadmin = Non puoi eseguire quest'azione se non sei un admin (permesso: war.admin). +war.notzm = Non puoi eseguire questa azione se non sei un creatore (permesso: war.zonemaker). +war.prefix = War> +war.title = War> +warhub.none = Non sono presenti warhub su questo server. Prova con /zones e/o /zone +warhub.permission = Non hai il permesso per teletrasportarti alla warhub +warhub.teleport = Benvenuto alla WarHub. Scegli la tua battaglia! +zone.airstrike = {0} ha chiamato un bombardamento! +zone.battle.end = La battaglia \u00e8 terminata. Team {0} ha perso: {1} morti e non hanno pi\u00f9 vite. +zone.battle.newscores = Nuovi punteggi - {0} +zone.battle.next = La battaglia \u00e8 stata interrotta. Resettando la WarZone {0}... +zone.battle.reset = Una nuova battaglia inizier\u00e0 presto. Resettando la WarZone... +zone.battle.resetprogress = Progresso di reset: {0}%, {1} secondi +zone.bomb.broadcast = {0} ha fatto esplodere lo spawn del team {1}. Il Team {2} riceve un punto. +zone.cake.broadcast = {0} ha catturato la torta {1}. Il team {2} riceve un punto e riceve nuovamente tutte le vite. +zone.flagcapture.broadcast = {0} ha catturato la bandiera del team {1}. Il Team {2} riceve un punto. +zone.flagreturn.deadlock = Non puoi catturare la bandiera del nemico finch\u00e8 la vostra non torna al piedistallo. +zone.flagreturn.flag = Per catturare la bandiera nemica devi portarla a quella del tuo team. +zone.flagreturn.spawn = Hai bisogno di andare allo spawn del tuo team per catturare la bandiera nemica. +zone.leavenotice = Usa /war leave per uscire dalla zona +zone.lifepool.empty = Il team {0} non ha pi\u00f9 vite, un ultima morte e perderanno la battaglia! +zone.loadout.equip = Equipaggiato l'equipaggiamento {0} (accovacciati per cambiare). +zone.loadout.reenter = Non sar\u00e0 pi\u00f9 possibile modificare l'equipaggiamento dopo esser usciti dallo spawn. +zone.monument.badblock = Devi catturare il monumento con un blocco della lana del tuo team, prendine uno allo spawn del tuo team. +zone.monument.capture = Il monumento {0} \u00e8 stato catturato dal team {1} +zone.monument.lose = Team {0} ha perso il controllo del monumento {1} +zone.monument.voodoo = La tua danza ha commosso il modumento voodo, hai ricevuto {0} cuore/i! +zone.noteamnotice = Non puoi stare dentro ad una warzone senza essere in un team. +zone.score.empty = Non puoi eseguire alcun punteggio finch\u00e8 almeno un giocatore non entra nel team nemico. +zone.spawn.minplayers = Non puoi lasciare lo spawn finch\u00e8 non c'\u00e8 almeno un minimo di {0} giocatori nel team {1} +zone.steal.bomb.broadcast = {0} ha la bomba {1}. +zone.steal.cake.broadcast = {0} ha la torta {1}. +zone.teaminfo.none = nulla +zone.teleport = Benvenuto alla warzone {0}. +zone.warp.permission = Non hai il permesso per teletrasportarti alla Warzone. +zone.zone404 = Warzone non trovata. +zone.zoneinfo.format = {0}: {1} team, {2} giocatori +zone.zoneinfo.prefix = Warzones: +zone.zoneinfo.teleport = Usa /zone per teletrasportarti ad una warzone. diff --git a/war/src/main/resources/messages_ko_KR.properties b/war/src/main/resources/messages_ko_KR.properties index 3229ca8..5ff567b 100644 --- a/war/src/main/resources/messages_ko_KR.properties +++ b/war/src/main/resources/messages_ko_KR.properties @@ -1,70 +1,74 @@ # Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) -build.denied.location = \uc774\uacf3\uc5d0\uc11c \ube14\ub7ed\uc744 \uc124\uce58\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +build.denied.location = \uc5ec\uae30\uc11c \ube14\ub7ed\uc744 \uc124\uce58\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. build.denied.outside = \uc804\uc7c1\uad6c\uc5ed \ub0b4\uc5d0\uc11c\ub9cc \ube14\ub7ed\uc744 \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. -build.denied.teamblock = \uc790\uc2e0\uc758 \ud300 \ube14\ub7ed\ub9cc\uc744 \uc774\uc6a9\ud574 \uc804\uc7c1\uad6c\uc5ed \uc911\uc2ec\uc5d0 \uc788\ub294 \uae43\ubc1c\ub85c \uaf42\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +build.denied.teamblock = \ub2f9\uc2e0\uc758 \ud300 \ube14\ub7ed\ub9cc\uc744 \uc774\uc6a9\ud574 \uae43\ubc1c\ub85c \uaf42\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. build.denied.zone.break = \uc774 \uc804\uc7c1\uc5d0\uc11c \ube14\ub7ed\uc744 \ud30c\uad34\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. build.denied.zone.multteam = \uc774\ubbf8 {0} \ube14\ub7ed\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. build.denied.zone.outside = \uc804\uc7c1\uc5d0 \ucc38\uc5ec\ud558\uc9c0 \uc54a\uace0 \uc804\uc7c1\uad6c\uc5ed\uc5d0\uc11c \ube14\ub7ed\uc744 \ud30c\uad34\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. build.denied.zone.place = \uc774 \uc804\uc7c1\uc5d0\uc11c \ube14\ub7ed\uc744 \uc124\uce58\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. build.denied.zone.type = \uc804\uc7c1\uc5d0\uc11c \uc774 \ube14\ub7ed\uc744 \uc124\uce58 \ub610\ub294 \ud30c\uad34\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. command.console = \ucf58\uc194\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub294 \ucee4\ub9e8\ub4dc\uc785\ub2c8\ub2e4. -command.disabled = \uac8c\uc784\ub3c4\uc911\uc5d0\ub294 \uc804\uc7c1\uac8c\uc784 \ucee4\ub9e8\ub4dc (\uc608\uc2dc: /leave) \uc774\uc678\uc5d0\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -drop.bomb.broadcast = {0} \uc774(\uac00) {1} \uc5d0\uac8c \ud3ed\ud0c4\uc744 \ud22c\ud558\ud588\uc2b5\ub2c8\ub2e4! -drop.bomb.disabled = \ud3ed\ud0c4\uc744 \ud6d4\uce58\uba74 \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c0\uae08 \ub2f9\uc7a5 \uc801\uad70 \uae30\uc9c0\uc758 \uc2a4\ud3f0\uc73c\ub85c \uac00\uc2ed\uc2dc\uc624! -drop.cake.broadcast = {0} \uc774(\uac00) {1} \uc5d0\uac8c \ud3ed\ud0c4\uc744 \ud22c\ud558\ud588\uc2b5\ub2c8\ub2e4! -drop.cake.disabled = \ucf00\uc774\ud06c\ub97c \ud6d4\uce60 \ub54c \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ube68\ub9ac \ub6f0\uc2ed\uc2dc\uc624! -drop.flag.broadcast = {0} \uc774(\uac00) {1} \uc5d0\uac8c \uae43\ubc1c\uc744 \ub5a8\uc5b4\ub728\ub838\uc2b5\ub2c8\ub2e4! -drop.flag.disabled = \uae43\ubc1c\uc744 \ud6d4\uce60 \ub54c \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ube68\ub9ac \ub6f0\uc2ed\uc2dc\uc624! +command.disabled = \uac8c\uc784\ub3c4\uc911\uc5d0\ub294 \uc804\uc7c1\uac8c\uc784 \ucee4\ub9e8\ub4dc (\uc608: /leave) \uc678\uc5d0\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +command.tp.init = \ud154\ub808\ud3ec\ud2b8\uac00 {0} \ucd08 \ud6c4 \uc2e4\ud589\ub418\ubbc0\ub85c \uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824\uc8fc\uc138\uc694. \uc6c0\uc9c1\uc774\uac70\ub098 \ub370\ubbf8\uc9c0\ub97c \ubc1b\uc73c\uba74 \ud154\ub808\ud3ec\ud2b8\uac00 \ucde8\uc18c\ub429\ub2c8\ub2e4. +command.tp.moved = \uc6c0\uc9c1\uc5ec\uc11c \ud154\ub808\ud3ec\ud2b8\uac00 \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +command.tp.damaged = \ub370\ubbf8\uc9c0\ub97c \ubc1b\uc544\uc11c \ud154\ub808\ud3ec\ud2b8\uac00 \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +command.tp.success = \ud154\ub808\ud3ec\ud2b8 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uae30\ub2e4\ub824 \uc8fc\uc154\uc11c \uac10\uc0ac\ud569\ub2c8\ub2e4. +drop.bomb.broadcast = {0} \uc774/\uac00 {1} \ud3ed\ud0c4\uc744 \ud22c\ud558\ud588\uc2b5\ub2c8\ub2e4! +drop.bomb.disabled = \ud3ed\ud0c4\uc744 \uac00\uc9c0\uace0 \uc788\ub294 \ub3d9\uc548, \ub2f9\uc2e0\uc740 \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c0\uae08 \ub2f9\uc7a5 \uc801\uad70 \uae30\uc9c0\uc758 \uc2a4\ud3f0\uc73c\ub85c \uac00\uc2ed\uc2dc\uc624! +drop.cake.broadcast = {0} \uc774/\uac00 {1} \ucf00\uc774\ud06c\ub97c \ud22c\ud558\ud588\uc2b5\ub2c8\ub2e4! +drop.cake.disabled = \ucf00\uc774\ud06c\ub97c \uac00\uc9c0\uace0 \uc788\ub294 \ub3d9\uc548, \ub2f9\uc2e0\uc740 \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ube68\ub9ac \ub6f0\uc2ed\uc2dc\uc624! +drop.flag.broadcast = {0} \uc774/\uac00 {1} \uae43\ubc1c\uc744 \ub5a8\uc5b4\ub728\ub838\uc2b5\ub2c8\ub2e4! +drop.flag.disabled = \uae43\ubc1c\uc744 \uac00\uc9c0\uace0 \uc788\ub294 \ub3d9\uc548, \ub2f9\uc2e0\uc740 \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ube68\ub9ac \ub6f0\uc2ed\uc2dc\uc624! drop.item.border = \uc804\uc7c1\uad6c\uc5ed \uacbd\uacc4\uc120 \uadfc\ucc98\uc5d0\uc11c \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -drop.item.disabled = \uc774 \uc804\uc7c1\uc5d0\uc11c \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +drop.item.disabled = \uc774 \uc804\uc7c1\uad6c\uc5ed\uc5d0\uc11c\ub294 \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. drop.item.spawn = \uae30\uc9c0 \uc2a4\ud3f0\uad6c\uc5ed\uc5d0\uc11c\ub294 \uc544\uc774\ud15c\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. drop.team = {0} \ube14\ub7ed\uc744 \ub5a8\uc5b4\ub728\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. drop.wand = \uc804\uc7c1\uad6c\uc5ed\uc5d0 {0} wand \ub97c \ub5a8\uc5b4\ub728\ub838\uc2b5\ub2c8\ub2e4. join.aarequired = \uc804\uc7c1\uc744 \ucc38\uac00\ud558\ub824\uba74 \ud300\uc5d0 \uac00\uc785\ub418\uc5b4\uc57c\ub429\ub2c8\ub2e4. \uc804\uc7c1\ucc38\uac00 \uac8c\uc774\ud2b8\ub97c \ud1b5\uacfc\ud558\uc2ed\uc2dc\uc624. -join.broadcast = {0} \uc774(\uac00) {1} \ud300\uc73c\ub85c \uc804\uc7c1\uc5d0 \ucc38\uac00\ud588\uc2b5\ub2c8\ub2e4. +join.broadcast = {0} \uc774/\uac00 {1} \ud300\uc5d0 \ucc38\uc5ec\ud588\uc2b5\ub2c8\ub2e4. join.disabled = \uc774 \uc804\uc7c1\uc740 \ud604\uc7ac \ube44\ud65c\uc131\ud654 \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. join.full.all = \uc774 \uc804\uc7c1\uc758 \ubaa8\ub4e0 \ud300 \uc778\uc6d0\uc218\uac00 \ucc3c\uc2b5\ub2c8\ub2e4. join.full.single = {0} \ud300 \uc778\uc6d0\uc218\uac00 \ucc3c\uc2b5\ub2c8\ub2e4. join.inventorystored = \ub2f9\uc2e0\uc758 \uc778\ubca4\ud1a0\ub9ac\uac00 \ube44\uc6cc\uc84c\uc9c0\ub9cc \uc800\uc7a5\ub418\uc5b4 \uc804\uc7c1\uc774 \ub05d\ub098\uac70\ub098 /war leave \ub97c \uc785\ub825\ud558\uba74 \ub2e4\uc2dc \ubcf5\uad6c\ub429\ub2c8\ub2e4. join.permission.all = \uc774 \uc804\uc7c1\uc758 \uc5b4\ub5a4 \ud300\uc5d0\ub3c4 \ucc38\uac00\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -join.permission.single = {0} \ud300\uc5d0 \ucc38\uac00\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. -join.progress = \uc774 \uc804\uc7c1\uc740 \ud604\uc7ac \uc9c4\ud589\uc911\uc774\uc5ec\uc11c \ucc38\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -join.selfteam = \uc774\ubbf8 \uc790\uc2e0\uc758 \uc804\uc7c1 \ud300\uc5d0 \uc18c\uc18d\ub41c \ud300\uc73c\ub85c \ucc38\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -join.team404 = \uc785\ub825\ud55c \ud300\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. /teams \ub97c \uc785\ub825\ud574 \ud300 \ubaa9\ub85d\uc744 \ubcf4\uc2ed\uc2dc\uc624. -leave.broadcast = {0} \uc774(\uac00) \uc804\uc7c1\uc5d0\uc11c \ub098\uac14\uc2b5\ub2c8\ub2e4. -leave.inventoryrestore = \ub2f9\uc2e0\uc758 \uc778\ubca4\ud1a0\ub9ac\uac00 \ub2e4\uc2dc \ubcf5\uad6c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. -pvp.death.drown = {0} \uc774(\uac00) \ubb3c\uc5d0 \ube60\uc838 \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 -pvp.death.explosion = {0} \uc774(\uac00) \ud3ed\ubc1c\ub85c \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 -pvp.death.fall = {0} \uc774(\uac00) \ub099\uc0ac\ud574\uc11c \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 -pvp.death.fire = {0} \uc774(\uac00) \ubd88\uc5d0 \ud0c0\uc11c \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 -pvp.death.other = {0} \uc774(\uac00) \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 -pvp.ff.disabled = \uc790\uc2e0\uc758 \ud300\uc6d0\uc744 \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc801\uc744 \uacf5\uaca9\ud558\uc2ed\uc2dc\uc624 -pvp.ff.enabled = \ud300\ub3d9\ub8cc\ub97c \uacf5\uaca9\ud558\uc9c0 \uc54a\ub294\uac8c \uc88b\uaca0\uc2b5\ub2c8\ub2e4. -pvp.kill.adjectives = ;;\uac15\ub825\ud55c;\uc8fd\uc74c\uc758;\ud6cc\ub96d\ud55c;\uc815\ud655\ud55c;\uc794\uc778\ud55c;\ub9e4\uc6b0\uac15\ub825\ud55c -pvp.kill.bomb = {0} \uc774(\uac00) {1} \uc744(\ub97c) \ud130\ub728\ub838\uc2b5\ub2c8\ub2e4! +join.permission.single = \ub2f9\uc2e0\uc740 {0} \ud300\uc5d0 \ucc38\uc5ec\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +join.progress = \uc774 \uad6c\uc5ed\uc740 \uc774\ubbf8 \uac8c\uc784\uc774 \uc9c4\ud589\uc911\uc774\uc5ec\uc11c \ucc38\uc5ec\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +join.selfteam = \uc774\ubbf8 \uc774 \ud300\uc5d0 \ucc38\uc5ec\ud574 \uc788\uc2b5\ub2c8\ub2e4. +join.team404 = \uc785\ub825\ud55c \ud300\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \ud300 \ubaa9\ub85d\uc744 \ubcf4\ub824\uba74: /teams +leave.broadcast = {0} \uc774/\uac00 \uad6c\uc5ed\uc744 \ub098\uac14\uc2b5\ub2c8\ub2e4. +leave.inventoryrestore = \ub2f9\uc2e0\uc758 \uc778\ubca4\ud1a0\ub9ac\uac00 \uc774\uc804 \uc0c1\ud0dc\ub85c \ubcf5\uad6c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +pvp.death.drown = {0} \uc774/\uac00 \ubb3c\uc5d0 \ube60\uc838 \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 +pvp.death.explosion = {0} \uc774/\uac00 \ud3ed\ubc1c\ub85c \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 +pvp.death.fall = {0} \uc774/\uac00 \ub099\uc0ac\ub85c \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 +pvp.death.fire = {0} \uc774/\uac00 \ubd88\uc5d0 \ubc14\uc0ad\ud558\uac8c \ud0c0\uc11c \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 +pvp.death.other = {0} \uc774/\uac00 \uc8fd\uc5c8\uc2b5\ub2c8\ub2e4 +pvp.ff.disabled = \uc798\ubabb\ub41c \uc0ac\ub78c\uc744 \ub54c\ub838\uc2b5\ub2c8\ub2e4! \uc774 \uc0ac\ub78c\uc740 \ub2f9\uc2e0\uc758 \ud300\uc785\ub2c8\ub2e4. +pvp.ff.enabled = \ud300 \ub3d9\ub8cc\ub97c \uacf5\uaca9\ud558\uc9c0 \uc54a\ub294\uac8c \uc88b\uaca0\uc2b5\ub2c8\ub2e4. +pvp.kill.adjectives = ;;\uac15\ud55c;\uc8fd\uc74c\uc758;\ud6cc\ub96d\ud55c;\uc815\ud655\ud55c;\uc794\uc778\ud55c;\uac15\ub825\ud55c +pvp.kill.bomb = {0} \uc774/\uac00 {1} \uc744/\ub97c \ud130\ub728\ub838\uc2b5\ub2c8\ub2e4! pvp.kill.format = {0} \uc758 {1} {2} {3} {4} -pvp.kill.self = {0} \uc774(\uac00) \uc790\uc0b4\ud588\uc2b5\ub2c8\ub2e4 +pvp.kill.self = {0} \uc774/\uac00 \uc790\uc0b4\ud588\uc2b5\ub2c8\ub2e4 pvp.kill.verbs = \uc5d0 \uc8fd\uc740;\uc5d0 \uc8fd\uc740;\uc5d0 \uc8fd\uc740;\uc5d0 \uc8fd\uc740;\uc5d0 \uc8fd\uc740;\uc5d0 \uc8fd\uc740;\uc5d0 \uc8fd\uc740;\uc5d0 \uc8fd\uc740 -pvp.kill.weapon.aim = \ubaa9\ud45c +pvp.kill.weapon.aim = \ubaa9\uc801 pvp.kill.weapon.bow = \ud65c pvp.kill.weapon.hand = \uc190 pvp.outside.permission = \uc804\uc7c1\uad6c\uc5ed \ubc16\uc5d0 \uc788\ub294 \ud50c\ub808\uc774\uc5b4\ub97c \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -pvp.self.notplaying = \uc804\uc7c1\uc911\uc5d0\ub9cc \uacf5\uaca9\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4. -pvp.self.respawn = \ub9ac\uc2a4\ud3f0 \ub3c4\uc911 \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! -pvp.self.spawn = \uc2a4\ud3f0\uad6c\uc5ed \uc548\uc5d0 \uc788\uc744 \ub54c \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! +pvp.self.notplaying = \uc804\uc7c1\uad6c\uc5ed \uc548\uc5d0\uc11c \uac8c\uc784 \uc911\uc5d0\ub9cc \uacf5\uaca9\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4. +pvp.self.respawn = \ub9ac\uc2a4\ud3f0 \uc911 \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! +pvp.self.spawn = \uc2a4\ud3f0\uad6c\uc5ed \uc548\uc5d0\uc11c \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! pvp.target.notplaying = \uc804\uc7c1\uc5d0 \ucc38\uac00\ud558\uc9c0 \uc54a\uc740 \ud50c\ub808\uc774\uc5b4\ub97c \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. pvp.target.otherzone = \ub2e4\ub978 \uc804\uc7c1\uac8c\uc784\uc5d0 \ucc38\uac00\ud55c \ud50c\ub808\uc774\uc5b4\ub97c \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. pvp.target.respawn = \ub9ac\uc2a4\ud3f0\uc911\uc778 \ud50c\ub808\uc774\uc5b4\ub97c \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! pvp.target.spawn = \uc2a4\ud3f0\uc9c0\uc5ed\uc5d0 \uc788\ub294 \ud50c\ub808\uc774\uc5b4\ub97c \uacf5\uaca9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! -sign.lobby.autoassign = {0}\n\uc804\uc7c1\n\uac8c\uc774\ud2b8\ub97c\n\ud1b5\uacfc\ud558\uc2ed\uc2dc\uc624. -sign.lobby.pick = \uc804\uc7c1\uad6c\uc5ed\n{0} \n \n\ud300\uc744 \uc120\ud0dd\ud558\uc2ed\uc2dc\uc624. -sign.lobby.warhub = \n\uc804\uc7c1\ub85c\ube44\ub85c \uac00\uae30\n\n -sign.team.limited = {0} \ud300\n\uc778\uc6d0\uc218: {1}/{2}\n\ud3ec\uc778\ud2b8: {3}/{4}\n\ub0a8\uc740 \ubaa9\uc228: {5} -sign.team.unlimited = {0} \ud300\n\uc778\uc6d0\uc218: {1}/{2}\n\ud3ec\uc778\ud2b8: {3}/{4}\n\ubaa9\uc228 \ubb34\uc81c\ud55c -sign.warhub = \uc804\uc7c1\ub85c\ube44\n(/warhub)\n\uc6d0\ud558\ub294 \uc804\uc7c1\uc885\ub958\n\ub97c \uc120\ud0dd\ud558\uc2ed\uc2dc\uc624! -sign.warzone = \uc804\uc7c1\uad6c\uc5ed\n{0}\n\uc778\uc6d0\uc218: {1}/{2}\n\ud300: {3} \uac1c +sign.lobby.autoassign = \uc804\uc7c1\uad6c\uc5ed\n{0}\n\uac8c\uc784\ucc38\uc5ec \uac8c\uc774\ud2b8\ub97c\n\ud1b5\uacfc\ud558\uc2ed\uc2dc\uc624. +sign.lobby.pick = \uc804\uc7c1\uad6c\uc5ed\n{0} \n \n\ud300\uc744 \uc120\ud0dd\ud558\uc138\uc694. +sign.lobby.warhub = \n\uc804\uc7c1 \ub85c\ube44\ub85c \uac00\uae30\n +sign.team.limited = {0} \ud300\n\uc720\uc800: {1}/{2}\n\ud3ec\uc778\ud2b8: {3}/{4}\n\ub0a8\uc740 \ubaa9\uc228: {5} +sign.team.unlimited = {0} \ud300\n\uc720\uc800: {1}/{2}\n\ud3ec\uc778\ud2b8: {3}/{4}\n\ubaa9\uc228 \ubb34\uc81c\ud55c +sign.warhub = \uc804\uc7c1\ub85c\ube44\n(/warhub)\n\uc804\uc7c1 \uc885\ub958\ub97c\n\uc120\ud0dd\ud558\uc138\uc694! +sign.warzone = \uc804\uc7c1\uad6c\uc5ed\n{0}\n\uc720\uc800: {1}/{2}\n\ud300: {3} team.chat.enable = \ud300\ub07c\ub9ac \ucc44\ud305\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2f9\uc2e0\uc758 \uc77c\ubc18\ucc44\ud305 \uba54\uc2dc\uc9c0\uac00 \ub2f9\uc2e0\uc758 \ud300\uc5d0\uac8c\ub9cc \ubcf4\uc77c \uac83\uc785\ub2c8\ub2e4. -team.chat.disable = \ud300\ub07c\ub9ac \ucc44\ud305\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +team.chat.disable = \ud300\ub07c\ub9ac \ucc44\ud305\ud560 \uc218 \uc5c6\ub3c4\ub85d \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. use.anvil = \uc774 \uc804\uc7c1\uc5d0\uc11c \ubaa8\ub8e8\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! use.enchant = \uc774 \uc804\uc7c1\uc5d0\uc11c \ub3c4\uad6c\ub97c \uc778\ucc48\ud2b8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! use.ender = \uc5d4\ub354\uc0c1\uc790\ub97c \uc804\uc7c1 \uc911 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! @@ -78,13 +82,13 @@ war.title = \uc804\uc7c1 warhub.none = \uc774 \uc11c\ubc84\uc5d0 \uc804\uc7c1\ub85c\ube44\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. /zones \ub97c \uc785\ub825\ud574 \ucc38\uc5ec\uac00\ub2a5\ud55c \uc804\uc7c1\uad6c\uc5ed\uc744 \uc54c\uc544\ubcf4\uc2ed\uc2dc\uc624. warhub.permission = \uc804\uc7c1\ub85c\ube44\ub85c \ud154\ub808\ud3ec\ud2b8\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. warhub.teleport = \uc804\uc7c1\ub85c\ube44\uc5d0 \uc624\uc2e0\uac83\uc744 \ud658\uc601\ud569\ub2c8\ub2e4! \uc6d0\ud558\ub294 \uc804\uc7c1\uc744 \uc120\ud0dd\ud558\uc2ed\uc2dc\uc624. -zone.airstrike = {0} \uc774(\uac00) \uc5d0\uc5b4\uc2a4\ud2b8\ub77c\uc774\ucee4\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +zone.airstrike = {0} \uc774/\uac00 \uc5d0\uc5b4\uc2a4\ud2b8\ub77c\uc774\ucee4\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. zone.battle.end = \uc804\uc7c1\uc774 \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. {1} \uba85\uc774 \uc8fd\uace0 \ubaa9\uc228\uc774 \ub354 \uc774\uc0c1 \uc5c6\uc5b4 {0} \ud300\uc774 \uc84c\uc2b5\ub2c8\ub2e4. zone.battle.newscores = \uc2e0\uaddc \uc810\uc218 - {0} -zone.battle.next = {0} \uc804\uc7c1\uad6c\uc5ed\uc744 \uc7ac\uc2dc\uc791\ud558\uba74\uc11c \uc804\uc7c1\uc774 \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.. +zone.battle.next = {0} \uc804\uc7c1\uad6c\uc5ed\uc744 \uc911\ub2e8\ud558\uace0 \uc7ac\uc2dc\uc791\ud569\ub2c8\ub2e4.. zone.battle.reset = \uace7 \uc0c8\ub85c\uc6b4 \uc804\uc7c1\uc774 \uc2dc\uc791\ub429\ub2c8\ub2e4. \uc804\uc7c1\uad6c\uc5ed\uc774 \uc7ac\uc2dc\uc791\uc911\uc785\ub2c8\ub2e4.. zone.battle.resetprogress = {0}% \uc7ac\uc2dc\uc791\uc911, {1}\ucd08.. -zone.battle.resetcomplete = \uc804\uc7c1\uc774 \uc7ac\uc2dc\uc791\ub418\ub294\ub370 {0} \ucd08\uac00 \uac78\ub838\uc2b5\ub2c8\ub2e4. \uc0c8\ub85c\uc6b4 \uc804\uc7c1\uc774 \uc2dc\uc791\ub429\ub2c8\ub2e4. +zone.battle.resetcomplete = \uc804\uc7c1\uc774 {0} \ucd08 \uc548\uc5d0 \uc7ac\uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc0c8\ub85c\uc6b4 \uc804\uc7c1\uc774 \uc2dc\uc791\ub429\ub2c8\ub2e4. zone.bomb.broadcast = {0} \ud300\uc774 {1} \ud300\uc758 \uc2a4\ud3f0\uc7a5\uc18c\ub97c \ud3ed\ubc1c\uc2dc\ucf30\uc2b5\ub2c8\ub2e4. {2} \ud300\uc774 1\uc810\uc744 \ud68d\ub4dd\ud588\uc2b5\ub2c8\ub2e4. zone.cake.broadcast = {0} \ud300\uc774 {1} \ud300\uc758 \ucf00\uc774\ud06c\ub97c \uc7a1\uc558\uc2b5\ub2c8\ub2e4. {2} \ud300\uc774 1\uc810\uc744 \ud68d\ub4dd\ud558\uace0 \ubaa9\uc228\uc774 \ubaa8\ub450 \ucc44\uc6cc\uc9d1\ub2c8\ub2e4. zone.flagcapture.broadcast = {0} \ud300\uc774 {1} \ud300\uc758 \uae43\ubc1c\uc744 \uc7a1\uc558\uc2b5\ub2c8\ub2e4. {2} \ud300\uc774 1\uc810\uc744 \ud68d\ub4dd\ud588\uc2b5\ub2c8\ub2e4. @@ -101,19 +105,19 @@ zone.monument.lose = {0} \ud300\uc774 {1} \uc911\uc559\ud0d1\uc744 \uc783\uc5c8\ zone.monument.voodoo = \uc911\uc559\ud0d1\uc744 \uc5bb\uc5b4 {0} \uac1c\uc758 \ubaa9\uc228\uc744 \uc5bb\uc5c8\uc2b5\ub2c8\ub2e4! zone.noteamnotice = \uc804\uc7c1\uac8c\uc784\uc758 \ud300\uc5d0 \uc18c\uc18d\ub418\uc9c0 \uc54a\uc73c\uba74 \uc804\uc7c1\uad6c\uc5ed\uc5d0 \ub4e4\uc5b4\uac08 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. zone.score.board404 = \uc774 \uc804\uc7c1\uad6c\uc5ed\uc740 \uc2a4\ucf54\uc5b4\ubcf4\ub4dc\uac00 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. -zone.score.empty = \ub2f9\uc2e0\uc740 \uc801\ud300\uc5d0 \ucd5c\uc18c \ud55c\uba85\uc774\uc0c1\uc774 \ub4e4\uc5b4\uc624\uc9c0 \uc54a\ub294 \ud55c, \uc810\uc218\ub97c \ub0bc \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +zone.score.empty = \uc801\ud300\uc758 \uc778\uc6d0\uc218\uac00 \ucd5c\uc18c \ud55c\uba85\uc774\uc0c1\uc774\uc5ec\uc57c\ub9cc \uacf5\uaca9\ud574 \uc810\uc218\ub97c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. zone.spawn.minplayers = \ucd5c\uc18c {1} \uac1c\uc758 \ud300\uc5d0\uc11c {0} \uba85\uc774\uc0c1\uc758 \ud50c\ub808\uc774\uc5b4\uac00 \uc788\uc5b4\uc57c\ub9cc \uc2a4\ud3f0\uc9c0\uc5ed\uc5d0\uc11c \ub098\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4. zone.spawn.timer = \ub9ac\uc2a4\ud3f0 \ud6c4 {0} \ucd08 \ub3d9\uc548 \uc2a4\ud3f0\uc9c0\uc5ed\uc5d0\uc11c \ub098\uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! -zone.steal.bomb.broadcast = {0} \uc774(\uac00) {1} \ud3ed\ud0c4\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. +zone.steal.bomb.broadcast = {0} \uc774/\uac00 {1} \ud3ed\ud0c4\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. zone.steal.bomb.notice = \ub2f9\uc2e0\uc740 {0} \ud3ed\ud0c4\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc801\ud300\uc758 \uc2a4\ud3f0\uc9c0\uc5ed\uae4c\uc9c0 \uac00\uba74 \uc810\uc218\ub97c \uc5bb\uc2b5\ub2c8\ub2e4. \ub9cc\uc57d \ub2e4\ub978\uc0ac\ub78c\uc774 \ub2f9\uc2e0\uc744 \ub54c\ub9ac\uba74 \ubaa8\ub450 \ud3ed\ubc1c\ud560\uac83\uc785\ub2c8\ub2e4! zone.steal.bomb.prevent = {0} \ub85c\ubd80\ud130 \ub2f9\uc2e0\uc758 \uc2a4\ud3f0\uc9c0\uc5ed\uc5d0 \ud3ed\ud0c4\uc744 \uac00\uc838\uc624\ub294\uac83\uc744 \ub9c9\uc73c\uc2ed\uc2dc\uc624! -zone.steal.cake.broadcast = {0} \uc774(\uac00) {1} \ucf00\uc78c\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. -zone.steal.cake.notice = \ub2f9\uc2e0\uc740 {0} \ucf00\uc78c\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ucf00\uc78c\uc744 \ub4e4\uace0 \ub2f9\uc2e0\uc758 \ud300 \uc2a4\ud3f0\uc9c0\uc5ed\uc73c\ub85c \uac00\uba74 1\uc810\uc744 \uc5bb\uace0 \ub2f9\uc2e0\uc758 \ubaa9\uc228\uc744 \ucc44\uc6b8 \uc218 \uc788\uc2b5\ub2c8\ub2e4! -zone.steal.cake.prevent = {0} \ub85c\ubd80\ud130 \uadf8\ub4e4\uc758 \ud300 \uc2a4\ud3f0\uc9c0\uc5ed\uc5d0 \ucf00\uc78c\uc744 \uac00\uc838\uac00\ub294\uac83\uc744 \ub9c9\uc73c\uc2ed\uc2dc\uc624! -zone.steal.flag.broadcast = {0} \uc774(\uac00) {1} \ud300\uc758 \uae43\ubc1c\uc744 \ud6d4\ucce4\uc2b5\ub2c8\ub2e4! +zone.steal.cake.broadcast = {0} \uc774/\uac00 {1} \ucf00\uc774\ud06c\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. +zone.steal.cake.notice = {0} \ucf00\uc774\ud06c\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uc8fd\uc9c0 \uc54a\uace0 \ub2f9\uc2e0\uc758 \ud300 \uc2a4\ud3f0\uc5d0 \ub3c4\ub2ec\ud558\uba74 1\uc810\uc744 \uc5bb\uace0 \ub2f9\uc2e0\uc758 \ubaa9\uc228\uc744 \ucc44\uc6b8 \uc218 \uc788\uc2b5\ub2c8\ub2e4! +zone.steal.cake.prevent = {0} \uc774/\uac00 \uadf8\uc758 \ud300 \uc2a4\ud3f0\uc5d0 \ucf00\uc774\ud06c\ub97c \uac00\uc9c0\uace0 \uac00\ub294\uac83\uc744 \ub9c9\uc73c\uc2ed\uc2dc\uc624! +zone.steal.flag.broadcast = {0} \uc774/\uac00 {1} \ud300\uc758 \uae43\ubc1c\uc744 \ud6d4\ucce4\uc2b5\ub2c8\ub2e4. zone.steal.flag.empty = \ub2f9\uc2e0\uc740 {0} \ud300\uc5d0 \ud50c\ub808\uc774\uc5b4\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \uc774 \ud300\uc758 \uae43\ubc1c\uc744 \ud6d4\uce60 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. zone.steal.flag.notice = \ub2f9\uc2e0\uc740 {0} \ud300\uc758 \uae43\ubc1c\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub2f9\uc2e0\uc758 \ud300 \uc2a4\ud3f0\uc9c0\uc5ed\uc73c\ub85c \uac00\uc838\uac00\uc2ed\uc2dc\uc624! -zone.steal.flag.prevent = {0} \ub85c\ubd80\ud130 \uae43\ubc1c\uc744 {1} \ud300\uc758 \uc2a4\ud3f0\uc9c0\uc5ed\uc73c\ub85c \uac00\uc838\uac00\ub294\uac83\uc744 \ub9c9\uc73c\uc2ed\uc2dc\uc624! +zone.steal.flag.prevent = {0} \uc774/\uac00 {1} \ud300\uc758 \uc2a4\ud3f0 \ub610\ub294 \uae43\ubc1c\uc5d0 \ub3c4\ub2ec\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ub9c9\uc73c\uc2ed\uc2dc\uc624. zone.stealextra.bomb = \ud3ed\ud0c4\uc740 \ud55c\ubc88\uc5d0 \ud55c\uac1c\uc529\ub9cc \ud6d4\uce60 \uc218 \uc788\uc2b5\ub2c8\ub2e4. zone.stealextra.cake = \ucf00\uc774\ud06c\ub294 \ud55c\ubc88\uc5d0 \ud55c\uac1c\uc529\ub9cc \ud6d4\uce60 \uc218 \uc788\uc2b5\ub2c8\ub2e4. zone.stealextra.flag = \uae43\ubc1c\uc740 \ud55c\ubc88\uc5d0 \ud55c\uac1c\uc529\ub9cc \ud6d4\uce60 \uc218 \uc788\uc2b5\ub2c8\ub2e4. @@ -121,9 +125,9 @@ zone.stealextra.other = \ud55c\ubc88\uc5d0 \ud55c \uc885\ub958(\ud3ed\ud0c4, \uc zone.teaminfo.format = {0}: {1} \uc810, {2}/{3} \uac1c\uc758 \ubaa9\uc228, {4} zone.teaminfo.none = \uc5c6\uc74c zone.teaminfo.prefix = \ud300: -zone.teleport = {0} \uc804\uc7c1\uc5d0 \uc624\uc2e0\uac83\uc744 \ud658\uc601\ud569\ub2c8\ub2e4 +zone.teleport = \uc804\uc7c1\uad6c\uc5ed {0} \uc5d0 \uc624\uc2e0\uac83\uc744 \ud658\uc601\ud569\ub2c8\ub2e4. zone.warp.permission = \uc804\uc7c1\uac8c\uc784\uc73c\ub85c \ud154\ub808\ud3ec\ud2b8\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. zone.zone404 = \ub2f9\uc2e0\uc774 \uc785\ub825\ud55c \uc804\uc7c1\uad6c\uc5ed\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. zone.zoneinfo.format = {0}: {1} \uac1c\uc758 \ud300, {2} \uba85\uc758 \ud50c\ub808\uc774\uc5b4 zone.zoneinfo.prefix = \uc804\uc7c1\uad6c\uc5ed: -zone.zoneinfo.teleport = \uc6d0\ud558\ub294 \uc804\uc7c1\uac8c\uc784\uc73c\ub85c \ud154\ub808\ud3ec\ud2b8\ud558\ub824\uba74 /zone <\uc804\uc7c1\uad6c\uc5ed-\uc774\ub984> \uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624. \ No newline at end of file +zone.zoneinfo.teleport = \ud2b9\uc815 \uc804\uc7c1\uad6c\uc5ed\uc73c\ub85c \ud154\ub808\ud3ec\ud2b8\ud558\ub824\uba74 /zone <\uad6c\uc5ed-\uc774\ub984> \uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624. diff --git a/war/src/main/resources/messages_lv_LV.properties b/war/src/main/resources/messages_lv_LV.properties new file mode 100644 index 0000000..84552cf --- /dev/null +++ b/war/src/main/resources/messages_lv_LV.properties @@ -0,0 +1,11 @@ +build.denied.outside = J\u016bs varat celt tikai ar\u0113n\u0101. +build.denied.zone.break = Taj\u0101 ar\u0113n\u0101 nevar lauzt blokus! +build.denied.zone.multteam = Jums jau ir {0} bloks. +build.denied.zone.outside = J\u016bs nevarat lauzt blokus ar\u0113n\u0101, kam\u0113r neesat iek\u0161\u0101. +build.denied.zone.place = J\u016bs nevarat celt \u0161aj\u0101 ar\u0113n\u0101! +build.denied.zone.type = J\u016bs nevarat main\u012bt tadus blokus. +command.console = Komandu lieto\u0161ana ir at\u013cauta tikai sp\u0113l\u0113. +command.disabled = J\u016bs varat lietot tikai War komandas (piem. /leave), kam\u0113r sp\u0113lejat. +drop.bomb.broadcast = {0} pazaud\u0113ja bumbu "{1}"! +drop.bomb.disabled = J\u016bs nevarat izmest lietas, kam\u0113r nesat bumbu. Skrien uz pretejo b\u0101zi! +join.broadcast = {0} piesl\u0113dz\u0101s pie {1}. diff --git a/war/src/main/resources/messages_nl.properties b/war/src/main/resources/messages_nl.properties new file mode 100644 index 0000000..5b608a9 --- /dev/null +++ b/war/src/main/resources/messages_nl.properties @@ -0,0 +1,133 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Je kan hier niet bouwen. +build.denied.outside = Je kan alleen in warzones bouwen. +build.denied.teamblock = Je kan alleen je team blokken gebruiken om de monumenten te veroveren. +build.denied.zone.break = Deze blokken zijn onbreekbaar in de warzone! +build.denied.zone.multteam = Je hebt al een {0} blok. +build.denied.zone.outside = Je kan geen blokken slopen in de warzone waar je niet in het spelen bent. +build.denied.zone.place = Je kan geen blokken plaatsen in de warzone. +build.denied.zone.type = Je kan dit type blok niet veranderen. +command.console = Je kan dit niet doen als je niet in de game bent. +command.disabled = Je kan alleen war commands (bv. /leave) gebruiken tijdens het spel. +command.tp.init = Wacht {0} seconden voor teleporteren. Bewegen of beschadiging zal de timer annuleren. +command.tp.moved = Teleportatie geannuleerd door beweging. +command.tp.damaged = Teleportatie geannuleerd door beschadiging. +command.tp.success = Je bent geteleporteerd. Bedankt voor je geduld. +drop.bomb.broadcast = {0} heeft de {1} bom laten vallen! +drop.bomb.disabled = Je kan geen items droppen terwijl je de bom steelt. Wat doe je?! REN! +drop.cake.broadcast = {0} heeft de {1} cake laten vallen! +drop.cake.disabled = Je kan geen blokken droppen terwijl je de cake steelt! Wat doe je? REN! +drop.flag.broadcast = {0} Heeft de {1} vlag laten vallen! +drop.flag.disabled = Je kan geen blokken droppen terwijl je de vlag steelt. Wat doe je?! REN! +drop.item.border = Je kan geen items droppen bij de zone grens. +drop.item.disabled = Je kan geen items droppen in deze warzone. +drop.item.spawn = Je kan geen items droppen als je nog in spawn bent. +drop.team = Je kan geen {0} blokken droppen. +drop.wand = Je hebt de zone {0} wand gedropt. +join.aarequired = Dit oorlogsgebied vereist jou om automatisch toegewezen te worden aan een team. In plaats daarvan, betreed de auto assign poort. +join.broadcast = {0} Heeft team {1} toegetreden. +join.disabled = De warzone is uitgeschakeld. +join.full.all = Alle teams zijn vol. +join.full.single = Team {0} is vol. +join.inventorystored = Je inventory is opgeslagen totdat je de warzone verlaat met /war leave. +join.permission.all = Je hebt geen toestemming om de teams in deze warzone te joinen. +join.permission.single = Je hebt geen toestemming om het team {0} te joinen. +join.progress = Je kunt geen gevecht dat al bezig is betreden in deze zone. +join.selfteam = Je kunt niet je eigen team joinen. +join.team404 = Dit team is niet gevonden. Probeer /teams voor de lijst met teams. +leave.broadcast = {0} heeft de zone verlaten. +leave.inventoryrestore = Je inventory is herstelt. +pvp.death.drown = {0} is verdronken! +pvp.death.explosion = {0} is ontploft. +pvp.death.fall = {0} is dood gevallen. +pvp.death.fire = {0} is levend verbrand. +pvp.death.other = {0} is gestorven. +pvp.ff.disabled = Je aanval ging niet raak! Je doelwit is op je eigen team. +pvp.ff.enabled = Vriendenvuur is aan, doe je teamleden geen pijn! +pvp.kill.adjectives = ;;machtig;dodelijk;fijn;precies;brutaal;krachtig +pvp.kill.bomb = {0} heeft {1} laten exploderen! +pvp.kill.format = {0}''s {1} {2} {3} {4} +pvp.kill.self = {0} heeft zelfmoord gepleegt. +pvp.kill.verbs = vermoord;vermoord;vermoord;vermoord;vermoord;vermoord;vermoord;vermoord +pvp.kill.weapon.aim = richten +pvp.kill.weapon.bow = boog +pvp.kill.weapon.hand = hand +pvp.outside.permission = Je kunt geen spelers aanvallen buiten de warzones. +pvp.self.notplaying = Je moet in een warzone spelen wil je spelers aanvallen. +pvp.self.respawn = Je kunt niet aanvallen als je aan het respawnen bent! +pvp.self.spawn = Je kunt niet aanvallen als je nog in de spawn bent! +pvp.target.notplaying = Je doelwit is niet in deze warzone aan het spelen! +pvp.target.otherzone = Je doelwit is in een andere warzone aan het spelen! +pvp.target.respawn = Je doelwit is nog aan het respawnen! +pvp.target.spawn = Je doelwit is nog in spawn! +sign.lobby.autoassign = Oorlogsgebied\n{0}\nBetreed de auto-\nGeef aan als deur. +sign.lobby.pick = Warzone\n{0}\n\nKies jouw team. +sign.lobby.warhub = \nNaar War hub\n\n +sign.team.limited = Team {0}\n{1}/{2} spelers\n{3}/{4} ptn\n{5} levens over +sign.team.unlimited = Team {0}\n{1}/{2} spelers\n{3}/{4} ptn\noneindig levens +sign.warhub = War hun\n(/warhub)\nKies jouw\ngevecht! +sign.warzone = Oorlogsgebied\n{0}\n{1}/{2} spelers\n{3} teams +team.chat.enable = Team chat ingeschakeld. Jouw reguliere berichten worden alleen ontvangen door jouw teamgenoten. +team.chat.disable = Team chat uitgeschakeld. +use.anvil = Je kan geen aambeelden gebruiken in dit oorlogsgebied! +use.enchant = Je kan geen betovering tafels gebruiken in dit oorlogsgebied! +use.ender = Je kan geen ender kisten gebruiken tijdens het spelen in een oorlogsgebied! +use.item.spawn = Je kan geen items gebruiken wanneer je in de spawn bent. +use.xpkillmeter = Dit is vanwege de xpkillmeter optie die is uitgeschakeld. +wand.toofar = Het doelwit blok is te ver weg. +war.notadmin = Je kan dit niet doen als je geen War admin bent (permissie war.admin). +war.notzm = Je kan dit niet doen als je geen warzone maker bent (permissie war.zonemaker). +war.prefix = War> +war.title = War +warhub.none = Geen warhub op deze War server. Probeer /zones en /zone. +warhub.permission = Je hebt geen toegang om naar de War hub te teleporteren. +warhub.teleport = Welkom bij de War hub. Kies jouw gevecht. +zone.airstrike = {0} heeft een luchtaanval opgeroepen! +zone.battle.end = Het gevecht is over. Team {0} heeft verloren: {1} gingen dood en er waren geen levens over in hun levenspot. +zone.battle.newscores = Nieuwe scores - {0} +zone.battle.next = Het gevecht was onderbroken. Warzone {0} resetten... +zone.battle.reset = Een nieuw gevecht zal snel beginnen. Warzone resetten... +zone.battle.resetprogress = Reset vooruitgang: {0}%, {1} seconden... +zone.battle.resetcomplete = Reset oorlogsgebied in {0} seconden. Een nieuw gevecht begint. +zone.bomb.broadcast = {0} blies team {1}''s spawn op. Team {2} scoort \u00e9\u00e9n punt. +zone.cake.broadcast = {0} veroverde taart {1}. Team {2} scoort \u00e9\u00e9n punt en krijg een volle levenspot. +zone.flagcapture.broadcast = {0} veroverde team {1}''s vlag. Team {2} scoort \u00e9\u00e9n punt. +zone.flagreturn.deadlock = Je kan de tegenstander's flag niet veroveren totdat jouw team's vlag is teruggekeerd. +zone.flagreturn.flag = Je moet de tegenstander's vlag veroveren bij jouw team's vlag. +zone.flagreturn.spawn = Je moet de tegenstander's vlag veroveren bij jouw team's spawn. +zone.leavenotice = Gebruik /war leave om de zone te verlaten. +zone.lifepool.empty = Team {0}''s levenspot is leeg. Nog \u00e9\u00e9n keer dood gaan en ze verliezen het gevecht. +zone.loadout.equip = Voorzien van loadout {0} (sluipen om over te schakelen). +zone.loadout.reenter = Kan loadout niet omwisselen na het verlaten van de spawn. +zone.monument.badblock = Je moet een monument veroveren met een blok van jouw team's wol kleur. Haal een van jouw team spawn. +zone.monument.capture = Monument {0} is veroverd door team {1}. +zone.monument.lose = Team {0} verloor controle over monument {1}. +zone.monument.voodoo = Jouw dans bevalt het monument''s voodoo. Je krijgt {0} hart(en)! +zone.noteamnotice = Je kan niet in een oorlogsgebied zijn zonder een team. +zone.score.board404 = Dit oorlogsgebied heeft scorebord niet ingeschakeld. +zone.score.empty = Je kan niet scoren totdat tenminste \u00e9\u00e9n speler zich bij het andere team heeft aangesloten. +zone.spawn.minplayers = Je kan de spawn niet verlaten totdat er een minimum van {0} speler(s) op tenminste {1} team(s) zijn. +zone.spawn.timer = Je kan de spawn niet verlaten voor {0} seconde(n) na respawnen. +zone.steal.bomb.broadcast = {0} heeft bom {1}. +zone.steal.bomb.notice = Je hebt bom {0}. Bereik het andere team's spawn om te scoren. Wordt niet aangeraakt door anderen, anders blaas je op! +zone.steal.bomb.prevent = Voorkom {0} van het bereiken van jouw spawn met de bom. +zone.steal.cake.broadcast = {0} heeft taart {1}. +zone.steal.cake.notice = Je hebt taart {0}. Bereik jouw team's spawn om te scoren en je team's levenspot te hervullen. +zone.steal.cake.prevent = Voorkom {0} van het bereiken van hun spawn met de taart! +zone.steal.flag.broadcast = {0} stal team {1}''s vlag. +zone.steal.flag.empty = Je kan team {0}''s vlag niet stelen sinds er geen spelers zijn in dat team. +zone.steal.flag.notice = Je hebt team {0}''s flag. Bereik jouw team's spawn of flag om hem te veroveren. +zone.steal.flag.prevent = Voorkom {0} van het bereiken van team {1}''s spawn of flag. +zone.stealextra.bomb = Je kan maar \u00e9\u00e9n bom tegelijk stelen! +zone.stealextra.cake = Je kan maar \u00e9\u00e9n taart tegelijk stelen! +zone.stealextra.flag = Je kan maar \u00e9\u00e9n vlag tegelijk stelen! +zone.stealextra.other = Je kan maar \u00e9\u00e9n ding tegelijk stelen! +zone.teaminfo.format = {0}: {1} punten. {2}/{3} levens over. {4} +zone.teaminfo.none = geen +zone.teaminfo.prefix = Teams: +zone.teleport = Welkom bij oorlogsgebied {0}. +zone.warp.permission = Je hebt geen toegang om te teleporteren naar het oorlogsgebied. +zone.zone404 = Het oorlogsgebied kon niet gevonden worden. +zone.zoneinfo.format = {0}: {1} teams, {2} spelers. +zone.zoneinfo.prefix = Oorlogsgebieden: +zone.zoneinfo.teleport = Gebruik /zone om te teleporteren naar een oorlogsgebied. \ No newline at end of file diff --git a/war/src/main/resources/messages_no.properties b/war/src/main/resources/messages_no.properties index 8fc88ee..b6e9bc6 100644 --- a/war/src/main/resources/messages_no.properties +++ b/war/src/main/resources/messages_no.properties @@ -6,17 +6,17 @@ build.denied.zone.break = Blokkene i denne krigssonen er uknuselige! build.denied.zone.multteam = Du har allerede en {0}-blokk build.denied.zone.outside = Du kan ikke \u00f8delegge en krigssone du ikke spiller i build.denied.zone.place = Du kan ikke sette ut blokker i denne krigssonen -build.denied.zone.type = Du kan ikke endre slike blokker +build.denied.zone.type = Du kan ikke endre denne type blokker command.console = Du m\u00e5 v\u00e6re i et spill for \u00e5 gj\u00f8re det command.disabled = Du kan bare bruke War-kommandoer (som /leave) n\u00e5r du spiller drop.bomb.broadcast = {0} mistet {1}-bomben! -drop.bomb.disabled = Du kan ikke droppe ting mens du stjeler bomber. Hva gj\u00f8r du?! L\u00f8p til fiendens spawn! +drop.bomb.disabled = Du kan ikke droppe ting mens du stjeler bomber. Hva gj\u00f8r du?! L\u00f8p til fiendens spaw!n drop.cake.broadcast = {0} mistet {1}-kaken -drop.cake.disabled = Du kan ikke droppe ting mens du stjeler kaker. Hva gj\u00f8r du?! L\u00f8p til fiendens spawn! +drop.cake.disabled = Du kan ikke droppe ting mens du stjeler kaker. Hva gj\u00f8r du?! L\u00f8p! drop.flag.broadcast = {0} mistet {1}-flagget -drop.flag.disabled = Du kan ikke droppe ting mens du stjeler flagget. Hva gj\u00f8r du?! L\u00f8p!! +drop.flag.disabled = Du kan ikke droppe ting mens du stjeler flagget. Hva gj\u00f8r du?! L\u00f8p! drop.item.border = Du kan ikke droppe ting s\u00e5 n\u00e6r sone-grensen -drop.item.disabled = Du kan ikke droppe ting i denne sonen +drop.item.disabled = Du kan ikke droppe ting i denne krigssonen drop.item.spawn = Du kan ikke droppe ting i spawn drop.team = Du kan ikke droppe {0} blokker drop.wand = Du droppet wand til sone {0} @@ -126,4 +126,4 @@ zone.warp.permission = Du har ikke lov til \u00e5 teleportere til sonen zone.zone404 = Fant ikke krigssonen zone.zoneinfo.format = {0}: {1} lag, {2} spillere zone.zoneinfo.prefix = Krigssoner: -zone.zoneinfo.teleport = Bruk /zone for \u00e5 teleportere til en sone \ No newline at end of file +zone.zoneinfo.teleport = Bruk /zone for \u00e5 teleportere til en sone diff --git a/war/src/main/resources/messages_pl.properties b/war/src/main/resources/messages_pl.properties index 1a992e4..52c438a 100644 --- a/war/src/main/resources/messages_pl.properties +++ b/war/src/main/resources/messages_pl.properties @@ -9,6 +9,10 @@ build.denied.zone.place = Nie mo\u017cesz k\u0142a\u015b\u0107 blok\u00f3w na te build.denied.zone.type = Nie mo\u017cesz modyfikowa\u0107 tego typu blok\u00f3w. command.console = Nie mo\u017cesz tego robi\u0107, je\u015bli nie jeste\u015b w grze. command.disabled = Mo\u017cesz u\u017cy\u0107 tylko komend z War (np. /leave) podczas gry. +command.tp.init = Poczekaj {0} sekund na teleportacj\u0119. Ruch b\u0105d\u017a obra\u017cenia zatrzymaj\u0105 odliczanie. +command.tp.moved = Teleportacja zatrzymana z powodu ruchu. +command.tp.damaged = Teleportacja zatrzymana z powodu obra\u017ce\u0144. +command.tp.success = Zosta\u0142e\u015b teleportowany. Dzi\u0119kujemy za cierpliwo\u015b\u0107. drop.bomb.broadcast = {0} pod\u0142o\u017cy\u0142 {1} bomb\u0119! drop.bomb.disabled = Nie mo\u017cesz wyrzuca\u0107 przedmiot\u00f3w gdy ukrad\u0142e\u015b bomb\u0119. Co ty robisz?!Biegnij do wrogiej bazy! drop.cake.broadcast = {0} Upu\u015bci\u0142 {1} ciasto! @@ -71,7 +75,7 @@ use.ender = Nie mo\u017cesz korzysta\u0107 ze skrzyni kresu podczas gry na areni use.item.spawn = Nie mo\u017cesz korzysta\u0107 z przedmiot\u00f3w gdy jeste\u015b na spawn. use.xpkillmeter = Jest to spowodowane w\u0142\u0105czon\u0105 opcj\u0105 "XPKillMeter". wand.toofar = Blok na kt\u00f3ry celujesz jest za daleko. -war.notadmin = Nie mo\u017cesz tego robi\u0107 je\u015bli nie jeste\u015b War admin'em ( permission war.admin). +war.notadmin = Nie mo\u017cesz tego robi\u0107 je\u015bli nie jeste\u015b War admin''em ( permission war.admin). war.notzm = Nie mo\u017cesz tego robi\u0107 je\u015bli nie jeste\u015b tw\u00f3rc\u0105 aren (permission war.zonemaker). war.prefix = War> war.title = War @@ -95,7 +99,7 @@ zone.leavenotice = Wpisz /war leave aby opu\u015bci\u0107 aren\u0119. zone.lifepool.empty = Dru\u017cyna {0} nie posiada wi\u0119cej \u017cy\u0107.Jedna \u015bmier\u0107 wi\u0119cej i przegraj\u0105 oni bitw\u0119! zone.loadout.equip = Wyposa\u017cenie {0} za\u0142adowane (kucnij aby zmieni\u0107) zone.loadout.reenter = Nie mo\u017cesz zmieni\u0107 wyposa\u017cenia po opuszczeniu spawn. -zone.monument.badblock = Musisz przej\u0105\u0107 pomnik blokiem we\u0142ny koloru twojej dru\u017cyny.\nMo\u017cesz go zdoby\u0107 ze spawn'u swojej dru\u017cyny. +zone.monument.badblock = Musisz przej\u0105\u0107 pomnik blokiem we\u0142ny koloru twojej dru\u017cyny.\nMo\u017cesz go zdoby\u0107 ze spawn''u swojej dru\u017cyny. zone.monument.capture = Pomnik {0} zosta\u0142 przej\u0119ty przez dru\u017cyn\u0119 {1}. zone.monument.lose = Dru\u017cyna {0} straci\u0142a kontrol\u0119 nad pomnikiem {1}. zone.monument.voodoo = Tw\u00f3j taniec zadowoli\u0142 pomnik boga voodoo. Zdobywasz {0} serduszko/a \u017cycia. @@ -126,4 +130,4 @@ zone.warp.permission = Nie masz uprawnie\u0144 do teleportacji do areny. zone.zone404 = Nie mo\u017cna znale\u017a\u0107 areny. zone.zoneinfo.format = {0}:{1} zespo\u0142\u00f3w, {2} graczy zone.zoneinfo.prefix = Areny: -zone.zoneinfo.teleport = U\u017cyj /zone aby teleportowa\u0107 si\u0119 do areny. \ No newline at end of file +zone.zoneinfo.teleport = U\u017cyj /zone aby teleportowa\u0107 si\u0119 do areny. diff --git a/war/src/main/resources/messages_pt_BR.properties b/war/src/main/resources/messages_pt_BR.properties index d338769..deffdf2 100644 --- a/war/src/main/resources/messages_pt_BR.properties +++ b/war/src/main/resources/messages_pt_BR.properties @@ -1,23 +1,40 @@ # Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) build.denied.location = Voc\u00ea n\u00e3o pode construir aqui. -build.denied.outside = Voc\u00ea s\u00f3 pode construir nos campos de batalha. +build.denied.outside = Voc\u00ea s\u00f3 pode construir nas partidas. build.denied.teamblock = Voc\u00ea s\u00f3 pode usar blocos do seu time para capturar monumentos. build.denied.zone.break = Os blocos nessa \u00e1rea s\u00e3o indestrut\u00edveis. +build.denied.zone.multteam = Voc\u00ea j\u00e1 tem um {0}. build.denied.zone.outside = Voc\u00ea n\u00e3o pode destruir numa partida que voc\u00ea n\u00e3o est\u00e1 jogando. build.denied.zone.place = Voc\u00ea n\u00e3o pode construir aqui. build.denied.zone.type = Voc\u00ea n\u00e3o pode modificar este tipo de bloco. command.console = Voc\u00ea n\u00e3o pode fazer isto enquanto n\u00e3o estiver na partida. command.disabled = Voc\u00ea s\u00f3 pode usar comandos espec\u00edficos (ex: /leave) enquanto joga. +command.tp.init = Por favor aguarde {0} segundos para teleportar. Qualquer movimento cancelar\u00e1 o teleporte. +command.tp.moved = Teleporte cancelado por movimento. +command.tp.damaged = Teleporte cancelado por receber dano. +command.tp.success = Voc\u00ea foi teleportado. drop.bomb.broadcast = {0} derrubou a bomba {1}! +drop.bomb.disabled = Voc\u00ea n\u00e3o pode dropar itens enquanto tiver a bomba. O que voc\u00ea est\u00e1 fazendo? Corra para a base inimiga! drop.cake.broadcast = {0} derrubou o bolo {1}! +drop.cake.disabled = Voc\u00ea n\u00e3o pode dropar itens enquanto tiver o bolo. O que voc\u00ea est\u00e1 fazendo? Corra! drop.flag.broadcast = {0} derrubou a bandeira de {1}! -drop.item.disabled = Voc\u00ea n\u00e3o pode dropar itens nesta zona. +drop.flag.disabled = Voc\u00ea n\u00e3o pode dropar itens enquanto tiver a bandeira. O que voc\u00ea est\u00e1 fazendo? Corra! +drop.item.border = Voc\u00ea n\u00e3o pode dropar itens para fora da partida. +drop.item.disabled = Voc\u00ea n\u00e3o pode dropar itens nesta partida. +drop.item.spawn = Voc\u00ea n\u00e3o pode dropar itens enquanto estiver na base. +drop.team = Voc\u00ea n\u00e3o pode dropar {0}. +drop.wand = Voc\u00ea dropou a varinha da zona {0}. +join.aarequired = Esta partida requer que voc\u00ea seja automaticamente atribu\u00eddo a uma equipe. Por favor entre no portal. join.broadcast = {0} entrou no time {1}. -join.disabled = Este campo de batalha est\u00e1 desativado. +join.disabled = Esta partida est\u00e1 desativada. join.full.all = Todos os times est\u00e3o lotados. join.full.single = Time {0} lotado. -join.permission.single = Voc\u00ea n\u00e3o tem permiss\u00f5es para se ingressar no time {0}. +join.inventorystored = Seu invent\u00e1rio ser\u00e1 guardado at\u00e9 que voc\u00ea saia com /war leave. +join.permission.all = Voc\u00ea n\u00e3o tem permiss\u00e3o para entrar em algum time dispon\u00edvel nesta partida. +join.permission.single = Voc\u00ea n\u00e3o tem permiss\u00f5es para ingressar no time {0}. +join.progress = Voc\u00ea n\u00e3o pode entrar em uma partida em progresso nesta zona. join.selfteam = Voc\u00ea n\u00e3o pode entrar no seu pr\u00f3prio time. +join.team404 = Time n\u00e3o encontrado. Digite /team para ver a lista. leave.broadcast = {0} saiu da partida. leave.inventoryrestore = Invent\u00e1rio restaurado. pvp.death.drown = {0} afogou-se. @@ -25,7 +42,11 @@ pvp.death.explosion = {0} explodiu. pvp.death.fall = {0} caiu e morreu. pvp.death.fire = {0} morreu queimado. pvp.death.other = {0} morreu. +pvp.ff.disabled = Voc\u00ea errou o ataque por tentar atacar um aliado! +pvp.ff.enabled = Fogo amigo ativado! Por favor, n\u00e3o prejudique sua equipe. +pvp.kill.adjectives = ;;poderoso,mortal;excelente;preciso;brutal;poderoso pvp.kill.bomb = {0} fez {1} explodir! +pvp.kill.format = {0} usou {1} para {2} {3} {4} pvp.kill.self = {0} cometeu suic\u00eddio. pvp.kill.verbs = matou;matou;matou;aniquilou;assassinou;eliminou;exterminou pvp.kill.weapon.aim = mira @@ -34,9 +55,79 @@ pvp.kill.weapon.hand = m\u00e3o pvp.outside.permission = Voc\u00ea n\u00e3o pode atacar jogadores que est\u00e3o fora da partida. pvp.self.notplaying = Voc\u00ea precisa estar na partida para atacar. pvp.self.respawn = Voc\u00ea n\u00e3o pode atacar enquanto renasce! +pvp.self.spawn = Voc\u00ea n\u00e3o pode atacar na base! +pvp.target.notplaying = Seu alvo n\u00e3o est\u00e1 na partida. +pvp.target.otherzone = Seu alvo est\u00e1 em outra partida. +pvp.target.respawn = Seu alvo est\u00e1 renascendo! +pvp.target.spawn = Seu alvo est\u00e1 na base! +sign.lobby.autoassign = Partida\n{0}\nEntre no\nportal. sign.lobby.pick = Partida\n{0}\n\nEscolha seu time. -sign.team.limited = Time {0}\n{1}/{2} jogadores\n{3}/{4} pontos\n{5} mortes restantes -sign.team.unlimited = Time {0}\n{1}/{2} jogadores\n{3}/{4} pontos\nvidas ilimitadas -use.anvil = Voc\u00ea n\u00e3o pode usar bigornas nesta zona! -use.enchant = Voc\u00ea n\u00e3o pode usar mesas de encantamento nesta zona! +sign.lobby.warhub = \nPara o salao \nde portais.\n +sign.team.limited = Time {0}\n{1}/{2} jogadores\n{3}/{4} pontos\n{5} vidas +sign.team.unlimited = Time {0}\n{1}/{2} jogadores\n{3}/{4} pontos\nvidas infinitas +sign.warhub = Saguao\n(/warhub)\nEscolha sua\npartida! +sign.warzone = Partida\n{0}\n{1}/{2} jogadores\n{3} times +team.chat.enable = Chat do time ligado. Agora voc\u00ea s\u00f3 receber\u00e1 mensagens do seu time. +team.chat.disable = Chat do time desligado. +use.anvil = Voc\u00ea n\u00e3o pode usar bigornas nesta partida! +use.enchant = Voc\u00ea n\u00e3o pode usar mesas de encantamento nesta partida! use.ender = Voc\u00ea n\u00e3o pode usar ba\u00fas do fim enquanto joga na partida! +use.item.spawn = Voc\u00ea nao pode usar itens na base. +use.xpkillmeter = Isto \u00e9 devido \u00e0 op\u00e7\u00e3o xpkillmeter sendo ativado. +wand.toofar = Seu destino \u00e9 muito longe! +war.notadmin = Voc\u00ea n\u00e3o \u00e9 um administrador para poder fazer isto. +war.notzm = Voc\u00ea n\u00e3o pode fazer isto se voc\u00ea n\u00e3o \u00e9 um criador de partidas. +war.prefix = War> +war.title = War +warhub.none = N\u00e3o h\u00e1 sagu\u00f5es neste servidor. Tente /zones e /zone. +warhub.permission = Voc\u00ea n\u00e3o tem permiss\u00f5es para ir ao sagu\u00e3o. +warhub.teleport = Bem-vindo ao sagu\u00e3o de batalhas. Escolha sua partida! +zone.airstrike = {0} iniciou um ataque a\u00e9reo! +zone.battle.end = A partida terminou. O time {0} perdeu: {1} morreu e n\u00e3o restaram mais vidas sobrando. +zone.battle.newscores = Nova pontua\u00e7\u00e3o - {0} +zone.battle.next = Partida interrompida. Reiniciando campo {0}... +zone.battle.reset = Uma nova batalha come\u00e7ar\u00e1 em breve. Reiniciando partida... +zone.battle.resetprogress = Progresso da reinicializa\u00e7\u00e3o: {0}%, {1} segundos... +zone.battle.resetcomplete = A partida reinicia em {0} segundos. Uma nova batalha come\u00e7ar\u00e1. +zone.bomb.broadcast = {0} explodiu a base de {1}. O time {2} ganhou um ponto. +zone.cake.broadcast = {0} capturou o bolo {1}. O time {2} ganhou um ponto e restauraram suas vidas por completo. +zone.flagcapture.broadcast = {0} capturou a bandeira {1}. O time {2} ganhou um ponto. +zone.flagreturn.deadlock = Voc\u00ea n\u00e3o pode capturar a bandeira inimiga enquanto a sua n\u00e3o estiver segura. +zone.flagreturn.flag = Voc\u00ea deve levar a bandeira inimiga at\u00e9 a sua bandeira. +zone.flagreturn.spawn = Voc\u00ea deve levar a bandeira inimiga at\u00e9 sua base. +zone.leavenotice = Use /war para sair da partida. +zone.lifepool.empty = O time {0} est\u00e1 sem vida. Mais uma morte e eles perdem! +zone.loadout.equip = Equipou {0} (shift para trocar). +zone.loadout.reenter = N\u00e3o pode trocar depois de sair da base. +zone.monument.badblock = Voc\u00ea deve capturar um monumento com um bloco de l\u00e3 da cor da sua equipe. Consiga uma na sua base. +zone.monument.capture = Monumento {0} capturado pelo time {1}. +zone.monument.lose = O time {0} perdeu o controle do monumento {1}. +zone.monument.voodoo = Sua dan\u00e7a agradou o monumento. Voc\u00ea restaurou {0} de vida! +zone.noteamnotice = Voc\u00ea n\u00e3o pode entrar no campo de batalha sem uma equipe. +zone.score.board404 = Esta partida n\u00e3o tem scoreboard. +zone.score.empty = Voc\u00ea n\u00e3o pode pontuar enquanto outro jogador entrar em outro time. +zone.spawn.minplayers = Voc\u00ea n\u00e3o pode sair da base enquanto n\u00e3o haja pelo menos um m\u00ednimo de {0} jogador(es) em pelo menos {1} time(s). +zone.spawn.timer = Voc\u00ea n\u00e3o pode sair da base por {0} segundos depois de renascer. +zone.steal.bomb.broadcast = {0} pegou a bomba {1}. +zone.steal.bomb.notice = Voc\u00ea pegou a bomba {0}. V\u00e1 para a base inimiga para pontuar. N\u00e3o toque em ningu\u00e9m ou voc\u00ea explodir\u00e1! +zone.steal.bomb.prevent = Impe\u00e7a {0} de explodir sua base! +zone.steal.cake.broadcast = {0} pegou o bolo {1}. +zone.steal.cake.notice = Voc\u00ea tem o bolo {0}. V\u00e1 para sua base para pontuar e restauras sua vida. +zone.steal.cake.prevent = Impe\u00e7a {0} de chegar na base com o bolo! +zone.steal.flag.broadcast = {0} roubou a bandeira do time {1}. +zone.steal.flag.empty = Voc\u00ea n\u00e3o pode roubar a bandeira do time {0} se n\u00e3o h\u00e1 ningu\u00e9m nele. +zone.steal.flag.notice = Voc\u00ea pegou a bandeira do time {0}. V\u00e1 para sua base ou para a bandeira e a capture! +zone.steal.flag.prevent = Impe\u00e7a {0} de capturar a bandeira do time {1}! +zone.stealextra.bomb = Voc\u00ea s\u00f3 pode roubar uma bomba de cada vez! +zone.stealextra.cake = Voc\u00ea s\u00f3 pode roubar um bolo de cada vez! +zone.stealextra.flag = Voc\u00ea s\u00f3 pode roubar uma bandeira de cada vez! +zone.stealextra.other = Voc\u00ea s\u00f3 pode roubar uma coisa de cada vez! +zone.teaminfo.format = {0}: {1} pontos, {2}/{3} vidas restantes. {4} +zone.teaminfo.none = nada +zone.teaminfo.prefix = Times: +zone.teleport = Bem-vindo \u00e0 partida {0}. +zone.warp.permission = Voc\u00ea n\u00e3o tem permiss\u00f5es para se teleportar para a partida. +zone.zone404 = Partida n\u00e3o encontrada. +zone.zoneinfo.format = {0}: {1} times, {2} jogadores. +zone.zoneinfo.prefix = Partidas: +zone.zoneinfo.teleport = Use /zone para teleportar para uma partida. \ No newline at end of file diff --git a/war/src/main/resources/messages_ru.properties b/war/src/main/resources/messages_ru.properties index 69383a2..6d2caa6 100644 --- a/war/src/main/resources/messages_ru.properties +++ b/war/src/main/resources/messages_ru.properties @@ -7,8 +7,12 @@ build.denied.zone.multteam = \u0423 \u0412\u0430\u0441 \u0443\u0436\u0435 \u0435 build.denied.zone.outside = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u043e\u043c\u0430\u0442\u044c \u0430\u0440\u0435\u043d\u0443, \u0435\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0438\u0433\u0440\u0430\u0435\u0442\u0435 \u043d\u0430 \u043d\u0435\u0439. build.denied.zone.place = \u041d\u0430 \u044d\u0442\u043e\u0439 \u0430\u0440\u0435\u043d\u0435 \u0431\u043b\u043e\u043a\u0438 \u043d\u0435\u0440\u0430\u0437\u0440\u0443\u0448\u0438\u043c\u044b - \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u043e\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f! build.denied.zone.type = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u0431\u043b\u043e\u043a\u0430 -command.console = \u0412\u0432\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0438\u0433\u0440\u044b. -command.disabled = \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e /leave, \u043a\u043e\u0433\u0434\u0430 \u0438\u0433\u0440\u0430\u0435\u0442\u0435. +command.console = \u0412\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432 \u0438\u0433\u0440\u0435. +command.disabled = \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b War (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 /leave), \u043a\u043e\u0433\u0434\u0430 \u0438\u0433\u0440\u0430\u0435\u0442\u0435. +command.tp.init = \u041f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435 {0} \u0441\u0435\u043a. \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0430\u0446\u0438\u0438. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u043d\u0435 \u0434\u0432\u0438\u0433\u0430\u0439\u0442\u0435\u0441\u044c +command.tp.moved = \u0422\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u0430: \u0412\u044b \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043c\u0435\u0441\u0442\u0430 +command.tp.damaged = \u0422\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u0430: \u0412\u0430\u0441 \u0440\u0430\u043d\u0438\u043b\u0438 +command.tp.success = \u0412\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c drop.bomb.broadcast = {0} \u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0431\u043e\u043c\u0431\u0443 "{1}"! drop.bomb.disabled = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0449\u0438, \u043f\u043e\u043a\u0430 \u043d\u0435\u0441\u0435\u0442\u0435 \u0431\u043e\u043c\u0431\u0443. \u0411\u0435\u0433\u0438\u0442\u0435 \u043a \u0432\u0440\u0430\u0436\u0435\u0441\u043a\u043e\u0439 \u0431\u0430\u0437\u0435! drop.cake.broadcast = {0} \u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0442\u043e\u0440\u0442 "{1}"! @@ -19,7 +23,7 @@ drop.item.border = \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e \u0432 drop.item.disabled = \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0449\u0438 \u043d\u0430 \u0430\u0440\u0435\u043d\u0435. drop.item.spawn = \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0449\u0438 \u043d\u0430 \u0441\u043f\u0430\u0443\u043d\u0435. drop.team = \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c {0} \u0431\u043b\u043e\u043a\u0438. -drop.wand = \u0412\u044b \u0432\u044b\u043a\u0438\u043d\u0443\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u043b\u043a\u0443 \u0430\u0440\u0435\u043d\u044b {0}. +drop.wand = \u0412\u044b \u0432\u044b\u043a\u0438\u043d\u0443\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u0440\u0435\u043d\u044b {0}. join.aarequired = \u042d\u0442\u0430 \u0430\u0440\u0435\u043d\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0430\u0432\u0442\u043e-\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c! join.broadcast = {0} \u0437\u0430\u0448\u0435\u043b \u0437\u0430 {1}. join.disabled = \u042d\u0442\u0430 \u0430\u0440\u0435\u043d\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430. @@ -30,7 +34,7 @@ join.permission.all = \u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\ join.permission.single = \u0423 \u0412\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u0437\u0430\u0439\u0442\u0438 \u0437\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 {0}. join.progress = \u0411\u043e\u0439 \u0443\u0436\u0435 \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0430\u0440\u0435\u043d\u0435!\u0414\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u0435\u0433\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f. join.selfteam = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0439\u0442\u0438 \u0437\u0430 \u0441\u0432\u043e\u044e-\u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443. -join.team404 = \u0422\u0430\u043a\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430. \u0412\u0441\u0435 \u0434\u043e\u0443\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b - /teams +join.team404 = \u0422\u0430\u043a\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430. \u041d\u0430\u0431\u0435\u0440\u0438\u0442\u0435 /teams \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434. leave.broadcast = {0} \u0432\u044b\u0448\u0435\u043b \u0441 \u0431\u043e\u044f. leave.inventoryrestore = \u0412\u0430\u0448 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d. pvp.death.drown = {0} \u0443\u0442\u043e\u043d\u0443\u043b @@ -40,7 +44,7 @@ pvp.death.fire = {0} \u0441\u0433\u043e\u0440\u0435\u043b pvp.death.other = {0} \u0443\u043c\u0435\u0440 pvp.ff.disabled = \u042d\u0442\u043e\u0442 \u0438\u0433\u0440\u043e\u043a \u0437\u0430 \u0412\u0430\u0441. pvp.ff.enabled = \u041e\u0433\u043e\u043d\u044c \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d. \u0411\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b! -pvp.kill.adjectives = ;;;;;;; +pvp.kill.adjectives = ;;\u043c\u043e\u0449\u043d\u043e;\u0441\u043c\u0435\u0440\u0442\u0435\u043b\u044c\u043d\u043e;\u0438\u0437\u044f\u0449\u043d\u043e;\u0442\u043e\u0447\u043d\u043e;\u0436\u0435\u0441\u0442\u043e\u043a\u043e;\u043c\u043e\u0433\u0443\u0447\u0435 pvp.kill.bomb = {0} \u043f\u043e\u0434\u043e\u0440\u0432\u0430\u043b {1}! pvp.kill.format = {0} {1} {2} {3} {4} pvp.kill.self = {0} \u0443\u0431\u0438\u043b \u0441\u0430\u043c \u0441\u0435\u0431\u044f @@ -50,7 +54,7 @@ pvp.kill.weapon.bow = \u043b\u0443\u043a\u043e\u043c pvp.kill.weapon.hand = \u0440\u0443\u043a\u043e\u0439 pvp.outside.permission = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u0442\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0437\u0430 \u0430\u0440\u0435\u043d\u043e\u0439. pvp.self.notplaying = \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0430\u0440\u0435\u043d\u0435 \u0447\u0442\u043e\u0431\u044b \u0430\u0442\u0430\u043a\u043e\u0432\u0430\u0442\u044c! -pvp.self.respawn = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u0442\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u043f\u0430\u0443\u043d\u044f\u0441\u044c! +pvp.self.respawn = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u0442\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0441\u043f\u0430\u0443\u043d\u0430! pvp.self.spawn = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u0442\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u044f \u043d\u0430 \u0441\u043f\u0430\u0443\u043d\u0435! pvp.target.notplaying = \u042d\u0442\u043e\u0442 \u0438\u0433\u0440\u043e\u043a \u043d\u0435 \u0438\u0433\u0440\u0430\u0435\u0442 \u043d\u0430 \u0430\u0440\u0435\u043d\u0435! pvp.target.otherzone = \u042d\u0442\u043e\u0442 \u0438\u0433\u0440\u043e\u043a \u0438\u0433\u0440\u0430\u0435\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u0440\u0435\u043d\u0435! @@ -58,7 +62,7 @@ pvp.target.respawn = \u042d\u0442\u043e\u0442 \u0438\u0433\u0440\u043e\u043a \u0 pvp.target.spawn = \u042d\u0442\u043e\u0442 \u0438\u0433\u0440\u043e\u043a \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u0441\u043f\u0430\u0443\u043d\u0435! sign.lobby.autoassign = \u0410\u0440\u0435\u043d\u0430\n{0}\n\u0412\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0430\u0432\u0442\u043e-\n\u043f\u043e\u0440\u0442\u0430\u043b. sign.lobby.pick = \u0410\u0440\u0435\u043d\u0430\n{0}\n\n\u0412\u044b\u0431\u0435\u0440\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443. -sign.lobby.warhub = \n\u041d\u0430 \u0425\u0430\u0431\n\u0430\u0440\u0435\u043d\n +sign.lobby.warhub = \n\u041d\u0430 \u0425\u0430\u0431 \u0430\u0440\u0435\u043d\n\n sign.team.limited = \u041a\u043e\u043c\u0430\u043d\u0434\u0430 {0}\n{1}/{2} \u0438\u0433\u0440\u043e\u043a\u043e\u0432\n{3}/{4} \u043e\u0447\u043a\u043e\u0432\n{5} \u0436\u0438\u0437\u043d\u0435\u0439 sign.team.unlimited = \u041a\u043e\u043c\u0430\u043d\u0434\u0430 {0}\n{1}/{2} \u0438\u0433\u0440\u043e\u043a\u043e\u0432\n{3}/{4} \u043e\u0447\u043a\u043e\u0432\n\u0431\u0435\u0441\u043a.\u0436\u0438\u0437\u043d\u0435\u0439 sign.warhub = \u0425\u0430\u0431 \u0430\u0440\u0435\u043d\n(/warhub)\n\u0412\u044b\u0431\u0435\u0440\u0438\n\u0430\u0440\u0435\u043d\u0443! @@ -77,13 +81,13 @@ war.prefix = War> war.title = War warhub.none = \u0425\u0430\u0431 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 /zones \u0438 /zone. warhub.permission = \u0423 \u0412\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0430 \u043d\u0430 \u0425\u0430\u0431. -warhub.teleport = \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0425\u0430\u0431!\u0412\u044b\u0431\u0435\u0440\u0438 \u0430\u0440\u0435\u043d\u0443! +warhub.teleport = \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0425\u0430\u0431! \u0412\u044b\u0431\u0435\u0440\u0438 \u0430\u0440\u0435\u043d\u0443! zone.airstrike = {0} called in an airstrike! -zone.battle.end = \u0411\u043e\u0439 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 {0} \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043b\u0430: {1} \u0443\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0430\u0441 \u0436\u0438\u0437\u043d\u0435\u0439 \u0438\u0441\u0441\u044f\u043a. +zone.battle.end = \u0411\u043e\u0439 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 {0} \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043b\u0430: {1} \u0443\u043c\u0435\u0440, \u0438 \u0438\u0445 \u0436\u0438\u0437\u043d\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c. zone.battle.newscores = \u0421\u0447\u0435\u0442 - {0} zone.battle.next = \u0411\u043e\u0439 \u0431\u044b\u043b \u043f\u0440\u0435\u0440\u0432\u0430\u043d. \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0430\u0440\u0435\u043d\u044b {0}... zone.battle.reset = \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0431\u043e\u0439. \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0430\u0440\u0435\u043d\u044b... -zone.battle.resetprogress = \u0421\u0431\u0440\u043e\u0441 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430: {0}%, {1} \u0441\u0435\u043a. +zone.battle.resetprogress = \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438: {0}%, {1} \u0441\u0435\u043a. zone.battle.resetcomplete = \u0410\u0440\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 {0} \u0441\u0435\u043a. \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0431\u043e\u0439... zone.bomb.broadcast = {0} \u043f\u043e\u0434\u043e\u0440\u0432\u0430\u043b \u0441\u043f\u0430\u0443\u043d {1}. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 {2} \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 1 \u043e\u0447\u043a\u043e. zone.cake.broadcast = {0} \u043f\u0440\u0438\u043d\u0435\u0441 \u0442\u043e\u0440\u0442 "{1}". \u041a\u043e\u043c\u0430\u043d\u0434\u0430 {2} \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 1 \u043e\u0447\u043a\u043e \u0438 \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0436\u0438\u0437\u043d\u0435\u0439. @@ -100,12 +104,12 @@ zone.monument.capture = \u041c\u043e\u043d\u0443\u043c\u0435\u043d\u0442 "{0}" \ zone.monument.lose = \u041a\u043e\u043c\u0430\u043d\u0434\u0430 {0} \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043c\u043e\u043d\u0443\u043c\u0435\u043d\u0442\u043e\u043c "{1}" zone.monument.voodoo = \u0412\u0430\u0448 \u0442\u0430\u043d\u0435\u0446 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u043c\u043e\u043d\u0443\u043c\u0435\u043d\u0442\u0443. \u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 {0} \u0441\u0435\u0440\u0434\u0435\u0447\u0435\u043a! zone.noteamnotice = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0442\u044c \u043d\u0430 \u0430\u0440\u0435\u043d\u0435 \u0431\u0435\u0437 \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. -zone.score.board404 = \u042d\u0442\u0430 \u0430\u0440\u0435\u043d\u0430 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0430 \u0434\u043e\u0441\u043a\u0443 \u0441\u043e \u0441\u0447\u0435\u0442\u043e\u043c. -zone.score.empty = \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0447\u0435\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435. -zone.spawn.minplayers = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043a\u0438\u0434\u0430\u0442\u044c \u0441\u043f\u0430\u0443\u043d \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0443\u043c {0} \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0432 {1} \u043a\u043e\u043c\u0430\u043d\u0434\u0435. +zone.score.board404 = \u041d\u0430 \u044d\u0442\u043e\u0439 \u0430\u0440\u0435\u043d\u0435 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e\u043a\u0430\u0437 \u043e\u0447\u043a\u043e\u0432. +zone.score.empty = \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0447\u0435\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435. +zone.spawn.minplayers = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043a\u0438\u0434\u0430\u0442\u044c \u0441\u043f\u0430\u0443\u043d, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0443\u043c {0} \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0432 {1} \u043a\u043e\u043c\u0430\u043d\u0434\u0435. zone.spawn.timer = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043a\u0430\u0438\u0434\u0430\u0442\u044c \u0441\u043f\u0430\u0443\u043d \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 {0} \u0441\u0435\u043a. \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u0441\u043f\u0430\u0432\u043d\u0430! zone.steal.bomb.broadcast = {0} \u043d\u0430\u0448\u0435\u043b \u0431\u043e\u043c\u0431\u0443 "{1}". -zone.steal.bomb.notice = \u0412\u044b \u0438\u043c\u0435\u0435\u0442\u0435 \u0431\u043e\u043c\u0431\u0443 "{0}". \u041f\u0440\u0438\u043d\u0435\u0441\u0438\u0442\u0435 \u0435\u0435 \u043a \u0432\u0440\u0430\u0436\u0435\u0441\u043a\u043e\u0439 \u0431\u0430\u0437\u0435. \u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u0443\u0440\u043e\u043d\u0435, \u0438\u043d\u0430\u0447\u0435 \u0412\u044b \u0432\u0437\u043e\u0440\u0432\u0435\u0442\u0435\u0441\u044c! +zone.steal.bomb.notice = \u0412\u044b \u043d\u0435\u0441\u0435\u0442\u0435 \u0431\u043e\u043c\u0431\u0443 "{0}". \u041f\u0440\u0438\u043d\u0435\u0441\u0438\u0442\u0435 \u0435\u0435 \u043a \u0432\u0440\u0430\u0436\u0435\u0441\u043a\u043e\u0439 \u0431\u0430\u0437\u0435. \u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u0443\u0440\u043e\u043d, \u0438\u043d\u0430\u0447\u0435 \u0412\u044b \u0432\u0437\u043e\u0440\u0432\u0435\u0442\u0435\u0441\u044c! zone.steal.bomb.prevent = \u041d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 {0} \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u0431\u043e\u043c\u0431\u0443 \u043a \u0412\u0430\u0448\u0435\u043c\u0443 \u0441\u043f\u0430\u0443\u043d\u0443! zone.steal.cake.broadcast = {0} \u043d\u0430\u0448\u0435\u043b \u0442\u043e\u0440\u0442 "{1}". zone.steal.cake.notice = \u0412\u044b \u0438\u043c\u0435\u0435\u0442\u0435 \u0442\u043e\u0440\u0442 "{0}". \u041f\u0440\u0438\u043d\u0435\u0441\u0438\u0442\u0435 \u0435\u0433\u043e \u043a \u0441\u043f\u0430\u0443\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0447\u043a\u043e \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0441\u0435 \u0436\u0438\u0437\u043d\u0438! @@ -113,7 +117,7 @@ zone.steal.cake.prevent = \u041d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u043 zone.steal.flag.broadcast = {0} \u0443\u043a\u0440\u0430\u043b \u0444\u043b\u0430\u0433 {1}. zone.steal.flag.empty = \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0440\u0430\u0441\u0442\u044c \u0444\u043b\u0430\u0433 \u043a\u043e\u043c\u0430\u043d\u0434\u044b {0}, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0432 \u043d\u0435\u0439. zone.steal.flag.notice = \u0412\u044b \u0438\u043c\u0435\u0435\u0442\u0435 \u0444\u043b\u0430\u0433 \u043a\u043e\u043c\u0430\u043d\u0434\u044b {0}. \u041f\u0440\u0438\u043d\u0435\u0441\u0438\u0442\u0435 \u0435\u0433\u043e \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0444\u043b\u0430\u0433\u0443 \u0438\u043b\u0438 \u0431\u0430\u0437\u0435 \u0434\u043b\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u0430! -zone.steal.flag.prevent = \u0412\u0435\u0440\u043d\u0443\u043b {0} from reaching team {1}''s spawn or flag. +zone.steal.flag.prevent = \u0412\u0435\u0440\u043d\u0443\u043b {0} from reaching team {1}''''s spawn or flag. zone.stealextra.bomb = \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0431\u043e\u043c\u0431\u0443! zone.stealextra.cake = \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0442\u043e\u0440\u0442! zone.stealextra.flag = \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0444\u043b\u0430\u0433! diff --git a/war/src/main/resources/messages_sk_SK.properties b/war/src/main/resources/messages_sk_SK.properties new file mode 100644 index 0000000..f129dcc --- /dev/null +++ b/war/src/main/resources/messages_sk_SK.properties @@ -0,0 +1,4 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Tu nemozes stavat +build.denied.outside = Mozes stavat iba v warzone +build.denied.zone.break = Kocky v warzone su neznicitelne diff --git a/war/src/main/resources/messages_sv_SE.properties b/war/src/main/resources/messages_sv_SE.properties new file mode 100644 index 0000000..d4093a3 --- /dev/null +++ b/war/src/main/resources/messages_sv_SE.properties @@ -0,0 +1,83 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Du kan inte bygga h\u00e4r. +build.denied.outside = Du kan bara bygga innanf\u00f6r krigszoner. +build.denied.zone.break = Blocket i denna krigszon \u00e4r of\u00f6rst\u00f6rbar. +build.denied.zone.multteam = Du har redan ett {0} block. +build.denied.zone.outside = Du kan inte f\u00f6rst\u00f6ra en krigszon du spelar inte i den. +build.denied.zone.place = Du kan inte placera blocks i denna krigszon +build.denied.zone.type = Du kan inte \u00e4ndra denna typ av block. +command.console = Du kan inte g\u00f6ra detta om du inte \u00e4r i ett spel. +command.disabled = Du kan bara anv\u00e4nda krigs kommandon (t.ex /leave) medans du spelar. +drop.bomb.broadcast = {0} tappade den {1} bomben! +drop.cake.broadcast = {0} tappade den {1} kakan! +drop.cake.disabled = Du kan inte kasta ut saker medans du stj\u00e4ler kakan. Vad h\u00e5ller du p\u00e5 med?! Spring! +drop.flag.broadcast = {0} tappade den {1} flaggan! +drop.flag.disabled = Du kan inte kasta ut saker medans du har stj\u00e4lt flaggan. Vad h\u00e5ller du p\u00e5 med?! Spring! +drop.item.border = Du kan inte kasta saker n\u00e4r du \u00e4r n\u00e4ra zon kanten. +drop.item.disabled = Du kan inte kasta saker i denna krigs zon. +drop.item.spawn = Du kan inte kasta ut saker n\u00e4r du st\u00e5r still vid spawn. +drop.team = Du kan inte kasta ut {0} blocks. +join.broadcast = {0} gick med i lag {1} +join.disabled = Denna krigszon \u00e4r avst\u00e4ngd. +join.full.all = Alla lag \u00e4r fulla. +join.full.single = Lag {0} \u00e4r fullt. +join.inventorystored = Ditt inventory \u00e4r sparat tills du l\u00e4mnar med /war leave. +join.permission.all = Du har inte tillst\u00e5nd till n\u00e5gra av dessa lag i denna krigszonen. +join.permission.single = Du har inte tillst\u00e5nd att g\u00e5 med i lag {0}. +join.progress = Du kan inte g\u00e5 med i detta krig som redan p\u00e5g\u00e5r i denna zonen. +join.selfteam = Du kan inte g\u00e5 med i ditt egna lag. +join.team404 = Det d\u00e4r laget kunde inte hittas. Anv\u00e4nd /teams f\u00f6r att f\u00e5 upp en lista +leave.broadcast = {0} har l\u00e4mmnat zonen. +leave.inventoryrestore = Ditt inventory har blivit \u00e5terst\u00e4lld. +pvp.death.drown = {0} har drunknat +pvp.death.explosion = {0} har exploderat +pvp.death.fall = {0} f\u00f6ll till en f\u00f6r tidig d\u00f6d +pvp.death.fire = {0} br\u00e4ndes upp +pvp.death.other = {0} dog +pvp.ff.disabled = Din attack missade! Ditt m\u00e5l \u00e4r i ditt lag. +pvp.ff.enabled = Friendly fire \u00e4r p\u00e5! Sn\u00e4lla, skada inte dina lagkamrater. +pvp.kill.adjectives = ;;m\u00e4ktig;d\u00f6dlig;fin;precise;exakt;brutal;kraftfull +pvp.kill.bomb = {0} gjorde {1} spr\u00e4ngdes upp! +pvp.kill.format = {0} s {1} {2} {3} {4} +pvp.kill.self = {0} begick sj\u00e4lvmord +pvp.kill.weapon.aim = sikte +pvp.kill.weapon.bow = pilb\u00e5ge +pvp.kill.weapon.hand = hand +pvp.outside.permission = Du kan inte attackera spelare utanf\u00f6r krigszoner. +pvp.self.notplaying = Du beh\u00f6ver vara med i denna krigszon f\u00f6r att kunna sl\u00e5ss. +pvp.self.respawn = Du kan inte attackera medans du \u00e5terupplivas! +pvp.self.spawn = Du kan inte attackera medans du \u00e4r kvar i spawn. +pvp.target.notplaying = Ditt m\u00e5l spelar inte i krigszonen. +pvp.target.otherzone = Ditt m\u00e5l spelar i en annan krigszon. +pvp.target.respawn = Ditt m\u00e5l h\u00e5ller p\u00e5 att \u00e5terupplivas! +pvp.target.spawn = Ditt m\u00e5l \u00e4r fortfarande i spawnet! +sign.lobby.pick = Krigszon\n{0}\n\nV\u00e4lj ett lag. +sign.lobby.warhub = \nTill krigs hub\n +sign.team.limited = Lag {0}\n{1}/{2} spelare\n{3}/{4} Po\u00e4ng\n{5} Liv kvar +sign.team.unlimited = Lag {0}\n{1}/{2} spelare\n{3}/{4} po\u00e4ng\nobegr\u00e4nsat med liv +sign.warhub = Krigs hub\n(/warhub)\nV\u00e4lj din strid! +sign.warzone = Krigszon\n{0}\n{1}/{2} spelare\n{3} lag +use.anvil = Du kan inte anv\u00e4nda st\u00e4d i denna krigszon! +use.enchant = Du kan inte anv\u00e4nda f\u00f6rtrollnings bord i denna krigszon. +use.ender = Du kan inte anv\u00e4nda ender kistor medans du spelar i en krigszon. +use.item.spawn = Du kan inte anv\u00e4nda saker medans du \u00e4r fortfarande i spawn. +wand.toofar = Ditt m\u00e5lblock \u00e4r f\u00f6r l\u00e5ngt iv\u00e4g. +war.notadmin = Du kan inte g\u00f6ra detta om du inte \u00e4r Krigs admin (du beh\u00f6ver tillst\u00e5ndet war.admin) +war.prefix = Krig> +war.title = Krig +warhub.none = Ingen krigs hub p\u00e5 denna server. F\u00f6rs\u00f6k /zones eller /zone +warhub.permission = Du har inte tillst\u00e5nd till att teleportera till krig hub. +warhub.teleport = V\u00e4lkommen till krigsHuben. V\u00e4lj ditt krig! +zone.airstrike = {0} kallade in ett flyganfall! +zone.battle.newscores = Nya po\u00e4ng - {0} +zone.leavenotice = Anv\u00e4nd /war leave f\u00f6r att l\u00e4mna zonen. +zone.steal.flag.broadcast = {0} tog lag {1} flagga. +zone.stealextra.bomb = Du kan bara stj\u00e4la en bomb \u00e5t g\u00e5ngen. +zone.stealextra.cake = Du kan bara stj\u00e4la en kaka \u00e5t g\u00e5ngen. +zone.stealextra.flag = Du kan bara stj\u00e4la en flagga \u00e5t g\u00e5ngen. +zone.stealextra.other = Du kan bara stj\u00e4la en sak \u00e5t g\u00e5ngen. +zone.teaminfo.none = ingen +zone.teaminfo.prefix = Lag: +zone.zone404 = Den krigszonen kunde inte hittas. +zone.zoneinfo.prefix = Krigszoner: +zone.zoneinfo.teleport = Anv\u00e4nd /zone f\u00f6r att teleportera till en krigszon. diff --git a/war/src/main/resources/messages_th_TH.properties b/war/src/main/resources/messages_th_TH.properties new file mode 100644 index 0000000..8e36580 --- /dev/null +++ b/war/src/main/resources/messages_th_TH.properties @@ -0,0 +1,133 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e14\u0e49\u0e15\u0e23\u0e07\u0e19\u0e35\u0e49 +build.denied.outside = \u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e14\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e43\u0e19\u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 +build.denied.teamblock = \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e01\u0e47\u0e1a\u0e41\u0e15\u0e49\u0e21\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 +build.denied.zone.break = \u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e43\u0e19\u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e25\u0e32\u0e22\u0e44\u0e14\u0e49 +build.denied.zone.multteam = \u0e04\u0e38\u0e13\u0e21\u0e35\u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 {0} \u0e1a\u0e25\u0e47\u0e2d\u0e01 +build.denied.zone.outside = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e25\u0e32\u0e22\u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e14\u0e49 +build.denied.zone.place = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e27\u0e32\u0e07\u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e43\u0e19\u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e44\u0e14\u0e49 +build.denied.zone.type = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e07\u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49 +command.console = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49\u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e40\u0e01\u0e21 +command.disabled = \u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e44\u0e14\u0e49\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e40\u0e0a\u0e48\u0e19 /leave \u0e02\u0e13\u0e30\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e25\u0e48\u0e19\u0e01\u0e31\u0e19 +command.tp.init = \u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e2d {0} \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e22\u0e49\u0e32\u0e22 \u0e2b\u0e32\u0e01\u0e21\u0e35\u0e01\u0e32\u0e23\u0e02\u0e22\u0e31\u0e1a\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e17\u0e31\u0e19\u0e17\u0e35 +command.tp.moved = \u0e01\u0e32\u0e23\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e22\u0e49\u0e32\u0e22\u0e16\u0e39\u0e01\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e02\u0e22\u0e31\u0e1a\u0e15\u0e31\u0e27 +command.tp.damaged = \u0e01\u0e32\u0e23\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e22\u0e49\u0e32\u0e22\u0e16\u0e39\u0e01\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e22\u0e2b\u0e32\u0e22 +command.tp.success = \u0e04\u0e38\u0e13\u0e16\u0e39\u0e01\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e22\u0e49\u0e32\u0e22\u0e41\u0e25\u0e49\u0e27 \u0e02\u0e2d\u0e43\u0e2b\u0e49\u0e42\u0e0a\u0e04\u0e14\u0e35 +drop.bomb.broadcast = {0} \u0e27\u0e32\u0e07\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14 {1} \u0e25\u0e39\u0e01 \u0e41\u0e25\u0e49\u0e27\u0e19\u0e30\u0e08\u0e49\u0e30! +drop.bomb.disabled = \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e34\u0e49\u0e07\u0e02\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e02\u0e13\u0e30\u0e16\u0e37\u0e2d\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14\u0e44\u0e14\u0e49 \u0e17\u0e33\u0e44\u0e07\u0e44\u0e14\u0e49\u0e25\u0e48\u0e30 \u0e40\u0e01\u0e35\u0e22\u0e23\u0e4c\u0e2b\u0e21\u0e32\u0e44\u0e1b\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e28\u0e31\u0e15\u0e23\u0e39\u0e2a\u0e34! +drop.cake.broadcast = {0} \u0e27\u0e32\u0e07\u0e40\u0e04\u0e49\u0e01 {1} \u0e01\u0e49\u0e2d\u0e19 \u0e41\u0e25\u0e49\u0e27\u0e19\u0e30\u0e08\u0e49\u0e30! +drop.cake.disabled = \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e34\u0e49\u0e07\u0e02\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e02\u0e13\u0e30\u0e16\u0e37\u0e2d\u0e40\u0e04\u0e49\u0e01\u0e44\u0e14\u0e49 \u0e17\u0e33\u0e44\u0e07\u0e44\u0e14\u0e49\u0e25\u0e48\u0e30 \u0e40\u0e01\u0e35\u0e22\u0e23\u0e4c\u0e2b\u0e21\u0e32\u0e2a\u0e34! +drop.flag.broadcast = {0} \u0e1b\u0e31\u0e01\u0e18\u0e07 {1} \u0e2d\u0e31\u0e19 \u0e41\u0e25\u0e49\u0e27\u0e19\u0e30\u0e08\u0e49\u0e30! +drop.flag.disabled = \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e34\u0e49\u0e07\u0e02\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e02\u0e13\u0e30\u0e16\u0e37\u0e2d\u0e18\u0e07\u0e44\u0e14\u0e49 \u0e17\u0e33\u0e44\u0e07\u0e44\u0e14\u0e49\u0e25\u0e48\u0e30 \u0e40\u0e01\u0e35\u0e22\u0e23\u0e4c\u0e2b\u0e21\u0e32\u0e2a\u0e34! +drop.item.border = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e34\u0e49\u0e07\u0e02\u0e2d\u0e07\u0e15\u0e23\u0e07\u0e02\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e42\u0e0b\u0e19\u0e44\u0e14\u0e49 +drop.item.disabled = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e34\u0e49\u0e07\u0e02\u0e2d\u0e07\u0e43\u0e19\u0e42\u0e0b\u0e19\u0e44\u0e14\u0e49 +drop.item.spawn = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e23\u0e17\u0e34\u0e49\u0e07\u0e02\u0e2d\u0e07\u0e02\u0e13\u0e30\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14 +drop.team = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e27\u0e32\u0e07 {0} \u0e1a\u0e25\u0e47\u0e2d\u0e01 +drop.wand = \u0e04\u0e38\u0e13\u0e17\u0e34\u0e49\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e17\u0e33\u0e42\u0e0b\u0e19\u0e41\u0e25\u0e49\u0e27 {0} \u0e2d\u0e31\u0e19 +join.aarequired = \u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e19\u0e35\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e40\u0e02\u0e49\u0e32\u0e17\u0e35\u0e21\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\n\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e1b\u0e23\u0e30\u0e15\u0e39\u0e40\u0e02\u0e49\u0e32\u0e17\u0e35\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e41\u0e17\u0e19 +join.broadcast = {0} \u0e44\u0e14\u0e49\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21 \u0e17\u0e35\u0e21 {1} +join.disabled = \u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e19\u0e35\u0e49\u0e1b\u0e34\u0e14\u0e2d\u0e22\u0e39\u0e48 +join.full.all = \u0e17\u0e38\u0e01\u0e17\u0e35\u0e21\u0e40\u0e15\u0e47\u0e21\u0e41\u0e25\u0e49\u0e27 +join.full.single = \u0e17\u0e35\u0e21 {0} \u0e40\u0e15\u0e47\u0e21\u0e41\u0e25\u0e49\u0e27 +join.inventorystored = \u0e02\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e2d\u0e2d\u0e01 (/war leave) +join.permission.all = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e21\u0e43\u0e14\u0e46\u0e40\u0e25\u0e22\u0e43\u0e19\u0e42\u0e0b\u0e19\u0e19\u0e35\u0e49 +join.permission.single = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e17\u0e35\u0e21 {0} +join.progress = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e42\u0e0b\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30 "\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2a\u0e39\u0e49" \u0e44\u0e14\u0e49 +join.selfteam = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e17\u0e35\u0e21\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49 +join.team404 = \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e17\u0e35\u0e21\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e21\u0e32 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49 /teams \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e21 +leave.broadcast = {0} \u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e42\u0e0b\u0e19 +leave.inventoryrestore = \u0e02\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e16\u0e39\u0e01\u0e04\u0e37\u0e19\u0e41\u0e25\u0e49\u0e27\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22 +pvp.death.drown = {0} \u0e08\u0e21\u0e19\u0e49\u0e33 +pvp.death.explosion = {0} \u0e16\u0e39\u0e01\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14 +pvp.death.fall = {0} \u0e15\u0e01\u0e08\u0e32\u0e01\u0e2a\u0e19\u0e32\u0e21 +pvp.death.fire = {0} \u0e44\u0e1f\u0e44\u0e2b\u0e21\u0e49\u0e15\u0e31\u0e27\u0e15\u0e32\u0e22 +pvp.death.other = {0} \u0e15\u0e32\u0e22 +pvp.ff.disabled = \u0e42\u0e08\u0e21\u0e15\u0e35\u0e1e\u0e25\u0e32\u0e14! \u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e19\u0e31\u0e49\u0e19\u0e41\u0e25\u0e49\u0e27\u0e41\u0e15\u0e48\u0e04\u0e38\u0e13 +pvp.ff.enabled = \u0e2d\u0e22\u0e48\u0e32\u0e17\u0e33\u0e23\u0e49\u0e32\u0e22\u0e1e\u0e27\u0e01\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e2a\u0e34 +pvp.kill.adjectives = ;;\u0e2a\u0e38\u0e14\u0e22\u0e2d\u0e14;\u0e21\u0e24\u0e15\u0e22\u0e39;\u0e04\u0e21;\u0e17\u0e35\u0e48\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33;\u0e2d\u0e31\u0e19\u0e42\u0e2b\u0e14\u0e23\u0e49\u0e32\u0e22;\u0e1e\u0e25\u0e31\u0e07\u0e21\u0e2b\u0e32\u0e28\u0e32\u0e25 +pvp.kill.bomb = {0} \u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14\u0e43\u0e2a\u0e48 {1} +pvp.kill.format = {0} \u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49 {2}{1}{3}{4} +pvp.kill.self = {0} \u0e06\u0e48\u0e32\u0e15\u0e31\u0e27\u0e15\u0e32\u0e22 +pvp.kill.verbs = \u0e16\u0e39\u0e01\u0e06\u0e48\u0e32;\u0e16\u0e39\u0e01\u0e06\u0e48\u0e32;\u0e16\u0e39\u0e01\u0e06\u0e48\u0e32;\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22;\u0e16\u0e39\u0e01\u0e17\u0e33\u0e25\u0e32\u0e22;\u0e16\u0e39\u0e01\u0e06\u0e32\u0e15\u0e01\u0e23\u0e23\u0e21;\u0e2b\u0e32\u0e22\u0e15\u0e31\u0e27\u0e44\u0e1b;\u0e16\u0e39\u0e01\u0e01\u0e33\u0e08\u0e31\u0e14 +pvp.kill.weapon.aim = \u0e40\u0e25\u0e47\u0e07 +pvp.kill.weapon.bow = \u0e25\u0e39\u0e01\u0e28\u0e23 +pvp.kill.weapon.hand = \u0e21\u0e37\u0e2d +pvp.outside.permission = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e35\u0e1c\u0e39\u0e49\u0e2d\u0e37\u0e48\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e42\u0e0b\u0e19\u0e44\u0e14\u0e49 +pvp.self.notplaying = \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e02\u0e49\u0e32\u0e23\u0e48\u0e27\u0e21\u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e19\u0e35\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e42\u0e08\u0e21\u0e15\u0e35 +pvp.self.respawn = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e42\u0e08\u0e21\u0e15\u0e35\u0e02\u0e13\u0e30\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e01\u0e34\u0e14\u0e43\u0e2b\u0e21\u0e48 +pvp.self.spawn = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e42\u0e08\u0e21\u0e15\u0e35\u0e02\u0e13\u0e30\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14 +pvp.target.notplaying = \u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e17\u0e35\u0e48\u0e19\u0e35\u0e49 +pvp.target.otherzone = \u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2d\u0e22\u0e39\u0e48\u0e42\u0e0b\u0e19\u0e2d\u0e37\u0e48\u0e19 +pvp.target.respawn = \u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e01\u0e34\u0e14\u0e43\u0e2b\u0e21\u0e48 +pvp.target.spawn = \u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14 +sign.lobby.autoassign = \u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\n{0}\n\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e1b\u0e23\u0e30\u0e15\u0e39\n\u0e40\u0e02\u0e49\u0e32\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 +sign.lobby.pick = \u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\n{0}\n\n\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e35\u0e21\u0e2a\u0e34 +sign.lobby.warhub = \n\u0e44\u0e1b\u0e08\u0e38\u0e14\u0e23\u0e27\u0e21\u0e42\u0e0b\u0e19\n +sign.team.limited = \u0e17\u0e35\u0e21 {0}\n\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19 {1}/{2} \u0e04\u0e19\n{3}/{4} \u0e41\u0e15\u0e49\u0e21\n{5} \u0e0a\u0e35\u0e27\u0e34\u0e15\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d +sign.team.unlimited = \u0e17\u0e35\u0e21 {0}\n\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19 {1}/{2} \u0e04\u0e19\n{3}/{4} \u0e41\u0e15\u0e49\u0e21\n\u0e44\u0e21\u0e48\u0e08\u0e33\u0e01\u0e31\u0e14\u0e0a\u0e35\u0e27\u0e34\u0e15 +sign.warhub = \u0e08\u0e38\u0e14\u0e23\u0e27\u0e21\u0e42\u0e0b\u0e19\n(/warhub)\n\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1b\n1 \u0e1b\u0e23\u0e30\u0e15\u0e39 +sign.warzone = \u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\n{0}\n\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19 {1}/{2} \u0e04\u0e19\n\u0e21\u0e35 {3} \u0e17\u0e35\u0e21 +team.chat.enable = \u0e01\u0e32\u0e23\u0e2a\u0e19\u0e17\u0e19\u0e32\u0e43\u0e19\u0e17\u0e35\u0e21\u0e16\u0e39\u0e01\u0e40\u0e1b\u0e34\u0e14 \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e43\u0e2b\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e04\u0e19\u0e43\u0e19\u0e17\u0e35\u0e21 +team.chat.disable = \u0e01\u0e32\u0e23\u0e2a\u0e19\u0e17\u0e19\u0e32\u0e43\u0e19\u0e17\u0e35\u0e21\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14 +use.anvil = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e17\u0e31\u0e48\u0e07\u0e40\u0e2b\u0e25\u0e47\u0e01\u0e43\u0e19\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49 +use.enchant = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e42\u0e15\u0e4a\u0e30\u0e40\u0e2a\u0e23\u0e34\u0e21\u0e1e\u0e25\u0e31\u0e07\u0e43\u0e19\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49 +use.ender = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e01\u0e25\u0e48\u0e2d\u0e07\u0e40\u0e2d\u0e19\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e43\u0e19\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49 +use.item.spawn = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e02\u0e2d\u0e07\u0e02\u0e13\u0e30\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e44\u0e14\u0e49 +use.xpkillmeter = \u0e23\u0e30\u0e1a\u0e1a xpkillmeter \u0e44\u0e14\u0e49\u0e40\u0e27\u0e25\u0e32\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27 +wand.toofar = \u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e01\u0e25\u0e40\u0e01\u0e34\u0e19 +war.notadmin = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e44\u0e14\u0e49\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a (war.admin) +war.notzm = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e44\u0e14\u0e49\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49\u0e1c\u0e39\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e42\u0e0b\u0e19 (war.zonemaker) +war.prefix = \u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21 > +war.title = \u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21 +warhub.none = \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e08\u0e38\u0e14\u0e23\u0e27\u0e21\u0e42\u0e0b\u0e19\u0e1a\u0e19\u0e40\u0e0b\u0e34\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c \u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49 /zones \u0e2b\u0e23\u0e37\u0e2d /zone +warhub.permission = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e44\u0e1b\u0e08\u0e38\u0e14\u0e23\u0e27\u0e21\u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21 +warhub.teleport = \u0e22\u0e34\u0e19\u0e14\u0e35\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e2a\u0e39\u0e48\u0e08\u0e38\u0e14\u0e23\u0e27\u0e21\u0e42\u0e0b\u0e19 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e02\u0e49\u0e32\u0e40\u0e25\u0e22! +zone.airstrike = {0} \u0e40\u0e23\u0e35\u0e22\u0e01\u0e01\u0e32\u0e23\u0e42\u0e08\u0e21\u0e15\u0e35\u0e08\u0e32\u0e01\u0e17\u0e32\u0e07\u0e2d\u0e32\u0e01\u0e32\u0e28 +zone.battle.end = \u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e08\u0e1a\u0e41\u0e25\u0e49\u0e27 \u0e17\u0e35\u0e21 {0} \u0e41\u0e1e\u0e49 \u0e15\u0e32\u0e22 {1} \u0e04\u0e19 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e43\u0e04\u0e23\u0e2d\u0e35\u0e01\u0e40\u0e25\u0e22 +zone.battle.newscores = \u0e41\u0e15\u0e49\u0e21\u0e43\u0e2b\u0e21\u0e48 - {0} +zone.battle.next = \u0e01\u0e32\u0e23\u0e2a\u0e39\u0e49\u0e23\u0e1a\u0e40\u0e01\u0e34\u0e14\u0e01\u0e32\u0e23\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 \u0e01\u0e33\u0e25\u0e31\u0e07\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15\u0e42\u0e0b\u0e19 {0} +zone.battle.reset = \u0e01\u0e32\u0e23\u0e2a\u0e39\u0e49\u0e23\u0e1a\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e19\u0e2d\u0e35\u0e01\u0e44\u0e21\u0e48\u0e0a\u0e49\u0e32\u0e41\u0e25\u0e30\u0e01\u0e33\u0e25\u0e31\u0e07\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15\u0e42\u0e0b\u0e19 +zone.battle.resetprogress = \u0e01\u0e33\u0e25\u0e31\u0e07\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15\u0e42\u0e0b\u0e19 {0}% \u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b {1} \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 +zone.battle.resetcomplete = \u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e08\u0e30\u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19 {0} \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 +zone.bomb.broadcast = {0} \u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14\u0e43\u0e2a\u0e48\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21 {1} \u0e17\u0e35\u0e21 {2} \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a 1 \u0e41\u0e15\u0e49\u0e21 +zone.cake.broadcast = {0} \u0e40\u0e2d\u0e32\u0e40\u0e04\u0e49\u0e01 {1} \u0e44\u0e1b \u0e17\u0e35\u0e21 {2} \u0e23\u0e31\u0e1a\u0e41\u0e15\u0e49\u0e21 1 \u0e41\u0e15\u0e49\u0e21\u0e41\u0e25\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1e\u0e25\u0e31\u0e07\u0e0a\u0e35\u0e27\u0e34\u0e15\u0e14\u0e49\u0e27\u0e22 +zone.flagcapture.broadcast = {0} \u0e40\u0e2d\u0e32\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21 {1} \u0e44\u0e1b \u0e17\u0e35\u0e21 {2} \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e49\u0e21 1 \u0e41\u0e15\u0e49\u0e21 +zone.flagreturn.deadlock = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e2d\u0e32\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e1d\u0e48\u0e32\u0e22\u0e15\u0e23\u0e07\u0e02\u0e49\u0e32\u0e21\u0e44\u0e14\u0e49 \u0e08\u0e19\u0e27\u0e48\u0e32\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21\u0e04\u0e38\u0e13\u0e08\u0e30\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e40\u0e2d\u0e32\u0e44\u0e1b +zone.flagreturn.flag = \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2d\u0e32\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e1d\u0e48\u0e32\u0e22\u0e15\u0e23\u0e07\u0e02\u0e49\u0e32\u0e21\u0e21\u0e32\u0e17\u0e35\u0e48\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21\u0e04\u0e38\u0e13 +zone.flagreturn.spawn = \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e2d\u0e32\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e1d\u0e48\u0e32\u0e22\u0e15\u0e23\u0e07\u0e02\u0e49\u0e32\u0e21\u0e21\u0e32\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 +zone.leavenotice = \u0e43\u0e0a\u0e49 /war leave \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e42\u0e0b\u0e19 +zone.lifepool.empty = \u0e0a\u0e35\u0e27\u0e34\u0e15\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21 {0} \u0e2b\u0e21\u0e14\u0e41\u0e25\u0e49\u0e27 \u0e16\u0e49\u0e32\u0e15\u0e32\u0e22\u0e2d\u0e35\u0e01\u0e01\u0e47\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e31\u0e19\u0e08\u0e1a\u0e40\u0e01\u0e21\u0e41\u0e25\u0e30\u0e41\u0e1e\u0e49 +zone.loadout.equip = \u0e43\u0e2a\u0e48 {0} \u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2d\u0e4a\u0e32\u0e41\u0e25\u0e49\u0e27 (\u0e01\u0e14\u0e22\u0e48\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49) +zone.loadout.reenter = \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2d\u0e4a\u0e32\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14 +zone.monument.badblock = \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e01\u0e47\u0e1a\u0e2b\u0e38\u0e48\u0e19\u0e01\u0e31\u0e1a\u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e02\u0e19\u0e41\u0e01\u0e30\u0e2a\u0e35\u0e17\u0e35\u0e21\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e40\u0e2d\u0e32\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21\u0e04\u0e38\u0e13 +zone.monument.capture = \u0e2b\u0e38\u0e48\u0e19 {0} \u0e42\u0e14\u0e19\u0e40\u0e01\u0e47\u0e1a\u0e42\u0e14\u0e22\u0e17\u0e35\u0e21 {1} +zone.monument.lose = \u0e17\u0e35\u0e21 {0} \u0e40\u0e2a\u0e35\u0e22\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e2b\u0e38\u0e48\u0e19 {1} +zone.monument.voodoo = \u0e01\u0e32\u0e23\u0e40\u0e15\u0e49\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e2b\u0e38\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e02\u0e36\u0e48\u0e19! \u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e0a\u0e35\u0e27\u0e34\u0e15 {0} \u0e0a\u0e35\u0e27\u0e34\u0e15 +zone.noteamnotice = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19\u0e42\u0e0b\u0e19\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e17\u0e35\u0e21 +zone.score.board404 = \u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21\u0e19\u0e35\u0e49 \u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e30\u0e41\u0e19\u0e19\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e2d\u0e22\u0e39\u0e48 +zone.score.empty = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e2d\u0e32\u0e41\u0e15\u0e49\u0e21\u0e44\u0e14\u0e49\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e35\u0e01\u0e04\u0e19\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32\u0e43\u0e19\u0e17\u0e35\u0e21\u0e2d\u0e37\u0e48\u0e19 +zone.spawn.minplayers = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e44\u0e14\u0e49\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 {0} \u0e04\u0e19 \u0e15\u0e48\u0e2d {1} \u0e17\u0e35\u0e21 +zone.spawn.timer = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e25\u0e32 {0} \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e01\u0e34\u0e14\u0e43\u0e2b\u0e21\u0e48 +zone.steal.bomb.broadcast = {0} \u0e21\u0e35\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14 {1} +zone.steal.bomb.notice = \u0e04\u0e38\u0e13\u0e21\u0e35\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14 {0} \u0e44\u0e1b\u0e22\u0e31\u0e07\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21\u0e2d\u0e37\u0e48\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14 \u0e2d\u0e22\u0e48\u0e32\u0e44\u0e1b\u0e42\u0e14\u0e19\u0e43\u0e04\u0e23\u0e25\u0e30 \u0e40\u0e14\u0e35\u0e48\u0e22\u0e27\u0e21\u0e31\u0e19\u0e08\u0e30\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14\u0e43\u0e2a\u0e48\u0e2b\u0e19\u0e49\u0e32 +zone.steal.bomb.prevent = \u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19 {0} \u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e14\u0e49\u0e27\u0e22\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14 +zone.steal.cake.broadcast = {0} \u0e21\u0e35\u0e40\u0e04\u0e49\u0e01 {1} +zone.steal.cake.notice = \u0e04\u0e38\u0e13\u0e21\u0e35\u0e40\u0e04\u0e49\u0e01 {0} \u0e44\u0e1b\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21\u0e04\u0e38\u0e13\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e0a\u0e35\u0e27\u0e34\u0e15 +zone.steal.cake.prevent = \u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19 {0} \u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e14\u0e49\u0e27\u0e22\u0e40\u0e04\u0e49\u0e01 +zone.steal.flag.broadcast = {0} \u0e02\u0e42\u0e21\u0e22\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21 {1} \u0e44\u0e1b! +zone.steal.flag.empty = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e02\u0e42\u0e21\u0e22\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21 {0} \u0e44\u0e14\u0e49\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e04\u0e23\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e17\u0e35\u0e21 +zone.steal.flag.notice = \u0e04\u0e38\u0e13\u0e21\u0e35\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21 {0} \u0e44\u0e1b\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21\u0e04\u0e38\u0e13\u0e0b\u0e30\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e49\u0e21 +zone.steal.flag.prevent = \u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19 {0} \u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e08\u0e38\u0e14\u0e40\u0e01\u0e34\u0e14\u0e2b\u0e23\u0e37\u0e2d\u0e18\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e21 {1} +zone.stealextra.bomb = \u0e04\u0e38\u0e13\u0e40\u0e2d\u0e32\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14\u0e44\u0e14\u0e49 1 \u0e2d\u0e31\u0e19\u0e15\u0e48\u0e2d\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 +zone.stealextra.cake = \u0e04\u0e38\u0e13\u0e40\u0e2d\u0e32\u0e40\u0e04\u0e49\u0e01\u0e44\u0e14\u0e49\u0e41\u0e04\u0e48 1 \u0e01\u0e49\u0e2d\u0e19\u0e15\u0e48\u0e2d\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 +zone.stealextra.flag = \u0e04\u0e38\u0e13\u0e40\u0e2d\u0e32\u0e18\u0e07\u0e44\u0e14\u0e49\u0e41\u0e04\u0e48 1 \u0e18\u0e07\u0e15\u0e48\u0e2d\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 +zone.stealextra.other = \u0e04\u0e38\u0e13\u0e40\u0e2d\u0e32\u0e02\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e41\u0e04\u0e48 1 \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 +zone.teaminfo.format = \u0e17\u0e35\u0e21 {0} : \u0e21\u0e35 {1} \u0e41\u0e15\u0e49\u0e21 \u0e21\u0e35 {2}/{3} \u0e0a\u0e35\u0e27\u0e34\u0e15\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d {4} +zone.teaminfo.none = \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +zone.teaminfo.prefix = \u0e17\u0e35\u0e21: +zone.teleport = \u0e22\u0e34\u0e19\u0e14\u0e35\u0e15\u0e49\u0e2d\u0e19\u0e23\u0e31\u0e1a\u0e2a\u0e39\u0e48\u0e42\u0e0b\u0e19 {0} +zone.warp.permission = \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e17\u0e35\u0e48\u0e08\u0e30\u0e44\u0e1b\u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21 +zone.zone404 = \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e42\u0e0b\u0e19\u0e14\u0e31\u0e07\u0e01\u0e25\u0e48\u0e32\u0e27 +zone.zoneinfo.format = \u0e17\u0e35\u0e21 {0} : \u0e21\u0e35 {1} \u0e17\u0e35\u0e21 \u0e21\u0e35 {2} \u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19 +zone.zoneinfo.prefix = \u0e42\u0e0b\u0e19\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21 +zone.zoneinfo.teleport = \u0e43\u0e0a\u0e49 /zone <\u0e0a\u0e37\u0e48\u0e2d\u0e42\u0e0b\u0e19> \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e42\u0e0b\u0e19\u0e19\u0e31\u0e49\u0e19 diff --git a/war/src/main/resources/messages_tr_TR.properties b/war/src/main/resources/messages_tr_TR.properties new file mode 100644 index 0000000..9a74eab --- /dev/null +++ b/war/src/main/resources/messages_tr_TR.properties @@ -0,0 +1,6 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = Burada yap\u0131 yapamazs\u0131n\u0131z. +build.denied.outside = Sadece sava\u015f alan\u0131 i\u00e7inde yap\u0131 yapabilirsiniz +build.denied.zone.break = Bu sava\u015f alan\u0131ndaki bloklar k\u0131r\u0131lamaz. +build.denied.zone.multteam = Zaten {0} blo\u011funa sahipsiniz. +zone.teaminfo.prefix = Tak\u0131mlar: diff --git a/war/src/main/resources/messages_uk.properties b/war/src/main/resources/messages_uk.properties new file mode 100644 index 0000000..e48e951 --- /dev/null +++ b/war/src/main/resources/messages_uk.properties @@ -0,0 +1,13 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = \u0412\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u0443\u0434\u0443\u0432\u0430\u0442\u0438 \u0442\u0443\u0442 +build.denied.outside = \u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u0443\u0434\u0443\u0432\u0430\u0442\u0438 \u0442\u0456\u043b\u044c\u043a\u0438 \u0432\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0456 WAR-\u0437\u043e\u043d\u044b. +build.denied.teamblock = \u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0442\u0456\u043b\u044c\u043a\u0438 \u0431\u043b\u043e\u043a\u0438 \u0432\u0430\u0448\u043e\u0457 \u043a\u043e\u043c\u0430\u043d\u0434\u0438, \u0430\u0431\u0438 \u0437\u0430\u0445\u043e\u043f\u0438\u0442\u0438 \u043c\u043e\u043d\u0443\u043c\u0435\u043d\u0442\u0438. +build.denied.zone.break = \u0411\u043b\u043e\u043a\u0438 \u0432 \u0446\u0456\u0439 WAR-\u0437\u043e\u043d\u0456 \u043d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0437\u0440\u0443\u0439\u043d\u0443\u0432\u0430\u0442\u0438! +build.denied.zone.multteam = \u0412\u0438 \u043c\u0430\u0454\u0442\u0435 {0} \u0431\u043b\u043e\u043a\u0456\u0432. +build.denied.zone.outside = \u0412\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0440\u0443\u0439\u043d\u0443\u0432\u0430\u0442\u0438 WAR-\u0437\u043e\u043d\u0443, \u0442\u043e\u043c\u0443 \u0449\u043e \u043d\u0435 \u0433\u0440\u0430\u0454\u0442\u0435 \u0432 \u043d\u0456\u0439. +build.denied.zone.place = \u0412\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0431\u043b\u043e\u043a\u0438 \u0432 \u0446\u0456\u0439 WAR-\u0437\u043e\u043d\u0456. +build.denied.zone.type = \u0412\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0446\u0435\u0439 \u0442\u0438\u043f \u0431\u043b\u043e\u043a\u0443. +command.console = \u0412\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0440\u043e\u0431\u0438\u0442\u0438 \u0446\u0435, \u044f\u043a\u0449\u043e \u043d\u0435 \u0437\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u0443 \u0433\u0440\u0456. +command.disabled = \u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0442\u0456\u043b\u044c\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0438 WAR (\u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434, /leave), \u043a\u043e\u043b\u0438 \u0412\u0438 \u0443 \u0433\u0440\u0456. +drop.bomb.broadcast = {0} \u043a\u0438\u043d\u0443\u0432 {1} \u0431\u043e\u043c\u0431\u0443! +drop.bomb.disabled = \u0412\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043a\u0438\u0434\u0430\u0442\u0438 \u0440\u0435\u0447\u0456 \u0432 \u0442\u043e\u0439 \u0447\u0430\u0441, \u043a\u043e\u043b\u0438 \u0432\u0438\u043a\u0440\u0430\u0434\u0430\u0454\u0442\u044c\u0441\u044f \u0431\u043e\u043c\u0431\u0430. \u0429\u043e \u0412\u0438 \u0440\u043e\u0431\u0438\u0442\u0435?! \u0411\u0456\u0436\u0456\u0442\u044c \u0434\u043e \u0441\u043f\u0430\u0432\u043d\u0430 \u0432\u0430\u0448\u043e\u0433\u043e \u0432\u043e\u0440\u043e\u0433\u0430! diff --git a/war/src/main/resources/messages_zh_HK.properties b/war/src/main/resources/messages_zh_HK.properties new file mode 100644 index 0000000..25ba044 --- /dev/null +++ b/war/src/main/resources/messages_zh_HK.properties @@ -0,0 +1,3 @@ +# Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) +build.denied.location = \u4f60\u4e0d\u53ef\u4ee5\u5728\u9019\u88e1\u5efa\u7bc9\uff01 +build.denied.outside = \u4f60\u53ea\u53ef\u4ee5\u5728\u6230\u5340\u5167\u5efa\u7bc9\u3002 diff --git a/war/src/main/resources/plugin.yml b/war/src/main/resources/plugin.yml index e4dea9b..b6229d3 100644 --- a/war/src/main/resources/plugin.yml +++ b/war/src/main/resources/plugin.yml @@ -1,10 +1,10 @@ -name: War -version: 1.8.1 (Nimitz) -description: Minecraft PVP arenas (called warzones) for a fast-paced and structured PVP experience with TDM, CTF & more! +name: ${project.name} +version: ${project.version} +description: ${project.description} author: tommytony -website: http://war.tommytony.com +website: ${project.url} main: com.tommytony.war.War -softdepend: [Spout, TagAPI, WorldEdit] +softdepend: [Spout, TagAPI, WorldEdit, Vault] permissions: war.*: description: Full War permissions. Create and destroy warzones. Change War configuration. diff --git a/war/src/test/java/com/tommytony/war/job/TeleportPlayerJobTest.java b/war/src/test/java/com/tommytony/war/job/TeleportPlayerJobTest.java new file mode 100644 index 0000000..2829e08 --- /dev/null +++ b/war/src/test/java/com/tommytony/war/job/TeleportPlayerJobTest.java @@ -0,0 +1,71 @@ +package com.tommytony.war.job; + +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + + +public class TeleportPlayerJobTest { + World world; + Player player; + TeleportPlayerJob job; + + @Before + public void setUp() throws Exception { + player = mock(Player.class); + world = mock(World.class); + when(world.getName()).thenReturn("world"); + when(player.getHealth()).thenReturn(20.0); + when(player.getLocation()).thenReturn(new Location(world, 0, 0, 0)); + job = new TeleportPlayerJob(player, new Location(world, 0, 0, 0)); + } + + @Test + public void testPlayerMove_noMovement_false() { + when(player.getLocation()).thenReturn(new Location(world, 0, 0, 0)); + + assertFalse(job.hasPlayerMoved()); + } + + @Test + public void testPlayerMove_smallMovement_false() { + when(player.getLocation()).thenReturn(new Location(world, 0.5, 0.5, 0.5)); + + assertFalse(job.hasPlayerMoved()); + } + + @Test + public void testPlayerMove_largeMovement_true() { + when(player.getLocation()).thenReturn(new Location(world, 5, 1, 3)); + + assertTrue(job.hasPlayerMoved()); + } + + @Test + public void testPlayerDamage_noDamage_false() { + when(player.getHealth()).thenReturn(20.0); + + assertFalse(job.hasPlayerTakenDamage()); + } + + @Test + public void testPlayerDamage_slightDamage_false() { + when(player.getHealth()).thenReturn(19.5); + + assertFalse(job.hasPlayerTakenDamage()); + } + + @Test + public void testPlayerDamage_largeDamage_true() { + when(player.getHealth()).thenReturn(14.0); + + assertTrue(job.hasPlayerTakenDamage()); + } +}