options: material: lime wool function genHelix(loc: location, radius: number, angle: number, height: number, yStep: number, startAngle: number=0): {_radius}, {_height} and {_yStep} >= 0 set {_a} to {_startAngle} set {_location} to y-loc of {_loc} loop 1000000 times: if {_location} <= ((y-loc of {_loc}) + {_height}): set {_newBlock} to block at location(((x-loc of {_loc}) + (cos({_a}) * {_radius})), {_location}, ((z-loc of {_loc}) + (sin({_a}) * {_radius})), (world of {_loc})) set {helix::%{_newBlock}%} to {_newBlock} add {_yStep} to {_location} add {_angle} to {_a} else: stop command helix : usage: &l/helix &3[radius of helix] &b[angle] &3[total height] &b[y move/step] &3[starting angle 0=south] trigger: delete {helix::*} set {nowHelix} to now create new section with ({_startLoc}, {_radius}, {_angle}, {_height}, {_yStep} and {_startAngle}) stored in {_}: genHelix({_startLoc}, {_radius}, {_angle}, {_height}, {_yStep}, {_startAngle}) run section {_} async with ((location of block above targeted block), arg 1, arg 2, arg 3, arg 4, and arg 5) and wait loop {helix::*}: {@material}.getBlock().setBlock(loop-value, false) send "&eElapsed time: &7%difference between {nowHelix} and now%" and "&eBlocks amount: &7%size of {helix::*}%"