mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-11-20 09:53:46 +01:00
e771f0e3ff
Shulker boxes can now be rotated. The TODO will now be transferred to PR.
109 lines
4.2 KiB
Lua
109 lines
4.2 KiB
Lua
local S = minetest.get_translator(minetest.get_current_modname())
|
|
local F = minetest.formspec_escape
|
|
local C = minetest.colorize
|
|
local get_double_container_neighbor_pos = mcl_util.get_double_container_neighbor_pos
|
|
local trapped_chest_mesecons_rules = mesecon.rules.pplate
|
|
|
|
local chestusage = S("To access its inventory, rightclick it. When broken, the items will drop out.")
|
|
|
|
mcl_chests.register_chest("chest",
|
|
S("Chest"),
|
|
S("Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other."),
|
|
chestusage,
|
|
S("27 inventory slots") .. "\n" .. S("Can be combined to a large chest"),
|
|
{
|
|
small = mcl_chests.tiles.chest_normal_small,
|
|
double = mcl_chests.tiles.chest_normal_double,
|
|
inv = { "default_chest_top.png", "mcl_chests_chest_bottom.png",
|
|
"mcl_chests_chest_right.png", "mcl_chests_chest_left.png",
|
|
"mcl_chests_chest_back.png", "default_chest_front.png" },
|
|
},
|
|
false
|
|
)
|
|
|
|
local traptiles = {
|
|
small = mcl_chests.tiles.chest_trapped_small,
|
|
double = mcl_chests.tiles.chest_trapped_double,
|
|
}
|
|
|
|
mcl_chests.register_chest("trapped_chest",
|
|
S("Trapped Chest"),
|
|
S("A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other."),
|
|
chestusage,
|
|
S("27 inventory slots") ..
|
|
"\n" .. S("Can be combined to a large chest") .. "\n" .. S("Emits a redstone signal when opened"),
|
|
traptiles,
|
|
nil,
|
|
{
|
|
receptor = {
|
|
state = mesecon.state.off,
|
|
rules = trapped_chest_mesecons_rules,
|
|
},
|
|
},
|
|
function(pos, node, clicker)
|
|
minetest.swap_node(pos, { name = "mcl_chests:trapped_chest_on_small", param2 = node.param2 })
|
|
mcl_chests.find_or_create_entity(pos, "mcl_chests:trapped_chest_on_small", { "mcl_chests_trapped.png" }, node.param2, false,
|
|
"default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_small")
|
|
mesecon.receptor_on(pos, trapped_chest_mesecons_rules)
|
|
end,
|
|
function(pos, node, clicker)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_int("players", 1)
|
|
|
|
minetest.swap_node(pos, { name = "mcl_chests:trapped_chest_on_left", param2 = node.param2 })
|
|
mcl_chests.find_or_create_entity(pos, "mcl_chests:trapped_chest_on_left", mcl_chests.tiles.chest_trapped_double, node.param2, true,
|
|
"default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_left")
|
|
mesecon.receptor_on(pos, trapped_chest_mesecons_rules)
|
|
|
|
local pos_other = get_double_container_neighbor_pos(pos, node.param2, "left")
|
|
minetest.swap_node(pos_other, { name = "mcl_chests:trapped_chest_on_right", param2 = node.param2 })
|
|
mesecon.receptor_on(pos_other, trapped_chest_mesecons_rules)
|
|
end,
|
|
function(pos, node, clicker)
|
|
local pos_other = get_double_container_neighbor_pos(pos, node.param2, "right")
|
|
|
|
minetest.swap_node(pos, { name = "mcl_chests:trapped_chest_on_right", param2 = node.param2 })
|
|
mesecon.receptor_on(pos, trapped_chest_mesecons_rules)
|
|
|
|
minetest.swap_node(pos_other, { name = "mcl_chests:trapped_chest_on_left", param2 = node.param2 })
|
|
mcl_chests.find_or_create_entity(pos_other, "mcl_chests:trapped_chest_on_left", mcl_chests.tiles.chest_trapped_double, node.param2,
|
|
true,
|
|
"default_chest", "mcl_chests_chest", "chest"):reinitialize("mcl_chests:trapped_chest_on_left")
|
|
mesecon.receptor_on(pos_other, trapped_chest_mesecons_rules)
|
|
end
|
|
)
|
|
|
|
mcl_chests.register_chest("trapped_chest_on",
|
|
nil, nil, nil, nil, traptiles, true,
|
|
{
|
|
receptor = {
|
|
state = mesecon.state.on,
|
|
rules = trapped_chest_mesecons_rules,
|
|
},
|
|
},
|
|
nil, nil, nil,
|
|
"trapped_chest",
|
|
"trapped_chest"
|
|
)
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_chests:chest",
|
|
recipe = {
|
|
{ "group:wood", "group:wood", "group:wood" },
|
|
{ "group:wood", "", "group:wood" },
|
|
{ "group:wood", "group:wood", "group:wood" },
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "mcl_chests:chest",
|
|
burntime = 15,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "mcl_chests:trapped_chest",
|
|
burntime = 15,
|
|
})
|