use of net.minecraft.server.v1_15_R1.Vec3D in project Citizens2 by CitizensDev.
the class PlayerNavigation method b.
@Override
public void b(BlockPosition var0) {
if (this.c != null && !this.c.b() && this.c.e() != 0) {
PathPoint var1 = this.c.c();
Vec3D var2 = new Vec3D((var1.a + this.a.locX()) / 2.0D, (var1.b + this.a.locY()) / 2.0D, (var1.c + this.a.locZ()) / 2.0D);
if (var0.a(var2, this.c.e() - this.c.f())) {
this.j();
}
}
}
use of net.minecraft.server.v1_15_R1.Vec3D in project Citizens2 by CitizensDev.
the class PlayerNavigation method a.
@Override
protected void a(Vec3D var0) {
if (this.e - this.f > 100) {
if (var0.distanceSquared(this.g) < 2.25D) {
this.o();
}
this.f = this.e;
this.g = var0;
}
if (this.c != null && !this.c.b()) {
Vec3D var1 = this.c.g();
if (var1.equals(this.h)) {
this.i += SystemUtils.getMonotonicMillis() - this.j;
} else {
this.h = var1;
double var2 = var0.f(this.h);
this.k = this.a.dt() > 0.0F ? var2 / this.a.dt() * 1000.0D : 0.0D;
}
if (this.k > 0.0D && this.i > this.k * 3.0D) {
this.h = Vec3D.a;
this.i = 0L;
this.k = 0.0D;
this.o();
}
this.j = SystemUtils.getMonotonicMillis();
}
}
use of net.minecraft.server.v1_15_R1.Vec3D in project Citizens2 by CitizensDev.
the class PlayerNavigation method a.
@Override
protected boolean a(Vec3D var0, Vec3D var1, int var2, int var3, int var4) {
int var5 = MathHelper.floor(var0.x);
int var6 = MathHelper.floor(var0.z);
double var7 = var1.x - var0.x;
double var9 = var1.z - var0.z;
double var11 = var7 * var7 + var9 * var9;
if (var11 < 1.0E-8D) {
return false;
} else {
double var13 = 1.0D / Math.sqrt(var11);
var7 *= var13;
var9 *= var13;
var2 += 2;
var4 += 2;
if (!this.a(var5, MathHelper.floor(var0.y), var6, var2, var3, var4, var0, var7, var9)) {
return false;
} else {
var2 -= 2;
var4 -= 2;
double var15 = 1.0D / Math.abs(var7);
double var17 = 1.0D / Math.abs(var9);
double var19 = var5 - var0.x;
double var21 = var6 - var0.z;
if (var7 >= 0.0D) {
++var19;
}
if (var9 >= 0.0D) {
++var21;
}
var19 /= var7;
var21 /= var9;
int var23 = var7 < 0.0D ? -1 : 1;
int var24 = var9 < 0.0D ? -1 : 1;
int var25 = MathHelper.floor(var1.x);
int var26 = MathHelper.floor(var1.z);
int var27 = var25 - var5;
int var28 = var26 - var6;
do {
if (var27 * var23 <= 0 && var28 * var24 <= 0) {
return true;
}
if (var19 < var21) {
var19 += var15;
var5 += var23;
var27 = var25 - var5;
} else {
var21 += var17;
var6 += var24;
var28 = var26 - var6;
}
} while (this.a(var5, MathHelper.floor(var0.y), var6, var2, var3, var4, var0, var7, var9));
return false;
}
}
}
use of net.minecraft.server.v1_15_R1.Vec3D in project Citizens2 by CitizensDev.
the class NMSImpl method flyingMoveLogic.
public static void flyingMoveLogic(EntityLiving entity, float f, float f1) {
if ((entity.cu()) || (entity.bA())) {
if (entity.isInWater()) {
double d1 = entity.locY;
float f4 = entity instanceof EntityPolarBear ? 0.98F : 0.8F;
float f3 = 0.02F;
float f2 = EnchantmentManager.a(Enchantments.DEPTH_STRIDER, entity);
if (f2 > 3.0F) {
f2 = 3.0F;
}
if (!entity.onGround) {
f2 *= 0.5F;
}
if (f2 > 0.0F) {
f4 += (0.54600006F - f4) * f2 / 3.0F;
f3 += (entity.cq() - f3) * f2 / 3.0F;
}
entity.a(f, f1, f3);
entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ);
entity.motX *= f4;
entity.motY *= 0.800000011920929D;
entity.motZ *= f4;
if (!entity.isNoGravity()) {
entity.motY -= 0.02D;
}
if ((entity.positionChanged) && (entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ))) {
entity.motY = 0.30000001192092896D;
}
} else if ((entity.ao()) && ((!(entity instanceof EntityHuman)) || (!((EntityHuman) entity).abilities.isFlying))) {
double d1 = entity.locY;
entity.a(f, f1, 0.02F);
entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ);
entity.motX *= 0.5D;
entity.motY *= 0.5D;
entity.motZ *= 0.5D;
if (!entity.isNoGravity()) {
entity.motY -= 0.02D;
}
if ((entity.positionChanged) && (entity.c(entity.motX, entity.motY + 0.6000000238418579D - entity.locY + d1, entity.motZ))) {
entity.motY = 0.30000001192092896D;
}
} else if (entity.cH()) {
if (entity.motY > -0.5D) {
entity.fallDistance = 1.0F;
}
Vec3D vec3d = entity.aB();
float f5 = entity.pitch * 0.017453292F;
double d0 = Math.sqrt(vec3d.x * vec3d.x + vec3d.z * vec3d.z);
double d2 = Math.sqrt(entity.motX * entity.motX + entity.motZ * entity.motZ);
double d3 = vec3d.b();
float f6 = MathHelper.cos(f5);
f6 = (float) (f6 * f6 * Math.min(1.0D, d3 / 0.4D));
entity.motY += -0.08D + f6 * 0.06D;
if ((entity.motY < 0.0D) && (d0 > 0.0D)) {
double d4 = entity.motY * -0.1D * f6;
entity.motY += d4;
entity.motX += vec3d.x * d4 / d0;
entity.motZ += vec3d.z * d4 / d0;
}
if (f5 < 0.0F) {
double d4 = d2 * -MathHelper.sin(f5) * 0.04D;
entity.motY += d4 * 3.2D;
entity.motX -= vec3d.x * d4 / d0;
entity.motZ -= vec3d.z * d4 / d0;
}
if (d0 > 0.0D) {
entity.motX += (vec3d.x / d0 * d2 - entity.motX) * 0.1D;
entity.motZ += (vec3d.z / d0 * d2 - entity.motZ) * 0.1D;
}
entity.motX *= 0.9900000095367432D;
entity.motY *= 0.9800000190734863D;
entity.motZ *= 0.9900000095367432D;
entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ);
if ((entity.positionChanged) && (!entity.world.isClientSide)) {
double d4 = Math.sqrt(entity.motX * entity.motX + entity.motZ * entity.motZ);
double d5 = d2 - d4;
float f7 = (float) (d5 * 10.0D - 3.0D);
if (f7 > 0.0F) {
entity.a(entity.e((int) f7), 1.0F, 1.0F);
entity.damageEntity(DamageSource.FLY_INTO_WALL, f7);
}
}
if ((entity.onGround) && (!entity.world.isClientSide) && (entity.getFlag(7)) && (!CraftEventFactory.callToggleGlideEvent(entity, false).isCancelled())) {
entity.setFlag(7, false);
}
} else {
float f8 = 0.91F;
BlockPosition.PooledBlockPosition blockposition_pooledblockposition = BlockPosition.PooledBlockPosition.d(entity.locX, entity.getBoundingBox().b - 1.0D, entity.locZ);
if (entity.onGround) {
f8 = entity.world.getType(blockposition_pooledblockposition).getBlock().frictionFactor * 0.91F;
}
float f4 = 0.16277136F / (f8 * f8 * f8);
float f3;
if (entity.onGround) {
f3 = entity.cq() * f4;
} else {
f3 = entity.aR;
}
entity.a(f, f1, f3);
f8 = 0.91F;
if (entity.onGround) {
f8 = entity.world.getType(blockposition_pooledblockposition.e(entity.locX, entity.getBoundingBox().b - 1.0D, entity.locZ)).getBlock().frictionFactor * 0.91F;
}
if (entity.m_()) {
entity.motX = MathHelper.a(entity.motX, -0.15000000596046448D, 0.15000000596046448D);
entity.motZ = MathHelper.a(entity.motZ, -0.15000000596046448D, 0.15000000596046448D);
entity.fallDistance = 0.0F;
if (entity.motY < -0.15D) {
entity.motY = -0.15D;
}
boolean flag = (entity.isSneaking()) && ((entity instanceof EntityHuman));
if ((flag) && (entity.motY < 0.0D)) {
entity.motY = 0.0D;
}
}
entity.move(EnumMoveType.SELF, entity.motX, entity.motY, entity.motZ);
if ((entity.positionChanged) && (entity.m_())) {
entity.motY = 0.2D;
}
if (entity.hasEffect(MobEffects.LEVITATION)) {
entity.motY += (0.05D * (entity.getEffect(MobEffects.LEVITATION).getAmplifier() + 1) - entity.motY) * 0.2D;
} else {
blockposition_pooledblockposition.e(entity.locX, 0.0D, entity.locZ);
if ((entity.world.isClientSide) && ((!entity.world.isLoaded(blockposition_pooledblockposition)) || (!entity.world.getChunkAtWorldCoords(blockposition_pooledblockposition).p()))) {
if (entity.locY > 0.0D) {
entity.motY = -0.1D;
} else {
entity.motY = 0.0D;
}
} else if (!entity.isNoGravity()) {
entity.motY -= 0.08D;
}
}
entity.motY *= 0.9800000190734863D;
entity.motX *= f8;
entity.motZ *= f8;
blockposition_pooledblockposition.t();
}
}
entity.aF = entity.aG;
double d1 = entity.locX - entity.lastX;
double d0 = entity.locZ - entity.lastZ;
float f2 = MathHelper.sqrt(d1 * d1 + d0 * d0) * 4.0F;
if (f2 > 1.0F) {
f2 = 1.0F;
}
entity.aG += (f2 - entity.aG) * 0.4F;
entity.aH += entity.aG;
}
use of net.minecraft.server.v1_15_R1.Vec3D in project Citizens2 by CitizensDev.
the class PlayerNavigation method a.
@Override
public boolean a(PathEntity paramPathEntity, double paramDouble) {
if (paramPathEntity == null) {
this.c = null;
return false;
}
if (!paramPathEntity.a(this.c)) {
this.c = paramPathEntity;
}
d();
if (this.c.d() == 0) {
return false;
}
this.d = paramDouble;
Vec3D localVec3D = c();
this.h = this.g;
this.i = localVec3D;
return true;
}
Aggregations