summaryrefslogtreecommitdiff
path: root/castle/tapestry.lua
diff options
context:
space:
mode:
Diffstat (limited to 'castle/tapestry.lua')
-rw-r--r--castle/tapestry.lua180
1 files changed, 180 insertions, 0 deletions
diff --git a/castle/tapestry.lua b/castle/tapestry.lua
new file mode 100644
index 0000000..845fb7a
--- /dev/null
+++ b/castle/tapestry.lua
@@ -0,0 +1,180 @@
+local tapestry = {}
+
+minetest.register_node("castle:tapestry_top", {
+ drawtype = "nodebox",
+ description = "Tapestry Top",
+ tiles = {"default_wood.png"},
+ sunlight_propagates = true,
+ groups = {flammable=3,oddly_breakable_by_hand=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.600000,-0.500000,0.375000,0.600000,-0.375000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.600000,-0.500000,0.375000,0.600000,-0.375000,0.500000},
+ },
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = 'castle:tapestry_top',
+ recipe = {'default:stick'},
+})
+
+tapestry.colours = {
+ {"white", "White", "white"},
+ {"grey", "Grey", "grey"},
+ {"black", "Black", "black"},
+ {"red", "Red", "red"},
+ {"yellow", "Yellow", "yellow"},
+ {"green", "Green", "green"},
+ {"cyan", "Cyan", "cyan"},
+ {"blue", "Blue", "blue"},
+ {"magenta", "Magenta", "magenta"},
+ {"orange", "Orange", "orange"},
+ {"violet", "Violet", "violet"},
+ {"dark_grey", "Dark Grey", "dark_grey"},
+ {"dark_green", "Dark Green", "dark_green"},
+ {"pink", "Pink", "pink"},
+ {"brown", "Brown", "brown"},
+}
+
+for _, row in ipairs(tapestry.colours) do
+ local name = row[1]
+ local desc = row[2]
+ local craft_color_group = row[3]
+ -- Node Definition
+ minetest.register_node("castle:tapestry_"..name, {
+ drawtype = "nodebox",
+ description = desc.." Tapestry",
+ tiles = {"wool_"..name..".png"},
+ groups = {oddly_breakable_by_hand=3,flammable=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.312500,-0.500000,0.437500,-0.187500,-0.375000,0.500000},
+ {0.187500,-0.500000,0.437500,0.312500,-0.375000,0.500000},
+ {-0.375000,-0.375000,0.437500,-0.125000,-0.250000,0.500000},
+ {0.125000,-0.375000,0.437500,0.375000,-0.250000,0.500000},
+ {-0.437500,-0.250000,0.437500,-0.062500,-0.125000,0.500000},
+ {0.062500,-0.250000,0.437500,0.437500,-0.125000,0.500000},
+ {-0.500000,-0.125000,0.437500,0.000000,0.000000,0.500000},
+ {0.000000,-0.125000,0.437500,0.500000,0.000000,0.500000},
+ {-0.500000,0.000000,0.437500,0.500000,1.500000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.437500,0.500000,1.500000,0.500000},
+ },
+ },
+ })
+ if craft_color_group then
+ -- Crafting from wool and a stick
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'castle:tapestry_'..name,
+ recipe = {'wool:'..craft_color_group, 'default:stick'},
+ })
+ end
+end
+
+for _, row in ipairs(tapestry.colours) do
+ local name = row[1]
+ local desc = row[2]
+ local craft_color_group = row[3]
+ -- Node Definition
+ minetest.register_node("castle:long_tapestry_"..name, {
+ drawtype = "nodebox",
+ description = desc.." Tapestry (Long)",
+ tiles = {"wool_"..name..".png"},
+ groups = {oddly_breakable_by_hand=3,flammable=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.312500,-0.500000,0.437500,-0.187500,-0.375000,0.500000},
+ {0.187500,-0.500000,0.437500,0.312500,-0.375000,0.500000},
+ {-0.375000,-0.375000,0.437500,-0.125000,-0.250000,0.500000},
+ {0.125000,-0.375000,0.437500,0.375000,-0.250000,0.500000},
+ {-0.437500,-0.250000,0.437500,-0.062500,-0.125000,0.500000},
+ {0.062500,-0.250000,0.437500,0.437500,-0.125000,0.500000},
+ {-0.500000,-0.125000,0.437500,0.000000,0.000000,0.500000},
+ {0.000000,-0.125000,0.437500,0.500000,0.000000,0.500000},
+ {-0.500000,0.000000,0.437500,0.500000,2.500000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.437500,0.500000,2.500000,0.500000},
+ },
+ },
+ })
+ if craft_color_group then
+ -- Crafting from normal tapestry and wool
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'castle:long_tapestry_'..name,
+ recipe = {'wool:'..craft_color_group, 'castle:tapestry_'..name},
+ })
+ end
+end
+
+for _, row in ipairs(tapestry.colours) do
+ local name = row[1]
+ local desc = row[2]
+ local craft_color_group = row[3]
+ -- Node Definition
+ minetest.register_node("castle:very_long_tapestry_"..name, {
+ drawtype = "nodebox",
+ description = desc.." Tapestry (Very Long)",
+ tiles = {"wool_"..name..".png"},
+ groups = {oddly_breakable_by_hand=3,flammable=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.312500,-0.500000,0.437500,-0.187500,-0.375000,0.500000},
+ {0.187500,-0.500000,0.437500,0.312500,-0.375000,0.500000},
+ {-0.375000,-0.375000,0.437500,-0.125000,-0.250000,0.500000},
+ {0.125000,-0.375000,0.437500,0.375000,-0.250000,0.500000},
+ {-0.437500,-0.250000,0.437500,-0.062500,-0.125000,0.500000},
+ {0.062500,-0.250000,0.437500,0.437500,-0.125000,0.500000},
+ {-0.500000,-0.125000,0.437500,0.000000,0.000000,0.500000},
+ {0.000000,-0.125000,0.437500,0.500000,0.000000,0.500000},
+ {-0.500000,0.000000,0.437500,0.500000,3.500000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.437500,0.500000,3.500000,0.500000},
+ },
+ },
+ })
+ if craft_color_group then
+ -- Crafting from long tapestry and wool
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'castle:very_long_tapestry_'..name,
+ recipe = {'wool:'..craft_color_group, 'castle:long_tapestry_'..name},
+ })
+ end
+end