    001    package net.minecraft.world;
    002
    003    public class NextTickListEntry implements Comparable
    004    {
    005        /** The id number for the next tick entry */
    006        private static long nextTickEntryID = 0L;
    007
    008        /** X position this tick is occuring at */
    009        public int xCoord;
    010
    011        /** Y position this tick is occuring at */
    012        public int yCoord;
    013
    014        /** Z position this tick is occuring at */
    015        public int zCoord;
    016
    017        /**
    018         * blockID of the scheduled tick (ensures when the tick occurs its still for this block)
    019         */
    020        public int blockID;
    021
    022        /** Time this tick is scheduled to occur at */
    023        public long scheduledTime;
    024        public int field_82754_f;
    025
    026        /** The id of the tick entry */
    027        private long tickEntryID;
    028
    029        public NextTickListEntry(int par1, int par2, int par3, int par4)
    030        {
    031            this.tickEntryID = (long)(nextTickEntryID++);
    032            this.xCoord = par1;
    033            this.yCoord = par2;
    034            this.zCoord = par3;
    035            this.blockID = par4;
    036        }
    037
    038        public boolean equals(Object par1Obj)
    039        {
    040            if (!(par1Obj instanceof NextTickListEntry))
    041            {
    042                return false;
    043            }
    044            else
    045            {
    046                NextTickListEntry var2 = (NextTickListEntry)par1Obj;
    047                return this.xCoord == var2.xCoord && this.yCoord == var2.yCoord && this.zCoord == var2.zCoord && this.blockID == var2.blockID;
    048            }
    049        }
    050
    051        public int hashCode()
    052        {
    053            return (this.xCoord * 1024 * 1024 + this.zCoord * 1024 + this.yCoord) * 256 + this.blockID;
    054        }
    055
    056        /**
    057         * Sets the scheduled time for this tick entry
    058         */
    059        public NextTickListEntry setScheduledTime(long par1)
    060        {
    061            this.scheduledTime = par1;
    062            return this;
    063        }
    064
    065        public void func_82753_a(int par1)
    066        {
    067            this.field_82754_f = par1;
    068        }
    069
    070        /**
    071         * Compares this tick entry to another tick entry for sorting purposes. Compared first based on the scheduled time
    072         * and second based on tickEntryID.
    073         */
    074        public int comparer(NextTickListEntry par1NextTickListEntry)
    075        {
    076            return this.scheduledTime < par1NextTickListEntry.scheduledTime ? -1 : (this.scheduledTime > par1NextTickListEntry.scheduledTime ? 1 : (this.field_82754_f != par1NextTickListEntry.field_82754_f ? this.field_82754_f - par1NextTickListEntry.field_82754_f : (this.tickEntryID < par1NextTickListEntry.tickEntryID ? -1 : (this.tickEntryID > par1NextTickListEntry.tickEntryID ? 1 : 0))));
    077        }
    078
    079        public int compareTo(Object par1Obj)
    080        {
    081            return this.comparer((NextTickListEntry)par1Obj);
    082        }
    083    }