OpenCubicChunks / CubicChunks2

Infinite* height mod for Minecraft - rewrite for versions above 1.12
MIT License
78 stars 19 forks source link

Upscaling cube size #12

Open NotStirred opened 4 years ago

NotStirred commented 4 years ago

After thinking this through a little more I've realised there are some major difficulties in loading a world with a smaller cube size than the one currently selected (upscaling).

I believe our original approach was to save the world as it's current cube size, and on loading it back if the cube size doesn't match the world will be converted (either entirely, or on the fly). The major problem is that of missing cubes. Given this cube to upscale: image You would first have to generate the missing sub-cube, and then convert it to the larger cube size. However, as the cube generation works entirely through a flag that changes Mixins, it isn't possible to generate cubes of different sizes at the same time.

Which leaves a few options:

sirati commented 3 years ago

I think there is another option: as missing cubes will only happen at the border, i think it is reasonable to assume that the player was not yet able to change the content of these cubes. So it would be be possible to just drop any cube, if any sub-cube is missing. This would only be problematic when upscaling to a cube-size more then twice the previous, or doubling cube size multiple times in quick sucession

NotStirred commented 3 years ago

given max cube size is 128 blocks, if the player had a short render distance it's possible that one of the smaller cubes in the new border cubes has been edited. So far the current plan for this is to generate the cube again, and slap any existing data on top