From 2adf3a643c35b7d451b883928bd32e2749a60cc9 Mon Sep 17 00:00:00 2001 From: sapier Date: Fri, 2 May 2014 19:35:39 +0200 Subject: [PATCH] fix various bugs --- README.txt | 12 ++++++++++-- init.lua | 4 ++-- internal.lua | 42 +++++++++++++++++++++++++++++------------- 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/README.txt b/README.txt index 261fab9..d89d374 100644 --- a/README.txt +++ b/README.txt @@ -1,6 +1,6 @@ ******************************************************************************** * * -* Advanced spawning mod (adv_spawning) 0.0.4 * +* Advanced spawning mod (adv_spawning) 0.0.5 * * * * URL: http://github.com/sapier/adv_spawning * * Author: sapier * @@ -187,4 +187,12 @@ Statistics: cur = 0, -- load caused in last step avg = 0 -- average load caused } -} \ No newline at end of file +} + +Changelog: + +0.0.5 + -fix MIN/MAX to always return a number value + -fix default activity range to use a initial value if not manually configured + -don't calculate statistics with zero dtime + -fix invalid debug log using old variable name \ No newline at end of file diff --git a/init.lua b/init.lua index 1b6ffa7..83cb5d6 100644 --- a/init.lua +++ b/init.lua @@ -8,7 +8,7 @@ -- ------------------------------------------------------------------------------- -local version = "0.0.4" +local version = "0.0.5" if adv_spawning ~= nil then minetest.log("error","MOD: adv_spawning requires adv_spawning variable to be available") @@ -29,4 +29,4 @@ dofile (adv_modpath .. "/spawn_seed.lua") adv_spawning.initialize() -print("Advanced spawning mod version " .. version .. " loaded") \ No newline at end of file +print("Advanced spawning mod version " .. version .. " loaded") diff --git a/internal.lua b/internal.lua index a7d6b67..09b72c1 100644 --- a/internal.lua +++ b/internal.lua @@ -16,15 +16,15 @@ -------------------------------------------------------------------------------- function adv_spawning.MAX(a,b) if a == nil then - return b + return (b or 0) end if b == nil then - return a + return (a or 0) end if a > b then - return a + return (a or 0) else - return b + return (b or 0) end end @@ -36,15 +36,15 @@ end -------------------------------------------------------------------------------- function adv_spawning.MIN(a,b) if a == nil then - return b + return (b or 0) end if b == nil then - return a + return (a or 0) end if a > b then - return b + return (b or 0) else - return a + return (a or 0) end end @@ -64,7 +64,14 @@ function adv_spawning.initialize() adv_spawning.max_spawning_frequency_hz = 5 adv_spawning.max_mapgen_tries_per_step = 3 - adv_spawning.active_range = minetest.setting_get("active_block_range") * 16 + adv_spawning.active_range = minetest.setting_get("active_block_range") + + if (adv_spawning.active_range == nil) then + adv_spawning.log("info", "No \"active_block_range\" set, defaulting to 5") + adv_spawning.active_range = 5 + else + adv_spawning.active_range = adv_spawning.active_range * 16 + end adv_spawning.spawner_definitions = {} adv_spawning.mapgen_jobqueue = {} @@ -172,6 +179,11 @@ end -------------------------------------------------------------------------------- function adv_spawning.global_onstep(dtime) + if dtime == 0 then + -- don't try to calc differences for no time + return + end + adv_spawning.statistics.step.last = math.floor(adv_spawning.quota_reload - adv_spawning.quota_left + 0.5) @@ -372,7 +384,9 @@ function adv_spawning.handlespawner(spawnername,spawnerpos,minp,maxp,ignore_acti spawndef.relative_height, spawndef.spawn_inside) then adv_spawning.log("info", - minetest.pos_to_string(new_pos) .. " didn't meet surface check") + minetest.pos_to_string(new_pos) .. + " didn't meet surface check, is: " .. + minetest.get_node({x=new_pos.x,z=new_pos.z,y=new_pos.y-1}).name) return false,nil end @@ -1145,7 +1159,7 @@ function adv_spawning.check_flat_area(new_pos,flat_area,spawn_inside,surfaces) if #ground_nodes > current_deviation then adv_spawning.log("info","check_flat_area: " .. range .. " " - ..dump(deviation).. " " .. #ground_nodes ) + ..dump(current_deviation).. " " .. #ground_nodes ) --adv_spawning.dump_area({x=back_left.x,y=new_pos.y-1,z=back_left.z}, -- front_right) return false @@ -1155,7 +1169,8 @@ function adv_spawning.check_flat_area(new_pos,flat_area,spawn_inside,surfaces) minetest.find_nodes_in_area(back_left, front_right, surfaces) if #ground_nodes < required_nodes then - adv_spawning.log("info","check_flat_area: " .. range .. " " ..dump(deviation).. " " .. #ground_nodes ) + adv_spawning.log("info","check_flat_area: " .. range .. " " .. + dump(current_deviation).. " " .. #ground_nodes ) --adv_spawning.dump_area({x=back_left.x,y=new_pos.y-1,z=back_left.z}, -- front_right) return false @@ -1169,7 +1184,8 @@ function adv_spawning.check_flat_area(new_pos,flat_area,spawn_inside,surfaces) minetest.find_nodes_in_area(back_left, front_right, spawn_inside) if #inside_nodes < required_nodes then - adv_spawning.log("info","check_flat_area: " .. range .. " " .. dump(deviation) .. " " + adv_spawning.log("info","check_flat_area: " .. range .. " " .. + dump(current_deviation) .. " " .. #inside_nodes .. "/" .. required_nodes) --adv_spawning.dump_area({x=back_left.x,y=new_pos.y-1,z=back_left.z}, -- front_right)