From 65816923215af84754256035211c783d0b6c34bc Mon Sep 17 00:00:00 2001 From: ItzKatze <136186750+ItzKatze@users.noreply.github.com> Date: Fri, 24 Oct 2025 13:52:05 +0200 Subject: [PATCH 1/2] feat: chain mode now supports team objectives --- .../forcebattle/game/ObjectiveManager.java | 133 +++++++++++++++--- .../net/fameless/forcebattle/game/Team.java | 11 ++ .../forcebattle/player/BattlePlayer.java | 3 + 3 files changed, 127 insertions(+), 20 deletions(-) diff --git a/src/main/java/net/fameless/forcebattle/game/ObjectiveManager.java b/src/main/java/net/fameless/forcebattle/game/ObjectiveManager.java index d7e1b63..6f83ef6 100644 --- a/src/main/java/net/fameless/forcebattle/game/ObjectiveManager.java +++ b/src/main/java/net/fameless/forcebattle/game/ObjectiveManager.java @@ -32,8 +32,21 @@ public class ObjectiveManager { private final List chainList = new ArrayList<>(); + private final List teamChainList = new ArrayList<>(); public Objective getNewObjective(Team team) { + if (SettingsManager.isEnabled(SettingsManager.Setting.CHAIN_MODE)) { + int progress = team.getChainProgress(); + String objective; + try { + objective = getTeamChainList().get(progress); + } catch (IndexOutOfBoundsException e) { + progress = 0; + objective = getTeamChainList().get(progress); + } + return new Objective(BukkitUtil.getBattleType(objective), objective); + } + List players = team.getPlayers(); if (players.isEmpty()) return null; @@ -102,7 +115,7 @@ private Objective generateObjective(BattleType battleType, BattlePlayer battlePl battlePlayer.sendMessage(Caption.of( "error.no_objective_available", TagResolver.resolver("type", Tag.inserting(Component.text(battleType.name()))) )); - if (team != null) { + if (team != null && SettingsManager.isEnabled(SettingsManager.Setting.EXTRA_TEAM_OBJECTIVE)) { return getNewObjective(team); } else { return getNewObjective(battlePlayer); @@ -305,37 +318,117 @@ public List getChainList() { return chainList; } + public List getTeamChainList() { + if (teamChainList.isEmpty()) { + updateTeamChainList(); + } + return teamChainList; + } + public void updateChainList() { chainList.clear(); - if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_ITEM)) - getAvailableItems().forEach(m -> chainList.add(m.name())); - if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_MOB)) - getAvailableMobs().forEach(e -> chainList.add(e.name())); + for (BattleType type : BattleType.values()) { + SettingsManager.SettingState state = type.getSettingState(); - if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_BIOME)) { - if (SettingsManager.isEnabled(SettingsManager.Setting.SIMPLIFIED_OBJECTIVES)) { - getAvailableBiomesSimplified().forEach(b -> chainList.add(b.getName())); - } else { - getAvailableBiomes().forEach(b -> chainList.add(b.name())); + if (state != SettingsManager.SettingState.PLAYER && state != SettingsManager.SettingState.BOTH) continue; + + switch (type) { + case BattleType.FORCE_ITEM -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_ITEM)) { + getAvailableItems().forEach(m -> chainList.add(m.name())); + } + } + case BattleType.FORCE_MOB -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_MOB)) { + getAvailableMobs().forEach(e -> chainList.add(e.name())); + } + } + case BattleType.FORCE_ADVANCEMENT -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_ADVANCEMENT)) { + getAvailableAdvancements().forEach(a -> chainList.add(a.name())); + } + } + case BattleType.FORCE_HEIGHT -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_HEIGHT)) { + getAvailableHeights().forEach(h -> chainList.add(String.valueOf(h))); + } + } + case BattleType.FORCE_BIOME -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_BIOME)) { + if (SettingsManager.isEnabled(SettingsManager.Setting.SIMPLIFIED_OBJECTIVES)) { + getAvailableBiomesSimplified().forEach(b -> chainList.add(b.getName())); + } else { + getAvailableBiomes().forEach(b -> chainList.add(b.name())); + } + } + } + case BattleType.FORCE_STRUCTURE -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_STRUCTURE)) { + if (SettingsManager.isEnabled(SettingsManager.Setting.SIMPLIFIED_OBJECTIVES)) { + getAvailableStructuresSimplified().forEach(s -> chainList.add(s.name())); + } else { + getAvailableStructures().forEach(s -> chainList.add(s.name())); + } + } + } } } - if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_ADVANCEMENT)) - getAvailableAdvancements().forEach(a -> chainList.add(a.name())); + Collections.shuffle(chainList); + } - if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_HEIGHT)) - getAvailableHeights().forEach(h -> chainList.add(String.valueOf(h))); + public void updateTeamChainList() { + teamChainList.clear(); - if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_STRUCTURE)) { - if (SettingsManager.isEnabled(SettingsManager.Setting.SIMPLIFIED_OBJECTIVES)) { - getAvailableStructuresSimplified().forEach(s -> chainList.add(s.name())); - } else { - getAvailableStructures().forEach(s -> chainList.add(s.name())); + for (BattleType type : BattleType.values()) { + SettingsManager.SettingState state = type.getSettingState(); + + if (state != SettingsManager.SettingState.TEAM && state != SettingsManager.SettingState.BOTH) continue; + + switch (type) { + case BattleType.FORCE_ITEM -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_ITEM)) { + getAvailableItems().forEach(m -> teamChainList.add(m.name())); + } + } + case BattleType.FORCE_MOB -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_MOB)) { + getAvailableMobs().forEach(e -> teamChainList.add(e.name())); + } + } + case BattleType.FORCE_ADVANCEMENT -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_ADVANCEMENT)) { + getAvailableAdvancements().forEach(a -> teamChainList.add(a.name())); + } + } + case BattleType.FORCE_HEIGHT -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_HEIGHT)) { + getAvailableHeights().forEach(h -> teamChainList.add(String.valueOf(h))); + } + } + case BattleType.FORCE_BIOME -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_BIOME)) { + if (SettingsManager.isEnabled(SettingsManager.Setting.SIMPLIFIED_OBJECTIVES)) { + getAvailableBiomesSimplified().forEach(b -> teamChainList.add(b.getName())); + } else { + getAvailableBiomes().forEach(b -> teamChainList.add(b.name())); + } + } + } + case BattleType.FORCE_STRUCTURE -> { + if (SettingsManager.isEnabled(SettingsManager.Setting.FORCE_STRUCTURE)) { + if (SettingsManager.isEnabled(SettingsManager.Setting.SIMPLIFIED_OBJECTIVES)) { + getAvailableStructuresSimplified().forEach(s -> teamChainList.add(s.name())); + } else { + getAvailableStructures().forEach(s -> teamChainList.add(s.name())); + } + } + } } } - Collections.shuffle(chainList); + Collections.shuffle(teamChainList); } private final List ENDITEMS = List.of( diff --git a/src/main/java/net/fameless/forcebattle/game/Team.java b/src/main/java/net/fameless/forcebattle/game/Team.java index e3f45c9..43e6397 100644 --- a/src/main/java/net/fameless/forcebattle/game/Team.java +++ b/src/main/java/net/fameless/forcebattle/game/Team.java @@ -4,6 +4,7 @@ import lombok.Setter; import net.fameless.forcebattle.ForceBattle; import net.fameless.forcebattle.caption.Caption; +import net.fameless.forcebattle.configuration.SettingsManager; import net.fameless.forcebattle.event.ObjectiveUpdateEvent; import net.fameless.forcebattle.event.PlayerTeamJoinEvent; import net.fameless.forcebattle.event.PlayerTeamLeaveEvent; @@ -41,6 +42,9 @@ public class Team { @Setter private Objective objective; @Getter + @Setter + private int chainProgress = 0; + @Getter private JoinRequest lastJoinRequest = null; public Team(List players) { @@ -238,6 +242,13 @@ public void updateObjective(BattlePlayer finisher, boolean finishLast, boolean h )); } } + if (SettingsManager.isEnabled(SettingsManager.Setting.CHAIN_MODE)) { + increaseChainProgress(); + } + } + + public void increaseChainProgress() { + chainProgress++; } @Getter diff --git a/src/main/java/net/fameless/forcebattle/player/BattlePlayer.java b/src/main/java/net/fameless/forcebattle/player/BattlePlayer.java index 6a80d71..5596b80 100644 --- a/src/main/java/net/fameless/forcebattle/player/BattlePlayer.java +++ b/src/main/java/net/fameless/forcebattle/player/BattlePlayer.java @@ -278,6 +278,9 @@ public void reset(boolean newObjective) { this.points = 0; this.chainProgress = 0; + if (this.isInTeam()) { + this.getTeam().setChainProgress(0); + } Objective.finished().forEach(objective -> { if (objective.getWhoFinished().equals(this)) { objective.delete(); From 1e4099cf04a186daa36d8a79c5a9281e32949dfc Mon Sep 17 00:00:00 2001 From: ItzKatze <136186750+ItzKatze@users.noreply.github.com> Date: Fri, 24 Oct 2025 20:20:40 +0200 Subject: [PATCH 2/2] feat: added support for team only objective --- .../forcebattle/bossbar/BossbarManager.java | 48 ++++++++++++------- .../configuration/SettingsManager.java | 4 +- .../forcebattle/game/GameListener.java | 5 +- .../forcebattle/game/NametagManager.java | 33 ++++++++----- .../net/fameless/forcebattle/game/Team.java | 1 - .../game/tasks/AdvancementTask.java | 1 + .../forcebattle/game/tasks/BiomeTask.java | 1 + .../forcebattle/game/tasks/CoordsTask.java | 1 + .../forcebattle/game/tasks/HeightTask.java | 1 + .../forcebattle/game/tasks/ItemTask.java | 1 + .../forcebattle/game/tasks/StructureTask.java | 1 + .../forcebattle/player/BattlePlayer.java | 1 - .../scoreboard/ScoreboardManager.java | 9 ++-- .../forcebattle/util/EventRegistrar.java | 7 +-- 14 files changed, 69 insertions(+), 45 deletions(-) diff --git a/src/main/java/net/fameless/forcebattle/bossbar/BossbarManager.java b/src/main/java/net/fameless/forcebattle/bossbar/BossbarManager.java index 6474157..49e09c8 100644 --- a/src/main/java/net/fameless/forcebattle/bossbar/BossbarManager.java +++ b/src/main/java/net/fameless/forcebattle/bossbar/BossbarManager.java @@ -34,17 +34,25 @@ public void run() { continue; } - BossBar playerBar = BossBar.bossBar( - getPlayerObjectiveTitle(battlePlayer), - 1, - BossBar.Color.BLUE, - BossBar.Overlay.PROGRESS - ); - updateBossBar(battlePlayer, playerBar, lastPlayerBarMap); - if (!timerRunning) { + showWaitingBossbar(battlePlayer); hideBossBar(battlePlayer, lastTeamBarMap); continue; + } else { + hideBossBar(battlePlayer, lastPlayerBarMap); + } + + Objective playerObjective = battlePlayer.getObjective(); + if (playerObjective != null) { + BossBar playerBar = BossBar.bossBar( + getPlayerObjectiveTitle(battlePlayer), + 1, + BossBar.Color.BLUE, + BossBar.Overlay.PROGRESS + ); + updateBossBar(battlePlayer, playerBar, lastPlayerBarMap); + } else { + hideBossBar(battlePlayer, lastPlayerBarMap); } if (battlePlayer.isInTeam()) { @@ -71,23 +79,31 @@ public void run() { new Timer("forcebattle/bossbar").scheduleAtFixedRate(task, 150, 150); } + private static void showWaitingBossbar(BattlePlayer battlePlayer) { + BossBar waitingBar = BossBar.bossBar( + Caption.of("waiting"), + 1, + BossBar.Color.YELLOW, + BossBar.Overlay.PROGRESS + ); + updateBossBar(battlePlayer, waitingBar, lastPlayerBarMap); + } + private static void hideBossBars(BattlePlayer battlePlayer) { hideBossBar(battlePlayer, lastPlayerBarMap); hideBossBar(battlePlayer, lastTeamBarMap); } private static void hideBossBar(BattlePlayer battlePlayer, HashMap map) { - if (map.containsKey(battlePlayer)) { - battlePlayer.getAudience().hideBossBar(map.get(battlePlayer)); - map.remove(battlePlayer); + BossBar existing = map.remove(battlePlayer); + if (existing != null) { + battlePlayer.getAudience().hideBossBar(existing); } } private static @NotNull Component getPlayerObjectiveTitle(BattlePlayer battlePlayer) { - if (!ForceBattle.getTimer().isRunning()) return Caption.of("waiting"); - Objective playerObjective = battlePlayer.getObjective(); - if (playerObjective == null) return Caption.of("waiting"); + if (playerObjective == null) return Component.empty(); boolean isPlayerInTeam = battlePlayer.isInTeam(); int points = isPlayerInTeam ? battlePlayer.getTeam().getPoints() : battlePlayer.getPoints(); @@ -131,9 +147,7 @@ private static void hideBossBar(BattlePlayer battlePlayer, HashMap map) { - if (map.containsKey(battlePlayer)) { - battlePlayer.getAudience().hideBossBar(map.get(battlePlayer)); - } + hideBossBar(battlePlayer, map); battlePlayer.getAudience().showBossBar(bossBar); map.put(battlePlayer, bossBar); } diff --git a/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java b/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java index 2226f68..cbf7ed4 100644 --- a/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java +++ b/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java @@ -1,6 +1,7 @@ package net.fameless.forcebattle.configuration; import net.fameless.forcebattle.ForceBattle; +import net.fameless.forcebattle.game.Team; import net.fameless.forcebattle.gui.impl.SettingsGUI; import net.fameless.forcebattle.player.BattlePlayer; import net.fameless.forcebattle.util.BattleType; @@ -56,10 +57,11 @@ public static void applyMinimum() { } private static void updateSetting(Setting setting) { - if (setting == Setting.CHAIN_MODE || setting.name().startsWith("FORCE_")) { + if (setting == Setting.CHAIN_MODE) { ForceBattle.getObjectiveManager().updateChainList(); } BattlePlayer.BATTLE_PLAYERS.forEach(player -> player.updateObjective(false, false)); + Team.teams.forEach(team -> team.updateObjective(null, false, false)); } public static boolean isMultiState(Setting setting) { diff --git a/src/main/java/net/fameless/forcebattle/game/GameListener.java b/src/main/java/net/fameless/forcebattle/game/GameListener.java index 6f88c6a..72af389 100644 --- a/src/main/java/net/fameless/forcebattle/game/GameListener.java +++ b/src/main/java/net/fameless/forcebattle/game/GameListener.java @@ -75,9 +75,6 @@ public GameListener() { TaskManager.startAll(); } - //TODO does chain mode work with team objective? - //TODO support only team objective if not already possible - @EventHandler public void onPlayerLogin(AsyncPlayerPreLoginEvent event) { if (ForceBattle.getTimer().isRunning()) { @@ -205,6 +202,8 @@ public void onGameEnd(TimerEndEvent event) { for (BattlePlayer player : BattlePlayer.getOnlinePlayers()) { if (player.getPlayer() == null) return; + if (player.isInTeam()) player.getTeam().setObjective(null); + player.setCurrentObjective(null, false, false); player.getPlayer().teleport(Bukkit.getWorld("world").getSpawnLocation()); player.getPlayer().setHealth(20); player.getPlayer().setSaturation(20); diff --git a/src/main/java/net/fameless/forcebattle/game/NametagManager.java b/src/main/java/net/fameless/forcebattle/game/NametagManager.java index 3e37e66..3a1550b 100644 --- a/src/main/java/net/fameless/forcebattle/game/NametagManager.java +++ b/src/main/java/net/fameless/forcebattle/game/NametagManager.java @@ -45,17 +45,25 @@ private static void updateNametag(@NotNull BattlePlayer battlePlayer) { suffix.append(Caption.getAsLegacy("excluded")); } else if (!ForceBattle.getTimer().isRunning()) { suffix.append(Caption.getAsLegacy("waiting")); - } else { - var objective = targetPlayer.getObjective(); - String objectiveString; + } + + Objective objective = targetPlayer.getObjective(); + if (objective == null && targetPlayer.isInTeam()) { + objective = targetPlayer.getTeam().getObjective(); + } + if (objective != null) { + String objectiveString; if (BukkitUtil.convertObjective(BattleType.FORCE_ADVANCEMENT, objective.getObjectiveString()) instanceof FBAdvancement advancement) { objectiveString = advancement.name; } else { objectiveString = StringUtility.formatName(objective.getObjectiveString()); } - if (!SettingsManager.isEnabled(SettingsManager.Setting.HIDE_OBJECTIVES)) { + boolean hideObjectives = SettingsManager.isEnabled(SettingsManager.Setting.HIDE_OBJECTIVES); + boolean hidePoints = SettingsManager.isEnabled(SettingsManager.Setting.HIDE_POINTS); + + if (!hideObjectives) { suffix.append(" ") .append(ChatColor.GRAY) .append(objective.getBattleType().getPrefix()) @@ -65,23 +73,22 @@ private static void updateNametag(@NotNull BattlePlayer battlePlayer) { .append(objectiveString); } - if (!SettingsManager.isEnabled(SettingsManager.Setting.HIDE_OBJECTIVES) - && !SettingsManager.isEnabled(SettingsManager.Setting.HIDE_POINTS)) { + if (!hideObjectives && !hidePoints) { suffix.append(ChatColor.DARK_GRAY).append(" |"); } - if (!SettingsManager.isEnabled(SettingsManager.Setting.HIDE_POINTS)) { + if (!hidePoints) { suffix.append(" ").append(ChatColor.GRAY).append("Points") .append(ChatColor.DARK_GRAY).append(" » ") .append(ChatColor.BLUE).append(targetPlayer.getPoints()); } + } - var teamData = targetPlayer.getTeam(); - if (teamData != null) { - suffix.append(ChatColor.DARK_GRAY).append(" | ").append(ChatColor.GRAY) - .append("Team").append(ChatColor.DARK_GRAY).append(" » ") - .append(ChatColor.BLUE).append(teamData.getId()); - } + var teamData = targetPlayer.getTeam(); + if (teamData != null) { + suffix.append(ChatColor.DARK_GRAY).append(" | ").append(ChatColor.GRAY) + .append("Team").append(ChatColor.DARK_GRAY).append(" » ") + .append(ChatColor.BLUE).append(teamData.getId()); } team.setSuffix(suffix.toString()); diff --git a/src/main/java/net/fameless/forcebattle/game/Team.java b/src/main/java/net/fameless/forcebattle/game/Team.java index 43e6397..70565a0 100644 --- a/src/main/java/net/fameless/forcebattle/game/Team.java +++ b/src/main/java/net/fameless/forcebattle/game/Team.java @@ -226,7 +226,6 @@ public void updateObjective(BattlePlayer finisher, boolean finishLast, boolean h } Objective newObjective = ForceBattle.getObjectiveManager().getNewObjective(this); - if (newObjective == null) return; ObjectiveUpdateEvent updateEvent = new ObjectiveUpdateEvent(this, newObjective); Bukkit.getPluginManager().callEvent(updateEvent); diff --git a/src/main/java/net/fameless/forcebattle/game/tasks/AdvancementTask.java b/src/main/java/net/fameless/forcebattle/game/tasks/AdvancementTask.java index 2034d7f..bdd8536 100644 --- a/src/main/java/net/fameless/forcebattle/game/tasks/AdvancementTask.java +++ b/src/main/java/net/fameless/forcebattle/game/tasks/AdvancementTask.java @@ -41,6 +41,7 @@ public void runTick() { } private void checkPlayerObjective(BattlePlayer battlePlayer, Player player) { + if (battlePlayer.getObjective() == null) return; if (battlePlayer.getObjective().getBattleType() != BattleType.FORCE_ADVANCEMENT) return; String objective = battlePlayer.getObjective().getObjectiveString(); diff --git a/src/main/java/net/fameless/forcebattle/game/tasks/BiomeTask.java b/src/main/java/net/fameless/forcebattle/game/tasks/BiomeTask.java index 2a8f8d9..8bb1c7d 100644 --- a/src/main/java/net/fameless/forcebattle/game/tasks/BiomeTask.java +++ b/src/main/java/net/fameless/forcebattle/game/tasks/BiomeTask.java @@ -36,6 +36,7 @@ public void runTick() { } private void checkPlayerObjective(BattlePlayer battlePlayer, Biome currentBiome) { + if (battlePlayer.getObjective() == null) return; if (battlePlayer.getObjective().getBattleType() != BattleType.FORCE_BIOME) return; String objectiveString = battlePlayer.getObjective().getObjectiveString(); diff --git a/src/main/java/net/fameless/forcebattle/game/tasks/CoordsTask.java b/src/main/java/net/fameless/forcebattle/game/tasks/CoordsTask.java index 416f949..6273f46 100644 --- a/src/main/java/net/fameless/forcebattle/game/tasks/CoordsTask.java +++ b/src/main/java/net/fameless/forcebattle/game/tasks/CoordsTask.java @@ -36,6 +36,7 @@ public void runTick() { } private void checkPlayerObjective(BattlePlayer battlePlayer, Player player) { + if (battlePlayer.getObjective() == null) return; if (battlePlayer.getObjective().getBattleType() != BattleType.FORCE_COORDS) return; String objective = battlePlayer.getObjective().getObjectiveString(); diff --git a/src/main/java/net/fameless/forcebattle/game/tasks/HeightTask.java b/src/main/java/net/fameless/forcebattle/game/tasks/HeightTask.java index d4f7478..667cb49 100644 --- a/src/main/java/net/fameless/forcebattle/game/tasks/HeightTask.java +++ b/src/main/java/net/fameless/forcebattle/game/tasks/HeightTask.java @@ -33,6 +33,7 @@ public void runTick() { } private void checkPlayerObjective(BattlePlayer battlePlayer, Player player) { + if (battlePlayer.getObjective() == null) return; if (battlePlayer.getObjective().getBattleType() != BattleType.FORCE_HEIGHT) return; String objective = battlePlayer.getObjective().getObjectiveString(); diff --git a/src/main/java/net/fameless/forcebattle/game/tasks/ItemTask.java b/src/main/java/net/fameless/forcebattle/game/tasks/ItemTask.java index b1735bc..0e7ead0 100644 --- a/src/main/java/net/fameless/forcebattle/game/tasks/ItemTask.java +++ b/src/main/java/net/fameless/forcebattle/game/tasks/ItemTask.java @@ -33,6 +33,7 @@ public void runTick() { } private void checkPlayerObjective(BattlePlayer battlePlayer, Player player) { + if (battlePlayer.getObjective() == null) return; if (battlePlayer.getObjective().getBattleType() != BattleType.FORCE_ITEM) return; String objective = battlePlayer.getObjective().getObjectiveString(); diff --git a/src/main/java/net/fameless/forcebattle/game/tasks/StructureTask.java b/src/main/java/net/fameless/forcebattle/game/tasks/StructureTask.java index 8c84638..5283fb3 100644 --- a/src/main/java/net/fameless/forcebattle/game/tasks/StructureTask.java +++ b/src/main/java/net/fameless/forcebattle/game/tasks/StructureTask.java @@ -53,6 +53,7 @@ public void runTick() { } private void checkPlayerObjective(BattlePlayer battlePlayer, Player player, Registry registry) { + if (battlePlayer.getObjective() == null) return; if (battlePlayer.getObjective().getBattleType() != BattleType.FORCE_STRUCTURE) return; String objectiveString = battlePlayer.getObjective().getObjectiveString(); diff --git a/src/main/java/net/fameless/forcebattle/player/BattlePlayer.java b/src/main/java/net/fameless/forcebattle/player/BattlePlayer.java index 5596b80..d26dcf4 100644 --- a/src/main/java/net/fameless/forcebattle/player/BattlePlayer.java +++ b/src/main/java/net/fameless/forcebattle/player/BattlePlayer.java @@ -207,7 +207,6 @@ public void updateObjective(boolean finishLast, boolean hasBeenSkipped) { } Objective newObjective = ForceBattle.getObjectiveManager().getNewObjective(this); - if (newObjective == null) return; ObjectiveUpdateEvent updateEvent = new ObjectiveUpdateEvent(this, newObjective); Bukkit.getPluginManager().callEvent(updateEvent); diff --git a/src/main/java/net/fameless/forcebattle/scoreboard/ScoreboardManager.java b/src/main/java/net/fameless/forcebattle/scoreboard/ScoreboardManager.java index febf57a..b4463dc 100644 --- a/src/main/java/net/fameless/forcebattle/scoreboard/ScoreboardManager.java +++ b/src/main/java/net/fameless/forcebattle/scoreboard/ScoreboardManager.java @@ -27,12 +27,15 @@ public static void startUpdater() { } public static void updateAll() { + boolean timerRunning = ForceBattle.getTimer().isRunning(); + for (BattlePlayer battlePlayer : BattlePlayer.getOnlinePlayers()) { - boolean shouldHaveScoreboard = !battlePlayer.isExcluded() && ForceBattle.getTimer().isRunning(); + boolean shouldHaveScoreboard = !battlePlayer.isExcluded() && timerRunning; + boolean showScoreboard = SettingsManager.isEnabled(SettingsManager.Setting.SHOW_SCOREBOARD); - if (shouldHaveScoreboard && SettingsManager.isEnabled(SettingsManager.Setting.SHOW_SCOREBOARD)) { + if (shouldHaveScoreboard && showScoreboard) { updateScoreboard(battlePlayer); - } else if (SCOREBOARDS.containsKey(battlePlayer) && !SettingsManager.isEnabled(SettingsManager.Setting.SHOW_SCOREBOARD)) { + } else if (SCOREBOARDS.containsKey(battlePlayer)) { removeScoreboard(battlePlayer); } } diff --git a/src/main/java/net/fameless/forcebattle/util/EventRegistrar.java b/src/main/java/net/fameless/forcebattle/util/EventRegistrar.java index ad661b4..87b00f8 100644 --- a/src/main/java/net/fameless/forcebattle/util/EventRegistrar.java +++ b/src/main/java/net/fameless/forcebattle/util/EventRegistrar.java @@ -15,10 +15,7 @@ public static void registerAll(JavaPlugin plugin, String basePackage) { try { String path = basePackage.replace('.', '/'); URL resource = plugin.getClass().getClassLoader().getResource(path); - if (resource == null) { - plugin.getLogger().warning("No resource found for package: " + basePackage); - return; - } + if (resource == null) return; String jarPath = resource.getPath().substring(5, resource.getPath().indexOf("!")); try (JarFile jar = new JarFile(jarPath)) { @@ -35,7 +32,6 @@ public static void registerAll(JavaPlugin plugin, String basePackage) { if (Listener.class.isAssignableFrom(clazz)) { Listener listener = (Listener) clazz.getDeclaredConstructor().newInstance(); Bukkit.getPluginManager().registerEvents(listener, plugin); - plugin.getLogger().info("Registered listener: " + className); } } catch (Exception ignored) { } @@ -43,7 +39,6 @@ public static void registerAll(JavaPlugin plugin, String basePackage) { } } } catch (IOException e) { - plugin.getLogger().severe("Error while registering listeners: " + e.getMessage()); e.printStackTrace(); } }