]> git.lizzy.rs Git - Crafter.git/blob - mods/minecart/rail.lua
fb1296ad4a650fe7547bd27f7f1a3d2a4d19019e
[Crafter.git] / mods / minecart / rail.lua
1 minetest.register_node("minecart:rail",{
2         description = "Rail",
3         wield_image = "rail.png",
4         tiles = {
5                 "rail.png", "railcurve.png",
6                 "railt.png", "railcross.png"
7         },
8         drawtype = "raillike",
9         paramtype = "light",
10         sunlight_propagates = true,
11         is_ground_content = false,
12         walkable = false,
13         node_placement_prediction = "",
14         selection_box = {
15                 type = "fixed",
16                 fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
17         },
18         sounds = main.stoneSound(),
19         on_place = function(itemstack, placer, pointed_thing)
20                 if not pointed_thing.type == "node" then
21                         return
22                 end
23                 
24                 local sneak = placer:get_player_control().sneak
25                 local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
26                 if not sneak and noddef.on_rightclick then
27                         minetest.item_place(itemstack, placer, pointed_thing)
28                         return
29                 end
30                 local buildable = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name].buildable_to
31                 --replace buildable
32                 if buildable and minetest.get_node_group(minetest.get_node(vector.new(pointed_thing.under.x,pointed_thing.under.y-1,pointed_thing.under.z)).name, "soil") > 0 then
33                         return(minetest.item_place(itemstack, placer, pointed_thing))
34                 end
35                 --replace buildable above
36                 local buildable = minetest.registered_nodes[minetest.get_node(pointed_thing.above).name].buildable_to
37                 if buildable and minetest.get_node_group(minetest.get_node(vector.new(pointed_thing.above.x,pointed_thing.above.y-1,pointed_thing.above.z)).name, "soil") > 0 then
38                         return(minetest.item_place(itemstack, placer, pointed_thing))
39                 end
40                 --normal
41                 local pos = pointed_thing.above
42                 if minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name].walkable and minetest.get_node(pointed_thing.above).name == "air" then
43                         minetest.set_node(pointed_thing.above, {name="minecart:rail"})
44                         itemstack:take_item(1)
45                         minetest.sound_play("stone",{pos=pointed_thing.above})
46                         return(itemstack)
47                 end
48         end,
49         groups={stone=1,wood=1,rail=1},
50 })
51
52 minetest.register_craft({
53         output = "minecart:rail 32",
54         recipe = {
55                 {"main:iron","","main:iron"},
56                 {"main:iron","main:stick","main:iron"},
57                 {"main:iron","","main:iron"}
58         }
59 })