From cb6e55b610b2dba587102e6503a61559e0b2e17f Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Sat, 25 Aug 2018 02:45:03 -0400 Subject: update unified dyes, solidcolor, and unifiedmesecons --- solidcolor/init.lua | 11 ++ unifieddyes/API.md | 4 + unifieddyes/init.lua | 45 ++++-- .../unifieddyes_palette_colorwallmounted.png | Bin 136 -> 136 bytes unifiedmesecons/init.lua | 177 +++++++++++++++++---- .../textures/unifiedmesecons_wire_end_off.png | Bin 629 -> 435 bytes .../textures/unifiedmesecons_wire_end_on.png | Bin 467 -> 246 bytes .../textures/unifiedmesecons_wire_off.png | Bin 613 -> 429 bytes .../textures/unifiedmesecons_wire_on.png | Bin 462 -> 243 bytes 9 files changed, 197 insertions(+), 40 deletions(-) diff --git a/solidcolor/init.lua b/solidcolor/init.lua index a520dc1..8b8d87a 100644 --- a/solidcolor/init.lua +++ b/solidcolor/init.lua @@ -17,6 +17,17 @@ minetest.register_craft( { }, }) +unifieddyes.register_color_craft({ + output = "solidcolor:block", + palette = "extended", + type = "shapeless", + neutral_node = "solidcolor:block", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + minetest.register_lbm({ name = "solidcolor:recolor", label = "Convert to new palette", diff --git a/unifieddyes/API.md b/unifieddyes/API.md index decf76d..63fab69 100644 --- a/unifieddyes/API.md +++ b/unifieddyes/API.md @@ -77,6 +77,10 @@ When given a `color` string (in the form of "dye:foo" or "unifieddyes:foo") and This function, called in your node definition's on_construct, just sets the `palette = "ext"` metadata key for the node after it's been placed. This can then be read in an LBM to determine if this node needs to be converted from the old 89-color palette to the extended 256-color palette. Although it is good practice to call this for any node that uses the 256-color palette, it isn't actually necessary as long as the node has never used the 89-color palette, and won't be subjected to an LBM that changes its color. +**`unifieddyes.make_colored_itemstack(itemstack, palette, color)`** + +Makes a colored itemstack out of the given `itemstack` and `color` (as a dye, e.g. "dye:dark_red_s50", setting the correct index per the `palette` field, which works as described above for `unifieddyes.getpaletteidx()`. Said itemstack is returned as a string suitable for use as the output field of a craft recipe, equal in size to the itemstack passed into the function (e.g. if you give it "mymod:colored_node 7", it'll return a stack of 7 colored items). + #### Tables In addition to the above API calls, Unified Dyes provides several useful tables diff --git a/unifieddyes/init.lua b/unifieddyes/init.lua index 37d3572..39923a2 100644 --- a/unifieddyes/init.lua +++ b/unifieddyes/init.lua @@ -198,7 +198,7 @@ function unifieddyes.make_colored_itemstack(item, palette, color) local paletteidx = unifieddyes.getpaletteidx(color, palette) local stack = ItemStack(item) stack:get_meta():set_int("palette_index", paletteidx) - return stack:to_string() + return stack:to_string(),paletteidx end -- if your node was once 89-color and uses an LBM to convert to the 256-color palette, @@ -225,7 +225,6 @@ local function register_c(craft, hue, sat, val) end local dye = "dye:"..color - local recipe = minetest.serialize(craft.recipe) recipe = string.gsub(recipe, "MAIN_DYE", dye) recipe = string.gsub(recipe, "NEUTRAL_NODE", craft.neutral_node) @@ -265,6 +264,8 @@ function unifieddyes.register_color_craft(craft) local greys_table = unifieddyes.GREYS if craft.palette == "wallmounted" then + register_c(craft, "green", "", "light_") + register_c(craft, "azure", "", "") hues_table = unifieddyes.HUES_WALLMOUNTED sats_table = {""} vals_table = unifieddyes.VALS @@ -411,6 +412,7 @@ function unifieddyes.getpaletteidx(color, palette_type) local aliases = { ["pink"] = "light_red", ["brown"] = "medium_orange", + ["azure"] = "light_blue" } local grayscale = { @@ -585,9 +587,10 @@ function unifieddyes.getpaletteidx(color, palette_type) end if palette_type == "wallmounted" then - if color == "brown" then return 48,1 + if color == "green" and shade == "light" then return 48,3 + elseif color == "brown" then return 17,1 elseif color == "pink" then return 56,7 - elseif color == "blue" and shade == "light" then return 40,5 + elseif color == "azure" then return 40,5 elseif hues_wallmounted[color] and shades_wallmounted[shade] then return (shades_wallmounted[shade] * 64 + hues_wallmounted[color] * 8), hues_wallmounted[color] end @@ -599,7 +602,20 @@ function unifieddyes.getpaletteidx(color, palette_type) color = "red" shade = "light" end - if palette_type == true then -- it's colorfacedir + if palette_type == true then -- it's colorfacedir, so "split" 89-color palette + + -- If using this palette, translate new color names back to old. + + if shade == "" then + if color == "spring" then + color = "aqua" + elseif color == "azure" then + color = "skyblue" + elseif color == "rose" then + color = "redviolet" + end + end + if hues[color] and shades[shade] then return (shades[shade] * 32), hues[color] end @@ -607,10 +623,7 @@ function unifieddyes.getpaletteidx(color, palette_type) if hues_extended[color] and shades_extended[shade] then return (hues_extended[color] + shades_extended[shade]*24), hues_extended[color] end - else -- it's the 89-color palette - - -- If using this palette, translate new color names back to old. - + else -- it's the regular 89-color palette, do the same translation if needed if shade == "" then if color == "spring" then color = "aqua" @@ -938,10 +951,16 @@ minetest.register_alias("unifieddyes:carbon_black", "dye:black") -- note that technically, lime should be aliased, but can't be (there IS -- lime in the new color table, it's just shifted up a bit) -minetest.register_alias("unifieddyes:aqua", "unifieddyes:spring") -minetest.register_alias("unifieddyes:skyblue", "unifieddyes:azure") -minetest.register_alias("unifieddyes:redviolet", "unifieddyes:rose") -minetest.register_alias("unifieddyes:brown", "dye:brown") +minetest.register_alias("unifieddyes:aqua", "dye:spring") +minetest.register_alias("dye:aqua", "dye:spring") + +minetest.register_alias("unifieddyes:skyblue", "dye:azure") +minetest.register_alias("dye:skyblue", "dye:azure") + +minetest.register_alias("unifieddyes:redviolet", "dye:rose") +minetest.register_alias("dye:redviolet", "dye:rose") + +minetest.register_alias("unifieddyes:brown", "dye:brown") print(S("[UnifiedDyes] Loaded!")) diff --git a/unifieddyes/textures/unifieddyes_palette_colorwallmounted.png b/unifieddyes/textures/unifieddyes_palette_colorwallmounted.png index 8d3133b..bcae86f 100644 Binary files a/unifieddyes/textures/unifieddyes_palette_colorwallmounted.png and b/unifieddyes/textures/unifieddyes_palette_colorwallmounted.png differ diff --git a/unifiedmesecons/init.lua b/unifiedmesecons/init.lua index 0a2bfec..195eab0 100644 --- a/unifiedmesecons/init.lua +++ b/unifiedmesecons/init.lua @@ -11,7 +11,13 @@ local hues = { "violet", "magenta", "redviolet", - "grey" + "pink", + "dark_green", + "brown", + "black", + "dark_grey", + "grey", + "white", } local function insulated_wire_get_rules(node) @@ -55,11 +61,21 @@ minetest.unregister_item("mesecons_extrawires:corner_on") minetest.unregister_item("mesecons_extrawires:tjunction_off") minetest.unregister_item("mesecons_extrawires:tjunction_on") -minetest.register_alias("mesecons_insulated:insulated_off", "mesecons_insulated:insulated_grey_off") -minetest.register_alias("mesecons_extrawires:corner_off", "mesecons_extrawires:insulated_corner_grey_off") -minetest.register_alias("mesecons_extrawires:tjunction_off", "mesecons_extrawires:insulated_tjunction_grey_off") +minetest.register_alias("mesecons_insulated:insulated_off", "mesecons_insulated:insulated_white_off") +minetest.register_alias("mesecons_extrawires:corner_off", "mesecons_extrawires:insulated_corner_white_off") +minetest.register_alias("mesecons_extrawires:tjunction_off", "mesecons_extrawires:insulated_tjunction_white_off") for _,color in pairs(hues) do + local palettecolor = color + if color == "black" or string.find(color, "grey") or color == "white" then + palettecolor = "grey" + elseif color == "pink" then + palettecolor = "red" + elseif color == "dark_green" then + palettecolor = "green" + elseif color == "brown" then + palettecolor = "orange" + end mesecon.register_node(":mesecons_insulated:insulated_"..color, { drawtype = "nodebox", description = "Insulated Mesecon", @@ -68,8 +84,8 @@ for _,color in pairs(hues) do walkable = false, sunlight_propagates = true, on_place = minetest.rotate_node, - drop = "mesecons_insulated:insulated_grey_off", - palette = "unifieddyes_palette_"..color.."s.png", + drop = "mesecons_insulated:insulated_white_off", + palette = "unifieddyes_palette_"..palettecolor.."s.png", selection_box = { type = "fixed", fixed = { -16/32-0.001, -18/32, -7/32, 16/32+0.001, -12/32, 7/32 } @@ -80,7 +96,7 @@ for _,color in pairs(hues) do }, }, { - groups = {dig_immediate = 3,ud_param2_colorable = 1,not_in_creative_inventory = (color~="grey" and 1 or nil)}, + groups = {dig_immediate = 3,not_in_creative_inventory = (color~="white" and 1 or nil)}, mesecons = {conductor = { state = mesecon.state.off, onstate = "mesecons_insulated:insulated_"..color.."_on", @@ -96,7 +112,7 @@ for _,color in pairs(hues) do }, }, { - groups = {dig_immediate = 3,not_in_creative_inventory = 1,ud_param2_colorable = 1}, + groups = {dig_immediate = 3,not_in_creative_inventory = 1}, mesecons = {conductor = { state = mesecon.state.on, offstate = "mesecons_insulated:insulated_"..color.."_off", @@ -119,8 +135,8 @@ for _,color in pairs(hues) do walkable = false, sunlight_propagates = true, on_place = minetest.rotate_node, - drop = "mesecons_extrawires:insulated_corner_grey_off", - palette = "unifieddyes_palette_"..color.."s.png", + drop = "mesecons_extrawires:insulated_corner_white_off", + palette = "unifieddyes_palette_"..palettecolor.."s.png", selection_box = { type = "fixed", fixed = { -16/32-0.001, -18/32, -16/32, 5/32, -12/32, 5/32 }, @@ -132,7 +148,7 @@ for _,color in pairs(hues) do }, }, { - groups = {dig_immediate = 3,ud_param2_colorable = 1,not_in_creative_inventory = (color~="grey" and 1 or nil)}, + groups = {dig_immediate = 3,not_in_creative_inventory = (color~="white" and 1 or nil)}, mesecons = {conductor = { state = mesecon.state.off, onstate = "mesecons_extrawires:insulated_corner_"..color.."_on", @@ -148,7 +164,7 @@ for _,color in pairs(hues) do }, }, { - groups = {dig_immediate = 3,not_in_creative_inventory = 1,ud_param2_colorable = 1}, + groups = {dig_immediate = 3,not_in_creative_inventory = 1}, mesecons = {conductor = { state = mesecon.state.on, offstate = "mesecons_extrawires:insulated_corner_"..color.."_off", @@ -171,8 +187,8 @@ for _,color in pairs(hues) do walkable = false, sunlight_propagates = true, on_place = minetest.rotate_node, - drop = "mesecons_extrawires:insulated_tjunction_grey_off", - palette = "unifieddyes_palette_"..color.."s.png", + drop = "mesecons_extrawires:insulated_tjunction_white_off", + palette = "unifieddyes_palette_"..palettecolor.."s.png", node_box = { type = "fixed", fixed = {{ -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }, @@ -184,7 +200,7 @@ for _,color in pairs(hues) do }, }, { - groups = {dig_immediate = 3,ud_param2_colorable = 1,not_in_creative_inventory = (color~="grey" and 1 or nil)}, + groups = {dig_immediate = 3,not_in_creative_inventory = (color~="white" and 1 or nil)}, mesecons = {conductor = { state = mesecon.state.off, onstate = "mesecons_extrawires:insulated_tjunction_"..color.."_on", @@ -200,7 +216,7 @@ for _,color in pairs(hues) do }, }, { - groups = {dig_immediate = 3,not_in_creative_inventory = 1,ud_param2_colorable = 1}, + groups = {dig_immediate = 3,not_in_creative_inventory = 1}, mesecons = {conductor = { state = mesecon.state.on, offstate = "mesecons_extrawires:insulated_tjunction_"..color.."_off", @@ -284,25 +300,25 @@ minetest.register_lbm({ }) minetest.register_craft({ - output = "mesecons_extrawires:insulated_corner_grey_off 3", + output = "mesecons_extrawires:insulated_corner_white_off 3", recipe = { {"", "", ""}, - {"mesecons_insulated:insulated_grey_off", "mesecons_insulated:insulated_grey_off", ""}, - {"", "mesecons_insulated:insulated_grey_off", ""}, + {"mesecons_insulated:insulated_white_off", "mesecons_insulated:insulated_white_off", ""}, + {"", "mesecons_insulated:insulated_white_off", ""}, } }) minetest.register_craft({ - output = "mesecons_extrawires:insulated_tjunction_grey_off 3", + output = "mesecons_extrawires:insulated_tjunction_white_off 3", recipe = { {"", "", ""}, - {"mesecons_insulated:insulated_grey_off", "mesecons_insulated:insulated_grey_off", "mesecons_insulated:insulated_grey_off"}, - {"", "mesecons_insulated:insulated_grey_off", ""}, + {"mesecons_insulated:insulated_white_off", "mesecons_insulated:insulated_white_off", "mesecons_insulated:insulated_white_off"}, + {"", "mesecons_insulated:insulated_white_off", ""}, } }) minetest.register_craft({ - output = "mesecons_insulated:insulated_grey_off 3", + output = "mesecons_insulated:insulated_white_off 3", recipe = { {"mesecons_materials:fiber", "mesecons_materials:fiber", "mesecons_materials:fiber"}, {"mesecons:wire_00000000_off", "mesecons:wire_00000000_off", "mesecons:wire_00000000_off"}, @@ -314,14 +330,14 @@ minetest.register_craft({ type = "shapeless", output = "mesecons_extrawires:crossover_off", recipe = { - "mesecons_insulated:insulated_grey_off", - "mesecons_insulated:insulated_grey_off", + "mesecons_insulated:insulated_white_off", + "mesecons_insulated:insulated_white_off", }, }) minetest.register_craft({ type = "shapeless", - output = "mesecons_insulated:insulated_grey_off 2", + output = "mesecons_insulated:insulated_white_off 2", recipe = { "mesecons_extrawires:crossover_off", }, @@ -332,8 +348,115 @@ if minetest.get_modpath("digilines") then output = 'digilines:wire_std_00000000 2', recipe = { {'mesecons_materials:fiber', 'mesecons_materials:fiber', 'mesecons_materials:fiber'}, - {'mesecons_insulated:insulated_grey_off', 'mesecons_insulated:insulated_grey_off', 'default:gold_ingot'}, + {'mesecons_insulated:insulated_white_off', 'mesecons_insulated:insulated_white_off', 'default:gold_ingot'}, {'mesecons_materials:fiber', 'mesecons_materials:fiber', 'mesecons_materials:fiber'}, } }) end + +for _,color in pairs(hues) do + if color ~= "white" then + local dye = "dye:"..color + minetest.register_craft({ + output = unifieddyes.make_colored_itemstack( + "mesecons_extrawires:insulated_corner_"..color.."_off 3", + true, + dye), + recipe = { + {"", dye, ""}, + {"mesecons_insulated:insulated_white_off", "mesecons_insulated:insulated_white_off", ""}, + {"", "mesecons_insulated:insulated_white_off", ""}, + } + }) + + minetest.register_craft({ + output = unifieddyes.make_colored_itemstack( + "mesecons_extrawires:insulated_tjunction_"..color.."_off 3", + true, + dye), + recipe = { + {"", dye, ""}, + {"mesecons_insulated:insulated_white_off", "mesecons_insulated:insulated_white_off", "mesecons_insulated:insulated_white_off"}, + {"", "mesecons_insulated:insulated_white_off", ""}, + } + }) + + minetest.register_craft({ + type = "shapeless", + output = unifieddyes.make_colored_itemstack( + "mesecons_insulated:insulated_"..color.."_off", + true, + dye), + recipe = { + dye, + "mesecons_insulated:insulated_white_off", + }, + }) + + minetest.register_craft({ + output = unifieddyes.make_colored_itemstack( + "mesecons_extrawires:insulated_corner_"..color.."_off", + true, + dye), + type = "shapeless", + recipe = { + dye, + "mesecons_extrawires:insulated_corner_white_off" + } + }) + + minetest.register_craft({ + output = unifieddyes.make_colored_itemstack( + "mesecons_extrawires:insulated_tjunction_"..color.."_off", + true, + dye), + type = "shapeless", + recipe = { + dye, + "mesecons_extrawires:insulated_tjunction_white_off" + } + }) + end +end + +for _,color in pairs(hues) do -- allow re-dying of grey wires since they're so lightly-shaded. + if color ~= "grey" then + local dye = "dye:"..color + + minetest.register_craft({ + type = "shapeless", + output = unifieddyes.make_colored_itemstack( + "mesecons_insulated:insulated_"..color.."_off", + true, + dye), + recipe = { + dye, + "mesecons_insulated:insulated_grey_off", + }, + }) + + minetest.register_craft({ + output = unifieddyes.make_colored_itemstack( + "mesecons_extrawires:insulated_corner_"..color.."_off", + true, + dye), + type = "shapeless", + recipe = { + dye, + "mesecons_extrawires:insulated_corner_grey_off" + } + }) + + minetest.register_craft({ + output = unifieddyes.make_colored_itemstack( + "mesecons_extrawires:insulated_tjunction_"..color.."_off", + true, + dye), + type = "shapeless", + recipe = { + dye, + "mesecons_extrawires:insulated_tjunction_grey_off" + } + }) + end +end diff --git a/unifiedmesecons/textures/unifiedmesecons_wire_end_off.png b/unifiedmesecons/textures/unifiedmesecons_wire_end_off.png index 36807c4..9e16271 100644 Binary files a/unifiedmesecons/textures/unifiedmesecons_wire_end_off.png and b/unifiedmesecons/textures/unifiedmesecons_wire_end_off.png differ diff --git a/unifiedmesecons/textures/unifiedmesecons_wire_end_on.png b/unifiedmesecons/textures/unifiedmesecons_wire_end_on.png index 3294f56..5e498af 100644 Binary files a/unifiedmesecons/textures/unifiedmesecons_wire_end_on.png and b/unifiedmesecons/textures/unifiedmesecons_wire_end_on.png differ diff --git a/unifiedmesecons/textures/unifiedmesecons_wire_off.png b/unifiedmesecons/textures/unifiedmesecons_wire_off.png index 57eff63..714bf62 100644 Binary files a/unifiedmesecons/textures/unifiedmesecons_wire_off.png and b/unifiedmesecons/textures/unifiedmesecons_wire_off.png differ diff --git a/unifiedmesecons/textures/unifiedmesecons_wire_on.png b/unifiedmesecons/textures/unifiedmesecons_wire_on.png index 429753f..66acd97 100644 Binary files a/unifiedmesecons/textures/unifiedmesecons_wire_on.png and b/unifiedmesecons/textures/unifiedmesecons_wire_on.png differ -- cgit v1.2.3