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}