diff --git a/mods/ITEMS/mcl_sponges/init.lua b/mods/ITEMS/mcl_sponges/init.lua index 738195348..a90fc1898 100644 --- a/mods/ITEMS/mcl_sponges/init.lua +++ b/mods/ITEMS/mcl_sponges/init.lua @@ -67,15 +67,18 @@ function mcl_sponges.absorb(pos) -- to determine the wet sponge type. local out = {} local p, n + local count = 0 for i=-3,3 do for j=-3,3 do for k=-3,3 do + count = count + 1 pos = {x=pos.x+i, y=pos.y+j, z=pos.z+k} node = minetest.get_node(pos) for name,def in pairs(mcl_sponges.registered_sponges) do if minetest.get_item_group(node.name, def.liquidgroup) ~= 0 then minetest.add_node(pos, {name="air"}) change = true + if not out[name] then out[name] = 0 end out[name] = out[name]+1 break end @@ -83,13 +86,22 @@ function mcl_sponges.absorb(pos) end end end + minetest.chat_send_all(count) -- The dominant water type wins. In case of a tie, normal water wins. -- This slight bias is intentional. local sponge_type - if river_water > non_river_water then - sponge_type = "mcl_sponges:sponge_wet_river_water" - else - sponge_type = "mcl_sponges:sponge_wet" + local biggest + for name, number in pairs(out) do + if biggest then + if biggest < number then + sponge_type = name + biggest = number + end + else + sponge_type = name + biggest = number + end + end return change, sponge_type end @@ -263,7 +275,7 @@ minetest.register_abm({ interval = 1, chance = 1, action = function(pos) - local absorbed, wet_sponge = absorb(pos) + local absorbed, wet_sponge = mcl_sponges.absorb(pos) if absorbed then minetest.add_node(pos, {name = wet_sponge}) end