package org.bukkit.craftbukkit.block;
import net.minecraft.tileentity.TileEntitySign;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.craftbukkit.CraftWorld;
public class CraftSign extends CraftBlockState implements Sign
{
private final TileEntitySign sign;
private final String[] lines;
public CraftSign(final Block block)
{
super(block);
CraftWorld world = (CraftWorld) block.getWorld();
sign = (net.minecraft.tileentity.TileEntitySign) world.getTileEntityAt(getX(), getY(), getZ());
// Spigot start
if(sign == null)
{
lines = new String[]{"", "", "", ""};
return;
}
// Spigot end
lines = new String[sign.signText.length];
System.arraycopy(sign.signText, 0, lines, 0, lines.length);
}
public String[] getLines()
{
return lines;
}
public String getLine(int index) throws IndexOutOfBoundsException
{
return lines[index];
}
public void setLine(int index, String line) throws IndexOutOfBoundsException
{
lines[index] = line;
}
@Override
public boolean update(boolean force, boolean applyPhysics)
{
boolean result = super.update(force, applyPhysics);
if(result)
{
sign.signText = sanitizeLines(lines);
sign.markDirty();
}
return result;
}
public static String[] sanitizeLines(String[] lines)
{
String[] astring = new String[4];
for(int i = 0; i < 4; i++)
{
if(i < lines.length && lines[i] != null)
{
String str = lines[i];
if(str.length() > 15)
str = str.substring(0, 15);
astring[i] = str;
}
else
{
astring[i] = "";
}
}
return astring;
}
}