@@ -28,57 +28,51 @@ local node_groups_no_inv = {
28
28
not_in_creative_inventory = 1 ,
29
29
}
30
30
31
- local function get_tiles (name , data , color )
32
- local tiles = {
33
- " technic_ " .. name .. " _chest_top .png" .. tube_entry ,
34
- " technic_ " .. name .. " _chest_top .png" .. tube_entry ,
35
- " technic_ " .. name .. " _chest_side .png" .. tube_entry ,
36
- " technic_ " .. name .. " _chest_side .png" .. tube_entry ,
37
- " technic_ " .. name .. " _chest_side .png" .. tube_entry ,
38
- " technic_ " .. name .. " _chest_front .png"
31
+ local function get_tiles (data , color )
32
+ local tiles = data . tiles and table . copy ( data . tiles ) or {
33
+ data . texture_prefix .. " _top .png" .. tube_entry ,
34
+ data . texture_prefix .. " _top .png" .. tube_entry ,
35
+ data . texture_prefix .. " _side .png" .. tube_entry ,
36
+ data . texture_prefix .. " _side .png" .. tube_entry ,
37
+ data . texture_prefix .. " _side .png" .. tube_entry ,
38
+ data . texture_prefix .. " _front .png"
39
39
}
40
40
if data .color and color then
41
41
tiles [6 ] = tiles [6 ].. " ^technic_chest_overlay_" .. technic .chests .colors [color ][1 ].. " .png"
42
42
end
43
43
if data .locked then
44
- tiles [6 ] = tiles [6 ].. " ^technic_ " .. name .. " _chest_lock_overlay .png"
44
+ tiles [6 ] = tiles [6 ].. " ^" .. data . texture_prefix .. " _lock_overlay .png"
45
45
elseif data .protected then
46
46
tiles [6 ] = tiles [6 ].. protector_overlay
47
47
end
48
48
return tiles
49
49
end
50
50
51
- function technic .chests .register_chest (name , data )
52
- local lname = name :lower ()
53
- name = S (name )
51
+ function technic .chests .register_chest (nodename , data )
52
+ assert (data .tiles or data .texture_prefix , " technic.chests.register_chest: tiles or texture_prefix required" )
53
+ assert (data .description , " technic.chests.register_chest: description required" )
54
+ local colon
55
+ colon , nodename = nodename :match (" ^(:?)(.+)" )
56
+
54
57
if data .digilines and not has_digilines then
55
58
data .digilines = nil
56
59
end
57
- if data .locked then
58
- data .node_name = " technic:" .. lname .. " _locked_chest"
59
- data .description = S (" %s Locked Chest" ):format (name )
60
- elseif data .protected then
61
- data .node_name = " technic:" .. lname .. " _protected_chest"
62
- data .description = S (" %s Protected Chest" ):format (name )
63
- else
64
- data .node_name = " technic:" .. lname .. " _chest"
65
- data .description = S (" %s Chest" ):format (name )
66
- end
60
+
67
61
data .formspec = technic .chests .get_formspec (data )
68
62
local def = {
69
63
description = data .description ,
70
- tiles = get_tiles (lname , data ),
64
+ tiles = data . tiles or get_tiles (data ),
71
65
paramtype2 = " facedir" ,
72
66
legacy_facedir_simple = true ,
73
67
groups = node_groups ,
74
68
sounds = default .node_sound_wood_defaults (),
75
- drop = data . node_name ,
69
+ drop = nodename ,
76
70
after_place_node = function (pos , placer )
77
71
local meta = minetest .get_meta (pos )
78
72
if data .locked then
79
73
local owner = placer :get_player_name () or " "
80
74
meta :set_string (" owner" , owner )
81
- meta :set_string (" infotext" , S (" %s Locked Chest (owned by %s)" ):format (name , owner ))
75
+ meta :set_string (" infotext" , S (" %s (owned by %s)" ):format (data . description , owner ))
82
76
else
83
77
meta :set_string (" infotext" , data .description )
84
78
end
@@ -198,11 +192,11 @@ function technic.chests.register_chest(name, data)
198
192
end
199
193
local drops = {}
200
194
default .get_inventory_drops (pos , " main" , drops )
201
- drops [# drops + 1 ] = data . node_name
195
+ drops [# drops + 1 ] = nodename
202
196
minetest .remove_node (pos )
203
197
return drops
204
198
end ,
205
- on_receive_fields = technic .chests .get_receive_fields (data ),
199
+ on_receive_fields = technic .chests .get_receive_fields (nodename , data ),
206
200
}
207
201
if data .locked then
208
202
def .on_skeleton_key_use = function (pos , player , newsecret )
@@ -231,16 +225,16 @@ function technic.chests.register_chest(name, data)
231
225
},
232
226
}
233
227
end
234
- minetest .register_node (" : " .. data . node_name , def )
228
+ minetest .register_node (colon .. nodename , def )
235
229
if data .color then
236
230
for i = 1 , 15 do
237
231
local colordef = {}
238
232
for k , v in pairs (def ) do
239
233
colordef [k ] = v
240
234
end
241
235
colordef .groups = node_groups_no_inv
242
- colordef .tiles = get_tiles (lname , data , i )
243
- minetest .register_node (" : " .. data . node_name .. " _" .. technic .chests .colors [i ][1 ], colordef )
236
+ colordef .tiles = get_tiles (data , i )
237
+ minetest .register_node (colon .. nodename .. " _" .. technic .chests .colors [i ][1 ], colordef )
244
238
end
245
239
end
246
240
end
0 commit comments