diff --git a/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreboardImpl.java b/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreboardImpl.java index f6f4a6ea0..5bf91b1d8 100644 --- a/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreboardImpl.java +++ b/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreboardImpl.java @@ -41,6 +41,9 @@ public class ScoreboardImpl extends RefreshableFeature implements me.neznamy.tab //display condition private Condition displayCondition; + /** Flag tracking whether this scoreboard was made using API or not */ + private final boolean api; + //lines of scoreboard private final List lines = new ArrayList<>(); @@ -60,7 +63,7 @@ public class ScoreboardImpl extends RefreshableFeature implements me.neznamy.tab * Scoreboard properties */ public ScoreboardImpl(@NonNull ScoreboardManagerImpl manager, @NonNull String name, @NonNull ScoreboardDefinition definition) { - this(manager, name, definition, false); + this(manager, name, definition, false, false); displayCondition = Condition.getCondition(definition.getDisplayCondition()); if (displayCondition != null) { manager.addUsedPlaceholder(TabConstants.Placeholder.condition(displayCondition.getName())); @@ -78,10 +81,13 @@ public ScoreboardImpl(@NonNull ScoreboardManagerImpl manager, @NonNull String na * Scoreboard properties * @param dynamicLinesOnly * Whether this scoreboard should only use dynamic lines or not + * @param api + * Whether this scoreboard was created using API or not */ - public ScoreboardImpl(@NonNull ScoreboardManagerImpl manager, @NonNull String name, @NonNull ScoreboardDefinition definition, boolean dynamicLinesOnly) { + public ScoreboardImpl(@NonNull ScoreboardManagerImpl manager, @NonNull String name, @NonNull ScoreboardDefinition definition, boolean dynamicLinesOnly, boolean api) { this.manager = manager; this.name = name; + this.api = api; title = definition.getTitle(); for (int i = 0; i< definition.getLines().size(); i++) { String line = definition.getLines().get(i); diff --git a/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreboardManagerImpl.java b/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreboardManagerImpl.java index aa0fe8416..d37042b62 100644 --- a/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreboardManagerImpl.java +++ b/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreboardManagerImpl.java @@ -71,7 +71,7 @@ public void load() { registeredScoreboards.put(scoreboardName, sb); TAB.getInstance().getFeatureManager().registerFeature(TabConstants.Feature.scoreboardLine(scoreboardName), sb); } - definedScoreboards = registeredScoreboards.values().toArray(new me.neznamy.tab.api.scoreboard.Scoreboard[0]); + definedScoreboards = registeredScoreboards.values().stream().filter(s -> !((ScoreboardImpl)s).isApi()).toArray(me.neznamy.tab.api.scoreboard.Scoreboard[]::new); for (TabPlayer p : TAB.getInstance().getOnlinePlayers()) { onJoin(p); } @@ -213,9 +213,8 @@ public void onQuit(@NotNull TabPlayer disconnectedPlayer) { @NotNull public me.neznamy.tab.api.scoreboard.Scoreboard createScoreboard(@NonNull String name, @NonNull String title, @NonNull List lines) { ensureActive(); - me.neznamy.tab.api.scoreboard.Scoreboard sb = new ScoreboardImpl(this, name, new ScoreboardDefinition(null, title, lines), true); + ScoreboardImpl sb = new ScoreboardImpl(this, name, new ScoreboardDefinition(null, title, lines), true, true); registeredScoreboards.put(name, sb); - definedScoreboards = registeredScoreboards.values().toArray(new me.neznamy.tab.api.scoreboard.Scoreboard[0]); return sb; }