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:
parent
2d9e06c479
commit
1d7cb74053
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user