47 lines
1.4 KiB
Lua
47 lines
1.4 KiB
Lua
local gen_def = dofile(minetest.get_modpath("more_chests") .. "/utils/base.lua")
|
|
local actions = dofile(minetest.get_modpath("more_chests") .. "/utils/actions.lua")
|
|
local S = minetest.get_translator("more_chests")
|
|
|
|
local dropbox = gen_def({
|
|
description = S("Dropbox"),
|
|
type = "dropbox",
|
|
size = "small",
|
|
tiles = {
|
|
top = "dropbox_top.png",
|
|
side = "dropbox_side.png",
|
|
front = "dropbox_front.png"
|
|
},
|
|
pipeworks_enabled = true,
|
|
allow_metadata_inventory_move = false,
|
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
local meta = minetest.get_meta(pos)
|
|
if actions.has_locked_chest_privilege(meta, player) then
|
|
return stack:get_count()
|
|
end
|
|
local target = meta:get_inventory():get_list(listname)[index]
|
|
local target_name = target:get_name()
|
|
local stack_count = stack:get_count()
|
|
if target_name == stack:get_name()
|
|
and target:get_count() < stack_count then
|
|
return stack_count
|
|
end
|
|
if target_name ~= "" then
|
|
return 0
|
|
end
|
|
return stack_count
|
|
end,
|
|
allow_metadata_inventory_take = actions.get_allow_metadata_inventory_take({
|
|
"dropbox", check_privs = actions.has_locked_chest_privilege
|
|
}),
|
|
})
|
|
|
|
|
|
minetest.register_node("more_chests:dropbox", dropbox)
|
|
minetest.register_craft({
|
|
output = "more_chests:dropbox",
|
|
recipe = {
|
|
{"group:wood", "", "group:wood"},
|
|
{"group:wood", "default:steel_ingot", "group:wood"},
|
|
{"group:wood", "group:wood", "group:wood"}
|
|
}
|
|
})
|