PaperMC / Paper

The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
https://papermc.io/
Other
10.04k stars 2.34k forks source link

Partially Generated Chunks are not saved in some situations #6340

Open FrankTCA opened 3 years ago

FrankTCA commented 3 years ago

Expected behavior

Member of OpenTerrainGenerator dev team here.

We're running into issues with a Minecraft bug: MC-224729. It is causing chunks to be generated twice, which some of our structures don't support.

Observed/Actual behavior

Here are some images of the glitch in action.

Large Rock

Tree

The following issues appear in vanilla Minecraft.

Vanilla -- happening in spawn chunks

Vanilla -- Overload lighting engine

Another vanilla screenshot

Steps/models to reproduce

While you may be able to find this in vanilla, it is easier to see in OTG. Start by loading up an OTG preset using the OTG 1.16.5 Alpha. Wildlands, Biome Bundle, Dregora, etc should all work. Once the spawn chunks are loaded in, stop the server, and then begin exploring around. If you're lucky enough, you'll see some odd chunk borders where structures were cut off.

You can also attempt to find this is a vanilla world but it may be less noticable.

Plugin list

OpenTerrainGenerator 1.16.5 Alpha 0.0.17

Paper version

This server is running Paper version git-Paper-783 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT) You are running the latest version

Agreements

Other

Here's the mixins we used to fix the problem on Forge: MixinChunkManager.java

What one of our devs did but for Fabric: MixinThreadedAnvilChunkStorage.java

PG85 commented 3 years ago

As described in the Mojang issue, the problem is reproducible in a number of ways. The easiest way is to generate a world (spawn area), leave the world (saves/unloads), rejoin the world (loads). One row of chunks around the edges of the previously generated area will have been dropped and is generated a second time. If you have some way of marking chunks that are generated twice across sessions (like OTG's BO4 structures), the bug is clearly visible. This happens on every save/unload/load by the way, and affects all decoration resources.

The mixins for Forge only fix the save on exit code path, SuperCoder's Fabric mixins also fix the auto-save path. We've used the Forge mixins for a while, they fix the issue when saving on exit and don't appear to cause any issues. Mojang has confirmed the issue for 1.16.5 and 1.17.1.