Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function israil(node)
- local testing = minetest.get_node_group(node, "rail")
- return testing
- end
- forward = {x=1,y=0,z=0}
- backward = {x=-1,y=0,z=0}
- left = {x=0,y=0,z=1}
- right = {x=0,y=0,z=-1}
- stop = {x=0,y=0,z=0}
- function spawn_train(pos)
- local f = minetest.env:get_node({x=pos.x+1,y=pos.y,z=pos.z}).name
- local b = minetest.env:get_node({x=pos.x-1,y=pos.y,z=pos.z}).name
- local l = minetest.env:get_node({x=pos.x,y=pos.y,z=pos.z+1}).name
- local r = minetest.env:get_node({x=pos.x,y=pos.y,z=pos.z-1}).name
- print(dump(israil(f)))
- if israil(f) > 0 and israil(b) > 0 then
- --spawn train here
- forward_bogie = minetest.env:add_entity({x=pos.x+1,y=pos.y,z=pos.z}, "train:train")
- rear_bogie = minetest.env:add_entity({x=pos.x-1,y=pos.y,z=pos.z}, "train:train")
- forward_bogie:get_luaentity().lead = true
- forward_bogie:get_luaentity().other = rear_bogie
- rear_bogie:get_luaentity().other = forward_bogie
- return
- end
- if israil(l) > 0 and israil(r) > 0 then
- --spawn train here
- forward_bogie = minetest.env:add_entity({x=pos.x,y=pos.y,z=pos.z+1}, "train:train")
- rear_bogie = minetest.env:add_entity({x=pos.x,y=pos.y,z=pos.z-1}, "train:train")
- forward_bogie:get_luaentity().lead = true
- forward_bogie:get_luaentity().other = rear_bogie
- rear_bogie:get_luaentity().other = forward_bogie
- return
- end
- end
- function calculate_train_dir(self, pos)
- local in_front = minetest.env:get_node({x=pos.x+1,y=pos.y,z=pos.z}).name
- --forward
- if self.direction ~= backward and in_front == "default:rail" then
- self.direction = forward
- return
- end
- --backward
- local in_back = minetest.env:get_node({x=pos.x-1,y=pos.y,z=pos.z}).name
- if self.direction ~= forward and in_back == "default:rail" then
- self.direction = backward
- return
- end
- --left
- local on_left = minetest.env:get_node({x=pos.x,y=pos.y,z=pos.z+1}).name
- if self.direction ~= right and on_left == "default:rail" then
- self.direction = left
- return
- end
- --right
- local on_right = minetest.env:get_node({x=pos.x,y=pos.y,z=pos.z-1}).name
- if self.direction ~= left and on_right == "default:rail" then
- self.direction = right
- return
- end
- end
- minetest.register_node("train:train_spawner",{
- drawtype = "glasslike",
- description = "train spawner",
- groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,wood=1},
- tiles = {"spawnegg.png","spawnegg.png","spawnegg.png","spawnegg.png","spawnegg.png","spawnegg.png"},
- image = "default_stone",
- inventory_image = "default_stone",
- wield_image = "default_stone",
- selection_box = {
- type = "fixed",
- fixed = {0,0,0,0,0,0}
- },
- node_box = {
- type = "fixed",
- fixed = { {0,0,0,0,0,0}, }
- },
- on_place = function(itemstack, placer, pointed)
- if pointed.type ~= "node" then
- return
- end
- if pointed.type == "node" then
- if minetest.env:get_node(pointed.under).name ~= "train:rail" then
- return
- end
- end
- spawn_train(pointed.under)
- end
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement