diff --git a/fluids.lua b/fluids.lua index 84e7d14..889f7c8 100644 --- a/fluids.lua +++ b/fluids.lua @@ -66,6 +66,7 @@ local function register_fluid(modname, name, info) buildable_to = true, post_effect_color = info.post_effect_color, groups = groups, + nonfull_name = fname, sounds = default.node_sound_water_defaults(), node_box = { type = "leveled", @@ -118,6 +119,7 @@ local function register_fluid(modname, name, info) buildable_to = true, post_effect_color = info.post_effect_color, groups = full_groups, + nonfull_name = fname, sounds = default.node_sound_water_defaults(), node_box = { type = "leveled", diff --git a/pipes.lua b/pipes.lua index a978b99..a9faa2e 100644 --- a/pipes.lua +++ b/pipes.lua @@ -492,13 +492,15 @@ minetest.register_abm({ if pnet.fluid == 'air' or pnet.buffer == 0 then if minetest.registered_nodes[unode.name].groups.petroleum ~= nil then -- BUG: check for "full" nodes - pnet.fluid = unode.name + pnet.fluid = minetest.registered_nodes[unode.name].nonfull_name + print("intake: here".. (pnet.fluid or "")) else + print("intake: no fluid available ".. pos.x.. ",".. pos.y..",".. pos.z) return -- no available liquids end else -- only suck in existing fluid if unode.name ~= pnet.fluid and unode.name ~= pnet.fluid.."_full" then - --print("no water near intake") + print("bitumen: no fluid near intake: " .. unode.name .. " != " .. pnet.fluid) return end end @@ -512,7 +514,7 @@ minetest.register_abm({ pnet.in_pressure = pnet.in_pressure or -32000 if pnet.in_pressure > pos.y - 1 then - print("backflow at intake: " .. pnet.in_pressure.. " > " ..(pos.y - 1) ) + print("petroleum backflow at intake: " .. pnet.in_pressure.. " > " ..(pos.y - 1) ) return end diff --git a/pump.lua b/pump.lua index e6739b8..49c3d90 100644 --- a/pump.lua +++ b/pump.lua @@ -136,7 +136,7 @@ minetest.register_abm({ local backpos = vector.add(pos, back_dir) local backnet = bitumen.pipes.get_net(backpos) if backnet == nil then - -- print("pump no backnet at "..minetest.pos_to_string(backpos)) + print("bpump no backnet at "..minetest.pos_to_string(backpos)) return end @@ -144,24 +144,31 @@ minetest.register_abm({ local frontpos = vector.add(pos, front_dir) local frontnet = bitumen.pipes.get_net(frontpos) if frontnet == nil then - -- print("pump no frontnet at "..minetest.pos_to_string(frontpos)) + print("bpump no frontnet at "..minetest.pos_to_string(frontpos)) return end if backnet.fluid ~= frontnet.fluid and backnet.fluid ~= "air" then - -- print("pump: bad_fluid") + print("bpump: bad_fluid") return -- incompatible fluids end local lift = 25 --print("fpos ".. minetest.pos_to_string(frontpos) .. " | bpos "..minetest.pos_to_string(backpos)) --print("fp ".. frontnet.in_pressure .. " | bp "..backnet.in_pressure) - local taken, fluid = bitumen.pipes.take_fluid(frontpos, 20) + -- HACK: hardcoded buffer amount + local to_take = math.min(20, 64 - backnet.buffer) + if to_take == 0 then + print("pump: output pipe full") + return + end + + local taken, fluid = bitumen.pipes.take_fluid(frontpos, to_take) local pushed = bitumen.pipes.push_fluid(backpos, fluid, taken, lift) - --print("pumped " ..taken .. " > "..pushed) + print("bitumen pumped " ..taken .. " > "..pushed) if pushed < taken then - --print("pump leaked ".. (taken - pushed)) + print("bitumen pump leaked ".. (taken - pushed)) end --print("")