Implement API for mob despawn when away from players. Adds BUKKIT-2986

As of 1.4 mobs have a flag to determine if they despawn when away from a
player or not. Unfortunately animals still use their own system to prevent
despawning instead of making use of this flag. This change modifies them
to use the new system (defaults to true) and to add API for plugins to adjust
this.
Dieser Commit ist enthalten in:
Travis Watkins 2012-12-04 18:33:44 -06:00
Ursprung 11894784b0
Commit 4dadf0e2b5
2 geänderte Dateien mit 11 neuen und 3 gelöschten Zeilen

Datei anzeigen

@ -87,7 +87,7 @@ public abstract class EntityLiving extends Entity {
public boolean bp = false;
public int bq = 0;
protected boolean canPickUpLoot = false;
private boolean persistent = false;
public boolean persistent = (this instanceof EntityAnimal); // CraftBukkit - private -> public, change value
protected int bs;
protected double bt;
protected double bu;
@ -1394,11 +1394,11 @@ public abstract class EntityLiving extends Entity {
double d2 = entityhuman.locZ - this.locZ;
double d3 = d0 * d0 + d1 * d1 + d2 * d2;
if (this.bj() && d3 > 16384.0D) {
if (d3 > 16384.0D) { // CraftBukkit - remove this.bj() check
this.die();
}
if (this.bA > 600 && this.random.nextInt(800) == 0 && d3 > 1024.0D && this.bj()) {
if (this.bA > 600 && this.random.nextInt(800) == 0 && d3 > 1024.0D) { // CraftBukkit - remove this.bj() check
this.die();
} else if (d3 < 1024.0D) {
this.bA = 0;

Datei anzeigen

@ -303,4 +303,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
public boolean hasLineOfSight(Entity other) {
return getHandle().aA().canSee(((CraftEntity) other).getHandle()); // az should be getEntitySenses
}
public boolean getRemoveWhenFarAway() {
return !getHandle().persistent;
}
public void setRemoveWhenFarAway(boolean remove) {
getHandle().persistent = !remove;
}
}