Interface Sign

All Superinterfaces:
BlockState, Colorable, Metadatable, PersistentDataHolder, PersistentDataViewHolder, TileState
All Known Subinterfaces:
HangingSign

@NullMarked public interface Sign extends TileState, Colorable
Represents a captured state of either a SignPost or a WallSign.
  • Method Details

    • lines

      @Deprecated(since="1.20") default List<Component> lines()
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and SignSide.lines().
      Gets all the lines of text currently on the Side.FRONT of this sign.
      Returns:
      List of components containing each line of text
    • line

      @Deprecated(since="1.20") default Component line(int index) throws IndexOutOfBoundsException
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and SignSide.line(int).
      Gets the line of text at the specified index on the Side.FRONT.

      For example, getLine(0) will return the first line of text.

      Parameters:
      index - Line number to get the text from, starting at 0
      Returns:
      Text on the given line
      Throws:
      IndexOutOfBoundsException - Thrown when the line does not exist
    • line

      @Deprecated(since="1.20") default void line(int index, Component line) throws IndexOutOfBoundsException
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and SignSide.line(int, Component).
      Sets the line of text at the specified index on the Side.FRONT.

      For example, setLine(0, "Line One") will set the first line of text to "Line One".

      Parameters:
      index - Line number to set the text at, starting from 0
      line - New text to set at the specified index
      Throws:
      IndexOutOfBoundsException - If the index is out of the range 0..3
    • getLines

      @Deprecated(since="1.20") default String[] getLines()
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and SignSide.lines().
      Gets all the lines of text currently on the Side.FRONT of this sign.
      Returns:
      Array of Strings containing each line of text
    • getLine

      @Deprecated(since="1.20") default String getLine(int index) throws IndexOutOfBoundsException
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and SignSide.line(int).
      Gets the line of text at the specified index.

      For example, getLine(0) will return the first line of text on the Side.FRONT.

      Parameters:
      index - Line number to get the text from, starting at 0
      Returns:
      Text on the given line
      Throws:
      IndexOutOfBoundsException - Thrown when the line does not exist
    • setLine

      @Deprecated(since="1.20") default void setLine(int index, String line) throws IndexOutOfBoundsException
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and SignSide.line(int, net.kyori.adventure.text.Component).
      Sets the line of text at the specified index.

      For example, setLine(0, "Line One") will set the first line of text to "Line One".

      Parameters:
      index - Line number to set the text at, starting from 0
      line - New text to set at the specified index
      Throws:
      IndexOutOfBoundsException - If the index is out of the range 0..3
    • isEditable

      @Deprecated(since="1.20.1") default boolean isEditable()
      Deprecated.
      use isWaxed() instead
      Marks whether this sign can be edited by players.
      Returns:
      if this sign is currently editable
    • setEditable

      @Deprecated(since="1.20.1") default void setEditable(boolean editable)
      Deprecated.
      use setWaxed(boolean) instead
      Marks whether this sign can be edited by players.
      Parameters:
      editable - if this sign is currently editable
    • isWaxed

      boolean isWaxed()
      Gets whether or not this sign has been waxed. If a sign has been waxed, it cannot be edited by a player.
      Returns:
      if this sign is waxed
    • setWaxed

      void setWaxed(boolean waxed)
      Sets whether or not this sign has been waxed. If a sign has been waxed, it cannot be edited by a player.
      Parameters:
      waxed - if this sign is waxed
    • isGlowingText

      @Deprecated(since="1.20") default boolean isGlowingText()
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and SignSide.isGlowingText().
      Gets whether this sign has glowing text. Only affects the Side.FRONT.
      Returns:
      if this sign has glowing text
    • setGlowingText

      @Deprecated(since="1.20") default void setGlowingText(boolean glowing)
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and SignSide.setGlowingText(boolean).
      Sets whether this sign has glowing text. Only affects the Side.FRONT.
      Parameters:
      glowing - if this sign has glowing text
    • getColor

      @Deprecated(since="1.20") default @Nullable DyeColor getColor()
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and Colorable.getColor().
      Gets the color of this object.
      This may be null to represent the default color of an object, if the object has a special default color (e.g Shulkers).
      Specified by:
      getColor in interface Colorable
      Returns:
      The DyeColor of this object.
    • setColor

      @Deprecated(since="1.20") default void setColor(DyeColor color)
      Deprecated.
      A sign may have multiple writable sides now. Use getSide(Side) and Colorable.setColor(org.bukkit.DyeColor).
      Sets the color of this object to the specified DyeColor.
      This may be null to represent the default color of an object, if the object has a special default color (e.g Shulkers).
      Specified by:
      setColor in interface Colorable
      Parameters:
      color - The color of the object, as a DyeColor.
    • getSide

      SignSide getSide(Side side)
      Return the side of the sign.
      Parameters:
      side - the side of the sign
      Returns:
      the selected side of the sign
    • getTargetSide

      SignSide getTargetSide(Player player)
      Gets the side of this sign the given player is currently standing on.
      Parameters:
      player - the player
      Returns:
      the side the player is standing on
    • getAllowedEditor

      @Nullable Player getAllowedEditor()
      Gets the player that is currently allowed to edit this sign.
      Edits from other players will be rejected if this value is not null.

      You should prefer getAllowedEditorUniqueId() if you don't need the player instance as this method will fetch the player from UUID.
      Returns:
      the player allowed to edit this sign, or null
    • getAllowedEditorUniqueId

      @Nullable UUID getAllowedEditorUniqueId()
      Gets the allowed editor's UUID.
      Edits from other players will be rejected if this value is not null.
      Returns:
      the allowed editor's UUID, or null
    • setAllowedEditorUniqueId

      void setAllowedEditorUniqueId(@Nullable UUID uuid)
      Sets the allowed editor's UUID.

      Note: the server sets the UUID back to null if the player can't interact with the sign (is either offline or outside the allowed interaction range).
      Parameters:
      uuid - the allowed editor's UUID
    • getInteractableSideFor

      default Side getInteractableSideFor(Entity entity)
      Compute the side facing the specified entity.
      Parameters:
      entity - the entity
      Returns:
      the side it is facing
    • getInteractableSideFor

      default Side getInteractableSideFor(Position position)
      Compute the side facing the specific position.
      Parameters:
      position - the position
      Returns:
      the side the position is facing
    • getInteractableSideFor

      Side getInteractableSideFor(double x, double z)
      Compute the side facing the specific x and z coordinates.
      Parameters:
      x - the x coord
      z - the z coord
      Returns:
      the side the coordinates are facing
    • isOperatorFeaturesAllowed

      boolean isOperatorFeaturesAllowed()
      Gets whether operator features are allowed on this sign. When enabled, supported click events in the root component of each line are executed when the relevant side is used.
      Returns:
      if operator features are allowed
    • setOperatorFeaturesAllowed

      void setOperatorFeaturesAllowed(boolean allowed)
      Sets whether operator features are allowed on this sign.
      Parameters:
      allowed - whether operator features are allowed