Fix #74
This commit is contained in:
parent
a168d16d18
commit
243ee5348a
@ -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
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user