From 1d7cb740538b1d97f29d7771ec5cd9435591128f Mon Sep 17 00:00:00 2001 From: Zefram Date: Wed, 2 Jul 2014 18:45:35 +0100 Subject: [PATCH] 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. --- technic_chests/register.lua | 21 ++++++++----- technic_chests/wooden_chest.lua | 55 +++++++++++++++++++++++++++------ 2 files changed, 59 insertions(+), 17 deletions(-) diff --git a/technic_chests/register.lua b/technic_chests/register.lua index 7f175f1..cbdb0dd 100644 --- a/technic_chests/register.lua +++ b/technic_chests/register.lua @@ -142,9 +142,6 @@ local function sort_inventory(inv) end 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() return function(pos, formname, fields, sender) local meta = minetest.get_meta(pos) @@ -171,7 +168,7 @@ local function get_receive_fields(name, data) end -function technic.chests:register(name, data) +function technic.chests:definition(name, data) local lname = name:lower() 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_take = self.inv_take 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) 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 local postfix = colorid_to_postfix(i) local colordef = {} @@ -260,8 +266,7 @@ function technic.chests:register(name, data) end colordef.drop = nn colordef.groups = self.groups_noinv - front[2] = "technic_chest_overlay"..postfix..".png" - colordef.tiles[6] = table.concat(front, "^") + colordef.tiles = { def.tiles[1], def.tiles[2], def.tiles[3], def.tiles[4], def.tiles[5], mk_front("technic_chest_overlay"..postfix..".png") } minetest.register_node(":"..nn..postfix, colordef) end end diff --git a/technic_chests/wooden_chest.lua b/technic_chests/wooden_chest.lua index 8ff33b0..0fad12c 100644 --- a/technic_chests/wooden_chest.lua +++ b/technic_chests/wooden_chest.lua @@ -1,14 +1,51 @@ -local S -if intllib then - S = intllib.Getter() -else - S = function(s) return s end -end - +local udef = technic.chests:definition("Wooden", { + width = 8, + height = 4, + sort = false, + autosort = false, + 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 - minetest.override_item("default:chest", { description = S("%s Chest"):format(S("Wooden")) }) + uudef.description = udef.description 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 - minetest.override_item("default:chest_locked", { description = S("%s Locked Chest"):format(S("Wooden")) }) + lldef.description = ldef.description end +minetest.override_item("default:chest_locked", lldef)