Block Engine

The block engines can manage multiple BlockWorld object.


Each BlockWorld represents a block world with at most 32000x32000x256, where 256 is height of the world. Each BlockWorld will dynamically and asynchronously load BlockRegion on demand.


It manages 512x512x256 blocks, which are saved into a single file.


It caches model and light Data for 16x16x16 region. Each chunk is converted and added to a queue into BlockRenderTask for sorting and rendering.


It calculates sun and block lighting in a separate thread and save the result into BlockChunk for rendering.


BlockModel is usually cube 3D model, but it is not a 3D object directly used in rendering, instead it is actually used in BlockTemplate to provide rendering and physics data.