    001    package net.minecraft.nbt;
    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 NBTTagIntArray extends NBTBase
    009    {
    010        /** The array of saved integers */
    011        public int[] intArray;
    012
    013        public NBTTagIntArray(String par1Str)
    014        {
    015            super(par1Str);
    016        }
    017
    018        public NBTTagIntArray(String par1Str, int[] par2ArrayOfInteger)
    019        {
    020            super(par1Str);
    021            this.intArray = par2ArrayOfInteger;
    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.intArray.length);
    030
    031            for (int var2 = 0; var2 < this.intArray.length; ++var2)
    032            {
    033                par1DataOutput.writeInt(this.intArray[var2]);
    034            }
    035        }
    036
    037        /**
    038         * Read the actual data contents of the tag, implemented in NBT extension classes
    039         */
    040        void load(DataInput par1DataInput) throws IOException
    041        {
    042            int var2 = par1DataInput.readInt();
    043            this.intArray = new int[var2];
    044
    045            for (int var3 = 0; var3 < var2; ++var3)
    046            {
    047                this.intArray[var3] = par1DataInput.readInt();
    048            }
    049        }
    050
    051        /**
    052         * Gets the type byte for the tag.
    053         */
    054        public byte getId()
    055        {
    056            return (byte)11;
    057        }
    058
    059        public String toString()
    060        {
    061            return "[" + this.intArray.length + " bytes]";
    062        }
    063
    064        /**
    065         * Creates a clone of the tag.
    066         */
    067        public NBTBase copy()
    068        {
    069            int[] var1 = new int[this.intArray.length];
    070            System.arraycopy(this.intArray, 0, var1, 0, this.intArray.length);
    071            return new NBTTagIntArray(this.getName(), var1);
    072        }
    073
    074        public boolean equals(Object par1Obj)
    075        {
    076            if (!super.equals(par1Obj))
    077            {
    078                return false;
    079            }
    080            else
    081            {
    082                NBTTagIntArray var2 = (NBTTagIntArray)par1Obj;
    083                return this.intArray == null && var2.intArray == null || this.intArray != null && Arrays.equals(this.intArray, var2.intArray);
    084            }
    085        }
    086
    087        public int hashCode()
    088        {
    089            return super.hashCode() ^ Arrays.hashCode(this.intArray);
    090        }
    091    }