-- Voxelis: vox_fabric
-- Dynamic fabric and pattern system for Minetest

-- Initialize the global table for the mod
vox_fabric = {}

-- Dependencies
local modpath = minetest.get_modpath("vox_fabric")
dofile(modpath .. "/fabric_dying_bench.lua")
dofile(modpath .. "/fabric_patterns.lua")

-- Fabric Registry
local fabric_registry = {}

-- Register a fabric application
function vox_fabric.register_application(modname, base_item, description, base_texture)
    fabric_registry[modname] = fabric_registry[modname] or {}
    table.insert(fabric_registry[modname], base_item)

    minetest.register_node(modname .. ":" .. base_item, {
        description = description,
        tiles = {base_texture},
        groups = {fabric = 1},
        on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
            -- Interaction logic for applying patterns
            local meta = itemstack:get_meta()
            local pattern_id = meta:get_string("pattern_id")
            if pattern_id and pattern_id ~= "" then
                local new_texture = "generated_patterns/" .. pattern_id .. ".png"
                minetest.swap_node(pos, {name = modname .. ":" .. base_item, tiles = {new_texture}})
                minetest.chat_send_player(clicker:get_player_name(), "Applied pattern: " .. pattern_id)
            else
                minetest.chat_send_player(clicker:get_player_name(), "No pattern found on the template.")
            end
        end,
    })
end
