From 84941ca1036ba7384ad289e0ccc75e306bc2b8d7 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Tue, 26 Jan 2016 15:51:34 +0100 Subject: [PATCH] add a setting to completely disallow growing a mushroom if some node intersects --- init.lua | 38 ++++++++++++++++++++++++++++++-------- settings.lua | 3 +++ 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/init.lua b/init.lua index 79b1e50..6eb93e6 100644 --- a/init.lua +++ b/init.lua @@ -36,18 +36,36 @@ local function replacing_allowed(id) return false end -local function set_vm_nodes(manip, pznodes) - local nodes = manip:get_data() - for vi,id in pairs(pznodes) do - if replacing_allowed(nodes[vi]) then +local set_vm_nodes +if riesenpilz.giant_restrict_area then + function set_vm_nodes(manip, pznodes) + local nodes = manip:get_data() + for vi,id in pairs(pznodes) do + if not replacing_allowed(nodes[vi]) then + return false + end nodes[vi] = id end + manip:set_data(nodes) + return true + end +else + function set_vm_nodes(manip, pznodes) + local nodes = manip:get_data() + for vi,id in pairs(pznodes) do + if replacing_allowed(nodes[vi]) then + nodes[vi] = id + end + end + manip:set_data(nodes) + return true end - manip:set_data(nodes) end local function set_vm_data(manip, pznodes, pos, t1, name) - set_vm_nodes(manip, pznodes) + if not set_vm_nodes(manip, pznodes) then + return + end manip:write_to_map() riesenpilz.inform("a giant "..name.." mushroom grew at "..vector.pos_to_string(pos), 3, t1) local t1 = os.clock() @@ -167,7 +185,9 @@ local function riesenpilz_minecraft_fliegenpilz(pos) local pznodes = {} riesenpilz.fly_agaric(pos, pznodes, area, param2s) - set_vm_nodes(manip, pznodes) + if not set_vm_nodes(manip, pznodes) then + return + end manip:set_param2_data(param2s) manip:write_to_map() manip:update_map() @@ -477,7 +497,9 @@ local function riesenpilz_apple(pos) local pznodes = {} riesenpilz.apple(pos, pznodes, area) - set_vm_nodes(manip, pznodes) + if not set_vm_nodes(manip, pznodes) then + return + end manip:write_to_map() riesenpilz.inform("an apple grew at "..vector.pos_to_string(pos), 3, t1) manip:update_map() diff --git a/settings.lua b/settings.lua index 7036eaa..de28902 100644 --- a/settings.lua +++ b/settings.lua @@ -28,3 +28,6 @@ riesenpilz.max_spam = 2 --3d apple riesenpilz.change_apple = true + +--disallows growing a mushroom if it not every node would have a free place +riesenpilz.giant_restrict_area = false