diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java index 356d55b23..145421a5f 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java +++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java @@ -397,6 +397,17 @@ public class SessionPlayerEntity extends PlayerEntity { super.setAbsorptionHearts(entityMetadata); } + @Override + public void setLivingEntityFlags(ByteEntityMetadata entityMetadata) { + super.setLivingEntityFlags(entityMetadata); + + // Forcefully update flags since we're not tracking thing like using item properly. + // For eg: when player start using item client-sided (and the USING_ITEM flag is false on geyser side) + // If the server disagree with the player using item state, it will send a metadata set USING_ITEM flag to false + // But since it never got set to true, nothing changed, causing the client to not receive the USING_ITEM flag they're supposed to. + this.forceFlagUpdate(); + } + @Override public void resetMetadata() { super.resetMetadata();