diff --git a/core/src/main/java/org/geysermc/geyser/translator/sound/block/OpenableSoundInteractionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/sound/block/OpenableSoundInteractionTranslator.java index f25b22324..ecf10bd86 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/sound/block/OpenableSoundInteractionTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/sound/block/OpenableSoundInteractionTranslator.java @@ -26,7 +26,9 @@ package org.geysermc.geyser.translator.sound.block; import org.cloudburstmc.math.vector.Vector3f; +import org.cloudburstmc.protocol.bedrock.data.LevelEvent; import org.cloudburstmc.protocol.bedrock.data.SoundEvent; +import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket; import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEventPacket; import org.geysermc.geyser.level.block.type.BlockState; import org.geysermc.geyser.session.GeyserSession; @@ -49,6 +51,12 @@ public class OpenableSoundInteractionTranslator implements BlockSoundInteraction levelSoundEventPacket.setSound(event); levelSoundEventPacket.setExtraData(session.getBlockMappings().getBedrockBlock(state).getRuntimeId()); session.sendUpstreamPacket(levelSoundEventPacket); + // To ensure that the doors don't do weird double closing sometimes + LevelEventPacket levelEventPacket = new LevelEventPacket(); + levelEventPacket.setType(LevelEvent.SOUND_DOOR_OPEN); + levelEventPacket.setPosition(position); + levelEventPacket.setData(-1); + session.sendUpstreamPacket(levelEventPacket); } private SoundEvent getSound(boolean open, String identifier) {