Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- local x,z = 320,611
- -- local dx,dz = 220,602
- local run = commands.exec
- local particle_weak = "minecraft:campfire_cosy_smoke"
- local particle_strong = "minecraft:campfire_signal_smoke"
- local particle_fire = "minecraft:dust 1 0.8 0.25 1"
- local function select(n, ...)
- return arg[n]
- end
- local function min(a,b)
- return a>b and b or a
- end
- local function max(a,b)
- return a>b and a or b
- end
- local function border(v,a,b)
- return max(min(v,b),a)
- end
- local abs = math.abs
- local function main(x,z,dx,dz)
- local tag = "transport_pod"..os.time("utc")
- local tag_glass = tag.."_glass"
- local function particle_impact()
- run("execute at @e[tag="..tag..",limit=1] run particle "..particle_weak.." ~ ~2 ~ 0.5 1 0.5 0.1 500")
- end
- local function particle_trail()
- run("execute at @e[tag="..tag..",limit=1] run particle "..particle_strong.." ~ ~ ~ 0 0 0 0.01 30")
- run("execute at @e[tag="..tag..",limit=1] run particle "..particle_fire.." ~ ~ ~ 0 0 0 0.01 50")
- end
- run("summon minecraft:minecart "..x.." 200 "..z.." {\"NoGravity\":1,\"Tags\":[\""..tag.."\"]}")
- run("team join Launch @e[tag="..tag.."]")
- run("execute as @e[tag="..tag.."] run data merge entity @s {\"NoGravity\":0b}") -- start fall
- while not run("execute if entity @e[tag="..tag..",nbt={\"OnGround\":1b}]") do
- particle_trail()
- end -- fall end
- particle_impact()
- run("execute at @e[tag="..tag.."] run summon minecraft:falling_block ~ ~0.6 ~ {\"NoGravity\":1,\"Tags\":[\""..tag_glass.."\"],\"BlockState\":{\"Name\":\"glass\"},\"Time\":-1000000}")
- run("execute as @e[tag="..tag.."] run data merge entity @s {\"NoGravity\":1b}")
- while not run("execute at @e[tag="..tag.."] if entity @a[distance=..0.5]") do end
- sleep(2) -- waiting launch
- run("kill @e[tag="..tag_glass.."]")
- run("execute as @e[tag="..tag.."] run data modify entity @s Motion[1] set value 0.5d")
- local speed = 0.5
- while select(3,run("data get entity @e[tag="..tag..",limit=1] Pos[1]"))<400 do
- speed=speed*1.05
- if speed>11 then speed = 11 end
- run("execute as @e[tag="..tag.."] run data modify entity @s Motion[1] set value "..speed.."d")
- run("execute as @e[tag="..tag_glass.."] run data modify entity @s Motion[1] set value "..speed.."d")
- particle_trail()
- end -- reached y=400
- -- checking distance
- local function get_dist_x()
- return select(3,run("data get entity @e[tag="..tag..",limit=1] Pos[0]"))-dx
- end
- local function get_dist_z()
- return select(3,run("data get entity @e[tag="..tag..",limit=1] Pos[2]"))-dz
- end
- local need_motion = abs(get_dist_x())>3 or abs(get_dist_z())>3
- while need_motion do -- moving to point
- local motion_x = -border(get_dist_x(),-10,10)
- local motion_z = -border(get_dist_z(),-10,10)
- if abs(motion_x)<=3 then motion_x=0 end
- if abs(motion_z)<=3 then motion_z=0 end
- need_motion = motion_x~=0 or motion_z~=0
- particle_trail()
- run("execute as @e[tag="..tag.."] run data modify entity @s Motion set value ["..motion_x.."d,0d,"..motion_z.."d]")
- end
- run("execute as @e[tag="..tag.."] run data modify entity @s Motion[1] set value 0d")
- run("execute as @e[tag="..tag.."] run data merge entity @s {\"NoGravity\":0b}")
- while not run("execute if entity @e[tag="..tag..",nbt={\"OnGround\":1b}]") and run("execute if entity @e[tag="..tag.."]") do
- particle_trail()
- run("execute at @e[tag="..tag.."] run effect give @e[distance=..1] resistance 1 255 true")
- end
- particle_impact()
- sleep(2)
- run("kill @e[tag="..tag.."]")
- end
- return main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement