From 655bc176fadb1b905bf5b0da6538b646e45567e9 Mon Sep 17 00:00:00 2001 From: NEZNAMY Date: Mon, 30 Mar 2026 19:43:59 +0200 Subject: [PATCH] [Scoreboard] Fix line score recalculate issue (#1632) --- .../tab/shared/features/scoreboard/ScoreRefresher.java | 7 ++++--- .../tab/shared/features/scoreboard/ScoreboardImpl.java | 9 ++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreRefresher.java b/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreRefresher.java index ecef2cbf8..56a8016e5 100644 --- a/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreRefresher.java +++ b/shared/src/main/java/me/neznamy/tab/shared/features/scoreboard/ScoreRefresher.java @@ -1,7 +1,8 @@ package me.neznamy.tab.shared.features.scoreboard; +import lombok.AllArgsConstructor; import lombok.NonNull; -import lombok.RequiredArgsConstructor; +import lombok.Setter; import me.neznamy.tab.shared.Property; import me.neznamy.tab.shared.chat.component.TabComponent; import me.neznamy.tab.shared.cpu.ThreadExecutor; @@ -16,7 +17,7 @@ import org.jetbrains.annotations.Nullable; /** * Feature refreshing score / NumberFormat in a scoreboard line for players. */ -@RequiredArgsConstructor +@AllArgsConstructor public class ScoreRefresher extends RefreshableFeature implements CustomThreaded { private static final StringToComponentCache cache = new StringToComponentCache("Scoreboard NumberFormat", 1000); @@ -25,7 +26,7 @@ public class ScoreRefresher extends RefreshableFeature implements CustomThreaded @NonNull private final ScoreboardLine line; /** Line number to use if nothing is configured (1-15) */ - private final int lineNumber; + @Setter private int lineNumber; /** Configured score for <1.20.3 (can be null if not configured) */ @Nullable private final String score; 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 56f24c348..3c5de04f2 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 @@ -204,16 +204,15 @@ public class ScoreboardImpl extends RefreshableFeature implements me.neznamy.tab * Player to recalculate scores for */ public void recalculateScores(@NonNull TabPlayer p) { - List linesReversed = new ArrayList<>(lines); - Collections.reverse(linesReversed); - int score = 0; - for (Line line : linesReversed) { + int score = 1; + for (Line line : lines) { Property pr = p.scoreboardData.lineProperties.get((ScoreboardLine) line); if (pr.getCurrentRawValue().isEmpty() || (!pr.getCurrentRawValue().isEmpty() && !pr.get().isEmpty())) { + ((ScoreboardLine)line).getScoreRefresher().setLineNumber(score++); p.getScoreboard().setScore( ScoreboardManagerImpl.OBJECTIVE_NAME, ((ScoreboardLine)line).getPlayerName(p), - ((ScoreboardLine)line).getScoreRefresher().getScore(p, score++), + ((ScoreboardLine)line).getScoreRefresher().getScore(p), null, // Makes no sense for TAB ((ScoreboardLine) line).getScoreRefresher().getNumberFormat(p) );