From adcb293a036c88a4977f05bb5ff4e0d91b8ec9d1 Mon Sep 17 00:00:00 2001 From: Wesley Wolfe Date: Tue, 2 Jul 2013 23:08:55 -0500 Subject: [PATCH] Fix scaling for player health. Fixes BUKKIT-4431 --- .../java/net/minecraft/server/EntityPlayer.java | 4 ++-- .../org/bukkit/craftbukkit/entity/CraftPlayer.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java index 69a7679233..b38aa108f4 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -233,8 +233,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } if (this.getHealth() != this.bP || this.bQ != this.foodData.a() || this.foodData.e() == 0.0F != this.bR) { - // CraftBukkit - this.getHealth() -> this.getScaledHealth() - Magic number 20 -> original max health - this.playerConnection.sendPacket(new Packet8UpdateHealth((float) (this.getHealth() * this.getMaxHealth() / 20.0D), this.foodData.a(), this.foodData.e())); + // CraftBukkit - Optionally scale health + this.playerConnection.sendPacket(new Packet8UpdateHealth(getBukkitEntity().getScaledHealth(), this.foodData.a(), this.foodData.e())); this.bP = this.getHealth(); this.bQ = this.foodData.a(); this.bR = this.foodData.e() == 0.0F; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 583b99c980..977adff6e1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -61,6 +61,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { private final Set channels = new HashSet(); private final Map hiddenPlayers = new MapMaker().softValues().makeMap(); private int hash = 0; + private boolean scaledHealth; public CraftPlayer(CraftServer server, EntityPlayer entity) { super(server, entity); @@ -997,4 +998,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.server.getScoreboardManager().setPlayerBoard(this, scoreboard); } + + public float getScaledHealth() { + return (float) (this.scaledHealth ? getHealth() / getMaxHealth() * 20.0D : getHealth()); + } + + public void setScaleHealth(boolean scale) { + this.scaledHealth = scale; + } + + public boolean isScaledHealth() { + return this.scaledHealth; + } }