summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/EntityLiving.java
diff options
context:
space:
mode:
authorfeildmaster <admin@feildmaster.com>2012-12-23 05:49:03 -0600
committerfeildmaster <admin@feildmaster.com>2012-12-23 07:29:06 -0600
commitced06463510e7836de72e259bcd17e8ab1629877 (patch)
tree4c694e6ccf866b9acb45ca3a8ea8302e4c13894a /src/main/java/net/minecraft/server/EntityLiving.java
parent4e1793f363fad0ecb8c519526f1b93d8fd53377d (diff)
downloadcraftbukkit-ced06463510e7836de72e259bcd17e8ab1629877.tar
craftbukkit-ced06463510e7836de72e259bcd17e8ab1629877.tar.gz
craftbukkit-ced06463510e7836de72e259bcd17e8ab1629877.tar.lz
craftbukkit-ced06463510e7836de72e259bcd17e8ab1629877.tar.xz
craftbukkit-ced06463510e7836de72e259bcd17e8ab1629877.zip
Implement entity max health methods. Adds BUKKIT-266
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityLiving.java')
-rw-r--r--src/main/java/net/minecraft/server/EntityLiving.java33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index bae495a2..005b8617 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -106,8 +106,11 @@ public abstract class EntityLiving extends Entity {
private int bV = 0;
private Entity bW;
protected int bI = 0;
- public int expToDrop = 0; // CraftBukkit
- public int maxAirTicks = 300; // CraftBukkit
+ // CraftBukkit start
+ public int expToDrop = 0;
+ public int maxAirTicks = 300;
+ public int maxHealth = this.getMaxHealth();
+ // CraftBukkit end
public EntityLiving(World world) {
super(world);
@@ -418,6 +421,14 @@ public abstract class EntityLiving extends Entity {
return 0;
}
}
+
+ public int getScaledHealth() {
+ if (this.maxHealth != this.getMaxHealth() && this.getHealth() > 0) {
+ return this.getHealth() * this.getMaxHealth() / this.maxHealth + 1;
+ } else {
+ return this.getHealth();
+ }
+ }
// CraftBukkit end
protected void aP() {
@@ -626,10 +637,11 @@ public abstract class EntityLiving extends Entity {
if (!event.isCancelled()) {
this.health += event.getAmount();
}
- // CraftBukkit end
- if (this.health > this.getMaxHealth()) {
- this.health = this.getMaxHealth();
+ // this.getMaxHealth() -> this.maxHealth
+ if (this.health > this.maxHealth) {
+ this.health = this.maxHealth;
+ // CraftBukkit end
}
this.noDamageTicks = this.maxNoDamageTicks / 2;
@@ -1138,12 +1150,19 @@ public abstract class EntityLiving extends Entity {
}
nbttagcompound.set("DropChances", nbttaglist1);
+ nbttagcompound.setInt("Bukkit.MaxHealth", this.maxHealth); // CraftBukkit
}
public void a(NBTTagCompound nbttagcompound) {
this.health = nbttagcompound.getShort("Health");
+ // CraftBukkit start
+ if (nbttagcompound.hasKey("Bukkit.MaxHealth")) {
+ this.maxHealth = nbttagcompound.getInt("Bukkit.MaxHealth");
+ }
+
if (!nbttagcompound.hasKey("Health")) {
- this.health = this.getMaxHealth();
+ this.health = this.maxHealth; // this.getMaxHealth() -> this.maxHealth
+ // CraftBukkit
}
this.hurtTicks = nbttagcompound.getShort("HurtTime");
@@ -1811,7 +1830,7 @@ public abstract class EntityLiving extends Entity {
if (this.aG() == null) {
return 3;
} else {
- int i = (int) ((float) this.health - (float) this.getMaxHealth() * 0.33F);
+ int i = (int) ((float) this.health - (float) this.maxHealth * 0.33F); // this.getMaxHealth() -> this.maxHealth
i -= (3 - this.world.difficulty) * 4;
if (i < 0) {