    001package net.minecraft.util;
    002
    003public class ChunkCoordinates implements Comparable
    004{
    005    public int posX;
    006
    007    /** the y coordinate */
    008    public int posY;
    009
    010    /** the z coordinate */
    011    public int posZ;
    012
    013    public ChunkCoordinates() {}
    014
    015    public ChunkCoordinates(int par1, int par2, int par3)
    016    {
    017        this.posX = par1;
    018        this.posY = par2;
    019        this.posZ = par3;
    020    }
    021
    022    public ChunkCoordinates(ChunkCoordinates par1ChunkCoordinates)
    023    {
    024        this.posX = par1ChunkCoordinates.posX;
    025        this.posY = par1ChunkCoordinates.posY;
    026        this.posZ = par1ChunkCoordinates.posZ;
    027    }
    028
    029    public boolean equals(Object par1Obj)
    030    {
    031        if (!(par1Obj instanceof ChunkCoordinates))
    032        {
    033            return false;
    034        }
    035        else
    036        {
    037            ChunkCoordinates var2 = (ChunkCoordinates)par1Obj;
    038            return this.posX == var2.posX && this.posY == var2.posY && this.posZ == var2.posZ;
    039        }
    040    }
    041
    042    public int hashCode()
    043    {
    044        return this.posX + this.posZ << 8 + this.posY << 16;
    045    }
    046
    047    /**
    048     * Compare the coordinate with another coordinate
    049     */
    050    public int compareChunkCoordinate(ChunkCoordinates par1ChunkCoordinates)
    051    {
    052        return this.posY == par1ChunkCoordinates.posY ? (this.posZ == par1ChunkCoordinates.posZ ? this.posX - par1ChunkCoordinates.posX : this.posZ - par1ChunkCoordinates.posZ) : this.posY - par1ChunkCoordinates.posY;
    053    }
    054
    055    public void set(int par1, int par2, int par3)
    056    {
    057        this.posX = par1;
    058        this.posY = par2;
    059        this.posZ = par3;
    060    }
    061
    062    /**
    063     * Returns the squared distance between this coordinates and the coordinates given as argument.
    064     */
    065    public float getDistanceSquared(int par1, int par2, int par3)
    066    {
    067        int var4 = this.posX - par1;
    068        int var5 = this.posY - par2;
    069        int var6 = this.posZ - par3;
    070        return (float)(var4 * var4 + var5 * var5 + var6 * var6);
    071    }
    072
    073    /**
    074     * Return the squared distance between this coordinates and the ChunkCoordinates given as argument.
    075     */
    076    public float getDistanceSquaredToChunkCoordinates(ChunkCoordinates par1ChunkCoordinates)
    077    {
    078        return this.getDistanceSquared(par1ChunkCoordinates.posX, par1ChunkCoordinates.posY, par1ChunkCoordinates.posZ);
    079    }
    080
    081    public int compareTo(Object par1Obj)
    082    {
    083        return this.compareChunkCoordinate((ChunkCoordinates)par1Obj);
    084    }
    085}