mirror of
				https://github.com/mt-mods/unifieddyes.git
				synced 2025-10-31 15:55:22 +01:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			2018-08-22
			...
			2018-08-25
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | c7fc48c8d0 | ||
|  | de5f73e976 | ||
|  | 0d00a7eae6 | ||
|  | adf1bc2c50 | ||
|  | 35d34d809e | 
							
								
								
									
										6
									
								
								API.md
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								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. | 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 | #### Tables | ||||||
|  |  | ||||||
| In addition to the above API calls, Unified Dyes provides several useful tables | In addition to the above API calls, Unified Dyes provides several useful tables | ||||||
| @@ -152,3 +156,5 @@ If your mod never has never used Unified Dyes at all, in short, do the following | |||||||
| If your colored node is based on someone else's neutral node, for example if you made a mod that creates multiple colors of minetest_game's default clay, you may find it best to create a single "stand-in" node that's identical to the neutral node, but named for your mod, hidden from the creative inventory, and has a properly-prepared grayscale texture image in addition to the above keys.  Use the neutral node and the custom hidden node as in the above craft helper call.  Then use minetest.override_item() to add the on_construct and palette keys and the ud_param2_colorable group to that "someone else's" node. | If your colored node is based on someone else's neutral node, for example if you made a mod that creates multiple colors of minetest_game's default clay, you may find it best to create a single "stand-in" node that's identical to the neutral node, but named for your mod, hidden from the creative inventory, and has a properly-prepared grayscale texture image in addition to the above keys.  Use the neutral node and the custom hidden node as in the above craft helper call.  Then use minetest.override_item() to add the on_construct and palette keys and the ud_param2_colorable group to that "someone else's" node. | ||||||
|  |  | ||||||
| * You will need to write a run-only-once LBM to convert your old statically-colored nodes to use hardware coloring.  See above for functions that will help reduce the work required for this part. | * You will need to write a run-only-once LBM to convert your old statically-colored nodes to use hardware coloring.  See above for functions that will help reduce the work required for this part. | ||||||
|  |  | ||||||
|  | If your mod has no colorable items, and you wish to expand it accordingly, follow the above "never used" section, skipping the "remove/delete this and that" items, and of course omitting the LBM. | ||||||
|   | |||||||
							
								
								
									
										245
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										245
									
								
								init.lua
									
									
									
									
									
								
							| @@ -153,6 +153,36 @@ local default_dyes = { | |||||||
| 	"yellow" | 	"yellow" | ||||||
| } | } | ||||||
|  |  | ||||||
|  | -- if a node with a palette is placed in the world, | ||||||
|  | -- but the itemstack used to place it has no palette_index (color byte), | ||||||
|  | -- create something appropriate to make it officially white. | ||||||
|  |  | ||||||
|  | minetest.register_on_placenode( | ||||||
|  | 	function(pos, newnode, placer, oldnode, itemstack, pointed_thing) | ||||||
|  | 		local def = minetest.registered_items[newnode.name] | ||||||
|  | 		if not def or not def.palette then return false end | ||||||
|  | 		if string.find(itemstack:to_string(), "palette_index") then | ||||||
|  | 			minetest.swap_node(pos, {name = newnode.name, param2 = newnode.param2}) | ||||||
|  | 			return | ||||||
|  | 		end | ||||||
|  |  | ||||||
|  | 		local param2 = 0 | ||||||
|  | 		local color = 0 | ||||||
|  |  | ||||||
|  | 		if def.palette == "unifieddyes_palette_extended.png" then | ||||||
|  | 			param2 = 240 | ||||||
|  | 			color = 240 | ||||||
|  | 		elseif def.palette == "unifieddyes_palette_colorwallmounted.png" then | ||||||
|  | 			param2 = newnode.param2 % 8 | ||||||
|  | 		elseif def.palette ~= "unifieddyes_palette.png" then -- it's a split palette | ||||||
|  | 			param2 = newnode.param2 % 32 | ||||||
|  | 		end | ||||||
|  |  | ||||||
|  | 		minetest.swap_node(pos, {name = newnode.name, param2 = param2}) | ||||||
|  | 		minetest.get_meta(pos):set_int("palette_index", color) | ||||||
|  | 	end | ||||||
|  | ) | ||||||
|  |  | ||||||
| -- just stubs to keep old mods from crashing when expecting auto-coloring | -- just stubs to keep old mods from crashing when expecting auto-coloring | ||||||
| -- or getting back the dye on dig. | -- or getting back the dye on dig. | ||||||
|  |  | ||||||
| @@ -168,7 +198,7 @@ function unifieddyes.make_colored_itemstack(item, palette, color) | |||||||
| 	local paletteidx = unifieddyes.getpaletteidx(color, palette) | 	local paletteidx = unifieddyes.getpaletteidx(color, palette) | ||||||
| 	local stack = ItemStack(item) | 	local stack = ItemStack(item) | ||||||
| 	stack:get_meta():set_int("palette_index", paletteidx) | 	stack:get_meta():set_int("palette_index", paletteidx) | ||||||
| 	return stack:to_string() | 	return stack:to_string(),paletteidx | ||||||
| end | end | ||||||
|  |  | ||||||
| -- if your node was once 89-color and uses an LBM to convert to the 256-color palette, | -- if your node was once 89-color and uses an LBM to convert to the 256-color palette, | ||||||
| @@ -569,7 +599,20 @@ function unifieddyes.getpaletteidx(color, palette_type) | |||||||
| 			color = "red" | 			color = "red" | ||||||
| 			shade = "light" | 			shade = "light" | ||||||
| 		end | 		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 | 			if hues[color] and shades[shade] then | ||||||
| 				return (shades[shade] * 32), hues[color] | 				return (shades[shade] * 32), hues[color] | ||||||
| 			end | 			end | ||||||
| @@ -577,10 +620,7 @@ function unifieddyes.getpaletteidx(color, palette_type) | |||||||
| 			if hues_extended[color] and shades_extended[shade] then | 			if hues_extended[color] and shades_extended[shade] then | ||||||
| 				return (hues_extended[color] + shades_extended[shade]*24), hues_extended[color] | 				return (hues_extended[color] + shades_extended[shade]*24), hues_extended[color] | ||||||
| 			end | 			end | ||||||
| 		else -- it's the 89-color palette | 		else -- it's the regular 89-color palette, do the same translation if needed | ||||||
|  |  | ||||||
| 			-- If using this palette, translate new color names back to old. |  | ||||||
|  |  | ||||||
| 			if shade == "" then | 			if shade == "" then | ||||||
| 				if color == "spring" then | 				if color == "spring" then | ||||||
| 					color = "aqua" | 					color = "aqua" | ||||||
| @@ -597,180 +637,6 @@ function unifieddyes.getpaletteidx(color, palette_type) | |||||||
| 	end | 	end | ||||||
| end | end | ||||||
|  |  | ||||||
| function unifieddyes.on_use(itemstack, player, pointed_thing) |  | ||||||
| 	local stackname = itemstack:get_name() |  | ||||||
| 	local playername = player:get_player_name() |  | ||||||
|  |  | ||||||
| 	if pointed_thing and pointed_thing.type == "node" and unifieddyes.select_node(pointed_thing) then |  | ||||||
| 		if minetest.is_protected(unifieddyes.select_node(pointed_thing), playername) |  | ||||||
| 		  and not minetest.check_player_privs(playername, "protection_bypass") then |  | ||||||
| 			minetest.chat_send_player(playername, "Sorry, someone else owns that spot.") |  | ||||||
| 			return |  | ||||||
| 		end |  | ||||||
| 	end |  | ||||||
|  |  | ||||||
| 	if pointed_thing and pointed_thing.type == "object" then |  | ||||||
| 		pointed_thing.ref:punch(player, 0, itemstack:get_tool_capabilities()) |  | ||||||
| 		return player:get_wielded_item() -- punch may modified the wielded item, load the new and return it |  | ||||||
| 	end |  | ||||||
|  |  | ||||||
| 	if not (pointed_thing and pointed_thing.type == "node") then return end  -- if "using" the dye on nothing at all (e.g. air) |  | ||||||
|  |  | ||||||
| 	local pos = minetest.get_pointed_thing_position(pointed_thing) |  | ||||||
| 	local node = minetest.get_node(pos) |  | ||||||
|  |  | ||||||
| 	local nodedef = minetest.registered_nodes[node.name] |  | ||||||
|  |  | ||||||
| 	if not nodedef then return end -- target was an unknown node, just bail out |  | ||||||
|  |  | ||||||
| 	-- if the node has an on_punch defined, bail out and call that instead, unless "sneak" is pressed. |  | ||||||
| 	if not player:get_player_control().sneak then |  | ||||||
| 		local onpunch = nodedef.on_punch(pos, node, player, pointed_thing) |  | ||||||
| 		if onpunch then |  | ||||||
| 			return onpunch |  | ||||||
| 		end |  | ||||||
| 	end |  | ||||||
|  |  | ||||||
| 	-- if the target is unknown, has no groups defined, or isn't UD-colorable, just bail out |  | ||||||
| 	if not (nodedef and nodedef.groups and nodedef.groups.ud_param2_colorable) then |  | ||||||
| 		minetest.chat_send_player(playername, "That node can't be colored.") |  | ||||||
| 		return |  | ||||||
| 	end |  | ||||||
|  |  | ||||||
| 	local newnode = nodedef.ud_replacement_node |  | ||||||
| 	local palette_type |  | ||||||
|  |  | ||||||
| 	if nodedef.palette == "unifieddyes_palette_extended.png" then |  | ||||||
| 		palette_type = "extended" |  | ||||||
| 	elseif nodedef.palette == "unifieddyes_palette.png" then |  | ||||||
| 		palette_type = false |  | ||||||
| 	elseif nodedef.paramtype2 == "colorfacedir" then |  | ||||||
| 		palette_type = true |  | ||||||
| 	elseif nodedef.paramtype2 == "colorwallmounted" then |  | ||||||
| 		palette_type = "wallmounted" |  | ||||||
| 	end |  | ||||||
|  |  | ||||||
| 	if minetest.is_protected(pos, playername) and not minetest.check_player_privs(playername, {protection_bypass=true}) then |  | ||||||
| 		minetest.record_protection_violation(pos, playername) |  | ||||||
| 		return |  | ||||||
| 	end |  | ||||||
|  |  | ||||||
| 	local pos2 = unifieddyes.select_node(pointed_thing) |  | ||||||
| 	local paletteidx, hue = unifieddyes.getpaletteidx(stackname, palette_type) |  | ||||||
|  |  | ||||||
| 	if paletteidx then |  | ||||||
|  |  | ||||||
| 		local meta = minetest.get_meta(pos) |  | ||||||
| 		local prevdye = meta:get_string("dye") |  | ||||||
| 		local inv = player:get_inventory() |  | ||||||
|  |  | ||||||
| 		if not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then |  | ||||||
| 			if inv:room_for_item("main", prevdye) then |  | ||||||
| 				inv:add_item("main", prevdye) |  | ||||||
| 			else |  | ||||||
| 				minetest.add_item(pos, prevdye) |  | ||||||
| 			end |  | ||||||
| 		end |  | ||||||
|  |  | ||||||
| 		meta:set_string("dye", stackname) |  | ||||||
|  |  | ||||||
| 		if prevdye == stackname then |  | ||||||
| 			local a,b = string.find(stackname, ":") |  | ||||||
| 			minetest.chat_send_player(playername, "That node is already "..string.sub(stackname, a + 1).."." ) |  | ||||||
| 			return |  | ||||||
| 		elseif not creative_mode then |  | ||||||
| 			itemstack:take_item() |  | ||||||
| 		end |  | ||||||
|  |  | ||||||
| 		node.param2 = paletteidx |  | ||||||
|  |  | ||||||
| 		local oldpaletteidx, oldhuenum = unifieddyes.getpaletteidx(prevdye, palette_type) |  | ||||||
| 		local oldnode = minetest.get_node(pos) |  | ||||||
|  |  | ||||||
| 		local oldhue = nil |  | ||||||
| 		for _, i in ipairs(unifieddyes.HUES) do |  | ||||||
| 			if string.find(oldnode.name, "_"..i) and not |  | ||||||
| 				( string.find(oldnode.name, "_redviolet") and i == "red" ) then |  | ||||||
| 				oldhue = i |  | ||||||
| 				break |  | ||||||
| 			end |  | ||||||
| 		end |  | ||||||
|  |  | ||||||
| 		if newnode then -- this path is used when the calling mod want to supply a replacement node |  | ||||||
| 			if palette_type == "wallmounted" then |  | ||||||
| 				node.param2 = paletteidx + (minetest.get_node(pos).param2 % 8) |  | ||||||
| 			elseif palette_type == true then  -- it's colorfacedir |  | ||||||
| 				if oldhue ~=0 then -- it's colored, not grey |  | ||||||
| 					if oldhue ~= nil then -- it's been painted before |  | ||||||
| 						if hue ~= 0 then -- the player's wielding a colored dye |  | ||||||
| 							newnode = string.gsub(newnode, "_"..oldhue, "_"..unifieddyes.HUES[hue]) |  | ||||||
| 						else -- it's a greyscale dye |  | ||||||
| 							newnode = string.gsub(newnode, "_"..oldhue, "_grey") |  | ||||||
| 						end |  | ||||||
| 					else -- it's never had a color at all |  | ||||||
| 						if hue ~= 0 then -- and if the wield is greyscale, don't change the node name |  | ||||||
| 							newnode = string.gsub(newnode, "_grey", "_"..unifieddyes.HUES[hue]) |  | ||||||
| 						end |  | ||||||
| 					end |  | ||||||
| 				else |  | ||||||
| 					if hue ~= 0 then  -- greyscale dye on greyscale node = no hue change |  | ||||||
| 						newnode = string.gsub(newnode, "_grey", "_"..unifieddyes.HUES[hue]) |  | ||||||
| 					end |  | ||||||
| 				end |  | ||||||
| 				node.param2 = paletteidx + (minetest.get_node(pos).param2 % 32) |  | ||||||
| 			else -- it's the 89-color palette, or the extended palette |  | ||||||
| 				node.param2 = paletteidx |  | ||||||
| 			end |  | ||||||
| 			node.name = newnode |  | ||||||
| 			minetest.swap_node(pos, node) |  | ||||||
| 			if palette_type == "extended" then |  | ||||||
| 				meta:set_string("palette", "ext") |  | ||||||
| 			end |  | ||||||
| 			if not creative_mode then |  | ||||||
| 				return itemstack |  | ||||||
| 			end |  | ||||||
| 		else -- this path is used when you're just painting an existing node, rather than replacing one. |  | ||||||
| 			newnode = oldnode  -- note that here, newnode/oldnode are a full node, not just the name. |  | ||||||
| 			if palette_type == "wallmounted" then |  | ||||||
| 				newnode.param2 = paletteidx + (minetest.get_node(pos).param2 % 8) |  | ||||||
| 			elseif palette_type == true then -- it's colorfacedir |  | ||||||
| 				if oldhue then |  | ||||||
| 					if hue ~= 0 then |  | ||||||
| 						newnode.name = string.gsub(newnode.name, "_"..oldhue, "_"..unifieddyes.HUES[hue]) |  | ||||||
| 					else |  | ||||||
| 						newnode.name = string.gsub(newnode.name, "_"..oldhue, "_grey") |  | ||||||
| 					end |  | ||||||
| 				elseif string.find(minetest.get_node(pos).name, "_grey") and hue ~= 0 then |  | ||||||
| 					newnode.name = string.gsub(newnode.name, "_grey", "_"..unifieddyes.HUES[hue]) |  | ||||||
| 				end |  | ||||||
| 				newnode.param2 = paletteidx + (minetest.get_node(pos).param2 % 32) |  | ||||||
| 			else -- it's the 89-color palette, or the extended palette |  | ||||||
| 				newnode.param2 = paletteidx |  | ||||||
| 			end |  | ||||||
| 			minetest.swap_node(pos, newnode) |  | ||||||
| 			if palette_type == "extended" then |  | ||||||
| 				meta:set_string("palette", "ext") |  | ||||||
| 			end |  | ||||||
| 			if not creative_mode then |  | ||||||
| 				return itemstack |  | ||||||
| 			end |  | ||||||
| 		end |  | ||||||
| 	else |  | ||||||
| 		local a,b = string.find(stackname, ":") |  | ||||||
| 		if a then |  | ||||||
| 			minetest.chat_send_player(playername, "That node can't be colored "..string.sub(stackname, a + 1).."." ) |  | ||||||
| 		end |  | ||||||
| 	end |  | ||||||
| end |  | ||||||
|  |  | ||||||
| -- re-define default dyes slightly, to add on_use |  | ||||||
|  |  | ||||||
| for _, color in ipairs(default_dyes) do |  | ||||||
| 	minetest.override_item("dye:"..color, { |  | ||||||
| 		on_use = unifieddyes.on_use |  | ||||||
| 	}) |  | ||||||
| end |  | ||||||
|  |  | ||||||
| -- build a table to convert from classic/89-color palette to extended palette | -- build a table to convert from classic/89-color palette to extended palette | ||||||
|  |  | ||||||
| -- the first five entries are for the old greyscale - white, light, grey, dark, black | -- the first five entries are for the old greyscale - white, light, grey, dark, black | ||||||
| @@ -825,7 +691,6 @@ for _, h in ipairs(unifieddyes.HUES_EXTENDED) do | |||||||
| 		if minetest.registered_items["dye:"..val..hue] then | 		if minetest.registered_items["dye:"..val..hue] then | ||||||
| 			minetest.override_item("dye:"..val..hue, { | 			minetest.override_item("dye:"..val..hue, { | ||||||
| 				inventory_image = "unifieddyes_dye.png^[colorize:#"..color..":200", | 				inventory_image = "unifieddyes_dye.png^[colorize:#"..color..":200", | ||||||
| 				on_use = unifieddyes.on_use |  | ||||||
| 			}) | 			}) | ||||||
| 		else | 		else | ||||||
| 			if (val..hue) ~= "medium_orange" | 			if (val..hue) ~= "medium_orange" | ||||||
| @@ -834,7 +699,6 @@ for _, h in ipairs(unifieddyes.HUES_EXTENDED) do | |||||||
| 					description = S(desc), | 					description = S(desc), | ||||||
| 					inventory_image = "unifieddyes_dye.png^[colorize:#"..color..":200", | 					inventory_image = "unifieddyes_dye.png^[colorize:#"..color..":200", | ||||||
| 					groups = { dye=1, not_in_creative_inventory=1 }, | 					groups = { dye=1, not_in_creative_inventory=1 }, | ||||||
| 					on_use = unifieddyes.on_use |  | ||||||
| 				}) | 				}) | ||||||
| 			end | 			end | ||||||
| 		end | 		end | ||||||
| @@ -857,7 +721,6 @@ for _, h in ipairs(unifieddyes.HUES_EXTENDED) do | |||||||
| 				description = S(desc.." (low saturation)"), | 				description = S(desc.." (low saturation)"), | ||||||
| 				inventory_image = "unifieddyes_dye.png^[colorize:#"..color..":200", | 				inventory_image = "unifieddyes_dye.png^[colorize:#"..color..":200", | ||||||
| 				groups = { dye=1, not_in_creative_inventory=1 }, | 				groups = { dye=1, not_in_creative_inventory=1 }, | ||||||
| 				on_use = unifieddyes.on_use |  | ||||||
| 			}) | 			}) | ||||||
| 			minetest.register_alias("unifieddyes:"..val..hue.."_s50", "dye:"..val..hue.."_s50") | 			minetest.register_alias("unifieddyes:"..val..hue.."_s50", "dye:"..val..hue.."_s50") | ||||||
| 		end | 		end | ||||||
| @@ -878,7 +741,6 @@ for y = 1, 14 do -- colors 0 and 15 are black and white, default dyes | |||||||
| 			description = S(desc), | 			description = S(desc), | ||||||
| 			inventory_image = "unifieddyes_dye.png^[colorize:#"..rgb..":200", | 			inventory_image = "unifieddyes_dye.png^[colorize:#"..rgb..":200", | ||||||
| 			groups = { dye=1, not_in_creative_inventory=1 }, | 			groups = { dye=1, not_in_creative_inventory=1 }, | ||||||
| 			on_use = unifieddyes.on_use |  | ||||||
| 		}) | 		}) | ||||||
| 		minetest.register_alias("unifieddyes:"..name, "dye:"..name) | 		minetest.register_alias("unifieddyes:"..name, "dye:"..name) | ||||||
| 	end | 	end | ||||||
| @@ -886,19 +748,16 @@ end | |||||||
|  |  | ||||||
| minetest.override_item("dye:grey", { | minetest.override_item("dye:grey", { | ||||||
| 	inventory_image = "unifieddyes_dye.png^[colorize:#888888:200", | 	inventory_image = "unifieddyes_dye.png^[colorize:#888888:200", | ||||||
| 	on_use = unifieddyes.on_use |  | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.override_item("dye:dark_grey", { | minetest.override_item("dye:dark_grey", { | ||||||
| 	inventory_image = "unifieddyes_dye.png^[colorize:#444444:200", | 	inventory_image = "unifieddyes_dye.png^[colorize:#444444:200", | ||||||
| 	on_use = unifieddyes.on_use |  | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_craftitem(":dye:light_grey", { | minetest.register_craftitem(":dye:light_grey", { | ||||||
| 	description = S("Light grey Dye"), | 	description = S("Light grey Dye"), | ||||||
| 	inventory_image = "unifieddyes_dye.png^[colorize:#cccccc:200", | 	inventory_image = "unifieddyes_dye.png^[colorize:#cccccc:200", | ||||||
| 	groups = { dye=1, not_in_creative_inventory=1 }, | 	groups = { dye=1, not_in_creative_inventory=1 }, | ||||||
| 	on_use = unifieddyes.on_use |  | ||||||
| }) | }) | ||||||
|  |  | ||||||
| unifieddyes.base_color_crafts = { | unifieddyes.base_color_crafts = { | ||||||
| @@ -1089,9 +948,15 @@ minetest.register_alias("unifieddyes:carbon_black", "dye:black") | |||||||
| -- note that technically, lime should be aliased, but can't be (there IS | -- 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) | -- lime in the new color table, it's just shifted up a bit) | ||||||
|  |  | ||||||
| minetest.register_alias("unifieddyes:aqua", "unifieddyes:spring") | minetest.register_alias("unifieddyes:aqua", "dye:spring") | ||||||
| minetest.register_alias("unifieddyes:skyblue", "unifieddyes:azure") | minetest.register_alias("dye:aqua", "dye:spring") | ||||||
| minetest.register_alias("unifieddyes:redviolet", "unifieddyes:rose") |  | ||||||
|  | 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") | minetest.register_alias("unifieddyes:brown", "dye:brown") | ||||||
|  |  | ||||||
| print(S("[UnifiedDyes] Loaded!")) | print(S("[UnifiedDyes] Loaded!")) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user