001    package net.minecraft.src;
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    
025        /** The id of the tick entry */
026        private long tickEntryID;
027    
028        public NextTickListEntry(int par1, int par2, int par3, int par4)
029        {
030            this.tickEntryID = (long)(nextTickEntryID++);
031            this.xCoord = par1;
032            this.yCoord = par2;
033            this.zCoord = par3;
034            this.blockID = par4;
035        }
036    
037        public boolean equals(Object par1Obj)
038        {
039            if (!(par1Obj instanceof NextTickListEntry))
040            {
041                return false;
042            }
043            else
044            {
045                NextTickListEntry var2 = (NextTickListEntry)par1Obj;
046                return this.xCoord == var2.xCoord && this.yCoord == var2.yCoord && this.zCoord == var2.zCoord && this.blockID == var2.blockID;
047            }
048        }
049    
050        public int hashCode()
051        {
052            return (this.xCoord * 1024 * 1024 + this.zCoord * 1024 + this.yCoord) * 256 + this.blockID;
053        }
054    
055        /**
056         * Sets the scheduled time for this tick entry
057         */
058        public NextTickListEntry setScheduledTime(long par1)
059        {
060            this.scheduledTime = par1;
061            return this;
062        }
063    
064        /**
065         * Compares this tick entry to another tick entry for sorting purposes. Compared first based on the scheduled time
066         * and second based on tickEntryID.
067         */
068        public int comparer(NextTickListEntry par1NextTickListEntry)
069        {
070            return this.scheduledTime < par1NextTickListEntry.scheduledTime ? -1 : (this.scheduledTime > par1NextTickListEntry.scheduledTime ? 1 : (this.tickEntryID < par1NextTickListEntry.tickEntryID ? -1 : (this.tickEntryID > par1NextTickListEntry.tickEntryID ? 1 : 0)));
071        }
072    
073        public int compareTo(Object par1Obj)
074        {
075            return this.comparer((NextTickListEntry)par1Obj);
076        }
077    }