<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.earthmc.net/index.php?action=history&amp;feed=atom&amp;title=Module%3AColor</id>
	<title>Module:Color - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.earthmc.net/index.php?action=history&amp;feed=atom&amp;title=Module%3AColor"/>
	<link rel="alternate" type="text/html" href="https://wiki.earthmc.net/index.php?title=Module:Color&amp;action=history"/>
	<updated>2026-10-27T19:06:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.earthmc.net/index.php?title=Module:Color&amp;diff=234636&amp;oldid=prev</id>
		<title>515797455988850689: Created page with &quot;--NOTE: For Tooltip Colors, please use Module:UIText  local p = {}  local getArgs = require(&#039;Module:Arguments&#039;).getArgs local string = require(&#039;Module:String&#039;) local table = require(&#039;Module:Table&#039;) local yesno = require(&#039;Module:Yesno&#039;) local libU = require(&#039;Module:LibU&#039;)  local aliases = mw.loadData(&#039;Module:Color/Aliases&#039;) local colorData = mw.loadData(&#039;Module:Color/Data&#039;)  ----------------------------------------------------------------------------- -- Category:Single C...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.earthmc.net/index.php?title=Module:Color&amp;diff=234636&amp;oldid=prev"/>
		<updated>2023-11-25T08:29:15Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;--NOTE: For Tooltip Colors, please use Module:UIText  local p = {}  local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs local string = require(&amp;#039;Module:String&amp;#039;) local table = require(&amp;#039;Module:Table&amp;#039;) local yesno = require(&amp;#039;Module:Yesno&amp;#039;) local libU = require(&amp;#039;Module:LibU&amp;#039;)  local aliases = mw.loadData(&amp;#039;Module:Color/Aliases&amp;#039;) local colorData = mw.loadData(&amp;#039;Module:Color/Data&amp;#039;)  ----------------------------------------------------------------------------- -- Category:Single C...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--NOTE: For Tooltip Colors, please use Module:UIText&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local string = require(&amp;#039;Module:String&amp;#039;)&lt;br /&gt;
local table = require(&amp;#039;Module:Table&amp;#039;)&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local libU = require(&amp;#039;Module:LibU&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local aliases = mw.loadData(&amp;#039;Module:Color/Aliases&amp;#039;)&lt;br /&gt;
local colorData = mw.loadData(&amp;#039;Module:Color/Data&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
-- Category:Single Color templates&lt;br /&gt;
--&lt;br /&gt;
-- Changes text color to a fixed color&lt;br /&gt;
-- Aliases: p.makeColor, p.colorText, p.wrapColor, p.ct&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
function p.colorTemplates(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local text = args[1] or &amp;#039;&amp;#039;&lt;br /&gt;
	local color = args[&amp;#039;color&amp;#039;]&lt;br /&gt;
	return string.pcall(p._colorTemplates, color, text)&lt;br /&gt;
end&lt;br /&gt;
-- p._colorTemplates(color : string/number/table, text : string/number/table)&lt;br /&gt;
function p._colorTemplates(color, text)&lt;br /&gt;
	if type(color) == &amp;#039;table&amp;#039; and #color &amp;gt;= 3 then&lt;br /&gt;
		color = table.concat{ #color == 3 and &amp;#039;rgb(&amp;#039; or &amp;#039;rgba(&amp;#039;, table.concat(color, &amp;#039;, &amp;#039;) , &amp;#039;)&amp;#039; }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local colorID = string.gsub(aliases[string.lower(color)] or string.lower(color), &amp;#039; &amp;#039;, &amp;#039;_&amp;#039;);&lt;br /&gt;
	local lightcolor = not not colorData.shadowColors[colorID]&lt;br /&gt;
	local colorClass = colorData.colorClasses[colorID]&lt;br /&gt;
	local colorHex = colorData.hexColors[colorID] or color&lt;br /&gt;
	&lt;br /&gt;
	local appliedClass = (lightcolor and &amp;#039;light-color &amp;#039; or &amp;#039;&amp;#039;) .. (colorClass or &amp;#039;&amp;#039;)&lt;br /&gt;
	local appliedStyle = colorClass and &amp;#039;&amp;#039; or &amp;#039;color:&amp;#039; .. tostring(colorHex)&lt;br /&gt;
	return string.wrapHtml(type(text) == &amp;#039;table&amp;#039; and table.concat(text, text.seperator or text.sep or text.s or &amp;#039;&amp;#039;) or text, &amp;#039;span&amp;#039;, {&lt;br /&gt;
		class = appliedClass ~= &amp;#039;&amp;#039; and appliedClass or nil,&lt;br /&gt;
		style = appliedStyle ~= &amp;#039;&amp;#039; and appliedStyle or nil,&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
p.makeColor = p._colorTemplates&lt;br /&gt;
p.colorText = p._colorTemplates&lt;br /&gt;
p.wrapColor = p._colorTemplates&lt;br /&gt;
p.ct = p._colorTemplates&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------&lt;br /&gt;
-- p.getColor(color?: string | table&amp;lt;number&amp;gt;) &lt;br /&gt;
---------------------------------------------------------------------------------&lt;br /&gt;
function p.getColor(color)&lt;br /&gt;
	if type(color) == &amp;#039;table&amp;#039; and #color &amp;gt;= 3 then&lt;br /&gt;
		color = table.concat{ #color == 3 and &amp;#039;rgb(&amp;#039; or &amp;#039;rgba(&amp;#039;, table.concat(color, &amp;#039;, &amp;#039;) , &amp;#039;)&amp;#039; }&lt;br /&gt;
	end&lt;br /&gt;
	return colorData.hexColors[string.gsub(aliases[string.lower(color)] or string.lower(color), &amp;#039; &amp;#039;, &amp;#039;_&amp;#039;)] or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
-- Template:Color Conversion&lt;br /&gt;
--&lt;br /&gt;
-- Converts input between different coding techniques&lt;br /&gt;
-- Can also be used in modules&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
function p.color_conversion(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local output_type = args[1]&lt;br /&gt;
	local color = args[2]&lt;br /&gt;
	return mw.getCurrentFrame():preprocess(string.pcall(p._color_conversion, output_type, color, true))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._color_conversion(output_type, color, on_page)&lt;br /&gt;
	--Local variables&lt;br /&gt;
	local color_output = &amp;#039;&amp;#039;&lt;br /&gt;
	local color_digit = &amp;#039;&amp;#039;&lt;br /&gt;
	-- Categorization based on output_type&lt;br /&gt;
	-- Hex&lt;br /&gt;
	if string.lower(output_type) == &amp;#039;hex&amp;#039; then&lt;br /&gt;
		local letters = { [10] = &amp;#039;A&amp;#039;, [11] = &amp;#039;B&amp;#039;, [12] = &amp;#039;C&amp;#039;, [13] = &amp;#039;D&amp;#039;, [14] = &amp;#039;E&amp;#039;, [15] = &amp;#039;F&amp;#039; }&lt;br /&gt;
		-- Delete everything except numbers and commas&lt;br /&gt;
		color = string.gsub(color, &amp;#039;rgba?%((.*)%)&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
		-- Split the numbers apart&lt;br /&gt;
		color = mw.text.split( color, &amp;#039;%s*,%s*&amp;#039;)&lt;br /&gt;
		-- Check if input is valid&lt;br /&gt;
		if tonumber(color[1]) &amp;lt; 0 or tonumber(color[1]) &amp;gt; 255 or tonumber(color[2]) &amp;lt; 0 or tonumber(color[2]) &amp;gt; 255 or tonumber(color[3]) &amp;lt; 0 or tonumber(color[3]) &amp;gt; 255 then&lt;br /&gt;
			color_output = string.error(&amp;#039;color was invalid \&amp;quot;rgb(%q, %q, %q)&amp;#039;, color[1], color[2], color[3])&lt;br /&gt;
		else&lt;br /&gt;
			for i = 3, 1, -1 do&lt;br /&gt;
				-- Repeat this for all 3 numbers&lt;br /&gt;
				for j = 1, 2, 1 do&lt;br /&gt;
					-- Repeat this 2 times for every number&lt;br /&gt;
					color_digit = color[i] % 16&lt;br /&gt;
					color_digit = letters[color_digit] or color_digit&lt;br /&gt;
					color[i] = math.floor(color[i] / 16)&lt;br /&gt;
					color_output = color_digit .. color_output&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- Add # to the front&lt;br /&gt;
			if on_page then&lt;br /&gt;
				color_output = mw.text.nowiki(&amp;#039;#&amp;#039;) .. color_output&lt;br /&gt;
			else color_output = &amp;#039;#&amp;#039; .. color_output&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	-- RGB&lt;br /&gt;
	elseif string.match(string.lower(output_type), &amp;#039;rgba?&amp;#039;) then&lt;br /&gt;
		local letters = { [&amp;#039;A&amp;#039;] = 10, [&amp;#039;B&amp;#039;] = 11, [&amp;#039;C&amp;#039;] = 12, [&amp;#039;D&amp;#039;] = 13, [&amp;#039;E&amp;#039;] = 14, [&amp;#039;F&amp;#039;] = 15 }&lt;br /&gt;
		-- Set color_output to base value&lt;br /&gt;
		if string.lower(output_type) == &amp;#039;rgba&amp;#039; then&lt;br /&gt;
			color_output = &amp;#039;rgba(&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			color_output = &amp;#039;rgb(&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		-- Convert all letters to uppercase&lt;br /&gt;
		color = string.upper(color)&lt;br /&gt;
		-- Remove # character&lt;br /&gt;
		color = string.gsub(color, &amp;#039;#&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		-- Check if input is valid&lt;br /&gt;
		if string.match(color, &amp;#039;%x&amp;#039;) then&lt;br /&gt;
			if #color == 3 then&lt;br /&gt;
				for i = 1, 3, 1 do&lt;br /&gt;
					local color_help = {}&lt;br /&gt;
					color_help[i] = string.sub(color, i, i)&lt;br /&gt;
					color_help[i] = letters[color_help[i]] or color_help[i]&lt;br /&gt;
					color_output = color_output .. color_help[i] + color_help[i] * 16&lt;br /&gt;
					if i ~= 3 then color_output = color_output .. &amp;#039;,&amp;#039; end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				local color_storage&lt;br /&gt;
				for i = 1, 6, 1 do&lt;br /&gt;
					local color_help = {}&lt;br /&gt;
					color_help[i] = string.sub(color, i, i)&lt;br /&gt;
					color_help[i] = letters[color_help[i]] or color_help[i]&lt;br /&gt;
					if i % 2 == 1 then&lt;br /&gt;
						color_storage = color_help[i] * 16&lt;br /&gt;
					end&lt;br /&gt;
					if i % 2 == 0 then&lt;br /&gt;
						color_storage = color_storage + color_help[i]&lt;br /&gt;
						color_output = color_output .. color_storage&lt;br /&gt;
					end&lt;br /&gt;
					if i == 3 or i == 5 then&lt;br /&gt;
						color_output = color_output .. &amp;#039;,&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- Close the bracket&lt;br /&gt;
			if string.lower(output_type) == &amp;#039;rgba&amp;#039; then&lt;br /&gt;
				color_output = color_output .. &amp;#039;,1)&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				color_output = color_output .. &amp;#039;)&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		else &lt;br /&gt;
			color_output = &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Template Error: color code was invalid \&amp;quot;&amp;#039; .. color .. &amp;#039;\&amp;quot;&amp;lt;/strong&amp;gt;[[Category:Pages with template errors]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	-- Int&lt;br /&gt;
	elseif string.match(string.lower(output_type), &amp;#039;int&amp;#039;) then&lt;br /&gt;
		local letters = { [&amp;#039;A&amp;#039;] = 10, [&amp;#039;B&amp;#039;] = 11, [&amp;#039;C&amp;#039;] = 12, [&amp;#039;D&amp;#039;] = 13, [&amp;#039;E&amp;#039;] = 14, [&amp;#039;F&amp;#039;] = 15 }&lt;br /&gt;
		if color:lower():match(&amp;#039;rgb?&amp;#039;) then&lt;br /&gt;
			-- Delete everything except numbers and commas&lt;br /&gt;
			color = string.gsub(color, &amp;#039;rgba?%((.*)%)&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
			-- Split the numbers apart&lt;br /&gt;
			color = mw.text.split(color, &amp;#039;%s*,%s*&amp;#039;)&lt;br /&gt;
		&lt;br /&gt;
			-- Check if input is valid&lt;br /&gt;
			if tonumber(color[1]) &amp;lt; 0 or tonumber(color[1]) &amp;gt; 255 or tonumber(color[2]) &amp;lt; 0 or tonumber(color[2]) &amp;gt; 255 or tonumber(color[3]) &amp;lt; 0 or tonumber(color[3]) &amp;gt; 255 then&lt;br /&gt;
				color_output = &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Template Error: Invalid RGB color \&amp;quot;rgb(&amp;#039; .. color[1] .. &amp;#039;,&amp;#039; .. color[2] .. &amp;#039;,&amp;#039; .. color[3] .. &amp;#039;)\&amp;quot;&amp;lt;/strong&amp;gt;[[Category:Pages with template errors]]&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				color_output = tonumber(color[1]) * 65536 + tonumber(color[2]) * 256 + tonumber(color[3])&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- Convert all letters to uppercase&lt;br /&gt;
			color = string.upper(color)&lt;br /&gt;
			if string.match(color, &amp;#039;(#)(%x)&amp;#039;) then&lt;br /&gt;
				-- Remove # character&lt;br /&gt;
				color = string.gsub(color, &amp;#039;#&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
				if #color == 3 then&lt;br /&gt;
					local color_help = {}&lt;br /&gt;
					for i = 1, 3, 1 do&lt;br /&gt;
						color_help[i] = string.sub(color, i, i)&lt;br /&gt;
						color_help[i] = letters[color_help[i]] or color_help[i]&lt;br /&gt;
					end&lt;br /&gt;
					color_output = color_help[1] * 65536 * 17 + color_help[2] * 256 * 17 + color_help[3] * 17&lt;br /&gt;
				else&lt;br /&gt;
					local color_help = {}&lt;br /&gt;
					for i = 1, 6, 1 do&lt;br /&gt;
						color_help[i] = string.sub(color, i, i)&lt;br /&gt;
						color_help[i] = letters[color_help[i]] or color_help[i]&lt;br /&gt;
						if i % 2 == 1 then&lt;br /&gt;
							color_help[i] = color_help[i] * 16&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					color_output = (color_help[1] + color_help[2]) * 65536 + (color_help[3] + color_help[4]) * 256 + (color_help[5] + color_help[6])&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				color_output = color&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else -- arg[1] is invalid&lt;br /&gt;
		color_output = string.error(&amp;#039;Invalid Color Output %q&amp;#039;, output_type)&lt;br /&gt;
	end&lt;br /&gt;
	return color_output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
-- Template:Color&lt;br /&gt;
--&lt;br /&gt;
-- Changes text color&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
-- p.color(color : string/number/table, text : string/number/table)&lt;br /&gt;
function p.color(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local text = args[2] or &amp;#039;&amp;#039;&lt;br /&gt;
	local color = args[&amp;#039;color&amp;#039;] or args[&amp;#039;c&amp;#039;] or args[1]&lt;br /&gt;
	return string.pcall(p._colorTemplates, color, text)&lt;br /&gt;
end&lt;br /&gt;
function p._color(color, text)&lt;br /&gt;
	return string.wrapHtml(text, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = color } })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
-- Template:Color Display&lt;br /&gt;
--&lt;br /&gt;
-- Displays input color as HEX code and a small preview&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
function p.colorDisplay(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local color = args[1]&lt;br /&gt;
	local preserveCase = yesno(args[&amp;#039;preserve_case&amp;#039;] or args[&amp;#039;preservecase&amp;#039;] or args[&amp;#039;case&amp;#039;] or args[&amp;#039;pc&amp;#039;] or args[&amp;#039;c&amp;#039;])&lt;br /&gt;
	return p._colorDisplay(color, preserveCase)&lt;br /&gt;
end&lt;br /&gt;
function p._colorDisplay(color, preserveCase)&lt;br /&gt;
	if color:find(&amp;#039;rgb&amp;#039;) then&lt;br /&gt;
		color = p._color_conversion(&amp;#039;hex&amp;#039;, color)&lt;br /&gt;
	end&lt;br /&gt;
	-- Remove all &amp;quot;#&amp;quot;&lt;br /&gt;
	if color:find(&amp;#039;#&amp;#039;) then&lt;br /&gt;
		color = color:gsub(&amp;#039;#&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if color:match(&amp;#039;^%x%x%x%x?$&amp;#039;) or color:match(&amp;#039;^%x%x%x%x%x%x$&amp;#039;) then -- allows 3, 4, or 6 hex decimals&lt;br /&gt;
		color = &amp;#039;#&amp;#039; .. color&lt;br /&gt;
	end&lt;br /&gt;
	if not preserveCase then color = color:upper() end&lt;br /&gt;
	return string.wrapHtml(&amp;#039;&amp;#039;, &amp;#039;span&amp;#039;, {&lt;br /&gt;
		style = { [&amp;#039;background-color&amp;#039;] = color },&lt;br /&gt;
		class = &amp;#039;color-display-block&amp;#039;&lt;br /&gt;
	}) .. libU.pipeline(&lt;br /&gt;
		table.concat{ &amp;#039;&amp;amp;nbsp;&amp;#039; .. color }, &amp;#039;code&amp;#039;, string.wrapTag&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
p.color_display = p.colorDisplay -- deprecated; may still have usages outside this code&lt;br /&gt;
p._color_display = p._colorDisplay -- deprecated; may still have usages outside this code&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
-- Template:Armor Colors&lt;br /&gt;
--&lt;br /&gt;
-- Creates an invisible table with armor colors. Used by {{Infobox armor}}&lt;br /&gt;
-----------------------------------------------------------------------------&lt;br /&gt;
function p.armorColors(frame)&lt;br /&gt;
	local function makeCell(htmlObj, piece, text)&lt;br /&gt;
		if text then&lt;br /&gt;
			htmlObj:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;):css{ style = &amp;#039;align:right;&amp;#039; }&lt;br /&gt;
					:tag(&amp;#039;b&amp;#039;):wikitext(piece):done()&lt;br /&gt;
				:done()&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:wikitext(p._colorDisplay(text))&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local inputs = string.lower(args[1])&lt;br /&gt;
	local all_the_same = yesno(args[&amp;#039;all&amp;#039;])&lt;br /&gt;
	&lt;br /&gt;
	-- Store preformated strings&lt;br /&gt;
	local preformated = {&lt;br /&gt;
		[&amp;#039;fairy&amp;#039;] = string.wrapTag(table.map({&lt;br /&gt;
				{&amp;#039;A&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#FF66B2&amp;#039; }}},&lt;br /&gt;
				{&amp;#039;N&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#FF3399&amp;#039; }}},&lt;br /&gt;
				{&amp;#039;I&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#FF33FF&amp;#039; }}},&lt;br /&gt;
				{&amp;#039;M&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#FF66FF&amp;#039; }}},&lt;br /&gt;
				{&amp;#039;A&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#9933FF&amp;#039; }}},&lt;br /&gt;
				{&amp;#039;T&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#FF99FF&amp;#039; }}},&lt;br /&gt;
				{&amp;#039;E&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#FF66B2&amp;#039; }}},&lt;br /&gt;
				{&amp;#039;D&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#FF99CC&amp;#039; }}},&lt;br /&gt;
			}, string.wrapHtml), &amp;#039;b&amp;#039;),&lt;br /&gt;
		[&amp;#039;crystal&amp;#039;] = string.wrapTag(table.map({&lt;br /&gt;
				{ &amp;#039;C&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#FCF3FF&amp;#039; }}},&lt;br /&gt;
				{ &amp;#039;H&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#E5D1ED&amp;#039; }}},&lt;br /&gt;
				{ &amp;#039;A&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#C9A3D4&amp;#039; }}},&lt;br /&gt;
				{ &amp;#039;N&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#A875BD&amp;#039; }}},&lt;br /&gt;
				{ &amp;#039;G&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#8E51A6&amp;#039; }}},&lt;br /&gt;
				{ &amp;#039;I&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#6A2C82&amp;#039; }}},&lt;br /&gt;
				{ &amp;#039;N&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#5D1C78&amp;#039; }}},&lt;br /&gt;
				{ &amp;#039;G&amp;#039;, &amp;#039;&amp;lt;font&amp;gt;&amp;#039;, { style = { color = &amp;#039;#46085E&amp;#039; }}}&lt;br /&gt;
			}, string.wrapHtml), &amp;#039;b&amp;#039;),&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if preformated[inputs] then &lt;br /&gt;
		return preformated[inputs]&lt;br /&gt;
	else&lt;br /&gt;
		inputs = mw.text.split(inputs, &amp;#039;,&amp;#039;)&lt;br /&gt;
		if all_the_same then&lt;br /&gt;
			return p._colorDisplay(inputs[1])&lt;br /&gt;
		else&lt;br /&gt;
			local ret = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
			local t = { &amp;#039;Helmet:&amp;#039;, &amp;#039;Chestplate:&amp;#039;, &amp;#039;Leggings:&amp;#039;, &amp;#039;Boots:&amp;#039; }&lt;br /&gt;
			for i, v in ipairs(t) do&lt;br /&gt;
				makeCell(ret, v, inputs[i])&lt;br /&gt;
			end&lt;br /&gt;
			return tostring(ret:done())&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Template:Note Sequence&lt;br /&gt;
--&lt;br /&gt;
-- Makes colored note sequence. Used for Harp songs.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.noteSequence(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local sequence = args[1]&lt;br /&gt;
	local colors = { &amp;#039;#ff78e8&amp;#039;, &amp;#039;#ffff00&amp;#039;, &amp;#039;#00ff00&amp;#039;, &amp;#039;#008000&amp;#039;, &amp;#039;#9500a8&amp;#039;, &amp;#039;#5900ff&amp;#039;, &amp;#039;#00b3ff&amp;#039; }&lt;br /&gt;
	-- stores notation because they mess up positions in the editor&lt;br /&gt;
	local clefs = { &amp;#039;𝄞&amp;#039;, &amp;#039;𝄢&amp;#039;, &amp;#039;𝄡&amp;#039; }&lt;br /&gt;
	local mus = { bracket = &amp;#039;𝄕&amp;#039;, barline = &amp;#039;𝄀&amp;#039;, final = &amp;#039;𝄂&amp;#039;, clef = clefs[math.random(3)] }&lt;br /&gt;
	&lt;br /&gt;
	local str =table.concat(table.map(args, function(sequence, count)&lt;br /&gt;
		local foo = {}&lt;br /&gt;
		for i = 1, #sequence, 1 do&lt;br /&gt;
			local num = tonumber(sequence:sub(i, i))&lt;br /&gt;
			if num and num &amp;gt;= 1 and num &amp;lt;= 7 then&lt;br /&gt;
				table.insert(foo, string.wrapHtml(p._color(colors[num], sequence:sub(i, i)), &amp;#039;&amp;lt;code&amp;gt;&amp;#039;, { style = &amp;#039;font-weight: bold;&amp;#039; }) .. &amp;#039;&amp;amp;thinsp;&amp;#039;)&lt;br /&gt;
			elseif sequence:sub(i, i) == &amp;#039; &amp;#039; or sequence:sub(i, i) == &amp;#039;.&amp;#039; then&lt;br /&gt;
				table.insert(foo, p._color(&amp;#039;gray&amp;#039;, &amp;#039;&amp;amp;bull;&amp;#039;) .. &amp;#039;&amp;amp;thinsp;&amp;#039;)&lt;br /&gt;
			elseif sequence:sub(i, i) == &amp;#039;$&amp;#039; then&lt;br /&gt;
				if count ~= table.length(args) then&lt;br /&gt;
					table.insert(foo, mus.barline .. &amp;#039;&amp;amp;thinsp;&amp;lt;br&amp;gt;&amp;#039; .. mus.bracket .. mus.clef .. &amp;#039;&amp;amp;thinsp;&amp;#039;)&lt;br /&gt;
				end -- else don&amp;#039;t insert anything&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(foo, sequence:sub(i, i))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if sequence:sub(#sequence, #sequence) ~= &amp;#039;$&amp;#039; then&lt;br /&gt;
			table.insert(foo, &amp;#039;&amp;amp;thinsp;&amp;#039; .. mus.barline .. &amp;#039;&amp;amp;thinsp;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(foo)&lt;br /&gt;
	end))&lt;br /&gt;
	&lt;br /&gt;
	return string.wrapHtml((mus.bracket .. mus.clef .. &amp;#039;&amp;amp;thinsp;%s&amp;amp;thinsp;&amp;#039; .. mus.final&lt;br /&gt;
		):format(str), &amp;#039;span&amp;#039;, { style = {&lt;br /&gt;
			[&amp;#039;background&amp;#039;] = &amp;#039;rgba(0, 0, 0, 0.35)&amp;#039;;&lt;br /&gt;
			[&amp;#039;padding&amp;#039;] = &amp;#039;1.5px&amp;#039;;&lt;br /&gt;
			[&amp;#039;border-radius&amp;#039;] = &amp;#039;3px&amp;#039;;&lt;br /&gt;
		}}&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Finish Module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>515797455988850689</name></author>
	</entry>
</feed>