b9d0674640
also contains updates to castle modpack's tapestries that hasn't hit the official castle modpack yet. removed redundant castle mod (should have been deleted when DB switched to the modpack one)
215 lines
6.1 KiB
Lua
215 lines
6.1 KiB
Lua
-- internationalization boilerplate
|
|
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
local S, NS = dofile(MP.."/intllib.lua")
|
|
|
|
local tapestry = {}
|
|
|
|
minetest.register_alias("castle:tapestry_top", "castle_tapestries:tapestry_top")
|
|
minetest.register_alias("castle:tapestry", "castle_tapestries:tapestry")
|
|
minetest.register_alias("castle:tapestry_long", "castle_tapestries:tapestry_long")
|
|
minetest.register_alias("castle:tapestry_very_long", "castle_tapestries:tapestry_very_long")
|
|
|
|
minetest.register_node("castle_tapestries:tapestry_top", {
|
|
drawtype = "nodebox",
|
|
description = S("Tapestry Top"),
|
|
tiles = {"default_wood.png"},
|
|
sunlight_propagates = true,
|
|
groups = {flammable=3,oddly_breakable_by_hand=3},
|
|
sounds = default.node_sound_defaults(),
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.6,-0.5,0.375,0.6,-0.375,0.5},
|
|
},
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.6,-0.5,0.375,0.6,-0.375,0.5},
|
|
},
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = 'castle_tapestries:tapestry_top',
|
|
recipe = {'default:stick'},
|
|
})
|
|
|
|
tapestry.colours = {
|
|
"white",
|
|
"grey",
|
|
"black",
|
|
"red",
|
|
"yellow",
|
|
"green",
|
|
"cyan",
|
|
"blue",
|
|
"magenta",
|
|
"orange",
|
|
"violet",
|
|
"dark_grey",
|
|
"dark_green",
|
|
"pink",
|
|
"brown",
|
|
}
|
|
|
|
-- Regular-length tapestry
|
|
|
|
minetest.register_node("castle_tapestries:tapestry", {
|
|
drawtype = "mesh",
|
|
mesh = "castle_tapestry.obj",
|
|
description = S("Tapestry"),
|
|
tiles = {"castle_tapestry.png"},
|
|
inventory_image = "castle_tapestry_inv.png",
|
|
groups = {oddly_breakable_by_hand=3,flammable=3, ud_param2_colorable = 1},
|
|
sounds = default.node_sound_defaults(),
|
|
paramtype = "light",
|
|
paramtype2 = "colorwallmounted",
|
|
palette = "unifieddyes_palette_colorwallmounted.png",
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
wall_side = {-0.5,-0.5,0.4375,0.5,1.5,0.5},
|
|
},
|
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
|
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
|
|
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
|
|
end,
|
|
after_dig_node = unifieddyes.after_dig_node,
|
|
on_rotate = unifieddyes.fix_after_screwdriver_nsew
|
|
})
|
|
|
|
-- Crafting from wool and a stick
|
|
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = 'castle_tapestries:tapestry',
|
|
recipe = {'wool:white', 'default:stick'},
|
|
})
|
|
|
|
-- Long tapestry
|
|
|
|
minetest.register_node("castle_tapestries:tapestry_long", {
|
|
drawtype = "mesh",
|
|
mesh = "castle_tapestry_long.obj",
|
|
description = S("Tapestry (Long)"),
|
|
tiles = {"castle_tapestry.png"},
|
|
inventory_image = "castle_tapestry_long_inv.png",
|
|
groups = {oddly_breakable_by_hand=3,flammable=3, ud_param2_colorable = 1},
|
|
sounds = default.node_sound_defaults(),
|
|
paramtype = "light",
|
|
paramtype2 = "colorwallmounted",
|
|
palette = "unifieddyes_palette_colorwallmounted.png",
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
wall_side = {-0.5,-0.5,0.4375,0.5,2.5,0.5},
|
|
},
|
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
|
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
|
|
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
|
|
end,
|
|
after_dig_node = unifieddyes.after_dig_node,
|
|
on_rotate = unifieddyes.fix_after_screwdriver_nsew
|
|
})
|
|
|
|
-- Crafting from normal tapestry and wool
|
|
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = 'castle_tapestries:tapestry_long',
|
|
recipe = {'wool:white', 'castle_tapestries:tapestry'},
|
|
})
|
|
|
|
-- Very long tapestry
|
|
|
|
minetest.register_node("castle_tapestries:tapestry_very_long", {
|
|
drawtype = "mesh",
|
|
mesh = "castle_tapestry_very_long.obj",
|
|
description = S("Tapestry (Very Long)"),
|
|
tiles = {"castle_tapestry.png"},
|
|
inventory_image = "castle_tapestry_very_long_inv.png",
|
|
groups = {oddly_breakable_by_hand=3,flammable=3, ud_param2_colorable = 1},
|
|
sounds = default.node_sound_defaults(),
|
|
paramtype = "light",
|
|
paramtype2 = "colorwallmounted",
|
|
palette = "unifieddyes_palette_colorwallmounted.png",
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
wall_side = {-0.5,-0.5,0.4375,0.5,3.5,0.5},
|
|
},
|
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
|
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
|
|
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
|
|
end,
|
|
after_dig_node = unifieddyes.after_dig_node,
|
|
on_rotate = unifieddyes.fix_after_screwdriver_nsew
|
|
})
|
|
|
|
-- Crafting from long tapestry and wool
|
|
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = 'castle_tapestries:tapestry_very_long',
|
|
recipe = {'wool:white', 'castle_tapestries:tapestry_long'},
|
|
})
|
|
|
|
-- Convert static tapestries to param2 color
|
|
|
|
local old_static_tapestries = {}
|
|
|
|
for _, color in ipairs(tapestry.colours) do
|
|
table.insert(old_static_tapestries, "castle:tapestry_"..color)
|
|
table.insert(old_static_tapestries, "castle:long_tapestry_"..color)
|
|
table.insert(old_static_tapestries, "castle:very_long_tapestry_"..color)
|
|
end
|
|
|
|
minetest.register_lbm({
|
|
name = "castle_tapestries:convert_tapestries",
|
|
label = "Convert tapestries to use param2 color",
|
|
run_at_every_load = false,
|
|
nodenames = old_static_tapestries,
|
|
action = function(pos, node)
|
|
local oldname = node.name
|
|
local color = string.sub(oldname, string.find(oldname, "_", -12) + 1)
|
|
|
|
if color == "red" then
|
|
color = "medium_red"
|
|
elseif color == "cyan" then
|
|
color = "medium_cyan"
|
|
elseif color == "blue" then
|
|
color = "medium_blue"
|
|
elseif color == "magenta" then
|
|
color = "medium_magenta"
|
|
end
|
|
|
|
local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
|
|
|
|
local old_fdir = math.floor(node.param2 % 32)
|
|
local new_fdir = 3
|
|
|
|
if old_fdir == 0 then
|
|
new_fdir = 3
|
|
elseif old_fdir == 1 then
|
|
new_fdir = 4
|
|
elseif old_fdir == 2 then
|
|
new_fdir = 2
|
|
elseif old_fdir == 3 then
|
|
new_fdir = 5
|
|
end
|
|
|
|
local param2 = paletteidx + new_fdir
|
|
local newname = "castle_tapestries:tapestry"
|
|
if string.find(oldname, ":long") then
|
|
newname = "castle_tapestries:tapestry_long"
|
|
elseif string.find(oldname, ":very_long") then
|
|
newname = "castle_tapestries:tapestry_very_long"
|
|
end
|
|
|
|
minetest.set_node(pos, { name = newname, param2 = param2 })
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("dye", "unifieddyes:"..color)
|
|
end
|
|
})
|