Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2012
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. function israil(node)
  2. local testing = minetest.get_node_group(node, "rail")
  3. return testing
  4. end
  5. forward = {x=1,y=0,z=0}
  6. backward = {x=-1,y=0,z=0}
  7. left = {x=0,y=0,z=1}
  8. right = {x=0,y=0,z=-1}
  9. stop = {x=0,y=0,z=0}
  10. function spawn_train(pos)
  11. local f = minetest.env:get_node({x=pos.x+1,y=pos.y,z=pos.z}).name
  12. local b = minetest.env:get_node({x=pos.x-1,y=pos.y,z=pos.z}).name
  13. local l = minetest.env:get_node({x=pos.x,y=pos.y,z=pos.z+1}).name
  14. local r = minetest.env:get_node({x=pos.x,y=pos.y,z=pos.z-1}).name
  15. print(dump(israil(f)))
  16. if israil(f) > 0 and israil(b) > 0 then
  17. --spawn train here
  18. forward_bogie = minetest.env:add_entity({x=pos.x+1,y=pos.y,z=pos.z}, "train:train")
  19. rear_bogie = minetest.env:add_entity({x=pos.x-1,y=pos.y,z=pos.z}, "train:train")
  20. forward_bogie:get_luaentity().lead = true
  21. forward_bogie:get_luaentity().other = rear_bogie
  22. rear_bogie:get_luaentity().other = forward_bogie
  23. return
  24. end
  25. if israil(l) > 0 and israil(r) > 0 then
  26. --spawn train here
  27. forward_bogie = minetest.env:add_entity({x=pos.x,y=pos.y,z=pos.z+1}, "train:train")
  28. rear_bogie = minetest.env:add_entity({x=pos.x,y=pos.y,z=pos.z-1}, "train:train")
  29. forward_bogie:get_luaentity().lead = true
  30. forward_bogie:get_luaentity().other = rear_bogie
  31. rear_bogie:get_luaentity().other = forward_bogie
  32. return
  33. end
  34. end
  35.  
  36. function calculate_train_dir(self, pos)
  37. local in_front = minetest.env:get_node({x=pos.x+1,y=pos.y,z=pos.z}).name
  38. --forward
  39. if self.direction ~= backward and in_front == "default:rail" then
  40. self.direction = forward
  41. return
  42. end
  43. --backward
  44. local in_back = minetest.env:get_node({x=pos.x-1,y=pos.y,z=pos.z}).name
  45. if self.direction ~= forward and in_back == "default:rail" then
  46. self.direction = backward
  47. return
  48. end
  49. --left
  50. local on_left = minetest.env:get_node({x=pos.x,y=pos.y,z=pos.z+1}).name
  51. if self.direction ~= right and on_left == "default:rail" then
  52. self.direction = left
  53. return
  54. end
  55. --right
  56. local on_right = minetest.env:get_node({x=pos.x,y=pos.y,z=pos.z-1}).name
  57. if self.direction ~= left and on_right == "default:rail" then
  58. self.direction = right
  59. return
  60. end
  61. end
  62.  
  63. minetest.register_node("train:train_spawner",{
  64. drawtype = "glasslike",
  65. description = "train spawner",
  66. groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,wood=1},
  67. tiles = {"spawnegg.png","spawnegg.png","spawnegg.png","spawnegg.png","spawnegg.png","spawnegg.png"},
  68. image = "default_stone",
  69. inventory_image = "default_stone",
  70. wield_image = "default_stone",
  71. selection_box = {
  72. type = "fixed",
  73. fixed = {0,0,0,0,0,0}
  74. },
  75. node_box = {
  76. type = "fixed",
  77. fixed = { {0,0,0,0,0,0}, }
  78. },
  79. on_place = function(itemstack, placer, pointed)
  80. if pointed.type ~= "node" then
  81. return
  82. end
  83. if pointed.type == "node" then
  84. if minetest.env:get_node(pointed.under).name ~= "train:rail" then
  85. return
  86. end
  87. end
  88. spawn_train(pointed.under)
  89. end
  90. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement