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 @@
+---