Search in sources :

Example 21 with Vec3D

use of net.minecraft.server.v1_14_R1.Vec3D in project Citizens2 by CitizensDev.

the class NMSImpl method flyingMoveLogic.

public static void flyingMoveLogic(EntityLiving entity, Vec3D vec3d) {
    double d0;
    float f;
    if (entity.df() || entity.ca()) {
        d0 = 0.08D;
        boolean flag = entity.getMot().y <= 0.0D;
        if (flag && entity.hasEffect(MobEffects.SLOW_FALLING)) {
            d0 = 0.01D;
            entity.fallDistance = 0.0F;
        }
        double d1;
        float f1;
        double d2;
        Vec3D vec3d5;
        Vec3D vec3d2;
        if (!entity.isInWater() || entity instanceof EntityHuman && ((EntityHuman) entity).abilities.isFlying) {
            Vec3D vec3d4;
            if (entity.aD() && (!(entity instanceof EntityHuman) || !((EntityHuman) entity).abilities.isFlying)) {
                d1 = entity.locY;
                entity.a(0.02F, vec3d);
                entity.move(EnumMoveType.SELF, entity.getMot());
                entity.setMot(entity.getMot().a(0.5D));
                if (!entity.isNoGravity()) {
                    entity.setMot(entity.getMot().add(0.0D, -d0 / 4.0D, 0.0D));
                }
                vec3d4 = entity.getMot();
                if (entity.positionChanged && entity.d(vec3d4.x, vec3d4.y + 0.6000000238418579D - entity.locY + d1, vec3d4.z)) {
                    entity.setMot(vec3d4.x, 0.30000001192092896D, vec3d4.z);
                }
            } else if (entity.isGliding()) {
                vec3d4 = entity.getMot();
                if (vec3d4.y > -0.5D) {
                    entity.fallDistance = 1.0F;
                }
                vec3d5 = entity.getLookDirection();
                f1 = entity.pitch * 0.017453292F;
                double d3 = Math.sqrt(vec3d5.x * vec3d5.x + vec3d5.z * vec3d5.z);
                double d4 = Math.sqrt(Entity.b(vec3d4));
                d2 = vec3d5.f();
                float f3 = MathHelper.cos(f1);
                f3 = (float) ((double) f3 * (double) f3 * Math.min(1.0D, d2 / 0.4D));
                vec3d4 = entity.getMot().add(0.0D, d0 * (-1.0D + f3 * 0.75D), 0.0D);
                double d5;
                if (vec3d4.y < 0.0D && d3 > 0.0D) {
                    d5 = vec3d4.y * -0.1D * f3;
                    vec3d4 = vec3d4.add(vec3d5.x * d5 / d3, d5, vec3d5.z * d5 / d3);
                }
                if (f1 < 0.0F && d3 > 0.0D) {
                    d5 = d4 * (-MathHelper.sin(f1)) * 0.04D;
                    vec3d4 = vec3d4.add(-vec3d5.x * d5 / d3, d5 * 3.2D, -vec3d5.z * d5 / d3);
                }
                if (d3 > 0.0D) {
                    vec3d4 = vec3d4.add((vec3d5.x / d3 * d4 - vec3d4.x) * 0.1D, 0.0D, (vec3d5.z / d3 * d4 - vec3d4.z) * 0.1D);
                }
                entity.setMot(vec3d4.d(0.9900000095367432D, 0.9800000190734863D, 0.9900000095367432D));
                entity.move(EnumMoveType.SELF, entity.getMot());
                if (entity.positionChanged && !entity.world.isClientSide) {
                    d5 = Math.sqrt(Entity.b(entity.getMot()));
                    double d6 = d4 - d5;
                    float f4 = (float) (d6 * 10.0D - 3.0D);
                    if (f4 > 0.0F) {
                        try {
                            entity.a((SoundEffect) ENTITY_GET_SOUND_FALL.invoke(entity, (int) f4), 1.0F, 1.0F);
                        } catch (Throwable e) {
                            e.printStackTrace();
                        }
                        entity.damageEntity(DamageSource.FLY_INTO_WALL, f4);
                    }
                }
                if (entity.onGround && !entity.world.isClientSide && entity.getFlag(7) && !CraftEventFactory.callToggleGlideEvent(entity, false).isCancelled()) {
                    entity.setFlag(7, false);
                }
            } else {
                BlockPosition blockposition = new BlockPosition(entity.locX, entity.getBoundingBox().minY - 1.0D, entity.locZ);
                float f5 = entity.world.getType(blockposition).getBlock().m();
                f1 = entity.onGround ? f5 * 0.91F : 0.91F;
                try {
                    entity.a((float) ENTITY_R.invoke(entity, f5), vec3d);
                    entity.setMot((Vec3D) ISCLIMBING_METHOD.invoke(entity, entity.getMot()));
                } catch (Throwable e) {
                    e.printStackTrace();
                }
                entity.move(EnumMoveType.SELF, entity.getMot());
                vec3d2 = entity.getMot();
                try {
                    if ((entity.positionChanged || (boolean) JUMP_FIELD.invoke(entity)) && entity.isClimbing()) {
                        vec3d2 = new Vec3D(vec3d2.x, 0.2D, vec3d2.z);
                    }
                } catch (Throwable e) {
                    e.printStackTrace();
                }
                double d7 = vec3d2.y;
                if (entity.hasEffect(MobEffects.LEVITATION)) {
                    d7 += (0.05D * (entity.getEffect(MobEffects.LEVITATION).getAmplifier() + 1) - vec3d2.y) * 0.2D;
                    entity.fallDistance = 0.0F;
                } else if (entity.world.isClientSide && !entity.world.isLoaded(blockposition)) {
                    if (entity.locY > 0.0D) {
                        d7 = -0.1D;
                    } else {
                        d7 = 0.0D;
                    }
                } else if (!entity.isNoGravity()) {
                    d7 -= d0;
                }
                entity.setMot(vec3d2.x * f1, d7 * 0.9800000190734863D, vec3d2.z * f1);
            }
        } else {
            d1 = entity.locY;
            f1 = entity.isSprinting() ? 0.9F : entity instanceof EntityPolarBear ? 0.98F : 0.8F;
            f = 0.02F;
            float f2 = EnchantmentManager.e(entity);
            if (f2 > 3.0F) {
                f2 = 3.0F;
            }
            if (!entity.onGround) {
                f2 *= 0.5F;
            }
            if (f2 > 0.0F) {
                f1 += (0.54600006F - f1) * f2 / 3.0F;
                f += (entity.db() - f) * f2 / 3.0F;
            }
            if (entity.hasEffect(MobEffects.DOLPHINS_GRACE)) {
                f1 = 0.96F;
            }
            entity.a(f, vec3d);
            entity.move(EnumMoveType.SELF, entity.getMot());
            vec3d5 = entity.getMot();
            if (entity.positionChanged && entity.isClimbing()) {
                vec3d5 = new Vec3D(vec3d5.x, 0.2D, vec3d5.z);
            }
            entity.setMot(vec3d5.d(f1, 0.800000011920929D, f1));
            if (!entity.isNoGravity() && !entity.isSprinting()) {
                vec3d2 = entity.getMot();
                if (flag && Math.abs(vec3d2.y - 0.005D) >= 0.003D && Math.abs(vec3d2.y - d0 / 16.0D) < 0.003D) {
                    d2 = -0.003D;
                } else {
                    d2 = vec3d2.y - d0 / 16.0D;
                }
                entity.setMot(vec3d2.x, d2, vec3d2.z);
            }
            vec3d2 = entity.getMot();
            if (entity.positionChanged && entity.d(vec3d2.x, vec3d2.y + 0.6000000238418579D - entity.locY + d1, vec3d2.z)) {
                entity.setMot(vec3d2.x, 0.30000001192092896D, vec3d2.z);
            }
        }
    }
    entity.aE = entity.aF;
    d0 = entity.locX - entity.lastX;
    double d8 = entity.locZ - entity.lastZ;
    double d9 = entity instanceof EntityBird ? entity.locY - entity.lastY : 0.0D;
    f = MathHelper.sqrt(d0 * d0 + d9 * d9 + d8 * d8) * 4.0F;
    if (f > 1.0F) {
        f = 1.0F;
    }
    entity.aF += (f - entity.aF) * 0.4F;
    entity.aG += entity.aF;
}
Also used : SoundEffect(net.minecraft.server.v1_14_R1.SoundEffect) EntityHuman(net.minecraft.server.v1_14_R1.EntityHuman) BlockPosition(net.minecraft.server.v1_14_R1.BlockPosition) EntityBird(net.minecraft.server.v1_14_R1.EntityBird) EntityPolarBear(net.minecraft.server.v1_14_R1.EntityPolarBear) Vec3D(net.minecraft.server.v1_14_R1.Vec3D)

Example 22 with Vec3D

use of net.minecraft.server.v1_14_R1.Vec3D in project Citizens2 by CitizensDev.

the class PlayerNavigation method a.

@Override
public boolean a(PathEntity var0, double var1) {
    if (var0 == null) {
        this.c = null;
        return false;
    } else {
        if (!var0.a(this.c)) {
            this.c = var0;
        }
        this.D_();
        if (this.c.e() <= 0) {
            return false;
        } else {
            this.d = var1;
            Vec3D var3 = this.b();
            this.f = this.e;
            this.g = var3;
            return true;
        }
    }
}
Also used : Vec3D(net.minecraft.server.v1_14_R1.Vec3D)

Example 23 with Vec3D

use of net.minecraft.server.v1_14_R1.Vec3D in project Citizens2 by CitizensDev.

the class PlayerNavigation method a.

private boolean a(int var0, int var1, int var2, int var3, int var4, int var5, Vec3D var6, double var7, double var9) {
    int var11 = var0 - var3 / 2;
    int var12 = var2 - var5 / 2;
    if (!this.b(var11, var1, var12, var3, var4, var5, var6, var7, var9)) {
        return false;
    } else {
        for (int var13 = var11; var13 < var11 + var3; ++var13) {
            for (int var14 = var12; var14 < var12 + var5; ++var14) {
                double var15 = var13 + 0.5D - var6.x;
                double var17 = var14 + 0.5D - var6.z;
                if (var15 * var7 + var17 * var9 >= 0.0D) {
                    PathType var19 = this.o.a(this.b, var13, var1 - 1, var14, this.a, var3, var4, var5, true, true);
                    if (var19 == PathType.WATER) {
                        return false;
                    }
                    if (var19 == PathType.LAVA) {
                        return false;
                    }
                    if (var19 == PathType.OPEN) {
                        return false;
                    }
                    var19 = this.o.a(this.b, var13, var1, var14, this.a, var3, var4, var5, true, true);
                    float var20 = this.a.a(var19);
                    if (var20 < 0.0F || var20 >= 8.0F) {
                        return false;
                    }
                    if (var19 == PathType.DAMAGE_FIRE || var19 == PathType.DANGER_FIRE || var19 == PathType.DAMAGE_OTHER) {
                        return false;
                    }
                }
            }
        }
        return true;
    }
}
Also used : PathType(net.minecraft.server.v1_14_R1.PathType) PathPoint(net.minecraft.server.v1_14_R1.PathPoint)

Example 24 with Vec3D

use of net.minecraft.server.v1_14_R1.Vec3D in project Citizens2 by CitizensDev.

the class EntityHumanNPC method moveOnCurrentHeading.

private void moveOnCurrentHeading() {
    if (jumping) {
        if (onGround && jumpTicks == 0) {
            jump();
            jumpTicks = 10;
        }
    } else {
        jumpTicks = 0;
    }
    aZ *= 0.98F;
    bb *= 0.98F;
    // movement method
    moveWithFallDamage(new Vec3D(this.aZ, this.ba, this.bb));
    NMS.setHeadYaw(getBukkitEntity(), yaw);
    if (jumpTicks > 0) {
        jumpTicks--;
    }
}
Also used : Vec3D(net.minecraft.server.v1_15_R1.Vec3D)

Example 25 with Vec3D

use of net.minecraft.server.v1_14_R1.Vec3D in project Citizens2 by CitizensDev.

the class EntityHumanNPC method playerTick.

@Override
public void playerTick() {
    if (npc == null) {
        super.playerTick();
        return;
    }
    entityBaseTick();
    boolean navigating = npc.getNavigator().isNavigating();
    if (!navigating && getBukkitEntity() != null && (!npc.hasTrait(Gravity.class) || npc.getOrAddTrait(Gravity.class).hasGravity()) && Util.isLoaded(getBukkitEntity().getLocation(LOADED_LOCATION))) {
        moveWithFallDamage(new Vec3D(0, 0, 0));
    }
    Vec3D mot = getMot();
    if (Math.abs(mot.getX()) < EPSILON && Math.abs(mot.getY()) < EPSILON && Math.abs(mot.getZ()) < EPSILON) {
        setMot(new Vec3D(0, 0, 0));
    }
    if (navigating) {
        if (!NMSImpl.isNavigationFinished(navigation)) {
            NMSImpl.updateNavigation(navigation);
        }
        moveOnCurrentHeading();
    }
    NMSImpl.updateAI(this);
    this.az = this.aA;
    if (this.hurtTicks > 0) {
        this.hurtTicks -= 1;
    }
    if (npc.data().get(NPC.Metadata.COLLIDABLE, !npc.isProtected())) {
        collideNearby();
    }
    tickPotionEffects();
    this.aU = this.aT;
    this.aJ = this.aI;
    this.aL = this.aK;
    this.lastYaw = this.yaw;
    this.lastPitch = this.pitch;
}
Also used : Vec3D(net.minecraft.server.v1_15_R1.Vec3D) Gravity(net.citizensnpcs.trait.Gravity)

Aggregations

Vec3D (net.minecraft.server.v1_16_R3.Vec3D)11 Vec3D (net.minecraft.server.v1_15_R1.Vec3D)10 Vec3D (net.minecraft.server.v1_14_R1.Vec3D)9 Vec3D (net.minecraft.server.v1_12_R1.Vec3D)7 Vec3D (net.minecraft.server.v1_10_R1.Vec3D)5 Vec3D (net.minecraft.server.v1_11_R1.Vec3D)5 Vec3D (net.minecraft.server.v1_8_R3.Vec3D)4 Gravity (net.citizensnpcs.trait.Gravity)3 BlockPosition (net.minecraft.server.v1_14_R1.BlockPosition)3 BlockPosition (net.minecraft.server.v1_10_R1.BlockPosition)2 BlockPosition (net.minecraft.server.v1_11_R1.BlockPosition)2 AxisAlignedBB (net.minecraft.server.v1_12_R1.AxisAlignedBB)2 BlockPosition (net.minecraft.server.v1_12_R1.BlockPosition)2 MovingObjectPosition (net.minecraft.server.v1_12_R1.MovingObjectPosition)2 PathPoint (net.minecraft.server.v1_14_R1.PathPoint)2 AxisAlignedBB (net.minecraft.server.v1_16_R3.AxisAlignedBB)2 BaseBlockPosition (net.minecraft.server.v1_16_R3.BaseBlockPosition)2 BlockPosition (net.minecraft.server.v1_16_R3.BlockPosition)2 PathPoint (net.minecraft.server.v1_16_R3.PathPoint)2 AxisAlignedBB (net.minecraft.server.v1_8_R3.AxisAlignedBB)2