Fix "replacement when inv is full" (#85)

* fix replacement when inv is full.

* Use allow_metadata_inventory_take instead
This commit is contained in:
fishyWET 2017-11-21 06:09:27 +08:00 committed by Hugo Locurcio
parent f2ede87a5a
commit 1fa4669ae8
1 changed files with 12 additions and 0 deletions

View File

@ -299,6 +299,17 @@ function circular_saw.on_metadata_inventory_put(
end
end
function circular_saw.allow_metadata_inventory_take(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local input_stack = inv:get_stack(listname, index)
local player_inv = player:get_inventory()
if not player_inv:room_for_item("main", input_stack) then
return 0
else return stack:get_count()
end
end
function circular_saw.on_metadata_inventory_take(
pos, listname, index, stack, player)
@ -417,6 +428,7 @@ minetest.register_node("moreblocks:circular_saw", {
allow_metadata_inventory_move = circular_saw.allow_metadata_inventory_move,
-- Only input- and recycle-slot are intended as input slots:
allow_metadata_inventory_put = circular_saw.allow_metadata_inventory_put,
allow_metadata_inventory_take = circular_saw.allow_metadata_inventory_take,
-- Taking is allowed from all slots (even the internal microblock slot). Moving is forbidden.
-- Putting something in is slightly more complicated than taking anything because we have to make sure it is of a suitable material:
on_metadata_inventory_put = circular_saw.on_metadata_inventory_put,