chests: Do not hardcode "default:".

This allows other mods to greater use the default.chest functions.

Fixes https://github.com/minetest/minetest_game/issues/1936

v2: Keep the default formspec name.
v3: Remove unnecessary backwards compatibility.
v4: register_lbm only applies to "default:chest" and
    "default:chest_locked".
This commit is contained in:
orbea 2020-04-09 22:55:58 -07:00
parent 695f98f213
commit b82cd9dd08

View file

@ -44,7 +44,7 @@ function default.chest.chest_lid_close(pn)
end end
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap, minetest.after(0.2, minetest.swap_node, pos, { name = swap,
param2 = node.param2 }) param2 = node.param2 })
minetest.sound_play(sound, {gain = 0.3, pos = pos, minetest.sound_play(sound, {gain = 0.3, pos = pos,
max_hear_distance = 10}, true) max_hear_distance = 10}, true)
@ -132,7 +132,7 @@ function default.chest.register_chest(name, d)
pos = pos, max_hear_distance = 10}, true) pos = pos, max_hear_distance = 10}, true)
if not default.chest.chest_lid_obstructed(pos) then if not default.chest.chest_lid_obstructed(pos) then
minetest.swap_node(pos, minetest.swap_node(pos,
{ name = "default:" .. name .. "_open", { name = name .. "_open",
param2 = node.param2 }) param2 = node.param2 })
end end
minetest.after(0.2, minetest.show_formspec, minetest.after(0.2, minetest.show_formspec,
@ -203,7 +203,7 @@ function default.chest.register_chest(name, d)
max_hear_distance = 10}, true) max_hear_distance = 10}, true)
if not default.chest.chest_lid_obstructed(pos) then if not default.chest.chest_lid_obstructed(pos) then
minetest.swap_node(pos, { minetest.swap_node(pos, {
name = "default:" .. name .. "_open", name = name .. "_open",
param2 = node.param2 }) param2 = node.param2 })
end end
minetest.after(0.2, minetest.show_formspec, minetest.after(0.2, minetest.show_formspec,
@ -215,7 +215,7 @@ function default.chest.register_chest(name, d)
def.on_blast = function(pos) def.on_blast = function(pos)
local drops = {} local drops = {}
default.get_inventory_drops(pos, "main", drops) default.get_inventory_drops(pos, "main", drops)
drops[#drops+1] = "default:" .. name drops[#drops+1] = name
minetest.remove_node(pos) minetest.remove_node(pos)
return drops return drops
end end
@ -248,7 +248,7 @@ function default.chest.register_chest(name, d)
def_opened.tiles[i].backface_culling = true def_opened.tiles[i].backface_culling = true
end end
end end
def_opened.drop = "default:" .. name def_opened.drop = name
def_opened.groups.not_in_creative_inventory = 1 def_opened.groups.not_in_creative_inventory = 1
def_opened.selection_box = { def_opened.selection_box = {
type = "fixed", type = "fixed",
@ -265,29 +265,32 @@ function default.chest.register_chest(name, d)
def_closed.tiles[5] = def.tiles[3] -- drawtype to make them match the mesh def_closed.tiles[5] = def.tiles[3] -- drawtype to make them match the mesh
def_closed.tiles[3] = def.tiles[3].."^[transformFX" def_closed.tiles[3] = def.tiles[3].."^[transformFX"
minetest.register_node("default:" .. name, def_closed) minetest.register_node(name, def_closed)
minetest.register_node("default:" .. name .. "_open", def_opened) minetest.register_node(name .. "_open", def_opened)
-- convert old chests to this new variant -- convert old chests to this new variant
minetest.register_lbm({ if name == "default:chest" or name == "default:chest_locked" then
label = "update chests to opening chests", local itemname = string.match(name, ":(.*)")
name = "default:upgrade_" .. name .. "_v2", minetest.register_lbm({
nodenames = {"default:" .. name}, label = "update chests to opening chests",
action = function(pos, node) name = "default:upgrade_" .. itemname .. "_v2",
local meta = minetest.get_meta(pos) nodenames = {name},
meta:set_string("formspec", nil) action = function(pos, node)
local inv = meta:get_inventory() local meta = minetest.get_meta(pos)
local list = inv:get_list("default:chest") meta:set_string("formspec", nil)
if list then local inv = meta:get_inventory()
inv:set_size("main", 8*4) local list = inv:get_list("default:chest")
inv:set_list("main", list) if list then
inv:set_list("default:chest", nil) inv:set_size("main", 8*4)
inv:set_list("main", list)
inv:set_list("default:chest", nil)
end
end end
end })
}) end
end end
default.chest.register_chest("chest", { default.chest.register_chest("default:chest", {
description = S("Chest"), description = S("Chest"),
tiles = { tiles = {
"default_chest_top.png", "default_chest_top.png",
@ -303,7 +306,7 @@ default.chest.register_chest("chest", {
groups = {choppy = 2, oddly_breakable_by_hand = 2}, groups = {choppy = 2, oddly_breakable_by_hand = 2},
}) })
default.chest.register_chest("chest_locked", { default.chest.register_chest("default:chest_locked", {
description = S("Locked Chest"), description = S("Locked Chest"),
tiles = { tiles = {
"default_chest_top.png", "default_chest_top.png",