Advertisement
AdditionalPylons

Transport Pods

Jan 28th, 2025 (edited)
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.65 KB | None | 0 0
  1. -- local x,z = 320,611
  2. -- local dx,dz = 220,602
  3. local run = commands.exec
  4. local particle_weak = "minecraft:campfire_cosy_smoke"
  5. local particle_strong = "minecraft:campfire_signal_smoke"
  6. local particle_fire = "minecraft:dust 1 0.8 0.25 1"
  7. local function select(n, ...)
  8.     return arg[n]
  9. end
  10. local function min(a,b)
  11.     return a>b and b or a
  12. end
  13. local function max(a,b)
  14.     return a>b and a or b
  15. end
  16. local function border(v,a,b)
  17.     return max(min(v,b),a)
  18. end
  19. local abs = math.abs
  20. local function main(x,z,dx,dz)
  21.     local tag = "transport_pod"..os.time("utc")
  22.     local tag_glass = tag.."_glass"
  23.     local function particle_impact()
  24.         run("execute at @e[tag="..tag..",limit=1] run particle "..particle_weak.." ~ ~2 ~ 0.5 1 0.5 0.1 500")
  25.     end
  26.     local function particle_trail()
  27.         run("execute at @e[tag="..tag..",limit=1] run particle "..particle_strong.." ~ ~ ~ 0 0 0 0.01 30")
  28.         run("execute at @e[tag="..tag..",limit=1] run particle "..particle_fire.." ~ ~ ~ 0 0 0 0.01 50")
  29.     end
  30.     run("summon minecraft:minecart "..x.." 200 "..z.." {\"NoGravity\":1,\"Tags\":[\""..tag.."\"]}")
  31.     run("team join Launch @e[tag="..tag.."]")
  32.     run("execute as @e[tag="..tag.."] run data merge entity @s {\"NoGravity\":0b}") -- start fall
  33.     while not run("execute if entity @e[tag="..tag..",nbt={\"OnGround\":1b}]") do
  34.         particle_trail()
  35.     end -- fall end
  36.     particle_impact()
  37.     run("execute at @e[tag="..tag.."] run summon minecraft:falling_block ~ ~0.6 ~ {\"NoGravity\":1,\"Tags\":[\""..tag_glass.."\"],\"BlockState\":{\"Name\":\"glass\"},\"Time\":-1000000}")
  38.     run("execute as @e[tag="..tag.."] run data merge entity @s {\"NoGravity\":1b}")
  39.     while not run("execute at @e[tag="..tag.."] if entity @a[distance=..0.5]") do end
  40.     sleep(2) -- waiting launch
  41.     run("kill @e[tag="..tag_glass.."]")
  42.     run("execute as @e[tag="..tag.."] run data modify entity @s Motion[1] set value 0.5d")
  43.     local speed = 0.5
  44.     while select(3,run("data get entity @e[tag="..tag..",limit=1] Pos[1]"))<400 do
  45.         speed=speed*1.05
  46.         if speed>11 then speed = 11 end
  47.         run("execute as @e[tag="..tag.."] run data modify entity @s Motion[1] set value "..speed.."d")
  48.         run("execute as @e[tag="..tag_glass.."] run data modify entity @s Motion[1] set value "..speed.."d")
  49.         particle_trail()
  50.     end -- reached y=400
  51.     -- checking distance
  52.     local function get_dist_x()
  53.         return select(3,run("data get entity @e[tag="..tag..",limit=1] Pos[0]"))-dx
  54.     end
  55.     local function get_dist_z()
  56.         return select(3,run("data get entity @e[tag="..tag..",limit=1] Pos[2]"))-dz
  57.     end
  58.     local need_motion = abs(get_dist_x())>3 or abs(get_dist_z())>3
  59.     while need_motion do -- moving to point
  60.         local motion_x = -border(get_dist_x(),-10,10)
  61.         local motion_z = -border(get_dist_z(),-10,10)
  62.         if abs(motion_x)<=3 then motion_x=0 end
  63.         if abs(motion_z)<=3 then motion_z=0 end
  64.         need_motion = motion_x~=0 or motion_z~=0
  65.         particle_trail()
  66.         run("execute as @e[tag="..tag.."] run data modify entity @s Motion set value ["..motion_x.."d,0d,"..motion_z.."d]")
  67.     end
  68.     run("execute as @e[tag="..tag.."] run data modify entity @s Motion[1] set value 0d")
  69.     run("execute as @e[tag="..tag.."] run data merge entity @s {\"NoGravity\":0b}")
  70.     while not run("execute if entity @e[tag="..tag..",nbt={\"OnGround\":1b}]") and run("execute if entity @e[tag="..tag.."]") do
  71.         particle_trail()
  72.         run("execute at @e[tag="..tag.."] run effect give @e[distance=..1] resistance 1 255 true")
  73.     end
  74.     particle_impact()
  75.     sleep(2)
  76.     run("kill @e[tag="..tag.."]")
  77. end
  78. return main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement