[RFC] Smarter blueprint placer
Nightenom opened this issue ยท 4 comments
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:
- need proper optimizations to fast skip blockPoses that are done already (without world blockstate check? skip fully built layers/rows?)
- 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)
not to mention fluids that flow after placed and change the world state of multiple positions^^
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
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