
net.minecraft.server.ControllerLook Maven / Gradle / Ivy
package net.minecraft.server;
public class ControllerLook {
private final EntityInsentient a;
private float b;
private float c;
private boolean d;
private double e;
private double f;
private double g;
public ControllerLook(EntityInsentient entityinsentient) {
this.a = entityinsentient;
}
public void a(Entity entity, float f, float f1) {
this.e = entity.locX;
if (entity instanceof EntityLiving) {
this.f = entity.locY + (double) entity.getHeadHeight();
} else {
this.f = (entity.getBoundingBox().b + entity.getBoundingBox().e) / 2.0D;
}
this.g = entity.locZ;
this.b = f;
this.c = f1;
this.d = true;
}
public void a(double d0, double d1, double d2, float f, float f1) {
this.e = d0;
this.f = d1;
this.g = d2;
this.b = f;
this.c = f1;
this.d = true;
}
public void a() {
this.a.pitch = 0.0F;
if (this.d) {
this.d = false;
double d0 = this.e - this.a.locX;
double d1 = this.f - (this.a.locY + (double) this.a.getHeadHeight());
double d2 = this.g - this.a.locZ;
double d3 = MathHelper.sqrt(d0 * d0 + d2 * d2);
float f = (float) (MathHelper.b(d2, d0) * 180.0D / 3.1415927410125732D) - 90.0F;
float f1 = (float) (-(MathHelper.b(d1, d3) * 180.0D / 3.1415927410125732D));
this.a.pitch = this.a(this.a.pitch, f1, this.c);
this.a.rotationYawHead = this.a(this.a.rotationYawHead, f, this.b);
} else {
this.a.rotationYawHead = this.a(this.a.rotationYawHead, this.a.renderYawOffset, 10.0F);
}
float f2 = MathHelper.g(this.a.rotationYawHead - this.a.renderYawOffset);
if (!this.a.getNavigation().noPath()) {
if (f2 < -75.0F) {
this.a.rotationYawHead = this.a.renderYawOffset - 75.0F;
}
if (f2 > 75.0F) {
this.a.rotationYawHead = this.a.renderYawOffset + 75.0F;
}
}
}
private float a(float f, float f1, float f2) {
float f3 = MathHelper.g(f1 - f);
if (f3 > f2) {
f3 = f2;
}
if (f3 < -f2) {
f3 = -f2;
}
return f + f3;
}
public boolean b() {
return this.d;
}
public double e() {
return this.e;
}
public double f() {
return this.f;
}
public double g() {
return this.g;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy