From eb6089a03ec0fdffc3848c377a51833528715392 Mon Sep 17 00:00:00 2001
From: Vanessa Dannenberg <vanessa.e.dannenberg@gmail.com>
Date: Wed, 12 Sep 2018 18:49:51 -0400
Subject: [PATCH] make wooden banister colorable via Unified Dyes

---
 homedecor/crafts.lua                          |  13 +++++++
 homedecor/handlers/expansion.lua              |   4 ++-
 homedecor/misc-nodes.lua                      |  33 ++++++++++++++----
 .../homedecor_banister_wood_colored_inv.png   | Bin 0 -> 2491 bytes
 4 files changed, 42 insertions(+), 8 deletions(-)
 create mode 100644 homedecor/textures/homedecor_banister_wood_colored_inv.png

diff --git a/homedecor/crafts.lua b/homedecor/crafts.lua
index a139063f..f9edb539 100644
--- a/homedecor/crafts.lua
+++ b/homedecor/crafts.lua
@@ -3273,6 +3273,19 @@ for i in ipairs(homedecor.banister_materials) do
 	})
 end
 
+unifieddyes.register_color_craft({
+	output = "",
+	palette = "split",
+	neutral_node = "homedecor:banister_wood_horizontal",
+	type = "shapeless",
+	output_prefix = "homedecor:banister_wood_horizontal_",
+	output_suffix = "",
+	recipe = {
+		"NEUTRAL_NODE",
+		"MAIN_DYE",
+	}
+})
+
 if (minetest.get_modpath("technic") and minetest.get_modpath("dye") and minetest.get_modpath("bees")) then
 	technic.register_separating_recipe({ input = {"bees:wax 1"}, output = {"homedecor:oil_extract 2","dye:yellow 1"} })
 end
diff --git a/homedecor/handlers/expansion.lua b/homedecor/handlers/expansion.lua
index 779e0770..bd87e90e 100644
--- a/homedecor/handlers/expansion.lua
+++ b/homedecor/handlers/expansion.lua
@@ -257,6 +257,8 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
 	if not pos then return itemstack end
 
 	local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+	local meta = itemstack:get_meta()
+	local pindex = meta:get_int("palette_index")
 
 	local abovepos  = { x=pos.x, y=pos.y+1, z=pos.z }
 	local abovenode = minetest.get_node(abovepos)
@@ -371,7 +373,7 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
 		end
 	end
 
-	minetest.set_node(pos, {name = new_place_name, param2 = fdir})
+	minetest.set_node(pos, {name = new_place_name, param2 = fdir+pindex})
 	itemstack:take_item()
 	return itemstack
 end
diff --git a/homedecor/misc-nodes.lua b/homedecor/misc-nodes.lua
index 72830d59..4d52e56b 100644
--- a/homedecor/misc-nodes.lua
+++ b/homedecor/misc-nodes.lua
@@ -483,23 +483,19 @@ for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
 		local name, matdesc, tile1, tile2 = unpack(mat)
 		local nodename = "banister_"..name.."_"..side
 
-		local groups = { snappy = 3, not_in_creative_inventory = 1 }
 		local cbox = {
 			type = "fixed",
 			fixed = { -9/16, -3/16, 5/16, 9/16, 24/16, 8/16 }
 		}
 
 		if side == "horizontal" then
-			groups = { snappy = 3 }
 			cbox = {
 				type = "fixed",
 				fixed = { -8/16, -8/16, 5/16, 8/16, 8/16, 8/16 }
 			}
-		else
-			minetest.register_alias(string.gsub("homedecor:"..nodename, "diagonal_", ""), "homedecor:"..nodename)
 		end
 
-		homedecor.register(nodename, {
+		local def = {
 			description = S("Banister for Stairs (@1, @2)", matdesc, sidedesc),
 			mesh = "homedecor_banister_"..side..".obj",
 			tiles = {
@@ -507,12 +503,35 @@ for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
 				tile2,
 			},
 			inventory_image = "homedecor_banister_"..name.."_inv.png",
-			groups = groups,
 			selection_box = cbox,
 			collision_box = cbox,
+			groups = { snappy = 3},
 			on_place = homedecor.place_banister,
 			drop = "homedecor:banister_"..name.."_horizontal",
-		})
+		}
+
+		if side ~= "horizontal" then
+			def.groups.not_in_creative_inventory = 1 
+		end
+
+		if name == "wood" then
+			def.airbrush_replacement_node = "homedecor:banister_wood_"..side.."_grey"
+			def.groups.ud_param2_colorable = 1
+			def.paramtype2 = "colorfacedir"
+		end
+		homedecor.register(nodename, def)
+
+		if name == "wood" then
+			local nn = "homedecor:"..nodename
+			local def2 = table.copy(minetest.registered_items[nn])
+			def2.tiles = {
+				homedecor.white_wood,
+				homedecor.white_wood
+			}
+			def2.inventory_image = "homedecor_banister_wood_colored_inv.png"
+
+			unifieddyes.generate_split_palette_nodes(nn, def2, "homedecor:banister_"..name.."_horizontal")
+		end
 	end
 end
 
diff --git a/homedecor/textures/homedecor_banister_wood_colored_inv.png b/homedecor/textures/homedecor_banister_wood_colored_inv.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c1a7ee752931d561c656cac06cd0434a503003e
GIT binary patch
literal 2491
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
FV1n6usQ3T?

literal 0
HcmV?d00001

-- 
GitLab