    001package net.minecraft.world;
    002
    003public class ChunkCoordIntPair
    004{
    005    /** The X position of this Chunk Coordinate Pair */
    006    public final int chunkXPos;
    007
    008    /** The Z position of this Chunk Coordinate Pair */
    009    public final int chunkZPos;
    010
    011    public ChunkCoordIntPair(int par1, int par2)
    012    {
    013        this.chunkXPos = par1;
    014        this.chunkZPos = par2;
    015    }
    016
    017    /**
    018     * converts a chunk coordinate pair to an integer (suitable for hashing)
    019     */
    020    public static long chunkXZ2Int(int par0, int par1)
    021    {
    022        return (long)par0 & 4294967295L | ((long)par1 & 4294967295L) << 32;
    023    }
    024
    025    public int hashCode()
    026    {
    027        long i = chunkXZ2Int(this.chunkXPos, this.chunkZPos);
    028        int j = (int)i;
    029        int k = (int)(i >> 32);
    030        return j ^ k;
    031    }
    032
    033    public boolean equals(Object par1Obj)
    034    {
    035        ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair)par1Obj;
    036        return chunkcoordintpair.chunkXPos == this.chunkXPos && chunkcoordintpair.chunkZPos == this.chunkZPos;
    037    }
    038
    039    public int getCenterXPos()
    040    {
    041        return (this.chunkXPos << 4) + 8;
    042    }
    043
    044    public int getCenterZPosition()
    045    {
    046        return (this.chunkZPos << 4) + 8;
    047    }
    048
    049    public ChunkPosition getChunkPosition(int par1)
    050    {
    051        return new ChunkPosition(this.getCenterXPos(), par1, this.getCenterZPosition());
    052    }
    053
    054    public String toString()
    055    {
    056        return "[" + this.chunkXPos + ", " + this.chunkZPos + "]";
    057    }
    058}