From 7d2dfe41016c7c4b50d1afdab308efca00c20681 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 13 Feb 2016 08:33:58 +0000 Subject: [PATCH] Consolidate ABMs Spread ABM intervals evenly across 1 to 16 seconds 16s ensures no nodes are missed when player walks past Adjust chance values to compensate, for identical action rates Combine lavacooling ABMs into one, return to chance = 1 Grass growth: add 'neighbors = "air"' to avoid processing the thousands of underground dirt nodes Grass death: Reduce action rate to that of grass growth Fire: Use chance = 1 for flame extinguishing and flame removal when mod is disabled --- mods/default/functions.lua | 52 +++++++++++++++----------------------- mods/farming/api.lua | 4 +-- mods/fire/init.lua | 4 +-- mods/flowers/init.lua | 4 +-- mods/stairs/init.lua | 2 +- mods/tnt/init.lua | 2 +- 6 files changed, 28 insertions(+), 40 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 0137d912..3afaec88 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -88,37 +88,24 @@ end -- Lavacooling -- -default.cool_lava_source = function(pos) - minetest.set_node(pos, {name = "default:obsidian"}) - minetest.sound_play("default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.25}) -end - -default.cool_lava_flowing = function(pos) - minetest.set_node(pos, {name = "default:stone"}) +default.cool_lava = function(pos, node) + if node.name == "default:lava_source" then + minetest.set_node(pos, {name = "default:obsidian"}) + else -- Lava flowing + minetest.set_node(pos, {name = "default:stone"}) + end minetest.sound_play("default_cool_lava", {pos = pos, max_hear_distance = 16, gain = 0.25}) end minetest.register_abm({ - nodenames = {"default:lava_flowing"}, - neighbors = {"group:water"}, - interval = 1, - chance = 2, - catch_up = false, - action = function(...) - default.cool_lava_flowing(...) - end, -}) - -minetest.register_abm({ - nodenames = {"default:lava_source"}, + nodenames = {"default:lava_source", "default:lava_flowing"}, neighbors = {"group:water"}, interval = 1, - chance = 2, + chance = 1, catch_up = false, action = function(...) - default.cool_lava_source(...) + default.cool_lava(...) end, }) @@ -177,8 +164,8 @@ end minetest.register_abm({ nodenames = {"default:cactus"}, neighbors = {"group:sand"}, - interval = 50, - chance = 20, + interval = 12, + chance = 83, action = function(...) default.grow_cactus(...) end @@ -186,9 +173,9 @@ minetest.register_abm({ minetest.register_abm({ nodenames = {"default:papyrus"}, - neighbors = {"default:dirt", "default:dirt_with_grass", "default:sand"}, - interval = 50, - chance = 20, + neighbors = {"default:dirt", "default:dirt_with_grass"}, + interval = 14, + chance = 71, action = function(...) default.grow_papyrus(...) end @@ -358,8 +345,9 @@ minetest.register_abm({ minetest.register_abm({ nodenames = {"default:dirt"}, - interval = 2, - chance = 200, + neighbors = {"air"}, + interval = 6, + chance = 67, catch_up = false, action = function(pos, node) local above = {x = pos.x, y = pos.y + 1, z = pos.z} @@ -384,8 +372,8 @@ minetest.register_abm({ minetest.register_abm({ nodenames = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, - interval = 2, - chance = 20, + interval = 8, + chance = 50, catch_up = false, action = function(pos, node) local above = {x = pos.x, y = pos.y + 1, z = pos.z} @@ -407,7 +395,7 @@ minetest.register_abm({ minetest.register_abm({ nodenames = {"default:cobble"}, neighbors = {"group:water"}, - interval = 17, + interval = 16, chance = 200, catch_up = false, action = function(pos, node) diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 7123cbc1..a0c1992f 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -264,8 +264,8 @@ farming.register_plant = function(name, def) minetest.register_abm({ nodenames = {"group:" .. pname, "group:seed"}, neighbors = {"group:soil"}, - interval = 90, - chance = 2, + interval = 9, + chance = 20, action = function(pos, node) local plant_height = minetest.get_item_group(node.name, pname) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index fc55b8dd..a5566628 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -170,7 +170,7 @@ minetest.register_abm({ nodenames = {"fire:basic_flame", "fire:permanent_flame"}, neighbors = {"group:puts_out_fire"}, interval = 3, - chance = 2, + chance = 1, catch_up = false, action = function(p0, node, _, _) minetest.remove_node(p0) @@ -189,7 +189,7 @@ if minetest.setting_getbool("disable_fire") then minetest.register_abm({ nodenames = {"fire:basic_flame"}, interval = 7, - chance = 2, + chance = 1, catch_up = false, action = function(p0, node, _, _) minetest.remove_node(p0) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index dd8e031d..dd90f4c9 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -76,8 +76,8 @@ end minetest.register_abm({ nodenames = {"group:flora"}, neighbors = {"default:dirt_with_grass", "default:desert_sand"}, - interval = 50, - chance = 25, + interval = 13, + chance = 96, action = function(pos, node) pos.y = pos.y - 1 local under = minetest.get_node(pos) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index ea2933b6..7688d905 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -233,7 +233,7 @@ end if replace then minetest.register_abm({ nodenames = {"group:slabs_replace"}, - interval = 8, + interval = 16, chance = 1, action = function(pos, node) node.name = minetest.registered_nodes[node.name].replace_name diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 6a459655..e10ac2fe 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -376,7 +376,7 @@ minetest.register_node("tnt:gunpowder_burning", { minetest.register_abm({ nodenames = {"tnt:tnt", "tnt:gunpowder"}, neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, - interval = 1, + interval = 4, chance = 1, action = burn, }) -- 2.25.1