summaryrefslogtreecommitdiff
path: root/unifieddyes/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'unifieddyes/init.lua')
-rw-r--r--unifieddyes/init.lua375
1 files changed, 375 insertions, 0 deletions
diff --git a/unifieddyes/init.lua b/unifieddyes/init.lua
new file mode 100644
index 0000000..fc36199
--- /dev/null
+++ b/unifieddyes/init.lua
@@ -0,0 +1,375 @@
+--[[
+
+Unified Dyes
+
+This mod provides an extension to the Minetest 0.4.x dye system
+
+==============================================================================
+
+Copyright (C) 2012-2013, Vanessa Ezekowitz
+Email: vanessaezekowitz@gmail.com
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+==============================================================================
+
+--]]
+
+--=====================================================================
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+
+-- Items/recipes needed to generate the few base colors that are not
+-- provided by the standard dyes mod.
+
+-- Lime
+
+minetest.register_craftitem(":dye:lime", {
+ description = S("Lime Dye"),
+ inventory_image = "unifieddyes_lime.png",
+ groups = { dye=1, excolor_lime=1, unicolor_lime=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:lime 2",
+ recipe = {
+ "dye:yellow",
+ "dye:green",
+ },
+})
+
+-- Aqua
+
+minetest.register_craftitem(":dye:aqua", {
+ description = S("Aqua Dye"),
+ inventory_image = "unifieddyes_aqua.png",
+ groups = { dye=1, excolor_aqua=1, unicolor_aqua=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:aqua 2",
+ recipe = {
+ "dye:cyan",
+ "dye:green",
+ },
+})
+
+-- Sky blue
+
+minetest.register_craftitem(":dye:skyblue", {
+ description = S("Sky-blue Dye"),
+ inventory_image = "unifieddyes_skyblue.png",
+ groups = { dye=1, excolor_sky_blue=1, unicolor_sky_blue=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:skyblue 2",
+ recipe = {
+ "dye:cyan",
+ "dye:blue",
+ },
+})
+
+-- Red-violet
+
+minetest.register_craftitem(":dye:redviolet", {
+ description = S("Red-violet Dye"),
+ inventory_image = "unifieddyes_redviolet.png",
+ groups = { dye=1, excolor_red_violet=1, unicolor_red_violet=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:redviolet 2",
+ recipe = {
+ "dye:red",
+ "dye:magenta",
+ },
+})
+
+
+-- Light grey
+
+minetest.register_craftitem(":dye:light_grey", {
+ description = S("Light Grey Dye"),
+ inventory_image = "unifieddyes_lightgrey.png",
+ groups = { dye=1, excolor_lightgrey=1, unicolor_light_grey=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:light_grey 2",
+ recipe = {
+ "dye:grey",
+ "dye:white",
+ },
+})
+
+-- Extra craft for black dye
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:black 4",
+ recipe = {
+ "default:coal_lump",
+ },
+})
+
+-- Extra craft for dark grey dye
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:dark_grey 3",
+ recipe = {
+ "dye:black",
+ "dye:black",
+ "dye:white",
+ },
+})
+
+-- Extra craft for light grey dye
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:light_grey 3",
+ recipe = {
+ "dye:black",
+ "dye:white",
+ "dye:white",
+ },
+})
+
+-- Extra craft for green dye
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:green 4",
+ recipe = {
+ "default:cactus",
+ },
+})
+
+-- =================================================================
+
+-- Generate all of additional variants of hue, saturation, and
+-- brightness.
+
+-- "s50" in a file/item name means "saturation: 50%".
+-- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),
+-- 100% ("full", but not so-named), and 150% ("light").
+
+local HUES = {
+ "red",
+ "orange",
+ "yellow",
+ "lime",
+ "green",
+ "aqua",
+ "cyan",
+ "skyblue",
+ "blue",
+ "violet",
+ "magenta",
+ "redviolet"
+}
+
+local HUES2 = {
+ "Red",
+ "Orange",
+ "Yellow",
+ "Lime",
+ "Green",
+ "Aqua",
+ "Cyan",
+ "Sky-blue",
+ "Blue",
+ "Violet",
+ "Magenta",
+ "Red-violet"
+}
+
+
+for i = 1, 12 do
+
+ local hue = HUES[i]
+ local hue2 = HUES2[i]
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:dark_" .. hue .. "_s50 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:dark_grey",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:dark_" .. hue .. "_s50 4",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ "dye:black",
+ "dye:white"
+ },
+ })
+
+ if hue == "green" then
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:dark_green 3",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ "dye:black",
+ },
+ })
+ else
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:dark_" .. hue .. " 3",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ "dye:black",
+ },
+ })
+ end
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:medium_" .. hue .. "_s50 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:grey",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:medium_" .. hue .. "_s50 3",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ "dye:white",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:medium_" .. hue .. " 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:" .. hue .. "_s50 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:grey",
+ "dye:white",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:" .. hue .. "_s50 4",
+ recipe = {
+ "dye:" .. hue,
+ "dye:white",
+ "dye:white",
+ "dye:black",
+ },
+ })
+
+ if hue ~= "red" then
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:light_" .. hue .. " 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:white",
+ },
+ })
+ end
+
+ minetest.register_craftitem("unifieddyes:dark_" .. hue .. "_s50", {
+ description = S("Dark " .. hue2 .. " Dye (low saturation)"),
+ inventory_image = "unifieddyes_dark_" .. hue .. "_s50.png",
+ groups = { dye=1, ["unicolor_dark_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
+ })
+
+ if hue ~= "green" then
+ minetest.register_craftitem("unifieddyes:dark_" .. hue, {
+ description = S("Dark " .. hue2 .. " Dye"),
+ inventory_image = "unifieddyes_dark_" .. hue .. ".png",
+ groups = { dye=1, ["unicolor_dark_"..hue]=1, not_in_creative_inventory=1 }
+ })
+ end
+
+ minetest.register_craftitem("unifieddyes:medium_" .. hue .. "_s50", {
+ description = S("Medium " .. hue2 .. " Dye (low saturation)"),
+ inventory_image = "unifieddyes_medium_" .. hue .. "_s50.png",
+ groups = { dye=1, ["unicolor_medium_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
+ })
+
+ minetest.register_craftitem("unifieddyes:medium_" .. hue, {
+ description = S("Medium " .. hue2 .. " Dye"),
+ inventory_image = "unifieddyes_medium_" .. hue .. ".png",
+ groups = { dye=1, ["unicolor_medium_"..hue]=1, not_in_creative_inventory=1 }
+ })
+
+ minetest.register_craftitem("unifieddyes:" .. hue .. "_s50", {
+ description = S(hue2 .. " Dye (low saturation)"),
+ inventory_image = "unifieddyes_" .. hue .. "_s50.png",
+ groups = { dye=1, ["unicolor_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
+ })
+
+ if hue ~= "red" then
+ minetest.register_craftitem("unifieddyes:light_" .. hue, {
+ description = S("Light " .. hue2 .. " Dye"),
+ inventory_image = "unifieddyes_light_" .. hue .. ".png",
+ groups = { dye=1, ["unicolor_light_"..hue]=1, not_in_creative_inventory=1 }
+ })
+ end
+ minetest.register_alias("unifieddyes:"..hue, "dye:"..hue)
+ minetest.register_alias("unifieddyes:pigment_"..hue, "dye:"..hue)
+end
+
+minetest.register_alias("unifieddyes:light_red", "dye:pink")
+minetest.register_alias("unifieddyes:dark_green", "dye:dark_green")
+
+minetest.register_alias("unifieddyes:white_paint", "dye:white")
+minetest.register_alias("unifieddyes:titanium_dioxide", "dye:white")
+minetest.register_alias("unifieddyes:lightgrey_paint", "dye:light_grey")
+minetest.register_alias("unifieddyes:grey_paint", "dye:grey")
+minetest.register_alias("unifieddyes:darkgrey_paint", "dye:dark_grey")
+minetest.register_alias("unifieddyes:carbon_black", "dye:black")
+
+print(S("[UnifiedDyes] Loaded!"))
+