Closed jglrxavpok closed 1 year ago
List of elements to implement:
Both Minestom and the internals of Hephaistos should use the streaming API. (Will be updated when new things are found)
Streaming needs to provide both a way to read and a way to write (Minestom will need it). Which features you want to use need to be explicit (to avoid reading stuff we don't care about, and simplify code). Depending on the implementation, this can be an abstract class with empty default implementations, or a bit mask.
Features used by Minestom:
Features represented with the current Hephaistos ChunkColumn/ChunkSection API
New features:
Features used by Minestom:
Features used by Minestom:
Features represented with the current Hephaistos ChunkColumn/ChunkSection API
New features:
Features used by Minestom:
Outside of the """new""" entities/ region files, all readers are ready.
Was done in commit 6b386efa4f610f8abb7917326cd88f1b22ab76d4
See https://github.com/Minestom/Minestom/issues/422
Minestom uses ChunkColumn only for reading and writing to storage. Following my discussion with @TheMode on Discord, an API to stream chunk contents instead of caching them could be introduced to reduce memory allocations.
Below is a memory flame graph following chunk loading with the AnvilLoader of Minestom