GeyserMC / Geyser

A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
https://geysermc.org
MIT License
4.63k stars 663 forks source link

Persistent "fake" rain on Bedrock clients #3679

Open axieum opened 1 year ago

axieum commented 1 year ago

Describe the bug

Occasionally, all Bedrock players' rain (weather) will never end until they all log out and back in. This appears to affect all Bedrock players simultaneously.

To Reproduce

  1. Login to Geyser-Fabric server from Bedrock client
  2. Wait for rain
  3. Confirm with Java players if it is actually raining
  4. If fake rain, logout and back in, notice rain has stopped

Expected behaviour

The rain is in sync with Java clients, and stops with everyone else.

Screenshots / Videos

https://user-images.githubusercontent.com/7577851/232031228-c1bae83d-dc49-47ed-8be7-1340f9e56144.mp4

Notice this player's Conduit effect is not reaching them through the rain - it is fake rain.

It's quite hard to capture "proof" of this bug without everyone's POVs.

Server Version and Plugins

No response

Geyser Dump

https://dump.geysermc.org/OACSRpUtY3yBqOwBnl3vg259Fpmyy0HT

Geyser Version

2.1.0-SNAPSHOT (git-master- 0f99abc )

Minecraft: Bedrock Edition Device/Version

1.19.73, Xbox Series S|X

Additional Context

/seedSeed: [-7181305874542611689] /time query gametimeThe time is 27583805

axieum commented 1 year ago

A player with the fake rain tried going to the Nether and back. It was still raining for them, so changing world/dimension doesn't fix it. Seems like you HAVE TO re-login.

Kas-tle commented 1 year ago

Please try removing all mods and see if this issue persists. For this we would likely need to see the packets to see what's going on. Does this occur when rain is started and stopped via the weather command?

kamil445 commented 1 year ago

I also have this issue, using command /weather sun doesn't change weather for bedrock clients, they need to relog.

BigJoys commented 1 year ago

The error also exists with Spigot/Paper Standalone Geyser

axieum commented 1 year ago

Okay, the rain just started for all the Bedrock players at the same time but not the Java players.

Using /weather clear did not clear the rain for Bedrock players.

Only once I ran /weather rain so Java was also raining, did /weather clear actually clear the rain for Bedrock players.

hw2007 commented 1 year ago

Something I've noticed is that this tends to happen more often if you have a server with players-sleeping-percentage gamerule set to 0. Then, if its raining and a java player sleeps away the night and the rain, it will continue to rain for bedrock players almost every time.

axieum commented 1 year ago

@hw2007, I think you're onto something with that; our server's playersSleepingPercentage gamerule is currently set to 0 too.

valaphee commented 1 year ago

Its a known Minecraft bug: https://bugs.mojang.com/browse/MCPE-131325 (for 2 years now), solution would be to pro-actively send stop rain in fixed intervals (maybe the min rain interval, and when joining)

I'm wondering if stopWeatherCycle gamerule would help.

DuneSciFye commented 1 year ago

playersSleepingPercentage is set to 100 for me, and I also experience this rain issue.

agoniaprivat commented 1 year ago

Can confirm. Pictures taken same time: image

image

vitorgueler22 commented 1 year ago

I just found a little workaround for this... I'll try to explain the best as I can! The problem is basically the natural vanilla weather cycle, so what I did was create my own weather cycle, as it responds perfectly to commands... First, I switched off the doWeatherCycle gamerule (that's enough for fixing, but it will completely get rid of weather changes for obvious reasons). But I didn't want to get rid of rain, so I created a schedule with a plugin named CommandTimer, even with doWeatherCycle disabled, you can still issue weather commands (though it may execute them eternally, if you issue rain it will rain forever). With the plugin installed and doWeatherCycle disabled, I created two instances (tasks), one called rain and other called clear (needed to reset the weather with doWeatherCycle false). On the rain task, I've put two commands (minecraft:weather rain and minecraft:weather thunder). I've set them to "RANDOM", so it'll randomly pick one of the two, and the interval I've put 2 hours, meaning every two hours it'll be executed. On the clear task, I've used (minecraft:weather clear) only, with a interval of 2 hours and 17 minutes (meaning the rain will last 17 minutes and then reset to clear). All comands are set to be executed by the CONSOLE! When finished doing that, just turn on both instances and voilà, you have a kind of programmed synced weather cycle without any weather bugs. It may not be the most natural solution, but it works!

TalonFloof commented 3 months ago

I've actually noticed that this issue still persists, I wonder if this will be looked into eventually because it can be annoying at times.

sanforjr2021 commented 1 month ago

Can confirm it is still a bug for our server. Pufferfish 1.20.4. Latest geyser velocity