made Scoreboard more beautiful

This commit is contained in:
2025-12-23 22:33:32 +01:00
parent 2b0c7c1a9e
commit 9ec883d6ad
2 changed files with 26 additions and 6 deletions

View File

@@ -28,7 +28,7 @@ import java.util.UUID;
@Appliance.Flags(autoload = false)
public class Deathrun extends Appliance implements Event, Scorable {
private final EventScoreboardBuilder scoreboardBuilder = new EventScoreboardBuilder(this, 3, 2, 3);
private final EventScoreboardBuilder scoreboardBuilder = new EventScoreboardBuilder(this, 3, 2, 0);
private final double borderDistance = 100;
private final int borderVisibilityDistance = 8;
private long durationSeconds;

View File

@@ -8,6 +8,7 @@ import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import net.kyori.adventure.util.Ticks;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
@@ -92,18 +93,37 @@ public class EventScoreboardBuilder {
int[] display = indices.distinct().sorted().toArray();
for (int i = 0; i < display.length; i++) {
int idx = display[i];
List<String> lines = new ArrayList<>();
int prevIdx = -1;
int sepNo = 0;
for (int idx : display) {
if (prevIdx != -1 && idx > prevIdx + 1) {
lines.add(this.separatorLine(sepNo++));
}
EventScoreEntry entry = scoreList.get(idx);
if(!entry.playerUuid().equals(p.getUniqueId())) {
lines.add(this.formattedLine(idx, entry.name(), entry.score()));
} else {
lines.add(ChatColor.YELLOW + this.formattedLine(idx, entry.name(), entry.score()) + ChatColor.RESET);
}
String line = this.formattedLine(idx, entry.name(), entry.score());
prevIdx = idx;
}
objective.getScore(line).setScore(display.length - i);
int score = lines.size();
for (String line : lines) {
objective.getScore(line).setScore(score--);
}
return scoreboard;
}
private String separatorLine(int n) {
return ChatColor.GRAY + "..." + ChatColor.RESET + " ".repeat(n);
}
public void startAutomaticUpdates() {
this.scoreboardUpdateTaskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(