From bc726c5a4df9dc0b5f16a59cfa0b44fe4ae28f39 Mon Sep 17 00:00:00 2001 From: Cubixmeister Date: Sat, 8 Jan 2022 22:45:15 +0100 Subject: [PATCH 01/43] deploy to kwadratowa-games-repository; disabled mc1.18 compilation --- bedwars-plugin/pom.xml | 36 ++++++++++++++++++++++++++++-------- pom.xml | 13 +++++-------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index debdf062e..c76fd302d 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -58,10 +58,10 @@ alessioDP-releases https://repo.alessiodp.com/releases/ - + @@ -175,11 +175,11 @@ versionsupport_v1_17_R1 ${project.version} - - com.andrei1058.bedwars - versionsupport_v1_18_R1 - ${project.version} - + + + + + com.andrei1058.bedwars versionsupport-common @@ -300,7 +300,27 @@ true + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.5.1 + + + default-deploy + deploy + + deploy + + + + + kwadratowa-games-repository + https://nexus.kwadratowa.games + true + + - \ No newline at end of file + diff --git a/pom.xml b/pom.xml index fcb62e0d3..823910372 100644 --- a/pom.xml +++ b/pom.xml @@ -114,17 +114,14 @@ versionsupport_1_16_R2 versionsupport_v1_16_R3 versionsupport_v1_17_R1 - versionsupport_v1_18_R1 + - ftp-repo - ftp://andrei1058.com/releases + kwadratowa-games-repository + https://nexus.kwadratowa.games/repository/kwadratowa-games/ - - ftp-repo - ftp://andrei1058.com/snapshots - - \ No newline at end of file + + From 8392679824451856f4a17b4fcda184fc55e35ed8 Mon Sep 17 00:00:00 2001 From: makindotcc <9150636+makindotcc@users.noreply.github.com> Date: Thu, 3 Mar 2022 20:40:46 +0100 Subject: [PATCH 02/43] Armor hiding should not hide items in hand --- bedwars-plugin/src/main/resources/plugin.yml | 2 +- .../support/version/v1_16_R3/v1_16_R3.java | 22 +++---------------- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/bedwars-plugin/src/main/resources/plugin.yml b/bedwars-plugin/src/main/resources/plugin.yml index 9081ccd8d..11ccc99e0 100644 --- a/bedwars-plugin/src/main/resources/plugin.yml +++ b/bedwars-plugin/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: BedWars1058 api-version: '1.13' version: ${project.version} -author: andrei1058 +author: andrei10581 description: BedWars minigame by andrei1058 main: com.andrei1058.bedwars.BedWars softdepend: [Vault,PlaceholderAPI,Citizens,Parties,SlimeWorldManager,VipFeatures,Enhanced-SlimeWorldManager] diff --git a/versionsupport_v1_16_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R3/v1_16_R3.java b/versionsupport_v1_16_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R3/v1_16_R3.java index 046665498..231428947 100644 --- a/versionsupport_v1_16_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R3/v1_16_R3.java +++ b/versionsupport_v1_16_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R3/v1_16_R3.java @@ -270,41 +270,24 @@ public void voidKill(Player p) { @Override public void hideArmor(Player victim, Player receiver) { List> items = new ArrayList<>(); - List> hands = new ArrayList<>(); - hands.add(new Pair<>(EnumItemSlot.MAINHAND, new ItemStack(net.minecraft.server.v1_16_R3.Item.getById(0)))); - hands.add(new Pair<>(EnumItemSlot.OFFHAND, new ItemStack(net.minecraft.server.v1_16_R3.Item.getById(0)))); - items.add(new Pair<>(EnumItemSlot.HEAD, new ItemStack(net.minecraft.server.v1_16_R3.Item.getById(0)))); items.add(new Pair<>(EnumItemSlot.CHEST, new ItemStack(net.minecraft.server.v1_16_R3.Item.getById(0)))); items.add(new Pair<>(EnumItemSlot.LEGS, new ItemStack(net.minecraft.server.v1_16_R3.Item.getById(0)))); items.add(new Pair<>(EnumItemSlot.FEET, new ItemStack(net.minecraft.server.v1_16_R3.Item.getById(0)))); PacketPlayOutEntityEquipment packet1 = new PacketPlayOutEntityEquipment(victim.getEntityId(), items); - PacketPlayOutEntityEquipment packet2 = new PacketPlayOutEntityEquipment(victim.getEntityId(), hands); EntityPlayer pc = ((CraftPlayer) receiver).getHandle(); - if (victim != receiver) { - pc.playerConnection.sendPacket(packet2); - } pc.playerConnection.sendPacket(packet1); } @Override public void showArmor(Player victim, Player receiver) { List> items = new ArrayList<>(); - List> hands = new ArrayList<>(); - - hands.add(new Pair<>(EnumItemSlot.MAINHAND, CraftItemStack.asNMSCopy(victim.getInventory().getItemInMainHand()))); - hands.add(new Pair<>(EnumItemSlot.OFFHAND, CraftItemStack.asNMSCopy(victim.getInventory().getItemInOffHand()))); - items.add(new Pair<>(EnumItemSlot.HEAD, CraftItemStack.asNMSCopy(victim.getInventory().getHelmet()))); items.add(new Pair<>(EnumItemSlot.CHEST, CraftItemStack.asNMSCopy(victim.getInventory().getChestplate()))); items.add(new Pair<>(EnumItemSlot.LEGS, CraftItemStack.asNMSCopy(victim.getInventory().getLeggings()))); items.add(new Pair<>(EnumItemSlot.FEET, CraftItemStack.asNMSCopy(victim.getInventory().getBoots()))); PacketPlayOutEntityEquipment packet1 = new PacketPlayOutEntityEquipment(victim.getEntityId(), items); - PacketPlayOutEntityEquipment packet2 = new PacketPlayOutEntityEquipment(victim.getEntityId(), hands); EntityPlayer pc = ((CraftPlayer) receiver).getHandle(); - if (victim != receiver) { - pc.playerConnection.sendPacket(packet2); - } pc.playerConnection.sendPacket(packet1); } @@ -657,8 +640,9 @@ public Fireball setFireballDirection(Fireball fireball, Vector vector) { @Override public void playRedStoneDot(Player player) { Color color = Color.RED; - PacketPlayOutWorldParticles particlePacket = new PacketPlayOutWorldParticles(new ParticleParamRedstone((float) color.getRed(), (float) color.getBlue(), (float) color.getGreen(), (float) 1), - true, (float) player.getLocation().getX(), (float) (player.getLocation().getY() + 2.6), (float) player.getLocation().getZ(), 0, 0, 0, 0, 0); + PacketPlayOutWorldParticles particlePacket = new PacketPlayOutWorldParticles( + new ParticleParamRedstone((float) color.getRed(), (float) color.getGreen(), (float) color.getBlue(), (float) 1), + true, player.getLocation().getX(), player.getLocation().getY() + 2.2, player.getLocation().getZ(), 0, 0, 0, 0, 1); for (Player inWorld : player.getWorld().getPlayers()) { if (inWorld.equals(player)) continue; ((CraftPlayer) inWorld).getHandle().playerConnection.sendPacket(particlePacket); From b5cb8d6d68ab8093e98f48e4f7e7babf2f43bd1e Mon Sep 17 00:00:00 2001 From: makindotcc <9150636+makindotcc@users.noreply.github.com> Date: Mon, 4 Apr 2022 20:18:17 +0200 Subject: [PATCH 03/43] Do not drop bed on destroy..... --- .../main/java/com/andrei1058/bedwars/listeners/BreakPlace.java | 1 + 1 file changed, 1 insertion(+) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java index ef9ae1413..a12b5834c 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java @@ -278,6 +278,7 @@ public void onBlockBreak(BlockBreakEvent e) { } } else { e.setCancelled(false); + e.setDropItems(false); t.setBedDestroyed(true); a.addPlayerBedDestroyed(p); PlayerBedBreakEvent breakEvent; From c01dfe9b10c70a4ecc5858abe0a95d95e55b90a6 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 20 Feb 2022 09:41:57 -0700 Subject: [PATCH 04/43] fixed PlayerGoods not restoring (#352) --- .../com/andrei1058/bedwars/api/BedWars.java | 2 + .../main/java/com/andrei1058/bedwars/API.java | 5 + .../java/com/andrei1058/bedwars/BedWars.java | 14 ++- .../com/andrei1058/bedwars/arena/Arena.java | 104 +++++++++--------- .../maprestore/internal/InternalAdapter.java | 4 + .../arena/mapreset/slime/SlimeAdapter.java | 4 + 6 files changed, 80 insertions(+), 53 deletions(-) diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/BedWars.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/BedWars.java index 4bc449416..ec181b9e1 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/BedWars.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/BedWars.java @@ -478,6 +478,8 @@ interface TeamUpgradesUtil { */ ScoreboardUtil getScoreboardUtil(); + boolean isShuttingDown(); + interface ScoreboardUtil { /** diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/API.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/API.java index 2b2f83770..347cbf86c 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/API.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/API.java @@ -436,4 +436,9 @@ public void givePlayerScoreboard(Player player, boolean delay) { public ScoreboardUtil getScoreboardUtil() { return scoreboardUtil; } + + @Override + public boolean isShuttingDown() { + return BedWars.isShuttingDown(); + } } diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 3f7b6ec3a..927d2fe2a 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -119,6 +119,7 @@ public class BedWars extends JavaPlugin { private static Economy economy; private static final String version = Bukkit.getServer().getClass().getName().split("\\.")[3]; private static String lobbyWorld = ""; + private static boolean shuttingDown = false; public static ArenaManager arenaManager = new ArenaManager(); @@ -577,16 +578,19 @@ public void onEnable() { } public void onDisable() { + shuttingDown = true; if (!serverSoftwareSupport) return; if (getServerType() == ServerType.BUNGEE) { ArenaSocket.disable(); } - try { - for (IArena a : Arena.getArenas()) { + for (IArena a : Arena.getArenas()) { + try { a.disable(); + } catch (Exception ignored) { + ignored.printStackTrace(); } - } catch (Exception ignored) { } + } private void loadArenasAndSigns() { @@ -776,6 +780,10 @@ private boolean checkSWM() { } } + public static boolean isShuttingDown() { + return shuttingDown; + } + public static void setParty(Party party) { BedWars.party = party; } diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/Arena.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/Arena.java index 54f388640..447aa77d4 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/Arena.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/Arena.java @@ -812,7 +812,7 @@ public void removePlayer(@NotNull Player p, boolean disconnect) { alive_teams++; } } - if (alive_teams == 1) { + if (alive_teams == 1 && !BedWars.isShuttingDown()) { checkWinner(); Bukkit.getScheduler().runTaskLater(BedWars.plugin, () -> changeStatus(GameState.restarting), 10L); if (team != null) { @@ -827,9 +827,9 @@ public void removePlayer(@NotNull Player p, boolean disconnect) { } } } - } else if (alive_teams == 0) { + } else if (alive_teams == 0 && !BedWars.isShuttingDown()) { Bukkit.getScheduler().runTaskLater(BedWars.plugin, () -> changeStatus(GameState.restarting), 10L); - } else { + } else if(!BedWars.isShuttingDown()) { //ReJoin feature new ReJoin(p, this, team, cacheList); } @@ -895,37 +895,39 @@ public void removePlayer(@NotNull Player p, boolean disconnect) { return; } else { this.sendToMainLobby(p); + } - /* restore player inventory */ - PlayerGoods pg = PlayerGoods.getPlayerGoods(p); - if (pg == null) { - // if there is no previous backup of the inventory send lobby items if multi arena - if (BedWars.getServerType() == ServerType.MULTIARENA) { - // Send items - Arena.sendLobbyCommandItems(p); - } - } else { - pg.restore(); + /* restore player inventory */ + PlayerGoods pg = PlayerGoods.getPlayerGoods(p); + if (pg == null) { + // if there is no previous backup of the inventory send lobby items if multi arena + if (BedWars.getServerType() == ServerType.MULTIARENA) { + // Send items + Arena.sendLobbyCommandItems(p); } + } else { + pg.restore(); } playerLocation.remove(p); for (PotionEffect pf : p.getActivePotionEffects()) { p.removePotionEffect(pf.getType()); } - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - for (Player on : Bukkit.getOnlinePlayers()) { - if (on.equals(p)) continue; - if (getArenaByPlayer(on) == null) { - BedWars.nms.spigotShowPlayer(p, on); - BedWars.nms.spigotShowPlayer(on, p); - } else { - BedWars.nms.spigotHidePlayer(p, on); - BedWars.nms.spigotHidePlayer(on, p); + if(!BedWars.isShuttingDown()) { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + for (Player on : Bukkit.getOnlinePlayers()) { + if (on.equals(p)) continue; + if (getArenaByPlayer(on) == null) { + BedWars.nms.spigotShowPlayer(p, on); + BedWars.nms.spigotShowPlayer(on, p); + } else { + BedWars.nms.spigotHidePlayer(p, on); + BedWars.nms.spigotHidePlayer(on, p); + } } - } - if (!disconnect) BedWarsScoreboard.giveScoreboard(p, null, false); - }, 5L); + if (!disconnect) BedWarsScoreboard.giveScoreboard(p, null, false); + }, 5L); + } /* Remove also the party */ if (getParty().hasParty(p)) { @@ -1033,21 +1035,21 @@ public void removeSpectator(@NotNull Player p, boolean disconnect) { } else if (getServerType() == ServerType.MULTIARENA) { this.sendToMainLobby(p); - /* restore player inventory */ - PlayerGoods pg = PlayerGoods.getPlayerGoods(p); - if (pg == null) { - // if there is no previous backup of the inventory send lobby items if multi arena - if (BedWars.getServerType() == ServerType.MULTIARENA) { - // Send items - Arena.sendLobbyCommandItems(p); - } - } else { - pg.restore(); - } + } + for (PotionEffect pf : p.getActivePotionEffects()) { + p.removePotionEffect(pf.getType()); + } - for (PotionEffect pf : p.getActivePotionEffects()) { - p.removePotionEffect(pf.getType()); + /* restore player inventory */ + PlayerGoods pg = PlayerGoods.getPlayerGoods(p); + if (pg == null) { + // if there is no previous backup of the inventory send lobby items if multi arena + if (BedWars.getServerType() == ServerType.MULTIARENA) { + // Send items + Arena.sendLobbyCommandItems(p); } + } else { + pg.restore(); } if (getServerType() == ServerType.BUNGEE) { Misc.moveToLobbyOrKick(p, this, true); @@ -1055,19 +1057,21 @@ public void removeSpectator(@NotNull Player p, boolean disconnect) { } playerLocation.remove(p); - Bukkit.getScheduler().runTask(plugin, () -> { - for (Player on : Bukkit.getOnlinePlayers()) { - if (on.equals(p)) continue; - if (getArenaByPlayer(on) == null) { - BedWars.nms.spigotShowPlayer(p, on); - BedWars.nms.spigotShowPlayer(on, p); - } else { - BedWars.nms.spigotHidePlayer(p, on); - BedWars.nms.spigotHidePlayer(on, p); + if(!BedWars.isShuttingDown()) { + Bukkit.getScheduler().runTask(plugin, () -> { + for (Player on : Bukkit.getOnlinePlayers()) { + if (on.equals(p)) continue; + if (getArenaByPlayer(on) == null) { + BedWars.nms.spigotShowPlayer(p, on); + BedWars.nms.spigotShowPlayer(on, p); + } else { + BedWars.nms.spigotHidePlayer(p, on); + BedWars.nms.spigotHidePlayer(on, p); + } } - } - if (!disconnect) BedWarsScoreboard.giveScoreboard(p, null, true); - }); + if (!disconnect) BedWarsScoreboard.giveScoreboard(p, null, true); + }); + } /* Remove also the party */ if (getParty().hasParty(p)) { diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/maprestore/internal/InternalAdapter.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/maprestore/internal/InternalAdapter.java index a40e71569..a7e55ba6c 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/maprestore/internal/InternalAdapter.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/maprestore/internal/InternalAdapter.java @@ -125,6 +125,10 @@ public void onRestart(IArena a) { @Override public void onDisable(IArena a) { + if(BedWars.isShuttingDown()) { + Bukkit.unloadWorld(a.getWorldName(), false); + return; + } Bukkit.getScheduler().runTask(getOwner(), () -> { Bukkit.unloadWorld(a.getWorldName(), false); }); diff --git a/resetadapter_slime/src/main/java/com/andrei1058/bedwars/arena/mapreset/slime/SlimeAdapter.java b/resetadapter_slime/src/main/java/com/andrei1058/bedwars/arena/mapreset/slime/SlimeAdapter.java index 6b2158ff3..a5539718b 100644 --- a/resetadapter_slime/src/main/java/com/andrei1058/bedwars/arena/mapreset/slime/SlimeAdapter.java +++ b/resetadapter_slime/src/main/java/com/andrei1058/bedwars/arena/mapreset/slime/SlimeAdapter.java @@ -154,6 +154,10 @@ public void onRestart(IArena a) { @Override public void onDisable(IArena a) { + if(api.isShuttingDown()) { + Bukkit.unloadWorld(a.getWorldName(), false); + return; + } Bukkit.getScheduler().runTask(getOwner(), () -> Bukkit.unloadWorld(a.getWorldName(), false)); } From a1bde037d24767db1e0b562e46ea7c341bdcdb95 Mon Sep 17 00:00:00 2001 From: reussy <63428864+reussy@users.noreply.github.com> Date: Sun, 20 Feb 2022 10:44:17 -0600 Subject: [PATCH 05/43] Fix TNT particles in the lobby (#378) --- .../arena/feature/SpoilPlayerTNTFeature.java | 76 +++++++------------ 1 file changed, 29 insertions(+), 47 deletions(-) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/feature/SpoilPlayerTNTFeature.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/feature/SpoilPlayerTNTFeature.java index 7d9106dc9..018d02762 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/feature/SpoilPlayerTNTFeature.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/feature/SpoilPlayerTNTFeature.java @@ -64,9 +64,8 @@ private static class ParticleTask implements Runnable { @Override public void run() { for (Player player : instance.playersWithTnt) { - if (!player.hasPotionEffect(PotionEffectType.INVISIBILITY)) { - BedWars.nms.playRedStoneDot(player); - } + if (player.hasPotionEffect(PotionEffectType.INVISIBILITY)) return; + BedWars.nms.playRedStoneDot(player); } } } @@ -74,12 +73,12 @@ public void run() { private static class TNTListener implements Listener { @EventHandler - public void onDie(PlayerKillEvent event){ + public void onDie(PlayerKillEvent event) { instance.playersWithTnt.remove(event.getVictim()); } @EventHandler - public void onLeave(PlayerLeaveArenaEvent event){ + public void onLeave(PlayerLeaveArenaEvent event) { instance.playersWithTnt.remove(event.getPlayer()); } @@ -87,12 +86,9 @@ public void onLeave(PlayerLeaveArenaEvent event){ public void onPickUp(PlayerPickupItemEvent event) { if (event.getItem().getItemStack().getType() == Material.TNT) { IArena arena = Arena.getArenaByPlayer(event.getPlayer()); - if (arena != null) { - if (instance.playersWithTnt.contains(event.getPlayer())) { - return; - } - instance.playersWithTnt.add(event.getPlayer()); - } + if (arena == null || !arena.isPlayer(event.getPlayer()) || arena.isSpectator(event.getPlayer())) return; + if (instance.playersWithTnt.contains(event.getPlayer())) return; + instance.playersWithTnt.add(event.getPlayer()); } } @@ -100,54 +96,40 @@ public void onPickUp(PlayerPickupItemEvent event) { public void onDrop(PlayerDropItemEvent event) { if (event.getItemDrop().getItemStack().getType() == Material.TNT) { IArena arena = Arena.getArenaByPlayer(event.getPlayer()); - if (arena != null) { - if (instance.playersWithTnt.contains(event.getPlayer())) { - if (!event.getPlayer().getInventory().contains(Material.TNT)) { - instance.playersWithTnt.remove(event.getPlayer()); - } - } - } + if (arena == null || !arena.isPlayer(event.getPlayer()) || arena.isSpectator(event.getPlayer())) return; + if (!instance.playersWithTnt.contains(event.getPlayer())) return; + if (event.getPlayer().getInventory().contains(Material.TNT)) return; + instance.playersWithTnt.remove(event.getPlayer()); } } @EventHandler(ignoreCancelled = true) public void onPlace(BlockPlaceEvent event) { ItemStack inHand = event.getItemInHand(); + IArena arena = Arena.getArenaByPlayer(event.getPlayer()); + if (arena == null || !arena.isPlayer(event.getPlayer()) || arena.isSpectator(event.getPlayer())) return; if (inHand.getType() == Material.TNT) { - IArena arena = Arena.getArenaByPlayer(event.getPlayer()); - if (arena != null) { - if (instance.playersWithTnt.contains(event.getPlayer())) { - Bukkit.getScheduler().runTaskLater(BedWars.plugin, - () -> { - if (!event.getPlayer().getInventory().contains(Material.TNT)) { - instance.playersWithTnt.remove(event.getPlayer()); - } - }, 1L); - } - } + if (!instance.playersWithTnt.contains(event.getPlayer())) return; + Bukkit.getScheduler().runTaskLater(BedWars.plugin, + () -> { + if (!event.getPlayer().getInventory().contains(Material.TNT)) { + instance.playersWithTnt.remove(event.getPlayer()); + } + }, 1L); } } @EventHandler(ignoreCancelled = true) public void inventorySwitch(InventoryCloseEvent event) { - if (event.getPlayer() == null) return; - if (instance.playersWithTnt.contains(event.getPlayer())) { - if (!event.getPlayer().getInventory().contains(Material.TNT)) { - instance.playersWithTnt.remove(event.getPlayer()); - } - } else { - if (event.getPlayer().getInventory().contains(Material.TNT)) { - instance.playersWithTnt.add((Player) event.getPlayer()); - } - } - } - - @EventHandler - public void onBuy(ShopBuyEvent event) { - if (event.getBuyer().getInventory().contains(Material.TNT)) { - if (!instance.playersWithTnt.contains(event.getBuyer())) { - instance.playersWithTnt.add(event.getBuyer()); - } + Player player = (Player) event.getPlayer(); + IArena arena = Arena.getArenaByPlayer(player); + if (arena == null || !arena.isPlayer(player) || arena.isSpectator(player)) return; + if (instance.playersWithTnt.contains(player)) { + if (player.getInventory().contains(Material.TNT)) return; + instance.playersWithTnt.remove(player); + } else if (!instance.playersWithTnt.contains(player)) { + if (!player.getInventory().contains(Material.TNT)) return; + instance.playersWithTnt.add(player); } } } From 4f0c7d50ccd622f5a9adbfeb045d90451c8add1c Mon Sep 17 00:00:00 2001 From: Mher Zaqaryan Date: Sun, 20 Feb 2022 20:45:00 +0400 Subject: [PATCH 06/43] fix swap issue (#357) (#366) --- .../bedwars/listeners/SwapItem.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/versionsupport_common/src/main/java/com/andrei1058/bedwars/listeners/SwapItem.java b/versionsupport_common/src/main/java/com/andrei1058/bedwars/listeners/SwapItem.java index 9547f71d8..48be6e708 100644 --- a/versionsupport_common/src/main/java/com/andrei1058/bedwars/listeners/SwapItem.java +++ b/versionsupport_common/src/main/java/com/andrei1058/bedwars/listeners/SwapItem.java @@ -21,23 +21,32 @@ package com.andrei1058.bedwars.listeners; import com.andrei1058.bedwars.api.arena.GameState; +import com.andrei1058.bedwars.support.version.common.VersionCommon; +import org.bukkit.Location; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerSwapHandItemsEvent; -import static com.andrei1058.bedwars.support.version.common.VersionCommon.api; - // Prevent item swap. public class SwapItem implements Listener { @EventHandler public void itemSwap(PlayerSwapHandItemsEvent e) { - if (e.isCancelled()) return; - if (api.getArenaUtil().isPlaying(e.getPlayer())) { - if (api.getArenaUtil().getArenaByPlayer(e.getPlayer()).getStatus() != GameState.playing) + if (e.isCancelled()) { + return; + } + if (VersionCommon.api.getArenaUtil().isPlaying(e.getPlayer())) { + if (VersionCommon.api.getArenaUtil().getArenaByPlayer(e.getPlayer()).getStatus() != GameState.playing) { e.setCancelled(true); - } else if (api.getArenaUtil().isSpectating(e.getPlayer())) { + } + } else if (VersionCommon.api.getArenaUtil().isSpectating(e.getPlayer())) { e.setCancelled(true); + } else { + Location lobbyLoc = VersionCommon.api.getConfigs().getMainConfig().getConfigLoc("lobbyLoc"); + if (lobbyLoc != null && lobbyLoc.getWorld() != null && lobbyLoc.getWorld().equals(e.getPlayer().getWorld())) { + e.setCancelled(true); + } } } -} + +} \ No newline at end of file From f675a745e3bab18b07b78da72e48ccf0c7a0f5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Dasc=C4=83lu?= Date: Sun, 20 Feb 2022 17:46:39 +0100 Subject: [PATCH 07/43] Revert "fix swap issue (#357) (#366)" (#399) This reverts commit 419f8fbe71616143c60f6e880a9d35f952e2c684. --- .../bedwars/listeners/SwapItem.java | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/versionsupport_common/src/main/java/com/andrei1058/bedwars/listeners/SwapItem.java b/versionsupport_common/src/main/java/com/andrei1058/bedwars/listeners/SwapItem.java index 48be6e708..9547f71d8 100644 --- a/versionsupport_common/src/main/java/com/andrei1058/bedwars/listeners/SwapItem.java +++ b/versionsupport_common/src/main/java/com/andrei1058/bedwars/listeners/SwapItem.java @@ -21,32 +21,23 @@ package com.andrei1058.bedwars.listeners; import com.andrei1058.bedwars.api.arena.GameState; -import com.andrei1058.bedwars.support.version.common.VersionCommon; -import org.bukkit.Location; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerSwapHandItemsEvent; +import static com.andrei1058.bedwars.support.version.common.VersionCommon.api; + // Prevent item swap. public class SwapItem implements Listener { @EventHandler public void itemSwap(PlayerSwapHandItemsEvent e) { - if (e.isCancelled()) { - return; - } - if (VersionCommon.api.getArenaUtil().isPlaying(e.getPlayer())) { - if (VersionCommon.api.getArenaUtil().getArenaByPlayer(e.getPlayer()).getStatus() != GameState.playing) { + if (e.isCancelled()) return; + if (api.getArenaUtil().isPlaying(e.getPlayer())) { + if (api.getArenaUtil().getArenaByPlayer(e.getPlayer()).getStatus() != GameState.playing) e.setCancelled(true); - } - } else if (VersionCommon.api.getArenaUtil().isSpectating(e.getPlayer())) { + } else if (api.getArenaUtil().isSpectating(e.getPlayer())) { e.setCancelled(true); - } else { - Location lobbyLoc = VersionCommon.api.getConfigs().getMainConfig().getConfigLoc("lobbyLoc"); - if (lobbyLoc != null && lobbyLoc.getWorld() != null && lobbyLoc.getWorld().equals(e.getPlayer().getWorld())) { - e.setCancelled(true); - } } } - -} \ No newline at end of file +} From bf93a5e1c57cc8ec9ded319edf66f987950a807d Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 20 Feb 2022 09:47:58 -0700 Subject: [PATCH 08/43] added %bw1058_player_status% (#350) --- .../bedwars/support/papi/PAPISupport.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/papi/PAPISupport.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/papi/PAPISupport.java index 6b0a3154f..13fe54ddc 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/papi/PAPISupport.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/papi/PAPISupport.java @@ -203,6 +203,30 @@ public String onPlaceholderRequest(Player player, String s) { case "player_rerq_xp": replay = String.valueOf(BedWars.getLevelSupport().getRequiredXp(player)); break; + case "player_status": + if(a != null) { + switch (a.getStatus()) { + case waiting: + case starting: + replay = "WAITING"; + break; + case playing: + if(a.isPlayer(player)) { + replay = "PLAYING"; + } else if(a.isSpectator(player)) { + replay = "SPECTATING"; + } else { + replay = "IN_GAME_BUT_NOT"; // this shouldnt happen + } + break; + case restarting: + replay = "RESTARTING"; + break; + } + } else { + replay = "NONE"; + } + break; case "current_arena_group": if (a != null) { replay = a.getGroup(); From be0b5217af7265b1948bb48ab28d2352c21765ec Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 20 Feb 2022 09:48:32 -0700 Subject: [PATCH 09/43] Fix spectator GUI using {prefix} instead of {vPrefix} (#345) * Fix wrong prefix placeholder being parsed in spectator teleporter * fix prefix placeholder for spectator teleporter in messages files * Fix parsing prefix instead of suffix --- .../com/andrei1058/bedwars/arena/spectator/TeleporterGUI.java | 4 ++-- .../src/main/java/com/andrei1058/bedwars/language/Bangla.java | 2 +- .../main/java/com/andrei1058/bedwars/language/English.java | 2 +- .../src/main/java/com/andrei1058/bedwars/language/Hindi.java | 2 +- .../main/java/com/andrei1058/bedwars/language/Italian.java | 2 +- .../main/java/com/andrei1058/bedwars/language/Persian.java | 2 +- .../src/main/java/com/andrei1058/bedwars/language/Polish.java | 2 +- .../main/java/com/andrei1058/bedwars/language/Romanian.java | 2 +- .../main/java/com/andrei1058/bedwars/language/Russian.java | 2 +- .../main/java/com/andrei1058/bedwars/language/Spanish.java | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/spectator/TeleporterGUI.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/spectator/TeleporterGUI.java index e7e8e9063..cd5d47087 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/spectator/TeleporterGUI.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/spectator/TeleporterGUI.java @@ -118,8 +118,8 @@ private static ItemStack createHead(Player targetPlayer, Player GUIholder) { ItemMeta im = i.getItemMeta(); assert im != null; im.setDisplayName(getMsg(GUIholder, Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME) - .replace("{prefix}", BedWars.getChatSupport().getPrefix(targetPlayer)) - .replace("{suffix}", BedWars.getChatSupport().getSuffix(targetPlayer)) + .replace("{vPrefix}", BedWars.getChatSupport().getPrefix(targetPlayer)) + .replace("{vSuffix}", BedWars.getChatSupport().getSuffix(targetPlayer)) .replace("{player}", targetPlayer.getDisplayName()) .replace("{playername}", targetPlayer.getName())); List lore = new ArrayList<>(); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Bangla.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Bangla.java index 48faae181..45b952793 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Bangla.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Bangla.java @@ -144,7 +144,7 @@ public Bangla() { yml.addDefault(Messages.ARENA_SPECTATE_DENIED_SELECTOR, "{prefix}&cDukkhito kintu apni ei muhurte arenati ke spectate korte parben na. Jog dite Left-Click bebohar korun!"); yml.addDefault(Messages.ARENA_JOIN_DENIED_NO_PROXY, "&cDukkhiyo kintu apnake BedWarsProxy use kore ekti arena join korte hobe \n&eApni ekti arena setup korte chaile nijeke bw.setup permission er onumoti den jate apni shora shori server e jog dite paren!"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teleporter"); - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Health: &f{health}%", "&7Food: &f{food}", "", "&7Spectate korte Left-Click korun")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lReturn to lobby"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Lobby leave dite Right-Click bebohar korun!")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java index 7a6fb8179..941ed426f 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java @@ -143,7 +143,7 @@ public English() { yml.addDefault(Messages.ARENA_SPECTATE_DENIED_SELECTOR, "{prefix}&cSorry but you can't spectate this arena at this moment. Use Left-Click to join!"); yml.addDefault(Messages.ARENA_JOIN_DENIED_NO_PROXY, "&cSorry but you must join an arena using BedWarsProxy. \n&eIf you want to setup an arena make sure to give yourself the bw.setup permission so you can join the server directly!"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teleporter"); - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Health: &f{health}%", "&7Food: &f{food}", "", "&7Left-click to spectate")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lReturn to lobby"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Right-click to leave to the lobby!")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Hindi.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Hindi.java index 9a8bf567b..67d283e64 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Hindi.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Hindi.java @@ -143,7 +143,7 @@ public Hindi() { yml.addDefault(Messages.ARENA_SPECTATE_DENIED_SELECTOR, "{prefix}&cKhama kare lekin is samay ap ye arena ko spectate nahi kar sakte. Join karne ke liye Left-Click kare!"); yml.addDefault(Messages.ARENA_JOIN_DENIED_NO_PROXY, "&cKhama kare lekin aapako BedWarsProxy ka upayog karke ek arena join karna padega. \n&eAgar ap ek arena setup karna chahte hai to ap khudko bw.setup permission dein taaki ap directly server join kar sake!"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teleporter"); - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Health: &f{health}%", "&7Food: &f{food}", "", "&7Spectate karne ke liye Left-click kare")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lLobby pe wapas jaye"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Lobby leave karne ke liye Right-click kare!")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Italian.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Italian.java index 7b12ec0c1..a7cca4874 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Italian.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Italian.java @@ -140,7 +140,7 @@ public Italian() { "&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬")); yml.addDefault(Messages.ARENA_STATUS_START_PLAYER_TITLE, "&aVIA"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teletrasporto"); - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Vita: &f{health}%", "&7Cibo: &f{food}", "", "&7Click-Sinistro per guardare")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lRitorna alla lobby"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Click-destro per ritornare alla lobby!")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Persian.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Persian.java index 9de135a4d..adfe03c1a 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Persian.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Persian.java @@ -144,7 +144,7 @@ public Persian() { yml.addDefault(Messages.ARENA_SPECTATE_DENIED_SELECTOR, "{prefix}&cMotasefane darhale hazer nemitoonid in arena ro spectate konid. Baraye vared shodan az Left-Click estefade konid!"); yml.addDefault(Messages.ARENA_JOIN_DENIED_NO_PROXY, "&cShoma bayad az tarighe BedWarsProxy vared bazi beshid. \n&eAgar mikhaid arena jadidi ijad konid motmaen shid ke permission bw.setup darid ta betoonid mostaghiman vared server beshid!"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teleporter"); - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Health: &f{health}%", "&7Food: &f{food}", "", "&7Left-click to spectate")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lBazgasht be lobby"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Baraye bargasht be lobby Right-click konid!")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Polish.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Polish.java index 0c4704fdc..58573ce26 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Polish.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Polish.java @@ -108,7 +108,7 @@ public Polish() { yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_DENIED_MSG, "&cWidzowie nei mają wstępu na tę arene!"); yml.addDefault(Messages.COMMAND_COOLDOWN, "&cNie możesz tego zrobić! Poczekaj {seconds}!"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teleporter"); - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Zycie: &f{health}%", "&7Jedzenie: &f{food}", "", "&7Left-click to spectate")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lPowroc do lobby"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Kliknij PPM aby wyjsc do lobby!")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Romanian.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Romanian.java index 29bea60e5..c21e06c71 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Romanian.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Romanian.java @@ -107,7 +107,7 @@ public Romanian() { yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_DENIED_MSG, "&cSpectatorii nu sunt permisi in aceasta arena!"); yml.addDefault(Messages.COMMAND_COOLDOWN, "&cNu poti face asta inca! Mai asteapta {seconds} secunde!"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teleportor"); - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Viata: &f{health}%", "&7Hrana: &f{food}", "", "&7Click-stanca pentru a urmari.")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lIntoarce-te in lobby"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Click-dreapta pentru a merge in lobby!")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Russian.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Russian.java index 3bde407f8..c59d1310c 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Russian.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Russian.java @@ -421,7 +421,7 @@ public Russian() { yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_MSG, "{prefix}§6Ты теперь наблюдаешь за §9{arena}§6.\n{prefix}§eДля выхода с арены используй §c/leave§e."); yml.addDefault(Messages.INTERACT_CHEST_CANT_OPEN_TEAM_ELIMINATED, "&cТы не можешь открыть этот сундук, так как команда уничтожена!"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Телепортер"); // Да-да :D - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Здоровье: &f{health}%", "&7Насыщенность: &f{food}", "", "&7ЛКМ для слежки")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lВернутья в лобби"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Щелкните правой кнопкой мыши, чтобы вернуться в лобби!")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Spanish.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Spanish.java index e373f9cf5..547a4ffcf 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Spanish.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Spanish.java @@ -319,7 +319,7 @@ public Spanish() { yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_MSG, "{prefix}§6Estas ahora espectando la arena §9{arena}§6.\n{prefix}§ePuedes dejar la arena en cualquier momento escribiendo §c/leave§e."); yml.addDefault(Messages.INTERACT_CHEST_CANT_OPEN_TEAM_ELIMINATED, "&cNo puedes abrir este cofre ya que el equipo ha sido totalmente eliminado!"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&lTransportador"); - yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Salud: &f{health}%", "&7Comida: &f{food}", "", "&7Click-Izquierdo para espectar al jugador.")); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lRegresar al Lobby"); yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Click-Derecho para regresar al lobby!")); From 0e036b2d95977496bac9e5f55df614bcf9e675b5 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 20 Feb 2022 09:48:55 -0700 Subject: [PATCH 10/43] Make default bug report use comments (#348) So that its easier to see that people just put a blank bug report --- .github/ISSUE_TEMPLATE/bug_report.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 82c021c1a..7b129bff9 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,28 +10,33 @@ assignees: '' **Describe the bug** -A clear and concise description of what the bug is. + **To Reproduce** Steps to reproduce the behavior: + **Expected behavior** -A clear and concise description of what you expected to happen. + **Screenshots** -If applicable, add screenshots to help explain your problem. + **System (please complete the following information):** - - OS: [e.g. MacOS, Windows Server, Linux] - - Server software [e.g. spigot, paper] - - Server Version [e.g. 1.8.8] - - Plugin Version [e.g. 21.11.2] + - OS: + - Server software + - Server Version + - Plugin Version **Additional context** -Add any other context about the problem here. + From e326545c1348720b5c3f418007d00c4e88d296d9 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 20 Feb 2022 09:50:19 -0700 Subject: [PATCH 11/43] Fix vault when no chat/eco provider exists (#344) * fix vault when no chat/eco provider exists * ed --- .../java/com/andrei1058/bedwars/BedWars.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 927d2fe2a..838da0975 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -422,7 +422,7 @@ public void onEnable() { /* PlaceholderAPI Support */ if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { - getLogger().info("Hook into PlaceholderAPI support!"); + getLogger().info("Hooked into PlaceholderAPI support!"); new PAPISupport().register(); SupportPAPI.setSupportPAPI(new SupportPAPI.withPAPI()); } @@ -436,9 +436,14 @@ public void onEnable() { try { //noinspection rawtypes RegisteredServiceProvider rsp = this.getServer().getServicesManager().getRegistration(net.milkbowl.vault.chat.Chat.class); - WithChat.setChat((net.milkbowl.vault.chat.Chat) rsp.getProvider()); - plugin.getLogger().info("Hook into vault chat support!"); - chat = new WithChat(); + if(rsp != null) { + WithChat.setChat((net.milkbowl.vault.chat.Chat) rsp.getProvider()); + plugin.getLogger().info("Hooked into vault chat support!"); + chat = new WithChat(); + } else { + plugin.getLogger().info("Vault found, but no chat provider!"); + economy = new NoEconomy(); + } } catch (Exception var2_2) { chat = new NoChat(); } @@ -447,9 +452,12 @@ public void onEnable() { RegisteredServiceProvider rsp = this.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); if (rsp != null) { WithEconomy.setEconomy(rsp.getProvider()); + plugin.getLogger().info("Hooked into vault economy support!"); + economy = new WithEconomy(); + } else { + plugin.getLogger().info("Vault found, but no economy provider!"); + economy = new NoEconomy(); } - plugin.getLogger().info("Hook into vault economy support!"); - economy = new WithEconomy(); } catch (Exception var2_2) { economy = new NoEconomy(); } From ba653d5b9490c47d6bdbf56afc57c8be96996bd5 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 20 Feb 2022 09:50:52 -0700 Subject: [PATCH 12/43] Fix xp number formatting (#343) * fix xp number formatting fixes #297 * whoops * whoops, forgot this one * foorgot about decimals --- .../bedwars/levels/internal/PlayerLevel.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/levels/internal/PlayerLevel.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/levels/internal/PlayerLevel.java index 78774d300..29ae1d4bc 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/levels/internal/PlayerLevel.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/levels/internal/PlayerLevel.java @@ -27,6 +27,8 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import java.math.RoundingMode; +import java.text.NumberFormat; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -105,8 +107,8 @@ private void updateProgressBar() { progressBar = ChatColor.translateAlternateColorCodes('&', LevelsConfig.levels.getString("progress-bar.format").replace("{progress}", LevelsConfig.levels.getString("progress-bar.unlocked-color") + String.valueOf(new char[unlocked]).replace("\0", LevelsConfig.levels.getString("progress-bar.symbol")) + LevelsConfig.levels.getString("progress-bar.locked-color") + String.valueOf(new char[locked]).replace("\0", LevelsConfig.levels.getString("progress-bar.symbol")))); - requiredXp = nextLevelCost >= 1000 ? nextLevelCost % 1000 == 0 ? nextLevelCost / 1000 + "k" : (double) nextLevelCost / 1000 + "k" : String.valueOf(nextLevelCost); - formattedCurrentXp = currentXp >= 1000 ? currentXp % 1000 == 0 ? currentXp / 1000 + "k" : (double) currentXp / 1000 + "k" : String.valueOf(currentXp); + requiredXp = formatNumber(nextLevelCost); + formattedCurrentXp = formatNumber(currentXp); } /** @@ -218,13 +220,24 @@ public void upgradeLevel() { level++; nextLevelCost = LevelsConfig.getNextCost(level); this.levelName = ChatColor.translateAlternateColorCodes('&', LevelsConfig.getLevelName(level)).replace("{number}", String.valueOf(level)); - requiredXp = nextLevelCost >= 1000 ? nextLevelCost % 1000 == 0 ? nextLevelCost / 1000 + "k" : (double) nextLevelCost / 1000 + "k" : String.valueOf(nextLevelCost); - formattedCurrentXp = currentXp >= 1000 ? currentXp % 1000 == 0 ? currentXp / 1000 + "k" : (double) currentXp / 1000 + "k" : String.valueOf(currentXp); + requiredXp = formatNumber(nextLevelCost); + formattedCurrentXp = formatNumber(currentXp); Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(Bukkit.getPlayer(getUuid()), level, nextLevelCost)); modified = true; } } + private String formatNumber(int score) { + NumberFormat format = NumberFormat.getInstance(); + format.setMaximumFractionDigits(2); + format.setMinimumFractionDigits(0); + + if (score >= 1000) { + return format.format(score/1000.0)+"k"; + } + return format.format(score); + } + /** * Get player level as int. */ From 62180a2a0cab5e021e9ba0cc133ae00b7f2db2d1 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 20 Feb 2022 09:51:49 -0700 Subject: [PATCH 13/43] Add sound on kill (#335) * add sound on kill * allow addons to not play kill sound via api --- .../bedwars/api/configuration/ConfigPath.java | 1 + .../api/events/player/PlayerKillEvent.java | 15 +++++++++++++++ .../andrei1058/bedwars/configuration/Sounds.java | 2 ++ .../bedwars/listeners/DamageDeathMove.java | 5 +++++ 4 files changed, 23 insertions(+) diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java index 600c5afe0..937b9ee6f 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java @@ -180,6 +180,7 @@ public class ConfigPath { public static final String SOUNDS_BED_DESTROY_OWN = "bed-destroy-own"; public static final String SOUNDS_INSUFF_MONEY = "shop-insufficient-money"; public static final String SOUNDS_BOUGHT = "shop-bought"; + public static final String SOUNDS_KILL = "kill"; public static final String SIGNS_STATUS_BLOCK_WAITING_MATERIAL = "status-block.waiting.material"; public static final String SIGNS_STATUS_BLOCK_WAITING_DATA = "status-block.waiting.data"; diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/player/PlayerKillEvent.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/player/PlayerKillEvent.java index 82a84a70c..40198608d 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/player/PlayerKillEvent.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/player/PlayerKillEvent.java @@ -35,6 +35,7 @@ public class PlayerKillEvent extends Event { private final Player killer; private final PlayerKillCause cause; private Function message; + private boolean playSound = true; /** * Called when a Player got killed during the game. @@ -137,6 +138,20 @@ public Player getVictim() { return victim; } + /** + * Checks if the killer gets the kill sound + */ + public boolean playSound() { + return playSound; + } + + /** + * Set if the killer should get the kill sound + */ + public void setPlaySound(boolean playSound) { + this.playSound = playSound; + } + public HandlerList getHandlers() { return HANDLERS; } diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/Sounds.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/Sounds.java index 2ff720690..cf45784fc 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/Sounds.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/Sounds.java @@ -62,6 +62,8 @@ public static void init() { addDefSound(SOUNDS_COUNTDOWN_TICK_X + "1", BedWars.getForCurrentVersion("CHICKEN_EGG_POP", "ENTITY_CHICKEN_EGG", "ENTITY_CHICKEN_EGG")); addDefSound(SOUND_GAME_START, BedWars.getForCurrentVersion("SLIME_ATTACK", "BLOCK_SLIME_FALL", "BLOCK_SLIME_BLOCK_FALL")); + addDefSound(SOUNDS_KILL, BedWars.getForCurrentVersion("ORB_PICKUP", "ENTITY_EXPERIENCE_ORB_PICKUP", "ENTITY_EXPERIENCE_ORB_PICKUP")); + addDefSound(SOUNDS_BED_DESTROY, BedWars.getForCurrentVersion("ENDERDRAGON_GROWL", "ENTITY_ENDERDRAGON_GROWL", "ENTITY_ENDER_DRAGON_GROWL")); addDefSound(SOUNDS_BED_DESTROY_OWN, BedWars.getForCurrentVersion("WITHER_DEATH", "ENTITY_WITHER_DEATH", "ENTITY_WITHER_DEATH")); addDefSound(SOUNDS_INSUFF_MONEY, BedWars.getForCurrentVersion("VILLAGER_NO", "ENTITY_VILLAGER_NO", "ENTITY_VILLAGER_NO")); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java index ca6cdaab6..5f6cab23b 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java @@ -37,6 +37,7 @@ import com.andrei1058.bedwars.arena.LastHit; import com.andrei1058.bedwars.arena.SetupSession; import com.andrei1058.bedwars.arena.team.BedWarsTeam; +import com.andrei1058.bedwars.configuration.Sounds; import com.andrei1058.bedwars.listeners.dropshandler.PlayerDrops; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -346,6 +347,7 @@ public void onDeath(PlayerDeathEvent e) { victim.spigot().respawn(); return; } + BedWars.nms.clearArrowsFromPlayerBody(victim); String message = victimsTeam.isBedDestroyed() ? Messages.PLAYER_DIE_UNKNOWN_REASON_FINAL_KILL : Messages.PLAYER_DIE_UNKNOWN_REASON_REGULAR; PlayerKillEvent.PlayerKillCause cause = victimsTeam.isBedDestroyed() ? PlayerKillEvent.PlayerKillCause.UNKNOWN_FINAL_KILL : PlayerKillEvent.PlayerKillCause.UNKNOWN; @@ -434,6 +436,9 @@ public void onDeath(PlayerDeathEvent e) { String finalMessage = message; PlayerKillEvent playerKillEvent = new PlayerKillEvent(a, victim, killer, player -> Language.getMsg(player, finalMessage), cause); Bukkit.getPluginManager().callEvent(playerKillEvent); + if(killer != null && playerKillEvent.playSound()) { + Sounds.playSound(ConfigPath.SOUNDS_KILL, killer); + } for (Player on : a.getPlayers()) { Language lang = Language.getPlayerLanguage(on); on.sendMessage(playerKillEvent.getMessage().apply(on). From a0acbc90c94067a66b6158f391bc39bff26e7483 Mon Sep 17 00:00:00 2001 From: "J.T. McQuigg" Date: Sun, 20 Feb 2022 11:54:30 -0500 Subject: [PATCH 14/43] Parties and Friends (#327) * Added Party and Friends for Spigot support, and updated dependencies and rewrote party plugin selector * removed extra repo (oops) * Code clean up Cleaned up PAF.java * Update depo * updates to repos and depos * Update maven.yml * Faster party and friends implementation * Added party support for the extended bungeecord version of Party and Friends This commit adds support for Party and Friends for Bungeecord Extended Edition. [Spigot Party API for Party and Friends Extended ](https://www.spigotmc.org/resources/spigot-party-api-for-party-and-friends-extended-redisbungee-required.39751/) is required. * Fixed possible NPE in Party and Friends for Bungeecord support implementation * Update maven.yml * Changed name of PAFSpigot dependency * Update pom.xml * bug fix * Update plugin.yml Co-authored-by: Simonsator <00pflaume@gmail.com> --- .github/workflows/maven.yml | 4 +- bedwars-plugin/pom.xml | 42 ++++++++- .../java/com/andrei1058/bedwars/BedWars.java | 22 +++-- .../andrei1058/bedwars/support/party/PAF.java | 86 +++++++++++++++++++ .../support/party/PAFBungeecordRedisApi.java | 86 +++++++++++++++++++ bedwars-plugin/src/main/resources/plugin.yml | 4 +- 6 files changed, 229 insertions(+), 15 deletions(-) create mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAF.java create mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAFBungeecordRedisApi.java diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 7233312bc..bd9632e0c 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -12,10 +12,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.17 + - name: Set up JDK 17.0.2 uses: actions/setup-java@v2 with: - java-version: 17 + java-version: '17.0.2' distribution: 'adopt' - name: Build with Maven run: mvn clean install --file pom.xml -s ci_settings.xml diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index c76fd302d..2dc892cf7 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -22,6 +22,10 @@ + + simonsators-repo + https://simonsator.de/repo/ + citizens https://repo.citizensnpcs.co/ @@ -65,22 +69,52 @@ + + de.simonsator + Party-and-Friends-MySQL-Edition-Spigot-API + 1.5.1 + provided + + + be.maximvdw + MVdWPlaceholderAPI + + + + + de.simonsator + Spigot-Party-API-For-RedisBungee + 1.0.2-SNAPSHOT + provided + + + be.maximvdw + MVdWPlaceholderAPI + + + org.bstats bstats-bukkit - 2.2.1 + 3.0.0 true + + de.simonsator + DevelopmentPAFSpigot + 1.0.65 + provided + com.alessiodp.parties parties-api - 3.0.2 + 3.1.14 provided net.citizensnpcs citizens - 2.0.25-SNAPSHOT + 2.0.29-SNAPSHOT provided @@ -194,7 +228,7 @@ me.clip placeholderapi - 2.10.9 + 2.11.1 provided diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 838da0975..5172a3129 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -69,6 +69,8 @@ import com.andrei1058.bedwars.support.papi.PAPISupport; import com.andrei1058.bedwars.support.papi.SupportPAPI; import com.andrei1058.bedwars.support.party.NoParty; +import com.andrei1058.bedwars.support.party.PAF; +import com.andrei1058.bedwars.support.party.PAFBungeecordRedisApi; import com.andrei1058.bedwars.support.party.Parties; import com.andrei1058.bedwars.support.preloadedparty.PrePartyListener; import com.andrei1058.bedwars.support.vault.*; @@ -305,7 +307,7 @@ public void onEnable() { } } else if (getServerType() == ServerType.MULTIARENA || getServerType() == ServerType.SHARED) { registerEvents(new ArenaSelectorListener(), new BlockStatusListener()); - if (getServerType() == ServerType.MULTIARENA){ + if (getServerType() == ServerType.MULTIARENA) { registerEvents(new JoinListenerMultiArena()); } else { registerEvents(new JoinListenerShared()); @@ -314,7 +316,7 @@ public void onEnable() { registerEvents(new WorldLoadListener()); - if (!(getServerType() == ServerType.BUNGEE && autoscale)){ + if (!(getServerType() == ServerType.BUNGEE && autoscale)) { registerEvents(new JoinHandlerCommon()); } @@ -344,12 +346,18 @@ public void onEnable() { /* Party support */ Bukkit.getScheduler().runTaskLater(this, () -> { if (config.getYml().getBoolean(ConfigPath.GENERAL_CONFIGURATION_ALLOW_PARTIES)) { - if (Bukkit.getPluginManager().getPlugin("Parties") != null) { - if (getServer().getPluginManager().getPlugin("Parties").isEnabled()) { - getLogger().info("Hook into Parties (by AlessioDP) support!"); - party = new Parties(); - } + + if (getServer().getPluginManager().isPluginEnabled("Parties")) { + getLogger().info("Hook into Parties (by AlessioDP) support!"); + party = new Parties(); + } else if (Bukkit.getServer().getPluginManager().isPluginEnabled("PartyAndFriends")) { + getLogger().info("Hook into Party and Friends for Spigot (by Simonsator) support!"); + party = new PAF(); + } else if (Bukkit.getServer().getPluginManager().isPluginEnabled("Spigot-Party-API-PAF")) { + getLogger().info("Hook into Spigot Party API for Party and Friends Extended (by Simonsator) support!"); + party = new PAFBungeecordRedisApi(); } + if (party instanceof NoParty) { party = new com.andrei1058.bedwars.support.party.Internal(); getLogger().info("Loading internal Party system. /party"); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAF.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAF.java new file mode 100644 index 000000000..589ae30c2 --- /dev/null +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAF.java @@ -0,0 +1,86 @@ +package com.andrei1058.bedwars.support.party; + +import com.andrei1058.bedwars.api.party.Party; +import de.simonsator.partyandfriends.api.pafplayers.OnlinePAFPlayer; +import de.simonsator.partyandfriends.api.pafplayers.PAFPlayerManager; +import de.simonsator.partyandfriends.api.party.PartyManager; +import de.simonsator.partyandfriends.api.party.PlayerParty; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class PAF implements Party { + //Party and Friends for Spigot Support by JT122406 + @Override + public boolean hasParty(Player p) { + return getPAFParty(p) != null; + } + + private PlayerParty getPAFParty(Player p) { + OnlinePAFPlayer pafPlayer = PAFPlayerManager.getInstance().getPlayer(p); + return PartyManager.getInstance().getParty(pafPlayer); + } + + @Override + public int partySize(Player p) { + PlayerParty party = getPAFParty(p); + if (party == null) + return 0; + return party.getAllPlayers().size(); + } + + @Override + public boolean isOwner(Player p) { + OnlinePAFPlayer pafPlayer = PAFPlayerManager.getInstance().getPlayer(p); + PlayerParty party = PartyManager.getInstance().getParty(pafPlayer); + if (party == null) + return false; + return party.isLeader(pafPlayer); + } + + @Override + public List getMembers(Player owner) { + ArrayList playerList = new ArrayList<>(); + PlayerParty party = getPAFParty(owner); + if (party == null) + return playerList; + for (OnlinePAFPlayer players : party.getAllPlayers()) { + playerList.add(players.getPlayer()); + } + return playerList; + } + + @Override + public void createParty(Player owner, Player... members) { + } + + @Override + public void addMember(Player owner, Player member) { + } + + @Override + public void removeFromParty(Player member) { + } + + @Override + public void disband(Player owner) { + } + + @Override + public boolean isMember(Player owner, Player check) { + PlayerParty party = getPAFParty(owner); + if (party == null) + return false; + return party.isInParty(PAFPlayerManager.getInstance().getPlayer(check)); + } + + @Override + public void removePlayer(Player owner, Player target) { + } + + @Override + public boolean isInternal() { + return false; + } +} diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAFBungeecordRedisApi.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAFBungeecordRedisApi.java new file mode 100644 index 000000000..ffeb932e7 --- /dev/null +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAFBungeecordRedisApi.java @@ -0,0 +1,86 @@ +package com.andrei1058.bedwars.support.party; + +import com.andrei1058.bedwars.api.party.Party; +import de.simonsator.partyandfriends.spigot.api.pafplayers.PAFPlayer; +import de.simonsator.partyandfriends.spigot.api.pafplayers.PAFPlayerManager; +import de.simonsator.partyandfriends.spigot.api.party.PartyManager; +import de.simonsator.partyandfriends.spigot.api.party.PlayerParty; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class PAFBungeecordRedisApi implements Party { + //Party and Friends Extended for BungeeCord Support by JT122406 + @Override + public boolean hasParty(Player p) { + return getPAFParty(p) == null; + } + + private PlayerParty getPAFParty(Player p) { + PAFPlayer pafPlayer = PAFPlayerManager.getInstance().getPlayer(p.getUniqueId()); + return PartyManager.getInstance().getParty(pafPlayer); + } + + @Override + public int partySize(Player p) { + return getMembers(p).size(); + } + + @Override + public boolean isOwner(Player p) { + PAFPlayer pafPlayer = PAFPlayerManager.getInstance().getPlayer(p.getUniqueId()); + PlayerParty party = PartyManager.getInstance().getParty(pafPlayer); + if (party == null) + return false; + return party.isLeader(pafPlayer); + } + + @Override + public List getMembers(Player owner) { + ArrayList playerList = new ArrayList<>(); + PlayerParty party = getPAFParty(owner); + if (party == null) + return playerList; + for (PAFPlayer players : party.getAllPlayers()) { + Player bukkitPlayer = Bukkit.getPlayer(players.getUniqueId()); + if (bukkitPlayer != null) + playerList.add(bukkitPlayer); + } + return playerList; + } + + @Override + public void createParty(Player owner, Player... members) { + } + + @Override + public void addMember(Player owner, Player member) { + } + + @Override + public void removeFromParty(Player member) { + } + + @Override + public void disband(Player owner) { + } + + @Override + public boolean isMember(Player owner, Player check) { + PlayerParty party = getPAFParty(owner); + if (party == null) + return false; + return party.isInParty(PAFPlayerManager.getInstance().getPlayer(check.getUniqueId())); + } + + @Override + public void removePlayer(Player owner, Player target) { + } + + @Override + public boolean isInternal() { + return false; + } +} diff --git a/bedwars-plugin/src/main/resources/plugin.yml b/bedwars-plugin/src/main/resources/plugin.yml index 11ccc99e0..7628330f6 100644 --- a/bedwars-plugin/src/main/resources/plugin.yml +++ b/bedwars-plugin/src/main/resources/plugin.yml @@ -4,5 +4,5 @@ version: ${project.version} author: andrei10581 description: BedWars minigame by andrei1058 main: com.andrei1058.bedwars.BedWars -softdepend: [Vault,PlaceholderAPI,Citizens,Parties,SlimeWorldManager,VipFeatures,Enhanced-SlimeWorldManager] -load: STARTUP \ No newline at end of file +softdepend: [Vault,PlaceholderAPI,Citizens,Parties,SlimeWorldManager,VipFeatures,Enhanced-SlimeWorldManager,PartyAndFriends] +load: STARTUP From 7e5bb7b9d36cbc2bd6f14dab21c22b5e902c6bac Mon Sep 17 00:00:00 2001 From: nicegamer7 Date: Sun, 20 Feb 2022 11:56:05 -0500 Subject: [PATCH 15/43] remove death message in lobby (MULTIARENA only) and in game (#280) --- .../com/andrei1058/bedwars/listeners/DamageDeathMove.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java index 5f6cab23b..cfa454552 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java @@ -323,10 +323,12 @@ public void onDamageByEntity(EntityDamageByEntityEvent e) { @EventHandler public void onDeath(PlayerDeathEvent e) { - e.setDeathMessage(null); Player victim = e.getEntity(), killer = e.getEntity().getKiller(); ITeam killersTeam = null; IArena a = Arena.getArenaByPlayer(victim); + if ((BedWars.getServerType() == ServerType.MULTIARENA && BedWars.getLobbyWorld().equals(e.getEntity().getWorld().getName())) || a != null) { + e.setDeathMessage(null); + } if (a != null) { if (a.isSpectator(victim)) { victim.spigot().respawn(); From 40397fcbf569d573e185ad15586acd62f3bef8db Mon Sep 17 00:00:00 2001 From: "J.T. McQuigg" Date: Tue, 1 Mar 2022 16:59:16 -0500 Subject: [PATCH 16/43] PAF Improvements (#421) * Repo updates * Party and Friends Improvements --- bedwars-plugin/pom.xml | 2 +- .../andrei1058/bedwars/support/party/PAF.java | 27 +++++++++++++++---- versionsupport_v1_16_R3/pom.xml | 2 +- versionsupport_v1_18_R1/pom.xml | 2 +- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index 2dc892cf7..0df0f4e6c 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -102,7 +102,7 @@ de.simonsator DevelopmentPAFSpigot - 1.0.65 + 1.0.66 provided diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAF.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAF.java index 589ae30c2..508e8a240 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAF.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAF.java @@ -12,16 +12,16 @@ public class PAF implements Party { //Party and Friends for Spigot Support by JT122406 - @Override - public boolean hasParty(Player p) { - return getPAFParty(p) != null; - } - private PlayerParty getPAFParty(Player p) { OnlinePAFPlayer pafPlayer = PAFPlayerManager.getInstance().getPlayer(p); return PartyManager.getInstance().getParty(pafPlayer); } + @Override + public boolean hasParty(Player p) { + return getPAFParty(p) != null; + } + @Override public int partySize(Player p) { PlayerParty party = getPAFParty(p); @@ -53,18 +53,33 @@ public List getMembers(Player owner) { @Override public void createParty(Player owner, Player... members) { + OnlinePAFPlayer pafPlayer = PAFPlayerManager.getInstance().getPlayer(owner); + PlayerParty party = PartyManager.getInstance().createParty(pafPlayer); + party.setPrivateState(false); + for (Player p1 : members){ + party.addPlayer(PAFPlayerManager.getInstance().getPlayer(p1)); + } + party.setPrivateState(true); } @Override public void addMember(Player owner, Player member) { + OnlinePAFPlayer pafPlayer = PAFPlayerManager.getInstance().getPlayer(owner); + PlayerParty party = pafPlayer.getParty(); + party.setPrivateState(false); + party.addPlayer(PAFPlayerManager.getInstance().getPlayer(member)); + party.setPrivateState(true); } @Override public void removeFromParty(Player member) { + PlayerParty p = PAFPlayerManager.getInstance().getPlayer(member).getParty(); + p.leaveParty(PAFPlayerManager.getInstance().getPlayer(member)); } @Override public void disband(Player owner) { + PartyManager.getInstance().deleteParty(PartyManager.getInstance().getParty(PAFPlayerManager.getInstance().getPlayer(owner))); } @Override @@ -77,6 +92,8 @@ public boolean isMember(Player owner, Player check) { @Override public void removePlayer(Player owner, Player target) { + PlayerParty p = getPAFParty(owner); + p.leaveParty(PAFPlayerManager.getInstance().getPlayer(target)); } @Override diff --git a/versionsupport_v1_16_R3/pom.xml b/versionsupport_v1_16_R3/pom.xml index bc4bd08c6..729138e15 100644 --- a/versionsupport_v1_16_R3/pom.xml +++ b/versionsupport_v1_16_R3/pom.xml @@ -29,7 +29,7 @@ org.spigotmc spigot - 1.16.4-R0.1-SNAPSHOT + 1.16.5-R0.1-SNAPSHOT jar provided diff --git a/versionsupport_v1_18_R1/pom.xml b/versionsupport_v1_18_R1/pom.xml index 581ee8440..7da6f0f4d 100644 --- a/versionsupport_v1_18_R1/pom.xml +++ b/versionsupport_v1_18_R1/pom.xml @@ -29,7 +29,7 @@ org.spigotmc spigot - 1.18-R0.1-SNAPSHOT + 1.18.1-R0.1-SNAPSHOT jar provided From 636d602ea2f4b1958facfd753f2dcae76916e897 Mon Sep 17 00:00:00 2001 From: "J.T. McQuigg" Date: Wed, 2 Mar 2022 13:39:10 -0500 Subject: [PATCH 17/43] Parties by alessio improvements (#422) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * parties by alessio improvements * clean up Co-authored-by: Andrei Dascălu --- .../java/com/andrei1058/bedwars/BedWars.java | 8 +- .../bedwars/support/party/Parties.java | 117 ----------- .../bedwars/support/party/PartiesAdapter.java | 181 ++++++++++++++++++ 3 files changed, 185 insertions(+), 121 deletions(-) delete mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/Parties.java create mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PartiesAdapter.java diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 5172a3129..7462eba3e 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -71,7 +71,7 @@ import com.andrei1058.bedwars.support.party.NoParty; import com.andrei1058.bedwars.support.party.PAF; import com.andrei1058.bedwars.support.party.PAFBungeecordRedisApi; -import com.andrei1058.bedwars.support.party.Parties; +import com.andrei1058.bedwars.support.party.PartiesAdapter; import com.andrei1058.bedwars.support.preloadedparty.PrePartyListener; import com.andrei1058.bedwars.support.vault.*; import com.andrei1058.bedwars.support.vipfeatures.VipFeatures; @@ -349,7 +349,7 @@ public void onEnable() { if (getServer().getPluginManager().isPluginEnabled("Parties")) { getLogger().info("Hook into Parties (by AlessioDP) support!"); - party = new Parties(); + party = new PartiesAdapter(); } else if (Bukkit.getServer().getPluginManager().isPluginEnabled("PartyAndFriends")) { getLogger().info("Hook into Party and Friends for Spigot (by Simonsator) support!"); party = new PAF(); @@ -602,8 +602,8 @@ public void onDisable() { for (IArena a : Arena.getArenas()) { try { a.disable(); - } catch (Exception ignored) { - ignored.printStackTrace(); + } catch (Exception ex) { + ex.printStackTrace(); } } diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/Parties.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/Parties.java deleted file mode 100644 index edbd935a0..000000000 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/Parties.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * BedWars1058 - A bed wars mini-game. - * Copyright (C) 2021 Andrei Dascălu - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * Contact e-mail: andrew.dascalu@gmail.com - */ - -package com.andrei1058.bedwars.support.party; - -import com.alessiodp.parties.api.interfaces.PartiesAPI; -import com.alessiodp.parties.api.interfaces.PartyPlayer; -import com.andrei1058.bedwars.BedWars; -import com.andrei1058.bedwars.api.configuration.ConfigPath; -import com.andrei1058.bedwars.api.party.Party; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -public class Parties implements Party { - - //Support for Parties by AlessioDP - private final PartiesAPI api = com.alessiodp.parties.api.Parties.getApi(); - private static final int requiredRankToSelect = BedWars.config.getInt(ConfigPath.GENERAL_ALESSIODP_PARTIES_RANK); - - @Override - public boolean hasParty(Player p) { - PartyPlayer pp = api.getPartyPlayer(p.getUniqueId()); - return pp != null && pp.isInParty(); - } - - @Override - public int partySize(Player p) { - PartyPlayer pp = api.getPartyPlayer(p.getUniqueId()); - if (pp == null) return 0; - if (pp.getPartyId() == null) return 0; - com.alessiodp.parties.api.interfaces.Party party = api.getParty(pp.getPartyId()); - if (party == null) return 0; - return party.getMembers().size(); - } - - @Override - public boolean isOwner(Player p) { - PartyPlayer pp = api.getPartyPlayer(p.getUniqueId()); - if (pp == null) return false; - if (pp.getPartyId() == null) return false; - return pp.getRank() >= requiredRankToSelect; - } - - @Override - public List getMembers(Player p) { - ArrayList players = new ArrayList<>(); - - PartyPlayer pp = api.getPartyPlayer(p.getUniqueId()); - if (pp == null) return players; - if (pp.getPartyId() == null) return players; - com.alessiodp.parties.api.interfaces.Party party = api.getParty(pp.getPartyId()); - if (party == null) return players; - for (UUID pl : party.getMembers()) { - Player on = Bukkit.getPlayer(pl); - if (on == null) continue; - if (!on.isOnline()) continue; - players.add(on); - } - return players; - } - - @Override - public void createParty(Player owner, Player... members) { - } - - @Override - public void addMember(Player owner, Player member) { - } - - @Override - public void removeFromParty(Player member) { - } - - @Override - public void disband(Player owner) { - } - - @Override - public boolean isMember(Player owner, Player check) { - PartyPlayer pp = api.getPartyPlayer(owner.getUniqueId()); - if (pp == null) return false; - if (pp.getPartyId() == null) return false; - com.alessiodp.parties.api.interfaces.Party party = api.getParty(pp.getPartyId()); - if (party == null) return false; - return party.getMembers().contains(check.getUniqueId()); - } - - @Override - public void removePlayer(Player owner, Player target) { - } - - @Override - public boolean isInternal() { - return false; - } -} diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PartiesAdapter.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PartiesAdapter.java new file mode 100644 index 000000000..8ee4286af --- /dev/null +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PartiesAdapter.java @@ -0,0 +1,181 @@ +/* + * BedWars1058 - A bed wars mini-game. + * Copyright (C) 2021 Andrei Dascălu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact e-mail: andrew.dascalu@gmail.com + */ + +package com.andrei1058.bedwars.support.party; + +import com.alessiodp.parties.api.interfaces.PartiesAPI; +import com.alessiodp.parties.api.interfaces.PartyPlayer; +import com.andrei1058.bedwars.BedWars; +import com.andrei1058.bedwars.api.configuration.ConfigPath; +import com.andrei1058.bedwars.api.party.Party; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class PartiesAdapter implements Party { + + //Support for Parties by AlessioDP + private final PartiesAPI api = com.alessiodp.parties.api.Parties.getApi(); + private static final int requiredRankToSelect = BedWars.config.getInt(ConfigPath.GENERAL_ALESSIODP_PARTIES_RANK); + + @Override + public boolean hasParty(Player p) { + PartyPlayer pp = api.getPartyPlayer(p.getUniqueId()); + return pp != null && pp.isInParty(); + } + + @Override + public int partySize(Player p) { + if (hasParty(p)) { + PartyPlayer partyPlayer = api.getPartyPlayer(p.getUniqueId()); + if (partyPlayer != null) { + if (partyPlayer.getPartyId() != null) { + com.alessiodp.parties.api.interfaces.Party party = api.getParty(partyPlayer.getPartyId()); + if (null != party) { + return party.getOnlineMembers().size(); + } + } + } + } + return 0; + } + + @Override + public boolean isOwner(Player p) { + PartyPlayer pp = api.getPartyPlayer(p.getUniqueId()); + if (pp == null || pp.getPartyId() == null) { + return false; + } + return pp.getRank() >= requiredRankToSelect; + } + + @Override + public List getMembers(Player p) { + ArrayList players = new ArrayList<>(); + if (hasParty(p)) { + PartyPlayer pp = api.getPartyPlayer(p.getUniqueId()); + if (null != pp) { + if (pp.getPartyId() != null) { + com.alessiodp.parties.api.interfaces.Party party = api.getParty(pp.getPartyId()); + for (PartyPlayer member : party.getOnlineMembers()) { + players.add(Bukkit.getPlayer(member.getPlayerUUID())); + } + } + } + } + return players; + } + + @Override + public void createParty(Player owner, Player... members) { + //party creation handled on bungee side + if (!api.isBungeeCordEnabled()) { + boolean created = api.createParty(null, api.getPartyPlayer(owner.getUniqueId())); + if (created) { + com.alessiodp.parties.api.interfaces.Party party = api.getParty(owner.getUniqueId()); + if (null != party) { + for (Player player1 : members) { + PartyPlayer partyPlayer = api.getPartyPlayer(player1.getUniqueId()); + if (null != partyPlayer) { + party.addMember(partyPlayer); + } + } + } + } + } + } + + @Override + public void addMember(Player owner, Player member) { + //party operations handled on bungee server side + if (!api.isBungeeCordEnabled()) { + PartyPlayer partyPlayer = api.getPartyPlayer(owner.getUniqueId()); + if (null != partyPlayer) { + if (null != partyPlayer.getPartyId()) { + com.alessiodp.parties.api.interfaces.Party party = api.getParty(partyPlayer.getPartyId()); + if (null != party) { + PartyPlayer partyMember = api.getPartyPlayer(member.getUniqueId()); + if (null != partyMember) { + party.addMember(partyMember); + } + } + } + } + } + } + + @Override + public void removeFromParty(Player member) { + PartyPlayer partyMember = api.getPartyPlayer(member.getUniqueId()); + if (null != partyMember) { + if (null != partyMember.getPartyId()) { + com.alessiodp.parties.api.interfaces.Party party = api.getParty(partyMember.getPartyId()); + if (null != party) { + party.removeMember(partyMember); + } + } + } + } + + @Override + public void disband(Player owner) { + PartyPlayer partyMember = api.getPartyPlayer(owner.getUniqueId()); + if (null != partyMember) { + if (null != partyMember.getPartyId()) { + com.alessiodp.parties.api.interfaces.Party party = api.getParty(partyMember.getPartyId()); + if (null != party) { + party.delete(); + } + } + } + } + + @Override + public boolean isMember(Player owner, Player check) { + if (!hasParty(owner) || !hasParty(check)) { + return false; + } else { + return api.areInTheSameParty(owner.getUniqueId(), check.getUniqueId()); + } + } + + @Override + public void removePlayer(Player owner, Player target) { + PartyPlayer player = api.getPartyPlayer(owner.getUniqueId()); + if (null != player) { + if (null != player.getPartyId()) { + com.alessiodp.parties.api.interfaces.Party party = api.getParty(player.getPartyId()); + if (null != party) { + PartyPlayer targetPlayer = api.getPartyPlayer(target.getUniqueId()); + if (null != targetPlayer) { + party.removeMember(targetPlayer); + } + } + } + } + } + + @Override + public boolean isInternal() { + return false; + } +} From d5d6e4bd9f175424846a8b7b1053f4716d4d9ef9 Mon Sep 17 00:00:00 2001 From: "J.T. McQuigg" Date: Wed, 2 Mar 2022 13:41:12 -0500 Subject: [PATCH 18/43] Bed No longer drops on break (#423) * Bed no longer drops on break * Fix somethings with different versions having issues * Revert Seeds check --- .../java/com/andrei1058/bedwars/listeners/BreakPlace.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java index a12b5834c..773dd03b1 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java @@ -210,11 +210,11 @@ public void onBlockBreakMonitor(BlockBreakEvent event) { @EventHandler public void onBlockDrop(ItemSpawnEvent event) { - //WHEAT_SEEDS + //WHEAT_SEEDS AND BEDs IArena arena = Arena.getArenaByIdentifier(event.getEntity().getWorld().getName()); if (arena == null) return; - String material = event.getEntity().getItemStack().getType().toString(); - if (material.equals("SEEDS") || material.equals("WHEAT_SEEDS")) { + Material material = event.getEntity().getItemStack().getType(); + if (nms.isBed(material) || material.toString().equalsIgnoreCase("SEEDS") || material.toString().equalsIgnoreCase("WHEAT_SEEDS")) { event.setCancelled(true); } } From ae118c9f0af50c29616fd45b1be072928789e7e3 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Wed, 2 Mar 2022 11:41:54 -0700 Subject: [PATCH 19/43] Fix initializing no economy instead of no chat (#419) --- .../src/main/java/com/andrei1058/bedwars/BedWars.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 7462eba3e..0b5a7e063 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -450,7 +450,7 @@ public void onEnable() { chat = new WithChat(); } else { plugin.getLogger().info("Vault found, but no chat provider!"); - economy = new NoEconomy(); + chat = new NoChat(); } } catch (Exception var2_2) { chat = new NoChat(); @@ -808,4 +808,4 @@ public static void setParty(Party party) { public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) { return new VoidChunkGenerator(); } -} \ No newline at end of file +} From 27cad5f94f3f6b7104244094dab6ea213ecc53b9 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Wed, 2 Mar 2022 11:43:34 -0700 Subject: [PATCH 20/43] Allow players to extinguish fire (#418) * allow players to extinguish fire * fix fire still being extinguishable even if its disabled in the config --- .../bedwars/api/configuration/ConfigPath.java | 2 ++ .../andrei1058/bedwars/configuration/MainConfig.java | 3 +++ .../com/andrei1058/bedwars/listeners/BreakPlace.java | 11 +++++++++++ 3 files changed, 16 insertions(+) diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java index 937b9ee6f..4da708969 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java @@ -69,6 +69,8 @@ public class ConfigPath { public static final String GENERAL_CONFIGURATION_BUNGEE_OPTION_SERVER_ID = "bungee-settings.server-id"; public static final String GENERAL_CONFIGURATION_BUNGEE_OPTION_BWP_TIME_OUT = "bungee-settings.bwp-time-out"; + public static final String GENERAL_CONFIGURATION_ALLOW_FIRE_EXTINGUISH = "allow-fire-extinguish"; + public static final String GENERAL_CONFIGURATION_LOBBY_ITEMS_PATH = "lobby-items"; public static final String GENERAL_CONFIGURATION_EXPERIMENTAL_TEAM_ASSIGNER = "use-experimental-team-assigner"; diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/MainConfig.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/MainConfig.java index a8a4073b1..f0e7f251a 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/MainConfig.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/MainConfig.java @@ -90,6 +90,9 @@ public MainConfig(Plugin plugin, String name) { yml.addDefault(ConfigPath.GENERAL_CONFIG_PLACEHOLDERS_REPLACEMENTS_SERVER_IP, "yourServer.Com"); yml.addDefault(ConfigPath.GENERAL_CONFIGURATION_BUNGEE_OPTION_SERVER_ID, "bw1"); yml.addDefault(ConfigPath.GENERAL_CONFIGURATION_BUNGEE_OPTION_BWP_TIME_OUT, 5000); + + yml.addDefault(ConfigPath.GENERAL_CONFIGURATION_ALLOW_FIRE_EXTINGUISH, true); + // tnt jump category yml.addDefault(ConfigPath.GENERAL_TNT_JUMP_BARYCENTER_IN_Y, 0.5); yml.addDefault(ConfigPath.GENERAL_TNT_JUMP_STRENGTH_REDUCTION, 5); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java index 773dd03b1..9c40d7485 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java @@ -66,6 +66,11 @@ public class BreakPlace implements Listener { private static final List buildSession = new ArrayList<>(); + private final boolean allowFireBreak; + + public BreakPlace() { + allowFireBreak = config.getBoolean(ConfigPath.GENERAL_CONFIGURATION_ALLOW_FIRE_EXTINGUISH); + } @EventHandler public void onIceMelt(BlockFadeEvent e) { @@ -261,6 +266,12 @@ public void onBlockBreak(BlockBreakEvent e) { e.setCancelled(false); } return; + case "FIRE": + if(allowFireBreak) { + e.setCancelled(false); + return; + } + break; } if (nms.isBed(e.getBlock().getType())) { From 023c151907945d252c6abc47077868372c8badb1 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Wed, 2 Mar 2022 11:48:11 -0700 Subject: [PATCH 21/43] made generator protection radius configurable (#412) --- .../com/andrei1058/bedwars/api/configuration/ConfigPath.java | 1 + .../com/andrei1058/bedwars/configuration/ArenaConfig.java | 1 + .../java/com/andrei1058/bedwars/listeners/BreakPlace.java | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java index 4da708969..ac1bef167 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/configuration/ConfigPath.java @@ -162,6 +162,7 @@ public class ConfigPath { public static final String ARENA_SPAWN_PROTECTION = "spawn-protection"; public static final String ARENA_SHOP_PROTECTION = "shop-protection"; public static final String ARENA_UPGRADES_PROTECTION = "upgrades-protection"; + public static final String ARENA_GENERATOR_PROTECTION = "generator-protection"; public static final String ARENA_DISABLE_GENERATOR_FOR_EMPTY_TEAMS = "disable-generator-for-empty-teams"; public static final String ARENA_DISABLE_NPCS_FOR_EMPTY_TEAMS = "disable-npcs-for-empty-teams"; public static final String ARENA_ISLAND_RADIUS = "island-radius"; diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/ArenaConfig.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/ArenaConfig.java index f5c2472f3..6d54c7713 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/ArenaConfig.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/ArenaConfig.java @@ -43,6 +43,7 @@ public ArenaConfig(Plugin plugin, String name, String dir) { yml.addDefault(ConfigPath.ARENA_SPAWN_PROTECTION, 5); yml.addDefault(ConfigPath.ARENA_SHOP_PROTECTION, 1); yml.addDefault(ConfigPath.ARENA_UPGRADES_PROTECTION, 1); + yml.addDefault(ConfigPath.ARENA_GENERATOR_PROTECTION, 1); yml.addDefault(ConfigPath.ARENA_ISLAND_RADIUS, 17); yml.addDefault("worldBorder", 300); yml.addDefault(ConfigPath.ARENA_Y_LEVEL_KILL, -1); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java index 9c40d7485..7950ac2a4 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java @@ -475,7 +475,7 @@ public void onBucketEmpty(PlayerBucketEmptyEvent e) { return; } for (IGenerator o : t.getGenerators()) { - if (o.getLocation().distance(e.getBlockClicked().getLocation()) <= 1) { + if (o.getLocation().distance(e.getBlockClicked().getLocation()) <= a.getConfig().getInt(ConfigPath.ARENA_GENERATOR_PROTECTION)) { e.setCancelled(true); p.sendMessage(getMsg(p, Messages.INTERACT_CANNOT_PLACE_BLOCK)); return; @@ -483,7 +483,7 @@ public void onBucketEmpty(PlayerBucketEmptyEvent e) { } } for (IGenerator o : a.getOreGenerators()) { - if (o.getLocation().distance(e.getBlockClicked().getLocation()) <= 1) { + if (o.getLocation().distance(e.getBlockClicked().getLocation()) <= a.getConfig().getInt(ConfigPath.ARENA_GENERATOR_PROTECTION)) { e.setCancelled(true); p.sendMessage(getMsg(p, Messages.INTERACT_CANNOT_PLACE_BLOCK)); return; From 1a1c4a6361156f4aeb2d85ccb13cae596ff7fa23 Mon Sep 17 00:00:00 2001 From: reussy <63428864+reussy@users.noreply.github.com> Date: Wed, 2 Mar 2022 13:23:02 -0600 Subject: [PATCH 22/43] Implements a sound for arena players when the ender pearl is hit on a block. (#355) Closes #159 --- .../java/com/andrei1058/bedwars/BedWars.java | 2 +- .../bedwars/configuration/Sounds.java | 1 + .../bedwars/listeners/EnderPearlLanded.java | 28 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/EnderPearlLanded.java diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 0b5a7e063..474b4b99d 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -293,7 +293,7 @@ public void onEnable() { }, 1L); // Register events - registerEvents(new QuitAndTeleportListener(), new BreakPlace(), new DamageDeathMove(), new Inventory(), new Interact(), new RefreshGUI(), new HungerWeatherSpawn(), new CmdProcess(), + registerEvents(new EnderPearlLanded(), new QuitAndTeleportListener(), new BreakPlace(), new DamageDeathMove(), new Inventory(), new Interact(), new RefreshGUI(), new HungerWeatherSpawn(), new CmdProcess(), new FireballListener(), new EggBridge(), new SpectatorListeners(), new BaseListener(), new TargetListener(), new LangListener(), new Warnings(this), new ChatAFK()); if (getServerType() == ServerType.BUNGEE) { if (autoscale) { diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/Sounds.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/Sounds.java index cf45784fc..33fab6374 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/Sounds.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/Sounds.java @@ -82,6 +82,7 @@ public static void init() { addDefSound("trap-sound", BedWars.getForCurrentVersion("ENDERMAN_TELEPORT", "ENDERMAN_TELEPORT", "ENTITY_ENDERMAN_TELEPORT")); addDefSound("shop-auto-equip", BedWars.getForCurrentVersion("HORSE_ARMOR", "ITEM_ARMOR_EQUIP_GENERIC", "ITEM_ARMOR_EQUIP_GENERIC")); addDefSound("egg-bridge-block", BedWars.getForCurrentVersion("CHICKEN_EGG_POP", "ENTITY_CHICKEN_EGG", "ENTITY_CHICKEN_EGG")); + addDefSound("ender-pearl-landed", BedWars.getForCurrentVersion("ENDERMAN_TELEPORT", "ENTITY_ENDERMEN_TELEPORT", "ENTITY_ENDERMAN_TELEPORT")); yml.options().copyDefaults(true); // remove old paths diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/EnderPearlLanded.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/EnderPearlLanded.java new file mode 100644 index 000000000..9282acacc --- /dev/null +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/EnderPearlLanded.java @@ -0,0 +1,28 @@ +package com.andrei1058.bedwars.listeners; + +import com.andrei1058.bedwars.api.arena.IArena; +import com.andrei1058.bedwars.arena.Arena; +import com.andrei1058.bedwars.configuration.Sounds; +import org.bukkit.Sound; +import org.bukkit.entity.EnderPearl; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.ProjectileHitEvent; + +public class EnderPearlLanded implements Listener { + + @EventHandler + public void onPearlHit(ProjectileHitEvent e){ + + if (!(e.getEntity() instanceof EnderPearl)) return; + if (!(e.getEntity().getShooter() instanceof Player)) return; + + Player player = (Player) e.getEntity().getShooter(); + IArena iArena = Arena.getArenaByPlayer(player); + + if (!Arena.isInArena(player) || iArena.isSpectator(player)) return; + + Sounds.playSound("ender-pearl-landed", iArena.getPlayers()); + } +} From 9d613a85700ebc8a1dd8f7505af239d6e7aeaa0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuzey=20Kurtulu=C5=9F?= <46726434+kuzeeeyk@users.noreply.github.com> Date: Wed, 2 Mar 2022 22:24:05 +0300 Subject: [PATCH 23/43] Add Turkish language suppport. (#342) * Add Turkish language suppport. * Fix class name and credits. --- .../andrei1058/bedwars/language/Turkish.java | 547 ++++++++++++++++++ 1 file changed, 547 insertions(+) create mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Turkish.java diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Turkish.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Turkish.java new file mode 100644 index 000000000..24f7bda00 --- /dev/null +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Turkish.java @@ -0,0 +1,547 @@ +/* + * BedWars1058 - A bed wars mini-game. + * Copyright (C) 2021 Andrei Dascălu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact e-mail: andrew.dascalu@gmail.com + */ + +package com.andrei1058.bedwars.language; + +import com.andrei1058.bedwars.BedWars; +import com.andrei1058.bedwars.api.configuration.ConfigPath; +import com.andrei1058.bedwars.api.language.Language; +import com.andrei1058.bedwars.api.language.Messages; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; + +import static com.andrei1058.bedwars.BedWars.mainCmd; + +public class Turkish extends Language { + + public Turkish() { + super(BedWars.plugin, "tr"); + + YamlConfiguration yml = getYml(); + yml.options().copyDefaults(true); + yml.options().header("Turkish translation by https://kuzeeeyk.me [kuzeeeyk#7268 or @kuzeeeyk]"); + yml.addDefault(Messages.PREFIX, ""); + yml.addDefault("name", "Türkçe"); + + // this must stay here + // move message to new path + if (yml.get("player-die-knocked-regular") != null && yml.get(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL) == null) { + yml.set(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL, yml.getString("player-die-knocked-regular")); + yml.set("player-die-knocked-regular", null); + } + if (yml.get("player-die-knocked-final") != null && yml.get(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL) == null) { + yml.set(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL, yml.getString("player-die-knocked-final")); + yml.set("player-die-knocked-final", null); + } + + yml.addDefault(Messages.COMMAND_MAIN, Arrays.asList("", "&2▪ &7/" + mainCmd + " stats", "&2▪ &7/" + mainCmd + " join &o", "&2▪ &7/" + mainCmd + " leave", "&2▪ &7/" + mainCmd + " lang", "&2▪ &7/" + mainCmd + " gui", "&2▪ &7/" + mainCmd + " start &3(vip)")); + yml.addDefault(Messages.COMMAND_LANG_LIST_HEADER, "{prefix} &2Mevcut diller:"); + yml.addDefault(Messages.COMMAND_LANG_LIST_FORMAT, "&a▪ &7{iso} - &f{name}"); + yml.addDefault(Messages.COMMAND_LANG_USAGE, "{prefix}&7Kullanım: /lang &f&o"); + yml.addDefault(Messages.COMMAND_LANG_SELECTED_NOT_EXIST, "{prefix}&cBu dil bulunmuyor!"); + yml.addDefault(Messages.COMMAND_LANG_SELECTED_SUCCESSFULLY, "{prefix}&aDil değiştirildi!"); + yml.addDefault(Messages.COMMAND_LANG_USAGE_DENIED, "{prefix}&cOyun sırasında dili değiştiremezsin."); + yml.addDefault(Messages.COMMAND_JOIN_USAGE, "§a▪ §7Kullanım: /" + mainCmd + " join §o"); + yml.addDefault(Messages.COMMAND_JOIN_GROUP_OR_ARENA_NOT_FOUND, "{prefix}&c{name} adında bir grup veya harita bulunamadı!"); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_IS_FULL, "{prefix}&cBu harita dolu!"); + yml.addDefault(Messages.COMMAND_JOIN_NO_EMPTY_FOUND, "{prefix}&cŞu anda hiç boş harita bulunamadı ;("); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_IS_FULL_OF_VIPS, "{prefix}&cÜzgünüz fakat bu harita dolu.\n&cBağışçı olduğunu biliyoruz ama bu harita diğer bağışçı ya da yetkililer ile dolu."); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_PARTY_TOO_BIG, "{prefix}&cPartin bu harita bir takım olarak katılabilmek için çok büyük!"); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_NOT_PARTY_LEADER, "{prefix}&cSadece parti lideri harita seçebilir."); + yml.addDefault(Messages.COMMAND_JOIN_PLAYER_JOIN_MSG, "{prefix}&7{player} &ekatıldı (&b{on}&e/&b{max}&e)!"); + yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_MSG, "{prefix}§6Şu anda §9{arena}§6 haritasını seyrediyorsun.\n{prefix}§eHaritadan ayrılmak için §c/leave§e komudunu kullanabilirsin."); + yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_DENIED_MSG, "&cBu harita seyircilere kapalı!"); + yml.addDefault(Messages.COMMAND_TP_PLAYER_NOT_FOUND, "{prefix}&cOyuncu bulunamadı!"); + yml.addDefault(Messages.COMMAND_TP_NOT_IN_ARENA, "{prefix}&cBu oyuncu bir haritada değil!"); + yml.addDefault(Messages.COMMAND_TP_NOT_STARTED, "{prefix}&cOyuncunun bulunduğu haritada oyun henüz başlamadı!"); + yml.addDefault(Messages.COMMAND_TP_USAGE, "{prefix}&cKullanım: /bw tp "); + yml.addDefault(Messages.REJOIN_NO_ARENA, "{prefix}&cYeniden katılabilmen için bir harita bulunmuyor."); + yml.addDefault(Messages.REJOIN_DENIED, "{prefix}&cYeniden katılımazsın çünkü yataklar kırılmış ya da oyun bitmiş."); + yml.addDefault(Messages.REJOIN_ALLOWED, "{prefix}&a{arena}&e haritasına yeniden katılıyorsun!"); + yml.addDefault(Messages.COMMAND_REJOIN_PLAYER_RECONNECTED, "{prefix}&7{player} &eyeniden katıldı!"); + yml.addDefault(Messages.COMMAND_LEAVE_DENIED_NOT_IN_ARENA, "{prefix}&cHaritada değilsin!"); + yml.addDefault(Messages.COMMAND_LEAVE_MSG, "{prefix}&7{player} &eayrıldı!"); + yml.addDefault(Messages.COMMAND_NOT_ALLOWED_IN_GAME, "{prefix}&cBu komutu oyun sırasında kullanamazsın!"); + yml.addDefault(Messages.COMMAND_NOT_FOUND_OR_INSUFF_PERMS, "{prefix}&cBu komut bulunamadı veya yetkin yok!"); + yml.addDefault(Messages.COMMAND_PARTY_HELP, Arrays.asList("&6▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&aParti Komutları:", "&e/party help &7- &bBu mesajı yazdırır", "&e/party invite &7- &bOyuncuyu partine davet eder", + "&e/party leave &7- &bPartiden ayrılır", + "&e/party remove &7- &bOyuncuyu partiden kovar", + "&e/party accept &7- &bParti davetini kabul eder", "&e/party disband &7- &bPartiyi dağıtır")); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_USAGE, "{prefix}&eKullanım: &7/party invite "); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_PLAYER_OFFLINE, "{prefix}&7{player} &eoyunda değil!"); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_SENT, "{prefix}&7{player}&6 adlı oyuncuya parti daveti gönderildi."); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_SENT_TARGET_RECEIVE_MSG, "{prefix}&b{player} &eadlı oyuncu seni bir partiye davet etti! &o&7(Kabul Et)"); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_CANNOT_INVITE_YOURSELF, "{prefix}&cKendini davet edemezsin!"); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_PLAYER_OFFLINE, "{prefix}&7{player} &eadlı oyuncu çevrimdışı!"); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_NO_INVITE, "{prefix}&cKabul etmek için bir davet bulunmuyor!"); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_ALREADY_IN_PARTY, "{prefix}&eZaten bir partidesin!"); + yml.addDefault(Messages.COMMAND_PARTY_INSUFFICIENT_PERMISSIONS, "{prefix}&cSadece parti lideri bu komutu kullanabilir."); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_USAGE, "{prefix}&eKullanım: &7/party accept "); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_SUCCESS, "{prefix}&7{player} &eadlı oyuncu partiye katıldı!"); + yml.addDefault(Messages.COMMAND_PARTY_GENERAL_DENIED_NOT_IN_PARTY, "{prefix}&cHerhangi bir partide değilsin!"); + yml.addDefault(Messages.COMMAND_PARTY_LEAVE_DENIED_IS_OWNER_NEEDS_DISBAND, "{prefix}&cKendi partinden ayrılamazsın!\n&ePartiyi dağıtmayı dene: &b/party disband"); + yml.addDefault(Messages.COMMAND_PARTY_LEAVE_SUCCESS, "{prefix}&7{player} &eadlı oyuncu partiden ayrıldı!"); + yml.addDefault(Messages.COMMAND_PARTY_DISBAND_SUCCESS, "{prefix}&eParti dağıtıldı!"); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_USAGE, "{prefix}&7Kullanım: &e/party remove "); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_SUCCESS, "{prefix}&7{player} &eadlı oyuncu partiden kovuldu!"); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_DENIED_TARGET_NOT_PARTY_MEMBER, "{prefix}&7{player} &eadlı oyuncu parti üyesi değil!"); + yml.addDefault(Messages.COMMAND_FORCESTART_NOT_IN_GAME, "§c▪ §7Oyunda değilsin!"); + yml.addDefault(Messages.COMMAND_FORCESTART_SUCCESS, "§c▪ §7Geris sayım kısaltıldı!"); + yml.addDefault(Messages.COMMAND_FORCESTART_NO_PERM, "{prefix}&7Bu işlemi uygulamak için bağışçı olman lazım!"); + yml.addDefault(Messages.COMMAND_COOLDOWN, "&cŞu anda bunu yapamazsın! {seconds} saniye sonra tekrar dene."); + yml.addDefault(Messages.ARENA_JOIN_VIP_KICK, "{prefix}&cÜzgünüm, bir bağışçı haritaya katılmaya çalıştığı için haritadan atıldın!"); + yml.addDefault(Messages.ARENA_START_COUNTDOWN_STOPPED_INSUFF_PLAYERS_CHAT, "{prefix}§cOyun başlamıyor! §7Yeterli oyuncu yok!"); + yml.addDefault(Messages.ARENA_RESTART_PLAYER_KICK, "{prefix}&eBulunduğun harita yeniden başlatılıyor"); + yml.addDefault(Messages.ARENA_STATUS_PLAYING_NAME, "&cOynanıyor"); + yml.addDefault(Messages.ARENA_STATUS_RESTARTING_NAME, "&4Yeniden Başlatılıyor"); + yml.addDefault(Messages.ARENA_STATUS_WAITING_NAME, "&2Bekleniyor §c{full}"); + yml.addDefault(Messages.ARENA_STATUS_STARTING_NAME, "&6Başlatılıyor §c{full}"); + yml.addDefault(Messages.ARENA_GUI_INV_NAME, "&8Katılm"); + yml.addDefault(Messages.ARENA_GUI_ARENA_CONTENT_NAME, "&a&l{name}"); + yml.addDefault(Messages.ARENA_GUI_ARENA_CONTENT_LORE, Arrays.asList("", "&7Durum: {status}", "&7Oyuncular: &f{on}&7/&f{max}", "&7Tür: &a{group}", "", "&aKatılmak için sol tıkla.", "&eİzlemek için sağ tıkla.")); + yml.addDefault(Messages.ARENA_GUI_SKIPPED_ITEM_NAME, "&r{serverIp}"); + yml.addDefault(Messages.ARENA_GUI_SKIPPED_ITEM_LORE, Collections.emptyList()); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CHAT, "{prefix}&eOyun, &6{time} &esaniye içinde başlıyor!"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_TITLE, " "); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE, "&a{second}"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-5", "&e❺"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-4", "&e❹"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-3", "&c❸"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-2", "&c❷"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-1", "&c❶"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_TITLE, " "); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_SUB_TITLE, "&cDaha fazla oyuncu bekleniyor..."); + yml.addDefault(Messages.ARENA_STATUS_START_PLAYER_TITLE, "&aGO"); + yml.addDefault(Messages.ARENA_STATUS_START_PLAYER_TUTORIAL, Arrays.asList("&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&f &l&cBed&r&lWars", "", + "&e&l Yatağını savun ve düşman yataklarını parçala!", + "&e&l Üreticilerden Demir, Altın, Zümrüt ve Elmas", + "&e&l kazanarak yükseltmelere erişim sağla ve takımını", + "&e&l güçlendir. Bol şans!", "", + "&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬")); + yml.addDefault(Messages.ARENA_JOIN_DENIED_SELECTOR, "{prefix}&cÜzgünüm ama bu haritaya şu anda katılamazsın. Seyirci olmak için sağ tıkla."); + yml.addDefault(Messages.ARENA_SPECTATE_DENIED_SELECTOR, "{prefix}&cÜzgünüm ama bu haritayı şu anda seyredemezsin. Katılmak için sol tıkla."); + yml.addDefault(Messages.ARENA_JOIN_DENIED_NO_PROXY, "&cÜzgünüm ama BedWarsProxy kullanmalısın. \n&eEğer haritayı düzenlemek istiyorsan kendine bw.setup yetkisini vermeyi unutma!"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Işınlayıcı"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Can: &f{health}%", "&7Açlık: &f{food}", "", "&7Seyretmek için sol tıkla")); + yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lLobiye dön"); + yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Lobiye dönmek için sol tıkla.")); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_ENTER_TITLE, "&7{player} &aseyrediliyor"); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_ENTER_SUBTITLE, "&cAyrılmak için eğilme tuşuna bas."); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_LEAVE_TITLE, "&eSeyirci modundan ayrılınıyor..."); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_LEAVE_SUBTITLE, ""); + yml.addDefault(Messages.ARENA_LEAVE_PARTY_DISBANDED, "{prefix}§cParti sahibi oyundan ayrıldı ve parti kapatıldı."); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TIER, "&eSeviye &c{tier}"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TYPE_DIAMOND, "&b&lElmas"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TYPE_EMERALD, "&a&lZümrüt"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TIMER, "&c{seconds} &esaniye sonra üretiliyor"); + yml.addDefault(Messages.GENERATOR_UPGRADE_CHAT_ANNOUNCEMENT, "{prefix}{generatorType} Üreticileri &eSeviye &c{tier} &eoldu!"); + yml.addDefault(Messages.FORMATTING_CHAT_LOBBY, "{level}{vPrefix}&7{player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_WAITING, "{level}{vPrefix}&7{player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_SHOUT, "{level}{vPrefix}&6[SHOUT] {team} &7{player}&f{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_TEAM, "{level}{vPrefix}&f{team}&7 {player}{vSuffix} {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_SPECTATOR, "{level}{vPrefix}&7[SPECTATOR] {player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_HEALTH, Arrays.asList("&c❤", "&aCan")); + yml.addDefault(Messages.FORMATTING_SPECTATOR_TEAM, "SEYIRCI"); + yml.addDefault(Messages.FORMATTING_SPECTATOR_COLOR, "&7"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_PRESTARTING, Arrays.asList("{teamColor}&l{teamLetter} &r{teamColor}", "{team} ", "{vPrefix} {teamColor}")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_PRESTARTING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_PLAYING, Arrays.asList("{teamColor}&l{teamLetter} &r{teamColor}", "{team} ", "{vPrefix} {teamColor}&l{teamLetter} &r{teamColor}")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_PLAYING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_STARTING, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_STARTING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_WAITING, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_WAITING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_LOBBY, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_LOBBY, new ArrayList<>()); + + yml.addDefault(Messages.FORMATTING_SCOREBOARD_DATE, "dd/MM/yyyy"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_GENERIC, "{TeamColor}{TeamLetter}&f {TeamName}: {TeamStatus}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_ELIMINATED, "&c&l✘"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_BED_DESTROYED, "&a{remainingPlayers}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_ALIVE, "&a&l✓"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_NEXEVENT_TIMER, "mm:ss"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_YOUR_TEAM, "&7 SEN"); + yml.addDefault(Messages.FORMATTING_ACTION_BAR_TRACKING, "&fHedef: {team} &f- Mesafe: {distance}m"); + yml.addDefault(Messages.FORMATTING_TEAM_WINNER_FORMAT, " {TeamColor}{TeamName} &7- {members}"); + yml.addDefault(Messages.FORMATTING_SOLO_WINNER_FORMAT, " {TeamColor}{TeamName} &7- {members}"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER1, "I"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER2, "II"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER3, "III"); + yml.addDefault(Messages.FORMATTING_DESPAWNABLE_UTILITY_NPC_HEALTH, "▮ "); + yml.addDefault(Messages.FORMATTING_STATS_DATE_FORMAT, "dd/MM/yyyy HH:mm"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_TEAM, "{TeamColor}[{TeamName}]"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_SHOUT, "&6[HERKES]"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_SPECTATOR, "&7[SEYIRCI]"); + yml.addDefault(Messages.MEANING_FULL, "Tam"); + yml.addDefault(Messages.MEANING_SHOUT, "Herkes"); + yml.addDefault(Messages.MEANING_NOBODY, "Kimse"); + yml.addDefault(Messages.MEANING_NEVER, "Asla"); + yml.addDefault(Messages.MEANING_IRON_SINGULAR, "Demir"); + yml.addDefault(Messages.MEANING_IRON_PLURAL, "Demir"); + yml.addDefault(Messages.MEANING_GOLD_SINGULAR, "Altın"); + yml.addDefault(Messages.MEANING_GOLD_PLURAL, "Altın"); + yml.addDefault(Messages.MEANING_EMERALD_SINGULAR, "Zümrüt"); + yml.addDefault(Messages.MEANING_EMERALD_PLURAL, "Zümrüt"); + yml.addDefault(Messages.MEANING_DIAMOND_SINGULAR, "Elmas"); + yml.addDefault(Messages.MEANING_DIAMOND_PLURAL, "Elmas"); + yml.addDefault(Messages.MEANING_VAULT_SINGULAR, "₺"); + yml.addDefault(Messages.MEANING_VAULT_PLURAL, "₺"); + yml.addDefault(Messages.INTERACT_CANNOT_PLACE_BLOCK, "{prefix}&cBuraya blok koyamazsın!"); + yml.addDefault(Messages.INTERACT_CANNOT_BREAK_BLOCK, "{prefix}&cSadece oyuncular tarafından yerleştirilen blokları kırabilirsin!"); + yml.addDefault(Messages.INTERACT_CANNOT_BREAK_OWN_BED, "&cKendi yatağını kıramazsın!"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_CHAT_ANNOUNCEMENT, "\n&f&lYATAK KIRMA > {TeamColor}{TeamName} Yatak&7, {PlayerColor}{PlayerName}&7 tarafından parçalandı!\n"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_TITLE_ANNOUNCEMENT, "&cYATAK KIRILDI"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_SUBTITLE_ANNOUNCEMENT, "&fArtık yeniden doğamayacaksın!"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_CHAT_ANNOUNCEMENT_TO_VICTIM, "&f&lBED DESTRUCTION > &7Yatağın {PlayerColor}{PlayerName}&7 tarafından yok edildi!"); + yml.addDefault(Messages.INTERACT_CHEST_CANT_OPEN_TEAM_ELIMINATED, "&cElenmemiş bir takımın sandığını açamazsın!"); + yml.addDefault(Messages.PLAYER_DIE_VOID_FALL_REGULAR_KILL, "{PlayerColor}{PlayerName} &7boşluğa düştü."); + yml.addDefault(Messages.PLAYER_DIE_VOID_FALL_FINAL_KILL, "{PlayerColor}{PlayerName} &7boşluğa düştü. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL, "{PlayerColor}{PlayerName} &7 adlı oyuncu {KillerColor}{KillerName}&7 tarafından boşluğa atıldı."); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından boşluğa atıldı. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_PVP_LOG_OUT_REGULAR, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 ile savaşırken oyundan ayrıldı."); + yml.addDefault(Messages.PLAYER_DIE_PVP_LOG_OUT_FINAL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 ile savaşırken oyundan ayrıldı. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_BY_REGULAR_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından uçuruldu."); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_BY_FINAL_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından uçuruldu. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITH_SOURCE_REGULAR_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından bombalandı."); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITH_SOURCE_FINAL_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından bombalandı. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITHOUT_SOURCE_REGULAR, "{PlayerColor}{PlayerName} &7bombalandı."); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITHOUT_SOURCE_FINAL_KILL, "{PlayerColor}{PlayerName} &7bombalandı. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_PVP_REGULAR_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından öldürüldü."); + yml.addDefault(Messages.PLAYER_DIE_PVP_FINAL_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından öldürüldü. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_UNKNOWN_REASON_REGULAR, "{PlayerColor}{PlayerName} &7öldü."); + yml.addDefault(Messages.PLAYER_DIE_UNKNOWN_REASON_FINAL_KILL, "{PlayerColor}{PlayerName} &7öldü. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_SHOOT_REGULAR, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından ok ile vuruldu."); + yml.addDefault(Messages.PLAYER_DIE_SHOOT_FINAL_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerName}&7 tarafından ok ile vuruldu. &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_DEBUG_REGULAR, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerTeamName} Takım&7'ın Yatak Böceği tarafından katledildi!"); + yml.addDefault(Messages.PLAYER_DIE_DEBUG_FINAL_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerTeamName} Takım&7'ın Yatak Böceği tarafından katledildi! &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_IRON_GOLEM_REGULAR, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerTeamName} Takım&7'ın Demir Golemi tarafından katledildi!"); + yml.addDefault(Messages.PLAYER_DIE_IRON_GOLEM_FINAL_KILL, "{PlayerColor}{PlayerName} &7adlı oyuncu {KillerColor}{KillerTeamName} Takım&7'ın Demir Golemi tarafından katledildi! &b&lFINAL KILL!"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_DIAMOND, "{prefix}&b+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_EMERALD, "{prefix}&a+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_IRON, "{prefix}&f+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_GOLD, "{prefix}&6+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_TITLE, "&cÖLDÜN!"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_SUBTITLE, "&c{time} &esaniye sonra yeniden doğacaksın!"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_CHAT, "{prefix}&e{time} &esaniye sonra yeniden doğacaksın!"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWNED_TITLE, "&aYENİDEN DOĞDUN!"); + yml.addDefault(Messages.PLAYER_DIE_ELIMINATED_CHAT, "{prefix}&cOyundan elendin!"); + yml.addDefault(Messages.PLAYER_HIT_BOW, "{prefix}{TeamColor}{PlayerName} &7 adlı oyuncu &c{amount} &7cana sahip!"); + yml.addDefault(Messages.GAME_END_GAME_OVER_PLAYER_TITLE, "&c&lOYUN BİTTİ"); + yml.addDefault(Messages.GAME_END_VICTORY_PLAYER_TITLE, "&6&lGALİBİYET!"); + yml.addDefault(Messages.GAME_END_TEAM_WON_CHAT, "{prefix}{TeamColor}{TeamName} &aoyunu kazandı!"); + yml.addDefault(Messages.GAME_END_TOP_PLAYER_CHAT, Arrays.asList("&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&f &l&cBed&r&lWars", "", "{winnerFormat}", "", "", + "&e &l1. Oyuncu &7- {firstName} - {firstKills} öldürme", + "&6 &l2. Oyuncu &7- {secondName} - {secondKills} öldürme", + "&c &l3. Oyuncu &7- {thirdName} - {thirdKills} öldürme", "", + "&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬")); + yml.addDefault(Messages.BED_HOLOGRAM_DEFEND, "&c&lYatağını savun!"); + yml.addDefault(Messages.BED_HOLOGRAM_DESTROYED, "&c&lYatağın kırıldı!"); + yml.addDefault(Messages.NPC_NAME_TEAM_UPGRADES, "&bTAKIM YÜKSELTMELERİ,&e&lSAĞ TIKLA"); + yml.addDefault(Messages.NPC_NAME_SOLO_UPGRADES, "&bOYUNCU YÜKSELTMELERİ,&e&lSAĞ TIKLA"); + yml.addDefault(Messages.NPC_NAME_TEAM_SHOP, "&bTAKIM MARKETİ,&e&lSAĞ TIKLA"); + yml.addDefault(Messages.NPC_NAME_SOLO_SHOP, "&bEŞYA MARKETİ,&e&lSAĞ TIKLA"); + yml.addDefault(Messages.TEAM_ELIMINATED_CHAT, "\n&f&lTAKIM ELENDİ > {TeamColor}{TeamName} Takım &celendi!\n"); + yml.addDefault(Messages.NEXT_EVENT_BEDS_DESTROY, "&cYatak Kırma"); + yml.addDefault(Messages.NEXT_EVENT_DIAMOND_UPGRADE_II, "&fElmas II"); + yml.addDefault(Messages.NEXT_EVENT_DIAMOND_UPGRADE_III, "&fElmas III"); + yml.addDefault(Messages.NEXT_EVENT_DRAGON_SPAWN, "&fEjderha Saldırısı"); + yml.addDefault(Messages.NEXT_EVENT_EMERALD_UPGRADE_II, "&fZümrüt II"); + yml.addDefault(Messages.NEXT_EVENT_EMERALD_UPGRADE_III, "&fZümrüt III"); + yml.addDefault(Messages.NEXT_EVENT_GAME_END, "&4Oyun Sonu"); + yml.addDefault(Messages.NEXT_EVENT_TITLE_ANNOUNCE_BEDS_DESTROYED, "&cYATAK KIRMA!"); + yml.addDefault(Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_BEDS_DESTROYED, "&fTüm yataklar parçalandı!"); + yml.addDefault(Messages.NEXT_EVENT_CHAT_ANNOUNCE_BEDS_DESTROYED, "&c&lTüm yataklar parçalandı!"); + yml.addDefault(Messages.NEXT_EVENT_TITLE_ANNOUNCE_SUDDEN_DEATH, "&cEjderha Saldırısı"); + yml.addDefault(Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_SUDDEN_DEATH, ""); + yml.addDefault(Messages.NEXT_EVENT_CHAT_ANNOUNCE_SUDDEN_DEATH, "&cEJDERHA SALDIRISI: &6&b{TeamDragons} {TeamColor}{TeamName} Ejderha!"); + yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars puanı kazanıldı (Oynama Süresi)"); + yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BBedWars puanı kazanıldı (Galibiyet)"); + yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars puanı kazanıldı (Takım Yardımı)"); + + yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Para (Oynama Süresi)"); + yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Para (Galibiyet)"); + yml.addDefault(Messages.MONEY_REWARD_PER_TEAMMATE, "{prefix}&6+{money} Para (Takım Yardımı)"); + yml.addDefault(Messages.MONEY_REWARD_BED_DESTROYED, "{prefix}&6+{money} Para (Yatak Kırma)"); + yml.addDefault(Messages.MONEY_REWARD_FINAL_KILL, "{prefix}&6+{money} Para (Final Kill)"); + yml.addDefault(Messages.MONEY_REWARD_REGULAR_KILL, "{prefix}&6+{money} Para (Öldürme)"); + + /* Lobby Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "stats"), "&eİstatistikler"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "stats"), Collections.singletonList("&fİstatistiklerini görmek için sağ tıkla!")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "arena-selector"), "&eHarita Seçici"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "arena-selector"), Collections.singletonList("&fHarita seçmek için sağ tıkla!")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "leave"), "&eLobiye Dön"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fBedWars'tan ayrılmak için sağ tıkla!")); + /* Pre Game Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_NAME.replace("%path%", "stats"), "&eİstatistikler"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_LORE.replace("%path%", "stats"), Collections.singletonList("&fİstatistiklerini görmek için sağ tıkla!")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_NAME.replace("%path%", "leave"), "&eLobiye Dön"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&Lobiye dönmek için sağ tıkla!")); + /* Spectator Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_NAME.replace("%path%", "teleporter"), "&eIşınlayıcı"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_NAME.replace("%path%", "leave"), "&eLobiye Dön"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fHaritadan ayrılmak için sağ tıkla!")); + + /* save default items messages for stats gui */ + yml.addDefault(Messages.PLAYER_STATS_GUI_INV_NAME, "&8{player} İstatistikleri"); + addDefaultStatsMsg(yml, "wins", "&6Galibiyet", "&f{wins}"); + addDefaultStatsMsg(yml, "losses", "&6Malubiyet", "&f{losses}"); + addDefaultStatsMsg(yml, "kills", "&6Öldürme", "&f{kills}"); + addDefaultStatsMsg(yml, "deaths", "&6Ölüm", "&f{deaths}"); + addDefaultStatsMsg(yml, "final-kills", "&6Final Öldürme", "&f{finalKills}"); + addDefaultStatsMsg(yml, "final-deaths", "&6Final Ölüm", "&f{finalDeaths}"); + addDefaultStatsMsg(yml, "beds-destroyed", "&6Yatak Kırma", "&f{bedsDestroyed}"); + addDefaultStatsMsg(yml, "first-play", "&6İlk Oyun", "&f{firstPlay}"); + addDefaultStatsMsg(yml, "last-play", "&6Son Oyun", "&f{lastPlay}"); + addDefaultStatsMsg(yml, "games-played", "&6Oynanan Oyun", "&f{gamesPlayed}"); + + yml.addDefault(Messages.SCOREBOARD_DEFAULT_WAITING, Arrays.asList("&f&lBED WARS", "&7{date} &8{server}", "", "&fHarita: &a{map}", "", "&fOyuncular: &a{on}/{max}", "", "&fBekleniyor...", "", "§fTür: &a{group}", "&fSürüm: &7{version}", "", "&e{server_ip}")); + yml.addDefault(Messages.SCOREBOARD_DEFAULT_STARTING, Arrays.asList("&f&lBED WARS", "&7{date} &8{server}", "", "&fHarita: &a{map}", "", "&fOyuncular: &a{on}/{max}", "", "&f&a{time}s sonra başlatılıyor", "", "§fTür: &a{group}", "&fSürüm: &7{version}", "", "&e{server_ip}")); + yml.addDefault(Messages.SCOREBOARD_DEFAULT_PLAYING, Arrays.asList("&e&lBED WARS", "&7{date}", "", "&a{time} sonra &f{nextEvent}", "", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.Doubles.playing", Arrays.asList("&e&lBED WARS", "&7{date}", "", "&a{time} sonra &f{nextEvent}", "", + "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.3v3v3v3.playing", Arrays.asList("&e&lBED WARS", "&7{date}", "", "&a{time} sonra &f{nextEvent}", "", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", + "", "&fÖldürme: &a{kills}", "&fFinal Öldürme: &a{finalKills}", "&fYatak Kırma: &a{beds}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.4v4v4v4.playing", Arrays.asList("&e&lBED WARS", "&7{date}", "", "&a{time} sonra &f{nextEvent}", "", "{team}", "{team}", "{team}", "{team}", + "", "&fÖldürme: &a{kills}", "&fFinal Öldürme: &a{finalKills}", "&fYatak Kırma: &a{beds}", "", "&e{server_ip}")); + + yml.addDefault(Messages.SCOREBOARD_LOBBY, Arrays.asList("&6&lBedWars,&4&lB&6edWars,&6&lB&4e&6dWars,&6&lBe&4d&6Wars,&6&lBed&4W&6ars,&6&lBedW&4a&6rs,&6&lBedWa&4r&6s,&6&lBedWar&4s,&6&lBedWars", "&fSeviyen: {level}", "", "&fİlerleme: &a{currentXp}&7/&b{requiredXp}", "{progress}", "", "&7{player}", "", "&fPara: &a{money}" + , "", "&fGalibiyet: &a{wins}", "&fToplam Öldürme: &a{kills}", "", "&e{server_ip}")); + + // + yml.addDefault(Messages.SHOP_INDEX_NAME, "&8Hızlı Alım"); + yml.addDefault(Messages.SHOP_QUICK_ADD_NAME, "&8Hızlı Alıma ekleniyor..."); + yml.addDefault(Messages.SHOP_INSUFFICIENT_MONEY, "{prefix}&cYeteri kadar {currency} sahibi değilsin! {amount} tane daha bulmalısın!"); + yml.addDefault(Messages.SHOP_NEW_PURCHASE, "{prefix}&6{item} &asatın aldın"); + yml.addDefault(Messages.SHOP_ALREADY_BOUGHT, "{prefix}&cBunu zaten satın aldın!"); + yml.addDefault(Messages.SHOP_UTILITY_NPC_SILVERFISH_NAME, "{TeamColor}&l{TeamName} &r{TeamColor}Böcek"); + yml.addDefault(Messages.SHOP_UTILITY_NPC_IRON_GOLEM_NAME, "{TeamColor}{despawn}s &8[ {TeamColor}{health}&8]"); + yml.addDefault(Messages.SHOP_SEPARATOR_NAME, "&8⇧ Kategoriler"); + yml.addDefault(Messages.SHOP_SEPARATOR_LORE, Collections.singletonList("&8⇩ Eşyalar")); + yml.addDefault(Messages.SHOP_QUICK_BUY_NAME, "&bHızlı Alım"); + yml.addDefault(Messages.SHOP_QUICK_BUY_LORE, new ArrayList<>()); + yml.addDefault(Messages.SHOP_QUICK_EMPTY_NAME, "&cBoş slot!"); + yml.addDefault(Messages.SHOP_QUICK_EMPTY_LORE, Arrays.asList("&7Bu bir Hızlı Alım slotu!", "&7Buraya eşya eklemek için marketteki", "&7bir eşyaya eğilme tuşu ile tıkla!")); + yml.addDefault(Messages.SHOP_CAN_BUY_COLOR, "&a"); + yml.addDefault(Messages.SHOP_CANT_BUY_COLOR, "&c"); + yml.addDefault(Messages.SHOP_LORE_STATUS_CAN_BUY, "&eSatın almak için tıkla!"); + yml.addDefault(Messages.SHOP_LORE_STATUS_CANT_AFFORD, "&cYeteri kadar {currency} sahibi değilsin!"); + yml.addDefault(Messages.SHOP_LORE_STATUS_MAXED, "&aEN YÜKSEK SEVİYEDE!"); + yml.addDefault(Messages.SHOP_LORE_QUICK_ADD, "&bHızlı Alıma eklemek için eğilerek tıkla"); + yml.addDefault(Messages.SHOP_LORE_QUICK_REMOVE, "&bHızlı Alımdan kaldırmak için eğilerek tıkla"); + + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "&8Bloklar", "&aBloklar", Collections.singletonList("&eGörmek için tıkla!")); + + addContentMessages(yml, "wool", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Yün", Arrays.asList("&7Ücret: &f{cost} {currency}", "", "&7Düşman adalara yol yapmak", "&7için ideal. Takımının", + "&7rengine bürünür.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "clay", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Kil", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Yatağını savunmak için harika.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "glass", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Cam", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Patlamaları etkisiz kılar.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "stone", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}End Taşı", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Sert bir savunma.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "ladder", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Merdiven", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Ağaçlarda mahsur kalan", "&7kedileri kurtarmak için süper", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "obsidian", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Obsidyen", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Rakiplerin senden nefret edecek!", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "wood", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Tahta", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Yatak savunması için ucuz bir çözüm.", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_MELEE, "&8Yakın Saldırı", "&aYakın Saldırı", Collections.singletonList("&eGörmek için tıkla!")); + + addContentMessages(yml, "stone-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Taş Kılıç", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "iron-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Demir Kılıç", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "diamond-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Elmas Kılıç", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "stick", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Çubuk (Savurma I)", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "&8Zırh", "&8Zırh", Collections.singletonList("&eGörmek için tıkla!")); + + addContentMessages(yml, "chainmail", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Zincir Zırh", Arrays.asList("&7Ücret: {cost} {currency}", + "", "&7Ölünce kaybolmayan", "&7zincir pantolon ve ayakkabı", "", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "iron-armor", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Demir Zırh", Arrays.asList("&7Ücret: {cost} {currency}", + "", "&7Ölünce kaybolmayan", "&7demir pantolon ve ayakkabı", "", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "diamond-armor", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Elmas Zırh", Arrays.asList("&7Ücret: {cost} {currency}", + "", "&7Ölünce kaybolmayan", "&7elmas pantolon ve ayakkabı", "", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "&8Alet", "&8Alet", Collections.singletonList("&eGörmek için tıkla!")); + + addContentMessages(yml, "shears", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Makas", Arrays.asList("&7Ücret: {cost} {currency}", + "", "&7Ölünce kaybolmayan bir makas. Yünlerden", "&7kurtulmak için dört dörtlük.", "", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "pickaxe", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Kazma {tier}", Arrays.asList("&7Ücret: {cost} {currency}", "&7Seviye: &e{tier}", + "", "&7Bu bir yükseltilebilir eşya.", "&7Her öldüğünde", "1 seviye düşer", "", "&7Bu eşya, ölsen bile", "&7en düşük seviyesi ile", "&7üstünde kalır.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "axe", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Balta {tier}", Arrays.asList("&7Ücret: {cost} {currency}", "&7Seviye: &e{tier}", + "", "&7Bu bir yükseltilebilir eşya.", "&7Her öldüğünde", "1 seviye düşer", "", "&7Bu eşya, ölsen bile", "&7en düşük seviyesi ile", "&7üstünde kalır.", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_RANGED, "&8Uzun Mesafe", "&aUzun Mesafe", Collections.singletonList("&eGörmek için tıkla!")); + + addContentMessages(yml, "arrow", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Ok", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow1", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Yay", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow2", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Yay (Güç I)", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow3", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Yay (Güç I, Yumruk I)", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "&8İksirler", "&8İksirler", Collections.singletonList("&eGörmek için tıkla!")); + + addContentMessages(yml, "speed-potion", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Hız II İksiri (45 saniye)", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "jump-potion", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Zıplama Desteği V İksiri (45 saniye)", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "invisibility", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Görünmezlik İksiri (30 saniye)", Arrays.asList("&7Ücret: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "&8Diğer", "&8Diğer", Collections.singletonList("&eGörmek için tıkla!")); + + addContentMessages(yml, "golden-apple", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Altın Elma", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Well-rounded healing.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bedbug", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}BedBug", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Kartopunu attığın yerde", + "&7rakiplerin dikkatini dağıtmak için", "&7böcekler doğurur. 15 saniye sonra kaybolur.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "dream-defender", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Demir Golem", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Takımını savunmana yardım", + "&7eder. 4 dakika sonra kaybolur.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "fireball", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Ateş Topu", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Sağ tıklayarak ateşle! Rakiplerinin", + "&7yürüdükleri köprüleri patlatmak", "&7için harika bir ürün!", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "tnt", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}TNT", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Direkt ateşlenir, diğer takımların", + "&7korumaları için iyi bir çözüm", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "ender-pearl", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Ender İncisi", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Diğer takımların adalarına", + "&7gitmenin en hızlı yolu.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "water-bucket", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Su Kovası", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Patlamaları etkisiz", + "&7bırakır.", "", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bridge-egg", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Köprü Yumurtası", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Atılan doğrultuda", + "&7bir köprü yapar.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "magic-milk", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Sihirli Süt", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7İçildikten sonra 60 saniye", + "&7boyunca düşman tuzaklarından korur.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "sponge", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Sünger", Arrays.asList("&7Ücret: {cost} {currency}", "", "&7Suyu yok etmenin basit bir yolu.", + "", "{quick_buy}", "{buy_status}")); + + // + yml.addDefault(Messages.MEANING_NO_TRAP, "Tuzak yok!"); + yml.addDefault(Messages.FORMAT_UPGRADE_TRAP_COST, "&7Ücret: {currencyColor}{cost} {currency}"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_CAN_AFFORD, "&e"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_CANT_AFFORD, "&c"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_UNLOCKED, "&a"); + yml.addDefault(Messages.FORMAT_UPGRADE_TIER_LOCKED, "&7"); + yml.addDefault(Messages.FORMAT_UPGRADE_TIER_UNLOCKED, "&a"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_CLICK_TO_BUY, "{color}Satın almak için tıkla!"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_INSUFFICIENT_MONEY, "{color}Yeteri kadar {currency} yok!"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_LOCKED, "&cKİLİTLENDİ"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_UNLOCKED, "{color}KİLİT KALDIRILDI"); + yml.addDefault(Messages.UPGRADES_UPGRADE_BOUGHT_CHAT, "&a{player} adlı oyuncu &6{upgradeName} satın aldı"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-1"), "{color}Demir Ocağı"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-1"), + Arrays.asList("&7Adanda üretilen kaynak", "&7sayısını arttırır.", "", "{tierColor}Seviye 1: +50% Kaynak Artışı, &b{cost} {currency}", + "&7Seviye 2: +100% Kaynak Artışı, &b8 Elmas", + "&7Seviye 3: Zümrüt üretir, &b12 Elmas", + "&7Seviye 4: +200% Kaynak Artışı, &b16 Elmas", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-2"), "{color}Altın Ocağı"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-2"), + Arrays.asList("&7Adanda üretilen kaynak", "&7sayısını arttırır.", "&aSeviye 1: +50% Kaynak Artışı, &b{cost} {currency}", + "{tierColor}Seviye 2: +100% Kaynak Artışı, &b8 Elmas", + "&7Seviye 3: Zümrüt üretir, &b12 Elmas", + "&7Seviye 4: +200% Kaynak Artışı, &b16 Elmas", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-3"), "{color}Zümrüt Ocağı"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-3"), + Arrays.asList("&7Adanda üretilen kaynak", "&7sayısını arttırır.", "&aSeviye 1: +50% Kaynak Artışı, &b{cost} {currency}", + "&7Seviye 2: +100% Kaynak Artışı, &b8 Elmas", + "{tierColor}Seviye 3: Zümrüt üretir, &b12 Elmas", + "&7Seviye 4: +200% Kaynak Artışı, &b16 Elmas", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-4"), "{color}Mistik Ocak"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-4"), + Arrays.asList("&7Adanda üretilen kaynak", "&7sayısını arttırır.", "&aSeviye 1: +50% Kaynak Artışı, &b{cost} {currency}", + "&7Seviye 2: +100% Kaynak Artışı, &b8 Elmas", + "&7Seviye 3: Zümrüt üretir, &b12 Elmas", + "{tierColor}Seviye 4: +200% Kaynak Artışı, &b16 Elmas", "")); + yml.addDefault(Messages.UPGRADES_CATEGORY_ITEM_NAME_PATH + "traps", "&eTızak satın al"); + yml.addDefault(Messages.UPGRADES_CATEGORY_ITEM_LORE_PATH + "traps", Arrays.asList("&7Alınan tuzaklar", "&7sağda sıralanacak.", "", "&eGöz atmak için tıkla!")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "swords").replace("{tier}", "tier-1"), "{color}Keskin Kılıçlar"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "swords").replace("{tier}", "tier-1"), + Arrays.asList("&7Takımının kılıç ve", "&7baltalarında kalıcı olarak", "&7Keskinlik I olacak!", "", "&7Ücret: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-1"), "{color}Korumalı Zırh I"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-1"), + Arrays.asList("&7Takımının zırhlarında kalıcı", "&7koruma olur!", "", "{tierColor}Seviye 1: Koruma I, &b{cost} {currency}", + "&7Seviye 2: Koruma II, &b10 Elmas", + "&7Seviye 3: Koruma III, &b20 Elmas", + "&7Seviye 4: Koruma IV, &b30 Elmas", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-2"), "{color}Korumalı Zırh II"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-2"), + Arrays.asList("&7Takımının zırhlarında kalıcı", "&7koruma olur!", "", "&aSeviye 1: Koruma I, &b5 Elmas", + "{tierColor}Tier 2: Koruma II, &b{cost} {currency}", + "&7Seviye 3: Koruma III, &b20 Elmas", + "&7Seviye 4: Koruma IV, &b30 Elmas", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-3"), "{color}Korumalı Zırh III"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-3"), + Arrays.asList("&7Takımının zırhlarında kalıcı", "&7koruma olur!", "", "&aSeviye 1: Protection I, &b5 Elmas", + "&7Seviye 2: Koruma II, &b10 Elmas", + "{tierColor}Seviye 3: Koruma III, &b{cost} {currency}", + "&7Seviye 4: Koruma IV, &b30 Elmas", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-4"), "{color}Korumalı Zırh IV"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-4"), + Arrays.asList("&7Takımının zırhlarında kalıcı", "&7koruma olur!", "","&aSeviye 1: Koruma I, &b5 Elmas", + "&7Seviye 2: Koruma II, &b10 Elmas", + "&7Seviye 3: Koruma III, &b20 Elmas", + "{tierColor}Tier 4: Koruma IV, &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "miner").replace("{tier}", "tier-1"), "{color}Manyak Madenci I"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "miner").replace("{tier}", "tier-1"), + Arrays.asList("&7Takımındaki oyuncular, kalıcı", "&7Acele efektine sahip olurlar.", "", "{tierColor}Seviye 1: Acele I, &b{cost} {currency}", + "&7Seviye 2: Acele II, &b6 Elmas", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "miner").replace("{tier}", "tier-2"), "{color}Manyak Madenci II"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "miner").replace("{tier}", "tier-2"), + Arrays.asList("&7Takımındaki oyuncular, kalıcı", "&7Acele efektine sahip olurlar.", "", "&aSeviye 1: Acele I, &b4 Elmas", + "{tierColor}Seviye 2: Acele II, &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "heal-pool").replace("{tier}", "tier-1"), "{color}Can Havuzu"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "heal-pool").replace("{tier}", "tier-1"), + Arrays.asList("&7Adanda durduğun sürece", "&7canın yenilenir!", "", "&7Ücret: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "dragon").replace("{tier}", "tier-1"), "{color}Dragon Buff"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "dragon").replace("{tier}", "tier-1"), + Arrays.asList("&7Ejderha Saldırısı sırasında", "&7takımın 2 Ejderhaya sahip olur", "", "&7Ücret: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_NAME_PATH + "glass", "&8⬆&7Satın Alınabilir"); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_LORE_PATH + "glass", Collections.singletonList("&8⬇&7Tuzak Listesi")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "first", "{color}Tuzak #1: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "first", Arrays.asList("&7Adana giren ilk", "&7kişi bu tuzağı", "&7aktifleştirir!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "first", + Arrays.asList("", "&7Bu tuzağı satın almak,", "&7tuzağı sıraya ekler. Fiyat,", "&7adandaki tuzak sayısına", "&7göre belirlenir.", "", "&7Sıradaki tuzak: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "second", "{color}Tuzak #2: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "second", Arrays.asList("&7Adana giren ikinci", "&7kişi bu tuzağı", "&7aktifleştirir!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "second", + Arrays.asList("", "&7Bu tuzağı satın almak,", "&7tuzağı sıraya ekler. Fiyat,", "&7adandaki tuzak sayısına", "&7göre belirlenir.", "", "&7Sıradaki tuzak: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "third", "{color}Tuzak #3: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "third", Arrays.asList("&7Adana giren üçüncü", "&7kişi bu tuzağı", "&7aktifleştirir!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "third", + Arrays.asList("", "&7Bu tuzağı satın almak,", "&7tuzağı sıraya ekler. Fiyat,", "&7adandaki tuzak sayısına", "&7göre belirlenir.", "", "&7Sıradaki tuzak: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "1", "{color}Bu bir tuzak!"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "1", Arrays.asList("&75 saniye boyunca Körlük ve", "&7Yavaşlık verir.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "2", "{color}Karşı Saldırı Tuzağı"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "2", Arrays.asList("&7Tetiklendiğinde, adandaki takım arkadaşlarına", "&7Hız efekti verir.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "3", "{color}Alaram Tuzağı"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "3", Arrays.asList("&7Görünmez oyuncuları", "&7görünür kılar.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "4", "{color}Madenci Yorgunluğu Tuzağı"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "4", Arrays.asList("&710 saniye boyunca", "&7Madenci Yorgunluğu verir.", "")); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_NAME_PATH + "back", "&aGeri"); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_LORE_PATH + "back", Collections.singletonList("&7Yükseltmeler & Tuzaklar")); + yml.addDefault(Messages.UPGRADES_CATEGORY_GUI_NAME_PATH + "traps", "&8Tuzak Ekle"); + yml.addDefault(Messages.UPGRADES_TRAP_QUEUE_LIMIT, "&cTrap sırası dolu!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_MSG, "&c&l{trap} tetiklendi!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_TITLE, "&cTUZAK TETİKLENDİ!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_SUBTITLE, "&f{trap} &ftuzağın tetiklendi!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_MSG + "3", "&c&lAlarm, {color}&l{team} &c<akımdaki &7&l{player} &c<arafından tetiklendi!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_TITLE + "3", "&c&lALARM!!!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_SUBTITLE + "3", "&fAlarm, {color}{team} &fTakım tarafından tetiklendi!"); + save(); + setPrefix(m(Messages.PREFIX)); + } +} From bcbea5ead955cfa8849806d3ad005177f7ad3ad2 Mon Sep 17 00:00:00 2001 From: JektDV <85441535+JektDV@users.noreply.github.com> Date: Thu, 3 Mar 2022 02:25:26 +0700 Subject: [PATCH 24/43] Added Indonesia Languange (#400) Indonesia Languange on BedWars1058 Minigames plugins --- .../bedwars/language/Indonesia.java | 546 ++++++++++++++++++ 1 file changed, 546 insertions(+) create mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Indonesia.java diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Indonesia.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Indonesia.java new file mode 100644 index 000000000..f5ec53c84 --- /dev/null +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Indonesia.java @@ -0,0 +1,546 @@ +/* + * BedWars1058 - A bed wars mini-game. + * Copyright (C) 2021 Andrei Dascălu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact e-mail: andrew.dascalu@gmail.com + */ + +package com.andrei1058.bedwars.language; + +import com.andrei1058.bedwars.BedWars; +import com.andrei1058.bedwars.api.configuration.ConfigPath; +import com.andrei1058.bedwars.api.language.Language; +import com.andrei1058.bedwars.api.language.Messages; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; + +import static com.andrei1058.bedwars.BedWars.mainCmd; + +public class Indonesia extends Language { + + public Indonesia() { + super(BedWars.plugin, "id"); + + YamlConfiguration yml = getYml(); + yml.options().copyDefaults(true); + yml.addDefault(Messages.PREFIX, ""); + yml.addDefault("name", "Indonesia"); + + // this must stay here + // move message to new path + if (yml.get("player-die-knocked-regular") != null && yml.get(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL) == null) { + yml.set(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL, yml.getString("player-die-knocked-regular")); + yml.set("player-die-knocked-regular", null); + } + if (yml.get("player-die-knocked-final") != null && yml.get(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL) == null) { + yml.set(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL, yml.getString("player-die-knocked-final")); + yml.set("player-die-knocked-final", null); + } + + yml.addDefault(Messages.COMMAND_MAIN, Arrays.asList("", "&2▪ &7/" + mainCmd + " stats", "&2▪ &7/" + mainCmd + " join &o", "&2▪ &7/" + mainCmd + " leave", "&2▪ &7/" + mainCmd + " lang", "&2▪ &7/" + mainCmd + " gui", "&2▪ &7/" + mainCmd + " start &3(vip)")); + yml.addDefault(Messages.COMMAND_LANG_LIST_HEADER, "{prefix} &2Bahasa Tersedia:"); + yml.addDefault(Messages.COMMAND_LANG_LIST_FORMAT, "&a▪ &7{iso} - &f{name}"); + yml.addDefault(Messages.COMMAND_LANG_USAGE, "{prefix}&7Gunakan: /lang &f&o"); + yml.addDefault(Messages.COMMAND_LANG_SELECTED_NOT_EXIST, "{prefix}&cBahasa ini tidak tersedia!"); + yml.addDefault(Messages.COMMAND_LANG_SELECTED_SUCCESSFULLY, "{prefix}&aBahasa terganti!"); + yml.addDefault(Messages.COMMAND_LANG_USAGE_DENIED, "{prefix}&cAnda tidak bisa ganti bahasa saat dalam permainan."); + yml.addDefault(Messages.COMMAND_JOIN_USAGE, "§a▪ §7Gunakan: /" + mainCmd + " join §o"); + yml.addDefault(Messages.COMMAND_JOIN_GROUP_OR_ARENA_NOT_FOUND, "{prefix}&cTidak ada arena atau group yang bernama: {name}"); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_IS_FULL, "{prefix}&cArena tersebut penuh!\n&aSilakan pertimbangkan untuk menyumbang untuk lebih banyak fitur. &7&o(click)"); + yml.addDefault(Messages.COMMAND_JOIN_NO_EMPTY_FOUND, "{prefix}&cTidak ada arena yang tersedia untuk sekarang ;("); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_IS_FULL_OF_VIPS, "{prefix}&cKami meminta maaf tapi arena sedang penuh.\n&cKami tahu Anda seorang donatur tetapi sebenarnya arena ini penuh dengan staf atau/dan donatur."); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_PARTY_TOO_BIG, "{prefix}&cParty anda terlalu ramai untuk memasuki arena sebagai team :("); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_NOT_PARTY_LEADER, "{prefix}&cHanya pemimpin yang dapat memilih arena."); + yml.addDefault(Messages.COMMAND_JOIN_PLAYER_JOIN_MSG, "{prefix}&7{player} &etelah masuk (&b{on}&e/&b{max}&e)!"); + yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_MSG, "{prefix}§6Kamu sekarang menonton §9{arena}§6.\n{prefix}§eKamu bisa keluar arena kapan pun dengan cara §c/leave§e."); + yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_DENIED_MSG, "&cPenonton tidak diperbolehkan di arena tersebut!"); + yml.addDefault(Messages.COMMAND_TP_PLAYER_NOT_FOUND, "{prefix}&cPemain tidak ditemukan!"); + yml.addDefault(Messages.COMMAND_TP_NOT_IN_ARENA, "{prefix}&cPlayer tersebut tidak ada di arena!"); + yml.addDefault(Messages.COMMAND_TP_NOT_STARTED, "{prefix}&cArena dimana player tersebut berada belum dimulai!"); + yml.addDefault(Messages.COMMAND_TP_USAGE, "{prefix}&cGunakan: /bw tp "); + yml.addDefault(Messages.REJOIN_NO_ARENA, "{prefix}&cTidak ada arena untuk bergabung kembali!"); + yml.addDefault(Messages.REJOIN_DENIED, "{prefix}&cKamu tidak dapat bergabung ke arena kembali. Pertandingan selesai atau bed kamu telah dihancurkan."); + yml.addDefault(Messages.REJOIN_ALLOWED, "{prefix}&eMemasuki arena &a{arena}&e!"); + yml.addDefault(Messages.COMMAND_REJOIN_PLAYER_RECONNECTED, "{prefix}&7{player} &etelah terhubung kembali!"); + yml.addDefault(Messages.COMMAND_LEAVE_DENIED_NOT_IN_ARENA, "{prefix}&cKamu sedang tidak di arena!"); + yml.addDefault(Messages.COMMAND_LEAVE_MSG, "{prefix}&7{player} &etelah keluar!"); + yml.addDefault(Messages.COMMAND_NOT_ALLOWED_IN_GAME, "{prefix}&cAnda tidak dapat melakukan ini selama pertandingan."); + yml.addDefault(Messages.COMMAND_NOT_FOUND_OR_INSUFF_PERMS, "{prefix}&cPerintah tidak ditemukan atau Anda tidak memiliki izin!"); + yml.addDefault(Messages.COMMAND_PARTY_HELP, Arrays.asList("&6▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&aPerintah Party:", "&e/party help &7- &bCetak pesan bantuan ini", "&e/party invite &7- &bMengundang pemain ke party Anda", + "&e/party leave &7- &bMeninggalkan party yang anda masuki", + "&e/party remove &7- &bKeluarkan pemain dari party", + "&e/party accept &7- &bTerima undangan party", "&e/party disband &7- &bBubarkan party")); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_USAGE, "{prefix}&eGunakan: &7/party invite "); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_PLAYER_OFFLINE, "{prefix}&7{player} &eis not online!"); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_SENT, "{prefix}&eInvite sent to &7{player}&6."); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_SENT_TARGET_RECEIVE_MSG, "{prefix}&b{player} &ehas invited you to a party! &o&7(Click to accept)"); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_CANNOT_INVITE_YOURSELF, "{prefix}&cKamu tidak dapat mengundang diri anda sendiri!"); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_PLAYER_OFFLINE, "{prefix}&7{player} &esedang offline!"); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_NO_INVITE, "{prefix}&eTidak ada undangan party yang perlu kamu terima!"); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_ALREADY_IN_PARTY, "{prefix}&eKamu sedang berada di party!"); + yml.addDefault(Messages.COMMAND_PARTY_INSUFFICIENT_PERMISSIONS, "{prefix}&cHanya pemilik party yang dapat melakukan ini!"); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_USAGE, "{prefix}&eGunakan: &7/party accept "); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_SUCCESS, "{prefix}&7{player} &etelah memasuki party!"); + yml.addDefault(Messages.COMMAND_PARTY_GENERAL_DENIED_NOT_IN_PARTY, "{prefix}&cKamu tidak berada di party!"); + yml.addDefault(Messages.COMMAND_PARTY_LEAVE_DENIED_IS_OWNER_NEEDS_DISBAND, "{prefix}&cKamu tidak dapat keluar dari party kamu sendiri!\n&eCoba gunakan: &b/party disband"); + yml.addDefault(Messages.COMMAND_PARTY_LEAVE_SUCCESS, "{prefix}&7{player} &etelah keluar party!"); + yml.addDefault(Messages.COMMAND_PARTY_DISBAND_SUCCESS, "{prefix}&eParty dibubarkan!"); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_USAGE, "{prefix}&7Gunakan: &e/party remove "); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_SUCCESS, "{prefix}&7{player} &etelah dikeluarkan dari party,"); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_DENIED_TARGET_NOT_PARTY_MEMBER, "{prefix}&7{player} &etidak ada di party!"); + yml.addDefault(Messages.COMMAND_FORCESTART_NOT_IN_GAME, "§c▪ §7Kamu sedang tidak bermain!"); + yml.addDefault(Messages.COMMAND_FORCESTART_SUCCESS, "§c▪ §7Hitung mundur dipersingkat!"); + yml.addDefault(Messages.COMMAND_FORCESTART_NO_PERM, "{prefix}&7Anda tidak dapat memaksa memulai arena.\n§7Harap pertimbangkan untuk menyumbang untuk fitur VIP."); + yml.addDefault(Messages.COMMAND_COOLDOWN, "&cAnda belum bisa melakukannya! Tunggu {seconds} detik lagi!"); + yml.addDefault(Messages.ARENA_JOIN_VIP_KICK, "{prefix}&cMaaf, tapi Anda dikeluarkan karena donatur bergabung ke arena.\n&aHarap pertimbangkan untuk menyumbang untuk lebih banyak fitur. &7&o(click)"); + yml.addDefault(Messages.ARENA_START_COUNTDOWN_STOPPED_INSUFF_PLAYERS_CHAT, "{prefix}§cTidak ada cukup pemain! Hitung mundur dihentikan!"); + yml.addDefault(Messages.ARENA_RESTART_PLAYER_KICK, "{prefix}&eArena tempat Anda berada sedang dimulai ulang."); + yml.addDefault(Messages.ARENA_STATUS_PLAYING_NAME, "&cBermain"); + yml.addDefault(Messages.ARENA_STATUS_RESTARTING_NAME, "&4Memulai Kembali"); + yml.addDefault(Messages.ARENA_STATUS_WAITING_NAME, "&2Menunggu §c{full}"); + yml.addDefault(Messages.ARENA_STATUS_STARTING_NAME, "&6Mulai §c{full}"); + yml.addDefault(Messages.ARENA_GUI_INV_NAME, "&8Klik untuk bergabung!"); + yml.addDefault(Messages.ARENA_GUI_ARENA_CONTENT_NAME, "&a&l{name}"); + yml.addDefault(Messages.ARENA_GUI_ARENA_CONTENT_LORE, Arrays.asList("", "&7Status: {status}", "&7Pemain: &f{on}&7/&f{max}", "&7Tipe: &a{group}", "", "&aKlik Kiri untuk bergabung.", "&eKlik Kanan untuk menonton.")); + yml.addDefault(Messages.ARENA_GUI_SKIPPED_ITEM_NAME, "&r{serverIp}"); + yml.addDefault(Messages.ARENA_GUI_SKIPPED_ITEM_LORE, Collections.emptyList()); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CHAT, "{prefix}&ePermainan dimulai dalam &6{time} &edetik!"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_TITLE, " "); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE, "&a{second}"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-5", "&e❺"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-4", "&e❹"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-3", "&c❸"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-2", "&c❷"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-1", "&c❶"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_TITLE, " "); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_SUB_TITLE, "&cMenunggu lebih banyak pemain.."); + yml.addDefault(Messages.ARENA_STATUS_START_PLAYER_TITLE, "&aMULAI"); + yml.addDefault(Messages.ARENA_STATUS_START_PLAYER_TUTORIAL, Arrays.asList("&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&f &lPerang Kasur", "", + "&e&l Lindungi kasur Anda dan hancurkan kasur musuh.", + "&e&l Tingkatkan diri Anda dan tim Anda dengan mengumpulkan", + "&e&l Besi, Emas, Zamrud, dan Berlian dari generator", + "&e&l untuk mendapatkan akses peningkatan yang kuat.", "", + "&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬")); + yml.addDefault(Messages.ARENA_JOIN_DENIED_SELECTOR, "{prefix}&cMaaf, tetapi sementara Anda tidak dapat bergabung ke arena tersebut. Gunakan Klik Kanan untuk menonton!"); + yml.addDefault(Messages.ARENA_SPECTATE_DENIED_SELECTOR, "{prefix}&cMaaf tapi sementara kamu tidak bisa menonton arena ini. Gunakan Klik Kiri untuk bergabung!"); + yml.addDefault(Messages.ARENA_JOIN_DENIED_NO_PROXY, "&cMaaf, tetapi Anda harus bergabung ke arena menggunakan BedWarsProxy. \n&eJika Anda ingin menyiapkan arena, pastikan untuk memberi diri Anda izin bw.setup sehingga Anda dapat bergabung dengan server secara langsung!"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teleporter"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{prefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Hati: &f{health}%", "&7Bar Kelaparan: &f{food}", "", "&7Klik kiri untuk menonton!")); + yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lKembali ke lobi"); + yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Klik kanan untuk keluar ke lobi!")); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_ENTER_TITLE, "&aMenonton &7{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_ENTER_SUBTITLE, "&cSNEAK untuk keluar"); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_LEAVE_TITLE, "&eKeluar dari mode Penonton"); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_LEAVE_SUBTITLE, ""); + yml.addDefault(Messages.ARENA_LEAVE_PARTY_DISBANDED, "{prefix}§cPemilik party telah pergi dan party itu dibubarkan!"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TIER, "&eTingkat &c{tier}"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TYPE_DIAMOND, "&b&lBerlian"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TYPE_EMERALD, "&a&lZamrud"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TIMER, "&eMuncul dalam &c{seconds} &edetik"); + yml.addDefault(Messages.GENERATOR_UPGRADE_CHAT_ANNOUNCEMENT, "{prefix}{generatorType} Generator &etelah ditingkatkan ke Tingkat &c{tier}"); + yml.addDefault(Messages.FORMATTING_CHAT_LOBBY, "{level}{vPrefix}&7{player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_WAITING, "{level}{vPrefix}&7{player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_SHOUT, "&6[SHOUT] {team} {level}{vPrefix}&7{player}&f{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_TEAM, "&f{team} {level}{vPrefix}&7{player}{vSuffix} {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_SPECTATOR, "&7[PENONTON] {level}{vPrefix}{player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_HEALTH, Arrays.asList("&c❤")); + yml.addDefault(Messages.FORMATTING_SPECTATOR_TEAM, "PENONTON"); + yml.addDefault(Messages.FORMATTING_SPECTATOR_COLOR, "&7"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_PRESTARTING, Arrays.asList("{teamColor}&l{teamLetter} &r{teamColor}", "{team} ", "{vPrefix} {teamColor}")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_PRESTARTING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_PLAYING, Arrays.asList("{teamColor}&l{teamLetter} &r{teamColor}", "{team} ", "{vPrefix} {teamColor}&l{teamLetter} &r{teamColor}")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_PLAYING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_STARTING, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_STARTING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_WAITING, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_WAITING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_LOBBY, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_LOBBY, new ArrayList<>()); + + yml.addDefault(Messages.FORMATTING_SCOREBOARD_DATE, "dd/MM/yy"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_GENERIC, "{TeamColor}{TeamLetter}&f {TeamName}: {TeamStatus}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_ELIMINATED, "&c&l✘"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_BED_DESTROYED, "&a{remainingPlayers}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_ALIVE, "&a&l✓"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_NEXEVENT_TIMER, "mm:ss"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_YOUR_TEAM, "&7 KAMU"); + yml.addDefault(Messages.FORMATTING_ACTION_BAR_TRACKING, "&fMelacak: {team} &f- Jarak: {distance}m"); + yml.addDefault(Messages.FORMATTING_TEAM_WINNER_FORMAT, " {TeamColor}{TeamName} &7- {members}"); + yml.addDefault(Messages.FORMATTING_SOLO_WINNER_FORMAT, " {TeamColor}{TeamName} &7- {members}"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER1, "I"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER2, "II"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER3, "III"); + yml.addDefault(Messages.FORMATTING_DESPAWNABLE_UTILITY_NPC_HEALTH, "▮ "); + yml.addDefault(Messages.FORMATTING_STATS_DATE_FORMAT, "yyyy/MM/dd HH:mm"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_TEAM, "{TeamColor}[{TeamName}]"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_SHOUT, "&6[SHOUT]"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_SPECTATOR, "&7[PENONTON]"); + yml.addDefault(Messages.MEANING_FULL, "Penuh"); + yml.addDefault(Messages.MEANING_SHOUT, "shout"); + yml.addDefault(Messages.MEANING_NOBODY, "Bukan Siapa Siapa"); + yml.addDefault(Messages.MEANING_NEVER, "Tidak Pernah"); + yml.addDefault(Messages.MEANING_IRON_SINGULAR, "Besi"); + yml.addDefault(Messages.MEANING_IRON_PLURAL, "Besi"); + yml.addDefault(Messages.MEANING_GOLD_SINGULAR, "Emas"); + yml.addDefault(Messages.MEANING_GOLD_PLURAL, "Emas"); + yml.addDefault(Messages.MEANING_EMERALD_SINGULAR, "Zamrud"); + yml.addDefault(Messages.MEANING_EMERALD_PLURAL, "Zamrud"); + yml.addDefault(Messages.MEANING_DIAMOND_SINGULAR, "Zamrud"); + yml.addDefault(Messages.MEANING_DIAMOND_PLURAL, "Zamrud"); + yml.addDefault(Messages.MEANING_VAULT_SINGULAR, "$"); + yml.addDefault(Messages.MEANING_VAULT_PLURAL, "$"); + yml.addDefault(Messages.INTERACT_CANNOT_PLACE_BLOCK, "{prefix}&cAnda tidak dapat menempatkan blok di sini!"); + yml.addDefault(Messages.INTERACT_CANNOT_BREAK_BLOCK, "{prefix}&cAnda hanya dapat memecahkan blok yang ditempatkan oleh pemain!"); + yml.addDefault(Messages.INTERACT_CANNOT_BREAK_OWN_BED, "&cAnda tidak dapat menghancurkan kasur Anda sendiri!"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_CHAT_ANNOUNCEMENT, "\n&f&lPENGHANCURAN KASUR > {TeamColor}{TeamName} Kasur &7telah dihancurkan oleh {PlayerColor}{PlayerName}&7!\n"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_TITLE_ANNOUNCEMENT, "&cKASUR HANCUR!"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_SUBTITLE_ANNOUNCEMENT, "&fAnda tidak akan respawn kembali!"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_CHAT_ANNOUNCEMENT_TO_VICTIM, "&f&lPENGHANCURKAN KASUR N > &7Kasur Anda telah dihancurkan oleh {PlayerColor}{PlayerName}&7!"); + yml.addDefault(Messages.INTERACT_CHEST_CANT_OPEN_TEAM_ELIMINATED, "&cAnda tidak dapat membuka peti ini karena tim ini belum tereliminasi!"); + yml.addDefault(Messages.PLAYER_DIE_VOID_FALL_REGULAR_KILL, "{PlayerColor}{PlayerName} &7jatuh ke void."); + yml.addDefault(Messages.PLAYER_DIE_VOID_FALL_FINAL_KILL, "{PlayerColor}{PlayerName} &7jatuh ke void. &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL, "{PlayerColor}{PlayerName} &7terlempar ke dalam void oleh {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL, "{PlayerColor}{PlayerName} &7terlempar ke dalam void oleh {KillerColor}{KillerName}&7. &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_PVP_LOG_OUT_REGULAR, "{PlayerColor}{PlayerName} &7terputus saat bertarung dengan {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_PVP_LOG_OUT_FINAL, "{PlayerColor}{PlayerName} &7terputus saat bertarung dengan {KillerColor}{KillerName}&7. &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_BY_REGULAR_KILL, "{PlayerColor}{PlayerName} &7didorong oleh {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_BY_FINAL_KILL, "{PlayerColor}{PlayerName} &7didorong oleh {KillerColor}{KillerName}&7. &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITH_SOURCE_REGULAR_KILL, "{PlayerColor}{PlayerName} &7terkena bom cinta dari {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITH_SOURCE_FINAL_KILL, "{PlayerColor}{PlayerName} &7terkena bom cinta dari {KillerColor}{KillerName}&7. &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITHOUT_SOURCE_REGULAR, "{PlayerColor}{PlayerName} &7terkena bom."); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITHOUT_SOURCE_FINAL_KILL, "{PlayerColor}{PlayerName} &7terkena bom. &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_PVP_REGULAR_KILL, "{PlayerColor}{PlayerName} &7dibunuh oleh {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_PVP_FINAL_KILL, "{PlayerColor}{PlayerName} &7dibunuh oleh {KillerColor}{KillerName}&7. &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_UNKNOWN_REASON_REGULAR, "{PlayerColor}{PlayerName} &7mati."); + yml.addDefault(Messages.PLAYER_DIE_UNKNOWN_REASON_FINAL_KILL, "{PlayerColor}{PlayerName} &7mati. &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_SHOOT_REGULAR, "{PlayerColor}{PlayerName} &7ditembak oleh {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_SHOOT_FINAL_KILL, "{PlayerColor}{PlayerName} &7ditembak oleh {KillerColor}{KillerName}&7! &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_DEBUG_REGULAR, "{PlayerColor}{PlayerName} &7dibunuh oleh {KillerColor}BedBug si {KillerTeamName}!"); + yml.addDefault(Messages.PLAYER_DIE_DEBUG_FINAL_KILL, "{PlayerColor}{PlayerName} &7dibunuh oleh {KillerColor}{KillerTeamName}'s &7BedBug! &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_IRON_GOLEM_REGULAR, "{PlayerColor}{PlayerName} &7dibunuh oleh {KillerColor}Iron Golem si {KillerTeamName}!"); + yml.addDefault(Messages.PLAYER_DIE_IRON_GOLEM_FINAL_KILL, "{PlayerColor}{PlayerName} &7dibunuh oleh {KillerColor}Iron Golem si {KillerTeamName}! &b&lPEMBUNUHAN TERAKHIR!"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_DIAMOND, "{prefix}&b+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_EMERALD, "{prefix}&a+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_IRON, "{prefix}&f+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_GOLD, "{prefix}&6+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_TITLE, "&cKAMU MATI!"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_SUBTITLE, "&eAnda akan muncul kembali dalam &c{time} &edetik!"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_CHAT, "{prefix}&eAnda akan muncul kembali dalam &c{time} &edetik!"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWNED_TITLE, "&aMUNCUL KEMBALI!"); + yml.addDefault(Messages.PLAYER_DIE_ELIMINATED_CHAT, "{prefix}&cKamu telah dieliminasi!"); + yml.addDefault(Messages.PLAYER_HIT_BOW, "{prefix}{TeamColor}{PlayerName} &7berada di &c{amount} &7HP!"); + yml.addDefault(Messages.GAME_END_GAME_OVER_PLAYER_TITLE, "&c&lPERMAINAN SELESAI!"); + yml.addDefault(Messages.GAME_END_VICTORY_PLAYER_TITLE, "&6&lKEMENANGAN!"); + yml.addDefault(Messages.GAME_END_TEAM_WON_CHAT, "{prefix}{TeamColor}{TeamName} &atelah memenangkan permainan!"); + yml.addDefault(Messages.GAME_END_TOP_PLAYER_CHAT, Arrays.asList("&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&f &lPerang Kasur", "", "{winnerFormat}", "", "", + "&e &lPembunuh Pertama &7- {firstName} - {firstKills}", + "&6 &lPembunuh Kedua &7- {secondName} - {secondKills}", + "&c &lPembunuh Ketiga &7- {thirdName} - {thirdKills}", "", + "&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬")); + yml.addDefault(Messages.BED_HOLOGRAM_DEFEND, "&c&lPertahankan Kasur Anda!"); + yml.addDefault(Messages.BED_HOLOGRAM_DESTROYED, "&c&lKasur anda telah dihancurkan!"); + yml.addDefault(Messages.NPC_NAME_TEAM_UPGRADES, "&bPENINGKATAN TIM,&e&LKLIK KANAN"); + yml.addDefault(Messages.NPC_NAME_SOLO_UPGRADES, "&bPENINGKATAN INDIVIDU,&e&lKLIK KANAN"); + yml.addDefault(Messages.NPC_NAME_TEAM_SHOP, "&bTOKO TIM,&e&lKLIK KANAN"); + yml.addDefault(Messages.NPC_NAME_SOLO_SHOP, "&bTOKO BARANG,&e&lKLIK KANAN"); + yml.addDefault(Messages.TEAM_ELIMINATED_CHAT, "\n&f&lTIM ELIMINASI > {TeamColor}Tim {TeamName} &ctelah dieliminasi!\n"); + yml.addDefault(Messages.NEXT_EVENT_BEDS_DESTROY, "&cPenghancuran Kasur"); + yml.addDefault(Messages.NEXT_EVENT_DIAMOND_UPGRADE_II, "&fBerlian II"); + yml.addDefault(Messages.NEXT_EVENT_DIAMOND_UPGRADE_III, "&fBerlian III"); + yml.addDefault(Messages.NEXT_EVENT_DRAGON_SPAWN, "&fKematian Mendadak"); + yml.addDefault(Messages.NEXT_EVENT_EMERALD_UPGRADE_II, "&fZamrud II"); + yml.addDefault(Messages.NEXT_EVENT_EMERALD_UPGRADE_III, "&fZamrud III"); + yml.addDefault(Messages.NEXT_EVENT_GAME_END, "&4Permainan Berakhir"); + yml.addDefault(Messages.NEXT_EVENT_TITLE_ANNOUNCE_BEDS_DESTROYED, "&cKASUR HANCUR!"); + yml.addDefault(Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_BEDS_DESTROYED, "&fSemua kasur telah dihancurkan!"); + yml.addDefault(Messages.NEXT_EVENT_CHAT_ANNOUNCE_BEDS_DESTROYED, "&c&lSemua kasur telah dihancurkan!"); + yml.addDefault(Messages.NEXT_EVENT_TITLE_ANNOUNCE_SUDDEN_DEATH, "&cKematian Mendadak"); + yml.addDefault(Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_SUDDEN_DEATH, ""); + yml.addDefault(Messages.NEXT_EVENT_CHAT_ANNOUNCE_SUDDEN_DEATH, "&cKEMATIAN MENDADAK: &6&b{TeamDragons} {TeamColor}Naga {TeamName}!"); + yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} Experience Bed Wars Diterima (Waktu Bermain)."); + yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} Experience Bed Wars Diterima (Memenangkan Permainan)."); + yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} Experience Bed Wars Diterima (Dukungan Tim)."); + + yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Koin (Waktu Bermain)."); + yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Koin (Memenangkan Permainan)."); + yml.addDefault(Messages.MONEY_REWARD_PER_TEAMMATE, "{prefix}&6+{money} Koin (Dukungan Tim)."); + yml.addDefault(Messages.MONEY_REWARD_BED_DESTROYED, "{prefix}&6+{money} Koin (Menghancurkan Kasur)."); + yml.addDefault(Messages.MONEY_REWARD_FINAL_KILL, "{prefix}&6+{money} Koin (Pembunuhan Terakhir)."); + yml.addDefault(Messages.MONEY_REWARD_REGULAR_KILL, "{prefix}&6+{money} Koin (Pembunuhan Biasa)."); + + /* Lobby Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "stats"), "&eStatistik"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "stats"), Collections.singletonList("&fKlik Kanan untuk melihat statistik!")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "arena-selector"), "&ePemilih Arena"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "arena-selector"), Collections.singletonList("&fKlik Kanan untuk memilih Arena!")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "leave"), "&eKembali ke Pusat"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fKlik Kanan untuk keluar dari Bed Wars!")); + /* Pre Game Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_NAME.replace("%path%", "stats"), "&eStatistik"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_LORE.replace("%path%", "stats"), Collections.singletonList("&fKlik Kanan untuk melihat statistik!")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_NAME.replace("%path%", "leave"), "&eKembali ke Lobi"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fKlik kanan untuk keluar Arena!")); + /* Spectator Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_NAME.replace("%path%", "teleporter"), "&eTeleporter"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_NAME.replace("%path%", "leave"), "&eKembali ke Lobi"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fKlik kanan untuk keluar Arena!")); + + /* save default items messages for stats gui */ + yml.addDefault(Messages.PLAYER_STATS_GUI_INV_NAME, "&8Statistik {player}"); + addDefaultStatsMsg(yml, "wins", "&6Kememenangan", "&f{wins}"); + addDefaultStatsMsg(yml, "losses", "&6Kekalahan", "&f{losses}"); + addDefaultStatsMsg(yml, "kills", "&6Membunuh", "&f{kills}"); + addDefaultStatsMsg(yml, "deaths", "&6Mati", "&f{deaths}"); + addDefaultStatsMsg(yml, "final-kills", "&6Pembunuhan Terakhir", "&f{finalKills}"); + addDefaultStatsMsg(yml, "final-deaths", "&6Kematian Terakhir", "&f{finalDeaths}"); + addDefaultStatsMsg(yml, "beds-destroyed", "&6Menghancurkan Kasur", "&f{bedsDestroyed}"); + addDefaultStatsMsg(yml, "first-play", "&6Pertama Kali Bermain", "&f{firstPlay}"); + addDefaultStatsMsg(yml, "last-play", "&6Terakhir Kali Bermain", "&f{lastPlay}"); + addDefaultStatsMsg(yml, "games-played", "&6Pertandingan Dimainkan", "&f{gamesPlayed}"); + + yml.addDefault(Messages.SCOREBOARD_DEFAULT_WAITING, Arrays.asList("&f&fPERANG KASUR", "&7{date} &8{server}", "", "&fMap: &a{map}", "", "&fPlayers: &a{on}/{max}", "", "&fWaiting...", "", "§fMode: &a{group}", "&fVersion: &7{version}", "", "&e{server_ip}")); + yml.addDefault(Messages.SCOREBOARD_DEFAULT_STARTING, Arrays.asList("&f&lPERANG KASUR", "&7{date} &8{server}", "", "&fMap: &a{map}", "", "&fPlayers: &a{on}/{max}", "", "&fStarting in &a{time}s", "", "§fMode: &a{group}", "&fVersion: &7{version}", "", "&e{server_ip}")); + yml.addDefault(Messages.SCOREBOARD_DEFAULT_PLAYING, Arrays.asList("&e&lPERANG KASUR", "&7{date}", "", "&f{nextEvent} in &a{time}", "", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.Doubles.playing", Arrays.asList("&e&lPERANG KASUR", "&7{date}", "", "&f{nextEvent} in &a{time}", "", + "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.3v3v3v3.playing", Arrays.asList("&e&lPERANG KASUR", "&7{date}", "", "&f{nextEvent} in &a{time}", "", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", + "", "&fKills: &a{kills}", "&fFinal Kills: &a{finalKills}", "&fBeds Broken: &a{beds}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.4v4v4v4.playing", Arrays.asList("&e&lPERANG KASUR", "&7{date}", "", "&f{nextEvent} in &a{time}", "", "{team}", "{team}", "{team}", "{team}", + "", "&fKills: &a{kills}", "&fPembunuhan Terakhir: &a{finalKills}", "&fBed Dihancurkan: &a{beds}", "", "&e{server_ip}")); + + yml.addDefault(Messages.SCOREBOARD_LOBBY, Arrays.asList("&6&lBedWars,&4&lB&6edWars,&6&lB&4e&6dWars,&6&lBe&4d&6Wars,&6&lBed&4W&6ars,&6&lBedW&4a&6rs,&6&lBedWa&4r&6s,&6&lBedWar&4s,&6&lBedWars", "&fLevel Anda: {level}", "", "&fProgres: &a{currentXp}&7/&b{requiredXp}", "{progress}", "", "&7{player}", "", "&fKoin: &a{money}" + , "", "&fTotal Kemenangan: &a{wins}", "&fTotal Membunuh: &a{kills}", "", "&e{server_ip}")); + + // + yml.addDefault(Messages.SHOP_INDEX_NAME, "&8Quick Buy"); + yml.addDefault(Messages.SHOP_QUICK_ADD_NAME, "&8Adding to Quick Buy..."); + yml.addDefault(Messages.SHOP_INSUFFICIENT_MONEY, "{prefix}&cKamu tidak mempunyai {currency} yang cukup! Butuh {amount} lagi!"); + yml.addDefault(Messages.SHOP_NEW_PURCHASE, "{prefix}&aKamu membeli &6{item}"); + yml.addDefault(Messages.SHOP_ALREADY_BOUGHT, "{prefix}&cKamu telah membeli itu!!"); + yml.addDefault(Messages.SHOP_UTILITY_NPC_SILVERFISH_NAME, "{TeamColor}&l{TeamName} &r{TeamColor}Silverfish"); + yml.addDefault(Messages.SHOP_UTILITY_NPC_IRON_GOLEM_NAME, "{TeamColor}{despawn}s &8[ {TeamColor}{health}&8]"); + yml.addDefault(Messages.SHOP_SEPARATOR_NAME, "&8⇧ Categories"); + yml.addDefault(Messages.SHOP_SEPARATOR_LORE, Collections.singletonList("&8⇩ Items")); + yml.addDefault(Messages.SHOP_QUICK_BUY_NAME, "&bQuick Buy"); + yml.addDefault(Messages.SHOP_QUICK_BUY_LORE, new ArrayList<>()); + yml.addDefault(Messages.SHOP_QUICK_EMPTY_NAME, "&cEmpty slot!"); + yml.addDefault(Messages.SHOP_QUICK_EMPTY_LORE, Arrays.asList("&7This is a Quick Buy Slot!", "&bSneak Click &7any item in", "&7the shop to add it here.")); + yml.addDefault(Messages.SHOP_CAN_BUY_COLOR, "&a"); + yml.addDefault(Messages.SHOP_CANT_BUY_COLOR, "&c"); + yml.addDefault(Messages.SHOP_LORE_STATUS_CAN_BUY, "&eKlik untuk membeli!"); + yml.addDefault(Messages.SHOP_LORE_STATUS_CANT_AFFORD, "&cKamu tidak mempunyai {currency} yang cukup!"); + yml.addDefault(Messages.SHOP_LORE_STATUS_MAXED, "&aMAKSIMAL!"); + yml.addDefault(Messages.SHOP_LORE_QUICK_ADD, "&bJongkok Klik untuk menambahkan ke Beli Cepat!"); + yml.addDefault(Messages.SHOP_LORE_QUICK_REMOVE, "&bJongkok Klik untuk menhapus dari Beli Cepat!"); + + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "&8Blok", "&aBlok", Collections.singletonList("&eKlik untuk melihat!")); + + addContentMessages(yml, "wol", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Wol", Arrays.asList("&7Biaya: &f{cost} {currency}", "", "&7Bagus untuk menyebrang", "&7pulau. Berubah menjadi tim Anda", + "&7color.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "clay", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Hardened Clay", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Blok dasar untuk mempertahankan kasur Anda", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "glass", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Kaca Anti Ledakan", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Kebal terhadap ledakan", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "stone", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}End Stone", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Blok keras untuk mempertahankan kasur Anda", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "ladder", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Tangga", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Berguna untuk menyelamatkan kucing yang terjebak", "&7di pohon.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "obsidian", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Obsidian", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Perlindungan ekstrim untuk kasur Anda", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "wood", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Kayu", Arrays.asList("&7Biaya: {cos} {currency}", "", "&7Blok keras untuk mempertahankan kasur Anda", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_MELEE, "&8Senjata Jarak Dekat", "&aSenjata Jarak Dekat", Collections.singletonList("&eKlik untuk melihat!")); + + addContentMessages(yml, "stone-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Stone Sword", Arrays.asList("&7Biaya: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "iron-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Iron Sword", Arrays.asList("&7Biaya: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "diamond-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Diamond Sword", Arrays.asList("&7Biaya: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "stick", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Stik (Knockback I)", Arrays.asList("&7Biaya: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "&8Armor", "&aArmor", Collections.singletonList("&eClick to view!")); + + addContentMessages(yml, "chainmail", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Armor Chainmail Permanenr", Arrays.asList("&7Biaya: {cost} {currency}", + "", "&7Celana dan sepatu chainmail yang dapat membuat", "&7kamu akan selalu muncul dengan ini", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "iron-armor", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Armor Besi Permanen", Arrays.asList("&7Biaya: {cost} {currency}", + "", "&7Celana dan sepatu besi yang dapat membuat", "&7kamu akan selalu muncul dengan ini.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "diamond-armor", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Armor Berlian Permanen", Arrays.asList("&7Biaya: {cost} {currency}", + "", "&7Celana dan sepatu berlian yang dapat membuat", "&7kamu akan selalu naksir dengan ini.", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "&8Tools", "&aTools", Collections.singletonList("&eKlik untuk melihat!")); + + addContentMessages(yml, "shears", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Gunting Permanen", Arrays.asList("&7Biaya: {cost} {currency}", + "", "&7Bagus untuk menyingkirkan wol. Kamu", "&7akan selalu muncul dengan gunting ini.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "pickaxe", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Pickaxe {tier}", Arrays.asList("&7Biaya: {cost} {currency}", "&7Tingkat: &e{tier}", + "", "&7Ini adalah item yang dapat diupgrade.", "&7Itu akan kehilangan 1 tingkat setelah.", "&7mati!", "", "&7Anda akan secara permanen", "&7respawn dengan setidaknya", "&7tingkat terendah.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "axe", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Kapak {tier}", Arrays.asList("&7Biaya: {cost} {currency}", "&7Tingkat: &e{tier}", + "", "&7Ini adalah item yang dapat diupgrade.", "&7Itu akan kehilangan 1 tingkat setelah.", "&7mati!", "", "&7Anda akan secara permanen", "&7respawn dengan setidaknya", "&7tingkat terendah.", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_RANGED, "&8Senjata Jarak Jauh", "&aSenjata Jarak Jauh", Collections.singletonList("&eKlik untuk melihat!")); + + addContentMessages(yml, "arrow", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Anak Panah", Arrays.asList("&7Biaya: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow1", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Panah", Arrays.asList("&7Cost: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow2", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Panah (Power I)", Arrays.asList("&7Cost: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow3", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Panah (Power I, Punch I)", Arrays.asList("&7Cost: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "&8Ramuan", "&aRamuan", Collections.singletonList("&eKlik untuk melihat!")); + + addContentMessages(yml, "speed-potion", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Ramuan Kecepatan II (45 detik)", Arrays.asList("&7Biaya: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "jump-potion", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Ramuan Lompat V (45 detik)", Arrays.asList("&7Biaya: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "invisibility", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Ramuan Tak Kasat Mata (30 detik)", Arrays.asList("&7Biaya: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "&8Utilitas", "&aUtilitas", Collections.singletonList("&eKlik untuk melihat!")); + + addContentMessages(yml, "golden-apple", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Apel Emas", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Penyembuhan menyeluruh.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bedbug", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Kutu Kasur", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Memunculkan ikan gabus di mana", + "&7bola salju mendarat untuk mengalihkan perhatian", "&7musuh. Berlangsung 15 detik.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "dream-defender", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Pertahanan Impian", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Iron Golem untuk membantu mempertahankan", + "&7base. Berlangsung 4 menit.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "fireball", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Bola Api", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Klik kanan untuk meluncurkan! Bagus untuk", + "&7memukul mundur musuh yang berjalan", "&7di jembatan tipis", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "tnt", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}TNT", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Langsung menyala, cocok", + "&7untuk meledakkan sesuatu!", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "ender-pearl", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Ender Pearl", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Cara tercepat untuk menyerang base", + "&7musuh.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "water-bucket", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Water Bucket", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Bagus untuk memperlambat musuh.", + "&7Bisa juga melindungi", "&7dari serangan TNT.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bridge-egg", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Telur Jembatan", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Telur ini menciptakan jembatan di", + "&7percobaan setelah dilempar.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "magic-milk", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Susu Ajaib", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Hindari memicu jebakan untuk 60", + "&7detik setelah diminum.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "sponge", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Spons", Arrays.asList("&7Biaya: {cost} {currency}", "", "&7Bagus untuk menyerap air.", + "", "{quick_buy}", "{buy_status}")); + + // + yml.addDefault(Messages.MEANING_NO_TRAP, "Tidak ada Perangkap!"); + yml.addDefault(Messages.FORMAT_UPGRADE_TRAP_COST, "&7Biaya: {currencyColor}{cost} {currency}"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_CAN_AFFORD, "&e"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_CANT_AFFORD, "&c"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_UNLOCKED, "&a"); + yml.addDefault(Messages.FORMAT_UPGRADE_TIER_LOCKED, "&7"); + yml.addDefault(Messages.FORMAT_UPGRADE_TIER_UNLOCKED, "&a"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_CLICK_TO_BUY, "{color}Klik untuk membeli!"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_INSUFFICIENT_MONEY, "{color}Anda tidak punya {currency} yang cukup!"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_LOCKED, "&cTERKUNCI"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_UNLOCKED, "{color}TERBUKA"); + yml.addDefault(Messages.UPGRADES_UPGRADE_BOUGHT_CHAT, "&a{player} membeli &6{upgradeName}"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-1"), "{color}Iron Forge"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-1"), + Arrays.asList("&7Tingkatkan pemijahan sumber daya aktif", "&7di pulau mu.", "", "{tierColor}Tingkat 1: +50% Sumber Daya, &b{cost} {currency}", + "&7Tingkat 2: +100% Sumber Daya, &b8 Berlian", + "&7Tingkat 3: Spawn zamrud, &b12 Berlian", + "&7Tingkat 4: +200% Sumber Daya, &b16 Berlian", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-2"), "{color}Golden Forge"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-2"), + Arrays.asList("&7Tingkatkan pemijahan sumber daya aktif", "&7di pulau mu.", "", "&aTingkat 1: +50% Sumber Daya, &b{cost} {currency}", + "{tierColor}Tingkat 2: +100% Sumber Daya, &b8 Berlian", + "&7Tingkat 3: Spawn zamrud, &b12 Berlian", + "&7Tingkat 4: +200% Sumber Daya, &b16 Berlian", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-3"), "{color}Emerald Forge"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-3"), + Arrays.asList("&7Tingkatkan pemijahan sumber daya aktif", "&7di pulau mu.", "", "&aTingkat 1: +50% Sumber Daya, &b{cost} {currency}", + "&aTingkat 2: +100% Sumber Daya, &b8 Berlian", + "{tierColor}Tingkat 3: Spawn zamrud, &b12 Berlian", + "&7Tingkat 4: +200% Sumber Daya, &b16 Berlian", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-4"), "{color}Molten Forge"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-4"), + Arrays.asList("&7Tingkatkan pemijahan sumber daya aktif", "&7di pulau mu.", "", "&aTingkat 1: +50% Sumber Daya, &b{cost} {currency}", + "&aTingkat 2: +100% Sumber Daya, &b8 Berlian", + "&aTingkat 3: Spawn zamrud, &b12 Berlian", + "{tierColor}Tingkat 4: +200% Sumber Daya, &b16 Berlian", "")); + yml.addDefault(Messages.UPGRADES_CATEGORY_ITEM_NAME_PATH + "traps", "&aBeli perangkap"); + yml.addDefault(Messages.UPGRADES_CATEGORY_ITEM_LORE_PATH + "traps", Arrays.asList("&7Perangkap yang dibeli akan menjadi", "&7antri di sebelah kanan.", "", "&eKlik untuk menelusuri!")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "swords").replace("{tier}", "tier-1"), "{color}Pedang yang Diasah"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "swords").replace("{tier}", "tier-1"), + Arrays.asList("&7Tim Anda memperoleh keuntungan secara permanen", "&7Ketajaman I pada semua pedang dan", "&7kapak!", "", "&7Biaya: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-1"), "{color}Armor Bertulang I"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-1"), + Arrays.asList("&7Tim Anda memperoleh keuntungan secara permanen", "&7Perlindungan pada semua bagian armor!", "", "{tierColor}Tingkat 1: Perlindungan I, &b{cost} {currency}", + "&7Tingkat 2: Perlindungan II, &b10 Berlian", + "&7Tingkat 3: Perlindungan III, &b20 Berlian", + "&7Tingkat 4: Perlindungan IV, &b30 Berlian", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-2"), "{color}Armor Bertulang II"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-2"), + Arrays.asList("&7Tim Anda memperoleh keuntungan secara permanen", "&7Perlindungan pada semua bagian armor!", "", "&aTingkat 1: Perlindungan I, &b5 Diamonds", + "{tierColor}Tingkat 2: Perlindungan II, &b{cost} {currency}", + "&7Tingkat 3: Perlindungan III, &b20 Berlian", + "&7Tingkat 4: Perlindungan IV, &b30 Berlian", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-3"), "{color}Armor Bertulang III"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-3"), + Arrays.asList("&7Tim Anda memperoleh keuntungan secara permanen", "&7Perlindungan pada semua bagian armor!", "", "&aTingkat 1: Perlindungan I, &b5 Diamonds", + "&aTingkat 2: Perlindungan II, &b10 Berlian", + "{tierColor}Tingkat 3: Perlindungan III, &b{cost} {currency}", + "&7Tingkat 4: Perlindungan IV, &b30 Berlian", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-4"), "{color}Armor Bertulang IV"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-4"), + Arrays.asList("&7Tim Anda memperoleh keuntungan secara permanen", "&7Perlindungan pada semua bagian armor!", "", "&aTingkat 1: Perlindungan I, &b5 Diamonds", + "&aTingkat 2: Perlindungan II, &b10 Berlian", + "&aTingkat 3: Perlindungan III, &b20 Berlian", + "{tierColor}Tingkat 4: Perlindungan IV, &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "miner").replace("{tier}", "tier-1"), "{color}Penambang Maniak I"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "miner").replace("{tier}", "tier-1"), + Arrays.asList("&7Semua pemain di tim Anda", "&7mendapatkan Haste secara permanen.", "", "{tierColor}Tingkat 1: Haste I, &b{cost} {currency}", + "&7Tingkat 2: Haste II, &b6 Berlian", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "miner").replace("{tier}", "tier-2"), "{color}Penambang Maniak II"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "miner").replace("{tier}", "tier-2"), + Arrays.asList("&7Semua pemain di tim Anda", "&7mendapatkan Haste secara permanen.", "", "&aTingkat 1: Haste I, &b4 Berlian", + "{tierColor}Tingkat 2: Haste II, &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "heal-pool").replace("{tier}", "tier-1"), "{color}Kolam Penyembuhan"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "heal-pool").replace("{tier}", "tier-1"), + Arrays.asList("&7Membuat bidang Regenerasi", "&7di sekitar base Anda!", "", "&7Biaya: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "dragon").replace("{tier}", "tier-1"), "{color}Dragon Buff"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "dragon").replace("{tier}", "tier-1"), + Arrays.asList("&7Tim Anda akan memiliki 2 naga", "&7bukannya 1 selama deathmatch!", "", "&7Biaya: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_NAME_PATH + "glass", "&8⬆&7Dapat Dibeli"); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_LORE_PATH + "glass", Collections.singletonList("&8⬇&7Antrian Perangkap")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "first", "{color}Perangkap #1: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "first", Arrays.asList("&7Musuh pertama yang berjalan", "&7ke base Anda akan memicu", "&7perangkap ini!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "first", + Arrays.asList("", "&7Membeli perangkap akan", "&7antri disini. biayanya", "&7akan skala berdasarkan", "&7jumlah jebakan yang diantrekan.", "", "&7Perangkap Selanjutnya: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "second", "{color}Perangkap #2: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "second", Arrays.asList("&7Musuh kedua yang berjalan", "&7ke base Anda akan memicu", "&7perangkap ini!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "second", + Arrays.asList("", "&7Membeli perangkap akan", "&7antri disini. biayanya", "&7akan skala berdasarkan", "&7jumlah jebakan yang diantrekan.", "", "&7Perangkap Selanjutnya: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "third", "{color}Perangkap #3: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "third", Arrays.asList("&7Musuh ketiga yang berjalan", "&7ke base Anda akan memicu", "&7perangkap ini!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "third", + Arrays.asList("", "&7Membeli perangkap akan", "&7antri disini. biayanya", "&7akan skala berdasarkan", "&7jumlah jebakan yang diantrekan.", "", "&7Perangkap Selanjutnya: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "1", "{color}It's a trap!"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "1", Arrays.asList("&7Menimbulkan Kebutaan dan Kelambatan", "&7selama 5 detik.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "2", "{color}Counter-Offensive Trap"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "2", Arrays.asList("&7Memberikan Kecepatan I selama 15 detik untuk", "&7pemain sekutu di dekat base Anda.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "3", "{color}Alarm Trap"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "3", Arrays.asList("&7Mengungkapkan pemain tak terlihat serta", "&7nama dan tim mereka.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "4", "{color}Perangkap Kelelahan Penambang"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "4", Arrays.asList("&7Menimbulkan Kelelahan Penambangan selama 10", "&7detik.", "")); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_NAME_PATH + "back", "&aKembali"); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_LORE_PATH + "back", Collections.singletonList("&7Ke Upgrades & Perangkap")); + yml.addDefault(Messages.UPGRADES_CATEGORY_GUI_NAME_PATH + "traps", "&8Antrian Jebakan"); + yml.addDefault(Messages.UPGRADES_TRAP_QUEUE_LIMIT, "&cAntrian jebakan penuh!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_MSG, "&c&l{trap} telah berangkat!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_TITLE, "&cPERANGKAP TERPICU!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_SUBTITLE, "&fPerangkap {trap} telah terpicu!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_MSG + "3", "&c&lPerangkap alarm telah dipicu oleh &7&l{player} &c&ldari tim {color}&l{team}!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_TITLE + "3", "&c&lALARM!!!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_SUBTITLE + "3", "&fPerangkap alarm telah dipicu oleh tim {color}{team}&f!"); + save(); + setPrefix(m(Messages.PREFIX)); + } +} From e9be01f2cf50165fcca6f3efd55a9d4a7a206817 Mon Sep 17 00:00:00 2001 From: DeusDrizzyy <66096216+DeusDrizzyy@users.noreply.github.com> Date: Wed, 2 Mar 2022 16:25:35 -0300 Subject: [PATCH 25/43] Portuguese Language (#369) * Portuguese Language * Fix sry lol --- .../java/com/andrei1058/bedwars/BedWars.java | 1 + .../bedwars/language/Portuguese.java | 545 ++++++++++++++++++ 2 files changed, 546 insertions(+) create mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Portuguese.java diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 474b4b99d..991a9db35 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -184,6 +184,7 @@ public void onLoad() { new Bangla(); new Persian(); new Hindi(); + new Portuguese(); config = new MainConfig(this, "config"); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Portuguese.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Portuguese.java new file mode 100644 index 000000000..4f696af1b --- /dev/null +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Portuguese.java @@ -0,0 +1,545 @@ +/* + * BedWars1058 - A bed wars mini-game. + * Copyright (C) 2021 Andrei Dascălu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Contact e-mail: andrew.dascalu@gmail.com + */ + +package com.andrei1058.bedwars.language; + +import com.andrei1058.bedwars.BedWars; +import com.andrei1058.bedwars.api.configuration.ConfigPath; +import com.andrei1058.bedwars.api.language.Language; +import com.andrei1058.bedwars.api.language.Messages; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; + +import static com.andrei1058.bedwars.BedWars.mainCmd; + +public class Portuguese extends Language { + + public Portuguese() { + super(BedWars.plugin, "pt"); + YamlConfiguration yml = getYml(); + yml.options().copyDefaults(true); + yml.addDefault(Messages.PREFIX, ""); + yml.addDefault("name", "Português"); + + // this must stay here + // move message to new path + if (yml.get("player-die-knocked-regular") != null && yml.get(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL) == null) { + yml.set(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL, yml.getString("player-die-knocked-regular")); + yml.set("player-die-knocked-regular", null); + } + if (yml.get("player-die-knocked-final") != null && yml.get(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL) == null) { + yml.set(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL, yml.getString("player-die-knocked-final")); + yml.set("player-die-knocked-final", null); + } + + yml.addDefault(Messages.COMMAND_MAIN, Arrays.asList("", "&2▪ &7/" + mainCmd + " stats", "&2▪ &7/" + mainCmd + " join &o", "&2▪ &7/" + mainCmd + " leave", "&2▪ &7/" + mainCmd + " lang", "&2▪ &7/" + mainCmd + " gui", "&2▪ &7/" + mainCmd + " start &3(vip)")); + yml.addDefault(Messages.COMMAND_LANG_LIST_HEADER, "{prefix} &2Idiomas disponíveis:"); + yml.addDefault(Messages.COMMAND_LANG_LIST_FORMAT, "&a▪ &7{iso} - &f{name}"); + yml.addDefault(Messages.COMMAND_LANG_USAGE, "{prefix}&7Use: /lang &f&o"); + yml.addDefault(Messages.COMMAND_LANG_SELECTED_NOT_EXIST, "{prefix}&cEsta linguagem não existe!"); + yml.addDefault(Messages.COMMAND_LANG_SELECTED_SUCCESSFULLY, "{prefix}&aIdioma alterado!"); + yml.addDefault(Messages.COMMAND_LANG_USAGE_DENIED, "{prefix}&cVocê não pode mudar o idioma durante a partida."); + yml.addDefault(Messages.COMMAND_JOIN_USAGE, "§a▪ §7Use: /" + mainCmd + " join §o"); + yml.addDefault(Messages.COMMAND_JOIN_GROUP_OR_ARENA_NOT_FOUND, "{prefix}&cNão existe nenhuma arena ou grupo de arena chamado: {name}"); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_IS_FULL, "{prefix}&cEsta arena está cheia!\n&aVocê pode adquirir vantagens doando. &7&o(clique)"); + yml.addDefault(Messages.COMMAND_JOIN_NO_EMPTY_FOUND, "{prefix}&cNão há nenhuma arena disponível no momento ;("); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_IS_FULL_OF_VIPS, "{prefix}&cPedimos desculpas, mas esta arena está cheia.\n&cSabemos que é um doador, mas esta arena já está cheia de staffs e/ou doadores."); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_PARTY_TOO_BIG, "{prefix}&cA sua party é muito grande para poder entrar na arena. :("); + yml.addDefault(Messages.COMMAND_JOIN_DENIED_NOT_PARTY_LEADER, "{prefix}&cApenas o líder da party pode escolher a arena."); + yml.addDefault(Messages.COMMAND_JOIN_PLAYER_JOIN_MSG, "{prefix}&7{player} &eentrou (&b{on}&e/&b{max}&e)!"); + yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_MSG, "{prefix}§6Você agora está assistindo §9{arena}§6.\n{prefix}§eVocê pode sair da arena a qualquer momento com §c/leave§e."); + yml.addDefault(Messages.COMMAND_JOIN_SPECTATOR_DENIED_MSG, "&cEspectadores não são permitidos nesta arena!"); + yml.addDefault(Messages.COMMAND_TP_PLAYER_NOT_FOUND, "{prefix}&cJogador não encontrado!"); + yml.addDefault(Messages.COMMAND_TP_NOT_IN_ARENA, "{prefix}&cEste jogador não está em uma arena de bedwars!"); + yml.addDefault(Messages.COMMAND_TP_NOT_STARTED, "{prefix}&cA arena onde o jogador está ainda não começou!"); + yml.addDefault(Messages.COMMAND_TP_USAGE, "{prefix}&cUse: /bw tp "); + yml.addDefault(Messages.REJOIN_NO_ARENA, "{prefix}&cNão tem partidas para você se reconectar."); + yml.addDefault(Messages.REJOIN_DENIED, "{prefix}&cVocê não pode mais se juntar à arena. Jogo terminou ou cama destruída."); + yml.addDefault(Messages.REJOIN_ALLOWED, "{prefix}&eEntrando na arena &a{arena}&e!"); + yml.addDefault(Messages.COMMAND_REJOIN_PLAYER_RECONNECTED, "{prefix}&7{player} &ese reconectou!"); + yml.addDefault(Messages.COMMAND_LEAVE_DENIED_NOT_IN_ARENA, "{prefix}&cVocê não está em uma arena!"); + yml.addDefault(Messages.COMMAND_LEAVE_MSG, "{prefix}&7{player} &esaiu!"); + yml.addDefault(Messages.COMMAND_NOT_ALLOWED_IN_GAME, "{prefix}&cVocê não pode fazer isso durante o jogo."); + yml.addDefault(Messages.COMMAND_NOT_FOUND_OR_INSUFF_PERMS, "{prefix}&cComando não encontrado ou você não tem permissão!"); + yml.addDefault(Messages.COMMAND_PARTY_HELP, Arrays.asList("&6▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&aComandos da Party:", "&e/party help &7- &bIrá mostrar essa mensagem", "&e/party invite &7- &bConvida o jogador para sua party", + "&e/party leave &7- &bSaia da sua party", + "&e/party remove &7- &bRemova o jogador da party", + "&e/party accept &7- &bAceite um pedido de party", "&e/party disband &7- &bRecuse um pedido de party")); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_USAGE, "{prefix}&eUse: &7/party invite "); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_PLAYER_OFFLINE, "{prefix}&7{player} &enão está online."); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_SENT, "{prefix}&ePedido enviado para &7{player}&6."); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_SENT_TARGET_RECEIVE_MSG, "{prefix}&b{player} &econvidou você para uma party! &o&7(Clique para aceitar)"); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_CANNOT_INVITE_YOURSELF, "{prefix}&cVocê não pode se convidar!"); + yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_PLAYER_OFFLINE, "{prefix}&7{player} &enão está online."); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_NO_INVITE, "{prefix}&cVocê não tem solicitações de party."); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_ALREADY_IN_PARTY, "{prefix}&eVocê já está em uma party!"); + yml.addDefault(Messages.COMMAND_PARTY_INSUFFICIENT_PERMISSIONS, "{prefix}&cSomente o dono da party pode fazer isso!"); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_USAGE, "{prefix}&eUse: &7/party accept "); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_SUCCESS, "{prefix}&7{player} &eentrou na party."); + yml.addDefault(Messages.COMMAND_PARTY_GENERAL_DENIED_NOT_IN_PARTY, "{prefix}&cVocê não está em uma party."); + yml.addDefault(Messages.COMMAND_PARTY_LEAVE_DENIED_IS_OWNER_NEEDS_DISBAND, "{prefix}&cVocê não pode sair da sua party.\n&eTente usar: &b/party disband"); + yml.addDefault(Messages.COMMAND_PARTY_LEAVE_SUCCESS, "{prefix}&7{player} &esaiu da party!"); + yml.addDefault(Messages.COMMAND_PARTY_DISBAND_SUCCESS, "{prefix}&eA party foi desfeita"); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_USAGE, "{prefix}&7Use: &e/party remove "); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_SUCCESS, "{prefix}&7{player} &efoi removido da party."); + yml.addDefault(Messages.COMMAND_PARTY_REMOVE_DENIED_TARGET_NOT_PARTY_MEMBER, "{prefix}&7{player} &enão está na sua party!"); + yml.addDefault(Messages.COMMAND_FORCESTART_NOT_IN_GAME, "§c▪ §7Você não está jogando!"); + yml.addDefault(Messages.COMMAND_FORCESTART_SUCCESS, "§c▪ §7Contagem regressiva encurtada!"); + yml.addDefault(Messages.COMMAND_FORCESTART_NO_PERM, "{prefix}&7Você não pode inicializar uma partida.\n§7Por favor, considere doar para obter vantagens VIP."); + yml.addDefault(Messages.COMMAND_COOLDOWN, "&cVocê não pode fazer isso ainda! Aguarde mais {seconds} segundos!"); + yml.addDefault(Messages.ARENA_JOIN_VIP_KICK, "{prefix}&cDesculpe, mas você foi expulso porque um doador entrou na arena.\n&aPor favor, considere doar para mais vantagens. &7&o(clique)"); + yml.addDefault(Messages.ARENA_START_COUNTDOWN_STOPPED_INSUFF_PLAYERS_CHAT, "{prefix}§cNão há jogadores suficientes! Contagem regressiva parada!"); + yml.addDefault(Messages.ARENA_RESTART_PLAYER_KICK, "{prefix}&eA arena em que você estava está reiniciando."); + yml.addDefault(Messages.ARENA_STATUS_PLAYING_NAME, "&cJogando"); + yml.addDefault(Messages.ARENA_STATUS_RESTARTING_NAME, "&4Reiniciando"); + yml.addDefault(Messages.ARENA_STATUS_WAITING_NAME, "&2Esperando §c{full}"); + yml.addDefault(Messages.ARENA_STATUS_STARTING_NAME, "&6Iniciando §c{full}"); + yml.addDefault(Messages.ARENA_GUI_INV_NAME, "&8Clique para entrar!"); + yml.addDefault(Messages.ARENA_GUI_ARENA_CONTENT_NAME, "&a&l{name}"); + yml.addDefault(Messages.ARENA_GUI_ARENA_CONTENT_LORE, Arrays.asList("", "&7Status: {status}", "&7Jogadores: &f{on}&7/&f{max}", "&7Tipo: &a{group}", "", "&aBotão esquerdo para entrar.", "&eBotão direito para assistir.")); + yml.addDefault(Messages.ARENA_GUI_SKIPPED_ITEM_NAME, "&r{serverIp}"); + yml.addDefault(Messages.ARENA_GUI_SKIPPED_ITEM_LORE, Collections.emptyList()); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CHAT, "{prefix}&eO jogo começa em &6{time} &esegundos!"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_TITLE, " "); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE, "&a{second}"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-5", "&e❺"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-4", "&e❹"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-3", "&c❸"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-2", "&c❷"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_SUB_TITLE + "-1", "&c❶"); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_TITLE, " "); + yml.addDefault(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_SUB_TITLE, "&cAguardando mais jogadores..."); + yml.addDefault(Messages.ARENA_STATUS_START_PLAYER_TITLE, "&aCOMEÇOU"); + yml.addDefault(Messages.ARENA_STATUS_START_PLAYER_TUTORIAL, Arrays.asList("&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&f &lBedWars", "", + "&e&l Proteja sua cama e destrua as camas inimigas.", + "&e&l Melhore você e sua equipe coletando", + "&e&l Ferro, Ouro, Esmeralda e Diamante de geradores", + "&e&l para adquirir as melhorias.", "", + "&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬")); + yml.addDefault(Messages.ARENA_JOIN_DENIED_SELECTOR, "{prefix}&cDesculpe, mas você não pode participar desta partida neste momento. Use o botão direito do mouse para espectar."); + yml.addDefault(Messages.ARENA_SPECTATE_DENIED_SELECTOR, "{prefix}&cDesculpe, mas você não pode espectar esta partida neste momento. Utilize o botão esquerdo para entrar na partida."); + yml.addDefault(Messages.ARENA_JOIN_DENIED_NO_PROXY, "&cDesculpe, mas precisa entrar em uma arena usando BedWarsProxy. \n&eSe você quiser configurar uma arena, certifique-se de dar a si mesmo a permissão bw.setup para que você possa entrar no servidor diretamente!"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_NAME, "&8Teletransportador"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_NAME, "{vPrefix}{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_TELEPORTER_GUI_HEAD_LORE, Arrays.asList("&7Vida: &f{health}%", "&7Fome: &f{food}", "", "&7Clique para teletransportar.")); + yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_NAME, "&c&lRetornar ao lobby"); + yml.addDefault(Messages.ARENA_SPECTATOR_LEAVE_ITEM_LORE, Collections.singletonList("&7Clique com o botão direito para sair.")); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_ENTER_TITLE, "&aEspectando: &7{player}"); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_ENTER_SUBTITLE, "&cUtilize o SHIFT para sair."); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_LEAVE_TITLE, "&eSaindo do modo espectador!"); + yml.addDefault(Messages.ARENA_SPECTATOR_FIRST_PERSON_LEAVE_SUBTITLE, ""); + yml.addDefault(Messages.ARENA_LEAVE_PARTY_DISBANDED, "{prefix}§cO dono da party saiu e a party foi desfeita."); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TIER, "&eNível &c{tier}"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TYPE_DIAMOND, "&b&lDiamante"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TYPE_EMERALD, "&a&lEsmeralda"); + yml.addDefault(Messages.GENERATOR_HOLOGRAM_TIMER, "&eGera em &c{seconds} &esegundos."); + yml.addDefault(Messages.GENERATOR_UPGRADE_CHAT_ANNOUNCEMENT, "{prefix}Geradores de {generatorType} &emelhorados para nível &c{tier}"); + yml.addDefault(Messages.FORMATTING_CHAT_LOBBY, "{level}{vPrefix}&7{player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_WAITING, "{level}{vPrefix}&7{player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_SHOUT, "{level}{vPrefix}&6[SHOUT] {team} &7{player}&f{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_TEAM, "{level}{vPrefix}&f{team}&7 {player}{vSuffix} {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_SPECTATOR, "{level}{vPrefix}&7[SPECTATOR] {player}{vSuffix}: {message}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_HEALTH, Arrays.asList("&c❤", "&aVida")); + yml.addDefault(Messages.FORMATTING_SPECTATOR_TEAM, "ESPEC"); + yml.addDefault(Messages.FORMATTING_SPECTATOR_COLOR, "&7"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_PRESTARTING, Arrays.asList("{teamColor}&l{teamLetter} &r{teamColor}", "{team} ", "{vPrefix} {teamColor}")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_PRESTARTING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_PLAYING, Arrays.asList("{teamColor}&l{teamLetter} &r{teamColor}", "{team} ", "{vPrefix} {teamColor}&l{teamLetter} &r{teamColor}")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_PLAYING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_STARTING, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_STARTING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_WAITING, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_WAITING, new ArrayList<>()); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_PREFIX_LOBBY, Arrays.asList("{vPrefix} ")); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TAB_SUFFIX_LOBBY, new ArrayList<>()); + + yml.addDefault(Messages.FORMATTING_SCOREBOARD_DATE, "dd/MM/yy"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_GENERIC, "{TeamColor}{TeamLetter}&f {TeamName}: {TeamStatus}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_ELIMINATED, "&c&l✘"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_BED_DESTROYED, "&a{remainingPlayers}"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_TEAM_ALIVE, "&a&l✓"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_NEXEVENT_TIMER, "mm:ss"); + yml.addDefault(Messages.FORMATTING_SCOREBOARD_YOUR_TEAM, "&7 VOCÊ"); + yml.addDefault(Messages.FORMATTING_ACTION_BAR_TRACKING, "&fRastreando: {team} &f- Distância: {distance}m"); + yml.addDefault(Messages.FORMATTING_TEAM_WINNER_FORMAT, " {TeamColor}{TeamName} &7- {members}"); + yml.addDefault(Messages.FORMATTING_SOLO_WINNER_FORMAT, " {TeamColor}{TeamName} &7- {members}"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER1, "I"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER2, "II"); + yml.addDefault(Messages.FORMATTING_GENERATOR_TIER3, "III"); + yml.addDefault(Messages.FORMATTING_DESPAWNABLE_UTILITY_NPC_HEALTH, "▮ "); + yml.addDefault(Messages.FORMATTING_STATS_DATE_FORMAT, "yyyy/MM/dd HH:mm"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_TEAM, "{TeamColor}[{TeamName}]"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_SHOUT, "&6[SHOUT]"); + yml.addDefault(Messages.FORMAT_PAPI_PLAYER_TEAM_SPECTATOR, "&7[ESPECTADOR]"); + yml.addDefault(Messages.MEANING_FULL, "Lotado"); + yml.addDefault(Messages.MEANING_SHOUT, "shout"); + yml.addDefault(Messages.MEANING_NOBODY, "Ninguém"); + yml.addDefault(Messages.MEANING_NEVER, "Nunca"); + yml.addDefault(Messages.MEANING_IRON_SINGULAR, "Ferro"); + yml.addDefault(Messages.MEANING_IRON_PLURAL, "Ferros"); + yml.addDefault(Messages.MEANING_GOLD_SINGULAR, "Ouro"); + yml.addDefault(Messages.MEANING_GOLD_PLURAL, "Ouros"); + yml.addDefault(Messages.MEANING_EMERALD_SINGULAR, "Esmeralda"); + yml.addDefault(Messages.MEANING_EMERALD_PLURAL, "Esmeraldas"); + yml.addDefault(Messages.MEANING_DIAMOND_SINGULAR, "Diamante"); + yml.addDefault(Messages.MEANING_DIAMOND_PLURAL, "Diamantes"); + yml.addDefault(Messages.MEANING_VAULT_SINGULAR, "$"); + yml.addDefault(Messages.MEANING_VAULT_PLURAL, "$"); + yml.addDefault(Messages.INTERACT_CANNOT_PLACE_BLOCK, "{prefix}&cVocê não pode colocar blocos aqui!"); + yml.addDefault(Messages.INTERACT_CANNOT_BREAK_BLOCK, "{prefix}&cVocê só pode quebrar blocos colocados por um jogador!"); + yml.addDefault(Messages.INTERACT_CANNOT_BREAK_OWN_BED, "&cVocê não pode destruir sua própria cama!"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_CHAT_ANNOUNCEMENT, "\n&f&lCAMA DESTRUIDA > {TeamColor}Cama do time {TeamName} &7foi destruida por {PlayerColor}{PlayerName}&7!\n"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_TITLE_ANNOUNCEMENT, "&cCAMA DESTRUIDA !"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_SUBTITLE_ANNOUNCEMENT, "&fVocê não vai mais renascer!"); + yml.addDefault(Messages.INTERACT_BED_DESTROY_CHAT_ANNOUNCEMENT_TO_VICTIM, "&f&lCAMA DESTRUIDA > &7Sua cama foi destruida por {PlayerColor}{PlayerName}&7!"); + yml.addDefault(Messages.INTERACT_CHEST_CANT_OPEN_TEAM_ELIMINATED, "&cVocê não pode abrir este baú porque esse time não foi eliminado!"); + yml.addDefault(Messages.PLAYER_DIE_VOID_FALL_REGULAR_KILL, "{PlayerColor}{PlayerName} &7caiu no void."); + yml.addDefault(Messages.PLAYER_DIE_VOID_FALL_FINAL_KILL, "{PlayerColor}{PlayerName} &7caiu no void. &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_IN_VOID_REGULAR_KILL, "{PlayerColor}{PlayerName} &7foi jogado no void por {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_IN_VOID_FINAL_KILL, "{PlayerColor}{PlayerName} &7foi jogado no void por {KillerColor}{KillerName}&7. &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_PVP_LOG_OUT_REGULAR, "{PlayerColor}{PlayerName} &7desconectou em combate com {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_PVP_LOG_OUT_FINAL, "{PlayerColor}{PlayerName} &7desconectou em combate com {KillerColor}{KillerName}&7. &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_BY_REGULAR_KILL, "{PlayerColor}{PlayerName} &7foi empurrado por {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_KNOCKED_BY_FINAL_KILL, "{PlayerColor}{PlayerName} &7foi empurrado por {KillerColor}{KillerName}&7. &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITH_SOURCE_REGULAR_KILL, "{PlayerColor}{PlayerName} &7foi atingido por uma TNT de {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITH_SOURCE_FINAL_KILL, "{PlayerColor}{PlayerName} &7foi atingido por uma TNT de {KillerColor}{KillerName}&7. &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITHOUT_SOURCE_REGULAR, "{PlayerColor}{PlayerName} &7foi atingido por uma TNT."); + yml.addDefault(Messages.PLAYER_DIE_EXPLOSION_WITHOUT_SOURCE_FINAL_KILL, "{PlayerColor}{PlayerName} &7foi atingido por uma TNT. &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_PVP_REGULAR_KILL, "{PlayerColor}{PlayerName} &7foi morto por {KillerColor}{KillerName}&7."); + yml.addDefault(Messages.PLAYER_DIE_PVP_FINAL_KILL, "{PlayerColor}{PlayerName} &7foi morto por {KillerColor}{KillerName}&7. &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_UNKNOWN_REASON_REGULAR, "{PlayerColor}{PlayerName} &7morreu."); + yml.addDefault(Messages.PLAYER_DIE_UNKNOWN_REASON_FINAL_KILL, "{PlayerColor}{PlayerName} &7morreu. &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_SHOOT_REGULAR, "{PlayerColor}{PlayerName} &7foi flechado por {KillerColor}{KillerName}&7!"); + yml.addDefault(Messages.PLAYER_DIE_SHOOT_FINAL_KILL, "{PlayerColor}{PlayerName} &7foi flechado por {KillerColor}{KillerName}&7! &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_DEBUG_REGULAR, "{PlayerColor}{PlayerName} &7foi morto por pela Traça de {KillerColor}{KillerTeamName}&7!"); + yml.addDefault(Messages.PLAYER_DIE_DEBUG_FINAL_KILL, "{PlayerColor}{PlayerName} &7foi morto por pela Traça de {KillerColor}{KillerTeamName}&7! &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_IRON_GOLEM_REGULAR, "{PlayerColor}{PlayerName} &7foi morto pelo Golem do {KillerColor}{KillerTeamName}&7!"); + yml.addDefault(Messages.PLAYER_DIE_IRON_GOLEM_FINAL_KILL, "{PlayerColor}{PlayerName} &7foi morto pelo Golem do {KillerColor}{KillerTeamName}&7! &b&lKILL FINAL!"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_DIAMOND, "{prefix}&b+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_EMERALD, "{prefix}&a+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_IRON, "{prefix}&f+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_REWARD_GOLD, "{prefix}&6+{amount} {meaning}"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_TITLE, "&cVOCÊ MORREU!"); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_SUBTITLE, "&eRenascendo em &c{time} &esegundos."); + yml.addDefault(Messages.PLAYER_DIE_RESPAWN_CHAT, "{prefix}&eVocê irá renascer em &c{time} &esegundos."); + yml.addDefault(Messages.PLAYER_DIE_RESPAWNED_TITLE, "&aRENASCIDO!"); + yml.addDefault(Messages.PLAYER_DIE_ELIMINATED_CHAT, "{prefix}&cVocê foi eliminado!"); + yml.addDefault(Messages.PLAYER_HIT_BOW, "{prefix}{TeamColor}{PlayerName} &7está com &c{amount} &7de vida!"); + yml.addDefault(Messages.GAME_END_GAME_OVER_PLAYER_TITLE, "&c&lFIM DE JOGO!"); + yml.addDefault(Messages.GAME_END_VICTORY_PLAYER_TITLE, "&6&lVITÓRIA!"); + yml.addDefault(Messages.GAME_END_TEAM_WON_CHAT, "{prefix}{TeamColor}{TeamName} &aganhou o jogo!"); + yml.addDefault(Messages.GAME_END_TOP_PLAYER_CHAT, Arrays.asList("&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬", + "&f &lBedWars", "", "{winnerFormat}", "", "", + "&e &l1º Assassino &7- {firstName} - {firstKills}", + "&6 &l2º Assassino &7- {secondName} - {secondKills}", + "&c &l3º Assassino &7- {thirdName} - {thirdKills}", "", + "&a▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬")); + yml.addDefault(Messages.BED_HOLOGRAM_DEFEND, "&c&lDefenda sua cama!"); + yml.addDefault(Messages.BED_HOLOGRAM_DESTROYED, "&c&lSua cama foi destruída!"); + yml.addDefault(Messages.NPC_NAME_TEAM_UPGRADES, "&bMELHORIAS DA EQUIPE,&e&lCLIQUE DIREITO"); + yml.addDefault(Messages.NPC_NAME_SOLO_UPGRADES, "&bMELHORIAS,&e&lCLIQUE DIREITO"); + yml.addDefault(Messages.NPC_NAME_TEAM_SHOP, "&bLOJA DA EQUIPE,&e&lCLIQUE DIREITO"); + yml.addDefault(Messages.NPC_NAME_SOLO_SHOP, "&bLOJA,&e&lCLIQUE DIREITO"); + yml.addDefault(Messages.TEAM_ELIMINATED_CHAT, "\n&f&lEQUIPE ELIMINADA > &cO time {TeamColor}{TeamName} &cfoi eliminado!\n"); + yml.addDefault(Messages.NEXT_EVENT_BEDS_DESTROY, "&cDestruição da Cama"); + yml.addDefault(Messages.NEXT_EVENT_DIAMOND_UPGRADE_II, "&fDiamante II"); + yml.addDefault(Messages.NEXT_EVENT_DIAMOND_UPGRADE_III, "&fDiamante III"); + yml.addDefault(Messages.NEXT_EVENT_DRAGON_SPAWN, "&fMorte Súbita"); + yml.addDefault(Messages.NEXT_EVENT_EMERALD_UPGRADE_II, "&fEsmeraldas II"); + yml.addDefault(Messages.NEXT_EVENT_EMERALD_UPGRADE_III, "&fEsmeraldas III"); + yml.addDefault(Messages.NEXT_EVENT_GAME_END, "&4Fim do jogo"); + yml.addDefault(Messages.NEXT_EVENT_TITLE_ANNOUNCE_BEDS_DESTROYED, "&cCAMA DESTRUÍDA!"); + yml.addDefault(Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_BEDS_DESTROYED, "&fTodas as camas foram destruídas!"); + yml.addDefault(Messages.NEXT_EVENT_CHAT_ANNOUNCE_BEDS_DESTROYED, "&c&lTodas as camas foram destruídas!"); + yml.addDefault(Messages.NEXT_EVENT_TITLE_ANNOUNCE_SUDDEN_DEATH, "&cMorte Súbita"); + yml.addDefault(Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_SUDDEN_DEATH, ""); + yml.addDefault(Messages.NEXT_EVENT_CHAT_ANNOUNCE_SUDDEN_DEATH, "&cMORTE SÚBITA: &6&b{TeamDragons} dragões do {TeamColor}{TeamName}"); + yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars Experience Received (Tempo de jogo)."); + yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BedWars Experience Received (Vencer o jogo)."); + yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars Experience Received (Suporte da equipe)."); + + yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Moedas (Tempo de jogo)."); + yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Moedas (Vencer o jogo)."); + yml.addDefault(Messages.MONEY_REWARD_PER_TEAMMATE, "{prefix}&6+{money} Moedas (Suporte da equipe)."); + yml.addDefault(Messages.MONEY_REWARD_BED_DESTROYED, "{prefix}&6+{money} Moedas (Bed Destroyed)."); + yml.addDefault(Messages.MONEY_REWARD_FINAL_KILL, "{prefix}&6+{money} Moedas (Final Kill)."); + yml.addDefault(Messages.MONEY_REWARD_REGULAR_KILL, "{prefix}&6+{money} Moedas (Regular Kill)."); + + /* Lobby Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "stats"), "&eEstatísticas"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "stats"), Collections.singletonList("&fBotão direito para ver estatísticas! ")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "arena-selector"), "&eSeletor de Arena"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "arena-selector"), Collections.singletonList("&fBotão direito para escolher arena.")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "leave"), "&eSair do BedWars"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fBotão direito para sair do BedWars!")); + /* Pre Game Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_NAME.replace("%path%", "stats"), "&eEstatísticas"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_LORE.replace("%path%", "stats"), Collections.singletonList("&fBotão direito para ver estatísticas!")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_NAME.replace("%path%", "leave"), "&eSair da Partida"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_WAITING_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fBotão direito para sair da arena!")); + /* Spectator Command Items */ + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_NAME.replace("%path%", "teleporter"), "&eTeletransportador"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_NAME.replace("%path%", "leave"), "&eSair da Partida"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_SPECTATOR_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fBotão direito para sair da arena!")); + + /* save default items messages for stats gui */ + yml.addDefault(Messages.PLAYER_STATS_GUI_INV_NAME, "&8Estatísticas de {player}"); + addDefaultStatsMsg(yml, "wins", "&6Vitórias", "&f{wins}"); + addDefaultStatsMsg(yml, "losses", "&6Perdas", "&f{losses}"); + addDefaultStatsMsg(yml, "kills", "&6Abates", "&f{kills}"); + addDefaultStatsMsg(yml, "deaths", "&6Mortes", "&f{deaths}"); + addDefaultStatsMsg(yml, "final-kills", "&6Abates Finais", "&f{finalKills}"); + addDefaultStatsMsg(yml, "final-deaths", "&6Mortes Finais", "&f{finalDeaths}"); + addDefaultStatsMsg(yml, "beds-destroyed", "&6Camas Destruidas", "&f{bedsDestroyed}"); + addDefaultStatsMsg(yml, "first-play", "&6Primeira Partida", "&f{firstPlay}"); + addDefaultStatsMsg(yml, "last-play", "&6Última Partida", "&f{lastPlay}"); + addDefaultStatsMsg(yml, "games-played", "&6Partidas", "&f{gamesPlayed}"); + + yml.addDefault(Messages.SCOREBOARD_DEFAULT_WAITING, Arrays.asList("&f&lBED WARS", "&7{date} &8{server}", "", "&fMapa: &a{map}", "", "&fJogadores: &a{on}/{max}", "", "&fEsperando...", "", "§fModo: &a{group}", "&fVersão: &7{version}", "", "&e{server_ip}")); + yml.addDefault(Messages.SCOREBOARD_DEFAULT_STARTING, Arrays.asList("&f&lBED WARS", "&7{date} &8{server}", "", "&fMapa: &a{map}", "", "&fJogadores: &a{on}/{max}", "", "&fInicio em &a{time}s", "", "§fModo: &a{group}", "&fVersão: &7{version}", "", "&e{server_ip}")); + yml.addDefault(Messages.SCOREBOARD_DEFAULT_PLAYING, Arrays.asList("&e&lBED WARS", "&7{date}", "", "&f{nextEvent} em &a{time}", "", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.Doubles.playing", Arrays.asList("&e&lBED WARS", "&7{date}", "", "&f{nextEvent} em &a{time}", "", + "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.3v3v3v3.playing", Arrays.asList("&e&lBED WARS", "&7{date}", "", "&f{nextEvent} em &a{time}", "", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", "{team}", + "", "&fKills: &a{kills}", "&fFinal Kills: &a{finalKills}", "&fBeds Broken: &a{beds}", "", "&e{server_ip}")); + + yml.addDefault("scoreboard.4v4v4v4.playing", Arrays.asList("&e&lBED WARS", "&7{date}", "", "&f{nextEvent} em &a{time}", "", "{team}", "{team}", "{team}", "{team}", + "", "&fKills: &a{kills}", "&fFinal Kills: &a{finalKills}", "&fBeds Broken: &a{beds}", "", "&e{server_ip}")); + + yml.addDefault(Messages.SCOREBOARD_LOBBY, Arrays.asList("&6&lBedWars,&4&lB&6edWars,&6&lB&4e&6dWars,&6&lBe&4d&6Wars,&6&lBed&4W&6ars,&6&lBedW&4a&6rs,&6&lBedWa&4r&6s,&6&lBedWar&4s,&6&lBedWars", "&fSeu nivel: {level}", "", "&fProgresso: &a{currentXp}&7/&b{requiredXp}", "{progress}", "", "&7{player}", "", "&fMoedas: &a{money}" + , "", "&fTotal de vitórias: &a{wins}", "&fTotal de abates: &a{kills}", "", "&e{server_ip}")); + + // + yml.addDefault(Messages.SHOP_INDEX_NAME, "&8Compra rápida"); + yml.addDefault(Messages.SHOP_QUICK_ADD_NAME, "&8Adicionando à compra rápida..."); + yml.addDefault(Messages.SHOP_INSUFFICIENT_MONEY, "{prefix}&cVocê não tem {currency} suficiente! Precisa de mais {amount}!"); + yml.addDefault(Messages.SHOP_NEW_PURCHASE, "{prefix}&aVocê comprou &6{item}"); + yml.addDefault(Messages.SHOP_ALREADY_BOUGHT, "{prefix}&cVocê já comprou isso!"); + yml.addDefault(Messages.SHOP_UTILITY_NPC_SILVERFISH_NAME, "{TeamColor}&l{TeamName} &r{TeamColor}Traça"); + yml.addDefault(Messages.SHOP_UTILITY_NPC_IRON_GOLEM_NAME, "{TeamColor}{despawn}s &8[ {TeamColor}{health}&8]"); + yml.addDefault(Messages.SHOP_SEPARATOR_NAME, "&8⇧ Categorias"); + yml.addDefault(Messages.SHOP_SEPARATOR_LORE, Collections.singletonList("&8⇩ Itens")); + yml.addDefault(Messages.SHOP_QUICK_BUY_NAME, "&bCompra rápida"); + yml.addDefault(Messages.SHOP_QUICK_BUY_LORE, new ArrayList<>()); + yml.addDefault(Messages.SHOP_QUICK_EMPTY_NAME, "&cEspaço vazio!"); + yml.addDefault(Messages.SHOP_QUICK_EMPTY_LORE, Arrays.asList("&7Este é um slot de compra rápida!", "&7Clique em um item segurando o", "&7shift para adicionar neste slot.")); + yml.addDefault(Messages.SHOP_CAN_BUY_COLOR, "&a"); + yml.addDefault(Messages.SHOP_CANT_BUY_COLOR, "&c"); + yml.addDefault(Messages.SHOP_LORE_STATUS_CAN_BUY, "&eClique para comprar!"); + yml.addDefault(Messages.SHOP_LORE_STATUS_CANT_AFFORD, "&cVocê não tem o suficiente de {currency}!"); + yml.addDefault(Messages.SHOP_LORE_STATUS_MAXED, "&aMÁXIMO!"); + yml.addDefault(Messages.SHOP_LORE_QUICK_ADD, "&bClique + shift para por na Compra Rápida"); + yml.addDefault(Messages.SHOP_LORE_QUICK_REMOVE, "&bClique + shift para tirar da Compra Rápida"); + + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "&8Blocos", "&aBlocos", Collections.singletonList("&eClique para ver!")); + + addContentMessages(yml, "wool", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Lã", Arrays.asList("&7Preço: &f{cost} {currency}", "", "&7Ótimo para atravessar ilhas.", "&7Transforma-se na cor do seu time.", + "&7color.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "clay", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Argila Endurecida", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Bloco básico para defender sua cama.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "glass", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Vidro à prova de explosão", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Imune a explosões.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "stone", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Pedra do Fim", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Bloco sólido para defender sua cama.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "ladder", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Escada", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Útil para salvar gatos presos", "&7de arvores.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "obsidian", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Obsidiana", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Proteção extrema para sua cama.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "wood", ConfigPath.SHOP_PATH_CATEGORY_BLOCKS, "{color}Madeira", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Bloco sólido para defender sua cama.", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_MELEE, "&8Corpo a corpo", "&aCorpo a corpo", Collections.singletonList("&eClique para ver!")); + + addContentMessages(yml, "stone-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Espada de Pedra", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "iron-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Espada de Ferro", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "diamond-sword", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Espada de Diamante", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "stick", ConfigPath.SHOP_PATH_CATEGORY_MELEE, "{color}Graveto (Repulsão I)", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "&aArmadura", "&aArmadura", Collections.singletonList("&eClique para ver!")); + + addContentMessages(yml, "chainmail", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Armadura de Malha Permanente", Arrays.asList("&7Preço: {cost} {currency}", + "", "&7Calças e botas de malha", "&7que você sempre irá renascer", "&7com elas.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "iron-armor", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Armadura de Ferro Permanente", Arrays.asList("&7Preço: {cost} {currency}", + "", "&7Calças e botas de ferro", "&7que você sempre irá renascer", "com elas.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "diamond-armor", ConfigPath.SHOP_PATH_CATEGORY_ARMOR, "{color}Armadura de Diamante Permanente", Arrays.asList("&7Preço: {cost} {currency}", + "", "&7Calças e botas de diamante", "&7que você sempre irá renascer", "com elas.", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "&8Ferramentas", "&aFerramentas", Collections.singletonList("&eClique para ver!")); + + addContentMessages(yml, "shears", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Tesouras Permanentes", Arrays.asList("&7Preço: {cost} {currency}", + "", "&7Ótimo para se livrar da lã. Você", "&7sempre irá nascer com as tesouras.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "pickaxe", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Picareta {tier}", Arrays.asList("&7Preço: {cost} {currency}", "&7Nível: &e{tier}", + "", "&7Este é um item melhorável.", "&7Ele perderá 1 nível após.", "&7você morer!", "", "&7Você vai permanentemente", "&7renascer com pelo menos o", "&7nível mais baixo.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "axe", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Machado {tier}", Arrays.asList("&7Preço: {cost} {currency}", "&7Nível: &e{tier}", + "", "&7Este é um item melhorável.", "&7Ele perderá 1 nível após.", "&7você morer!", "", "&7Você vai permanentemente", "&7renascer com pelo menos o", "&7nível mais baixo.", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_RANGED, "&8Arcos", "&aArcos", Collections.singletonList("&eClique para ver!")); + + addContentMessages(yml, "arrow", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Flecha", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow1", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Arco", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow2", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Arco (Força I)", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bow3", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Arco (Força I, Impacto I)", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "&8Poções", "&aPoções", Collections.singletonList("&eClique para ver!")); + + addContentMessages(yml, "speed-potion", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Poção de Agilidade II (45 segundos)", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "jump-potion", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Poção de Super Pulo V (45 segundos)", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "invisibility", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Poção de Invisibilidade (30 segundos)", Arrays.asList("&7Preço: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); + + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "&8Utilidades", "&aUtilidades", Collections.singletonList("&eClique para ver!")); + + addContentMessages(yml, "golden-apple", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Maça Dourada", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Cura completa.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bedbug", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Traça", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Gera traças onde a bola", + "&7de neve cai para distrair seus", "&7inimigos. Dura 15 segundos.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "dream-defender", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Defesa dos Sonhos", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Golem de Ferro para defender sua", + "&7base. Dura 4 minutos.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "fireball", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Bola de Fogo", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Botão direito para atirar! Ótimo para", + "&7repelir os inimigos andando", "&7por pontes.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "tnt", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}TNT", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Explode instantaneamente, apropriado", + "&7para explodir coisas!", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "ender-pearl", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Pérola do Fim", Arrays.asList("&7Preço: {cost} {currency}", "", "&7A maneira mais rápida de invadir", + "&7a base do inimigo.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "water-bucket", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Balde de Água", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Ótimo para atrasar inimigos. Também", + "&7protege contra TNT.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "bridge-egg", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Ovo das Pontes", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Este ovo cria uma ponte na", + "&7direção que for jogada.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "magic-milk", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Leite Mágico", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Evite acionar armadilhas por 60", + "&7segundos após o consumo.", "", "{quick_buy}", "{buy_status}")); + addContentMessages(yml, "sponge", ConfigPath.SHOP_PATH_CATEGORY_UTILITY, "{color}Esponja", Arrays.asList("&7Preço: {cost} {currency}", "", "&7Ótimo para absorver a água.", + "", "{quick_buy}", "{buy_status}")); + + // + yml.addDefault(Messages.MEANING_NO_TRAP, "Sem armadilha!"); + yml.addDefault(Messages.FORMAT_UPGRADE_TRAP_COST, "&7Preço: {currencyColor}{cost} {currency}"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_CAN_AFFORD, "&e"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_CANT_AFFORD, "&c"); + yml.addDefault(Messages.FORMAT_UPGRADE_COLOR_UNLOCKED, "&a"); + yml.addDefault(Messages.FORMAT_UPGRADE_TIER_LOCKED, "&7"); + yml.addDefault(Messages.FORMAT_UPGRADE_TIER_UNLOCKED, "&a"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_CLICK_TO_BUY, "{color}Clique para comprar!"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_INSUFFICIENT_MONEY, "{color}Você não tem o suficiente de {currency}."); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_LOCKED, "&cBLOQUEADO"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_UNLOCKED, "{color}DESBLOQUEADO"); + yml.addDefault(Messages.UPGRADES_UPGRADE_BOUGHT_CHAT, "&a{player} compro &6{upgradeName}"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-1"), "{color}Forja de Ferro"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-1"), + Arrays.asList("&Melhore a geração de recursos", "&7na sua base.", "", "{tierColor}Nível 1: +50% de recursos, &b{cost} {currency}", + "&7Nível 2: +100% de recursos, &b8 Diamantes", + "&7Nível 3: Gerar esmeraldas, &b12 Diamantes", + "&7Nível 4: +200% de recursos, &b16 Diamantes", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-2"), "{color}Forja de Ouro"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-2"), + Arrays.asList("&7Melhore a geração de recursos", "&7na sua base.", "", "&aNível 1: +50% de recursos, &b{cost} {currency}", + "{tierColor}Nível 2: +100% de recursos, &b8 Diamantes", + "&7Nível 3: Gerar esmeraldas, &b12 Diamantes", + "&7Nível 4: +200% de recursos, &b16 Diamantes", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-3"), "{color}Forja de Esmeralda"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-3"), + Arrays.asList("&7Melhore a geração de recursos", "&7na sua base.", "", "&aNível 1: +50% de recursos, &b{cost} {currency}", + "&aNível 2: +100% de recursos, &b8 Diamantes", + "{tierColor}Nível 3: Gerar esmeraldas, &b12 Diamantes", + "&7Nível 4: +200% de recursos, &b16 Diamantes", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-4"), "{color}Forja Melhorada"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-4"), + Arrays.asList("&7Melhore a geração de recursos", "&7na sua base.", "", "&aNível 1: +50% de recursos, &b{cost} {currency}", + "&aNível 2: +100% de recursos, &b8 Diamantes", + "&aNível 3: Gerar esmeraldas, &b12 Diamantes", + "{tierColor}Nível 4: +200% de recursos, &b16 Diamantes", "")); + yml.addDefault(Messages.UPGRADES_CATEGORY_ITEM_NAME_PATH + "traps", "&eCompre uma armadilha"); + yml.addDefault(Messages.UPGRADES_CATEGORY_ITEM_LORE_PATH + "traps", Arrays.asList("&7As armadilhas compradas serão", "&7enfileiradas abaixo.", "", "&eClique para navegar!")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "swords").replace("{tier}", "tier-1"), "{color}Espadas Afiadas"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "swords").replace("{tier}", "tier-1"), + Arrays.asList("&7Todas as espadas do seu time irão ter o", "&7encantamento Afiação I permanentemente.", "", "&7Preço: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-1"), "{color}Armadura Reforçada I"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-1"), + Arrays.asList("&7Sua equipe ganha permanentemente", "&7proteção em toda a armadura!", "", "{tierColor}Nível 1: Proteção I, &b{cost} {currency}", + "&7Nível 2: Proteção II, &b10 Diamantes", + "&7Nível 3: Proteção III, &b20 Diamantes", + "&7Nível 4: Proteção IV, &b30 Diamantes", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-2"), "{color}Armadura Reforçada II"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-2"), + Arrays.asList("&7Sua equipe ganha permanentemente", "&7proteção em toda a armadura!", "", "&aNível 1: Proteção I, &b5 Diamantes", + "{tierColor}Nível 2: Proteção II, &b{cost} {currency}", + "&7Nível 3: Proteção III, &b20 Diamantes", + "&7Nível 4: Proteção IV, &b30 Diamantes", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-3"), "{color}Armadura Reforçada III"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-3"), + Arrays.asList("&7Sua equipe ganha permanentemente", "&7proteção em toda a armadura!", "", "&aNível 1: Proteção I, &b5 Diamantes", + "&aNível 2: Proteção II, &b10 Diamantes", + "{tierColor}Nível 3: Proteção III, &b{cost} {currency}", + "&7Nível 4: Proteção IV, &b30 Diamantes", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "armor").replace("{tier}", "tier-4"), "{color}Armadura Reforçada IV"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "armor").replace("{tier}", "tier-4"), + Arrays.asList("&7Sua equipe ganha permanentemente", "&7proteção em toda a armadura!", "", "&aNível 1: Proteção I, &b5 Diamantes", + "&aNível 2: Proteção II, &b10 Diamantes", + "&aNível 3: Proteção III, &b20 Diamantes", + "{tierColor}Nível 4: Proteção IV, &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "miner").replace("{tier}", "tier-1"), "{color}Minerador Maníaco I"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "miner").replace("{tier}", "tier-1"), + Arrays.asList("&7Todos os jogadores do seu time irão", "&7ganhar permanentemente Pressa.", "", "{tierColor}Nível 1: Pressa I, &b{cost} {currency}", + "&7Nível 2: Pressa II, &b6 Diamantes", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "miner").replace("{tier}", "tier-2"), "{color}Minerador Maníaco II"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "miner").replace("{tier}", "tier-2"), + Arrays.asList("&7Todos os jogadores do seu time irão", "&7ganhar permanentemente Pressa.", "", "&aNível 1: Pressa I, &b4 Diamantes", + "{tierColor}Nível 2: Pressa II, &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "heal-pool").replace("{tier}", "tier-1"), "{color}Regeneração na Ilha"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "heal-pool").replace("{tier}", "tier-1"), + Arrays.asList("&7Cria um campo de regeneração", "&7em torno de sua base!", "", "&7Preço: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "dragon").replace("{tier}", "tier-1"), "{color}Buffar Dragões"); + yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "dragon").replace("{tier}", "tier-1"), + Arrays.asList("&7Sua equipe terá 2 dragões", "&7em vez de 1 durante o deathmatch!", "", "&7Preço: &b{cost} {currency}", "")); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_NAME_PATH + "glass", "&8⬆&7Adquirível"); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_LORE_PATH + "glass", Collections.singletonList("&8⬇&7Fila de armadilhas")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "first", "{color}Armadilha #1: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "first", Arrays.asList("&7O primeiro inimigo a andar", "&7em sua base irá acionar", "&7esta armadilha!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "first", + Arrays.asList("", "&7A compra de uma armadilha", "&7fica nesta fila. Seu custo", "&7será com base no número", "&7de armadilhas enfileiradas.", "", "&7Próxima armadilha: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "second", "{color}Armadilha #2: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "second", Arrays.asList("&7O segundo inimigo a andar", "&7em sua base irá acionar", "&7esta armadilha!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "second", + Arrays.asList("", "&7A compra de uma armadilha", "&7fica nesta fila. Seu custo", "&7será com base no número", "&7de armadilhas enfileiradas.", "", "&7Próxima armadilha: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_NAME_PATH + "third", "{color}Armadilha #3: {name}"); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE1_PATH + "third", Arrays.asList("&7O terceiro inimigo a andar", "&7em sua base irá acionar", "&7esta armadilha!")); + yml.addDefault(Messages.UPGRADES_TRAP_SLOT_ITEM_LORE2_PATH + "third", + Arrays.asList("", "&7A compra de uma armadilha", "&7fica nesta fila. Seu custo", "&7será com base no número", "&7de armadilhas enfileiradas.", "", "&7Próxima armadilha: &b{cost} {currency}")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "1", "{color}É uma armadilha!"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "1", Arrays.asList("&7Isso irá causar cegueira e lentidão", "&7durante 5 segundos nos invasores.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "2", "{color}Armadilha Contra-ofensiva"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "2", Arrays.asList("&7Concede Velocidade I por 15 segundos a", "&7jogadores aliados próximos à sua base.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "3", "{color}Alarme"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "3", Arrays.asList("&7Irá revelar jogadores invisíveis,", "&7bem como seu nome e time.", "")); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_NAME_PATH + "4", "{color}Cansaço"); + yml.addDefault(Messages.UPGRADES_BASE_TRAP_ITEM_LORE_PATH + "4", Arrays.asList("&7Os inimigos irão receber fadiga I ao entrar", "&7na sua base com duração de 10 segundos.", "")); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_NAME_PATH + "back", "&aVoltar"); + yml.addDefault(Messages.UPGRADES_SEPARATOR_ITEM_LORE_PATH + "back", Collections.singletonList("&7To Upgrades & Traps")); + yml.addDefault(Messages.UPGRADES_CATEGORY_GUI_NAME_PATH + "traps", "&8Enfileirar uma armadilha"); + yml.addDefault(Messages.UPGRADES_TRAP_QUEUE_LIMIT, "&cFila de armadilhas cheia!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_MSG, "&c&lA armadilha {trap} foi acionada!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_TITLE, "&cARMADILHA ACIONADA!"); + yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_SUBTITLE, "&fSua {trap} foi acionada!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_MSG + "3", "&c&lArmadilha de alarme acionada por &7&l{player} &c&ldo time {color}&l{team}&c&l!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_TITLE + "3", "&c&lALARME!!!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_SUBTITLE + "3", "&fAlarme acionado pelo time {color}{team}&f!"); + save(); + setPrefix(m(Messages.PREFIX)); + } +} From c3326b68c173646331f3515ad1806701b649132e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Dasc=C4=83lu?= Date: Fri, 11 Mar 2022 22:23:59 +0100 Subject: [PATCH 26/43] Create deploy --- .github/workflows/deploy | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/deploy diff --git a/.github/workflows/deploy b/.github/workflows/deploy new file mode 100644 index 000000000..842159cf7 --- /dev/null +++ b/.github/workflows/deploy @@ -0,0 +1,47 @@ +# This workflow will build a Java project with Maven +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Java CI with Maven + +on: + push: + branches: [master] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 17.0.2 + uses: actions/setup-java@v2 + with: + java-version: '17.0.2' + distribution: 'adopt' + - name: Build with Maven + run: mvn clean deploy --file pom.xml -s ci_settings.xml + env: + APIDOCS_PASS: ${{ secrets.JAVADOCS_USER }} + APIDOCS_USER: ${{ secrets.JAVADOCS_PASS }} +# - name: release +# uses: actions/create-release@v1 +# id: create_release +# with: +# draft: false +# prerelease: false +# release_name: Release ${{ github.ref }} +# tag_name: ${{ github.ref }} +# body_path: CHANGELOG.md +# env: +# GITHUB_TOKEN: ${{ github.token }} +# - name: upload plugin jar artifact +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ github.token }} +# with: +# upload_url: ${{ steps.create_release.outputs.upload_url }} +# asset_path: ./bedwars-plugin/target/bedwars-plugin-*.jar +# asset_name: bedwars-plugin.jar +# asset_content_type: application/jar +# prerelease: false From 36be94de092533f9f6c6024ba19ce113c9e06fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Dasc=C4=83lu?= Date: Wed, 23 Mar 2022 22:28:51 +0100 Subject: [PATCH 27/43] Deploy to maven and javadocs repo and polymart (#447) implement CD --- .github/workflows/deploy | 47 ----------------------- .github/workflows/deploy.yml | 45 ++++++++++++++++++++++ .github/workflows/{maven.yml => test.yml} | 11 +++++- .gitlab-ci.yml | 6 +-- bedwars-api/pom.xml | 8 +++- bedwars-plugin/pom.xml | 2 +- ci_settings.xml | 5 ++- pom.xml | 2 +- resetadapter_slime/pom.xml | 2 +- versionsupport_1_10_R1/pom.xml | 2 +- versionsupport_1_11_R1/pom.xml | 2 +- versionsupport_1_12_R1/pom.xml | 2 +- versionsupport_1_13_R2/pom.xml | 2 +- versionsupport_1_14_R1/pom.xml | 2 +- versionsupport_1_15_R1/pom.xml | 2 +- versionsupport_1_16_R1/pom.xml | 2 +- versionsupport_1_16_R2/pom.xml | 2 +- versionsupport_1_8_R3/pom.xml | 2 +- versionsupport_1_9_R2/pom.xml | 2 +- versionsupport_common/pom.xml | 2 +- versionsupport_v1_16_R3/pom.xml | 2 +- versionsupport_v1_17_R1/pom.xml | 2 +- versionsupport_v1_18_R1/pom.xml | 2 +- 23 files changed, 84 insertions(+), 72 deletions(-) delete mode 100644 .github/workflows/deploy create mode 100644 .github/workflows/deploy.yml rename .github/workflows/{maven.yml => test.yml} (91%) diff --git a/.github/workflows/deploy b/.github/workflows/deploy deleted file mode 100644 index 842159cf7..000000000 --- a/.github/workflows/deploy +++ /dev/null @@ -1,47 +0,0 @@ -# This workflow will build a Java project with Maven -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven - -name: Java CI with Maven - -on: - push: - branches: [master] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17.0.2 - uses: actions/setup-java@v2 - with: - java-version: '17.0.2' - distribution: 'adopt' - - name: Build with Maven - run: mvn clean deploy --file pom.xml -s ci_settings.xml - env: - APIDOCS_PASS: ${{ secrets.JAVADOCS_USER }} - APIDOCS_USER: ${{ secrets.JAVADOCS_PASS }} -# - name: release -# uses: actions/create-release@v1 -# id: create_release -# with: -# draft: false -# prerelease: false -# release_name: Release ${{ github.ref }} -# tag_name: ${{ github.ref }} -# body_path: CHANGELOG.md -# env: -# GITHUB_TOKEN: ${{ github.token }} -# - name: upload plugin jar artifact -# uses: actions/upload-release-asset@v1 -# env: -# GITHUB_TOKEN: ${{ github.token }} -# with: -# upload_url: ${{ steps.create_release.outputs.upload_url }} -# asset_path: ./bedwars-plugin/target/bedwars-plugin-*.jar -# asset_name: bedwars-plugin.jar -# asset_content_type: application/jar -# prerelease: false diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..e6caf36d9 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,45 @@ +name: Deploy with Maven + +on: + push: + branches: [production] + +jobs: + build: + runs-on: ubuntu-latest + environment: + name: production + url: https://repo.andrei1058.com + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 17.0.2 + uses: actions/setup-java@v2 + with: + java-version: '17.0.2' + distribution: 'adopt' + - name: Deploy with Maven + env: + MVN_REPO_USER: ${{ secrets.MVN_REPO_USER }} + MVN_REPO_PASS: ${{ secrets.MVN_REPO_PASS }} + ANDEV_API_TOKEN: ${{ secrets.ANDEV_API_TOKEN }} + J_DOCS_USER: ${{ secrets.J_DOCS_USER }} + J_DOCS_PASS: ${{ secrets.J_DOCS_PASS }} + POLY_API_KEY: ${{ secrets.POLY_API_KEY }} + run: | + sudo apt install jq -y + curl -X PUT https://api.andrei1058.dev/v1/resources/1/versioning/commit -H "Accept: application/json" -H "Authorization: Bearer ${{ secrets.ANDEV_API_TOKEN }}" -H "Content-Type: application/json" --data '{"confirmation": true}' >> version.json + export UPDATE_VERSION=`jq '.version' version.json | tr -d '"'` + mvn versions:set -DnewVersion=$UPDATE_VERSION + mvn versions:update-child-modules + mvn clean deploy -s ci_settings.xml + mvn javadoc:javadoc + sudo apt install -y -qq lftp + lftp -c "set ftp:ssl-allow no; open -u $J_DOCS_USER,$J_DOCS_PASS javadocs.andrei1058.dev; mirror -Rev bedwars-api/target/site/apidocs ./BedWars1058 --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/" + curl -F "file=@bedwars-plugin/target/bedwars-plugin-$UPDATE_VERSION.jar" -F api_key=$POLY_API_KEY -F resource_id="1152" -F version="$UPDATE_VERSION" -F title="v$UPDATE_VERSION" -F message="For a detailed update log please visit https://github.com/andrei1058/BedWars1058/releases" "https://api.polymart.org/v1/postUpdate" + echo $UPDATE_VERSION >> $GITHUB_ENV + - name: Create Tag + uses: softprops/action-gh-release@v1 + with: + generate_release_notes: true + name: ${{env.UPDATE_VERSION}} + tag_name: ${{env.UPDATE_VERSION}} \ No newline at end of file diff --git a/.github/workflows/maven.yml b/.github/workflows/test.yml similarity index 91% rename from .github/workflows/maven.yml rename to .github/workflows/test.yml index bd9632e0c..a1b79e15f 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/test.yml @@ -1,9 +1,16 @@ # This workflow will build a Java project with Maven # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven -name: Java CI with Maven +name: Test with Maven + +on: + push: + branches-ignore: + - production + pull_request: + branches-ignore: + - production -on: [push, pull_request] jobs: build: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2bf8942dd..7edfdd97d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,7 +11,7 @@ maven-dev: - 'development' - 'milestone-*' script: - - 'mvn versions:set -DnewVersion=21.12.1-SNAPSHOT' + - 'mvn versions:set -DnewVersion=22.3-SNAPSHOT' - 'mvn versions:update-child-modules' - 'mvn -DgitVer=git-$CI_COMMIT_SHORT_SHA- clean deploy -s ci_settings.xml' artifacts: @@ -31,7 +31,7 @@ maven-job2: - 'master' - 'milestone-*' script: - - 'mvn versions:set -DnewVersion=21.12.1' + - 'mvn versions:set -DnewVersion=22.3' - 'mvn versions:update-child-modules' - 'mvn -DgitVer=git-$CI_COMMIT_SHORT_SHA- clean install -s ci_settings.xml' artifacts: @@ -45,7 +45,7 @@ maven-rel: only: - 'master' script: - - 'mvn versions:set -DnewVersion=21.12.1' + - 'mvn versions:set -DnewVersion=22.3' - 'mvn versions:update-child-modules' - 'mvn -DgitVer='''' clean deploy -s ci_settings.xml' artifacts: diff --git a/bedwars-api/pom.xml b/bedwars-api/pom.xml index 0a916a4ec..7a7646092 100644 --- a/bedwars-api/pom.xml +++ b/bedwars-api/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 bedwars-api @@ -45,6 +45,12 @@ false + + maven-javadoc-plugin + + false + + \ No newline at end of file diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index 0df0f4e6c..5b3fd11c9 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 bedwars-plugin diff --git a/ci_settings.xml b/ci_settings.xml index 2d5ae189c..9485f883c 100644 --- a/ci_settings.xml +++ b/ci_settings.xml @@ -13,8 +13,8 @@ ftp-repo - ${env.FTP_USR} - ${env.FTP_PASS} + ${env.MVN_REPO_USER} + ${env.MVN_REPO_PASS} @@ -26,4 +26,5 @@ + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 823910372..55ce40ea6 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.andrei1058.bedwars BedWars1058 pom - 22.2 + 22.3-SNAPSHOT UTF-8 diff --git a/resetadapter_slime/pom.xml b/resetadapter_slime/pom.xml index 486b68bdf..f528a8ba9 100644 --- a/resetadapter_slime/pom.xml +++ b/resetadapter_slime/pom.xml @@ -7,7 +7,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT resetadapter-slime diff --git a/versionsupport_1_10_R1/pom.xml b/versionsupport_1_10_R1/pom.xml index b89e0317c..88b298c1d 100644 --- a/versionsupport_1_10_R1/pom.xml +++ b/versionsupport_1_10_R1/pom.xml @@ -7,7 +7,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT versionsupport_1_10_R1 diff --git a/versionsupport_1_11_R1/pom.xml b/versionsupport_1_11_R1/pom.xml index 203a68616..41fbb516a 100644 --- a/versionsupport_1_11_R1/pom.xml +++ b/versionsupport_1_11_R1/pom.xml @@ -11,7 +11,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT diff --git a/versionsupport_1_12_R1/pom.xml b/versionsupport_1_12_R1/pom.xml index ad8cc0411..2c9f2201d 100644 --- a/versionsupport_1_12_R1/pom.xml +++ b/versionsupport_1_12_R1/pom.xml @@ -10,7 +10,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT diff --git a/versionsupport_1_13_R2/pom.xml b/versionsupport_1_13_R2/pom.xml index 3ed71bc42..a26eb0d9a 100644 --- a/versionsupport_1_13_R2/pom.xml +++ b/versionsupport_1_13_R2/pom.xml @@ -10,7 +10,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT diff --git a/versionsupport_1_14_R1/pom.xml b/versionsupport_1_14_R1/pom.xml index bfeed414a..5cf9cee00 100644 --- a/versionsupport_1_14_R1/pom.xml +++ b/versionsupport_1_14_R1/pom.xml @@ -10,7 +10,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT diff --git a/versionsupport_1_15_R1/pom.xml b/versionsupport_1_15_R1/pom.xml index 6ade10bb3..72cb6963b 100644 --- a/versionsupport_1_15_R1/pom.xml +++ b/versionsupport_1_15_R1/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 diff --git a/versionsupport_1_16_R1/pom.xml b/versionsupport_1_16_R1/pom.xml index 86764c246..ec3379dce 100644 --- a/versionsupport_1_16_R1/pom.xml +++ b/versionsupport_1_16_R1/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 diff --git a/versionsupport_1_16_R2/pom.xml b/versionsupport_1_16_R2/pom.xml index 21cac3b0f..83c52e500 100644 --- a/versionsupport_1_16_R2/pom.xml +++ b/versionsupport_1_16_R2/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 diff --git a/versionsupport_1_8_R3/pom.xml b/versionsupport_1_8_R3/pom.xml index ef412eb86..14dced214 100644 --- a/versionsupport_1_8_R3/pom.xml +++ b/versionsupport_1_8_R3/pom.xml @@ -7,7 +7,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT versionsupport_1_8_R3 diff --git a/versionsupport_1_9_R2/pom.xml b/versionsupport_1_9_R2/pom.xml index c1d89d794..e5e28626e 100644 --- a/versionsupport_1_9_R2/pom.xml +++ b/versionsupport_1_9_R2/pom.xml @@ -7,7 +7,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT versionsupport_1_9_R2 diff --git a/versionsupport_common/pom.xml b/versionsupport_common/pom.xml index d36798771..6a512c66d 100644 --- a/versionsupport_common/pom.xml +++ b/versionsupport_common/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 diff --git a/versionsupport_v1_16_R3/pom.xml b/versionsupport_v1_16_R3/pom.xml index 729138e15..874063c66 100644 --- a/versionsupport_v1_16_R3/pom.xml +++ b/versionsupport_v1_16_R3/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 diff --git a/versionsupport_v1_17_R1/pom.xml b/versionsupport_v1_17_R1/pom.xml index 105eb3a27..bc1184a27 100644 --- a/versionsupport_v1_17_R1/pom.xml +++ b/versionsupport_v1_17_R1/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 diff --git a/versionsupport_v1_18_R1/pom.xml b/versionsupport_v1_18_R1/pom.xml index 7da6f0f4d..ed3124215 100644 --- a/versionsupport_v1_18_R1/pom.xml +++ b/versionsupport_v1_18_R1/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.2 + 22.3-SNAPSHOT 4.0.0 From 24b57bab7be0aff7758eadbdc66c16f5e57b6cac Mon Sep 17 00:00:00 2001 From: "J.T. McQuigg" Date: Wed, 23 Mar 2022 17:39:19 -0400 Subject: [PATCH 28/43] Some PAFBungeecord Fixes (#442) fix PAFBungeecord adapter --- SPECIAL_THANKS.md | 3 ++- bedwars-plugin/pom.xml | 20 ++++--------------- .../support/party/PAFBungeecordRedisApi.java | 9 +++++---- bedwars-plugin/src/main/resources/plugin.yml | 2 +- 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/SPECIAL_THANKS.md b/SPECIAL_THANKS.md index 7f56b9769..40d229607 100644 --- a/SPECIAL_THANKS.md +++ b/SPECIAL_THANKS.md @@ -8,4 +8,5 @@ Casual order. If I forgot to add you on this list please contact me. - 𝐌𝐚𝐫𝐜𝐞𝐥𝐞𝐤𝐭𝐫𝐨 - Barnaby - Ryan DeTree -- Dragoș (gamster.org) \ No newline at end of file +- Dragoș (gamster.org) +- J.T. McQuigg (JT122406) diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index 5b3fd11c9..867112124 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -72,26 +72,14 @@ de.simonsator Party-and-Friends-MySQL-Edition-Spigot-API - 1.5.1 + 1.5.3 provided - - - be.maximvdw - MVdWPlaceholderAPI - - de.simonsator Spigot-Party-API-For-RedisBungee - 1.0.2-SNAPSHOT + 1.0.3-SNAPSHOT provided - - - be.maximvdw - MVdWPlaceholderAPI - - org.bstats @@ -108,7 +96,7 @@ com.alessiodp.parties parties-api - 3.1.14 + 3.2.2 provided @@ -266,7 +254,7 @@ org.slf4j slf4j-simple - 1.7.32 + 1.7.36 true diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAFBungeecordRedisApi.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAFBungeecordRedisApi.java index ffeb932e7..3eb580aae 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAFBungeecordRedisApi.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/support/party/PAFBungeecordRedisApi.java @@ -13,16 +13,17 @@ public class PAFBungeecordRedisApi implements Party { //Party and Friends Extended for BungeeCord Support by JT122406 - @Override - public boolean hasParty(Player p) { - return getPAFParty(p) == null; - } private PlayerParty getPAFParty(Player p) { PAFPlayer pafPlayer = PAFPlayerManager.getInstance().getPlayer(p.getUniqueId()); return PartyManager.getInstance().getParty(pafPlayer); } + @Override + public boolean hasParty(Player p) { + return getPAFParty(p) != null; + } + @Override public int partySize(Player p) { return getMembers(p).size(); diff --git a/bedwars-plugin/src/main/resources/plugin.yml b/bedwars-plugin/src/main/resources/plugin.yml index 7628330f6..a202a7950 100644 --- a/bedwars-plugin/src/main/resources/plugin.yml +++ b/bedwars-plugin/src/main/resources/plugin.yml @@ -4,5 +4,5 @@ version: ${project.version} author: andrei10581 description: BedWars minigame by andrei1058 main: com.andrei1058.bedwars.BedWars -softdepend: [Vault,PlaceholderAPI,Citizens,Parties,SlimeWorldManager,VipFeatures,Enhanced-SlimeWorldManager,PartyAndFriends] +softdepend: [Vault,PlaceholderAPI,Citizens,Parties,SlimeWorldManager,VipFeatures,Enhanced-SlimeWorldManager,PartyAndFriends,Spigot-Party-API-PAF] load: STARTUP From da84ae9bdcadb244ee625db6eed398c2412a2fb2 Mon Sep 17 00:00:00 2001 From: JektDV Date: Thu, 24 Mar 2022 04:43:58 +0700 Subject: [PATCH 29/43] Register Indonesia Languange on start up (#452) --- bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java | 1 + 1 file changed, 1 insertion(+) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 991a9db35..6addd2587 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -184,6 +184,7 @@ public void onLoad() { new Bangla(); new Persian(); new Hindi(); + new Indonesia(); new Portuguese(); config = new MainConfig(this, "config"); From 0b1029396ad57abca27d77f842095b2fb1f3a065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Dasc=C4=83lu?= Date: Wed, 23 Mar 2022 23:11:53 +0100 Subject: [PATCH 30/43] fix env var passing --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e6caf36d9..27d0eaaeb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -36,7 +36,7 @@ jobs: sudo apt install -y -qq lftp lftp -c "set ftp:ssl-allow no; open -u $J_DOCS_USER,$J_DOCS_PASS javadocs.andrei1058.dev; mirror -Rev bedwars-api/target/site/apidocs ./BedWars1058 --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/" curl -F "file=@bedwars-plugin/target/bedwars-plugin-$UPDATE_VERSION.jar" -F api_key=$POLY_API_KEY -F resource_id="1152" -F version="$UPDATE_VERSION" -F title="v$UPDATE_VERSION" -F message="For a detailed update log please visit https://github.com/andrei1058/BedWars1058/releases" "https://api.polymart.org/v1/postUpdate" - echo $UPDATE_VERSION >> $GITHUB_ENV + echo "$UPDATE_VERSION" >> $GITHUB_ENV - name: Create Tag uses: softprops/action-gh-release@v1 with: From fef0e14309c3d24a98a6a4ee305b16b3c7f40abc Mon Sep 17 00:00:00 2001 From: Xxyuri2005xX <84080587+Xxyuri2005xX@users.noreply.github.com> Date: Wed, 23 Mar 2022 23:17:08 +0100 Subject: [PATCH 31/43] Enhance levelling system (#448) * Updated Levelling System * Fixed if with Java convention * Change BED_DESTROYED to BED_DESTROY --- .../api/events/player/PlayerXpGainEvent.java | 2 +- .../bedwars/api/language/Messages.java | 3 ++ .../bedwars/configuration/LevelsConfig.java | 3 ++ .../andrei1058/bedwars/language/Bangla.java | 3 ++ .../andrei1058/bedwars/language/English.java | 3 ++ .../andrei1058/bedwars/language/Hindi.java | 3 ++ .../bedwars/language/Indonesia.java | 3 ++ .../andrei1058/bedwars/language/Italian.java | 53 ++++++++++--------- .../andrei1058/bedwars/language/Persian.java | 3 ++ .../andrei1058/bedwars/language/Polish.java | 3 ++ .../bedwars/language/Portuguese.java | 3 ++ .../andrei1058/bedwars/language/Romanian.java | 3 ++ .../andrei1058/bedwars/language/Russian.java | 3 ++ .../andrei1058/bedwars/language/Spanish.java | 3 ++ .../andrei1058/bedwars/language/Turkish.java | 3 ++ .../levels/internal/LevelListeners.java | 37 +++++++++++++ 16 files changed, 105 insertions(+), 26 deletions(-) diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/player/PlayerXpGainEvent.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/player/PlayerXpGainEvent.java index 20e31dc6d..bcd540ef3 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/player/PlayerXpGainEvent.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/player/PlayerXpGainEvent.java @@ -72,7 +72,7 @@ public XpSource getXpSource() { * Lets you know why did the player received new xp. */ public enum XpSource { - PER_MINUTE, PER_TEAMMATE, GAME_WIN, OTHER + PER_MINUTE, PER_TEAMMATE, GAME_WIN, BED_DESTROYED, FINAL_KILL, REGULAR_KILL, OTHER } @Override diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/language/Messages.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/language/Messages.java index 6c9dd98e7..a9ce59d04 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/language/Messages.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/language/Messages.java @@ -275,6 +275,9 @@ public class Messages { public static String XP_REWARD_WIN = "xp-reward-game-win"; public static String XP_REWARD_PER_TEAMMATE = "xp-reward-per-teammate"; public static String XP_REWARD_PER_MINUTE = "xp-reward-per-minute"; + public static String XP_REWARD_BED_DESTROY = "xp-reward-bed-destroyed"; + public static String XP_REWARD_REGULAR_KILL = "xp-reward-regular-kill"; + public static String XP_REWARD_FINAL_KILL = "xp-reward-final-kill"; public static String MONEY_REWARD_WIN = "money-reward-game-win"; public static String MONEY_REWARD_PER_MINUTE = "money-reward-per-teammate"; diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/LevelsConfig.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/LevelsConfig.java index 0a415ef5f..ecbfa7569 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/LevelsConfig.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/configuration/LevelsConfig.java @@ -61,6 +61,9 @@ public static void init() { levels.getYml().addDefault("xp-rewards.per-minute", 10); levels.getYml().addDefault("xp-rewards.per-teammate", 5); levels.getYml().addDefault("xp-rewards.game-win", 100); + levels.getYml().addDefault("xp-rewards.bed-destroyed", 15); + levels.getYml().addDefault("xp-rewards.regular-kill", 10); + levels.getYml().addDefault("xp-rewards.final-kill", 15); levels.getYml().addDefault("progress-bar.symbol", "■"); levels.getYml().addDefault("progress-bar.unlocked-color", "&b"); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Bangla.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Bangla.java index 45b952793..ce047243a 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Bangla.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Bangla.java @@ -281,6 +281,9 @@ public Bangla() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars Experience pelen (Play Time)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BedWars Experience pelen (Game Win)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars Experience pelen (Team Support)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} BedWars Experience pelen (Bed Destroyed)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} BedWars Experience pelen (Regular Kill)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} BedWars Experience pelen (Final Kill)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Coins pelen (Play Time)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Coins pelen (Game Win)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java index 941ed426f..df45fe0d7 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java @@ -280,6 +280,9 @@ public English() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars Experience Received (Play Time)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BedWars Experience Received (Game Win)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars Experience Received (Team Support)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} BedWars Experience Received (Bed Destroyed)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} BedWars Experience Received (Regular Kill)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} BedWars Experience Received (Final Kill)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Coins (Play Time)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Coins (Game Win)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Hindi.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Hindi.java index 67d283e64..1427200a6 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Hindi.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Hindi.java @@ -280,6 +280,9 @@ public Hindi() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars praapt kiye (Play Time)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BedWars praapt kiye (Game Win)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars Experience praapt kiye (Team Support)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} BedWars Experience praapt kiye (Bed Destroyed)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} BedWars Experience praapt kiye (Regular Kill)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} BedWars Experience praapt kiye (Final Kill)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Coins mila (Play Time)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Coins mila (Game Win)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Indonesia.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Indonesia.java index f5ec53c84..ae508bdb5 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Indonesia.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Indonesia.java @@ -280,6 +280,9 @@ public Indonesia() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} Experience Bed Wars Diterima (Waktu Bermain)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} Experience Bed Wars Diterima (Memenangkan Permainan)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} Experience Bed Wars Diterima (Dukungan Tim)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} Experience Bed Wars Diterima (Menghancurkan Kasur)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} Experience Bed Wars Diterima (Pembunuhan Biasa)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} Experience Bed Wars Diterima (Pembunuhan Terakhir)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Koin (Waktu Bermain)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Koin (Memenangkan Permainan)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Italian.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Italian.java index a7cca4874..89f498f92 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Italian.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Italian.java @@ -71,7 +71,7 @@ public Italian() { yml.addDefault(Messages.COMMAND_LANG_USAGE_DENIED, "{prefix}&cNon puoi cambiare la lingua durante il gioco."); yml.addDefault(Messages.COMMAND_TP_PLAYER_NOT_FOUND, "{prefix}&cPlayer not found!"); yml.addDefault(Messages.COMMAND_TP_NOT_IN_ARENA, "{prefix}&cThis player is not in a bedwars arena!"); - yml.addDefault(Messages.COMMAND_TP_NOT_STARTED, "{prefix}&cThe arena where the player is didn't start yet!"); + yml.addDefault(Messages.COMMAND_TP_NOT_STARTED, "{prefix}&cL'arena dove si trova il giocatore non è ancora inziata!"); yml.addDefault(Messages.COMMAND_TP_USAGE, "{prefix}&cUsage: /bw tp "); yml.addDefault(Messages.COMMAND_JOIN_DENIED_PARTY_TOO_BIG, "{prefix}&cIl tuo party è troppo grande per entrare in questa arena come una squadra :("); yml.addDefault(Messages.COMMAND_JOIN_DENIED_NOT_PARTY_LEADER, "{prefix}&cSolo il creatore del party può scegliere l'arena."); @@ -162,7 +162,7 @@ public Italian() { yml.addDefault(Messages.FORMATTING_CHAT_LOBBY, "{level}{vPrefix}&7{player}{vSuffix}: {message}"); yml.addDefault(Messages.FORMATTING_CHAT_WAITING, "{level}{vPrefix}&7{player}{vSuffix}: {message}"); yml.addDefault(Messages.FORMATTING_CHAT_SHOUT, "{level}{vPrefix}&6[SHOUT] {team} &7{player}&f{vSuffix}: {message}"); - yml.addDefault(Messages.FORMATTING_CHAT_TEAM, "{level}{vPrefix}&f{team}&7 {player}{vSuffix} {message}"); + yml.addDefault(Messages.FORMATTING_CHAT_TEAM, "{level}{vPrefix}&f{team}&7 {player}{vSuffix}: {message}"); yml.addDefault(Messages.FORMATTING_CHAT_SPECTATOR, "{level}{vPrefix}&7[SPECTATOR] {player}{vSuffix}: {message}"); yml.addDefault(Messages.FORMATTING_SCOREBOARD_HEALTH, Arrays.asList("&c❤", "&aVita")); yml.addDefault(Messages.FORMATTING_SPECTATOR_TEAM, "SPECT"); @@ -278,8 +278,8 @@ public Italian() { /* Lobby Command Items */ yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "stats"), "&eStatistiche"); yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "stats"), Arrays.asList("&fClick-destro per vedere", "le tue statistiche!")); - yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "arena-selector"), "&eArena Selector"); - yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "arena-selector"), Collections.singletonList("&fClick-destro to choose an arena!")); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "arena-selector"), "&eSelettore Arena"); + yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "arena-selector"), Collections.singletonList("&fClick-destro Per selezionare un'arena!")); yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_NAME.replace("%path%", "leave"), "&eTorna nella Lobby"); yml.addDefault(Messages.GENERAL_CONFIGURATION_LOBBY_ITEMS_LORE.replace("%path%", "leave"), Collections.singletonList("&fClick-destro per lasciare BedWars!")); /* Pre Game Command Items */ @@ -324,22 +324,25 @@ public Italian() { yml.addDefault(Messages.SCOREBOARD_LOBBY, Arrays.asList("&6&lBedWars", "&fLivello: {level}", "", "&fProgresso: &a{currentXp}&7/&b{requiredXp}", "{progress}", "", "&7{player}", "", "&fSoldi: &a{money}" - , "", "&fVincite: &a{wins}", "&fUccisioni: &a{kills}", "", "&e{server_ip}")); + , "", "&fVittorie: &a{wins}", "&fUccisioni: &a{kills}", "", "&e{server_ip}")); yml.addDefault(Messages.TEAM_ELIMINATED_CHAT, "\n&f&lTEAM ELIMINATO > Il team {TeamColor}{TeamName} &cè stato eliminato\n"); - yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars Experience Received (Play Time)."); - yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BedWars Experience Received (Game Win)."); - yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars Experience Received (Team Support)."); + yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} Esperienza BedWars ricevuta (Tempo di Gioco)."); + yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} Esperienza BedWars ricevuta (Vittoria)."); + yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} Esperienza BedWars ricevuta (Supporto Team)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} Esperienza BedWars ricevuta (Distruzione letto)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} Esperienza BedWars ricevuta (Uccisione)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} Esperienza BedWars ricevuta (Uccisione Finale)."); - yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Coins (Play Time)."); - yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Coins (Game Win)."); - yml.addDefault(Messages.MONEY_REWARD_PER_TEAMMATE, "{prefix}&6+{money} Coins (Team Support)."); - yml.addDefault(Messages.MONEY_REWARD_BED_DESTROYED, "{prefix}&6+{money} Coins (Bed Destroyed)."); - yml.addDefault(Messages.MONEY_REWARD_FINAL_KILL, "{prefix}&6+{money} Coins (Final Kill)."); - yml.addDefault(Messages.MONEY_REWARD_REGULAR_KILL, "{prefix}&6+{money} Coins (Regular Kill)."); + yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Coins (Tempo di Gioco)."); + yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Coins (Vittoria)."); + yml.addDefault(Messages.MONEY_REWARD_PER_TEAMMATE, "{prefix}&6+{money} Coins (Supporto Team)."); + yml.addDefault(Messages.MONEY_REWARD_BED_DESTROYED, "{prefix}&6+{money} Coins (Distruzione letto)."); + yml.addDefault(Messages.MONEY_REWARD_FINAL_KILL, "{prefix}&6+{money} Coins (Uccisione Regolare)."); + yml.addDefault(Messages.MONEY_REWARD_REGULAR_KILL, "{prefix}&6+{money} Coins (Uccisione)."); //shop yml.addDefault(Messages.SHOP_INDEX_NAME, "&8Quick Buy"); - yml.addDefault(Messages.SHOP_QUICK_ADD_NAME, "&8Adding to Quick Buy..."); + yml.addDefault(Messages.SHOP_QUICK_ADD_NAME, "&8Aggiungendo al Quick Buy..."); yml.addDefault(Messages.SHOP_INSUFFICIENT_MONEY, "{prefix}&cNon hai abbastanza {currency}! Te ne occorre {amount} in più!"); yml.addDefault(Messages.SHOP_NEW_PURCHASE, "{prefix}&aHai comprato &6{item}"); yml.addDefault(Messages.SHOP_ALREADY_BOUGHT, "{prefix}&Hai già comprato questo!"); @@ -383,11 +386,11 @@ public Italian() { addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "&8Utensili", "&aUtensili", Collections.singletonList("&eClicca per sfogliare!")); addContentMessages(yml, "shears", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Cesoie Permanenti", Arrays.asList("&7Costo: {cost} {currency}", - "", "&7Utile per tagliare la lana.", "&7Rispawnerai sempre con questo utensile.", "", "{quick_buy}", "{buy_status}")); + "", "&7Utile per tagliare la lana.", "&7Respawnerai sempre con questo utensile.", "", "{quick_buy}", "{buy_status}")); addContentMessages(yml, "pickaxe", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Piccone {tier}", Arrays.asList("&7Costo: {cost} {currency}", "&7Tier: &e{tier}", - "", "&7Questo è un item upgradabile.", "&7Perderai un tier alla tua morte.", "", "&7Rispawnerai sempre con", "&7questo item avendo almeno", "&7il tier pià basso.", "", "{quick_buy}", "{buy_status}")); + "", "&7Questo è un item upgradabile.", "&7Perderai un tier alla tua morte.", "", "&7Respawnerai sempre con", "&7questo item avendo almeno", "&7il tier pià basso.", "", "{quick_buy}", "{buy_status}")); addContentMessages(yml, "axe", ConfigPath.SHOP_PATH_CATEGORY_TOOLS, "{color}Ascia {tier}", Arrays.asList("&7Costo: {cost} {currency}", "&7Tier: &e{tier}", - "", "&7Questo è un item upgradabile.", "&7Perderai un tier alla tua morte.", "", "&7Rispawnerai sempre con", "&7questo item avendo almeno", "&7il tier pià basso.", "", "{quick_buy}", "{buy_status}")); + "", "&7Questo è un item upgradabile.", "&7Perderai un tier alla tua morte.", "", "&7Respawnerai sempre con", "&7questo item avendo almeno", "&7il tier pià basso.", "", "{quick_buy}", "{buy_status}")); addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_RANGED, "&8Ranged", "&aArchi", Collections.singletonList("&eClicca per sfogliare!")); addContentMessages(yml, "arrow", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Frecce", Arrays.asList("&7Costo: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); @@ -395,7 +398,7 @@ public Italian() { addContentMessages(yml, "bow2", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Arco (Potenza I)", Arrays.asList("&7Costo: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); addContentMessages(yml, "bow3", ConfigPath.SHOP_PATH_CATEGORY_RANGED, "{color}Arco (Potenza I, Contraccolpo I)", Arrays.asList("&7Costo: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); - addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "&8Pozioni", "&aPotioni", Collections.singletonList("&eClicca per sfogliare!")); + addCategoryMessages(yml, ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "&8Pozioni", "&aPozioni", Collections.singletonList("&eClicca per sfogliare!")); addContentMessages(yml, "speed-potion", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Pozione Rapidità II (45 secondi)", Arrays.asList("&7Costo: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); addContentMessages(yml, "jump-potion", ConfigPath.SHOP_PATH_CATEGORY_POTIONS, "{color}Pozione Salto V (45 secondi)", Arrays.asList("&7Costo: {cost} {currency}", "", "{quick_buy}", "{buy_status}")); @@ -432,7 +435,7 @@ public Italian() { yml.addDefault("upgrades.Default.trap.tier1.name", "&eIt's a trap!"); yml.addDefault("upgrades.Default.trap.tier1.lore", Arrays.asList("&7Il prossimo nemico che entrerà", "&7nella tua base riceverà Blindness e", "&7Slowness!", "", "&7Costo:&b {cost} {currency}", "", "{loreFooter}")); yml.addDefault("upgrades.Default.miningFatigue.tier1.name", "&eMiner Fatigue Trap"); - yml.addDefault("upgrades.Default.miningFatigue.tier1.lore", Arrays.asList("&7Il prossimo nemico che entrerà", "&7nella tua base riceverà Mining Fatigue", "&7for 10 seconds!", "", "&7Costo:&b {cost} {currency}", "", "{loreFooter}")); + yml.addDefault("upgrades.Default.miningFatigue.tier1.lore", Arrays.asList("&7Il prossimo nemico che entrerà", "&7nella tua base riceverà Mining Fatigue", "&7per 10 secondi!", "", "&7Costo:&b {cost} {currency}", "", "{loreFooter}")); yml.addDefault("upgrades.Default.healPool.tier1.name", "&eRigenerazione"); yml.addDefault("upgrades.Default.healPool.tier1.lore", Arrays.asList("&7Crea un campo di rigenerazione", "&7intorno alla tua base!", "", "&7Costo:&b {cost} {currency}", "", "{loreFooter}")); yml.addDefault(Messages.UPGRADES_UPGRADE_BOUGHT_CHAT, "&a{player} ha comprato &6{upgradeName}"); @@ -445,10 +448,10 @@ public Italian() { yml.addDefault(Messages.FORMAT_UPGRADE_TIER_LOCKED, "&7"); yml.addDefault(Messages.FORMAT_UPGRADE_TIER_UNLOCKED, "&a"); yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_CLICK_TO_BUY, "{color}Click to purchase!"); - yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_INSUFFICIENT_MONEY, "{color}You don't have enough {currency}"); + yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_INSUFFICIENT_MONEY, "{color}Non hai abbastanza {currency}"); yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_LOCKED, "&cLOCKED"); yml.addDefault(Messages.UPGRADES_LORE_REPLACEMENT_UNLOCKED, "{color}UNLOCKED"); - yml.addDefault(Messages.UPGRADES_UPGRADE_BOUGHT_CHAT, "&a{player} purchased &6{upgradeName}"); + yml.addDefault(Messages.UPGRADES_UPGRADE_BOUGHT_CHAT, "&a{player} ha acquisistato &6{upgradeName}"); yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_NAME.replace("{name}", "forge").replace("{tier}", "tier-1"), "{color}Iron Forge"); yml.addDefault(Messages.UPGRADES_UPGRADE_TIER_ITEM_LORE.replace("{name}", "forge").replace("{tier}", "tier-1"), Arrays.asList("&7Upgrade resource spawning on", "&7your island.", "", "{tierColor}Tier 1: +50% Resources, &b{cost} {currency}", @@ -545,9 +548,9 @@ public Italian() { yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_MSG, "&c&l{trap} è stata attivata!"); yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_TITLE, "&cTRAPPOLA ATTIVATA!"); yml.addDefault(Messages.UPGRADES_TRAP_DEFAULT_SUBTITLE, "&ffLa tua trappola {trap} è stata attivata!"); - yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_MSG + "3", "&c&lAlarm trap set off by &7&l{player} &c&lfrom {color}&l{team} &c<eam!"); - yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_TITLE + "3", "&c&lALARM!!!"); - yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_SUBTITLE + "3", "&fAlarm trap set off by {color}{team} &fteam!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_MSG + "3", "&c&lAllarme attivata da &7&l{player} &c&ldel team {color}&l{team} &c&l!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_TITLE + "3", "&c&lALLARME!!!"); + yml.addDefault(Messages.UPGRADES_TRAP_CUSTOM_SUBTITLE + "3", "&fAllarme attivata dal team {color}{team}&f!"); save(); setPrefix(m(Messages.PREFIX)); } diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Persian.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Persian.java index adfe03c1a..f0c4e83d4 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Persian.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Persian.java @@ -281,6 +281,9 @@ public Persian() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} Tajrobe BedWars Daryaft Kardid (Zaman Play)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} Tajrobe BedWars Daryaft Kardid (Bord Bazi)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} Tajrobe BedWars Daryaft Kardid (Hemayat Az Team)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} Tajrobe BedWars Daryaft Kardid (Az Bein Raftan Bed)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} Tajrobe BedWars Daryaft Kardid (Kill e Addi)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} Tajrobe BedWars Daryaft Kardid (Kill e Payani)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Coin (Zaman Play)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Coin (Bord Bazi)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Polish.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Polish.java index 58573ce26..59aa2edcd 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Polish.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Polish.java @@ -306,6 +306,9 @@ public Polish() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} Otrzymano doswiedczenie BedWars (Czas grania)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} Otrzymano doswiedczenie BedWars (Wygrana gra)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} Otrzymano doswiedczenie BedWars (Team Support)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} Otrzymano doswiedczenie BedWars (Zniszczone lozko)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} Otrzymano doswiedczenie BedWars (Regularne zabojstwo)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} Otrzymano doswiedczenie BedWars (Finalne zabojstwo)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Monety (Czas grania)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Monety (Wygrana gra)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Portuguese.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Portuguese.java index 4f696af1b..8e3f74a8e 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Portuguese.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Portuguese.java @@ -279,6 +279,9 @@ public Portuguese() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars Experience Received (Tempo de jogo)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BedWars Experience Received (Vencer o jogo)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars Experience Received (Suporte da equipe)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} BedWars Experience Received (Bed Destroyed)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} BedWars Experience Received (Regular Kill)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} BedWars Experience Received (Final Kill)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Moedas (Tempo de jogo)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Moedas (Vencer o jogo)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Romanian.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Romanian.java index c21e06c71..96d3536aa 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Romanian.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Romanian.java @@ -326,6 +326,9 @@ public Romanian() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars Experience Received (Play Time)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BedWars Experience Received (Game Win)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars Experience Received (Team Support)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} BedWars Experience Received (Bed Destroyed)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} BedWars Experience Received (Regular Kill)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} BedWars Experience Received (Final Kill)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Coins (Play Time)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Coins (Game Win)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Russian.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Russian.java index c59d1310c..2e3938997 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Russian.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Russian.java @@ -203,6 +203,9 @@ public Russian() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars Experience получено (Игровое время)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BedWars Experience получено (Победа в игре)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars Experience получено (Поддержка команды)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} BedWars Experience получено (Разрушение кровати)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} BedWars Experience получено (Убийство)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} BedWars Experience получено (Финальное убийство)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Монет (Игровое время)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Монет (Победа в игре)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Spanish.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Spanish.java index 547a4ffcf..32076fe82 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Spanish.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Spanish.java @@ -334,6 +334,9 @@ public Spanish() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} Experiencia de BedWars recibida (Tiempo de juego)."); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} Experiencia de BedWars recibida (Ganar partida)."); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} Experiencia de BedWars recibida (Apoyo de equipo)."); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} Experiencia de BedWars recibida (Cama Destruida)."); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} Experiencia de BedWars recibida (Asesinato)."); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} Experiencia de BedWars recibida (Asesinato Final)."); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Monedas (Tiempo de Juego)."); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Monedas (Ganar Partida)."); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Turkish.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Turkish.java index 24f7bda00..b21cc1bea 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Turkish.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/Turkish.java @@ -281,6 +281,9 @@ public Turkish() { yml.addDefault(Messages.XP_REWARD_PER_MINUTE, "{prefix}&6+{xp} BedWars puanı kazanıldı (Oynama Süresi)"); yml.addDefault(Messages.XP_REWARD_WIN, "{prefix}&6+{xp} BBedWars puanı kazanıldı (Galibiyet)"); yml.addDefault(Messages.XP_REWARD_PER_TEAMMATE, "{prefix}&6+{xp} BedWars puanı kazanıldı (Takım Yardımı)"); + yml.addDefault(Messages.XP_REWARD_BED_DESTROY, "{prefix}&6+{xp} BedWars puanı kazanıldı (Yatak Kırma)"); + yml.addDefault(Messages.XP_REWARD_REGULAR_KILL, "{prefix}&6+{xp} BedWars puanı kazanıldı (Öldürme)"); + yml.addDefault(Messages.XP_REWARD_FINAL_KILL, "{prefix}&6+{xp} BedWars puanı kazanıldı (Final Kill)"); yml.addDefault(Messages.MONEY_REWARD_PER_MINUTE, "{prefix}&6+{money} Para (Oynama Süresi)"); yml.addDefault(Messages.MONEY_REWARD_WIN, "{prefix}&6+{money} Para (Galibiyet)"); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/levels/internal/LevelListeners.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/levels/internal/LevelListeners.java index 422ad6acc..53391b1e9 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/levels/internal/LevelListeners.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/levels/internal/LevelListeners.java @@ -23,6 +23,8 @@ import com.andrei1058.bedwars.BedWars; import com.andrei1058.bedwars.api.arena.team.ITeam; import com.andrei1058.bedwars.api.events.gameplay.GameEndEvent; +import com.andrei1058.bedwars.api.events.player.PlayerBedBreakEvent; +import com.andrei1058.bedwars.api.events.player.PlayerKillEvent; import com.andrei1058.bedwars.api.events.player.PlayerLeaveArenaEvent; import com.andrei1058.bedwars.api.events.player.PlayerXpGainEvent; import com.andrei1058.bedwars.api.language.Language; @@ -124,4 +126,39 @@ public void onArenaLeave(PlayerLeaveArenaEvent e) { if (pl != null) pl.updateDatabase(); }); } + + @EventHandler + public void onBreakBed(PlayerBedBreakEvent e) { + Player player = e.getPlayer (); + if (player == null) { + return; + } + int beddestroy = LevelsConfig.levels.getInt("xp-rewards.bed-destroyed"); + if (beddestroy > 0) { + PlayerLevel.getLevelByPlayer(player.getUniqueId()).addXp(beddestroy, PlayerXpGainEvent.XpSource.BED_DESTROYED); + player.sendMessage(Language.getMsg(player, Messages.XP_REWARD_BED_DESTROY).replace("{xp}", String.valueOf(beddestroy))); + } + } + + @EventHandler + public void onKill(PlayerKillEvent e) { + Player player = e.getKiller (); + Player victim = e.getVictim (); + if (player == null || victim.equals(player)) { + return; + } + int finalkill = LevelsConfig.levels.getInt("xp-rewards.final-kill"); + int regularkill = LevelsConfig.levels.getInt("xp-rewards.regular-kill"); + if (e.getCause ().isFinalKill ()) { + if (finalkill > 0) { + PlayerLevel.getLevelByPlayer(player.getUniqueId()).addXp(finalkill, PlayerXpGainEvent.XpSource.FINAL_KILL); + player.sendMessage(Language.getMsg(player, Messages.XP_REWARD_FINAL_KILL).replace("{xp}", String.valueOf(finalkill))); + } + } else { + if (regularkill > 0) { + PlayerLevel.getLevelByPlayer(player.getUniqueId()).addXp(regularkill, PlayerXpGainEvent.XpSource.REGULAR_KILL); + player.sendMessage(Language.getMsg(player, Messages.XP_REWARD_REGULAR_KILL).replace("{xp}", String.valueOf(regularkill))); + } + } + } } From 5c3a7eff3c3ff494d13c0e324c874cd3e989c650 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Dasc=C4=83lu?= Date: Wed, 23 Mar 2022 23:26:41 +0100 Subject: [PATCH 32/43] pliz --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 27d0eaaeb..c37d56096 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -36,7 +36,7 @@ jobs: sudo apt install -y -qq lftp lftp -c "set ftp:ssl-allow no; open -u $J_DOCS_USER,$J_DOCS_PASS javadocs.andrei1058.dev; mirror -Rev bedwars-api/target/site/apidocs ./BedWars1058 --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/" curl -F "file=@bedwars-plugin/target/bedwars-plugin-$UPDATE_VERSION.jar" -F api_key=$POLY_API_KEY -F resource_id="1152" -F version="$UPDATE_VERSION" -F title="v$UPDATE_VERSION" -F message="For a detailed update log please visit https://github.com/andrei1058/BedWars1058/releases" "https://api.polymart.org/v1/postUpdate" - echo "$UPDATE_VERSION" >> $GITHUB_ENV + echo "'$UPDATE_VERSION'" >> $GITHUB_ENV - name: Create Tag uses: softprops/action-gh-release@v1 with: From 47cbcb692e6374e0a18a30b62e07c6e66045fb6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Dasc=C4=83lu?= Date: Wed, 23 Mar 2022 23:46:13 +0100 Subject: [PATCH 33/43] oh gosh --- .github/workflows/deploy.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c37d56096..39b4ca79c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -27,7 +27,7 @@ jobs: POLY_API_KEY: ${{ secrets.POLY_API_KEY }} run: | sudo apt install jq -y - curl -X PUT https://api.andrei1058.dev/v1/resources/1/versioning/commit -H "Accept: application/json" -H "Authorization: Bearer ${{ secrets.ANDEV_API_TOKEN }}" -H "Content-Type: application/json" --data '{"confirmation": true}' >> version.json + curl -X GET https://api.andrei1058.dev/v1/resources/1/versioning/candidate -H "Accept: application/json" >> version.json export UPDATE_VERSION=`jq '.version' version.json | tr -d '"'` mvn versions:set -DnewVersion=$UPDATE_VERSION mvn versions:update-child-modules @@ -36,7 +36,9 @@ jobs: sudo apt install -y -qq lftp lftp -c "set ftp:ssl-allow no; open -u $J_DOCS_USER,$J_DOCS_PASS javadocs.andrei1058.dev; mirror -Rev bedwars-api/target/site/apidocs ./BedWars1058 --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/" curl -F "file=@bedwars-plugin/target/bedwars-plugin-$UPDATE_VERSION.jar" -F api_key=$POLY_API_KEY -F resource_id="1152" -F version="$UPDATE_VERSION" -F title="v$UPDATE_VERSION" -F message="For a detailed update log please visit https://github.com/andrei1058/BedWars1058/releases" "https://api.polymart.org/v1/postUpdate" - echo "'$UPDATE_VERSION'" >> $GITHUB_ENV + curl -X PUT https://api.andrei1058.dev/v1/resources/1/versioning/commit -H "Accept: application/json" -H "Authorization: Bearer ${{ secrets.ANDEV_API_TOKEN }}" -H "Content-Type: application/json" --data '{"confirmation": true}' >> version.json + echo "UPDATE_VERSION=$UPDATE_VERSION" >> $GITHUB_ENV + - name: Create Tag uses: softprops/action-gh-release@v1 with: From bc2081cb98f4556c2fca8d2c400360bcd9db9a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Dasc=C4=83lu?= Date: Sat, 26 Mar 2022 23:08:23 +0100 Subject: [PATCH 34/43] workflow update --- .github/workflows/compile_snapshot.yml | 35 +++++++++++++++++ .github/workflows/deploy_snapshot.yml | 34 +++++++++++++++++ .github/workflows/test.yml | 52 -------------------------- 3 files changed, 69 insertions(+), 52 deletions(-) create mode 100644 .github/workflows/compile_snapshot.yml create mode 100644 .github/workflows/deploy_snapshot.yml delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/compile_snapshot.yml b/.github/workflows/compile_snapshot.yml new file mode 100644 index 000000000..38d18c654 --- /dev/null +++ b/.github/workflows/compile_snapshot.yml @@ -0,0 +1,35 @@ +name: Compile snapshot with Maven + +on: + push: + branches-ignore: + - master + - development + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + environment: + name: development + url: https://repo.andrei1058.dev + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 17.0.2 + uses: actions/setup-java@v2 + with: + java-version: '17.0.2' + distribution: 'adopt' + - name: Deploy snapshot with Maven + env: + MVN_REPO_USER: ${{ secrets.MVN_REPO_USER }} + MVN_REPO_PASS: ${{ secrets.MVN_REPO_PASS }} + ANDEV_RES_ID: 1 + run: | + sudo apt install jq -y + curl -X GET https://api.andrei1058.dev/v1/resources/$ANDEV_RES_ID/versioning/current -H "Accept: application/json" >> version.json + export UPDATE_VERSION=`jq '.version' version.json | tr -d '"'` + mvn versions:set -DnewVersion=$UPDATE_VERSION-SNAPSHOT + mvn versions:update-child-modules + mvn clean install -s ci_settings.xml + echo "UPDATE_VERSION=$UPDATE_VERSION" >> $GITHUB_ENV \ No newline at end of file diff --git a/.github/workflows/deploy_snapshot.yml b/.github/workflows/deploy_snapshot.yml new file mode 100644 index 000000000..42351391a --- /dev/null +++ b/.github/workflows/deploy_snapshot.yml @@ -0,0 +1,34 @@ +name: Deploy snapshot with Maven + +on: + push: + branches: + - master + - development + +jobs: + build: + runs-on: ubuntu-latest + environment: + name: development + url: https://repo.andrei1058.dev + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 17.0.2 + uses: actions/setup-java@v2 + with: + java-version: '17.0.2' + distribution: 'adopt' + - name: Deploy snapshot with Maven + env: + MVN_REPO_USER: ${{ secrets.MVN_REPO_USER }} + MVN_REPO_PASS: ${{ secrets.MVN_REPO_PASS }} + ANDEV_RES_ID: 1 + run: | + sudo apt install jq -y + curl -X GET https://api.andrei1058.dev/v1/resources/$ANDEV_RES_ID/versioning/current -H "Accept: application/json" >> version.json + export UPDATE_VERSION=`jq '.version' version.json | tr -d '"'` + mvn versions:set -DnewVersion=$UPDATE_VERSION-SNAPSHOT + mvn versions:update-child-modules + mvn clean deploy -s ci_settings.xml + echo "UPDATE_VERSION=$UPDATE_VERSION" >> $GITHUB_ENV \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index a1b79e15f..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,52 +0,0 @@ -# This workflow will build a Java project with Maven -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven - -name: Test with Maven - -on: - push: - branches-ignore: - - production - pull_request: - branches-ignore: - - production - - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17.0.2 - uses: actions/setup-java@v2 - with: - java-version: '17.0.2' - distribution: 'adopt' - - name: Build with Maven - run: mvn clean install --file pom.xml -s ci_settings.xml -# env: -# APIDOCS_PASS: ${{ secrets.APIDOCS_PASS }} -# APIDOCS_USER: ${{ secrets.APIDOCS_USER }} -# - name: release -# uses: actions/create-release@v1 -# id: create_release -# with: -# draft: false -# prerelease: false -# release_name: Release ${{ github.ref }} -# tag_name: ${{ github.ref }} -# body_path: CHANGELOG.md -# env: -# GITHUB_TOKEN: ${{ github.token }} -# - name: upload plugin jar artifact -# uses: actions/upload-release-asset@v1 -# env: -# GITHUB_TOKEN: ${{ github.token }} -# with: -# upload_url: ${{ steps.create_release.outputs.upload_url }} -# asset_path: ./bedwars-plugin/target/bedwars-plugin-*.jar -# asset_name: bedwars-plugin.jar -# asset_content_type: application/jar -# prerelease: false From 5017580428c34353592d350f69901561a52ce43f Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 27 Mar 2022 13:34:28 -0700 Subject: [PATCH 35/43] Update readme to link to wiki for addons/setups (#462) --- README.md | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 8fac55e76..bc33d4cc3 100644 --- a/README.md +++ b/README.md @@ -19,30 +19,9 @@ heavy if you are still making use of HDD in 2021, and you do not have a decent C and faster restore system install [SlimeWorldManager](https://www.spigotmc.org/resources/slimeworldmanager.69974/) or [AdvancedWorldManager](https://www.spigotmc.org/resources/advanced-slimeworldmanager.87209/). BedWars1058 will hook into it and do everything for you. -# Pre-made setups -You can contact us, so we can add yours here :) - -- by Adi100 - [BEDWARS SETUP ✨Generator Upgrade | Afk System | Custom Menus | NPCs](https://www.mc-market.org/resources/12378/?__cf_chl_jschl_tk__=pmd_zUe1xjS2ei0EP72mxwcz.hbPaDehkT0pn1EYURI9QEk-1635185029-0-gqNtZGzNAnujcnBszQj9) -- by Ruben_Artz - [BEDWARS + DISCORD BOT](https://polymart.org/resource/bedwars-discord-bot-setup.544) -- (**new**) by DyeEarth - [❄️ Premade Bedwars - Setups](https://polymart.org/resource/premade-bedwars-setups.1679) -- By StudioBeam Development - [✨BEDWARS SETUP - With 100+ Pre-Made Arenas, Custom Menus, Grappling Hooks {Exclusive Features!}](https://polymart.org/resource/bedwars-setup-studiobeam-dev.1968) -# Community Add-ons - -- [Private Games - Create private games and play with friends](https://polymart.org/resource/1620) - by Mher -- [Compass - Team Tracker, Quick Communications, Multi-language support](https://www.spigotmc.org/resources/91537/) - by Mher -- [Sponge - Playing cool effect when placing a sponge](https://www.spigotmc.org/resources/93540/) - by Mher -- [AntiDrop - Players Not Allow To Drop The Items In The Void](https://www.spigotmc.org/resources/86391/) - by Mher -- [LuckyBlock NTD - Add LuckyBlocks to your ingame spawners](https://www.spigotmc.org/resources/94872/) - by danirod12 -- [Team Selector - Select your color before the game starts](https://www.spigotmc.org/resources/60438/) - by andrei1058 -- [BedWarsProxy - Arena selector for bungee scalable mode](https://www.spigotmc.org/resources/66642/) - by andrei1058 -- [Reward commands - Execute commands in certain moments of the game](https://www.spigotmc.org/resources/55381/) - by andrei1058 -- [Web stats - Display player stats on a web page](https://www.spigotmc.org/resources/55523/) - by MrDuckBoy_Xx -- [Pop-up Towers](https://www.spigotmc.org/resources/83661/) - by KimoVoidDSGN -- [Generator Split](https://www.spigotmc.org/resources/83883/) - by KimoVoidDSGN -- [Discord Stats](https://www.mc-market.org/resources/20403/) - by Zorino -- [BedWars Spectator & Play-Again Addon {Menu}](https://polymart.org/resource/bw1058-spectator-options-free.1937) - by StudioBeam Development -- [BedWars Arena Start Messages](https://polymart.org/resource/bedwars1058-arena-start-message.1880) - by StudioBeam Development +# Pre-made setups and community addons +You can find a list of pre-made setups and community addons [on the wiki](https://wiki.andrei1058.dev/docs/BedWars1058/addons) # Main features From 5d1129c570a6e3f26e2a6a629d7c15d6db1725e6 Mon Sep 17 00:00:00 2001 From: ajgeiss0702 Date: Sun, 27 Mar 2022 13:35:19 -0700 Subject: [PATCH 36/43] band-aid fix for ConcurrentModificationException on disable (#460) --- .../src/main/java/com/andrei1058/bedwars/BedWars.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java index 6addd2587..d7a839bd0 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/BedWars.java @@ -601,7 +601,7 @@ public void onDisable() { if (getServerType() == ServerType.BUNGEE) { ArenaSocket.disable(); } - for (IArena a : Arena.getArenas()) { + for (IArena a : new LinkedList<>(Arena.getArenas())) { try { a.disable(); } catch (Exception ex) { From b2eb7df4203dd44400527290a83252e1421717b4 Mon Sep 17 00:00:00 2001 From: Marcelektro <32849144+Marcelektro@users.noreply.github.com> Date: Sun, 27 Mar 2022 22:56:03 +0200 Subject: [PATCH 37/43] [enhancement] Fix Invisibility Potions on 1.8 and some cosmetic changes (#408) * Make titles smoothly fade out * What was the point for such long cooldown? * Fix english grammar error * Fix Invisibility Potion not working on 1_8_R3 * Revert "What was the point for such long cooldown?" This reverts commit f66e035e827806dae87b2ac6f0857dffc0c46ab7. Co-authored-by: MarcelDutko <32849144+MarcelDutko@users.noreply.github.com> --- .../SpectatorFirstPersonEnterEvent.java | 4 +- .../SpectatorFirstPersonLeaveEvent.java | 4 +- .../bedwars/api/server/VersionSupport.java | 5 ++ .../com/andrei1058/bedwars/arena/Arena.java | 6 +- .../bedwars/arena/tasks/GamePlayingTask.java | 10 +-- .../bedwars/arena/tasks/GameStartingTask.java | 4 +- .../bedwars/arena/team/BedWarsTeam.java | 2 +- .../subcmds/sensitive/setup/SetShop.java | 2 +- .../subcmds/sensitive/setup/SetUpgrade.java | 2 +- .../andrei1058/bedwars/language/English.java | 2 +- .../bedwars/listeners/BreakPlace.java | 2 +- .../listeners/InvisibilityPotionListener.java | 68 +++++++++---------- .../support/version/v1_10_R1/v1_10_R1.java | 9 +++ .../support/version/v1_11_R1/v1_11_R1.java | 9 +++ .../support/version/v1_12_R1/v1_12_R1.java | 9 +++ .../support/version/v1_13_R2/v1_13_R2.java | 9 +++ .../support/version/v1_14_R1/v1_14_R1.java | 9 +++ .../support/version/v1_15_R1/v1_15_R1.java | 9 +++ .../support/version/v1_16_R1/v1_16_R1.java | 9 +++ .../support/version/v1_16_R2/v1_16_R2.java | 9 +++ .../support/version/v1_8_R3/v1_8_R3.java | 16 +++++ .../support/version/v1_9_R2/v1_9_R2.java | 9 +++ .../support/version/v1_16_R3/v1_16_R3.java | 9 +++ .../support/version/v1_17_R1/v1_17_R1.java | 9 +++ .../support/version/v1_18_R1/v1_18_R1.java | 9 +++ 25 files changed, 181 insertions(+), 54 deletions(-) diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/spectator/SpectatorFirstPersonEnterEvent.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/spectator/SpectatorFirstPersonEnterEvent.java index eb7c0dbce..ad76e305e 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/spectator/SpectatorFirstPersonEnterEvent.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/spectator/SpectatorFirstPersonEnterEvent.java @@ -43,8 +43,8 @@ public class SpectatorFirstPersonEnterEvent extends Event implements Cancellable private Function title; private Function subTitle; private int fadeIn = 0; - private int stay = 30; - private int fadeOut = 0; + private int stay = 40; + private int fadeOut = 10; // A list of all players spectating in first person private static List spectatingInFirstPerson = new ArrayList<>(); diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/spectator/SpectatorFirstPersonLeaveEvent.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/spectator/SpectatorFirstPersonLeaveEvent.java index 41d0184f9..044436c4a 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/spectator/SpectatorFirstPersonLeaveEvent.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/spectator/SpectatorFirstPersonLeaveEvent.java @@ -36,8 +36,8 @@ public class SpectatorFirstPersonLeaveEvent extends Event { private Function title; private Function subTitle; private int fadeIn = 0; - private int stay = 30; - private int fadeOut = 0; + private int stay = 40; + private int fadeOut = 10; public SpectatorFirstPersonLeaveEvent(Player spectator, IArena arena, Function title, Function subtitle) { this.spectator = spectator; diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/server/VersionSupport.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/server/VersionSupport.java index 14fb58c3a..c562b5485 100644 --- a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/server/VersionSupport.java +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/server/VersionSupport.java @@ -130,6 +130,11 @@ protected void loadDefaultEffects() { */ public abstract boolean isProjectile(ItemStack itemStack); + /** + * Check if itemstack is Invisibility Potion + */ + public abstract boolean isInvisibilityPotion(ItemStack itemStack); + /** * Register custom entities */ diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/Arena.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/Arena.java index 447aa77d4..3a4a17402 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/Arena.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/Arena.java @@ -1442,7 +1442,7 @@ public void setStatus(GameState status) { if (this.status == GameState.starting && status == GameState.waiting) { for (Player player : getPlayers()) { Language playerLang = Language.getPlayerLanguage(player); - nms.sendTitle(player, playerLang.m(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_TITLE), playerLang.m(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_SUB_TITLE), 0, 40, 0); + nms.sendTitle(player, playerLang.m(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_TITLE), playerLang.m(Messages.ARENA_STATUS_START_COUNTDOWN_CANCELLED_SUB_TITLE), 0, 40, 10); } } this.status = status; @@ -1848,7 +1848,7 @@ public void checkWinner() { //noinspection deprecation for (Player p : winner.getMembersCache()) { if (p.getWorld().equals(getWorld())) { - nms.sendTitle(p, getMsg(p, Messages.GAME_END_VICTORY_PLAYER_TITLE), null, 0, 70, 0); + nms.sendTitle(p, getMsg(p, Messages.GAME_END_VICTORY_PLAYER_TITLE), null, 0, 70, 20); } if (!winners.toString().contains(p.getDisplayName())) { winners.append(p.getDisplayName()).append(" "); @@ -1901,7 +1901,7 @@ public void checkWinner() { p.sendMessage(getMsg(p, Messages.GAME_END_TEAM_WON_CHAT).replace("{TeamColor}", winner.getColor().chat().toString()) .replace("{TeamName}", winner.getDisplayName(Language.getPlayerLanguage(p)))); if (!winner.getMembers().contains(p)) { - nms.sendTitle(p, getMsg(p, Messages.GAME_END_GAME_OVER_PLAYER_TITLE), null, 0, 70, 0); + nms.sendTitle(p, getMsg(p, Messages.GAME_END_GAME_OVER_PLAYER_TITLE), null, 0, 70, 20); } for (String s : getList(p, Messages.GAME_END_TOP_PLAYER_CHAT)) { String message = s.replace("{firstName}", firstName.isEmpty() ? getMsg(p, Messages.MEANING_NOBODY) : firstName).replace("{firstKills}", String.valueOf(first)) diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/tasks/GamePlayingTask.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/tasks/GamePlayingTask.java index e7429571d..317cdaaae 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/tasks/GamePlayingTask.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/tasks/GamePlayingTask.java @@ -109,11 +109,11 @@ public void run() { beds_destroy_countdown--; if (getBedsDestroyCountdown() == 0) { for (Player p : getArena().getPlayers()) { - nms.sendTitle(p, getMsg(p, Messages.NEXT_EVENT_TITLE_ANNOUNCE_BEDS_DESTROYED), getMsg(p, Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_BEDS_DESTROYED), 0, 30, 0); + nms.sendTitle(p, getMsg(p, Messages.NEXT_EVENT_TITLE_ANNOUNCE_BEDS_DESTROYED), getMsg(p, Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_BEDS_DESTROYED), 0, 40, 10); p.sendMessage(getMsg(p, Messages.NEXT_EVENT_CHAT_ANNOUNCE_BEDS_DESTROYED)); } for (Player p : getArena().getSpectators()) { - nms.sendTitle(p, getMsg(p, Messages.NEXT_EVENT_TITLE_ANNOUNCE_BEDS_DESTROYED), getMsg(p, Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_BEDS_DESTROYED), 0, 30, 0); + nms.sendTitle(p, getMsg(p, Messages.NEXT_EVENT_TITLE_ANNOUNCE_BEDS_DESTROYED), getMsg(p, Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_BEDS_DESTROYED), 0, 40, 10); p.sendMessage(getMsg(p, Messages.NEXT_EVENT_CHAT_ANNOUNCE_BEDS_DESTROYED)); } for (ITeam t : getArena().getTeams()) { @@ -126,7 +126,7 @@ public void run() { dragon_spawn_countdown--; if (getDragonSpawnCountdown() == 0) { for (Player p : getArena().getPlayers()) { - nms.sendTitle(p, getMsg(p, Messages.NEXT_EVENT_TITLE_ANNOUNCE_SUDDEN_DEATH), getMsg(p, Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_SUDDEN_DEATH), 0, 30, 0); + nms.sendTitle(p, getMsg(p, Messages.NEXT_EVENT_TITLE_ANNOUNCE_SUDDEN_DEATH), getMsg(p, Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_SUDDEN_DEATH), 0, 40, 10); for (ITeam t : getArena().getTeams()) { if (t.getMembers().isEmpty()) continue; p.sendMessage(getMsg(p, Messages.NEXT_EVENT_CHAT_ANNOUNCE_SUDDEN_DEATH).replace("{TeamDragons}", String.valueOf(t.getDragons())) @@ -134,7 +134,7 @@ public void run() { } } for (Player p : getArena().getSpectators()) { - nms.sendTitle(p, getMsg(p, Messages.NEXT_EVENT_TITLE_ANNOUNCE_SUDDEN_DEATH), getMsg(p, Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_SUDDEN_DEATH), 0, 30, 0); + nms.sendTitle(p, getMsg(p, Messages.NEXT_EVENT_TITLE_ANNOUNCE_SUDDEN_DEATH), getMsg(p, Messages.NEXT_EVENT_SUBTITLE_ANNOUNCE_SUDDEN_DEATH), 0, 40, 10); for (ITeam t : getArena().getTeams()) { if (t.getMembers().isEmpty()) continue; p.sendMessage(getMsg(p, Messages.NEXT_EVENT_CHAT_ANNOUNCE_SUDDEN_DEATH).replace("{TeamDragons}", String.valueOf(t.getDragons())) @@ -230,7 +230,7 @@ public void run() { } else { nms.sendTitle(e.getKey(), getMsg(e.getKey(), Messages.PLAYER_DIE_RESPAWN_TITLE).replace("{time}", String.valueOf(e.getValue())), getMsg(e.getKey(), Messages.PLAYER_DIE_RESPAWN_SUBTITLE).replace("{time}", - String.valueOf(e.getValue())), 0, 30, 0); + String.valueOf(e.getValue())), 0, 30, 10); e.getKey().sendMessage(getMsg(e.getKey(), Messages.PLAYER_DIE_RESPAWN_CHAT).replace("{time}", String.valueOf(e.getValue()))); getArena().getRespawnSessions().replace(e.getKey(), e.getValue() - 1); } diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/tasks/GameStartingTask.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/tasks/GameStartingTask.java index a2d59116c..999f23874 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/tasks/GameStartingTask.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/tasks/GameStartingTask.java @@ -157,7 +157,7 @@ public void run() { for (Player player : getArena().getPlayers()) { Language playerLang = Language.getPlayerLanguage(player); String[] titleSubtitle = Language.getCountDownTitle(playerLang, getCountdown()); - nms.sendTitle(player, titleSubtitle[0], titleSubtitle[1], 4, 22, 4); + nms.sendTitle(player, titleSubtitle[0], titleSubtitle[1], 0, 20, 10); player.sendMessage(getMsg(player, Messages.ARENA_STATUS_START_COUNTDOWN_CHAT).replace("{time}", String.valueOf(getCountdown()))); } } @@ -171,7 +171,7 @@ private void spawnPlayers() { BedWarsTeam.reSpawnInvulnerability.put(p.getUniqueId(), System.currentTimeMillis() + 2000L); bwt.firstSpawn(p); Sounds.playSound(ConfigPath.SOUND_GAME_START, p); - nms.sendTitle(p, getMsg(p, Messages.ARENA_STATUS_START_PLAYER_TITLE), null, 0, 20, 0); + nms.sendTitle(p, getMsg(p, Messages.ARENA_STATUS_START_PLAYER_TITLE), null, 0, 30, 10); for (String tut : getList(p, Messages.ARENA_STATUS_START_PLAYER_TUTORIAL)) { p.sendMessage(SupportPAPI.getSupportPAPI().replace(p, tut)); } diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/team/BedWarsTeam.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/team/BedWarsTeam.java index 37adeea4b..f9c0db84e 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/team/BedWarsTeam.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/arena/team/BedWarsTeam.java @@ -357,7 +357,7 @@ public void respawnMember(@NotNull Player p) { } }, 8L); - nms.sendTitle(p, getMsg(p, Messages.PLAYER_DIE_RESPAWNED_TITLE), "", 0, 20, 0); + nms.sendTitle(p, getMsg(p, Messages.PLAYER_DIE_RESPAWNED_TITLE), "", 0, 20, 10); sendDefaultInventory(p, false); ShopCache sc = ShopCache.getShopCache(p.getUniqueId()); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetShop.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetShop.java index 6395e3c12..46be7c4e6 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetShop.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetShop.java @@ -70,7 +70,7 @@ public boolean execute(String[] args, CommandSender s) { p.spigot().sendMessage(Misc.msgHoverClick(ss.getPrefix() + "Make sure you set the team's spawn first!", ChatColor.WHITE + "Set a team spawn.", "/" + getParent().getName() + " " + getSubCommandName() + " ", ClickEvent.Action.SUGGEST_COMMAND)); p.spigot().sendMessage(Misc.msgHoverClick(ss.getPrefix() + "Or if you set the spawn and it wasn't found automatically try using: /bw " + getSubCommandName() + " ", "Set a team shop.", "/" + getParent().getName() + " " + getSubCommandName() + " ", ClickEvent.Action.SUGGEST_COMMAND)); p.spigot().sendMessage(Misc.msgHoverClick(ss.getPrefix() + "Other use: /bw setShop ", "Set a team shop.", "/" + getParent().getName() + " " + getSubCommandName() + " ", ClickEvent.Action.SUGGEST_COMMAND)); - com.andrei1058.bedwars.BedWars.nms.sendTitle(p, " ", ChatColor.RED + "Could not find any nearby team.", 5, 60, 5); + com.andrei1058.bedwars.BedWars.nms.sendTitle(p, " ", ChatColor.RED + "Could not find any nearby team.", 0, 60, 10); Sounds.playSound(ConfigPath.SOUNDS_INSUFF_MONEY, p); } else { Bukkit.dispatchCommand(s, getParent().getName() + " " + getSubCommandName() + " " + foundTeam); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetUpgrade.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetUpgrade.java index f4327f0bc..eb8888030 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetUpgrade.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetUpgrade.java @@ -69,7 +69,7 @@ public boolean execute(String[] args, CommandSender s) { p.sendMessage(ss.getPrefix() + ChatColor.RED + "Could not find any nearby team."); p.spigot().sendMessage(Misc.msgHoverClick(ss.getPrefix() + "Make sure you set the team's spawn first!", ChatColor.WHITE + "Set a team spawn.", "/" + getParent().getName() + " " + getSubCommandName() + " ", ClickEvent.Action.SUGGEST_COMMAND)); p.spigot().sendMessage(Misc.msgHoverClick(ss.getPrefix() + "Or if you set the spawn and it wasn't found automatically try using: /bw " + getSubCommandName() + " ", "Set team upgrades NPC for a team.", "/" + getParent().getName() + " " + getSubCommandName() + " ", ClickEvent.Action.SUGGEST_COMMAND)); - com.andrei1058.bedwars.BedWars.nms.sendTitle(p, " ", ChatColor.RED + "Could not find any nearby team.", 5, 60, 5); + com.andrei1058.bedwars.BedWars.nms.sendTitle(p, " ", ChatColor.RED + "Could not find any nearby team.", 0, 60, 10); Sounds.playSound(ConfigPath.SOUNDS_INSUFF_MONEY, p); } else { diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java index df45fe0d7..252fd3d34 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/language/English.java @@ -93,7 +93,7 @@ public English() { yml.addDefault(Messages.COMMAND_PARTY_INVITE_SENT_TARGET_RECEIVE_MSG, "{prefix}&b{player} &ehas invited you to a party! &o&7(Click to accept)"); yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_CANNOT_INVITE_YOURSELF, "{prefix}&cYou cannot invite yourself!"); yml.addDefault(Messages.COMMAND_PARTY_INVITE_DENIED_PLAYER_OFFLINE, "{prefix}&7{player} &eis offline!"); - yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_NO_INVITE, "{prefix}&cThere's no party requests to accept"); + yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_NO_INVITE, "{prefix}&cThere are no party requests to accept!"); yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_DENIED_ALREADY_IN_PARTY, "{prefix}&eYou're already in a party!"); yml.addDefault(Messages.COMMAND_PARTY_INSUFFICIENT_PERMISSIONS, "{prefix}&cOnly the party owner can do this!"); yml.addDefault(Messages.COMMAND_PARTY_ACCEPT_USAGE, "{prefix}&eUsage: &7/party accept "); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java index 7950ac2a4..47b8104d9 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/BreakPlace.java @@ -322,7 +322,7 @@ public void onBlockBreak(BlockBreakEvent e) { .replace("{PlayerName}", p.getDisplayName())); } if (breakEvent.getTitle() != null && breakEvent.getSubTitle() != null) { - nms.sendTitle(on, breakEvent.getTitle().apply(on), breakEvent.getSubTitle().apply(on), 0, 25, 0); + nms.sendTitle(on, breakEvent.getTitle().apply(on), breakEvent.getSubTitle().apply(on), 0, 40, 10); } if (t.isMember(on)) Sounds.playSound(ConfigPath.SOUNDS_BED_DESTROY_OWN, on); else Sounds.playSound(ConfigPath.SOUNDS_BED_DESTROY, on); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/InvisibilityPotionListener.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/InvisibilityPotionListener.java index c2f859ef6..bac1eb531 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/InvisibilityPotionListener.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/InvisibilityPotionListener.java @@ -75,45 +75,43 @@ public void onDrink(PlayerItemConsumeEvent e) { nms.minusAmount(e.getPlayer(), new ItemStack(Material.GLASS_BOTTLE), 1), 5L); // - PotionMeta pm = (PotionMeta) e.getItem().getItemMeta(); - if (pm.hasCustomEffects()) { - if (pm.hasCustomEffect(PotionEffectType.INVISIBILITY)) { - Bukkit.getScheduler().runTaskLater(plugin, () -> { - for (PotionEffect pe : e.getPlayer().getActivePotionEffects()) { - if (pe.getType().toString().contains("INVISIBILITY")) { - // if is already invisible - if (a.getShowTime().containsKey(e.getPlayer())) { - ITeam t = a.getTeam(e.getPlayer()); - // increase invisibility timer - // keep trace of invisible players to send hide armor packet when required - // because potions do not hide armors - a.getShowTime().replace(e.getPlayer(), pe.getDuration() / 20); - // call custom event - Bukkit.getPluginManager().callEvent(new PlayerInvisibilityPotionEvent(PlayerInvisibilityPotionEvent.Type.ADDED, t, e.getPlayer(), t.getArena())); - } else { - // if not already invisible - ITeam t = a.getTeam(e.getPlayer()); - // keep trace of invisible players to send hide armor packet when required - // because potions do not hide armors - a.getShowTime().put(e.getPlayer(), pe.getDuration() / 20); - // - for (Player p1 : e.getPlayer().getWorld().getPlayers()) { - if (a.isSpectator(p1)) { - // hide player armor to spectators - nms.hideArmor(e.getPlayer(), p1); - } else if (t != a.getTeam(p1)) { - // hide player armor to other teams - nms.hideArmor(e.getPlayer(), p1); - } + + if (nms.isInvisibilityPotion(e.getItem())) { + Bukkit.getScheduler().runTaskLater(plugin, () -> { + for (PotionEffect pe : e.getPlayer().getActivePotionEffects()) { + if (pe.getType().toString().contains("INVISIBILITY")) { + // if is already invisible + if (a.getShowTime().containsKey(e.getPlayer())) { + ITeam t = a.getTeam(e.getPlayer()); + // increase invisibility timer + // keep trace of invisible players to send hide armor packet when required + // because potions do not hide armors + a.getShowTime().replace(e.getPlayer(), pe.getDuration() / 20); + // call custom event + Bukkit.getPluginManager().callEvent(new PlayerInvisibilityPotionEvent(PlayerInvisibilityPotionEvent.Type.ADDED, t, e.getPlayer(), t.getArena())); + } else { + // if not already invisible + ITeam t = a.getTeam(e.getPlayer()); + // keep trace of invisible players to send hide armor packet when required + // because potions do not hide armors + a.getShowTime().put(e.getPlayer(), pe.getDuration() / 20); + // + for (Player p1 : e.getPlayer().getWorld().getPlayers()) { + if (a.isSpectator(p1)) { + // hide player armor to spectators + nms.hideArmor(e.getPlayer(), p1); + } else if (t != a.getTeam(p1)) { + // hide player armor to other teams + nms.hideArmor(e.getPlayer(), p1); } - // call custom event - Bukkit.getPluginManager().callEvent(new PlayerInvisibilityPotionEvent(PlayerInvisibilityPotionEvent.Type.ADDED, t, e.getPlayer(), t.getArena())); } - break; + // call custom event + Bukkit.getPluginManager().callEvent(new PlayerInvisibilityPotionEvent(PlayerInvisibilityPotionEvent.Type.ADDED, t, e.getPlayer(), t.getArena())); } + break; } - }, 5L); - } + } + }, 5L); } } } diff --git a/versionsupport_1_10_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_10_R1/v1_10_R1.java b/versionsupport_1_10_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_10_R1/v1_10_R1.java index b1e9c9f17..c2ed4b6ab 100644 --- a/versionsupport_1_10_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_10_R1/v1_10_R1.java +++ b/versionsupport_1_10_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_10_R1/v1_10_R1.java @@ -206,6 +206,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).getItem() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @Override public void registerEntities() { registerEntity("Silverfish2", 60, Silverfish.class); diff --git a/versionsupport_1_11_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_11_R1/v1_11_R1.java b/versionsupport_1_11_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_11_R1/v1_11_R1.java index 2dcce6c8d..caeb9b6b0 100644 --- a/versionsupport_1_11_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_11_R1/v1_11_R1.java +++ b/versionsupport_1_11_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_11_R1/v1_11_R1.java @@ -210,6 +210,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).getItem() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @Override public void registerEntities() { diff --git a/versionsupport_1_12_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_12_R1/v1_12_R1.java b/versionsupport_1_12_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_12_R1/v1_12_R1.java index f293ecbcb..7b7462636 100644 --- a/versionsupport_1_12_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_12_R1/v1_12_R1.java +++ b/versionsupport_1_12_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_12_R1/v1_12_R1.java @@ -211,6 +211,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).getItem() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @Override public void registerEntities() { registerEntity("Silverfish2", 60, Silverfish.class); diff --git a/versionsupport_1_13_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_13_R2/v1_13_R2.java b/versionsupport_1_13_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_13_R2/v1_13_R2.java index a8c5aa0eb..246e572bb 100644 --- a/versionsupport_1_13_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_13_R2/v1_13_R2.java +++ b/versionsupport_1_13_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_13_R2/v1_13_R2.java @@ -212,6 +212,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).getItem() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm != null && pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @SuppressWarnings("unchecked") @Override public void registerEntities() { diff --git a/versionsupport_1_14_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_14_R1/v1_14_R1.java b/versionsupport_1_14_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_14_R1/v1_14_R1.java index 246cd855e..2ff1fd40c 100644 --- a/versionsupport_1_14_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_14_R1/v1_14_R1.java +++ b/versionsupport_1_14_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_14_R1/v1_14_R1.java @@ -212,6 +212,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).getItem() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm != null && pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @SuppressWarnings({"unchecked", "ResultOfMethodCallIgnored"}) @Override public void registerEntities() { diff --git a/versionsupport_1_15_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_15_R1/v1_15_R1.java b/versionsupport_1_15_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_15_R1/v1_15_R1.java index 492d4f64c..a94f7a62a 100644 --- a/versionsupport_1_15_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_15_R1/v1_15_R1.java +++ b/versionsupport_1_15_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_15_R1/v1_15_R1.java @@ -211,6 +211,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).getItem() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm != null && pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @SuppressWarnings({"unchecked", "ResultOfMethodCallIgnored"}) @Override public void registerEntities() { diff --git a/versionsupport_1_16_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R1/v1_16_R1.java b/versionsupport_1_16_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R1/v1_16_R1.java index a4e63586b..c2764679b 100644 --- a/versionsupport_1_16_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R1/v1_16_R1.java +++ b/versionsupport_1_16_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R1/v1_16_R1.java @@ -201,6 +201,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).A() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm != null && pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @SuppressWarnings({"unchecked"}) @Override public void registerEntities() { diff --git a/versionsupport_1_16_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R2/v1_16_R2.java b/versionsupport_1_16_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R2/v1_16_R2.java index 23f20863b..de2a562fb 100644 --- a/versionsupport_1_16_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R2/v1_16_R2.java +++ b/versionsupport_1_16_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R2/v1_16_R2.java @@ -201,6 +201,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).A() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm != null && pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @SuppressWarnings({"unchecked"}) @Override public void registerEntities() { diff --git a/versionsupport_1_8_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_8_R3/v1_8_R3.java b/versionsupport_1_8_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_8_R3/v1_8_R3.java index f3599b6c0..f2c8cf4dc 100644 --- a/versionsupport_1_8_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_8_R3/v1_8_R3.java +++ b/versionsupport_1_8_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_8_R3/v1_8_R3.java @@ -173,6 +173,22 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).getItem() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + if (pm != null && pm.hasCustomEffects()) { + return pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + + org.bukkit.potion.Potion potion = org.bukkit.potion.Potion.fromItemStack(itemStack); + org.bukkit.potion.PotionType type = potion.getType(); + + return type.getEffectType().equals(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @Override public void registerEntities() { registerEntity("Silverfish2", 60, Silverfish.class); diff --git a/versionsupport_1_9_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_9_R2/v1_9_R2.java b/versionsupport_1_9_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_9_R2/v1_9_R2.java index 6900eea43..2fc3936b5 100644 --- a/versionsupport_1_9_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_9_R2/v1_9_R2.java +++ b/versionsupport_1_9_R2/src/main/java/com/andrei1058/bedwars/support/version/v1_9_R2/v1_9_R2.java @@ -197,6 +197,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).getItem() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @Override public void registerEntities() { registerEntity("Silverfish2", 60, Silverfish.class); diff --git a/versionsupport_v1_16_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R3/v1_16_R3.java b/versionsupport_v1_16_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R3/v1_16_R3.java index 231428947..801e12138 100644 --- a/versionsupport_v1_16_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R3/v1_16_R3.java +++ b/versionsupport_v1_16_R3/src/main/java/com/andrei1058/bedwars/support/version/v1_16_R3/v1_16_R3.java @@ -201,6 +201,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).A() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm != null && pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @SuppressWarnings({"unchecked"}) @Override public void registerEntities() { diff --git a/versionsupport_v1_17_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_17_R1/v1_17_R1.java b/versionsupport_v1_17_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_17_R1/v1_17_R1.java index 30e9cd7e4..fa81ca9c9 100644 --- a/versionsupport_v1_17_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_17_R1/v1_17_R1.java +++ b/versionsupport_v1_17_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_17_R1/v1_17_R1.java @@ -226,6 +226,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).E() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm != null && pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @SuppressWarnings({"unchecked"}) @Override public void registerEntities() { diff --git a/versionsupport_v1_18_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_18_R1/v1_18_R1.java b/versionsupport_v1_18_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_18_R1/v1_18_R1.java index c0602039f..67d3bffd1 100644 --- a/versionsupport_v1_18_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_18_R1/v1_18_R1.java +++ b/versionsupport_v1_18_R1/src/main/java/com/andrei1058/bedwars/support/version/v1_18_R1/v1_18_R1.java @@ -225,6 +225,15 @@ public boolean isProjectile(org.bukkit.inventory.ItemStack itemStack) { return CraftItemStack.asNMSCopy(itemStack).E() instanceof IProjectile; } + @Override + public boolean isInvisibilityPotion(org.bukkit.inventory.ItemStack itemStack) { + if (!itemStack.getType().equals(org.bukkit.Material.POTION)) return false; + + org.bukkit.inventory.meta.PotionMeta pm = (org.bukkit.inventory.meta.PotionMeta) itemStack.getItemMeta(); + + return pm != null && pm.hasCustomEffects() && pm.hasCustomEffect(org.bukkit.potion.PotionEffectType.INVISIBILITY); + } + @SuppressWarnings({"unchecked"}) @Override public void registerEntities() { From 8b3e2ded81dcee92497e7af7ac8a94010257c22a Mon Sep 17 00:00:00 2001 From: Ricardo <63428864+reussy@users.noreply.github.com> Date: Sun, 27 Mar 2022 14:57:54 -0600 Subject: [PATCH 38/43] Implement command for set max build Y (#428) --- .../bedwars/commands/bedwars/MainCommand.java | 1 + .../sensitive/setup/SetBuildHeight.java | 82 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetBuildHeight.java diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/MainCommand.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/MainCommand.java index 5744ef874..03e472ad8 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/MainCommand.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/MainCommand.java @@ -97,6 +97,7 @@ public MainCommand(String name) { new com.andrei1058.bedwars.commands.bedwars.subcmds.sensitive.setup.WaitingPos(this, "waitingPos"); new com.andrei1058.bedwars.commands.bedwars.subcmds.sensitive.setup.RemoveTeam(this, "removeTeam"); new com.andrei1058.bedwars.commands.bedwars.subcmds.sensitive.setup.SetMaxInTeam(this, "setMaxInTeam"); + new com.andrei1058.bedwars.commands.bedwars.subcmds.sensitive.setup.SetBuildHeight(this, "setMaxBuildHeight"); new com.andrei1058.bedwars.commands.bedwars.subcmds.sensitive.setup.SetSpawn(this, "setSpawn"); new com.andrei1058.bedwars.commands.bedwars.subcmds.sensitive.setup.SetBed(this, "setBed"); new SetShop(this, "setShop"); diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetBuildHeight.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetBuildHeight.java new file mode 100644 index 000000000..276340bd8 --- /dev/null +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/commands/bedwars/subcmds/sensitive/setup/SetBuildHeight.java @@ -0,0 +1,82 @@ +package com.andrei1058.bedwars.commands.bedwars.subcmds.sensitive.setup; + +import com.andrei1058.bedwars.api.BedWars; +import com.andrei1058.bedwars.api.command.ParentCommand; +import com.andrei1058.bedwars.api.command.SubCommand; +import com.andrei1058.bedwars.arena.SetupSession; +import com.andrei1058.bedwars.configuration.Permissions; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; + +import java.util.Arrays; +import java.util.List; + +import static com.andrei1058.bedwars.BedWars.mainCmd; + +public class SetBuildHeight extends SubCommand { + /** + * Create a sub-command for a bedWars command + * Make sure you return true or it will say command not found + * + * @param parent parent command + * @param name sub-command name + */ + public SetBuildHeight(ParentCommand parent, String name) { + super(parent, name); + setArenaSetupCommand(true); + setPermission(Permissions.PERMISSION_SETUP_ARENA); + } + + /** + * Add your sub-command code under this method + * + * @param args + * @param s + */ + @Override + public boolean execute(String[] args, CommandSender s) { + + if (s instanceof ConsoleCommandSender) return false; + + Player p = (Player) s; + SetupSession ss = SetupSession.getSession(p.getUniqueId()); + + if (ss == null){ + s.sendMessage("§c ▪ §7You're not in a setup session!"); + return true; + } + + if (args.length == 0) { + p.sendMessage("§c▪ §7Usage: /" + mainCmd + " setMaxBuildHeight "); + } else { + try { + Integer.parseInt(args[0]); + } catch (Exception ex) { + p.sendMessage("§c▪ §7Usage: /" + mainCmd + " setMaxBuildHeight "); + return true; + } + ss.getConfig().set("max-build-y", Integer.valueOf(args[0])); + p.sendMessage("§6 ▪ §7Max build height Y set to §e" + args[0] + "§7!"); + } + return true; + } + + /** + * Manage sub-command tab complete + */ + @Override + public List getTabComplete() { + return Arrays.asList("180", "256"); + } + + @Override + public boolean canSee(CommandSender s, BedWars api) { + if (s instanceof ConsoleCommandSender) return false; + + Player p = (Player) s; + if (!SetupSession.isInSetupSession(p.getUniqueId())) return false; + + return hasPermission(s); + } +} From e58b284054c106d10623f738ac6fbe74aa6d0c83 Mon Sep 17 00:00:00 2001 From: "J.T. McQuigg" Date: Sun, 27 Mar 2022 17:24:12 -0400 Subject: [PATCH 39/43] TeamEliminatedEvent (#465) --- .../api/events/team/TeamEliminatedEvent.java | 38 +++++++++++++++++++ .../bedwars/listeners/DamageDeathMove.java | 2 + 2 files changed, 40 insertions(+) create mode 100644 bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/team/TeamEliminatedEvent.java diff --git a/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/team/TeamEliminatedEvent.java b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/team/TeamEliminatedEvent.java new file mode 100644 index 000000000..458697b30 --- /dev/null +++ b/bedwars-api/src/main/java/com/andrei1058/bedwars/api/events/team/TeamEliminatedEvent.java @@ -0,0 +1,38 @@ +package com.andrei1058.bedwars.api.events.team; + +import com.andrei1058.bedwars.api.arena.IArena; +import com.andrei1058.bedwars.api.arena.team.ITeam; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class TeamEliminatedEvent extends Event { + private static final HandlerList HANDLERS = new HandlerList(); + + private final IArena arena; + private final ITeam eliminated; + + /** + * Called when all Team gets killed and Bed is broken during the game. + * + * + */ + + public TeamEliminatedEvent(IArena arena, ITeam eliminated) { + this.arena = arena; + this.eliminated = eliminated; + } + + public IArena getArena() { + return arena; + } + + public ITeam getTeam() {return eliminated;} + + public HandlerList getHandlers() { + return HANDLERS; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } +} \ No newline at end of file diff --git a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java index cfa454552..1c1955f7b 100644 --- a/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java +++ b/bedwars-plugin/src/main/java/com/andrei1058/bedwars/listeners/DamageDeathMove.java @@ -30,6 +30,7 @@ import com.andrei1058.bedwars.api.entity.Despawnable; import com.andrei1058.bedwars.api.events.player.PlayerInvisibilityPotionEvent; import com.andrei1058.bedwars.api.events.player.PlayerKillEvent; +import com.andrei1058.bedwars.api.events.team.TeamEliminatedEvent; import com.andrei1058.bedwars.api.language.Language; import com.andrei1058.bedwars.api.language.Messages; import com.andrei1058.bedwars.api.server.ServerType; @@ -533,6 +534,7 @@ public void onRespawn(PlayerRespawnEvent e) { t.getMembers().remove(e.getPlayer()); e.getPlayer().sendMessage(getMsg(e.getPlayer(), Messages.PLAYER_DIE_ELIMINATED_CHAT)); if (t.getMembers().isEmpty()) { + Bukkit.getPluginManager().callEvent(new TeamEliminatedEvent(a, t)); for (Player p : a.getWorld().getPlayers()) { p.sendMessage(getMsg(p, Messages.TEAM_ELIMINATED_CHAT).replace("{TeamColor}", t.getColor().chat().toString()).replace("{TeamName}", t.getDisplayName(Language.getPlayerLanguage(p)))); } From 98e04bef9116f572f9a55e898847ee45e9beb2d1 Mon Sep 17 00:00:00 2001 From: Cubixmeister Date: Sun, 1 May 2022 01:40:19 +0200 Subject: [PATCH 40/43] depend on spigot 1.16.5 --- bedwars-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index 867112124..1dbb19f1b 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -210,7 +210,7 @@ org.spigotmc spigot - 1.8.8-R0.1-SNAPSHOT + 1.16.5-R0.1-SNAPSHOT provided From 674502e496bb2c57d006f3269a150c3a2f0cb168 Mon Sep 17 00:00:00 2001 From: Artur Motyka Date: Sat, 14 May 2022 05:08:32 +0200 Subject: [PATCH 41/43] jgitver --- .mvn/extensions.xml | 8 ++++++++ bedwars-api/.mvn/extensions.xml | 8 ++++++++ bedwars-api/pom.xml | 2 +- bedwars-plugin/.mvn/extensions.xml | 8 ++++++++ bedwars-plugin/pom.xml | 2 +- pom.xml | 2 +- 6 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 .mvn/extensions.xml create mode 100644 bedwars-api/.mvn/extensions.xml create mode 100644 bedwars-plugin/.mvn/extensions.xml diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml new file mode 100644 index 000000000..8dab0da14 --- /dev/null +++ b/.mvn/extensions.xml @@ -0,0 +1,8 @@ + + + fr.brouillard.oss + jgitver-maven-plugin + 1.8.0 + + \ No newline at end of file diff --git a/bedwars-api/.mvn/extensions.xml b/bedwars-api/.mvn/extensions.xml new file mode 100644 index 000000000..8dab0da14 --- /dev/null +++ b/bedwars-api/.mvn/extensions.xml @@ -0,0 +1,8 @@ + + + fr.brouillard.oss + jgitver-maven-plugin + 1.8.0 + + \ No newline at end of file diff --git a/bedwars-api/pom.xml b/bedwars-api/pom.xml index 7a7646092..09539cb15 100644 --- a/bedwars-api/pom.xml +++ b/bedwars-api/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.3-SNAPSHOT + ${jgitver.calcuated_version} 4.0.0 bedwars-api diff --git a/bedwars-plugin/.mvn/extensions.xml b/bedwars-plugin/.mvn/extensions.xml new file mode 100644 index 000000000..8dab0da14 --- /dev/null +++ b/bedwars-plugin/.mvn/extensions.xml @@ -0,0 +1,8 @@ + + + fr.brouillard.oss + jgitver-maven-plugin + 1.8.0 + + \ No newline at end of file diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index 1dbb19f1b..d5e545046 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -5,7 +5,7 @@ BedWars1058 com.andrei1058.bedwars - 22.3-SNAPSHOT + ${jgitver.calcuated_version} 4.0.0 bedwars-plugin diff --git a/pom.xml b/pom.xml index 55ce40ea6..3771ef471 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.andrei1058.bedwars BedWars1058 pom - 22.3-SNAPSHOT + ${jgitver.calcuated_version} UTF-8 From 56cdafd72c187e9cefc6e76b7eda0222bbee5ccb Mon Sep 17 00:00:00 2001 From: Artur Motyka Date: Sun, 29 May 2022 15:19:32 +0200 Subject: [PATCH 42/43] maven-shade-plugin --- bedwars-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index d5e545046..1e3eabf18 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -282,7 +282,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.3.1-SNAPSHOT + 3.3.0 From 5752234926d0e41968cf79b7aef7d196818b07a0 Mon Sep 17 00:00:00 2001 From: Artur Motyka Date: Sun, 29 May 2022 15:21:00 +0200 Subject: [PATCH 43/43] pluginRepositories --- bedwars-plugin/pom.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/bedwars-plugin/pom.xml b/bedwars-plugin/pom.xml index 1e3eabf18..04d5d61e4 100644 --- a/bedwars-plugin/pom.xml +++ b/bedwars-plugin/pom.xml @@ -12,15 +12,6 @@ jar ${parent.version} - - - - maven-snapshots - https://repository.apache.org/content/repositories/snapshots/ - - - simonsators-repo