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