This commit is contained in:
JPG 2017-01-24 17:05:54 +01:00
parent a168d16d18
commit 243ee5348a

View File

@ -67,7 +67,7 @@ workbench.defs = {
{ 0, 8, 0, 8, 8, 8 }} { 0, 8, 0, 8, 8, 8 }}
} }
-- Tools allowed to be repaired. -- Tools allowed to be repaired
function workbench:repairable(stack) function workbench:repairable(stack)
local tools = {"pick", "axe", "shovel", "sword", "hoe", "armor", "shield"} local tools = {"pick", "axe", "shovel", "sword", "hoe", "armor", "shield"}
for i=1, #tools do for i=1, #tools do
@ -164,7 +164,7 @@ function workbench.timer(pos)
return return
end end
-- Tool's wearing range: 0-65535 | 0 = new condition. -- Tool's wearing range: 0-65535 | 0 = new condition
tool:add_wear(-500) tool:add_wear(-500)
hammer:add_wear(700) hammer:add_wear(700)
@ -185,14 +185,6 @@ function workbench.put(_, listname, _, stack)
return 0 return 0
end 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) function workbench.move(_, from_list, _, to_list, _, count)
return (to_list == "storage" and from_list ~= "forms") and count or 0 return (to_list == "storage" and from_list ~= "forms") and count or 0
end end
@ -208,20 +200,34 @@ function workbench.on_put(pos, listname, _, stack)
end 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 inv = minetest.get_meta(pos):get_inventory()
local input = inv:get_stack("input", 1) 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 listname == "input" then
if stack:get_name() == input:get_name() then if stackname == inputname then
workbench:get_output(inv, input, stack:get_name()) workbench:get_output(inv, input, stackname)
else else
inv:set_list("forms", {}) inv:set_list("forms", {})
end end
elseif listname == "forms" then elseif listname == "forms" then
input:take_item(ceil(stack:get_count() / workbench.defs[index][2])) input:take_item(ceil(stack:get_count() / workbench.defs[index][2]))
inv:set_stack("input", 1, input) inv:set_stack("input", 1, input)
workbench:get_output(inv, input, input:get_name()) workbench:get_output(inv, input, inputname)
end end
end end
@ -240,7 +246,6 @@ xdecor.register("workbench", {
on_metadata_inventory_put = workbench.on_put, on_metadata_inventory_put = workbench.on_put,
on_metadata_inventory_take = workbench.on_take, on_metadata_inventory_take = workbench.on_take,
allow_metadata_inventory_put = workbench.put, allow_metadata_inventory_put = workbench.put,
allow_metadata_inventory_take = workbench.take,
allow_metadata_inventory_move = workbench.move allow_metadata_inventory_move = workbench.move
}) })