From 27bb636b83b1bbea0a4763b1b6519f9c7fa04ae6 Mon Sep 17 00:00:00 2001 From: LeMagnesium Date: Thu, 10 Mar 2016 20:04:16 +0100 Subject: [PATCH] Prevent players from storing too many items in the bags --- mods/unified_inventory/bags.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/unified_inventory/bags.lua b/mods/unified_inventory/bags.lua index 5e208802..10a366a6 100755 --- a/mods/unified_inventory/bags.lua +++ b/mods/unified_inventory/bags.lua @@ -133,6 +133,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local stack = unified_inventory.extract_bag(player, i) if not stack then return + elseif stack == "overflow" then + minetest.chat_send_player(player:get_player_name(), "You bag is too heavy to be unequipped... Remove some items and retry") + return elseif not player:get_inventory():room_for_item("main", stack) then local pos = player:getpos() pos.y = pos.y + 2 @@ -275,6 +278,10 @@ function unified_inventory.extract_bag(player, id) for i, item in pairs(inv) do list[i] = item:to_table() end + if minetest.serialize(list):len() >= 4096 then + minetest.log("warning", "[U_Inv] Preventing metadata overflow with bag metadata") + return "overflow" + end pinv:remove_item("bag" .. id, stack) minetest.get_inventory({type = "detached", name = minetest.formspec_escape(player:get_player_name()) .. "_bags"}):set_stack("bag" .. id, 1, nil)