    001package net.minecraft.world;
    002
    003public 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}