Repeated biome changes done using World.setBiome() are undone in random chunks when the server is stopped.
What chunks' biomes are reverted is unpredictable; these factors seem to come into play:
- How often the chunks have had their biomes set with World.setBiome()
- Whether the chunk is a spawn chunk or not
- Whether the chunk was in player's view distance when the server is stopped
- Whether a player was inside the chunk during the session
Reproduction
- Set up a Spigot server with level-type=FLAT, gamemode=1 and a new world
- Add TestDummy-1.0.0.jar to the plugins folder
- TestDummy is a plugin written for this issue from this commit
- Alternatively, use WorldEdit, a large selection and /setbiome
- Start the server and join it. Observe surrounding chunks are PLAINS biome
- Execute /test JUNGLE - This sets columns in a 256 block radius around you to JUNGLE biome
- Execute /stop, then restart the server
- Join the server. Observe surrounding chunks are JUNGLE biome, as expected
- Fly a random direction for approx. 100 blocks
- Execute /test MESA
- Execute /stop, then restart the server
- Join the server
- Expected: Surrounding chunks are MESA biome
- Actual: https://vanderprot.gamealition.com/img/f91ec.mp4
- Only the spawn chunks flown through are changed
- Outside of spawn chunks, only random (unloaded?) chunks outside are changed
Notes
- First discovered on 1.9 live server, reproducible on 1.10 and 1.11 Spigot and PaperSpigot servers using WorldEdit's //setbiome