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 bcd32253f..58b7ffddb 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 @@ -254,4 +254,17 @@ public class SessionPlayerEntity extends PlayerEntity { public UUID getTabListUuid() { return session.getAuthData().uuid(); } + + public void resetMetadata() { + // Reset all metadata to their default values + // This is used when a player respawns + this.initializeMetadata(); + + // Reset air + this.resetAir(); + } + + public void resetAir() { + this.setAirSupply(getMaxAir()); + } } diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/EntityCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/EntityCache.java index 9dc89215a..8a4b9cb6c 100644 --- a/core/src/main/java/org/geysermc/geyser/session/cache/EntityCache.java +++ b/core/src/main/java/org/geysermc/geyser/session/cache/EntityCache.java @@ -162,4 +162,9 @@ public class EntityCache { public List getTickableEntities() { return tickableEntities; } + + public void removeAllBossBars() { + bossBars.values().forEach(BossBar::removeBossBar); + bossBars.clear(); + } } diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java index 3b9f29b89..e7539bd0f 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java @@ -64,12 +64,17 @@ public class JavaLoginTranslator extends PacketTranslator