Class FastBoardBase<T>

java.lang.Object
fr.mrmicky.fastboard.FastBoardBase<T>
Direct Known Subclasses:
FastBoard, FastBoard

public abstract class FastBoardBase<T> extends Object
Lightweight packet-based scoreboard API for Bukkit plugins. It can be safely used asynchronously because everything is handled at the packet level.

The project is on GitHub.

Version:
2.2.0
Author:
MrMicky
  • Field Details

    • COLOR_CODES

      protected static final String[] COLOR_CODES
  • Constructor Details

    • FastBoardBase

      protected FastBoardBase(org.bukkit.entity.Player player)
      Creates a new FastBoard.
      Parameters:
      player - the owner of the scoreboard
  • Method Details

    • getTitle

      public T getTitle()
      Returns the scoreboard title.
      Returns:
      the scoreboard title
    • updateTitle

      public void updateTitle(T title)
      Updates the scoreboard title.
      Parameters:
      title - the new scoreboard title
      Throws:
      IllegalArgumentException - if the title is longer than 32 chars on 1.12 or lower
    • getLines

      public List<T> getLines()
      Returns the scoreboard lines.
      Returns:
      the scoreboard lines
    • getLine

      public T getLine(int line)
      Returns the specified scoreboard line.
      Parameters:
      line - the line number
      Returns:
      the line
      Throws:
      IllegalArgumentException - if the line number is out of range
    • getScore

      public Optional<T> getScore(int line)
      Returns how a specific line's score is displayed. On 1.20.2 or below, the value returned isn't used.
      Parameters:
      line - the line number
      Returns:
      the text of how the line is displayed
      Throws:
      IllegalArgumentException - if the line number is out of range
    • updateLine

      public void updateLine(int line, T score)
      Updates a single scoreboard line.
      Parameters:
      line - the line number
      score - the new line text
      Throws:
      IllegalArgumentException - if the line number is out of range
    • updateLine

      public void updateLine(int line, T score, T scoreText)
      Updates a single scoreboard line including how its score is displayed. The score will only be displayed on 1.20.3 and higher.
      Parameters:
      line - the line number
      score - the new line text
      scoreText - the new line score, or null to use the default blank score
      Throws:
      IllegalArgumentException - if the line number is out of range
    • removeLine

      public void removeLine(int line)
      Removes a scoreboard line.
      Parameters:
      line - the line number
    • updateLines

      public void updateLines(T... lines)
      Updates all the scoreboard lines.
      Parameters:
      lines - the new lines
      Throws:
      IllegalArgumentException - if one line is longer than 30 chars on 1.12 or lower
      IllegalStateException - if this FastBoard has already been deleted
    • updateLines

      public void updateLines(Collection<T> lines)
      Updates the lines of the scoreboard.
      Parameters:
      lines - the new scoreboard lines
      Throws:
      IllegalArgumentException - if one line is longer than 30 chars on 1.12 or lower
      IllegalStateException - if this FastBoard has already been deleted
    • updateLines

      public void updateLines(Collection<T> lines, Collection<T> scores)
      Updates the lines and how their score is displayed on the scoreboard. The scores will only be displayed for servers on 1.20.3 and higher.
      Parameters:
      lines - the new scoreboard lines
      scores - the custom score text for each line, or null to use the default blank scores
      Throws:
      IllegalArgumentException - if one line is longer than 30 chars on 1.12 or lower
      IllegalArgumentException - if lines and scores are not the same size
      IllegalStateException - if this FastBoard has already been deleted
    • updateScore

      public void updateScore(int line, T score)
      Updates how a specified line's score is displayed on the scoreboard. A null value will reset the displayed text back to default. The scores will only be displayed for servers on 1.20.3 and higher.
      Parameters:
      line - the line number
      score - the new line score, or null to use the default blank score
      Throws:
      IllegalArgumentException - if the line number is not in range
      IllegalStateException - if this FastBoard has already been deleted
    • removeScore

      public void removeScore(int line)
      Resets a line's score back to default (blank). The score will only be displayed for servers on 1.20.3 and higher.
      Parameters:
      line - the line number
      Throws:
      IllegalArgumentException - if the line number is not in range
      IllegalStateException - if this FastBoard has already been deleted
    • updateScores

      public void updateScores(T... scores)
      Updates how all lines' scores are displayed. A value of null will reset the displayed text back to default. The scores will only be displayed for servers on 1.20.3 and higher.
      Parameters:
      scores - the custom score texts for the lines, or null to use the default blank scores
      Throws:
      IllegalArgumentException - if the size of the texts does not match the current size of the board
      IllegalStateException - if this FastBoard has already been deleted
    • updateScores

      public void updateScores(Collection<T> scores)
      Updates how all lines' scores are displayed. A null value will reset the displayed text back to default (blank). Only available on 1.20.3+ servers.
      Parameters:
      scores - the set of texts to be displayed as the scores
      Throws:
      IllegalArgumentException - if the size of the texts does not match the current size of the board
      IllegalStateException - if this FastBoard has already been deleted
    • getPlayer

      public org.bukkit.entity.Player getPlayer()
      Returns the player who has the scoreboard.
      Returns:
      current player for this FastBoard
    • getId

      public String getId()
      Returns the scoreboard ID.
      Returns:
      the id
    • isDeleted

      public boolean isDeleted()
      Returns whether this FastBoard has been deleted.
      Returns:
      true if the scoreboard is deleted
    • customScoresSupported

      public boolean customScoresSupported()
      Returns whether the server supports custom scoreboard scores (1.20.3+ servers only).
      Returns:
      true if the server supports custom scores
    • size

      public int size()
      Returns the scoreboard size (the number of lines).
      Returns:
      the size
    • delete

      public void delete()
      Deletes this FastBoard and removes the scoreboard from the associated player if they are online. After deletion, all scoreboard update methods will throw an IllegalStateException.
    • sendLineChange

      protected abstract void sendLineChange(int score) throws Throwable
      Throws:
      Throwable
    • toMinecraftComponent

      protected abstract Object toMinecraftComponent(T value) throws Throwable
      Throws:
      Throwable
    • serializeLine

      protected abstract String serializeLine(T value)
    • emptyLine

      protected abstract T emptyLine()
    • getScoreByLine

      protected int getScoreByLine(int line)
    • getLineByScore

      protected T getLineByScore(int score)
    • getLineByScore

      protected T getLineByScore(List<T> lines, int score)
    • sendObjectivePacket

      protected Object sendObjectivePacket(FastBoardBase.ObjectiveMode mode) throws Throwable
      Throws:
      Throwable
    • sendDisplayObjectivePacket

      protected void sendDisplayObjectivePacket(Object objective) throws Throwable
      Throws:
      Throwable
    • sendScorePacket

      protected void sendScorePacket(int score, FastBoardBase.ScoreboardAction action) throws Throwable
      Throws:
      Throwable
    • sendTeamPacket

      protected void sendTeamPacket(int score, FastBoardBase.TeamMode mode) throws Throwable
      Throws:
      Throwable
    • sendTeamPacket

      protected void sendTeamPacket(int score, FastBoardBase.TeamMode mode, T prefix, T suffix) throws Throwable
      Throws:
      Throwable