package org.bukkit.block; import org.bukkit.DyeColor; import org.bukkit.block.sign.Side; import org.bukkit.block.sign.SignSide; import org.bukkit.material.Colorable; import org.jetbrains.annotations.NotNull; /** * Represents a captured state of either a SignPost or a WallSign. */ public interface Sign extends TileState, Colorable { /** * Gets all the lines of text currently on the {@link Side#FRONT} of this sign. * * @return Array of Strings containing each line of text * @deprecated A sign may have multiple writable sides now. Use {@link Sign#getSide(Side)} and {@link SignSide#getLines()}. */ @Deprecated @NotNull public String[] getLines(); /** * Gets the line of text at the specified index. *
* For example, getLine(0) will return the first line of text on the {@link Side#FRONT}. * * @param index Line number to get the text from, starting at 0 * @return Text on the given line * @throws IndexOutOfBoundsException Thrown when the line does not exist * @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#getLine(int)}. */ @Deprecated @NotNull public String getLine(int index) throws IndexOutOfBoundsException; /** * 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".
*
* @param index Line number to set the text at, starting from 0
* @param line New text to set at the specified index
* @throws IndexOutOfBoundsException If the index is out of the range 0..3
* @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#setLine(int, String)}.
*/
@Deprecated
public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException;
/**
* Marks whether this sign can be edited by players.
*
* This is a special value, which is not persisted. It should only be set if
* a placed sign is manipulated during the BlockPlaceEvent. Behaviour
* outside of this event is undefined.
*
* @return if this sign is currently editable
*/
public boolean isEditable();
/**
* Marks whether this sign can be edited by players.
*
* This is a special value, which is not persisted. It should only be set if
* a placed sign is manipulated during the BlockPlaceEvent. Behaviour
* outside of this event is undefined.
*
* @param editable if this sign is currently editable
*/
public void setEditable(boolean editable);
/**
* Gets whether this sign has glowing text. Only affects the {@link Side#FRONT}.
*
* @return if this sign has glowing text
* @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#isGlowingText()}.
*/
@Deprecated
public boolean isGlowingText();
/**
* Sets whether this sign has glowing text. Only affects the {@link Side#FRONT}.
*
* @param glowing if this sign has glowing text
* @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#setGlowingText(boolean)}.
*/
@Deprecated
public void setGlowingText(boolean glowing);
/**
* {@inheritDoc}
*
* @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#getColor()}.
*/
@NotNull
@Override
@Deprecated
public DyeColor getColor();
/**
* {@inheritDoc}
*
* @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#setColor(org.bukkit.DyeColor)}.
*/
@Override
@Deprecated
public void setColor(@NotNull DyeColor color);
/**
* Return the side of the sign.
*
* @param side the side of the sign
* @return the selected side of the sign
*/
@NotNull
public SignSide getSide(@NotNull Side side);
}