forked from mtcontrib/pipeworks
let tubes break if they're "over-pressure"
that is, if there are more than X number of items in a tube. Default is 40 in a tube, but breaking is also disabled by default. (original framework by Novatux, with changes by VanessaE)
This commit is contained in:
parent
eab59bfe19
commit
33c4c9d552
|
@ -1,4 +1,8 @@
|
||||||
local luaentity = pipeworks.luaentity
|
local luaentity = pipeworks.luaentity
|
||||||
|
local enable_max_limit = minetest.setting_get("pipeworks_enable_items_per_tube_limit")
|
||||||
|
local max_tube_limit = minetest.setting_get("pipeworks_max_items_per_tube") or 40
|
||||||
|
|
||||||
|
pipeworks.tube_item_count = {}
|
||||||
|
|
||||||
function pipeworks.tube_item(pos, item)
|
function pipeworks.tube_item(pos, item)
|
||||||
error("obsolete pipeworks.tube_item() called; change caller to use pipeworks.tube_inject_item() instead")
|
error("obsolete pipeworks.tube_item() called; change caller to use pipeworks.tube_inject_item() instead")
|
||||||
|
@ -77,6 +81,21 @@ local function go_next(pos, velocity, stack)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if enable_max_limit then
|
||||||
|
local itemcount = #minetest.get_objects_inside_radius(pos, 0.5)
|
||||||
|
|
||||||
|
local h = minetest.hash_node_position(pos)
|
||||||
|
if itemcount > max_tube_limit then
|
||||||
|
cmeta:set_string("the_tube_was", minetest.serialize(cnode))
|
||||||
|
print("[Pipeworks] Warning - a tube at "..minetest.pos_to_string(pos).." broke due to too many items ("..itemcount..")")
|
||||||
|
minetest.swap_node(pos, {name = "pipeworks:broken_tube_1"})
|
||||||
|
pipeworks.scan_for_tube_objects(pos)
|
||||||
|
pipeworks.tube_item_count[h] = 0
|
||||||
|
else
|
||||||
|
pipeworks.tube_item_count[h] = itemcount
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if not next_positions[1] then
|
if not next_positions[1] then
|
||||||
return false, nil
|
return false, nil
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
-- the default tube and default textures
|
-- the default tube and default textures
|
||||||
pipeworks.register_tube("pipeworks:tube", "Pneumatic tube segment")
|
pipeworks.register_tube("pipeworks:tube", "Pneumatic tube segment")
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
|
@ -9,6 +10,28 @@ minetest.register_craft( {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
pipeworks.register_tube("pipeworks:broken_tube", {
|
||||||
|
description = "Broken Tube (you hacker you)",
|
||||||
|
plain = { { name = "pipeworks_broken_tube_plain.png", backface_culling = false, color = nodecolor } },
|
||||||
|
noctr = { { name = "pipeworks_broken_tube_plain.png", backface_culling = false, color = nodecolor } },
|
||||||
|
ends = { { name = "pipeworks_broken_tube_end.png", color = nodecolor } },
|
||||||
|
short = { name = "pipeworks_broken_tube_short.png", color = nodecolor },
|
||||||
|
node_def = {
|
||||||
|
drop = "pipeworks:tube_1",
|
||||||
|
groups = {not_in_creative_inventory = 1, tubedevice_receiver = 1},
|
||||||
|
tube = {
|
||||||
|
insert_object = function(pos, node, stack, direction)
|
||||||
|
minetest.item_drop(stack, nil, pos)
|
||||||
|
return ItemStack("")
|
||||||
|
end,
|
||||||
|
can_insert = function(pos,node,stack,direction)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
priority = 50,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
-- the high priority tube is a low-cpu replacement for sorting tubes in situations
|
-- the high priority tube is a low-cpu replacement for sorting tubes in situations
|
||||||
-- where players would use them for simple routing (turning off paths)
|
-- where players would use them for simple routing (turning off paths)
|
||||||
-- without doing actual sorting, like at outputs of tubedevices that might both accept and eject items
|
-- without doing actual sorting, like at outputs of tubedevices that might both accept and eject items
|
||||||
|
|
BIN
textures/pipeworks_broken_tube_end.png
Normal file
BIN
textures/pipeworks_broken_tube_end.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
textures/pipeworks_broken_tube_inv.png
Normal file
BIN
textures/pipeworks_broken_tube_inv.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 923 B |
BIN
textures/pipeworks_broken_tube_noctr.png
Normal file
BIN
textures/pipeworks_broken_tube_noctr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
textures/pipeworks_broken_tube_plain.png
Normal file
BIN
textures/pipeworks_broken_tube_plain.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
BIN
textures/pipeworks_broken_tube_short.png
Normal file
BIN
textures/pipeworks_broken_tube_short.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 830 B |
Loading…
Reference in New Issue
Block a user