001    package net.minecraft.src;
002    
003    import java.io.DataInput;
004    import java.io.DataOutput;
005    import java.io.IOException;
006    import java.util.Arrays;
007    
008    public class NBTTagByteArray extends NBTBase
009    {
010        /** The byte array stored in the tag. */
011        public byte[] byteArray;
012    
013        public NBTTagByteArray(String par1Str)
014        {
015            super(par1Str);
016        }
017    
018        public NBTTagByteArray(String par1Str, byte[] par2ArrayOfByte)
019        {
020            super(par1Str);
021            this.byteArray = par2ArrayOfByte;
022        }
023    
024        /**
025         * Write the actual data contents of the tag, implemented in NBT extension classes
026         */
027        void write(DataOutput par1DataOutput) throws IOException
028        {
029            par1DataOutput.writeInt(this.byteArray.length);
030            par1DataOutput.write(this.byteArray);
031        }
032    
033        /**
034         * Read the actual data contents of the tag, implemented in NBT extension classes
035         */
036        void load(DataInput par1DataInput) throws IOException
037        {
038            int var2 = par1DataInput.readInt();
039            this.byteArray = new byte[var2];
040            par1DataInput.readFully(this.byteArray);
041        }
042    
043        /**
044         * Gets the type byte for the tag.
045         */
046        public byte getId()
047        {
048            return (byte)7;
049        }
050    
051        public String toString()
052        {
053            return "[" + this.byteArray.length + " bytes]";
054        }
055    
056        /**
057         * Creates a clone of the tag.
058         */
059        public NBTBase copy()
060        {
061            byte[] var1 = new byte[this.byteArray.length];
062            System.arraycopy(this.byteArray, 0, var1, 0, this.byteArray.length);
063            return new NBTTagByteArray(this.getName(), var1);
064        }
065    
066        public boolean equals(Object par1Obj)
067        {
068            return super.equals(par1Obj) ? Arrays.equals(this.byteArray, ((NBTTagByteArray)par1Obj).byteArray) : false;
069        }
070    
071        public int hashCode()
072        {
073            return super.hashCode() ^ Arrays.hashCode(this.byteArray);
074        }
075    }