001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005
006 public class TileEntitySign extends TileEntity
007 {
008 /** An array of four strings storing the lines of text on the sign. */
009 public String[] signText = new String[] {"", "", "", ""};
010
011 /**
012 * The index of the line currently being edited. Only used on client side, but defined on both. Note this is only
013 * really used when the > < are going to be visible.
014 */
015 public int lineBeingEdited = -1;
016 private boolean isEditable = true;
017
018 /**
019 * Writes a tile entity to NBT.
020 */
021 public void writeToNBT(NBTTagCompound par1NBTTagCompound)
022 {
023 super.writeToNBT(par1NBTTagCompound);
024 par1NBTTagCompound.setString("Text1", this.signText[0]);
025 par1NBTTagCompound.setString("Text2", this.signText[1]);
026 par1NBTTagCompound.setString("Text3", this.signText[2]);
027 par1NBTTagCompound.setString("Text4", this.signText[3]);
028 }
029
030 /**
031 * Reads a tile entity from NBT.
032 */
033 public void readFromNBT(NBTTagCompound par1NBTTagCompound)
034 {
035 this.isEditable = false;
036 super.readFromNBT(par1NBTTagCompound);
037
038 for (int var2 = 0; var2 < 4; ++var2)
039 {
040 this.signText[var2] = par1NBTTagCompound.getString("Text" + (var2 + 1));
041
042 if (this.signText[var2].length() > 15)
043 {
044 this.signText[var2] = this.signText[var2].substring(0, 15);
045 }
046 }
047 }
048
049 /**
050 * Overriden in a sign to provide the text.
051 */
052 public Packet getDescriptionPacket()
053 {
054 String[] var1 = new String[4];
055 System.arraycopy(this.signText, 0, var1, 0, 4);
056 return new Packet130UpdateSign(this.xCoord, this.yCoord, this.zCoord, var1);
057 }
058
059 public boolean isEditable()
060 {
061 return this.isEditable;
062 }
063
064 @SideOnly(Side.CLIENT)
065
066 /**
067 * Sets the sign's isEditable flag to the specified parameter.
068 */
069 public void setEditable(boolean par1)
070 {
071 this.isEditable = par1;
072 }
073 }