diff --git a/src/nodes.lua b/src/nodes.lua index 41e1559..3af9815 100644 --- a/src/nodes.lua +++ b/src/nodes.lua @@ -798,7 +798,56 @@ xdecor.register("woodframed_glass", { tiles = {"xdecor_woodframed_glass.png", "xdecor_woodframed_glass_detail.png"}, use_texture_alpha = ALPHA_CLIP, groups = {cracky = 2, oddly_breakable_by_hand = 1}, - sounds = default.node_sound_glass_defaults() + sounds = default.node_sound_glass_defaults(), + _xdecor_custom_noncube_tiles = { + stair = { + "xdecor_woodframed_glass_split.png", + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass_stairside_flip.png", + "xdecor_woodframed_glass_stairside.png", + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass_split.png", + }, + stair_inner = { + "xdecor_woodframed_glass_stairside.png^[transformR270", + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass_stairside_flip.png", + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass_stairside.png", + }, + stair_outer = { + "xdecor_woodframed_glass_stairside.png^[transformR90", + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass_outer_stairside.png", + "xdecor_woodframed_glass_stairside_flip.png", + "xdecor_woodframed_glass_stairside.png^[transformR90", + "xdecor_woodframed_glass_outer_stairside.png", + }, + halfstair = { + "xdecor_woodframed_glass_cube.png", + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass_stairside_flip.png", + "xdecor_woodframed_glass_stairside.png", + "xdecor_woodframed_glass_split.png^[transformR90", + "xdecor_woodframed_glass_cube.png", + }, + slab = { + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass.png", + "xdecor_woodframed_glass_split.png", + }, + cube = { "xdecor_woodframed_glass_cube.png" }, + thinstair = { "xdecor_woodframed_glass_split.png" }, + micropanel = { "xdecor_woodframed_glass_split.png" }, + panel = { + "xdecor_woodframed_glass_split.png", + "xdecor_woodframed_glass_split.png", + "xdecor_woodframed_glass_cube.png", + "xdecor_woodframed_glass_cube.png", + "xdecor_woodframed_glass_split.png", + }, + }, }) local devices = { diff --git a/src/workbench.lua b/src/workbench.lua index ea2fc66..3bc0910 100644 --- a/src/workbench.lua +++ b/src/workbench.lua @@ -303,20 +303,58 @@ for i = 1, #nodes do end end - if not minetest.registered_nodes["stairs:slab_" .. item_name] then - stairs.register_stair_and_slab(item_name, node, - groups, tiles, S("@1 Stair", def.description), - S("@1 Slab", def.description), def.sounds) + local custom_tiles = def._xdecor_custom_noncube_tiles + if custom_tiles then + if not custom_tiles.nanoslab then + custom_tiles.nanoslab = custom_tiles.cube + end + if not custom_tiles.micropanel then + custom_tiles.micropanel = custom_tiles.micropanel + end + if not custom_tiles.doublepanel then + custom_tiles.doublepanel = custom_tiles.panel + end end - minetest.register_node(":" .. node .. "_" .. d[1], { + if not minetest.registered_nodes["stairs:slab_" .. item_name] then + if custom_tiles and (custom_tiles.slab or custom_tiles.stair) then + if custom_tiles.stair then + stairs.register_stair(item_name, node, + groups, custom_tiles.stair, S("@1 Stair", def.description), + def.sounds) + stairs.register_stair_inner(item_name, node, + groups, custom_tiles.stair_inner, "", def.sounds) + stairs.register_stair_outer(item_name, node, + groups, custom_tiles.stair_outer, "", def.sounds) + end + if custom_tiles.slab then + stairs.register_slab(item_name, node, + groups, custom_tiles.slab, S("@1 Slab", def.description), + def.sounds) + end + else + stairs.register_stair_and_slab(item_name, node, + groups, tiles, S("@1 Stair", def.description), + S("@1 Slab", def.description), def.sounds) + end + end + + local cutname = d[1] + local tiles_special_cut + if custom_tiles and custom_tiles[cutname] then + tiles_special_cut = custom_tiles[cutname] + else + tiles_special_cut = tiles + end + + minetest.register_node(":" .. node .. "_" .. cutname, { -- @1: Base node description (e.g. "Stone"); @2: modifier (e.g. "Nanoslab") description = S("@1 @2", def.description, d[4]), paramtype = "light", paramtype2 = "facedir", drawtype = "nodebox", sounds = def.sounds, - tiles = tiles, + tiles = tiles_special_cut, use_texture_alpha = def.use_texture_alpha, groups = groups, node_box = xdecor.pixelbox(16, d[3]), diff --git a/textures/xdecor_woodframed_glass_cube.png b/textures/xdecor_woodframed_glass_cube.png new file mode 100644 index 0000000..9ad1528 Binary files /dev/null and b/textures/xdecor_woodframed_glass_cube.png differ diff --git a/textures/xdecor_woodframed_glass_outer_stairside.png b/textures/xdecor_woodframed_glass_outer_stairside.png new file mode 100644 index 0000000..9ee8085 Binary files /dev/null and b/textures/xdecor_woodframed_glass_outer_stairside.png differ diff --git a/textures/xdecor_woodframed_glass_split.png b/textures/xdecor_woodframed_glass_split.png new file mode 100644 index 0000000..28a3515 Binary files /dev/null and b/textures/xdecor_woodframed_glass_split.png differ diff --git a/textures/xdecor_woodframed_glass_stairside.png b/textures/xdecor_woodframed_glass_stairside.png new file mode 100644 index 0000000..fbbce3c Binary files /dev/null and b/textures/xdecor_woodframed_glass_stairside.png differ diff --git a/textures/xdecor_woodframed_glass_stairside_flip.png b/textures/xdecor_woodframed_glass_stairside_flip.png new file mode 100644 index 0000000..ab29527 Binary files /dev/null and b/textures/xdecor_woodframed_glass_stairside_flip.png differ