summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java102
1 files changed, 79 insertions, 23 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 666d8e09..bd00911b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -11,6 +11,7 @@ import net.minecraft.server.EntityArrow;
import net.minecraft.server.EntityEgg;
import net.minecraft.server.EntityEnderDragon;
import net.minecraft.server.EntityEnderPearl;
+import net.minecraft.server.EntityInsentient;
import net.minecraft.server.EntityLargeFireball;
import net.minecraft.server.EntityLiving;
import net.minecraft.server.EntitySmallFireball;
@@ -51,6 +52,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.BlockIterator;
+import org.bukkit.util.NumberConversions;
import org.bukkit.util.Vector;
public class CraftLivingEntity extends CraftEntity implements LivingEntity {
@@ -59,16 +61,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
public CraftLivingEntity(final CraftServer server, final EntityLiving entity) {
super(server, entity);
- if (!(this instanceof HumanEntity)) {
+ if (entity instanceof EntityInsentient) {
equipment = new CraftEntityEquipment(this);
}
}
- public int getHealth() {
+ public double getHealth() {
return Math.min(Math.max(0, getHandle().getHealth()), getMaxHealth());
}
- public void setHealth(int health) {
+ public void setHealth(double health) {
if ((health < 0) || (health > getMaxHealth())) {
throw new IllegalArgumentException("Health must be between 0 and " + getMaxHealth());
}
@@ -77,17 +79,17 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
((EntityPlayer) entity).die(DamageSource.GENERIC);
}
- getHandle().setHealth(health);
+ getHandle().setHealth((float) health);
}
- public int getMaxHealth() {
+ public double getMaxHealth() {
return getHandle().maxHealth;
}
- public void setMaxHealth(int amount) {
+ public void setMaxHealth(double amount) {
Validate.isTrue(amount > 0, "Max health must be greater than 0");
- getHandle().maxHealth = amount;
+ getHandle().maxHealth = (float) amount;
if (getHealth() > amount) {
setHealth(amount);
@@ -176,11 +178,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
getHandle().maxAirTicks = ticks;
}
- public void damage(int amount) {
+ public void damage(double amount) {
damage(amount, null);
}
- public void damage(int amount, org.bukkit.entity.Entity source) {
+ public void damage(double amount, org.bukkit.entity.Entity source) {
DamageSource reason = DamageSource.GENERIC;
if (source instanceof HumanEntity) {
@@ -190,9 +192,9 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
if (entity instanceof EntityEnderDragon) {
- ((EntityEnderDragon) entity).dealDamage(reason, amount);
+ ((EntityEnderDragon) entity).dealDamage(reason, (float) amount);
} else {
- entity.damageEntity(reason, amount);
+ entity.damageEntity(reason, (float) amount);
}
}
@@ -210,12 +212,12 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
getHandle().maxNoDamageTicks = ticks;
}
- public int getLastDamage() {
+ public double getLastDamage() {
return getHandle().lastDamage;
}
- public void setLastDamage(int damage) {
- getHandle().lastDamage = damage;
+ public void setLastDamage(double damage) {
+ getHandle().lastDamage = (float) damage;
}
public int getNoDamageTicks() {
@@ -332,15 +334,17 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
public boolean hasLineOfSight(Entity other) {
- return getHandle().getEntitySenses().canSee(((CraftEntity) other).getHandle());
+ return getHandle() instanceof EntityInsentient && ((EntityInsentient) getHandle()).getEntitySenses().canSee(((CraftEntity) other).getHandle());
}
public boolean getRemoveWhenFarAway() {
- return !getHandle().persistent;
+ return getHandle() instanceof EntityInsentient && !((EntityInsentient) getHandle()).persistent;
}
public void setRemoveWhenFarAway(boolean remove) {
- getHandle().persistent = !remove;
+ if (getHandle() instanceof EntityInsentient) {
+ ((EntityInsentient) getHandle()).persistent = !remove;
+ }
}
public EntityEquipment getEquipment() {
@@ -348,11 +352,13 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
public void setCanPickupItems(boolean pickup) {
- getHandle().canPickUpLoot = pickup;
+ if (getHandle() instanceof EntityInsentient) {
+ ((EntityInsentient) getHandle()).canPickUpLoot = pickup;
+ }
}
public boolean getCanPickupItems() {
- return getHandle().canPickUpLoot;
+ return getHandle() instanceof EntityInsentient && ((EntityInsentient) getHandle()).canPickUpLoot;
}
@Override
@@ -365,6 +371,10 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
public void setCustomName(String name) {
+ if (!(getHandle() instanceof EntityInsentient)) {
+ return;
+ }
+
if (name == null) {
name = "";
}
@@ -374,11 +384,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
name = name.substring(0, 64);
}
- getHandle().setCustomName(name);
+ ((EntityInsentient) getHandle()).setCustomName(name);
}
public String getCustomName() {
- String name = getHandle().getCustomName();
+ if (!(getHandle() instanceof EntityInsentient)) {
+ return null;
+ }
+
+ String name = ((EntityInsentient) getHandle()).getCustomName();
if (name == null || name.length() == 0) {
return null;
@@ -388,10 +402,52 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
}
public void setCustomNameVisible(boolean flag) {
- getHandle().setCustomNameVisible(flag);
+ if (getHandle() instanceof EntityInsentient) {
+ ((EntityInsentient) getHandle()).setCustomNameVisible(flag);
+ }
}
public boolean isCustomNameVisible() {
- return getHandle().getCustomNameVisible();
+ return getHandle() instanceof EntityInsentient && ((EntityInsentient) getHandle()).getCustomNameVisible();
+ }
+
+ @Deprecated
+ public int _INVALID_getLastDamage() {
+ return NumberConversions.ceil(getLastDamage());
+ }
+
+ @Deprecated
+ public void _INVALID_setLastDamage(int damage) {
+ setLastDamage(damage);
+ }
+
+ @Deprecated
+ public void _INVALID_damage(int amount) {
+ damage(amount);
+ }
+
+ @Deprecated
+ public void _INVALID_damage(int amount, Entity source) {
+ damage(amount, source);
+ }
+
+ @Deprecated
+ public int _INVALID_getHealth() {
+ return NumberConversions.ceil(getHealth());
+ }
+
+ @Deprecated
+ public void _INVALID_setHealth(int health) {
+ setHealth(health);
+ }
+
+ @Deprecated
+ public int _INVALID_getMaxHealth() {
+ return NumberConversions.ceil(getMaxHealth());
+ }
+
+ @Deprecated
+ public void _INVALID_setMaxHealth(int health) {
+ setMaxHealth(health);
}
}