From cf40362856dfa548812a2d252ae78593758420e2 Mon Sep 17 00:00:00 2001 From: Edson Passos Date: Sun, 18 Apr 2021 14:20:47 -0300 Subject: [PATCH] v5.1.0 (#32) - Adds getGame() to PlayerWinEvent - Adds settings for blocking melee and/or ranged damage - Displays the weapon name on death messages - Merges messages "has_killed_times" and "killed_by" - Also shows the kill counts for the victim - Fixes pvp false - Fixes ArrayIndexOutOfBoundsException on EliminationTournamentGame - Probably fixes mcMMO skills during games --- crowdin.yml | 3 + pom.xml | 2 +- .../titansbattle/TitansBattle.java | 6 +- .../titansbattle/commands/TBCommands.java | 1 + .../titansbattle/events/PlayerWinEvent.java | 12 +++- .../games/EliminationTournamentGame.java | 6 +- .../titansbattle/games/FreeForAllGame.java | 4 +- .../roinujnosde/titansbattle/games/Game.java | 47 +++++++++++---- .../listeners/EntityDamageListener.java | 57 +++++++++++++++---- .../titansbattle/types/GameConfiguration.java | 17 ++++++ .../titansbattle/types/Warrior.java | 8 +++ .../titansbattle/utils/Helper.java | 3 +- src/main/resources/language-af_ZA.yml | 1 + src/main/resources/language-ar_SA.yml | 1 + src/main/resources/language-ca_ES.yml | 1 + src/main/resources/language-cs_CZ.yml | 1 + src/main/resources/language-da_DK.yml | 1 + src/main/resources/language-de_DE.yml | 1 + src/main/resources/language-el_GR.yml | 1 + src/main/resources/language-en.yml | 4 +- src/main/resources/language-en_US.yml | 1 + src/main/resources/language-es_ES.yml | 1 + src/main/resources/language-fi_FI.yml | 1 + src/main/resources/language-fr_FR.yml | 1 + src/main/resources/language-he_IL.yml | 1 + src/main/resources/language-hu_HU.yml | 1 + src/main/resources/language-it_IT.yml | 1 + src/main/resources/language-ja_JP.yml | 1 + src/main/resources/language-ko_KR.yml | 1 + src/main/resources/language-nl_NL.yml | 1 + src/main/resources/language-no_NO.yml | 1 + src/main/resources/language-pl_PL.yml | 1 + src/main/resources/language-pt_BR.yml | 24 +++----- src/main/resources/language-pt_PT.yml | 1 + src/main/resources/language-ro_RO.yml | 1 + src/main/resources/language-ru.yml | 3 +- src/main/resources/language-ru_RU.yml | 1 + src/main/resources/language-sr_SP.yml | 1 + src/main/resources/language-sv_SE.yml | 1 + src/main/resources/language-tr_TR.yml | 1 + src/main/resources/language-uk_UA.yml | 1 + src/main/resources/language-vi_VN.yml | 1 + src/main/resources/language-zh_CN.yml | 1 + src/main/resources/language-zh_TW.yml | 1 + 44 files changed, 172 insertions(+), 54 deletions(-) create mode 100644 crowdin.yml create mode 100644 src/main/resources/language-af_ZA.yml create mode 100644 src/main/resources/language-ar_SA.yml create mode 100644 src/main/resources/language-ca_ES.yml create mode 100644 src/main/resources/language-cs_CZ.yml create mode 100644 src/main/resources/language-da_DK.yml create mode 100644 src/main/resources/language-de_DE.yml create mode 100644 src/main/resources/language-el_GR.yml create mode 100644 src/main/resources/language-en_US.yml create mode 100644 src/main/resources/language-es_ES.yml create mode 100644 src/main/resources/language-fi_FI.yml create mode 100644 src/main/resources/language-fr_FR.yml create mode 100644 src/main/resources/language-he_IL.yml create mode 100644 src/main/resources/language-hu_HU.yml create mode 100644 src/main/resources/language-it_IT.yml create mode 100644 src/main/resources/language-ja_JP.yml create mode 100644 src/main/resources/language-ko_KR.yml create mode 100644 src/main/resources/language-nl_NL.yml create mode 100644 src/main/resources/language-no_NO.yml create mode 100644 src/main/resources/language-pl_PL.yml create mode 100644 src/main/resources/language-pt_PT.yml create mode 100644 src/main/resources/language-ro_RO.yml create mode 100644 src/main/resources/language-ru_RU.yml create mode 100644 src/main/resources/language-sr_SP.yml create mode 100644 src/main/resources/language-sv_SE.yml create mode 100644 src/main/resources/language-tr_TR.yml create mode 100644 src/main/resources/language-uk_UA.yml create mode 100644 src/main/resources/language-vi_VN.yml create mode 100644 src/main/resources/language-zh_CN.yml create mode 100644 src/main/resources/language-zh_TW.yml diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000..6b4b8431 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,3 @@ +files: + - source: src/main/resources/language-en.yml + translation: /src/main/resources/language-%locale_with_underscore%.%file_extension% diff --git a/pom.xml b/pom.xml index f95f2bd5..15b27e69 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 me.roinujnosde TitansBattle - 5.0.0-beta + 5.1.0 jar UTF-8 diff --git a/src/main/java/me/roinujnosde/titansbattle/TitansBattle.java b/src/main/java/me/roinujnosde/titansbattle/TitansBattle.java index d753a3b5..22180939 100644 --- a/src/main/java/me/roinujnosde/titansbattle/TitansBattle.java +++ b/src/main/java/me/roinujnosde/titansbattle/TitansBattle.java @@ -302,6 +302,10 @@ public void debug(String message, boolean respectUserDecision) { if (respectUserDecision && !configManager.isDebug()) { return; } - Bukkit.getConsoleSender().sendMessage(ChatColor.BLUE + "[TitansBattle] " + message); + getLogger().info(message); + } + + public void debug(String message) { + debug(message, true); } } diff --git a/src/main/java/me/roinujnosde/titansbattle/commands/TBCommands.java b/src/main/java/me/roinujnosde/titansbattle/commands/TBCommands.java index bf8b88be..ad66ea69 100644 --- a/src/main/java/me/roinujnosde/titansbattle/commands/TBCommands.java +++ b/src/main/java/me/roinujnosde/titansbattle/commands/TBCommands.java @@ -190,6 +190,7 @@ private void saveInventory(@NotNull CommandSender sender, @NotNull GameConfigura @CommandPermission("titansbattle.join") @Conditions("happening") public void join(Player sender) { + plugin.debug(String.format("%s used /tb join", sender.getName())); gameManager.getCurrentGame().ifPresent(g -> g.onJoin(databaseManager.getWarrior(sender.getUniqueId()))); } diff --git a/src/main/java/me/roinujnosde/titansbattle/events/PlayerWinEvent.java b/src/main/java/me/roinujnosde/titansbattle/events/PlayerWinEvent.java index 39af3060..9b343caa 100644 --- a/src/main/java/me/roinujnosde/titansbattle/events/PlayerWinEvent.java +++ b/src/main/java/me/roinujnosde/titansbattle/events/PlayerWinEvent.java @@ -23,6 +23,7 @@ */ package me.roinujnosde.titansbattle.events; +import me.roinujnosde.titansbattle.games.Game; import me.roinujnosde.titansbattle.types.Warrior; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; @@ -39,17 +40,24 @@ public class PlayerWinEvent extends Event { private static final HandlerList HANDLERS = new HandlerList(); + private final Game game; private final List players; - public PlayerWinEvent(@NotNull List players) { + public PlayerWinEvent(@NotNull Game game, @NotNull List players) { + this.game = game; this.players = players; } - public PlayerWinEvent(@NotNull Warrior warrior) { + public PlayerWinEvent(@NotNull Game game, @NotNull Warrior warrior) { + this.game = game; players = new ArrayList<>(); players.add(warrior); } + public @NotNull Game getGame() { + return game; + } + /** * Returns the winner of the event (or the first of the list, if there are more than one winner) * @return the winner of the event diff --git a/src/main/java/me/roinujnosde/titansbattle/games/EliminationTournamentGame.java b/src/main/java/me/roinujnosde/titansbattle/games/EliminationTournamentGame.java index fb773330..36b6b703 100644 --- a/src/main/java/me/roinujnosde/titansbattle/games/EliminationTournamentGame.java +++ b/src/main/java/me/roinujnosde/titansbattle/games/EliminationTournamentGame.java @@ -35,7 +35,7 @@ public EliminationTournamentGame(TitansBattle plugin, GameConfiguration config) @Override public boolean isInBattle(@NotNull Warrior warrior) { - if (!battle || !getConfig().isPvP()) { + if (!battle) { return false; } return isCurrentDuelist(warrior); @@ -43,9 +43,9 @@ public boolean isInBattle(@NotNull Warrior warrior) { private boolean isCurrentDuelist(@NotNull Warrior warrior) { if (!getConfig().isGroupMode()) { - return playerDuelists.get(0).isDuelist(warrior); + return playerDuelists.size() != 0 && playerDuelists.get(0).isDuelist(warrior); } - return groupDuelists.get(0).isDuelist(warrior.getGroup()); + return groupDuelists.size() != 0 && groupDuelists.get(0).isDuelist(warrior.getGroup()); } private List getDuelLosers(@NotNull Warrior defeated) { diff --git a/src/main/java/me/roinujnosde/titansbattle/games/FreeForAllGame.java b/src/main/java/me/roinujnosde/titansbattle/games/FreeForAllGame.java index e3b408e0..65cc5657 100644 --- a/src/main/java/me/roinujnosde/titansbattle/games/FreeForAllGame.java +++ b/src/main/java/me/roinujnosde/titansbattle/games/FreeForAllGame.java @@ -33,7 +33,7 @@ public FreeForAllGame(TitansBattle plugin, GameConfiguration config) { @Override public boolean isInBattle(@NotNull Warrior warrior) { - return getConfig().isPvP() && battle && playerParticipants.contains(warrior); + return battle && playerParticipants.contains(warrior); } @Override @@ -81,7 +81,7 @@ protected void processWinners() { getCasualties().stream().filter(p -> winnerGroup.isMember(p.getUniqueId())).forEach(winners::add); } SoundUtils.playSound(VICTORY, plugin.getConfig(), winners); - PlayerWinEvent event = new PlayerWinEvent(winners); + PlayerWinEvent event = new PlayerWinEvent(this, winners); Bukkit.getPluginManager().callEvent(event); if (killer != null) { plugin.getGameManager().setKiller(getConfig(), killer, null); diff --git a/src/main/java/me/roinujnosde/titansbattle/games/Game.java b/src/main/java/me/roinujnosde/titansbattle/games/Game.java index a745a54b..e70f793a 100644 --- a/src/main/java/me/roinujnosde/titansbattle/games/Game.java +++ b/src/main/java/me/roinujnosde/titansbattle/games/Game.java @@ -15,8 +15,11 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; import org.jetbrains.annotations.NotNull; @@ -58,6 +61,7 @@ public Game(TitansBattle plugin, GameConfiguration config) { protected boolean canJoin(@NotNull Warrior warrior) { Player player = warrior.toOnlinePlayer(); if (player == null) { + plugin.debug(String.format("canJoin() -> player %s %s == null", warrior.getName(), warrior.getUniqueId())); return false; } if (!isLobby()) { @@ -105,10 +109,14 @@ public boolean isParticipant(@NotNull Warrior warrior) { public void onJoin(@NotNull Warrior warrior) { if (!canJoin(warrior)) { + plugin.debug(String.format("Warrior %s can't join", warrior.getName())); return; } Player player = warrior.toOnlinePlayer(); - if (player == null) return; + if (player == null) { + plugin.debug(String.format("onJoin() -> player %s %s == null", warrior.getName(), warrior.getUniqueId())); + return; + } teleport(warrior, getConfig().getLobby()); SoundUtils.playSound(JOIN_GAME, plugin.getConfig(), player); playerParticipants.add(warrior); @@ -126,7 +134,7 @@ protected void setKit(@NotNull Warrior warrior) { } public boolean shouldClearDropsOnDeath(@NotNull Warrior warrior) { - return false; + return isParticipant(warrior) && config.isClearItemsOnDeath(); } public boolean shouldKeepInventoryOnDeath(@NotNull Warrior warrior) { @@ -216,9 +224,6 @@ public void onDeath(@NotNull Warrior victim, @Nullable Warrior killer) { if (!isParticipant(victim)) { return; } - if (killer == null) { - gameManager.broadcastKey("died_by_himself", this, victim.getName()); - } if (!isLobby()) { ParticipantDeathEvent event = new ParticipantDeathEvent(victim, killer); Bukkit.getPluginManager().callEvent(event); @@ -229,15 +234,33 @@ public void onDeath(@NotNull Warrior victim, @Nullable Warrior killer) { } if (killer != null) { killer.increaseKills(gameName); - gameManager.broadcastKey("killed_by", this, victim.getName(), killer.getName()); - gameManager.broadcastKey("has_killed_times", this, killer.getName(), increaseKills(killer)); + increaseKills(killer); } victim.increaseDeaths(gameName); playDeathSound(victim); } + broadcastDeathMessage(victim, killer); processPlayerExit(victim); } + @SuppressWarnings("deprecation") + protected void broadcastDeathMessage(@NotNull Warrior victim, @Nullable Warrior killer) { + if (killer == null) { + gameManager.broadcastKey("died_by_himself", this, victim.getName()); + } else { + ItemStack itemInHand = Objects.requireNonNull(killer.toOnlinePlayer()).getItemInHand(); + String weaponName = plugin.getLang("fist", this); + if (itemInHand != null && itemInHand.getType() != Material.AIR) { + ItemMeta itemMeta = itemInHand.getItemMeta(); + if (itemMeta != null && itemMeta.hasDisplayName()) { + weaponName = itemMeta.getDisplayName(); + } + } + gameManager.broadcastKey("killed_by", this, victim.getName(), + killsCount.getOrDefault(victim, 0), killer.getName(), killsCount.get(killer), weaponName); + } + } + protected abstract void onLobbyEnd(); protected boolean canStartBattle() { @@ -375,8 +398,8 @@ public HashMap getKillsCount() { return killsCount; } - protected int increaseKills(Warrior warrior) { - return killsCount.compute(warrior, (p, i) -> i == null ? 1 : i + 1); + protected void increaseKills(Warrior warrior) { + killsCount.compute(warrior, (p, i) -> i == null ? 1 : i + 1); } public void sendMessageToParticipants(@NotNull String message) { @@ -466,8 +489,12 @@ protected void teleport(@NotNull Collection collection, @NotNull Locati } protected void teleport(@Nullable Warrior warrior, Location destination) { + plugin.debug(String.format("teleport() -> destination %s", destination)); Player player = warrior != null ? warrior.toOnlinePlayer() : null; - if (player == null) return; + if (player == null) { + plugin.debug(String.format("teleport() -> warrior %s", warrior)); + return; + } player.teleport(destination); SoundUtils.playSound(TELEPORT, plugin.getConfig(), player); } diff --git a/src/main/java/me/roinujnosde/titansbattle/listeners/EntityDamageListener.java b/src/main/java/me/roinujnosde/titansbattle/listeners/EntityDamageListener.java index 8b52dc19..67bc21a5 100644 --- a/src/main/java/me/roinujnosde/titansbattle/listeners/EntityDamageListener.java +++ b/src/main/java/me/roinujnosde/titansbattle/listeners/EntityDamageListener.java @@ -5,9 +5,11 @@ import me.roinujnosde.titansbattle.managers.DatabaseManager; import me.roinujnosde.titansbattle.managers.GameManager; import me.roinujnosde.titansbattle.managers.GroupManager; +import me.roinujnosde.titansbattle.types.GameConfiguration; import me.roinujnosde.titansbattle.utils.Helper; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -34,6 +36,15 @@ public void onDamageLowest(EntityDamageEvent event) { } } + //un-cancelling so mcMMO skills can be used + //mcMMO's listener is on HIGHEST and ignoreCancelled = true, this will run before + @EventHandler(priority = EventPriority.HIGH) + public void onDamageHigh(EntityDamageEvent event) { + if (isParticipant(event.getEntity())) { + event.setCancelled(false); + } + } + private boolean isParticipant(Entity entity) { Game game = gm.getCurrentGame().orElse(null); if (game == null || !(entity instanceof Player)) { @@ -58,19 +69,41 @@ public void onDamage(EntityDamageEvent event) { } event.setCancelled(false); if (event instanceof EntityDamageByEntityEvent) { - EntityDamageByEntityEvent subEvent = (EntityDamageByEntityEvent) event; - Player attacker = Helper.getPlayerAttackerOrKiller(subEvent.getDamager()); - if (attacker == null || !game.isParticipant(dm.getWarrior(attacker.getUniqueId()))) { - return; - } - if (!game.getConfig().isGroupMode()) { - return; - } + processEntityDamageByEntityEvent(event, defender, game); + } + } + + private void processEntityDamageByEntityEvent(EntityDamageEvent event, Player defender, Game game) { + EntityDamageByEntityEvent subEvent = (EntityDamageByEntityEvent) event; + Player attacker = Helper.getPlayerAttackerOrKiller(subEvent.getDamager()); + if (!isDamageTypeAllowed(subEvent, game)) { + event.setCancelled(true); + return; + } + if (attacker != null && !game.getConfig().isPvP()) { + event.setCancelled(true); + return; + } + if (attacker == null || !game.isParticipant(dm.getWarrior(attacker.getUniqueId()))) { + return; + } + + if (!game.getConfig().isGroupMode()) { + return; + } + + GroupManager groupManager = TitansBattle.getInstance().getGroupManager(); + if (groupManager != null) { + event.setCancelled(groupManager.sameGroup(defender.getUniqueId(), attacker.getUniqueId())); + } + } - GroupManager groupManager = TitansBattle.getInstance().getGroupManager(); - if (groupManager != null) { - event.setCancelled(groupManager.sameGroup(defender.getUniqueId(), attacker.getUniqueId())); - } + private boolean isDamageTypeAllowed(EntityDamageByEntityEvent event, Game game) { + GameConfiguration config = game.getConfig(); + if (event.getDamager() instanceof Projectile) { + return config.isRangedDamage(); + } else { + return config.isMeleeDamage(); } } diff --git a/src/main/java/me/roinujnosde/titansbattle/types/GameConfiguration.java b/src/main/java/me/roinujnosde/titansbattle/types/GameConfiguration.java index e0e3ce93..77e47f63 100644 --- a/src/main/java/me/roinujnosde/titansbattle/types/GameConfiguration.java +++ b/src/main/java/me/roinujnosde/titansbattle/types/GameConfiguration.java @@ -22,6 +22,11 @@ public class GameConfiguration implements ConfigurationSerializable { private Boolean powerOfTwo = false; private Boolean killer = true; private Boolean pvp = true; + private Boolean clearItemsOnDeath = false; + @Path("damage-type.melee") + private Boolean meleeDamage = true; + @Path("damage-type.ranged") + private Boolean rangedDamage = true; @Path("minimum.groups") private Integer minimumGroups = 2; @Path("maximum.groups") @@ -215,6 +220,18 @@ public Boolean isPvP() { return pvp; } + public Boolean isClearItemsOnDeath() { + return clearItemsOnDeath; + } + + public Boolean isMeleeDamage() { + return meleeDamage; + } + + public Boolean isRangedDamage() { + return rangedDamage; + } + public Boolean isKiller() { return killer; } diff --git a/src/main/java/me/roinujnosde/titansbattle/types/Warrior.java b/src/main/java/me/roinujnosde/titansbattle/types/Warrior.java index 9eab06ee..57bf1241 100644 --- a/src/main/java/me/roinujnosde/titansbattle/types/Warrior.java +++ b/src/main/java/me/roinujnosde/titansbattle/types/Warrior.java @@ -85,6 +85,14 @@ public void sendMessage(@Nullable String message) { } } + @Override + public String toString() { + return "Warrior{" + + "name=" + player.getName() + + ", uuid=" + player.getUniqueId() + + '}'; + } + @Nullable public Player toOnlinePlayer() { return player.getPlayer(); diff --git a/src/main/java/me/roinujnosde/titansbattle/utils/Helper.java b/src/main/java/me/roinujnosde/titansbattle/utils/Helper.java index 4769f8df..7849c3ff 100644 --- a/src/main/java/me/roinujnosde/titansbattle/utils/Helper.java +++ b/src/main/java/me/roinujnosde/titansbattle/utils/Helper.java @@ -286,8 +286,7 @@ public static boolean isWinnerQuitMessageEnabled(Player player) { * @param entity the entity to investigate * @return the attacker/killer or null */ - public @Nullable - static Player getPlayerAttackerOrKiller(Entity entity) { + public static @Nullable Player getPlayerAttackerOrKiller(Entity entity) { Player investigated = null; if (entity instanceof Player) { investigated = (Player) entity; diff --git a/src/main/resources/language-af_ZA.yml b/src/main/resources/language-af_ZA.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-af_ZA.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-ar_SA.yml b/src/main/resources/language-ar_SA.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-ar_SA.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-ca_ES.yml b/src/main/resources/language-ca_ES.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-ca_ES.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-cs_CZ.yml b/src/main/resources/language-cs_CZ.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-cs_CZ.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-da_DK.yml b/src/main/resources/language-da_DK.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-da_DK.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-de_DE.yml b/src/main/resources/language-de_DE.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-de_DE.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-el_GR.yml b/src/main/resources/language-el_GR.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-el_GR.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-en.yml b/src/main/resources/language-en.yml index 744a1ba3..fcdcbe9d 100644 --- a/src/main/resources/language-en.yml +++ b/src/main/resources/language-en.yml @@ -36,12 +36,12 @@ game_is_happening: "&b» You can't join at this time!" new_killer: "&b» {0} is the new Killer!" preparation_over: "&b» The preparation time is over. FIGHT!" not_participating: "&b» You are not participating!" -killed_by: "&b» {0} was killed by {1}" +fist: "the fist" +killed_by: "&b» {0}({1}) was killed by {2}({3}) using {4}" died_by_himself: "&b» {0} died by himself!" cancelled: "&b» {0} has cancelled the game." game_expired: "&b» No winner. The game expired!" watch_to_the_end: "&b» You died, it's sad. But don't disconnect, if your group wins, you have right to the prize!" -has_killed_times: "&b» {0} has killed {1} times in the game!" who_won: "&b» Game over! Winner group is: {0}." who_won_tournament: "&b» Game over! Winners are:\n &b1# &f{0}\n &b2# &f{1}\n &b3# &f{2}" no_winner_tournament: "no winner" diff --git a/src/main/resources/language-en_US.yml b/src/main/resources/language-en_US.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-en_US.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-es_ES.yml b/src/main/resources/language-es_ES.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-es_ES.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-fi_FI.yml b/src/main/resources/language-fi_FI.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-fi_FI.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-fr_FR.yml b/src/main/resources/language-fr_FR.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-fr_FR.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-he_IL.yml b/src/main/resources/language-he_IL.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-he_IL.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-hu_HU.yml b/src/main/resources/language-hu_HU.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-hu_HU.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-it_IT.yml b/src/main/resources/language-it_IT.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-it_IT.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-ja_JP.yml b/src/main/resources/language-ja_JP.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-ja_JP.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-ko_KR.yml b/src/main/resources/language-ko_KR.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-ko_KR.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-nl_NL.yml b/src/main/resources/language-nl_NL.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-nl_NL.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-no_NO.yml b/src/main/resources/language-no_NO.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-no_NO.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-pl_PL.yml b/src/main/resources/language-pl_PL.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-pl_PL.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-pt_BR.yml b/src/main/resources/language-pt_BR.yml index 0c1272cf..f7d6d206 100644 --- a/src/main/resources/language-pt_BR.yml +++ b/src/main/resources/language-pt_BR.yml @@ -1,10 +1,10 @@ +--- title.fight: "Lutem!" wait_for_your_turn: "&b» Duelo preparado, espere a sua vez!" final_battle: "&b» A batalha final está começando!" battle_for_third_place: "&b» A batalha pelo terceiro lugar está começando!" kicked_to_adjust_duels: "&c» Desculpe, você foi expulso para ajustar o número de duelos!" action-bar-remaining-opponents: "&c{0} oponentes restantes" -list-color: "&b" maximum-players: "&b» O limite de jogadores no evento foi atingido!" maximum-groups: "&b» O limite de grupos no evento foi atingido!" maximum-players-per-group: "&b» Seu grupo já atingiu o máximo de jogadores no evento!" @@ -36,12 +36,12 @@ game_is_happening: "&b» Você não pode entrar agora!" new_killer: "&b» {0} é o novo Matador!" preparation_over: "&b» O tempo de preparação acabou. LUTEM!" not_participating: "&b» Você não está participando!" -killed_by: "&b» {0} foi morto por {1}" +fist: "o punho" +killed_by: "&b» {0}({1}) foi morto por {2}({3}) usando {4}" died_by_himself: "&b» {0} morreu sozinho!" cancelled: "&b» {0} cancelou o jogo." game_expired: "&b» Nenhum vencedor. O jogo expirou!" watch_to_the_end: "&b» Você morreu, é triste. Mas não se desconecte, se seu grupo vencer, você tem direito ao prêmio!" -has_killed_times: "&b» {0} matou {1} vezes no jogo!" who_won: "&b» Fim de jogo! O grupo vencedor é: {0}." who_won_tournament: "&b» Fim de jogo! Os vencedores são:\n &b1# &f{0}\n &b2# &f{1}\n &b3# &f{2}" no_winner_tournament: "sem vencedor" @@ -53,24 +53,14 @@ game_started: "&b» O jogo iniciou! Assista a ele usando /tb watch. Os participa game_info: "&b» Tem {0} jogadores e {1} grupos participando! Grupos: {2}." game_info_duels: "&b» Duelo atual:\n &f{0} &bx &f{1}" game_info_next_duels: "\n&bPróximos duelos:\n{2}" -game_info_duels_line: " &b{0}. &f{1} &bx &f{2}\n" player_joined: "&b» {0} entrou no jogo!" items_to_receive: "&b» Você ainda tem {0} stacks de itens para receber, limpe seu inventário e não desconecte!" clear-your-inventory: "&b» Limpe seu inventário antes de entrar neste jogo!" error-saving-game-config: "&b» Erro ao salvar a configuração do jogo!" starting_game: " \n&b» Iniciando jogo em {0} segundos! Entre usando /tb join.\n» Necessário: {1} grupos, {2} jogadores\n» Participando: {3} grupos, {4} jogadores.\n " players-ranking: - victories-title: "V" - kills-title: "K" - deaths-title: "D" - nickname-title: "Jogador" - title: "&b--- TB Ranking de Jogadores ---\n \n# %nickname-title%n-space [%v-space%v-title | %k-space%k-title | %d-space%d-title]" - line: "&b%position. %nick%n-space [%v-space%victories | %k-space%kills | %d-space%deaths]" + nickname-title: "Jogador" + title: "&b--- TB Ranking de Jogadores ---\n \n# %nickname-title%n-space [%v-space%v-title | %k-space%k-title | %d-space%d-title]" groups-ranking: - victories-title: "V" - kills-title: "K" - deaths-title: "D" - defeats-title: "D" - name-title: "Grupo" - title: "&b--- TB Ranking de Grupos ---\n \n# %name-title%n-space [%v-space%v-title |%k-space%k-title |%deaths-space%deaths-title |%defeats-space%defeats-title]" - line: "&b%position. %name%n-space [%v-space%victories |%k-space%kills |%deaths-space%deaths |%defeats-space%defeats]" \ No newline at end of file + name-title: "Grupo" + title: "&b--- TB Ranking de Grupos ---\n \n# %name-title%n-space [%v-space%v-title |%k-space%k-title |%deaths-space%deaths-title |%defeats-space%defeats-title]" diff --git a/src/main/resources/language-pt_PT.yml b/src/main/resources/language-pt_PT.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-pt_PT.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-ro_RO.yml b/src/main/resources/language-ro_RO.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-ro_RO.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-ru.yml b/src/main/resources/language-ru.yml index 371e23d9..6dd7e003 100644 --- a/src/main/resources/language-ru.yml +++ b/src/main/resources/language-ru.yml @@ -29,12 +29,11 @@ game_is_happening: "&b» Вы не можете присоединиться в new_killer: "&b» {0} новый Убийца!" preparation_over: "&b» Время подготовки подошло к концу. БОЙ!" not_participating: "&b» Вы не учавствуете!" -killed_by: "&b» {0} был убит {1}" +killed_by: "&b» {0} был убит {2}" died_by_himself: "&b» {0} закончил жизнь суецидом!" cancelled: "&b» {0} отменил игру." game_expired: "&b» Нет победителя. Игра закончилась!" watch_to_the_end: "&b» Вы погибли, это печально. Но не отключайтесь из игры: если ваша группа выиграет, Вы имеете право на приз!" -has_killed_times: "&b» {0} убил {1} раз в игре!" who_won: "&b» Игра окончена! Группа-победитель: {0}." group_defeated: "&b» {0} потеряла своего последнего участника и потерпела поражение." destination_setted: "&b» Точка телепортация в {0} была установлена." diff --git a/src/main/resources/language-ru_RU.yml b/src/main/resources/language-ru_RU.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-ru_RU.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-sr_SP.yml b/src/main/resources/language-sr_SP.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-sr_SP.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-sv_SE.yml b/src/main/resources/language-sv_SE.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-sv_SE.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-tr_TR.yml b/src/main/resources/language-tr_TR.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-tr_TR.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-uk_UA.yml b/src/main/resources/language-uk_UA.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-uk_UA.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-vi_VN.yml b/src/main/resources/language-vi_VN.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-vi_VN.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-zh_CN.yml b/src/main/resources/language-zh_CN.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-zh_CN.yml @@ -0,0 +1 @@ +--- diff --git a/src/main/resources/language-zh_TW.yml b/src/main/resources/language-zh_TW.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/src/main/resources/language-zh_TW.yml @@ -0,0 +1 @@ +---