From 6ca6da2da0742d28e06030d88e1b8b03938b2fa0 Mon Sep 17 00:00:00 2001 From: cora Date: Tue, 28 Dec 2021 03:32:51 +0100 Subject: [PATCH] do not spawn too many book entities --- mods/ITEMS/mcl_enchanting/init.lua | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/init.lua b/mods/ITEMS/mcl_enchanting/init.lua index b66a2967..7e42e8a3 100644 --- a/mods/ITEMS/mcl_enchanting/init.lua +++ b/mods/ITEMS/mcl_enchanting/init.lua @@ -149,19 +149,22 @@ minetest.register_craftitem("mcl_enchanting:book_enchanted", { minetest.register_alias("mcl_books:book_enchanted", "mcl_enchanting:book_enchanted") local spawn_book_entity = function(pos, respawn) - if respawn then - -- Check if we already have a book - local objs = minetest.get_objects_inside_radius(pos, 1) - for o=1, #objs do - local obj = objs[o] - local lua = obj:get_luaentity() - if lua and lua.name == "mcl_enchanting:book" then - if lua._table_pos and vector.equals(pos, lua._table_pos) then - return - end + local cnt=0 + -- Check if we already have books within 5 nodes distance to avoid too many entities + local objs = minetest.get_objects_inside_radius(pos, 5) + for o=1, #objs do + local obj = objs[o] + local lua = obj:get_luaentity() + if lua and lua.name == "mcl_enchanting:book" then + if respawn and lua._table_pos and vector.equals(pos, lua._table_pos) then + return end + cnt=cnt+1 end end + + if cnt > 10 then return end + local obj = minetest.add_entity(vector.add(pos, mcl_enchanting.book_offset), "mcl_enchanting:book") if obj then local lua = obj:get_luaentity()