]> git.lizzy.rs Git - Crafter.git/blob - mods/main/saplings.lua
Fix run sneaking, add sapling
[Crafter.git] / mods / main / saplings.lua
1 --saplings
2 minetest.register_node("main:sapling", {
3       description = "Sapling",
4       drawtype = "plantlike",
5       waving = 1,
6       walkable = false,
7       climbable = false,
8       paramtype = "light",
9       is_ground_content = false,      
10       tiles = {"sapling.png"},
11       groups = {leaves = 1, plant = 1, axe = 1, hand = 0,instant=1, sapling=1},
12       sounds = main.grassSound(),
13       drop = "main:sapling",
14       node_placement_prediction = "",
15       selection_box = {
16                 type = "fixed",
17                 fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
18         },
19       on_place = function(itemstack, placer, pointed_thing)
20             if not pointed_thing.type == "node" then
21                   return
22             end
23             local pos = pointed_thing.above
24             if minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y-1,pos.z)).name, "soil") > 0 and minetest.get_node(pointed_thing.above).name == "air" then
25                   minetest.set_node(pointed_thing.above, {name="main:sapling"})
26                   minetest.sound_play("leaves",{pos=pointed_thing.above})
27                   itemstack:take_item(1)
28                   --print(minetest.get_node(pointed_thing.above).param1)
29                   return(itemstack)
30             end
31       end,
32 })
33
34 --make sapling grow
35 local function sapling_grow(pos)
36       if minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y-1,pos.z)).name, "soil") > 0 then
37             
38             local good_to_grow = true
39             --check if room to grow (leaves or air)
40             for i = 1,4 do
41                   local node_name = minetest.get_node(vector.new(pos.x,pos.y+i,pos.z)).name
42                   if node_name ~= "air" and node_name ~= "main:leaves" then
43                         good_to_grow = false
44                   end
45             end
46             if good_to_grow == true then
47                   minetest.set_node(pos,{name="main:tree"})
48                   minetest.place_schematic(pos, treeSchematic,"0",nil,false,"place_center_x, place_center_z")
49                   --override leaves
50                   for i = 1,4 do
51                         minetest.set_node(vector.new(pos.x,pos.y+i,pos.z),{name="main:tree"})
52                   end
53             end
54       end
55 end
56
57 --growing abm for sapling
58 minetest.register_abm({
59       label = "Tree Grow",
60       nodenames = {"group:sapling"},
61       neighbors = {"group:soil"},
62       interval = 0.1,
63       chance = 1,
64       action = function(pos)
65             sapling_grow(pos)
66       end,
67 })