|
27 | 27 |
|
28 | 28 | import org.cloudburstmc.math.vector.Vector3f; |
29 | 29 | import org.cloudburstmc.math.vector.Vector3i; |
| 30 | +import org.cloudburstmc.protocol.bedrock.data.LevelEvent; |
30 | 31 | import org.cloudburstmc.protocol.bedrock.data.PlayerActionType; |
31 | 32 | import org.cloudburstmc.protocol.bedrock.packet.ChangeDimensionPacket; |
32 | 33 | import org.cloudburstmc.protocol.bedrock.packet.ChunkRadiusUpdatedPacket; |
| 34 | +import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket; |
33 | 35 | import org.cloudburstmc.protocol.bedrock.packet.MobEffectPacket; |
34 | 36 | import org.cloudburstmc.protocol.bedrock.packet.PlayerActionPacket; |
35 | 37 | import org.cloudburstmc.protocol.bedrock.packet.StopSoundPacket; |
@@ -85,6 +87,20 @@ public static void switchDimension(GeyserSession session, JavaDimension javaDime |
85 | 87 | // Effects are re-sent from server |
86 | 88 | entityEffects.clear(); |
87 | 89 |
|
| 90 | + // Always reset weather, as it sometimes suddenly starts raining. See https://github.com/GeyserMC/Geyser/issues/3679 |
| 91 | + LevelEventPacket stopRainPacket = new LevelEventPacket(); |
| 92 | + stopRainPacket.setType(LevelEvent.STOP_RAINING); |
| 93 | + stopRainPacket.setData(0); |
| 94 | + stopRainPacket.setPosition(Vector3f.ZERO); |
| 95 | + session.sendUpstreamPacket(stopRainPacket); |
| 96 | + session.setRaining(false); |
| 97 | + LevelEventPacket stopThunderPacket = new LevelEventPacket(); |
| 98 | + stopThunderPacket.setType(LevelEvent.STOP_THUNDERSTORM); |
| 99 | + stopThunderPacket.setData(0); |
| 100 | + stopThunderPacket.setPosition(Vector3f.ZERO); |
| 101 | + session.sendUpstreamPacket(stopThunderPacket); |
| 102 | + session.setThunder(false); |
| 103 | + |
88 | 104 | finalizeDimensionSwitch(session, player); |
89 | 105 |
|
90 | 106 | // If the bedrock nether height workaround is enabled, meaning the client is told it's in the end dimension, |
|
0 commit comments