    001    package net.minecraft.nbt;
    002
    003    import java.io.DataInput;
    004    import java.io.DataOutput;
    005    import java.io.IOException;
    006
    007    public 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 var2 = (NBTTagString)par1Obj;
    074                return this.data == null && var2.data == null || this.data != null && this.data.equals(var2.data);
    075            }
    076        }
    077
    078        public int hashCode()
    079        {
    080            return super.hashCode() ^ this.data.hashCode();
    081        }
    082    }