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 as everything is at packet level.

The project is on GitHub.

Version:
2.1.2
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()
      Get the scoreboard title.
      Returns:
      the scoreboard title
    • updateTitle

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

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

      public T getLine(int line)
      Get the specified scoreboard line.
      Parameters:
      line - the line number
      Returns:
      the line
      Throws:
      IndexOutOfBoundsException - if the line is higher than size
    • getScore

      public Optional<T> getScore(int line)
      Get 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:
      IndexOutOfBoundsException - if the line is higher than size
    • updateLine

      public void updateLine(int line, T text)
      Update a single scoreboard line.
      Parameters:
      line - the line number
      text - the new line text
      Throws:
      IndexOutOfBoundsException - if the line is higher than size() + 1
    • updateLine

      public void updateLine(int line, T text, T scoreText)
      Update 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
      text - the new line text
      scoreText - the new line's score, if null will not change current value
      Throws:
      IndexOutOfBoundsException - if the line is higher than size() + 1
    • removeLine

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

      public void updateLines(T... lines)
      Update 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 delete() was call before
    • updateLines

      public void updateLines(Collection<T> lines)
      Update 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 delete() was call before
    • updateLines

      public void updateLines(Collection<T> lines, Collection<T> scores)
      Update 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 set for how each line's score should be, if null will fall back to default (blank)
      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 delete() was call before
    • updateScore

      public void updateScore(int line, T text)
      Update 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
      text - the text to be displayed as the score. if null, no score will be displayed
      Throws:
      IllegalArgumentException - if the line number is not in range
      IllegalStateException - if delete() was call before
    • removeScore

      public void removeScore(int line)
      Reset 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 delete() was call before
    • updateScores

      public void updateScores(T... texts)
      Update 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:
      texts - 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 delete() was call before
    • updateScores

      public void updateScores(Collection<T> texts)
      Update 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:
      texts - 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 delete() was call before
    • getPlayer

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

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

      public boolean isDeleted()
      Get if the scoreboard is deleted.
      Returns:
      true if the scoreboard is deleted
    • customScoresSupported

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

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

      public void delete()
      Delete this FastBoard, and will remove the scoreboard for the associated player if he is online. After this, all uses of updateLines(T...) and updateTitle(T) will throw an IllegalStateException
      Throws:
      IllegalStateException - if this was already call before
    • 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 void sendObjectivePacket(FastBoardBase.ObjectiveMode mode) throws Throwable
      Throws:
      Throwable
    • sendDisplayObjectivePacket

      protected void sendDisplayObjectivePacket() 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