#845: Add preliminary support for multi sided signs

By: Yannick Lamprecht <yannicklamprecht@live.de>
This commit is contained in:
Bukkit/Spigot
2023-05-25 07:21:30 +10:00
parent 2cc09c8437
commit 0ca2940380
6 changed files with 129 additions and 6 deletions

View File

@@ -1,31 +1,38 @@
package org.bukkit.block;
import org.bukkit.material.Colorable;
import org.bukkit.block.sign.Side;
import org.bukkit.block.sign.SignSide;
import org.jetbrains.annotations.NotNull;
/**
* Represents a captured state of either a SignPost or a WallSign.
*/
public interface Sign extends TileState, Colorable {
public interface Sign extends SignSide, TileState {
/**
* Gets all the lines of text currently on this sign.
* 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
@Override
public String[] getLines();
/**
* Gets the line of text at the specified index.
* <p>
* For example, getLine(0) will return the first line of text.
* 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
@Override
public String getLine(int index) throws IndexOutOfBoundsException;
/**
@@ -37,7 +44,10 @@ public interface Sign extends TileState, Colorable {
* @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
@Override
public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException;
/**
@@ -63,16 +73,31 @@ public interface Sign extends TileState, Colorable {
public void setEditable(boolean editable);
/**
* Gets whether this sign has glowing text.
* 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
@Override
public boolean isGlowingText();
/**
* Sets whether this sign has glowing text.
* 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
@Override
public void setGlowingText(boolean glowing);
/**
* 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);
}

View File

@@ -0,0 +1,9 @@
package org.bukkit.block.sign;
/**
* Represents the side of sign.
*/
public enum Side {
FRONT,
}

View File

@@ -0,0 +1,56 @@
package org.bukkit.block.sign;
import org.bukkit.material.Colorable;
import org.jetbrains.annotations.NotNull;
/**
* Represents a side of a sign.
*/
public interface SignSide extends Colorable {
/**
* Gets all the lines of text currently on this side of the sign.
*
* @return Array of Strings containing each line of text
*/
@NotNull
public String[] getLines();
/**
* Gets the line of text at the specified index on this side of the sign.
* <p>
* For example, getLine(0) will return the first line of text.
*
* @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
*/
@NotNull
public String getLine(int index) throws IndexOutOfBoundsException;
/**
* Sets the line of text at the specified index on this side of the sign.
* <p>
* 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
*/
public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException;
/**
* Gets whether this side of the sign has glowing text.
*
* @return if this side of the sign has glowing text
*/
public boolean isGlowingText();
/**
* Sets whether this side of the sign has glowing text.
*
* @param glowing if this side of the sign has glowing text
*/
public void setGlowingText(boolean glowing);
}

View File

@@ -0,0 +1,4 @@
/**
* Classes relevant to signs.
*/
package org.bukkit.block.sign;