From 1802cbd1be19799ae119bd6759dfef46b7c71ad5 Mon Sep 17 00:00:00 2001 From: Luca Date: Mon, 22 Nov 2021 16:43:42 +0100 Subject: [PATCH] okeee --- .../bedwars/listeners/game/WorldListener.java | 16 +++++++-- .../bedwars/managers/PlayerDataManager.java | 2 ++ .../tilly/bedwars/playerdata/PlayerData.java | 2 ++ .../tilly/bedwars/playerdata/PlayerTeam.java | 34 ++++++++++--------- .../scoreboard/ScoreboardProvider.java | 29 +++++++++++++++- 5 files changed, 63 insertions(+), 20 deletions(-) diff --git a/src/main/java/rip/tilly/bedwars/listeners/game/WorldListener.java b/src/main/java/rip/tilly/bedwars/listeners/game/WorldListener.java index b3ba2c7..098554c 100644 --- a/src/main/java/rip/tilly/bedwars/listeners/game/WorldListener.java +++ b/src/main/java/rip/tilly/bedwars/listeners/game/WorldListener.java @@ -1,8 +1,6 @@ package rip.tilly.bedwars.listeners.game; -import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.Sound; +import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -72,6 +70,18 @@ public class WorldListener implements Listener { opposingTeam.destroyBed(); game.broadcastWithSound(playerTeam.getPlayerTeam().getChatColor() + player.getName() + " &ehas destroyed " + opposingTeam.getPlayerTeam().getChatColor() + opposingTeam.getPlayerTeam().getName() + "'s &ebed!", Sound.ENDERDRAGON_GROWL); game.broadcastSound(Sound.ENDERDRAGON_GROWL); + + block.getDrops().clear(); + Location location = block.getLocation(); + World world = location.getWorld(); + world.playEffect(location, Effect.CRIT, 1, 400); + world.playEffect(location, Effect.FLAME, 1, 400); + world.playEffect(location, Effect.MOBSPAWNER_FLAMES, 1, 400); + world.playEffect(location, Effect.PARTICLE_SMOKE, 1, 400); + world.playEffect(location, Effect.VILLAGER_THUNDERCLOUD, 1, 400); + world.playEffect(location, Effect.LARGE_SMOKE, 1, 400); + world.playEffect(location, Effect.SMOKE, 1, 400); + world.playEffect(location, Effect.PARTICLE_SMOKE, 1, 400); return; } diff --git a/src/main/java/rip/tilly/bedwars/managers/PlayerDataManager.java b/src/main/java/rip/tilly/bedwars/managers/PlayerDataManager.java index 9f09c57..1da6602 100644 --- a/src/main/java/rip/tilly/bedwars/managers/PlayerDataManager.java +++ b/src/main/java/rip/tilly/bedwars/managers/PlayerDataManager.java @@ -46,6 +46,7 @@ public class PlayerDataManager { playerData.setWins(document.getInteger("wins")); playerData.setLosses(document.getInteger("losses")); playerData.setGamesPlayed(document.getInteger("gamesPlayed")); + playerData.setBedsDestroyed(document.getInteger("bedsDestroyed")); } playerData.setLoaded(true); @@ -63,6 +64,7 @@ public class PlayerDataManager { document.put("wins", playerData.getWins()); document.put("losses", playerData.getLosses()); document.put("gamesPlayed", playerData.getGamesPlayed()); + document.put("bedsDestroyed", playerData.getBedsDestroyed()); this.plugin.getMongoManager().getPlayers().replaceOne(Filters.eq("uniqueId", playerData.getUniqueId().toString()), document, new UpdateOptions().upsert(true)); } diff --git a/src/main/java/rip/tilly/bedwars/playerdata/PlayerData.java b/src/main/java/rip/tilly/bedwars/playerdata/PlayerData.java index 1880de7..d017b21 100644 --- a/src/main/java/rip/tilly/bedwars/playerdata/PlayerData.java +++ b/src/main/java/rip/tilly/bedwars/playerdata/PlayerData.java @@ -34,9 +34,11 @@ public class PlayerData { private int wins; private int losses; private int gamesPlayed; + private int bedsDestroyed; private Player lastDamager; private int gameKills; + private int gameBedsDestroyed; public PlayerData(UUID uniqueId) { this.uniqueId = uniqueId; diff --git a/src/main/java/rip/tilly/bedwars/playerdata/PlayerTeam.java b/src/main/java/rip/tilly/bedwars/playerdata/PlayerTeam.java index 5d946cb..62d3598 100644 --- a/src/main/java/rip/tilly/bedwars/playerdata/PlayerTeam.java +++ b/src/main/java/rip/tilly/bedwars/playerdata/PlayerTeam.java @@ -9,31 +9,33 @@ import java.util.Arrays; @Getter public enum PlayerTeam { - WHITE("White", Color.WHITE, ChatColor.WHITE, (byte) 0), - SILVER("Silver", Color.SILVER, ChatColor.GRAY, (byte) 8), - GRAY("Gray", Color.GRAY, ChatColor.DARK_GRAY, (byte) 7), - BLACK("Black", Color.BLACK, ChatColor.BLACK, (byte) 15), - BLUE("Blue", Color.BLUE, ChatColor.BLUE, (byte) 11), - CYAN("Cyan", Color.TEAL, ChatColor.DARK_AQUA, (byte) 9), - AQUA("Aqua", Color.AQUA, ChatColor.AQUA, (byte) 3), - LIME("Lime", Color.LIME, ChatColor.GREEN, (byte) 5), - GREEN("Green", Color.GREEN, ChatColor.DARK_GREEN, (byte) 13), - YELLOW("Yellow", Color.YELLOW, ChatColor.YELLOW, (byte) 4), - ORANGE("Orange", Color.ORANGE, ChatColor.GOLD, (byte) 1), - RED("Red", Color.RED, ChatColor.RED, (byte) 14), - PURPLE("Purple", Color.PURPLE, ChatColor.DARK_PURPLE, (byte) 10), - PINK("Pink", Color.FUCHSIA, ChatColor.LIGHT_PURPLE, (byte) 6); + WHITE("White", Color.WHITE, ChatColor.WHITE, 0, "W"), + SILVER("Silver", Color.SILVER, ChatColor.GRAY, 8, "S"), + GRAY("Gray", Color.GRAY, ChatColor.DARK_GRAY, 7, "G"), + BLACK("Black", Color.BLACK, ChatColor.BLACK, 15, "B"), + BLUE("Blue", Color.BLUE, ChatColor.BLUE, 11, "B"), + CYAN("Cyan", Color.TEAL, ChatColor.DARK_AQUA, 9, "C"), + AQUA("Aqua", Color.AQUA, ChatColor.AQUA, 3, "A"), + LIME("Lime", Color.LIME, ChatColor.GREEN, 5, "L"), + GREEN("Green", Color.GREEN, ChatColor.DARK_GREEN, 13, "G"), + YELLOW("Yellow", Color.YELLOW, ChatColor.YELLOW, 4, "Y"), + ORANGE("Orange", Color.ORANGE, ChatColor.GOLD, 1, "O"), + RED("Red", Color.RED, ChatColor.RED, 14, "R"), + PURPLE("Purple", Color.PURPLE, ChatColor.DARK_PURPLE, 10, "P"), + PINK("Pink", Color.FUCHSIA, ChatColor.LIGHT_PURPLE, 6, "P"); private final String name; private final Color color; private final ChatColor chatColor; - private final byte colorData; + private final int colorData; + private final String smallName; - PlayerTeam(String name, Color color, ChatColor chatColor, byte colorData) { + PlayerTeam(String name, Color color, ChatColor chatColor, int colorData, String smallName) { this.name = name; this.color = color; this.chatColor = chatColor; this.colorData = colorData; + this.smallName = smallName; } public static PlayerTeam getFromName(String name) { diff --git a/src/main/java/rip/tilly/bedwars/providers/scoreboard/ScoreboardProvider.java b/src/main/java/rip/tilly/bedwars/providers/scoreboard/ScoreboardProvider.java index 6818622..f50d2cc 100644 --- a/src/main/java/rip/tilly/bedwars/providers/scoreboard/ScoreboardProvider.java +++ b/src/main/java/rip/tilly/bedwars/providers/scoreboard/ScoreboardProvider.java @@ -1,6 +1,8 @@ package rip.tilly.bedwars.providers.scoreboard; import org.bukkit.Bukkit; +import rip.tilly.bedwars.game.Game; +import rip.tilly.bedwars.game.GameTeam; import rip.tilly.bedwars.managers.party.Party; import rip.tilly.bedwars.managers.queue.QueueEntry; import rip.tilly.bedwars.playerdata.PlayerState; @@ -35,8 +37,9 @@ public class ScoreboardProvider implements AssembleAdapter { case SPAWN: case QUEUE: return this.spawnScoreboard(playerData); + case RESPAWNING: case PLAYING: - return null; + return this.playingScoreboard(playerData); case SPECTATING: return null; } @@ -103,8 +106,32 @@ public class ScoreboardProvider implements AssembleAdapter { private List playingScoreboard(PlayerData playerData) { List lines = new ArrayList(); + Game game = this.main.getGameManager().getGame(playerData); + GameTeam yourTeam = game.getTeamByName(playerData.getPlayerTeam().getName()); + GameTeam opposingTeam = game.getTeams().get(playerData.getTeamId() == 1 ? 0 : 1); lines.add(CC.scoreboardBar); + lines.add("&fDuration: &d" + game.getDuration()); + lines.add(" "); + if (yourTeam.isHasBed()) { + lines.add("&f[" + yourTeam.getPlayerTeam().getChatColor() + yourTeam.getPlayerTeam().getSmallName() + "&f] &a&l✓ &7(YOU)"); + } else if (yourTeam.getPlayingPlayers().size() > 0) { + lines.add("&f[" + yourTeam.getPlayerTeam().getChatColor() + yourTeam.getPlayerTeam().getSmallName() + "&f] &7" + yourTeam.getPlayingPlayers().size() + " &7(YOU)"); + } else { + lines.add("&f[" + yourTeam.getPlayerTeam().getChatColor() + yourTeam.getPlayerTeam().getSmallName() + "&f] &c&l✗ &7(YOU)"); + } + if (opposingTeam.isHasBed()) { + lines.add("&f[" + opposingTeam.getPlayerTeam().getChatColor() + opposingTeam.getPlayerTeam().getSmallName() + "&f] &a&l✓"); + } else if (opposingTeam.getPlayingPlayers().size() > 0) { + lines.add("&f[" + opposingTeam.getPlayerTeam().getChatColor() + opposingTeam.getPlayerTeam().getSmallName() + "&f] &7" + yourTeam.getPlayingPlayers().size()); + } else { + lines.add("&f[" + opposingTeam.getPlayerTeam().getChatColor() + opposingTeam.getPlayerTeam().getSmallName() + "&f] &c&l✗"); + } + lines.add(" "); + lines.add("&fKills: &d" + playerData.getGameKills()); + lines.add("&fBeds Destroyed: &d"); + lines.add(" "); + lines.add("&dtilly.rip"); lines.add(CC.scoreboardBar); return CC.translate(lines);