001package net.minecraft.nbt;
002
003import java.io.DataInput;
004import java.io.DataOutput;
005import java.io.IOException;
006
007public class NBTTagString extends NBTBase
008{
009    /** The string value for the tag (cannot be empty). */
010    public String data;
011
012    public NBTTagString(String par1Str)
013    {
014        super(par1Str);
015    }
016
017    public NBTTagString(String par1Str, String par2Str)
018    {
019        super(par1Str);
020        this.data = par2Str;
021
022        if (par2Str == null)
023        {
024            throw new IllegalArgumentException("Empty string not allowed");
025        }
026    }
027
028    /**
029     * Write the actual data contents of the tag, implemented in NBT extension classes
030     */
031    void write(DataOutput par1DataOutput) throws IOException
032    {
033        par1DataOutput.writeUTF(this.data);
034    }
035
036    /**
037     * Read the actual data contents of the tag, implemented in NBT extension classes
038     */
039    void load(DataInput par1DataInput) throws IOException
040    {
041        this.data = par1DataInput.readUTF();
042    }
043
044    /**
045     * Gets the type byte for the tag.
046     */
047    public byte getId()
048    {
049        return (byte)8;
050    }
051
052    public String toString()
053    {
054        return "" + this.data;
055    }
056
057    /**
058     * Creates a clone of the tag.
059     */
060    public NBTBase copy()
061    {
062        return new NBTTagString(this.getName(), this.data);
063    }
064
065    public boolean equals(Object par1Obj)
066    {
067        if (!super.equals(par1Obj))
068        {
069            return false;
070        }
071        else
072        {
073            NBTTagString nbttagstring = (NBTTagString)par1Obj;
074            return this.data == null && nbttagstring.data == null || this.data != null && this.data.equals(nbttagstring.data);
075        }
076    }
077
078    public int hashCode()
079    {
080        return super.hashCode() ^ this.data.hashCode();
081    }
082}