Make wools colorable by any dye (not just the ones in the dye mod)
authorPerttu Ahola <celeron55@gmail.com>
Thu, 26 Jul 2012 01:05:39 +0000 (04:05 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Thu, 26 Jul 2012 01:05:39 +0000 (04:05 +0300)
mods/dye/README.txt
mods/wool/init.lua

index c7ae077a151da94e96663159c8d58aa6573173cd..d414c2cc5f96e2ced30a1d2845e09c74ecb5e80c 100644 (file)
@@ -1,6 +1,8 @@
 Minetest 0.4 mod: dye
 ======================
 
+See init.lua for documentation.
+
 License of source code and media files:
 ---------------------------------------
 Copyright (C) 2012 Perttu Ahola (celeron55) <celeron55@gmail.com>
index c0b44675b619ceb630f5e6c3c47f6412c74cbc1b..44ea29e07335eaae31fa8eb1e8d48c94a515b3af 100644 (file)
@@ -5,40 +5,52 @@ minetest.register_alias("wool:dark_blue", "wool:blue")
 minetest.register_alias("wool:gold", "wool:yellow")
 
 local wool = {}
+-- This uses a trick: you can first define the recipes using all of the base
+-- colors, and then some recipes using more specific colors for a few non-base
+-- colors available. When crafting, the last recipes will be checked first.
 wool.dyes = {
-       {"white",      "White"},
-       {"grey",       "Grey"},
-       {"dark_grey",  "Dark Grey"},
-       {"black",      "Black"},
-       {"violet",     "Violet"},
-       {"blue",       "Blue"},
-       {"cyan",       "Cyan"},
-       {"dark_green", "Dark Green"},
-       {"green",      "Green"},
-       {"yellow",     "Yellow"},
-       {"brown",      "Brown"},
-       {"orange",     "Orange"},
-       {"red",        "Red"},
-       {"magenta",    "Magenta"},
-       {"pink",       "Pink"},
+       {"white",      "White",      nil},
+       {"grey",       "Grey",       "basecolor_grey"},
+       {"black",      "Black",      "basecolor_black"},
+       {"red",        "Red",        "basecolor_red"},
+       {"yellow",     "Yellow",     "basecolor_yellow"},
+       {"green",      "Green",      "basecolor_green"},
+       {"cyan",       "Cyan",       "basecolor_cyan"},
+       {"blue",       "Blue",       "basecolor_blue"},
+       {"magenta",    "Magenta",    "basecolor_magenta"},
+       {"orange",     "Orange",     "excolor_orange"},
+       {"violet",     "Violet",     "excolor_violet"},
+       {"brown",      "Brown",      "unicolor_dark_orange"},
+       {"pink",       "Pink",       "unicolor_light_red"},
+       {"dark_grey",  "Dark Grey",  "unicolor_darkgrey"},
+       {"dark_green", "Dark Green", "unicolor_dark_green"},
 }
 
 for _, row in ipairs(wool.dyes) do
        local name = row[1]
        local desc = row[2]
+       local craft_color_group = row[3]
        -- Node Definition
        minetest.register_node("wool:"..name, {
                description = desc.." Wool",
                tile_images = {"wool_"..name..".png"},
                groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3},
        })
-       if name ~= "white" then
+       if craft_color_group then
                -- Crafting from dye and white wool
                minetest.register_craft({
-                       type = "shapeless",
                        output = 'wool:'..name..' 16',
-                       recipe = {'dye:'..name, 'wool:white'},
+                       recipe = {
+                               {'group:'..craft_color_group},
+                               {'wool:white'},
+                       }
                })
+               -- Shapeless group recipes don't currently work
+               --[[minetest.register_craft({
+                       type = "shapeless",
+                       output = 'wool:'..name..' 16',
+                       recipe = {'group:'..craft_color_group, 'wool:white'},
+               })--]]
        end
 end