Search in sources :

Example 81 with BlockPosition

use of net.minecraft.server.v1_9_R2.BlockPosition in project Citizens2 by CitizensDev.

the class PlayerNavigation method b.

@Override
public PathEntity b(BlockPosition paramBlockPosition) {
    BlockPosition localBlockPosition;
    if (this.b.getType(paramBlockPosition).getMaterial() == Material.AIR) {
        localBlockPosition = paramBlockPosition.down();
        while ((localBlockPosition.getY() > 0) && (this.b.getType(localBlockPosition).getMaterial() == Material.AIR)) {
            localBlockPosition = localBlockPosition.down();
        }
        if (localBlockPosition.getY() > 0) {
            return b2(localBlockPosition.up());
        }
        while ((localBlockPosition.getY() < this.b.getHeight()) && (this.b.getType(localBlockPosition).getMaterial() == Material.AIR)) {
            localBlockPosition = localBlockPosition.up();
        }
        paramBlockPosition = localBlockPosition;
    }
    if (this.b.getType(paramBlockPosition).getMaterial().isBuildable()) {
        localBlockPosition = paramBlockPosition.up();
        while ((localBlockPosition.getY() < this.b.getHeight()) && (this.b.getType(localBlockPosition).getMaterial().isBuildable())) {
            localBlockPosition = localBlockPosition.up();
        }
        return b2(localBlockPosition);
    }
    return b2(paramBlockPosition);
}
Also used : BlockPosition(net.minecraft.server.v1_12_R1.BlockPosition)

Example 82 with BlockPosition

use of net.minecraft.server.v1_9_R2.BlockPosition in project Citizens2 by CitizensDev.

the class PlayerNavigation method d.

@Override
public void d() {
    this.e += 1;
    if (this.g) {
        k();
    }
    if (o()) {
        return;
    }
    if (b()) {
        n();
    } else if ((this.c != null) && (this.c.e() < this.c.d())) {
        Vec3D localVec3D = c();
        Vec3D localObject = this.c.a(this.a, this.c.e());
        if ((localVec3D.y > localObject.y) && (!this.a.onGround) && (MathHelper.floor(localVec3D.x) == MathHelper.floor(localObject.x)) && (MathHelper.floor(localVec3D.z) == MathHelper.floor(localObject.z))) {
            this.c.c(this.c.e() + 1);
        }
    }
    m();
    if (o()) {
        return;
    }
    Vec3D localVec3D = this.c.a(this.a);
    Object localObject = new BlockPosition(localVec3D).down();
    AxisAlignedBB localAxisAlignedBB = this.b.getType((BlockPosition) localObject).e(this.b, (BlockPosition) localObject);
    localVec3D = localVec3D.a(0.0D, 1.0D - localAxisAlignedBB.e, 0.0D);
    this.a.getControllerMove().a(localVec3D.x, localVec3D.y, localVec3D.z, this.d);
}
Also used : AxisAlignedBB(net.minecraft.server.v1_12_R1.AxisAlignedBB) BlockPosition(net.minecraft.server.v1_12_R1.BlockPosition) Vec3D(net.minecraft.server.v1_12_R1.Vec3D)

Example 83 with BlockPosition

use of net.minecraft.server.v1_9_R2.BlockPosition in project Citizens2 by CitizensDev.

the class PlayerPathfinderNormal method a.

private PathPoint a(int paramInt1, int paramInt2, int paramInt3, int paramInt4, double paramDouble, EnumDirection paramEnumDirection) {
    PathPoint localPathPoint = null;
    BlockPosition localBlockPosition1 = new BlockPosition(paramInt1, paramInt2, paramInt3);
    BlockPosition localBlockPosition2 = localBlockPosition1.down();
    double d1 = paramInt2 - (1.0D - this.a.getType(localBlockPosition2).e(this.a, localBlockPosition2).e);
    if (d1 - paramDouble > 1.125D) {
        return null;
    }
    PathType localPathType1 = a(this.b, paramInt1, paramInt2, paramInt3);
    float f = this.b.a(localPathType1);
    double d2 = this.b.width / 2.0D;
    if (f >= 0.0F) {
        localPathPoint = a(paramInt1, paramInt2, paramInt3);
        localPathPoint.m = localPathType1;
        localPathPoint.l = Math.max(localPathPoint.l, f);
    }
    if (localPathType1 == PathType.WALKABLE) {
        return localPathPoint;
    }
    if ((localPathPoint == null) && (paramInt4 > 0) && (localPathType1 != PathType.FENCE) && (localPathType1 != PathType.TRAPDOOR)) {
        localPathPoint = a(paramInt1, paramInt2 + 1, paramInt3, paramInt4 - 1, paramDouble, paramEnumDirection);
        if ((localPathPoint != null) && ((localPathPoint.m == PathType.OPEN) || (localPathPoint.m == PathType.WALKABLE)) && (this.b.width < 1.0F)) {
            double d3 = paramInt1 - paramEnumDirection.getAdjacentX() + 0.5D;
            double d4 = paramInt3 - paramEnumDirection.getAdjacentZ() + 0.5D;
            AxisAlignedBB localAxisAlignedBB1 = new AxisAlignedBB(d3 - d2, paramInt2 + 0.001D, d4 - d2, d3 + d2, paramInt2 + this.b.length, d4 + d2);
            AxisAlignedBB localAxisAlignedBB2 = this.a.getType(localBlockPosition1).e(this.a, localBlockPosition1);
            AxisAlignedBB localAxisAlignedBB3 = localAxisAlignedBB1.b(0.0D, localAxisAlignedBB2.e - 0.002D, 0.0D);
            if (this.b.world.a(localAxisAlignedBB3)) {
                localPathPoint = null;
            }
        }
    }
    if (localPathType1 == PathType.OPEN) {
        AxisAlignedBB localAxisAlignedBB4 = new AxisAlignedBB(paramInt1 - d2 + 0.5D, paramInt2 + 0.001D, paramInt3 - d2 + 0.5D, paramInt1 + d2 + 0.5D, paramInt2 + this.b.length, paramInt3 + d2 + 0.5D);
        if (this.b.world.a(localAxisAlignedBB4)) {
            return null;
        }
        if (this.b.width >= 1.0F) {
            PathType localPathType2 = a(this.b, paramInt1, paramInt2 - 1, paramInt3);
            if (localPathType2 == PathType.BLOCKED) {
                localPathPoint = a(paramInt1, paramInt2, paramInt3);
                localPathPoint.m = PathType.WALKABLE;
                localPathPoint.l = Math.max(localPathPoint.l, f);
                return localPathPoint;
            }
        }
        int i = 0;
        while ((paramInt2 > 0) && (localPathType1 == PathType.OPEN)) {
            paramInt2--;
            if (i++ >= this.b.bg()) {
                return null;
            }
            localPathType1 = a(this.b, paramInt1, paramInt2, paramInt3);
            f = this.b.a(localPathType1);
            if ((localPathType1 != PathType.OPEN) && (f >= 0.0F)) {
                localPathPoint = a(paramInt1, paramInt2, paramInt3);
                localPathPoint.m = localPathType1;
                localPathPoint.l = Math.max(localPathPoint.l, f);
            } else if (f < 0.0F) {
                return null;
            }
        }
    }
    return localPathPoint;
}
Also used : AxisAlignedBB(net.minecraft.server.v1_12_R1.AxisAlignedBB) PathPoint(net.minecraft.server.v1_12_R1.PathPoint) PathType(net.minecraft.server.v1_12_R1.PathType) MutableBlockPosition(net.minecraft.server.v1_12_R1.BlockPosition.MutableBlockPosition) BlockPosition(net.minecraft.server.v1_12_R1.BlockPosition) PathPoint(net.minecraft.server.v1_12_R1.PathPoint)

Example 84 with BlockPosition

use of net.minecraft.server.v1_9_R2.BlockPosition in project Citizens2 by CitizensDev.

the class PlayerPathfinderNormal method a.

@Override
public PathType a(IBlockAccess paramIBlockAccess, int paramInt1, int paramInt2, int paramInt3, EntityInsentient paramEntityInsentient, int paramInt4, int paramInt5, int paramInt6, boolean paramBoolean1, boolean paramBoolean2) {
    EnumSet<PathType> localEnumSet = EnumSet.noneOf(PathType.class);
    PathType localPathType1 = PathType.BLOCKED;
    BlockPosition localBlockPosition = new BlockPosition(paramEntityInsentient);
    localPathType1 = a(paramIBlockAccess, paramInt1, paramInt2, paramInt3, paramInt4, paramInt5, paramInt6, paramBoolean1, paramBoolean2, localEnumSet, localPathType1, localBlockPosition);
    if (localEnumSet.contains(PathType.FENCE)) {
        return PathType.FENCE;
    }
    Object localObject = PathType.BLOCKED;
    for (PathType localPathType2 : localEnumSet) {
        if (paramEntityInsentient.a(localPathType2) < 0.0F) {
            return localPathType2;
        }
        if (paramEntityInsentient.a(localPathType2) >= paramEntityInsentient.a((PathType) localObject)) {
            localObject = localPathType2;
        }
    }
    if ((localPathType1 == PathType.OPEN) && (paramEntityInsentient.a((PathType) localObject) == 0.0F)) {
        return PathType.OPEN;
    }
    return (PathType) localObject;
}
Also used : PathType(net.minecraft.server.v1_12_R1.PathType) MutableBlockPosition(net.minecraft.server.v1_12_R1.BlockPosition.MutableBlockPosition) BlockPosition(net.minecraft.server.v1_12_R1.BlockPosition)

Example 85 with BlockPosition

use of net.minecraft.server.v1_9_R2.BlockPosition in project Citizens2 by CitizensDev.

the class PlayerPathfinderNormal method a.

@Override
public PathType a(IBlockAccess paramIBlockAccess, int paramInt1, int paramInt2, int paramInt3) {
    PathType localPathType1 = b(paramIBlockAccess, paramInt1, paramInt2, paramInt3);
    if ((localPathType1 == PathType.OPEN) && (paramInt2 >= 1)) {
        Block localBlock = paramIBlockAccess.getType(new BlockPosition(paramInt1, paramInt2 - 1, paramInt3)).getBlock();
        PathType localPathType2 = b(paramIBlockAccess, paramInt1, paramInt2 - 1, paramInt3);
        localPathType1 = (localPathType2 == PathType.WALKABLE) || (localPathType2 == PathType.OPEN) || (localPathType2 == PathType.WATER) || (localPathType2 == PathType.LAVA) ? PathType.OPEN : PathType.WALKABLE;
        if ((localPathType2 == PathType.DAMAGE_FIRE) || (localBlock == Blocks.df)) {
            localPathType1 = PathType.DAMAGE_FIRE;
        }
        if (localPathType2 == PathType.DAMAGE_CACTUS) {
            localPathType1 = PathType.DAMAGE_CACTUS;
        }
    }
    localPathType1 = a(paramIBlockAccess, paramInt1, paramInt2, paramInt3, localPathType1);
    return localPathType1;
}
Also used : PathType(net.minecraft.server.v1_12_R1.PathType) MutableBlockPosition(net.minecraft.server.v1_12_R1.BlockPosition.MutableBlockPosition) BlockPosition(net.minecraft.server.v1_12_R1.BlockPosition) Block(net.minecraft.server.v1_12_R1.Block)

Aggregations

BlockPosition (net.minecraft.server.v1_10_R1.BlockPosition)23 BlockPosition (net.minecraft.server.v1_11_R1.BlockPosition)23 BlockPosition (net.minecraft.server.v1_12_R1.BlockPosition)20 BlockPosition (net.minecraft.server.v1_8_R3.BlockPosition)17 Location (org.bukkit.Location)16 PathPoint (net.minecraft.server.v1_10_R1.PathPoint)10 PathPoint (net.minecraft.server.v1_11_R1.PathPoint)10 NPC (net.citizensnpcs.api.npc.NPC)8 NPCHolder (net.citizensnpcs.npc.ai.NPCHolder)8 MutableBlockPosition (net.minecraft.server.v1_10_R1.BlockPosition.MutableBlockPosition)7 PathType (net.minecraft.server.v1_10_R1.PathType)7 MutableBlockPosition (net.minecraft.server.v1_11_R1.BlockPosition.MutableBlockPosition)7 MutableBlockPosition (net.minecraft.server.v1_12_R1.BlockPosition.MutableBlockPosition)7 Block (net.minecraft.server.v1_10_R1.Block)6 Block (net.minecraft.server.v1_11_R1.Block)6 PathType (net.minecraft.server.v1_11_R1.PathType)6 PathType (net.minecraft.server.v1_12_R1.PathType)6 BlockPosition (net.minecraft.server.v1_9_R2.BlockPosition)6 AxisAlignedBB (net.minecraft.server.v1_10_R1.AxisAlignedBB)5 IBlockData (net.minecraft.server.v1_10_R1.IBlockData)5