Merge branch 'better_glass_stair_textures' into bugfix_mania

This commit is contained in:
Wuzzy 2023-06-30 20:00:09 +02:00
commit aba1624182
9 changed files with 179 additions and 7 deletions

83
src/glasscut.lua Normal file
View File

@ -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"),
}

View File

@ -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 = {

View File

@ -1,3 +1,5 @@
dofile(minetest.get_modpath("xdecor") .. "/src/glasscut.lua")
local workbench = {}
local nodes = {}
@ -303,20 +305,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 = xdecor.glasscuts[node]
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]),

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B