{ 0, 8, 0, 8, 8, 8 }}
}
--- Tools allowed to be repaired.
+-- Tools allowed to be repaired
function workbench:repairable(stack)
local tools = {"pick", "axe", "shovel", "sword", "hoe", "armor", "shield"}
for i=1, #tools do
return
end
- -- Tool's wearing range: 0-65535 | 0 = new condition.
+ -- Tool's wearing range: 0-65535 | 0 = new condition
tool:add_wear(-500)
hammer:add_wear(700)
return 0
end
-function workbench.take(_, listname, _, stack, player)
- if listname == "forms" then
- local inv = player:get_inventory()
- return inv:room_for_item("main", stack:get_name()) and -1 or 0
- end
- return stack:get_count()
-end
-
function workbench.move(_, from_list, _, to_list, _, count)
return (to_list == "storage" and from_list ~= "forms") and count or 0
end
end
end
-function workbench.on_take(pos, listname, index, stack)
+function workbench.on_take(pos, listname, index, stack, player)
local inv = minetest.get_meta(pos):get_inventory()
local input = inv:get_stack("input", 1)
+ local fromlist = inv:get_stack(listname, index)
+ local inputname = input:get_name()
+ local stackname = stack:get_name()
+
+ if not fromlist:is_empty() and fromlist:get_name() ~= stackname then
+ local player_inv = player:get_inventory()
+ if player_inv:room_for_item("main", fromlist) then
+ player_inv:add_item("main", fromlist)
+ end
+
+ inv:set_list("input", {})
+ inv:set_list("forms", {})
+ return
+ end
if listname == "input" then
- if stack:get_name() == input:get_name() then
- workbench:get_output(inv, input, stack:get_name())
+ if stackname == inputname then
+ workbench:get_output(inv, input, stackname)
else
inv:set_list("forms", {})
end
elseif listname == "forms" then
input:take_item(ceil(stack:get_count() / workbench.defs[index][2]))
inv:set_stack("input", 1, input)
- workbench:get_output(inv, input, input:get_name())
+ workbench:get_output(inv, input, inputname)
end
end
on_metadata_inventory_put = workbench.on_put,
on_metadata_inventory_take = workbench.on_take,
allow_metadata_inventory_put = workbench.put,
- allow_metadata_inventory_take = workbench.take,
allow_metadata_inventory_move = workbench.move
})