Compare commits
5 Commits
4b9b42c409
...
5b7d61d7d9
Author | SHA1 | Date | |
---|---|---|---|
|
5b7d61d7d9 | ||
|
2aabe9240d | ||
|
a703b07871 | ||
|
dfa0dc4a7b | ||
|
7286b55804 |
@ -34,6 +34,7 @@ function fluid_lib.register_extractor_node(nodename, nodedef)
|
|||||||
|
|
||||||
nodedef.on_punch = function (pos, node, puncher, pointed_thing)
|
nodedef.on_punch = function (pos, node, puncher, pointed_thing)
|
||||||
minetest.get_node_timer(pos):start(1.0)
|
minetest.get_node_timer(pos):start(1.0)
|
||||||
|
minetest.chat_send_player(puncher:get_player_name(),"Pump Started")
|
||||||
minetest.node_punch(pos, node, puncher, pointed_thing)
|
minetest.node_punch(pos, node, puncher, pointed_thing)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -124,12 +124,13 @@ end
|
|||||||
function fluid_lib.transfer_timer_tick(pos, elapsed)
|
function fluid_lib.transfer_timer_tick(pos, elapsed)
|
||||||
local refresh = true
|
local refresh = true
|
||||||
local node = minetest.get_node_or_nil(pos)
|
local node = minetest.get_node_or_nil(pos)
|
||||||
|
local status = "Fluid Pump"
|
||||||
if not node then
|
if not node then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
|
|
||||||
local targets = {}
|
local targets = {}
|
||||||
|
|
||||||
-- Only allow the node directly behind to be a start of a network
|
-- Only allow the node directly behind to be a start of a network
|
||||||
@ -144,9 +145,9 @@ function fluid_lib.transfer_timer_tick(pos, elapsed)
|
|||||||
|
|
||||||
-- Retrieve network
|
-- Retrieve network
|
||||||
targets = fluid_targets(pos, tpos)
|
targets = fluid_targets(pos, tpos)
|
||||||
|
|
||||||
-- No targets, don't proceed
|
-- No targets, don't proceed
|
||||||
if #targets == 0 then
|
if #targets == 0 then
|
||||||
|
meta:set_string("infotext", status.."\nNo Recieving Tank")
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -156,6 +157,7 @@ function fluid_lib.transfer_timer_tick(pos, elapsed)
|
|||||||
|
|
||||||
-- Make sure source node is not air
|
-- Make sure source node is not air
|
||||||
if not srcnode or srcnode.name == "air" then
|
if not srcnode or srcnode.name == "air" then
|
||||||
|
meta:set_string("infotext", status.."\nNo Source Tank")
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -163,11 +165,15 @@ function fluid_lib.transfer_timer_tick(pos, elapsed)
|
|||||||
|
|
||||||
-- Make sure source node is a registered fluid container
|
-- Make sure source node is a registered fluid container
|
||||||
if not srcdef or not srcdef['node_io_can_take_liquid'] then
|
if not srcdef or not srcdef['node_io_can_take_liquid'] then
|
||||||
|
meta:set_string("infotext", status.." Off")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local c = srcdef.node_io_can_take_liquid(srcpos, srcnode, "")
|
local c = srcdef.node_io_can_take_liquid(srcpos, srcnode, "")
|
||||||
if not c then return false end
|
if not c then
|
||||||
|
meta:set_string("infotext", status.." Off")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
local srcmeta = minetest.get_meta(srcpos)
|
local srcmeta = minetest.get_meta(srcpos)
|
||||||
local fl_size = srcdef.node_io_get_liquid_size(srcpos, srcnode, "")
|
local fl_size = srcdef.node_io_get_liquid_size(srcpos, srcnode, "")
|
||||||
@ -175,7 +181,10 @@ function fluid_lib.transfer_timer_tick(pos, elapsed)
|
|||||||
for i = 1, fl_size do
|
for i = 1, fl_size do
|
||||||
buffers[i] = srcdef.node_io_get_liquid_name(srcpos, srcnode, "", i)
|
buffers[i] = srcdef.node_io_get_liquid_name(srcpos, srcnode, "", i)
|
||||||
end
|
end
|
||||||
if not #buffers then return true end
|
if not #buffers then
|
||||||
|
meta:set_string("infotext", status.."\nNo Source Tank")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
-- Limit the amount of fluid pumped per cycle
|
-- Limit the amount of fluid pumped per cycle
|
||||||
local pcapability = get_node_property(meta, pos, "fluid_pump_capacity")
|
local pcapability = get_node_property(meta, pos, "fluid_pump_capacity")
|
||||||
@ -184,7 +193,9 @@ function fluid_lib.transfer_timer_tick(pos, elapsed)
|
|||||||
-- Transfer some fluid here
|
-- Transfer some fluid here
|
||||||
for _,pos in pairs(targets) do
|
for _,pos in pairs(targets) do
|
||||||
if not vector.equals(pos, srcpos) then
|
if not vector.equals(pos, srcpos) then
|
||||||
|
|
||||||
if pumped >= pcapability then break end
|
if pumped >= pcapability then break end
|
||||||
|
|
||||||
local destnode = minetest.get_node(pos)
|
local destnode = minetest.get_node(pos)
|
||||||
local destdef = minetest.registered_nodes[destnode.name]
|
local destdef = minetest.registered_nodes[destnode.name]
|
||||||
local pp = nil
|
local pp = nil
|
||||||
@ -203,24 +214,48 @@ function fluid_lib.transfer_timer_tick(pos, elapsed)
|
|||||||
local changed = false
|
local changed = false
|
||||||
|
|
||||||
if pp ~= nil then
|
if pp ~= nil then
|
||||||
for bindex,bfluid in pairs(pp) do
|
for bindex,bfluid in pairs(pp) do -- bfluid = destination fluid name
|
||||||
for aindex,afluid in pairs(buffers) do
|
for aindex,afluid in pairs(buffers) do -- afluid = source fluid name
|
||||||
if pumped >= pcapability then break end
|
|
||||||
if (afluid == bfluid or bfluid == "") then
|
-- get fluid names for pump status
|
||||||
|
local bfluid_des = ""
|
||||||
|
local afluid_des = ""
|
||||||
|
|
||||||
|
if bfluid ~= "" then
|
||||||
|
bfluid_des = minetest.registered_nodes[bfluid].description
|
||||||
|
end
|
||||||
|
|
||||||
|
if afluid ~= "" then
|
||||||
|
afluid_des = minetest.registered_nodes[afluid].description
|
||||||
|
end
|
||||||
|
|
||||||
|
if pumped >= pcapability then
|
||||||
|
meta:set_string("infotext", status.."\nPumped Max Volume".." "..bfluid_des)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
if (afluid == bfluid or bfluid == "") then -- bfluid = "", empty destiniation
|
||||||
local idef = destdef.node_io_room_for_liquid(pos, destnode, "", afluid, pcapability)
|
local idef = destdef.node_io_room_for_liquid(pos, destnode, "", afluid, pcapability)
|
||||||
|
|
||||||
if idef > 0 then
|
if idef > 0 then
|
||||||
local fluidcount = srcdef.node_io_get_liquid_stack(srcpos, srcnode, "", aindex):get_count()
|
local fluidcount = srcdef.node_io_get_liquid_stack(srcpos, srcnode, "", aindex):get_count()
|
||||||
local defc = math.min(fluidcount, idef)
|
local defc = math.min(fluidcount, idef)
|
||||||
local defi = srcdef.node_io_take_liquid(srcpos, srcnode, "", nil, afluid, defc)
|
local defi = srcdef.node_io_take_liquid(srcpos, srcnode, "", nil, afluid, defc)
|
||||||
|
|
||||||
if defi and defi.millibuckets > 0 then
|
if defi and defi.millibuckets > 0 then
|
||||||
local lo = destdef.node_io_put_liquid(pos, destnode, "", nil, afluid, defi.millibuckets)
|
local lo = destdef.node_io_put_liquid(pos, destnode, "", nil, afluid, defi.millibuckets)
|
||||||
pumped = pumped + (defi.millibuckets - lo)
|
pumped = pumped + (defi.millibuckets - lo)
|
||||||
|
meta:set_string("infotext", status.."\nPumping "..afluid_des)
|
||||||
changed = true
|
changed = true
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
meta:set_string("infotext", status.."\nStandby")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
meta:set_string("infotext", status.."\nStandby")
|
||||||
end
|
end
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
fluid_lib.register_extractor_node("fluid_transfer:fluid_transfer_pump", {
|
fluid_lib.register_extractor_node("fluid_transfer:fluid_transfer_pump", {
|
||||||
description = "Fluid Transfer Pump\nPunch to start pumping",
|
description = "Fluid Transfer Pump\nPunch to start pumping",
|
||||||
tiles = {"fluid_transfer_pump.png"},
|
tiles = {"fluid_transfer_pump.png"},
|
||||||
|
use_texture_alpha = "clip",
|
||||||
drawtype = "mesh",
|
drawtype = "mesh",
|
||||||
mesh = "fluid_transfer_pump.obj",
|
mesh = "fluid_transfer_pump.obj",
|
||||||
groups = {oddly_breakable_by_hand = 1, cracky = 1},
|
groups = {oddly_breakable_by_hand = 1, cracky = 1},
|
||||||
@ -18,6 +19,7 @@ fluid_lib.register_extractor_node("fluid_transfer:fluid_transfer_pump", {
|
|||||||
fluid_lib.register_transfer_node("fluid_transfer:fluid_duct", {
|
fluid_lib.register_transfer_node("fluid_transfer:fluid_duct", {
|
||||||
description = "Fluid Duct",
|
description = "Fluid Duct",
|
||||||
tiles = {"fluid_transfer_duct.png"},
|
tiles = {"fluid_transfer_duct.png"},
|
||||||
|
use_texture_alpha = "clip",
|
||||||
groups = {oddly_breakable_by_hand = 1, cracky = 1}
|
groups = {oddly_breakable_by_hand = 1, cracky = 1}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -26,6 +28,7 @@ minetest.register_node("fluid_transfer:fluid_trash", {
|
|||||||
drawtype = "mesh",
|
drawtype = "mesh",
|
||||||
mesh = "fluid_transfer_trash.obj",
|
mesh = "fluid_transfer_trash.obj",
|
||||||
tiles = {"fluid_transfer_trash.png"},
|
tiles = {"fluid_transfer_trash.png"},
|
||||||
|
use_texture_alpha = "clip",
|
||||||
groups = {oddly_breakable_by_hand = 1, cracky = 1, fluid_container = 1},
|
groups = {oddly_breakable_by_hand = 1, cracky = 1, fluid_container = 1},
|
||||||
node_io_can_put_liquid = function (pos, node, side)
|
node_io_can_put_liquid = function (pos, node, side)
|
||||||
return true
|
return true
|
||||||
|
Loading…
Reference in New Issue
Block a user