diff --git a/connector/src/main/java/org/geysermc/connector/entity/LivingEntity.java b/connector/src/main/java/org/geysermc/connector/entity/LivingEntity.java index 70b1f0104..e1c85fc08 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/LivingEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/LivingEntity.java @@ -160,7 +160,8 @@ public class LivingEntity extends Entity { */ protected AttributeData createHealthAttribute() { // Default health needs to be specified as the max health in order for maximum hearts to show correctly on mounted entities - return new AttributeData(GeyserAttributeType.HEALTH.getBedrockIdentifier(), 0f, this.maxHealth, this.health, this.maxHealth); + // Round health value up, so that Bedrock doesn't consider the entity to be dead when health is between 0 and 1 + return new AttributeData(GeyserAttributeType.HEALTH.getBedrockIdentifier(), 0f, this.maxHealth, (float) Math.ceil(this.health), this.maxHealth); } public void updateArmor(GeyserSession session) { diff --git a/connector/src/main/java/org/geysermc/connector/entity/living/monster/EnderDragonEntity.java b/connector/src/main/java/org/geysermc/connector/entity/living/monster/EnderDragonEntity.java index e6491bde5..8e9dca997 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/living/monster/EnderDragonEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/living/monster/EnderDragonEntity.java @@ -107,12 +107,6 @@ public class EnderDragonEntity extends InsentientEntity implements Tickable { } } - @Override - protected AttributeData createHealthAttribute() { - // Round health up, so that Bedrock doesn't consider the dragon to be dead when health is between 0 and 1 - return new AttributeData(GeyserAttributeType.HEALTH.getBedrockIdentifier(), 0f, this.maxHealth, (float) Math.ceil(this.health), this.maxHealth); - } - @Override public void spawnEntity(GeyserSession session) { super.spawnEntity(session); diff --git a/connector/src/main/java/org/geysermc/connector/entity/player/PlayerEntity.java b/connector/src/main/java/org/geysermc/connector/entity/player/PlayerEntity.java index 5b4e657e9..7b182da38 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/player/PlayerEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/player/PlayerEntity.java @@ -46,7 +46,6 @@ import lombok.Setter; import net.kyori.adventure.text.Component; import org.geysermc.connector.entity.Entity; import org.geysermc.connector.entity.LivingEntity; -import org.geysermc.connector.entity.attribute.GeyserAttributeType; import org.geysermc.connector.entity.living.animal.tameable.ParrotEntity; import org.geysermc.connector.entity.type.EntityType; import org.geysermc.connector.network.session.GeyserSession; @@ -245,13 +244,6 @@ public class PlayerEntity extends LivingEntity { this.position = includeOffset ? position.add(0, entityType.getOffset(), 0) : position; } - @Override - protected AttributeData createHealthAttribute() { - // Round health up, so that Bedrock doesn't consider the player to be dead when health is between 0 and 1 (half a heart) - // This issue, as of Bedrock 1.17.0, does not appear to persist with any other entity except the ender dragon - return new AttributeData(GeyserAttributeType.HEALTH.getBedrockIdentifier(), 0f, this.maxHealth, (float) Math.ceil(this.health), this.maxHealth); - } - @Override public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { super.updateBedrockMetadata(entityMetadata, session);