dye/init.lua

142 lines
3.0 KiB
Lua

-- dye/init.lua
dye = {}
local is_mtg = minetest.get_modpath("default") and minetest.settings:get_bool("dye.mtg", true)
local is_aurum = minetest.get_modpath("aurum")
-- Load support for MT game translation.
local S = minetest.get_translator("dye")
-- Make dye names and descriptions available globally
dye.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"},
}
-- Define items
for _, row in ipairs(dye.dyes) do
local name = row[1]
local description = row[2]
local groups = {dye = 1}
groups["color_" .. name] = 1
minetest.register_craftitem("dye:" .. name, {
inventory_image = "dye_" .. name .. ".png",
description = S(description .. " Dye"),
groups = groups
})
if is_mtg then
minetest.register_craft({
output = "dye:" .. name .. " 4",
recipe = {
{"group:flower,color_" .. name}
},
})
elseif is_aurum then
minetest.register_craft({
output = "dye:" .. name .. " 4",
recipe = {
{"group:dye_source,color_" .. name}
},
})
end
end
if is_mtg then
-- Manually add coal -> black dye
minetest.register_craft({
output = "dye:black 4",
recipe = {
{"group:coal"}
},
})
-- Manually add blueberries->violet dye
minetest.register_craft({
output = "dye:violet 2",
recipe = {
{"default:blueberries"}
},
})
end
-- Mix recipes
local dye_recipes = {
-- src1, src2, dst
-- RYB mixes
{"red", "blue", "violet"}, -- "purple"
{"yellow", "red", "orange"},
{"yellow", "blue", "green"},
-- RYB complementary mixes
{"yellow", "violet", "dark_grey"},
{"blue", "orange", "dark_grey"},
-- CMY mixes - approximation
{"cyan", "yellow", "green"},
{"cyan", "magenta", "blue"},
{"yellow", "magenta", "red"},
-- other mixes that result in a color we have
{"red", "green", "brown"},
{"magenta", "blue", "violet"},
{"green", "blue", "cyan"},
{"pink", "violet", "magenta"},
-- mixes with black
{"white", "black", "grey"},
{"grey", "black", "dark_grey"},
{"green", "black", "dark_green"},
{"orange", "black", "brown"},
-- mixes with white
{"white", "red", "pink"},
{"white", "dark_grey", "grey"},
{"white", "dark_green", "green"},
}
for _, mix in pairs(dye_recipes) do
minetest.register_craft({
type = "shapeless",
output = "dye:" .. mix[3] .. " 2",
recipe = {"dye:" .. mix[1], "dye:" .. mix[2]},
})
end
-- Dummy calls to S() to allow translation scripts to detect the strings.
-- To update this run:
-- for _,e in ipairs(dye.dyes) do print(("S(%q)"):format(e[2].." Dye")) end
--[[
S("White Dye")
S("Grey Dye")
S("Dark Grey Dye")
S("Black Dye")
S("Violet Dye")
S("Blue Dye")
S("Cyan Dye")
S("Dark Green Dye")
S("Green Dye")
S("Yellow Dye")
S("Brown Dye")
S("Orange Dye")
S("Red Dye")
S("Magenta Dye")
S("Pink Dye")
--]]