24package com.dreamfirestudios.dreamcore.DreamScoreboard;
26import net.kyori.adventure.text.Component;
27import org.bukkit.scoreboard.Criteria;
28import org.bukkit.scoreboard.DisplaySlot;
29import org.bukkit.scoreboard.Objective;
30import org.bukkit.scoreboard.Scoreboard;
32import java.util.LinkedHashMap;
34import java.util.TreeSet;
35import java.util.function.Supplier;
53 private Supplier<String> titleSupplier;
54 private Map<Integer, DreamScoreboardData> lines =
new LinkedHashMap<>();
62 Objective obj = scoreboard.getObjective(objectiveId);
64 obj = scoreboard.registerNewObjective(objectiveId, Criteria.DUMMY, Component.text(titleSupplier.get()));
66 obj.displayName(Component.text(titleSupplier.get()));
67 obj.setDisplaySlot(DisplaySlot.SIDEBAR);
71 for (Integer score :
new TreeSet<>(lines.keySet()).descendingSet()) {
72 lines.get(score).createLine(scoreboard, score, teamCount++);
81 Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
82 if (obj !=
null) obj.displayName(Component.text(titleSupplier.get()));
84 e.getValue().updateLine(scoreboard, e.getKey());
92 public void CreateLine(Scoreboard scoreboard, String objectiveId) {
113 private final Map<Integer, DreamScoreboardData> lines =
new LinkedHashMap<>();
122 lines.put(score, line);
133 f.titleSupplier = titleSupplier;
134 f.lines = this.lines;
Builder for constructing a scoreboard frame (title + lines).
DreamScoreboardLines build(Supplier< String > titleSupplier)
Finalizes the frame with a title supplier.
PulseScoreboardLinesBuilder addLine(Integer score, DreamScoreboardData line)
Adds a line at a particular score.
Represents a single “frame” of a sidebar scoreboard: a title plus a set of numbered lines.
void updateSidebar(Scoreboard scoreboard)
Updates the sidebar title and each line’s text for this frame.
static PulseScoreboardLinesBuilder builder()
Creates a builder for DreamScoreboardLines.
void UpdateLine(Scoreboard scoreboard)
Back-compat. Use updateSidebar(Scoreboard).
void createSidebar(Scoreboard scoreboard, String objectiveId)
Creates the sidebar objective and line teams/entries for this frame.
void CreateLine(Scoreboard scoreboard, String objectiveId)
Back-compat. Use createSidebar(Scoreboard, String).
record DreamScoreboardData(Function< Integer, String > text)
Holds a single scoreboard line's dynamic text function.