1 -- mods/default/functions.lua
7 function default
.node_sound_defaults(table)
9 table.footstep
= table.footstep
or
11 table.dug
= table.dug
or
12 {name
="default_dug_node", gain
=0.25}
13 table.place
= table.place
or
14 {name
="default_place_node_hard", gain
=1.0}
18 function default
.node_sound_stone_defaults(table)
20 table.footstep
= table.footstep
or
21 {name
="default_hard_footstep", gain
=0.5}
22 table.dug
= table.dug
or
23 {name
="default_hard_footstep", gain
=1.0}
24 default
.node_sound_defaults(table)
28 function default
.node_sound_dirt_defaults(table)
30 table.footstep
= table.footstep
or
31 {name
="default_dirt_footstep", gain
=1.0}
32 table.dug
= table.dug
or
33 {name
="default_dirt_footstep", gain
=1.5}
34 table.place
= table.place
or
35 {name
="default_place_node", gain
=1.0}
36 default
.node_sound_defaults(table)
40 function default
.node_sound_sand_defaults(table)
42 table.footstep
= table.footstep
or
43 {name
="default_sand_footstep", gain
=0.5}
44 table.dug
= table.dug
or
45 {name
="default_sand_footstep", gain
=1.0}
46 table.place
= table.place
or
47 {name
="default_place_node", gain
=1.0}
48 default
.node_sound_defaults(table)
52 function default
.node_sound_wood_defaults(table)
54 table.footstep
= table.footstep
or
55 {name
="default_wood_footstep", gain
=0.5}
56 table.dug
= table.dug
or
57 {name
="default_wood_footstep", gain
=1.0}
58 default
.node_sound_defaults(table)
62 function default
.node_sound_leaves_defaults(table)
64 table.footstep
= table.footstep
or
65 {name
="default_grass_footstep", gain
=0.35}
66 table.dug
= table.dug
or
67 {name
="default_grass_footstep", gain
=0.85}
68 table.dig
= table.dig
or
69 {name
="default_dig_crumbly", gain
=0.4}
70 table.place
= table.place
or
71 {name
="default_place_node", gain
=1.0}
72 default
.node_sound_defaults(table)
76 function default
.node_sound_glass_defaults(table)
78 table.footstep
= table.footstep
or
79 {name
="default_glass_footstep", gain
=0.5}
80 table.dug
= table.dug
or
81 {name
="default_break_glass", gain
=1.0}
82 default
.node_sound_defaults(table)
90 function default
.spawn_falling_node(p
, nodename
)
91 spawn_falling_node(p
, nodename
)
98 -- Global environment step function
99 function on_step(dtime
)
102 minetest
.register_globalstep(on_step
)
104 function on_placenode(p
, node
)
105 --print("on_placenode")
107 minetest
.register_on_placenode(on_placenode
)
109 function on_dignode(p
, node
)
110 --print("on_dignode")
112 minetest
.register_on_dignode(on_dignode
)
114 function on_punchnode(p
, node
)
116 minetest
.register_on_punchnode(on_punchnode
)
123 minetest
.register_abm({
124 nodenames
= {"default:sapling"},
127 action
= function(pos
, node
)
128 local nu
= minetest
.get_node({x
=pos
.x
, y
=pos
.y
-1, z
=pos
.z
}).name
129 local is_soil
= minetest
.get_item_group(nu
, "soil")
134 minetest
.log("action", "A sapling grows into a tree at "..minetest
.pos_to_string(pos
))
135 local vm
= minetest
.get_voxel_manip()
136 local minp
, maxp
= vm
:read_from_map({x
=pos
.x
-16, y
=pos
.y
, z
=pos
.z
-16}, {x
=pos
.x
+16, y
=pos
.y
+16, z
=pos
.z
+16})
137 local a
= VoxelArea
:new
{MinEdge
=minp
, MaxEdge
=maxp
}
138 local data
= vm
:get_data()
139 default
.grow_tree(data
, a
, pos
, math
.random(1, 4) == 1, math
.random(1,100000))
141 vm
:write_to_map(data
)
146 minetest
.register_abm({
147 nodenames
= {"default:junglesapling"},
150 action
= function(pos
, node
)
151 local nu
= minetest
.get_node({x
=pos
.x
, y
=pos
.y
-1, z
=pos
.z
}).name
152 local is_soil
= minetest
.get_item_group(nu
, "soil")
157 minetest
.log("action", "A jungle sapling grows into a tree at "..minetest
.pos_to_string(pos
))
158 local vm
= minetest
.get_voxel_manip()
159 local minp
, maxp
= vm
:read_from_map({x
=pos
.x
-16, y
=pos
.y
-1, z
=pos
.z
-16}, {x
=pos
.x
+16, y
=pos
.y
+16, z
=pos
.z
+16})
160 local a
= VoxelArea
:new
{MinEdge
=minp
, MaxEdge
=maxp
}
161 local data
= vm
:get_data()
162 default
.grow_jungletree(data
, a
, pos
, math
.random(1,100000))
164 vm
:write_to_map(data
)
173 default
.cool_lava_source
= function(pos
)
174 minetest
.set_node(pos
, {name
="default:obsidian"})
175 minetest
.sound_play("default_cool_lava", {pos
= pos
, gain
= 0.25})
178 default
.cool_lava_flowing
= function(pos
)
179 minetest
.set_node(pos
, {name
="default:stone"})
180 minetest
.sound_play("default_cool_lava", {pos
= pos
, gain
= 0.25})
183 minetest
.register_abm({
184 nodenames
= {"default:lava_flowing"},
185 neighbors
= {"group:water"},
188 action
= function(pos
, node
, active_object_count
, active_object_count_wider
)
189 default
.cool_lava_flowing(pos
, node
, active_object_count
, active_object_count_wider
)
193 minetest
.register_abm({
194 nodenames
= {"default:lava_source"},
195 neighbors
= {"group:water"},
198 action
= function(pos
, node
, active_object_count
, active_object_count_wider
)
199 default
.cool_lava_source(pos
, node
, active_object_count
, active_object_count_wider
)
206 function default
.dig_up(pos
, node
, digger
)
207 if digger
== nil then return end
208 local np
= {x
= pos
.x
, y
= pos
.y
+ 1, z
= pos
.z
}
209 local nn
= minetest
.get_node(np
)
210 if nn
.name
== node
.name
then
211 minetest
.node_dig(np
, nn
, digger
)