more robust variant determination, more stable basename / nodename if implementation changed
This commit is contained in:
parent
caf7210a8b
commit
9769516502
125
init.lua
125
init.lua
@ -28,7 +28,6 @@ function customnode.add_nodes_from_textures(conf)
|
|||||||
if nodedef then
|
if nodedef then
|
||||||
minetest.register_node(nodedef.name, nodedef)
|
minetest.register_node(nodedef.name, nodedef)
|
||||||
if minetest.global_exists("stairs") and conf.add_stairs_slabs ~= false then
|
if minetest.global_exists("stairs") and conf.add_stairs_slabs ~= false then
|
||||||
print(nodedef.name, generator.variant)
|
|
||||||
if conf.add_stairs_slabs == true or (type(conf.add_stairs_slabs) == "string" and string.find(conf.add_stairs_slabs, generator.variant)) then
|
if conf.add_stairs_slabs == true or (type(conf.add_stairs_slabs) == "string" and string.find(conf.add_stairs_slabs, generator.variant)) then
|
||||||
stairs.register_stair_and_slab(
|
stairs.register_stair_and_slab(
|
||||||
generator.modname.."_"..generator:get_name(),
|
generator.modname.."_"..generator:get_name(),
|
||||||
@ -101,80 +100,73 @@ function customnode.get_nodelist_by_textures(prefix, generator_mapping)
|
|||||||
end
|
end
|
||||||
|
|
||||||
for _, v in ipairs(files) do
|
for _, v in ipairs(files) do
|
||||||
-- split filename by "_"
|
local index = 0
|
||||||
local nameparts = {}
|
local skip = false
|
||||||
for part in v:gmatch("([^_]+)") do
|
|
||||||
table.insert(nameparts, part)
|
|
||||||
end
|
|
||||||
|
|
||||||
local name_idx_start = def_name_idx_start
|
local basename
|
||||||
local name_idx_end = #nameparts
|
local variant
|
||||||
-- check the nameparts if modname(1) and prefix(2) matches
|
local generator
|
||||||
if name_idx_end >= name_idx_start and
|
local tiletype
|
||||||
(nameparts[1] == modname and (not prefix or nameparts[2] == prefix)) then
|
|
||||||
|
|
||||||
-- remove file ending from last namepart
|
for part in v:gmatch("([^_]+)") do -- split filename by "_"
|
||||||
nameparts[name_idx_end] = nameparts[name_idx_end]:gsub('\....$','')
|
index = index + 1
|
||||||
|
|
||||||
-- get generator
|
-- remove file ending in last part
|
||||||
local generator
|
part = part:gsub('%....$','')
|
||||||
local variant_name
|
|
||||||
if name_idx_end >= name_idx_start then
|
-- check modname namespace
|
||||||
local generator_type = generator_mapping[nameparts[name_idx_start]]
|
if index == 1 then
|
||||||
if generator_type then
|
if part ~= modname then
|
||||||
generator = customnode._templates[generator_type]
|
skip = true
|
||||||
variant_name = nameparts[name_idx_start]
|
break
|
||||||
name_idx_start = name_idx_start +1
|
end
|
||||||
|
|
||||||
|
-- check additional namespace
|
||||||
|
elseif index == 2 and prefix then
|
||||||
|
if part ~= prefix then
|
||||||
|
skip = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
-- process tile mapping
|
||||||
|
elseif tile_mapping[part] then
|
||||||
|
tiletype = tile_mapping[part]
|
||||||
|
|
||||||
|
else
|
||||||
|
if not generator and generator_mapping[part] then
|
||||||
|
variant = part
|
||||||
|
generator = customnode._templates[generator_mapping[part]]
|
||||||
|
end
|
||||||
|
if not basename then
|
||||||
|
basename = part
|
||||||
else
|
else
|
||||||
local generator_type = generator_mapping[nameparts[name_idx_end]]
|
basename = basename.."_"..part
|
||||||
if generator_type then
|
|
||||||
generator = customnode._templates[generator_type]
|
|
||||||
variant_name = nameparts[name_idx_end]
|
|
||||||
name_idx_end = name_idx_end -1
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not skip then
|
||||||
|
-- default tiletype
|
||||||
|
if not tiletype then
|
||||||
|
tiletype = "all"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- default generator
|
||||||
if not generator then
|
if not generator then
|
||||||
variant_name = "default"
|
variant = "default"
|
||||||
generator = customnode._templates["default"]
|
generator = customnode._templates["default"]
|
||||||
end
|
end
|
||||||
|
|
||||||
-- get tiletype
|
|
||||||
local tiletype
|
|
||||||
if name_idx_end >= name_idx_start then
|
|
||||||
tiletype = tile_mapping[nameparts[name_idx_end]]
|
|
||||||
end
|
|
||||||
if not tiletype then
|
|
||||||
tiletype = "all"
|
|
||||||
else
|
|
||||||
name_idx_end = name_idx_end -1
|
|
||||||
end
|
|
||||||
|
|
||||||
-- get the basename and the unique entry name
|
|
||||||
local basename
|
|
||||||
local entryname
|
|
||||||
if name_idx_start <= name_idx_end then
|
|
||||||
basename = nameparts[name_idx_start]
|
|
||||||
if name_idx_start < name_idx_end then
|
|
||||||
for i = name_idx_start+1, name_idx_end do
|
|
||||||
basename = basename.."_"..nameparts[i]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
entryname = basename.."_"..variant_name
|
|
||||||
else
|
|
||||||
entryname = variant_name
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Add information to the customnode
|
-- Add information to the customnode
|
||||||
if not customnode_list[entryname] then
|
if not customnode_list[basename] then
|
||||||
customnode_list[entryname] = generator:new({
|
customnode_list[basename] = generator:new({
|
||||||
modname = modname,
|
modname = modname,
|
||||||
prefix = prefix,
|
prefix = prefix,
|
||||||
basename = basename,
|
basename = basename,
|
||||||
variant = variant_name,
|
variant = variant,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
customnode_list[entryname].tiles[tiletype] = v
|
customnode_list[basename].tiles[tiletype] = v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return customnode_list
|
return customnode_list
|
||||||
@ -215,17 +207,9 @@ customnode.register_generator("default", {
|
|||||||
-- Get node name
|
-- Get node name
|
||||||
get_name = function(self)
|
get_name = function(self)
|
||||||
if not self.basename then
|
if not self.basename then
|
||||||
if self.variant == "default" then
|
return self.modname
|
||||||
return self.modname
|
|
||||||
else
|
|
||||||
return self.variant
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
if self.variant == "default" then
|
return self.basename
|
||||||
return self.basename
|
|
||||||
else
|
|
||||||
return self.variant.."_"..self.basename
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
@ -235,9 +219,6 @@ customnode.register_generator("default", {
|
|||||||
if self.basename then
|
if self.basename then
|
||||||
descr = descr.." "..self.basename:gsub("_"," ")
|
descr = descr.." "..self.basename:gsub("_"," ")
|
||||||
end
|
end
|
||||||
if self.variant ~= "default" then
|
|
||||||
descr = descr.." "..self.variant
|
|
||||||
end
|
|
||||||
return descr
|
return descr
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user