diff --git a/src/glasscut.lua b/src/glasscut.lua new file mode 100644 index 0000000..38231c5 --- /dev/null +++ b/src/glasscut.lua @@ -0,0 +1,83 @@ +-- Tile definitions for cut nodes of glass nodes: +-- * Woodframed Glass (this mod) +-- * Glass (Minetest Game) +-- * Obsidian Glass (Minetest Game) +-- This is done so the glass nodes still look nice +-- when cut. +-- If we would only use the base glass tile, most +-- cut nodes look horrible because there are no +-- clear contours. + +local template_suffixes = { + stair = { + "_split.png", + ".png", + "_stairside.png^[transformFX", + "_stairside.png", + ".png", + "_split.png", + }, + stair_inner = { + "_stairside.png^[transformR270", + ".png", + "_stairside.png^[transformFX", + ".png", + ".png", + "_stairside.png", + }, + stair_outer = { + "_stairside.png^[transformR90", + ".png", + "_outer_stairside.png", + "_stairside.png^[transformFX", + "_stairside.png^[transformR90", + "_outer_stairside.png", + }, + halfstair = { + "_cube.png", + ".png", + "_stairside.png^[transformFX", + "_stairside.png", + "_split.png^[transformR90", + "_cube.png", + }, + slab = { + ".png", + ".png", + "_split.png", + }, + cube = { "_cube.png" }, + thinstair = { "_split.png" }, + micropanel = { "_split.png" }, + panel = { + "_split.png", + "_split.png", + "_cube.png", + "_cube.png", + "_split.png", + }, +} + +local generate_tilenames = function(prefix, default_texture) + if not default_texture then + default_texture = prefix + end + local cuts = {} + for t, tiles in pairs(template_suffixes) do + cuts[t] = {} + for i=1, #tiles do + if tiles[i] == ".png" then + cuts[t][i] = default_texture .. tiles[i] + else + cuts[t][i] = prefix .. tiles[i] + end + end + end + return cuts +end + +xdecor.glasscuts = { + ["xdecor:woodframed_glass"] = generate_tilenames("xdecor_woodframed_glass"), + ["default:glass"] = generate_tilenames("stairs_glass", "default_glass"), + ["default:obsidian_glass"] = generate_tilenames("stairs_obsidian_glass", "default_obsidian_glass"), +} diff --git a/src/workbench.lua b/src/workbench.lua index 3bc0910..47dba11 100644 --- a/src/workbench.lua +++ b/src/workbench.lua @@ -1,3 +1,5 @@ +dofile(minetest.get_modpath("xdecor") .. "/src/glasscut.lua") + local workbench = {} local nodes = {} @@ -303,7 +305,7 @@ for i = 1, #nodes do end end - local custom_tiles = def._xdecor_custom_noncube_tiles + local custom_tiles = xdecor.glasscuts[node] if custom_tiles then if not custom_tiles.nanoslab then custom_tiles.nanoslab = custom_tiles.cube diff --git a/textures/stairs_glass_cube.png b/textures/stairs_glass_cube.png new file mode 100644 index 0000000..f8182eb Binary files /dev/null and b/textures/stairs_glass_cube.png differ diff --git a/textures/stairs_obsidian_glass_cube.png b/textures/stairs_obsidian_glass_cube.png new file mode 100644 index 0000000..68bd9f8 Binary files /dev/null and b/textures/stairs_obsidian_glass_cube.png differ diff --git a/textures/xdecor_woodframed_glass_stairside_flip.png b/textures/xdecor_woodframed_glass_stairside_flip.png deleted file mode 100644 index ab29527..0000000 Binary files a/textures/xdecor_woodframed_glass_stairside_flip.png and /dev/null differ