ldtteam / Structurize

Minecraft Structures
GNU General Public License v3.0
44 stars 45 forks source link

[RFC] Smarter blueprint placer #646

Open Nightenom opened 7 months ago

Nightenom commented 7 months ago

State now: placer logic is generally dumb, the only reason it works for most of common blueprints is that it builds from bottom to top.

Potential upgrade: a) iterate the structure unlimited times (unlike 4 block placement stages now) b) every iteration place such blocks that BlockState#canSurvive(...) in target world, requires special attention for falling blocks (again...)

Solves: Blocks requiring support without actually checking for support existence (but falling. blocks..) - dripstones, hanging chains Removes the relatively new block solidness issue out of placer logic (we still need it elsewhere tho)

Doesn't solve: Pistons and other blocks which may change size or anyhow change local context

Issues: 1) need proper optimizations to fast skip blockPoses that are done already (without world blockstate check? skip fully built layers/rows?) 2) moving redstone blocks (pistons only?) may actually become even worse - solution: special placement handler for powered pistons (mby do additional stage after blocks before entities to check that all redstone blocks incl. actuators are in requested state within one tick)

someaddons commented 7 months ago

not to mention fluids that flow after placed and change the world state of multiple positions^^

Nightenom commented 7 months ago

Imho all fluids should get removed within single tick as first step, then normally placed after blocks before entities - handler should get count diff as result Also need of temporary boxes for ocean placement.. or permanent boxes for caves

someaddons commented 7 months ago

not that easy to seperate due to waterlogged blocks also flowing

Raycoms commented 7 months ago

Imho all fluids should get removed within single tick as first step, then normally placed after blocks before entities - handler should get count diff as result Also need of temporary boxes for ocean placement.. or permanent boxes for caves

Not at the first step, else they flow back in. Should be removed after the solids were placed