[Scoreboard] Fix line score recalculate issue (#1632)
This commit is contained in:
1 parent
66cb30d235
commit
655bc176fa
2 files changed
+8
-8
No files matched your search
@@ -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;
|
||||
|
||||
@@ -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<Line> 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)
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user