    001package net.minecraft.village;
    002
    003public class VillageDoorInfo
    004{
    005    public final int posX;
    006    public final int posY;
    007    public final int posZ;
    008    public final int insideDirectionX;
    009    public final int insideDirectionZ;
    010    public int lastActivityTimestamp;
    011    public boolean isDetachedFromVillageFlag = false;
    012    private int doorOpeningRestrictionCounter = 0;
    013
    014    public VillageDoorInfo(int par1, int par2, int par3, int par4, int par5, int par6)
    015    {
    016        this.posX = par1;
    017        this.posY = par2;
    018        this.posZ = par3;
    019        this.insideDirectionX = par4;
    020        this.insideDirectionZ = par5;
    021        this.lastActivityTimestamp = par6;
    022    }
    023
    024    /**
    025     * Returns the squared distance between this door and the given coordinate.
    026     */
    027    public int getDistanceSquared(int par1, int par2, int par3)
    028    {
    029        int l = par1 - this.posX;
    030        int i1 = par2 - this.posY;
    031        int j1 = par3 - this.posZ;
    032        return l * l + i1 * i1 + j1 * j1;
    033    }
    034
    035    /**
    036     * Get the square of the distance from a location 2 blocks away from the door considered 'inside' and the given
    037     * arguments
    038     */
    039    public int getInsideDistanceSquare(int par1, int par2, int par3)
    040    {
    041        int l = par1 - this.posX - this.insideDirectionX;
    042        int i1 = par2 - this.posY;
    043        int j1 = par3 - this.posZ - this.insideDirectionZ;
    044        return l * l + i1 * i1 + j1 * j1;
    045    }
    046
    047    public int getInsidePosX()
    048    {
    049        return this.posX + this.insideDirectionX;
    050    }
    051
    052    public int getInsidePosY()
    053    {
    054        return this.posY;
    055    }
    056
    057    public int getInsidePosZ()
    058    {
    059        return this.posZ + this.insideDirectionZ;
    060    }
    061
    062    public boolean isInside(int par1, int par2)
    063    {
    064        int k = par1 - this.posX;
    065        int l = par2 - this.posZ;
    066        return k * this.insideDirectionX + l * this.insideDirectionZ >= 0;
    067    }
    068
    069    public void resetDoorOpeningRestrictionCounter()
    070    {
    071        this.doorOpeningRestrictionCounter = 0;
    072    }
    073
    074    public void incrementDoorOpeningRestrictionCounter()
    075    {
    076        ++this.doorOpeningRestrictionCounter;
    077    }
    078
    079    public int getDoorOpeningRestrictionCounter()
    080    {
    081        return this.doorOpeningRestrictionCounter;
    082    }
    083}