mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2024-12-25 02:00:37 +01:00
avoid lag if full chest, limit items to 50, remove others
This commit is contained in:
parent
2e6ec485b0
commit
9775af22f3
@ -87,21 +87,27 @@ local tube_inject_item = pipeworks.tube_inject_item
|
|||||||
local get_objects_inside_radius = minetest.get_objects_inside_radius
|
local get_objects_inside_radius = minetest.get_objects_inside_radius
|
||||||
local function vacuum(pos, radius)
|
local function vacuum(pos, radius)
|
||||||
radius = radius + 0.5
|
radius = radius + 0.5
|
||||||
|
local max_items = 0
|
||||||
for _, object in pairs(get_objects_inside_radius(pos, sqrt_3 * radius)) do
|
for _, object in pairs(get_objects_inside_radius(pos, sqrt_3 * radius)) do
|
||||||
local lua_entity = object:get_luaentity()
|
local lua_entity = object:get_luaentity()
|
||||||
if not object:is_player() and lua_entity and lua_entity.name == "__builtin:item" then
|
if not object:is_player() and lua_entity and lua_entity.name == "__builtin:item" then
|
||||||
local obj_pos = object:getpos()
|
max_items = max_items + 1
|
||||||
local x1, y1, z1 = pos.x, pos.y, pos.z
|
if max_items > 50 then
|
||||||
local x2, y2, z2 = obj_pos.x, obj_pos.y, obj_pos.z
|
|
||||||
|
|
||||||
if x1 - radius <= x2 and x2 <= x1 + radius
|
|
||||||
and y1 - radius <= y2 and y2 <= y1 + radius
|
|
||||||
and z1 - radius <= z2 and z2 <= z1 + radius then
|
|
||||||
if lua_entity.itemstring ~= "" then
|
|
||||||
tube_inject_item(pos, pos, vector.new(0, 0, 0), lua_entity.itemstring)
|
|
||||||
lua_entity.itemstring = ""
|
|
||||||
end
|
|
||||||
object:remove()
|
object:remove()
|
||||||
|
else
|
||||||
|
local obj_pos = object:getpos()
|
||||||
|
local x1, y1, z1 = pos.x, pos.y, pos.z
|
||||||
|
local x2, y2, z2 = obj_pos.x, obj_pos.y, obj_pos.z
|
||||||
|
|
||||||
|
if x1 - radius <= x2 and x2 <= x1 + radius
|
||||||
|
and y1 - radius <= y2 and y2 <= y1 + radius
|
||||||
|
and z1 - radius <= z2 and z2 <= z1 + radius then
|
||||||
|
if lua_entity.itemstring ~= "" then
|
||||||
|
tube_inject_item(pos, pos, vector.new(0, 0, 0), lua_entity.itemstring)
|
||||||
|
lua_entity.itemstring = ""
|
||||||
|
end
|
||||||
|
object:remove()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user