diff --git a/event/src/main/java/eu/mhsl/craftattack/spawn/event/appliances/deathrun/Deathrun.java b/event/src/main/java/eu/mhsl/craftattack/spawn/event/appliances/deathrun/Deathrun.java index 9ffba67..74d782e 100644 --- a/event/src/main/java/eu/mhsl/craftattack/spawn/event/appliances/deathrun/Deathrun.java +++ b/event/src/main/java/eu/mhsl/craftattack/spawn/event/appliances/deathrun/Deathrun.java @@ -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; diff --git a/event/src/main/java/eu/mhsl/craftattack/spawn/event/appliances/eventController/scoreboard/EventScoreboardBuilder.java b/event/src/main/java/eu/mhsl/craftattack/spawn/event/appliances/eventController/scoreboard/EventScoreboardBuilder.java index 9116d31..7cb2965 100644 --- a/event/src/main/java/eu/mhsl/craftattack/spawn/event/appliances/eventController/scoreboard/EventScoreboardBuilder.java +++ b/event/src/main/java/eu/mhsl/craftattack/spawn/event/appliances/eventController/scoreboard/EventScoreboardBuilder.java @@ -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 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( @@ -134,7 +154,7 @@ public class EventScoreboardBuilder { private String formattedLine(int place, String name, int score) { name = this.trimName(name); - return "%s. %s: %s".formatted(place+1, name, score); + return "%s. %s : %s".formatted(place+1, name, score); } public List getScores() {