Bring wooden chest fully into the chest system

Re-register most aspects of default:chest and default:chest_locked,
using the technic chests code, so that the wooden chests fit properly
into the sequence of chest types.  This mainly affects the formspec,
which now uses the style of the other chests, rather than the bare style
used by the default mod.
This commit is contained in:
Zefram 2014-07-02 18:45:35 +01:00
parent 2d9e06c479
commit 1d7cb74053
2 changed files with 59 additions and 17 deletions

@ -142,9 +142,6 @@ local function sort_inventory(inv)
end end
local function get_receive_fields(name, data) local function get_receive_fields(name, data)
if not data.sort and not data.autosort and not data.infotext and not data.color then
return nil
end
local lname = name:lower() local lname = name:lower()
return function(pos, formname, fields, sender) return function(pos, formname, fields, sender)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -171,7 +168,7 @@ local function get_receive_fields(name, data)
end end
function technic.chests:register(name, data) function technic.chests:definition(name, data)
local lname = name:lower() local lname = name:lower()
name = S(name) name = S(name)
@ -245,13 +242,22 @@ function technic.chests:register(name, data)
def.allow_metadata_inventory_put = self.inv_put def.allow_metadata_inventory_put = self.inv_put
def.allow_metadata_inventory_take = self.inv_take def.allow_metadata_inventory_take = self.inv_take
end end
return def
end
local nn = "technic:"..lname..(data.locked and "_locked" or "").."_chest" function technic.chests:register(name, data)
local def = technic.chests:definition(name, data)
local nn = "technic:"..name:lower()..(data.locked and "_locked" or "").."_chest"
minetest.register_node(":"..nn, def) minetest.register_node(":"..nn, def)
if data.color then if data.color then
front[3] = front[2] local mk_front
if string.find(def.tiles[6], "%^") then
mk_front = function (overlay) return def.tiles[6]:gsub("%^", "^"..overlay.."^") end
else
mk_front = function (overlay) return def.tiles[6].."^"..overlay end
end
for i = 1, 15 do for i = 1, 15 do
local postfix = colorid_to_postfix(i) local postfix = colorid_to_postfix(i)
local colordef = {} local colordef = {}
@ -260,8 +266,7 @@ function technic.chests:register(name, data)
end end
colordef.drop = nn colordef.drop = nn
colordef.groups = self.groups_noinv colordef.groups = self.groups_noinv
front[2] = "technic_chest_overlay"..postfix..".png" colordef.tiles = { def.tiles[1], def.tiles[2], def.tiles[3], def.tiles[4], def.tiles[5], mk_front("technic_chest_overlay"..postfix..".png") }
colordef.tiles[6] = table.concat(front, "^")
minetest.register_node(":"..nn..postfix, colordef) minetest.register_node(":"..nn..postfix, colordef)
end end
end end

@ -1,14 +1,51 @@
local S local udef = technic.chests:definition("Wooden", {
if intllib then width = 8,
S = intllib.Getter() height = 4,
else sort = false,
S = function(s) return s end autosort = false,
end infotext = false,
color = false,
locked = false,
})
local uudef = {
groups = udef.groups,
tube = udef.tube,
on_construct = udef.on_construct,
can_dig = udef.can_dig,
on_receive_fields = udef.on_receive_fields,
on_metadata_inventory_move = udef.on_metadata_inventory_move,
on_metadata_inventory_put = udef.on_metadata_inventory_put,
on_metadata_inventory_take = udef.on_metadata_inventory_take,
}
if minetest.registered_nodes["default:chest"].description == "Chest" then if minetest.registered_nodes["default:chest"].description == "Chest" then
minetest.override_item("default:chest", { description = S("%s Chest"):format(S("Wooden")) }) uudef.description = udef.description
end end
minetest.override_item("default:chest", uudef)
local ldef = technic.chests:definition("Wooden", {
width = 8,
height = 4,
sort = false,
autosort = false,
infotext = false,
color = false,
locked = true,
})
local lldef = {
groups = ldef.groups,
tube = ldef.tube,
after_place_node = ldef.after_place_node,
on_construct = ldef.on_construct,
can_dig = ldef.can_dig,
on_receive_fields = ldef.on_receive_fields,
allow_metadata_inventory_move = ldef.allow_metadata_inventory_move,
allow_metadata_inventory_put = ldef.allow_metadata_inventory_put,
allow_metadata_inventory_take = ldef.allow_metadata_inventory_take,
on_metadata_inventory_move = ldef.on_metadata_inventory_move,
on_metadata_inventory_put = ldef.on_metadata_inventory_put,
on_metadata_inventory_take = ldef.on_metadata_inventory_take,
}
if minetest.registered_nodes["default:chest_locked"].description == "Locked Chest" then if minetest.registered_nodes["default:chest_locked"].description == "Locked Chest" then
minetest.override_item("default:chest_locked", { description = S("%s Locked Chest"):format(S("Wooden")) }) lldef.description = ldef.description
end end
minetest.override_item("default:chest_locked", lldef)