forked from mad-star-studio/Voxelis
37 lines
1.4 KiB
Lua
37 lines
1.4 KiB
Lua
-- 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
|