diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index 3d1f7f2..5ff2815 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -2,7 +2,6 @@ import de.cubeside.nmsutils.NMSUtils; import de.fanta.challenges.challenges.AllItemsChallenge; -import de.fanta.challenges.challenges.MLGChallenge; import de.fanta.challenges.challenges.RandomDropsChallenge; import de.fanta.challenges.commands.CommandRegistration; import de.fanta.challenges.events.ChallengeEventStatusChangedEvent; @@ -16,7 +15,9 @@ import de.fanta.challenges.schedular.CancellableTask; import de.fanta.challenges.schedular.FoliaScheduler; import de.fanta.challenges.schedular.Scheduler; -import de.fanta.challenges.scoreboard.ScoreBoardManager; +import de.fanta.challenges.scoreboard.FoliaScoreBoardManager; +import de.fanta.challenges.scoreboard.BukkitScoreBoardManager; +import de.fanta.challenges.scoreboard.ScoreBoardMananger; import de.fanta.challenges.scoreboard.ScoreManager; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.Config; @@ -75,7 +76,7 @@ private Timer timer; private VanishUtils vanish; private BackpackGui backpack; - private ScoreBoardManager sbManager; + private ScoreBoardMananger sbManager; private ScoreManager scoreManager; private Player currentEditor; @@ -167,7 +168,12 @@ new EventRegistration(this).registerEvents(); this.backpack.loadInventoryFromConfig(); - this.sbManager = new ScoreBoardManager(this); + if (isFolia) { + this.sbManager = new FoliaScoreBoardManager(this); + } else { + this.sbManager = new BukkitScoreBoardManager(this); + } + getScheduler().runGlobalDelayed(() -> { plugin.setDayLightCircle(false); @@ -422,7 +428,7 @@ } } - public ScoreBoardManager getSBManager() { + public ScoreBoardMananger getSBManager() { return this.sbManager; } diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DeathrunChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DeathrunChallengeEvent.java index c03b25a..c7b1800 100644 --- a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DeathrunChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DeathrunChallengeEvent.java @@ -2,6 +2,7 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.events.TimerChangedEvent; +import de.fanta.challenges.schedular.CancellableTask; import de.fanta.challenges.scoreboard.ChallengePlayer; import de.fanta.challenges.scoreboard.Scorable; import de.fanta.challenges.scoreboard.ScoreManager; @@ -59,7 +60,7 @@ private final Map> currentBarrier = new HashMap<>(); private static final Material barrierBlock = Material.GLASS; - private int taskId = -1; + private CancellableTask task; private static final NamespacedKey UUIDKey = new NamespacedKey(Challenges.getPlugin(), "uuid_deathrun"); @@ -240,7 +241,9 @@ public void onPlayerJoin(PlayerJoinEvent e) { if (Objects.equals(Config.getString("event.type"), "deathrun")) { if (deadPlayer.contains(e.getPlayer().getUniqueId())) { - e.getPlayer().setScoreboard(plugin.getSBManager().getScoreboard()); + if (!plugin.isFolia()) { + e.getPlayer().setScoreboard(plugin.getSBManager().getScoreboard()); + } } } } @@ -313,11 +316,14 @@ } public void startUpdateTask() { - taskId = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, this::updateScoreAndBossBar, 1L, 1L); + task = plugin.getScheduler().runGlobalAtFixedRate(this::updateScoreAndBossBar, 1L, 1L); } public void stopUpdateTask() { - plugin.getServer().getScheduler().cancelTask(taskId); + if (task != null) { + task.cancel(); + task = null; + } } private void updateScoreAndBossBar() { diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java index 74f5168..9059812 100644 --- a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java @@ -2,6 +2,7 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.events.TimerChangedEvent; +import de.fanta.challenges.schedular.CancellableTask; import de.fanta.challenges.scoreboard.ChallengePlayer; import de.fanta.challenges.scoreboard.Scorable; import de.fanta.challenges.scoreboard.ScoreManager; @@ -89,7 +90,7 @@ private static final Map bossBarMap = new HashMap<>(); - private int taskId = -1; + private final HashMap playerTasks = new HashMap<>(); private static final Random random = new Random(); @@ -110,12 +111,11 @@ } } - startUpdateTask(); - for (Player pp : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { plugin.getScoreManager().join(new ChallengePlayer(pp.getUniqueId())); addArmorStand(pp); pp.getInventory().setItem(8, skipItem); + startUpdateTask(pp); } setRunning(true); @@ -123,6 +123,7 @@ stopUpdateTask(); for (Player pp : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { + removeArmorStand(pp); pp.setGameMode(GameMode.SPECTATOR); } @@ -180,6 +181,7 @@ if (isRunning()) { Player player = e.getPlayer(); removeArmorStand(player); + stopUpdateTask(e.getPlayer()); } } @@ -192,8 +194,10 @@ } plugin.getScoreManager().join(new ChallengePlayer(player.getUniqueId())); + addArmorStand(player); updateBossBar(); + startUpdateTask(player); if (itemByPlayerList.get(player.getUniqueId()) == null) { player.getInventory().setItem(8, skipItem); @@ -445,42 +449,51 @@ } } - public void startUpdateTask() { - taskId = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, this::tick, 1L, 1L); + public void startUpdateTask(Player player) { + playerTasks.put(player.getUniqueId(), plugin.getScheduler().runOnEntityAtFixedRate(player, () -> tick(player), 1L, 1L)); } public void stopUpdateTask() { - plugin.getServer().getScheduler().cancelTask(taskId); + for (CancellableTask cancellableTask : playerTasks.values()) { + if (cancellableTask != null) { + cancellableTask.cancel(); + } + } + playerTasks.clear(); } - private void tick() { - for (Player player : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { - if (player.getGameMode() == GameMode.SPECTATOR) { - continue; - } + public void stopUpdateTask(Player player) { + CancellableTask cancellableTask = playerTasks.get(player.getUniqueId()); + cancellableTask.cancel(); + playerTasks.remove(player.getUniqueId()); + } - Location location = player.getLocation(); - Block block = location.getBlock(); - if (block.getType() == Material.NETHER_PORTAL || block.getType() == Material.END_PORTAL || block.getType() == Material.END_GATEWAY) { - removeArmorStand(player); - } else { - if (player.getPassengers().isEmpty()) { - addArmorStand(player); - } - } + private void tick(Player player) { + if (player.getGameMode() == GameMode.SPECTATOR || plugin.getVanish().isVanish(player)) { + return; + } - if (!player.getPassengers().isEmpty()) { + Location location = player.getLocation(); + Block block = location.getBlock(); + if (block.getType() == Material.NETHER_PORTAL || block.getType() == Material.END_PORTAL || block.getType() == Material.END_GATEWAY) { + removeArmorStand(player); + } else { + if (player.getPassengers().isEmpty()) { + addArmorStand(player); + } + } + + if (!player.getPassengers().isEmpty()) { + for (Entity entity : player.getPassengers()) { + entity.setRotation(location.getYaw(), location.getPitch()); + } + if (location.getPitch() < -50) { for (Entity entity : player.getPassengers()) { - entity.setRotation(location.getYaw(), location.getPitch()); + player.hideEntity(plugin, entity); } - if (location.getPitch() < -50) { - for (Entity entity : player.getPassengers()) { - player.hideEntity(plugin, entity); - } - } else { - for (Entity entity : player.getPassengers()) { - player.showEntity(plugin, entity); - } + } else { + for (Entity entity : player.getPassengers()) { + player.showEntity(plugin, entity); } } } diff --git a/src/main/java/de/fanta/challenges/commands/NetherToggleCommand.java b/src/main/java/de/fanta/challenges/commands/NetherToggleCommand.java index a917347..905ede8 100644 --- a/src/main/java/de/fanta/challenges/commands/NetherToggleCommand.java +++ b/src/main/java/de/fanta/challenges/commands/NetherToggleCommand.java @@ -36,25 +36,27 @@ Location spawn = Bukkit.getWorlds().get(1).getSpawnLocation(); World world = spawn.getWorld(); - for (int x = spawn.getBlockX() - 2; x <= spawn.getBlockX() + 2; x++) { - for (int z = spawn.getBlockZ() - 2; z <= spawn.getBlockZ() + 2; z++) { - for (int y = spawn.getBlockY(); y <= spawn.getBlockY() + 3; y++) { - world.getBlockAt(x, y, z).setType(Material.AIR); - world.getBlockAt(x, y, spawn.getBlockZ() + 3).setType(Material.SLIME_BLOCK); - world.getBlockAt(x, y, spawn.getBlockZ() - 3).setType(Material.SLIME_BLOCK); - world.getBlockAt(spawn.getBlockX() + 3, y, z).setType(Material.SLIME_BLOCK); - world.getBlockAt(spawn.getBlockX() - 3, y, z).setType(Material.SLIME_BLOCK); + plugin.getScheduler().runLocalDelayed(spawn, () -> { + for (int x = spawn.getBlockX() - 2; x <= spawn.getBlockX() + 2; x++) { + for (int z = spawn.getBlockZ() - 2; z <= spawn.getBlockZ() + 2; z++) { + for (int y = spawn.getBlockY(); y <= spawn.getBlockY() + 3; y++) { + world.getBlockAt(x, y, z).setType(Material.AIR); + world.getBlockAt(x, y, spawn.getBlockZ() + 3).setType(Material.SLIME_BLOCK); + world.getBlockAt(x, y, spawn.getBlockZ() - 3).setType(Material.SLIME_BLOCK); + world.getBlockAt(spawn.getBlockX() + 3, y, z).setType(Material.SLIME_BLOCK); + world.getBlockAt(spawn.getBlockX() - 3, y, z).setType(Material.SLIME_BLOCK); + } + world.getBlockAt(x, spawn.getBlockY(), z).setType(Material.SLIME_BLOCK); + world.getBlockAt(x, spawn.getBlockY() - 1, z).setType(Material.BEDROCK); + world.getBlockAt(x, spawn.getBlockY() + 4, z).setType(Material.SLIME_BLOCK); } - world.getBlockAt(x, spawn.getBlockY(), z).setType(Material.SLIME_BLOCK); - world.getBlockAt(x, spawn.getBlockY() - 1, z).setType(Material.BEDROCK); - world.getBlockAt(x, spawn.getBlockY() + 4, z).setType(Material.SLIME_BLOCK); } - } + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.teleportAsync(spawn.clone().add(0, 1, 0)); + } + }, 1L); - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.teleportAsync(spawn); - } ChatUtil.sendTitleToAll("Nether Challenge", "Nether-Modus aktiviert", ChatUtil.GREEN); } else { ChatUtil.sendErrorMessage(p, "Die Nether Challenge läuft bereits!"); diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java index 6e05e8e..8cf0548 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java @@ -58,10 +58,11 @@ } else if (plugin.getDifficulty() == Difficulty.HARD) { plugin.setDifficulty(Difficulty.PEACEFUL); ChatUtil.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Friedlich", ChatUtil.GREEN); + Config.setValue("editsettings", true); + ChatUtil.sendWarningMessage(plugin.getCurrentEditor(), "Diese Challenge wird nicht mehr als Speed Run gezählt, da die Difficulty auf Friedlich gesetzt wurde."); } else if (plugin.getDifficulty() == Difficulty.PEACEFUL) { plugin.setDifficulty(Difficulty.EASY); ChatUtil.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Leicht", ChatUtil.BLUE); - Config.setValue("editsettings", true); } } case KEEP_INVENTORY_INDEX -> { @@ -71,8 +72,9 @@ } else { plugin.setKeepInventory(true); ChatUtil.sendTitleToAll("Server Einstellungen", "Keep Inventory aktiviert", ChatUtil.GREEN); + Config.setValue("editsettings", true); + ChatUtil.sendWarningMessage(plugin.getCurrentEditor(), "Diese Challenge wird nicht mehr als Speed Run gezählt, da du KeepInventory aktiviert hast."); } - Config.setValue("editsettings", true); } case NATURAL_REGENERATION_INDEX -> { if (plugin.getNaturalRegeneration()) { @@ -114,11 +116,11 @@ case PVP_INDEX -> { if (plugin.getPvP()) { plugin.setPvP(false); - Config.setValue("pvp", false); + Config.setValue("pvp", false, false); ChatUtil.sendTitleToAll("Server Einstellungen", "PVP deaktiviert", ChatUtil.RED); } else { plugin.setPvP(true); - Config.setValue("pvp", true); + Config.setValue("pvp", true, false); ChatUtil.sendTitleToAll("Server Einstellungen", "PVP aktiviert", ChatUtil.GREEN); } } diff --git a/src/main/java/de/fanta/challenges/scoreboard/BukkitScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/BukkitScoreBoardManager.java new file mode 100644 index 0000000..a63ecd3 --- /dev/null +++ b/src/main/java/de/fanta/challenges/scoreboard/BukkitScoreBoardManager.java @@ -0,0 +1,174 @@ +package de.fanta.challenges.scoreboard; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.ServerType; +import de.fanta.challenges.teams.ChallengeTeam; +import de.fanta.challenges.teams.TeamUtils; +import de.fanta.challenges.utils.Config; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.DisplaySlot; +import org.bukkit.scoreboard.Objective; +import org.bukkit.scoreboard.RenderType; +import org.bukkit.scoreboard.Score; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.Team; + +public class BukkitScoreBoardManager implements ScoreBoardMananger{ + + private final Challenges plugin; + private Scoreboard scoreboard; + private Team team; + + private Objective event; + private Objective tabHP; + + public BukkitScoreBoardManager(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public void initScoreboard() { // only possible after first world has loaded + this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); + this.team = scoreboard.registerNewTeam("Player"); + + this.team.setColor(ChatColor.GREEN); + + updateTabHP(); + } + + @Override + public void setScoreboardtoPlayer(Player p) { + if (this.scoreboard == null) { + if (plugin.getServerType() != ServerType.ADVENTURE) { + initScoreboard(); + } + } + + team.addEntry(p.getName()); + + p.setScoreboard(scoreboard); + } + + @Override + public void setScoreboardtoTeam(ChallengeTeam challengeTeam) { + if (this.scoreboard == null) { + if (plugin.getServerType() != ServerType.ADVENTURE) { + initScoreboard(); + } + } + + team.addEntry(challengeTeam.getChatColor() + challengeTeam.getName()); + } + + @Override + public void removeScoreboard(Player p) { + if (team != null) { + if (plugin.getServerType() != ServerType.ADVENTURE) { + team.removeEntry(p.getName()); + p.setScoreboard(scoreboard); + } + } + } + + @Override + public void removeAllFromScoreboard() { + for (String s : team.getEntries()) { + team.removeEntry(s); + } + } + + @Override + public int countScoreboardPlayers() { + return team.getEntries().size(); + } + + @Override + public void updateTabHP() { + if (plugin.getServerType() == ServerType.ADVENTURE) { + return; + } + if (Config.getBoolean("tabhp")) { + if (this.tabHP == null) { + tabHP = scoreboard.registerNewObjective("hp", "health", "§6Challenges"); + } + tabHP.setDisplaySlot(DisplaySlot.PLAYER_LIST); + tabHP.setDisplayName("§cHP"); + tabHP.setRenderType(RenderType.HEARTS); + + for (String entry : team.getEntries()) { + Player player = Bukkit.getPlayer(entry); + if (player != null && !plugin.getVanish().isVanish(player)) { + tabHP.getScore(entry).setScore((int) player.getHealth()); + } + } + + } else { + if (tabHP != null) { + tabHP.unregister(); + tabHP = null; + } + } + } + + @Override + public void updateEventScoreboard() { + if (plugin.getServerType() == ServerType.ADVENTURE) { + return; + } + if (Config.getBoolean("event.enabled")) { + if (!Config.getBoolean("event.teams")) { + this.team.setColor(ChatColor.BLUE); + this.team.setDisplayName("Event"); + + if (this.event == null) { + event = this.scoreboard.registerNewObjective("event", "event", "§6Challenges"); + } + event.setDisplaySlot(DisplaySlot.SIDEBAR); + event.setDisplayName(team.getColor() + team.getPrefix() + team.getDisplayName()); + event.setRenderType(RenderType.INTEGER); + + for (String entry : team.getEntries()) { + if (!event.getScore(entry).isScoreSet()) { + event.getScore(entry).setScore(0); + } + } + } else { + this.team.setColor(ChatColor.BLUE); + this.team.setDisplayName("Team Event"); + + event = TeamUtils.getTeamscoreboardObjective(); + + event.setDisplaySlot(DisplaySlot.SIDEBAR); + event.setDisplayName(team.getColor() + team.getPrefix() + team.getDisplayName()); + event.setRenderType(RenderType.INTEGER); + } + + + } else { + if (event != null) { + event.unregister(); + event = null; + } + this.team.setColor(ChatColor.GREEN); + this.team.setDisplayName("Player"); + } + } + + @Override + public void updateEventScore(Scorable s) { + if (plugin.getServerType() == ServerType.ADVENTURE) { + return; + } + if (this.event != null) { + Score score = event.getScore(s.getIdentifier()); + score.setScore(plugin.getScoreManager().getScore(s)); + } + } + + @Override + public Scoreboard getScoreboard() { + return scoreboard; + } +} diff --git a/src/main/java/de/fanta/challenges/scoreboard/FoliaScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/FoliaScoreBoardManager.java new file mode 100644 index 0000000..572f109 --- /dev/null +++ b/src/main/java/de/fanta/challenges/scoreboard/FoliaScoreBoardManager.java @@ -0,0 +1,65 @@ +package de.fanta.challenges.scoreboard; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.teams.ChallengeTeam; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.Scoreboard; + +public class FoliaScoreBoardManager implements ScoreBoardMananger{ + + private final Challenges plugin; + + public FoliaScoreBoardManager(Challenges plugin) { + this.plugin = plugin; + } + + @Override + public void initScoreboard() { // only possible after first world has loaded + updateTabHP(); + } + + @Override + public void setScoreboardtoPlayer(Player p) { + + } + + @Override + public void setScoreboardtoTeam(ChallengeTeam challengeTeam) { + + } + + @Override + public void removeScoreboard(Player p) { + + } + + @Override + public void removeAllFromScoreboard() { + + } + + @Override + public int countScoreboardPlayers() { + return 0; + } + + @Override + public void updateTabHP() { + + } + + @Override + public void updateEventScoreboard() { + + } + + @Override + public void updateEventScore(Scorable s) { + + } + + @Override + public Scoreboard getScoreboard() { + return null; + } +} diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java deleted file mode 100644 index a9a91a5..0000000 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardManager.java +++ /dev/null @@ -1,164 +0,0 @@ -package de.fanta.challenges.scoreboard; - -import de.fanta.challenges.Challenges; -import de.fanta.challenges.ServerType; -import de.fanta.challenges.teams.ChallengeTeam; -import de.fanta.challenges.teams.TeamUtils; -import de.fanta.challenges.utils.Config; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; -import org.bukkit.scoreboard.DisplaySlot; -import org.bukkit.scoreboard.Objective; -import org.bukkit.scoreboard.RenderType; -import org.bukkit.scoreboard.Score; -import org.bukkit.scoreboard.Scoreboard; -import org.bukkit.scoreboard.Team; - -public class ScoreBoardManager { - - private final Challenges plugin; - private Scoreboard scoreboard; - private Team team; - - private Objective event; - private Objective tabHP; - - public ScoreBoardManager(Challenges plugin) { - this.plugin = plugin; - } - - public void initScoreboard() { // only possible after first world has loaded - this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); - this.team = scoreboard.registerNewTeam("Player"); - - this.team.setColor(ChatColor.GREEN); - - updateTabHP(); - } - - public void setScoreboardtoPlayer(Player p) { - if (this.scoreboard == null) { - if (plugin.getServerType() != ServerType.ADVENTURE) { - initScoreboard(); - } - } - - team.addEntry(p.getName()); - - p.setScoreboard(scoreboard); - } - - public void setScoreboardtoTeam(ChallengeTeam challengeTeam) { - if (this.scoreboard == null) { - if (plugin.getServerType() != ServerType.ADVENTURE) { - initScoreboard(); - } - } - - team.addEntry(challengeTeam.getChatColor() + challengeTeam.getName()); - } - - public void removeScoreboard(Player p) { - if (team != null) { - if (plugin.getServerType() != ServerType.ADVENTURE) { - team.removeEntry(p.getName()); - p.setScoreboard(scoreboard); - } - } - } - - public void removeAllFromScoreboard() { - for (String s : team.getEntries()) { - team.removeEntry(s); - } - } - - public int countScoreboardPlayers() { - return team.getEntries().size(); - } - - public void updateTabHP() { - if (plugin.getServerType() == ServerType.ADVENTURE) { - return; - } - if (Config.getBoolean("tabhp")) { - if (this.tabHP == null) { - tabHP = scoreboard.registerNewObjective("hp", "health", "§6Challenges"); - } - tabHP.setDisplaySlot(DisplaySlot.PLAYER_LIST); - tabHP.setDisplayName("§cHP"); - tabHP.setRenderType(RenderType.HEARTS); - - for (String entry : team.getEntries()) { - Player player = Bukkit.getPlayer(entry); - if (player != null && !plugin.getVanish().isVanish(player)) { - tabHP.getScore(entry).setScore((int) player.getHealth()); - } - } - - } else { - if (tabHP != null) { - tabHP.unregister(); - tabHP = null; - } - } - } - - public void updateEventScoreboard() { - if (plugin.getServerType() == ServerType.ADVENTURE) { - return; - } - if (Config.getBoolean("event.enabled")) { - if (!Config.getBoolean("event.teams")) { - this.team.setColor(ChatColor.BLUE); - this.team.setDisplayName("Event"); - - if (this.event == null) { - event = this.scoreboard.registerNewObjective("event", "event", "§6Challenges"); - } - event.setDisplaySlot(DisplaySlot.SIDEBAR); - event.setDisplayName(team.getColor() + team.getPrefix() + team.getDisplayName()); - event.setRenderType(RenderType.INTEGER); - - for (String entry : team.getEntries()) { - if (!event.getScore(entry).isScoreSet()) { - event.getScore(entry).setScore(0); - } - } - } else { - this.team.setColor(ChatColor.BLUE); - this.team.setDisplayName("Team Event"); - - event = TeamUtils.getTeamscoreboardObjective(); - - event.setDisplaySlot(DisplaySlot.SIDEBAR); - event.setDisplayName(team.getColor() + team.getPrefix() + team.getDisplayName()); - event.setRenderType(RenderType.INTEGER); - } - - - } else { - if (event != null) { - event.unregister(); - event = null; - } - this.team.setColor(ChatColor.GREEN); - this.team.setDisplayName("Player"); - } - } - - void updateEventScore(Scorable s) { - if (plugin.getServerType() == ServerType.ADVENTURE) { - return; - } - if (this.event != null) { - Score score = event.getScore(s.getIdentifier()); - score.setScore(plugin.getScoreManager().getScore(s)); - } - } - - public Scoreboard getScoreboard() { - return scoreboard; - } -} diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardMananger.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardMananger.java new file mode 100644 index 0000000..c67882a --- /dev/null +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreBoardMananger.java @@ -0,0 +1,19 @@ +package de.fanta.challenges.scoreboard; + +import de.fanta.challenges.teams.ChallengeTeam; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.Scoreboard; + +public interface ScoreBoardMananger { + + void initScoreboard(); + void setScoreboardtoPlayer(Player p); + void setScoreboardtoTeam(ChallengeTeam challengeTeam); + void removeScoreboard(Player p); + void removeAllFromScoreboard(); + int countScoreboardPlayers(); + void updateTabHP(); + void updateEventScoreboard(); + void updateEventScore(Scorable s); + Scoreboard getScoreboard(); +}