Upstream Paper
This commit is contained in:
111
src/main/java/net/minecraft/server/EntityCreature.java
Normal file
111
src/main/java/net/minecraft/server/EntityCreature.java
Normal file
@@ -0,0 +1,111 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
// CraftBukkit start
|
||||
import org.bukkit.event.entity.EntityUnleashEvent;
|
||||
// CraftBukkit end
|
||||
|
||||
public abstract class EntityCreature extends EntityInsentient {
|
||||
|
||||
public org.bukkit.craftbukkit.entity.CraftCreature getBukkitCreature() { return (org.bukkit.craftbukkit.entity.CraftCreature) super.getBukkitEntity(); } // Paper
|
||||
public BlockPosition movingTarget = null; public BlockPosition getMovingTarget() { return movingTarget; } // Paper
|
||||
private BlockPosition a;
|
||||
private float b;
|
||||
|
||||
protected EntityCreature(EntityTypes<?> entitytypes, World world) {
|
||||
super(entitytypes, world);
|
||||
this.a = BlockPosition.ZERO;
|
||||
this.b = -1.0F;
|
||||
}
|
||||
|
||||
public float a(BlockPosition blockposition) {
|
||||
return this.a(blockposition, (IWorldReader) this.world);
|
||||
}
|
||||
|
||||
public float a(BlockPosition blockposition, IWorldReader iworldreader) {
|
||||
return 0.0F;
|
||||
}
|
||||
|
||||
public boolean a(GeneratorAccess generatoraccess, boolean flag) {
|
||||
return super.a(generatoraccess, flag) && this.a(new BlockPosition(this.locX, this.getBoundingBox().minY, this.locZ), (IWorldReader) generatoraccess) >= 0.0F;
|
||||
}
|
||||
|
||||
public boolean dr() {
|
||||
return !this.navigation.p();
|
||||
}
|
||||
|
||||
public boolean ds() {
|
||||
return this.f(new BlockPosition(this));
|
||||
}
|
||||
|
||||
public boolean f(BlockPosition blockposition) {
|
||||
return this.b == -1.0F ? true : this.a.n(blockposition) < (double) (this.b * this.b);
|
||||
}
|
||||
|
||||
public void a(BlockPosition blockposition, int i) {
|
||||
this.a = blockposition;
|
||||
this.b = (float) i;
|
||||
}
|
||||
|
||||
public BlockPosition dt() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
public float du() {
|
||||
return this.b;
|
||||
}
|
||||
|
||||
public void dv() {
|
||||
this.b = -1.0F;
|
||||
}
|
||||
|
||||
public boolean dw() {
|
||||
return this.b != -1.0F;
|
||||
}
|
||||
|
||||
protected void dl() {
|
||||
super.dl();
|
||||
if (this.isLeashed() && this.getLeashHolder() != null && this.getLeashHolder().world == this.world) {
|
||||
Entity entity = this.getLeashHolder();
|
||||
|
||||
this.a(new BlockPosition((int) entity.locX, (int) entity.locY, (int) entity.locZ), 5);
|
||||
float f = this.g(entity);
|
||||
|
||||
if (this instanceof EntityTameableAnimal && ((EntityTameableAnimal) this).isSitting()) {
|
||||
if (f > 10.0F) {
|
||||
this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE)); // CraftBukkit
|
||||
this.unleash(true, true);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.u(f);
|
||||
if (f > 10.0F) {
|
||||
this.world.getServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE)); // CraftBukkit
|
||||
this.unleash(true, true);
|
||||
this.goalSelector.c(1);
|
||||
} else if (f > 6.0F) {
|
||||
double d0 = (entity.locX - this.locX) / (double) f;
|
||||
double d1 = (entity.locY - this.locY) / (double) f;
|
||||
double d2 = (entity.locZ - this.locZ) / (double) f;
|
||||
|
||||
this.motX += d0 * Math.abs(d0) * 0.4D;
|
||||
this.motY += d1 * Math.abs(d1) * 0.4D;
|
||||
this.motZ += d2 * Math.abs(d2) * 0.4D;
|
||||
} else {
|
||||
this.goalSelector.d(1);
|
||||
float f1 = 2.0F;
|
||||
Vec3D vec3d = (new Vec3D(entity.locX - this.locX, entity.locY - this.locY, entity.locZ - this.locZ)).a().a((double) Math.max(f - 2.0F, 0.0F));
|
||||
|
||||
this.getNavigation().a(this.locX + vec3d.x, this.locY + vec3d.y, this.locZ + vec3d.z, this.dx());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected double dx() {
|
||||
return 1.0D;
|
||||
}
|
||||
|
||||
protected void u(float f) {}
|
||||
}
|
||||
Reference in New Issue
Block a user