From f92d49feffd91831e77311215c6d7102262b022e Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 7 Jun 2015 22:48:26 +0100 Subject: [PATCH] Default/functions: Fix cactus growing by rotation again. Cleanup code --- mods/default/functions.lua | 107 +++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 52 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 3525c1a..426e27c 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -7,20 +7,20 @@ function default.node_sound_defaults(table) table = table or {} table.footstep = table.footstep or - {name="", gain=1.0} + {name = "", gain = 1.0} table.dug = table.dug or - {name="default_dug_node", gain=0.25} + {name = "default_dug_node", gain = 0.25} table.place = table.place or - {name="default_place_node_hard", gain=1.0} + {name = "default_place_node_hard", gain = 1.0} return table end function default.node_sound_stone_defaults(table) table = table or {} table.footstep = table.footstep or - {name="default_hard_footstep", gain=0.5} + {name = "default_hard_footstep", gain = 0.5} table.dug = table.dug or - {name="default_hard_footstep", gain=1.0} + {name = "default_hard_footstep", gain = 1.0} default.node_sound_defaults(table) return table end @@ -28,11 +28,11 @@ end function default.node_sound_dirt_defaults(table) table = table or {} table.footstep = table.footstep or - {name="default_dirt_footstep", gain=1.0} + {name = "default_dirt_footstep", gain = 1.0} table.dug = table.dug or - {name="default_dirt_footstep", gain=1.5} + {name = "default_dirt_footstep", gain = 1.5} table.place = table.place or - {name="default_place_node", gain=1.0} + {name = "default_place_node", gain = 1.0} default.node_sound_defaults(table) return table end @@ -40,11 +40,11 @@ end function default.node_sound_sand_defaults(table) table = table or {} table.footstep = table.footstep or - {name="default_sand_footstep", gain=0.2} + {name = "default_sand_footstep", gain = 0.2} table.dug = table.dug or - {name="default_sand_footstep", gain=0.4} + {name = "default_sand_footstep", gain = 0.4} table.place = table.place or - {name="default_place_node", gain=1.0} + {name = "default_place_node", gain = 1.0} default.node_sound_defaults(table) return table end @@ -52,9 +52,9 @@ end function default.node_sound_wood_defaults(table) table = table or {} table.footstep = table.footstep or - {name="default_wood_footstep", gain=0.5} + {name = "default_wood_footstep", gain = 0.5} table.dug = table.dug or - {name="default_wood_footstep", gain=1.0} + {name = "default_wood_footstep", gain = 1.0} default.node_sound_defaults(table) return table end @@ -62,13 +62,13 @@ end function default.node_sound_leaves_defaults(table) table = table or {} table.footstep = table.footstep or - {name="default_grass_footstep", gain=0.35} + {name = "default_grass_footstep", gain = 0.35} table.dug = table.dug or - {name="default_grass_footstep", gain=0.7} + {name = "default_grass_footstep", gain = 0.7} table.dig = table.dig or - {name="default_dig_crumbly", gain=0.4} + {name = "default_dig_crumbly", gain = 0.4} table.place = table.place or - {name="default_place_node", gain=1.0} + {name = "default_place_node", gain = 1.0} default.node_sound_defaults(table) return table end @@ -76,9 +76,9 @@ end function default.node_sound_glass_defaults(table) table = table or {} table.footstep = table.footstep or - {name="default_glass_footstep", gain=0.5} + {name = "default_glass_footstep", gain = 0.5} table.dug = table.dug or - {name="default_break_glass", gain=1.0} + {name = "default_break_glass", gain = 1.0} default.node_sound_defaults(table) return table end @@ -89,13 +89,13 @@ end -- default.cool_lava_source = function(pos) - minetest.set_node(pos, {name="default:obsidian"}) - minetest.sound_play("default_cool_lava", {pos = pos, gain = 0.25}) + minetest.set_node(pos, {name = "default:obsidian"}) + minetest.sound_play("default_cool_lava", {pos = pos, gain = 0.25}) end default.cool_lava_flowing = function(pos) - minetest.set_node(pos, {name="default:stone"}) - minetest.sound_play("default_cool_lava", {pos = pos, gain = 0.25}) + minetest.set_node(pos, {name = "default:stone"}) + minetest.sound_play("default_cool_lava", {pos = pos, gain = 0.25}) end minetest.register_abm({ @@ -123,55 +123,53 @@ minetest.register_abm({ -- Papyrus and cactus growing -- +-- wrapping the functions in abm action is necessary to make overriding them possible + function default.grow_cactus(pos, node) if node.param2 >= 4 then return end - pos.y = pos.y-1 + pos.y = pos.y - 1 if minetest.get_item_group(minetest.get_node(pos).name, "sand") == 0 then return end - pos.y = pos.y+1 + pos.y = pos.y + 1 local height = 0 - while node.name == "default:cactus" and height < 4 and node.param2 == 0 do - height = height+1 - pos.y = pos.y+1 + while node.name == "default:cactus" and height < 4 do + height = height + 1 + pos.y = pos.y + 1 node = minetest.get_node(pos) end - if height == 4 - or node.name ~= "air" then + if height == 4 or node.name ~= "air" then return end - minetest.set_node(pos, {name="default:cactus"}) + minetest.set_node(pos, {name = "default:cactus"}) return true end function default.grow_papyrus(pos, node) - pos.y = pos.y-1 + pos.y = pos.y - 1 local name = minetest.get_node(pos).name - if name ~= "default:dirt_with_grass" - and name ~= "default:dirt" then + if name ~= "default:dirt_with_grass" and name ~= "default:dirt" then return end if not minetest.find_node_near(pos, 3, {"group:water"}) then return end - pos.y = pos.y+1 + pos.y = pos.y + 1 local height = 0 while node.name == "default:papyrus" and height < 4 do - height = height+1 - pos.y = pos.y+1 + height = height + 1 + pos.y = pos.y + 1 node = minetest.get_node(pos) end - if height == 4 - or node.name ~= "air" then + if height == 4 or node.name ~= "air" then return end - minetest.set_node(pos, {name="default:papyrus"}) + minetest.set_node(pos, {name = "default:papyrus"}) return true end --- wrapping the functions in abm action is necessary to make overriding them possible minetest.register_abm({ nodenames = {"default:cactus"}, neighbors = {"group:sand"}, @@ -255,8 +253,10 @@ minetest.register_abm({ if trunkp then local n = minetest.get_node(trunkp) local reg = minetest.registered_nodes[n.name] - -- Assume ignore is a trunk, to make the thing work at the border of the active area - if n.name == "ignore" or (reg and reg.groups.tree and reg.groups.tree ~= 0) then + -- Assume ignore is a trunk, to make the thing + -- work at the border of the active area + if n.name == "ignore" or (reg and reg.groups.tree and + reg.groups.tree ~= 0) then --print("cached trunk still exists") return end @@ -270,7 +270,8 @@ minetest.register_abm({ end default.leafdecay_trunk_find_allow_accumulator = default.leafdecay_trunk_find_allow_accumulator - 1 - -- Assume ignore is a trunk, to make the thing work at the border of the active area + -- Assume ignore is a trunk, to make the thing + -- work at the border of the active area local p1 = minetest.find_node_near(p0, d, {"ignore", "group:tree"}) if p1 then do_preserve = true @@ -301,6 +302,7 @@ minetest.register_abm({ end }) + -- -- Grass growing -- @@ -310,12 +312,12 @@ minetest.register_abm({ interval = 2, chance = 200, action = function(pos, node) - local above = {x=pos.x, y=pos.y+1, z=pos.z} + local above = {x = pos.x, y = pos.y + 1, z = pos.z} local name = minetest.get_node(above).name local nodedef = minetest.registered_nodes[name] - if nodedef and (nodedef.sunlight_propagates or nodedef.paramtype == "light") - and nodedef.liquidtype == "none" - and (minetest.get_node_light(above) or 0) >= 13 then + if nodedef and (nodedef.sunlight_propagates or nodedef.paramtype == "light") and + nodedef.liquidtype == "none" and + (minetest.get_node_light(above) or 0) >= 13 then if name == "default:snow" or name == "default:snowblock" then minetest.set_node(pos, {name = "default:dirt_with_snow"}) else @@ -330,13 +332,14 @@ minetest.register_abm({ interval = 2, chance = 20, action = function(pos, node) - local above = {x=pos.x, y=pos.y+1, z=pos.z} + local above = {x = pos.x, y = pos.y + 1, z = pos.z} local name = minetest.get_node(above).name local nodedef = minetest.registered_nodes[name] - if name ~= "ignore" and nodedef - and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") - and nodedef.liquidtype == "none") then + if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or + nodedef.paramtype == "light") and + nodedef.liquidtype == "none") then minetest.set_node(pos, {name = "default:dirt"}) end end }) +