SuccessChanges

Summary

  1. Allow Saving of Oversized Chunks - READ COMMIT DETAILS!!! (commit: e8f86cb) (details)
Commit e8f86cb97d5466c02e9e95384d727d7375c2b695 by aikar
Allow Saving of Oversized Chunks - READ COMMIT DETAILS!!!
Please test this build on a local TEST SERVER before sending to your
live server!
PaperMC is not responsible for any data loss to your chunks.
-------------------------------------------------------------------
The Minecraft World Region File format has a hard cap of 1MB per chunk.
This is due to the fact that the header of the file format only
allocates a single byte for sector count, meaning a maximum of 256
sectors, at 4k per sector.
This limit can be reached fairly easily with books, resulting in the
chunk being unable to save to the world. Worse off, is that nothing
printed when this occured, and silently performed a chunk rollback on
next load.
This leads to security risk with duplication and is being actively
exploited.
This patch catches the too large scenario, falls back and moves any
large Entity or Tile Entity into a new compound, and this compound is
saved into a different file.
On Chunk Load, we check for oversized status, and if so, we load the
extra file and merge the Entities and Tile Entities from the oversized
chunk back into the level to then be loaded as normal.
Once a chunk is returned back to normal size, the oversized flag will
clear, and no extra data file will exist.
This fix maintains compatability with all existing Anvil Region Format
tools as it does not alter the save format. They will just not know
about the extra entities.
This fix also maintains compatability if someone switches server jars to
one without this fix, as the data will remain in the oversized file.
Once the server returns to a jar with this fix, the data will be
restored.
(commit: e8f86cb)
The file was addedSpigot-Server-Patches/0373-Allow-Saving-of-Oversized-Chunks.patch