<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wikiminecraft.es/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AFabricaci%C3%B3n_de_estandarte</id>
	<title>Módulo:Fabricación de estandarte - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wikiminecraft.es/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AFabricaci%C3%B3n_de_estandarte"/>
	<link rel="alternate" type="text/html" href="https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Fabricaci%C3%B3n_de_estandarte&amp;action=history"/>
	<updated>2026-04-06T15:53:19Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Fabricaci%C3%B3n_de_estandarte&amp;diff=19992&amp;oldid=prev</id>
		<title>Leynaf en 17:32 2 ene 2015</title>
		<link rel="alternate" type="text/html" href="https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Fabricaci%C3%B3n_de_estandarte&amp;diff=19992&amp;oldid=prev"/>
		<updated>2015-01-02T17:32:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 17:32 2 ene 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l290&quot;&gt;Línea 290:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 290:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;							&amp;#039;Orange Dye&amp;#039;, &amp;#039;Magenta Dye&amp;#039;, &amp;#039;Light Blue Dye&amp;#039;, &amp;#039;Dandelion Yellow&amp;#039;, &amp;#039;Lime Dye&amp;#039;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;							&amp;#039;Orange Dye&amp;#039;, &amp;#039;Magenta Dye&amp;#039;, &amp;#039;Light Blue Dye&amp;#039;, &amp;#039;Dandelion Yellow&amp;#039;, &amp;#039;Lime Dye&amp;#039;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;							&amp;#039;Pink Dye&amp;#039;, &amp;#039;Gray Dye&amp;#039;, &amp;#039;Light Gray Dye&amp;#039;, &amp;#039;Cyan Dye&amp;#039;, &amp;#039;Purple Dye&amp;#039;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;							&amp;#039;Pink Dye&amp;#039;, &amp;#039;Gray Dye&amp;#039;, &amp;#039;Light Gray Dye&amp;#039;, &amp;#039;Cyan Dye&amp;#039;, &amp;#039;Purple Dye&amp;#039;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;							&#039;Lapis Lazuli&#039;, &#039;Cocoa Beans&#039;, &#039;Cactus Green&#039;, &#039;Rose Red&#039;, &#039;Ink Sac&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;							&#039;Lapis Lazuli&#039;, &#039;Cocoa Beans&#039;, &#039;Cactus Green&#039;, &#039;Rose Red&#039;, &#039;Ink Sac&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                            &#039;Tinte Amarillo&#039;, &#039;Lapislázuli&#039;, &#039;Tinte naranja&#039;, &#039;Tinte rojo&lt;/ins&gt;&#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						if v == &amp;#039;Any Dye&amp;#039; then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						if v == &amp;#039;Any Dye&amp;#039; then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l303&quot;&gt;Línea 303:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 304:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						elseif v== &amp;#039;Any Mushroom&amp;#039; or v == &amp;#039;Red Mushroom&amp;#039; or v == &amp;#039;Brown Mushroom&amp;#039; then v = &amp;#039;Mushroom&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						elseif v== &amp;#039;Any Mushroom&amp;#039; or v == &amp;#039;Red Mushroom&amp;#039; or v == &amp;#039;Brown Mushroom&amp;#039; then v = &amp;#039;Mushroom&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						elseif v == &amp;#039;Red Sand&amp;#039; then v = &amp;#039;Sand&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						elseif v == &amp;#039;Red Sand&amp;#039; then v = &amp;#039;Sand&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;						&lt;/del&gt;elseif v == &#039;Charcoal&#039; then v = &#039;Coal&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  						&lt;/ins&gt;elseif v == &#039;Charcoal&#039; then v = &#039;Coal&#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						elseif v:find( &amp;#039; Wood$&amp;#039; ) then v = &amp;#039;Wood&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						elseif v:find( &amp;#039; Wood$&amp;#039; ) then v = &amp;#039;Wood&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						elseif v:find( &amp;#039; Wood Planks$&amp;#039; ) then v = &amp;#039;Wood Planks&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;						elseif v:find( &amp;#039; Wood Planks$&amp;#039; ) then v = &amp;#039;Wood Planks&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Leynaf</name></author>
	</entry>
	<entry>
		<id>https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Fabricaci%C3%B3n_de_estandarte&amp;diff=19984&amp;oldid=prev</id>
		<title>Leynaf: Página creada con «local p = {} function p.table( f ) 	local args = f 	if f == mw.getCurrentFrame() then 		args = require( &#039;Module:ProcessArgs&#039; ).merge() 	else 		f = mw.getCurrentFrame() 	end...»</title>
		<link rel="alternate" type="text/html" href="https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Fabricaci%C3%B3n_de_estandarte&amp;diff=19984&amp;oldid=prev"/>
		<updated>2015-01-02T16:44:58Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «local p = {} function p.table( f ) 	local args = f 	if f == mw.getCurrentFrame() then 		args = require( &amp;#039;Module:ProcessArgs&amp;#039; ).merge() 	else 		f = mw.getCurrentFrame() 	end...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
function p.table( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = require( &amp;#039;Module:ProcessArgs&amp;#039; ).merge()&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	local grid = require( &amp;#039;Module:Grid&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	-- Start table when appropriate&lt;br /&gt;
	local multirow = f:callParserFunction( &amp;#039;#dplvar&amp;#039;, &amp;#039;multirow&amp;#039; )&lt;br /&gt;
	if multirow ~= &amp;#039;1&amp;#039; then&lt;br /&gt;
		multirow = nil&lt;br /&gt;
	end&lt;br /&gt;
	local head = args.head or &amp;#039;&amp;#039;&lt;br /&gt;
	if multirow then&lt;br /&gt;
		head = &amp;#039;&amp;#039;&lt;br /&gt;
	elseif head ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		multirow = 1&lt;br /&gt;
		f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;, &amp;#039;multirow&amp;#039;, &amp;#039;1&amp;#039; )&lt;br /&gt;
	else&lt;br /&gt;
		head = 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- End table when appropriate&lt;br /&gt;
	local foot = args.foot or &amp;#039;&amp;#039;&lt;br /&gt;
	if multirow then&lt;br /&gt;
		if foot ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			multirow = nil&lt;br /&gt;
			f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;, &amp;#039;multirow&amp;#039;, &amp;#039;0&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		foot = 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local header = &amp;#039;&amp;#039;&lt;br /&gt;
	if head ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		local name = &amp;#039;&amp;#039;&lt;br /&gt;
		local description = &amp;#039;&amp;#039;&lt;br /&gt;
		if args.showname == &amp;#039;1&amp;#039; or multirow and args.showname ~= &amp;#039;0&amp;#039; then&lt;br /&gt;
			name = &amp;#039;Name !! &amp;#039;&lt;br /&gt;
			f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;, &amp;#039;craftingname&amp;#039;, &amp;#039;1&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if args.showdescription == &amp;#039;1&amp;#039; then&lt;br /&gt;
			description = &amp;#039; !! class=&amp;quot;unsortable&amp;quot; | Description&amp;#039;&lt;br /&gt;
			f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;, &amp;#039;craftingdescription&amp;#039;, &amp;#039;1&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
		local class = args.class or &amp;#039;&amp;#039;&lt;br /&gt;
		local recipeClass = &amp;#039;&amp;#039;&lt;br /&gt;
		if multirow then&lt;br /&gt;
			class = &amp;#039;sortable collapsible &amp;#039; .. class&lt;br /&gt;
			recipeClass = &amp;#039;class=&amp;quot;unsortable collapse-button&amp;quot; |&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		header = table.concat( {&lt;br /&gt;
			&amp;#039; {| class=&amp;quot;wikitable &amp;#039; .. class .. &amp;#039;&amp;quot;&amp;#039;,&lt;br /&gt;
			&amp;#039;! &amp;#039; .. name .. &amp;#039;Ingredients !! &amp;#039; .. recipeClass .. &amp;#039; [[Crafting]] recipe&amp;#039; .. description,&lt;br /&gt;
			&amp;#039;|-&amp;#039;&lt;br /&gt;
		}, &amp;#039;\n&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Name cell&lt;br /&gt;
	local nameCell&lt;br /&gt;
	if f:callParserFunction( &amp;#039;#dplvar&amp;#039;, &amp;#039;craftingname&amp;#039; ) == &amp;#039;1&amp;#039; then&lt;br /&gt;
		if args.name or &amp;#039;&amp;#039; ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			nameCell = args.name&lt;br /&gt;
		else&lt;br /&gt;
			local names = {}&lt;br /&gt;
			local links = {}&lt;br /&gt;
			for v in mw.text.gsplit( args.Output or &amp;#039;&amp;#039;, &amp;#039;%s*;%s*&amp;#039; ) do&lt;br /&gt;
				parts = grid.getParts( v, args.Mod )&lt;br /&gt;
				parts.mod = parts.mod or &amp;#039;&amp;#039;&lt;br /&gt;
				if not names[parts.mod .. &amp;#039;:&amp;#039; .. parts.name] then&lt;br /&gt;
					local link = &amp;#039;&amp;#039;&lt;br /&gt;
					if parts.mod ~= &amp;#039;&amp;#039; then&lt;br /&gt;
						link = &amp;#039;Mods/&amp;#039; .. parts.mod .. &amp;#039;/&amp;#039; .. parts.name .. &amp;#039;|&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if parts.name:find( &amp;#039;^Any &amp;#039; ) then&lt;br /&gt;
						table.insert( links, &amp;#039;Any [[&amp;#039; .. link .. parts.name:sub( 4 ) .. &amp;#039;]]&amp;#039; )&lt;br /&gt;
					else&lt;br /&gt;
						table.insert( links, &amp;#039;[[&amp;#039; .. link .. parts.name .. &amp;#039;]]&amp;#039; )&lt;br /&gt;
					end&lt;br /&gt;
					names[parts.mod .. &amp;#039;:&amp;#039; .. parts.name] = 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			nameCell = table.concat( links, &amp;#039;&amp;amp;nbsp;or&amp;lt;br&amp;gt;&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if nameCell and args.upcoming then&lt;br /&gt;
		nameCell = nameCell .. &amp;#039;&amp;lt;br&amp;gt;([[&amp;#039; .. args.upcoming .. &amp;#039;]])&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Create ingredient list&lt;br /&gt;
	local ingredients = {}&lt;br /&gt;
	local ingredientKeys = {}&lt;br /&gt;
	local animatedIngredients = {}&lt;br /&gt;
	local animatedKeys = {}&lt;br /&gt;
	for k, v in pairs( args ) do&lt;br /&gt;
		v = mw.text.trim( v )&lt;br /&gt;
		if v ~= &amp;#039;&amp;#039; and tostring( k ):find( &amp;#039;^%u?%d%d?$&amp;#039; ) then&lt;br /&gt;
			if v:find( &amp;#039;;&amp;#039; ) then&lt;br /&gt;
				table.insert( animatedKeys, v )&lt;br /&gt;
			else&lt;br /&gt;
				local parts = grid.getParts( v, args.Mod )&lt;br /&gt;
				parts.mod = parts.mod or &amp;#039;&amp;#039;&lt;br /&gt;
				local fullName = parts.mod .. &amp;#039;:&amp;#039; .. parts.name&lt;br /&gt;
				if not ingredients[fullName] then&lt;br /&gt;
					table.insert( ingredientKeys, fullName )&lt;br /&gt;
					ingredients[fullName] = { mod = parts.mod, name = parts.name }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in ipairs( animatedKeys ) do&lt;br /&gt;
		local frames = mw.text.split( v, &amp;#039;%s*;%s*&amp;#039; )&lt;br /&gt;
		local length = #frames&lt;br /&gt;
		for k2, v2 in ipairs( frames ) do&lt;br /&gt;
			local parts = grid.getParts( v2, args.Mod )&lt;br /&gt;
			parts.mod = parts.mod or &amp;#039;&amp;#039;&lt;br /&gt;
			local fullName = parts.mod .. &amp;#039;:&amp;#039; .. parts.name&lt;br /&gt;
			if v2 ~= &amp;#039;&amp;#039; and not ingredients[fullName] and not animatedIngredients[fullName] then&lt;br /&gt;
				table.insert( ingredientKeys, fullName )&lt;br /&gt;
				animatedIngredients[fullName] = { mod = parts.mod, name = parts.name, final = k2 == length }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Ingredients cell&lt;br /&gt;
	local ingredientsCell&lt;br /&gt;
	if args.ingredients or &amp;#039;&amp;#039; ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		ingredientsCell = args.ingredients&lt;br /&gt;
	else&lt;br /&gt;
		ingredientsCell = {}&lt;br /&gt;
		for k, v in ipairs( ingredientKeys ) do&lt;br /&gt;
			local link = &amp;#039;&amp;#039;&lt;br /&gt;
			local separator = &amp;#039;&amp;amp;nbsp;+&amp;#039;&lt;br /&gt;
			if k == #ingredientKeys then&lt;br /&gt;
				separator = &amp;#039;&amp;#039;&lt;br /&gt;
			elseif animatedIngredients[v] and not animatedIngredients[v].final then&lt;br /&gt;
				separator = &amp;#039;&amp;amp;nbsp;or&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			local mod = ( ingredients[v] or animatedIngredients[v] ).mod&lt;br /&gt;
			local name = ( ingredients[v] or animatedIngredients[v] ).name&lt;br /&gt;
			if mod ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				link = &amp;#039;Mods/&amp;#039;.. mod .. &amp;#039;/&amp;#039; .. name .. &amp;#039;|&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if name:find( &amp;#039;^Any &amp;#039; ) then&lt;br /&gt;
				table.insert( ingredientsCell, &amp;#039;Any [[&amp;#039; .. link .. name:sub( 5 ) .. &amp;#039;]]&amp;#039; .. separator )&lt;br /&gt;
			else&lt;br /&gt;
				table.insert( ingredientsCell, &amp;#039;[[&amp;#039; .. link .. name .. &amp;#039;]]&amp;#039; .. separator )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		ingredientsCell = table.concat( ingredientsCell, &amp;#039;&amp;lt;br&amp;gt;\n&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Automatic shapeless positioning&lt;br /&gt;
	local newArgs = {}&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		newArgs.shapeless = 1&lt;br /&gt;
		if args[7] then&lt;br /&gt;
			newArgs.A1 = args[1]&lt;br /&gt;
			newArgs.B1 = args[2]&lt;br /&gt;
			newArgs.C1 = args[3]&lt;br /&gt;
			newArgs.A2 = args[4]&lt;br /&gt;
			newArgs.B2 = args[5]&lt;br /&gt;
			newArgs.C2 = args[6]&lt;br /&gt;
			if args[8] then&lt;br /&gt;
				-- ◼◼◼      ◼◼◼&lt;br /&gt;
				-- ◼◼◼  OR  ◼◼◼&lt;br /&gt;
				-- ◼◼◼      ◼◼◻&lt;br /&gt;
				newArgs.A3 = args[7]&lt;br /&gt;
				newArgs.B3 = args[8]&lt;br /&gt;
				newArgs.C3 = args[9]&lt;br /&gt;
				if args[9] then&lt;br /&gt;
					local identical = true&lt;br /&gt;
					for i = 1, 8 do&lt;br /&gt;
						if args[i] ~= args[i + 1] then&lt;br /&gt;
							identical = false&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					if identical then&lt;br /&gt;
						newArgs.shapeless = nil&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- ◼◼◼&lt;br /&gt;
				-- ◼◼◼&lt;br /&gt;
				-- ◻◼◻&lt;br /&gt;
				newArgs.B3 = args[7]&lt;br /&gt;
			end&lt;br /&gt;
		elseif args[2] then&lt;br /&gt;
			newArgs.A2 = args[1]&lt;br /&gt;
			newArgs.B2 = args[2]&lt;br /&gt;
			if args[5] then&lt;br /&gt;
				-- ◻◻◻      ◻◻◻&lt;br /&gt;
				-- ◼◼◼  OR  ◼◼◼&lt;br /&gt;
				-- ◼◼◼      ◼◼◻&lt;br /&gt;
				newArgs.C2 = args[3]&lt;br /&gt;
				newArgs.A3 = args[4]&lt;br /&gt;
				newArgs.B3 = args[5]&lt;br /&gt;
				newArgs.C3 = args[6]&lt;br /&gt;
			elseif args[4] then&lt;br /&gt;
				-- ◻◻◻&lt;br /&gt;
				-- ◼◼◻&lt;br /&gt;
				-- ◼◼◻&lt;br /&gt;
				newArgs.A3 = args[3]&lt;br /&gt;
				newArgs.B3 = args[4]&lt;br /&gt;
			else&lt;br /&gt;
				-- ◻◻◻      ◻◻◻&lt;br /&gt;
				-- ◼◼◻  OR  ◼◼◻&lt;br /&gt;
				-- ◻◼◻      ◻◻◻&lt;br /&gt;
				newArgs.B3 = args[3]&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- ◻◻◻&lt;br /&gt;
			-- ◻◼◻&lt;br /&gt;
			-- ◻◻◻&lt;br /&gt;
			newArgs.B2 = args[1]&lt;br /&gt;
			newArgs.shapeless = nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		newArgs.A1 = args.A1&lt;br /&gt;
		newArgs.B1 = args.B1&lt;br /&gt;
		newArgs.C1 = args.C1&lt;br /&gt;
		newArgs.A2 = args.A2&lt;br /&gt;
		newArgs.B2 = args.B2&lt;br /&gt;
		newArgs.C2 = args.C2&lt;br /&gt;
		newArgs.A3 = args.A3&lt;br /&gt;
		newArgs.B3 = args.B3&lt;br /&gt;
		newArgs.C3 = args.C3&lt;br /&gt;
		newArgs.fixed = args.fixed&lt;br /&gt;
		newArgs.notfixed = args.notfixed&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Any other args we want to pass along&lt;br /&gt;
	newArgs.Mod = args.Mod&lt;br /&gt;
	newArgs.Output = args.Output&lt;br /&gt;
	newArgs.Otitle = args.Otitle&lt;br /&gt;
	newArgs.Olink = args.Olink&lt;br /&gt;
	&lt;br /&gt;
	-- Recipe cell&lt;br /&gt;
	local recipeCell = grid.craftingTable( newArgs )&lt;br /&gt;
	&lt;br /&gt;
	local row = { ingredientsCell, recipeCell }&lt;br /&gt;
	if nameCell then&lt;br /&gt;
		table.insert( row, 1, nameCell )&lt;br /&gt;
	end&lt;br /&gt;
	if f:callParserFunction( &amp;#039;#dplvar&amp;#039;, &amp;#039;craftingdescription&amp;#039; ) == &amp;#039;1&amp;#039; then&lt;br /&gt;
		table.insert( row, args.description or &amp;#039;&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	row = table.concat( row, &amp;#039;\n|\n&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	if nameCell then&lt;br /&gt;
		row = &amp;#039;!\n&amp;#039; .. row&lt;br /&gt;
	else&lt;br /&gt;
		row = &amp;#039;|\n&amp;#039; .. row&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local footer = &amp;#039;&amp;#039;&lt;br /&gt;
	if foot ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		footer = &amp;#039;|}&amp;#039;&lt;br /&gt;
		f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;, &amp;#039;craftingname&amp;#039;, &amp;#039;0&amp;#039;, &amp;#039;craftingdescription&amp;#039;, &amp;#039;0&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Create ingredient categories for DPL&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	local categories = &amp;#039;&amp;#039;&lt;br /&gt;
	if args.nocat ~= &amp;#039;1&amp;#039; and title.namespace == 0 and not title.isSubpage then&lt;br /&gt;
		categories = {}&lt;br /&gt;
		&lt;br /&gt;
		if args.upcoming then&lt;br /&gt;
			table.insert( categories, &amp;#039;[[Category:Upcoming]]&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if args.type then&lt;br /&gt;
			table.insert( categories, &amp;#039;[[Category:&amp;#039; .. args.type .. &amp;#039; recipe]]&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if args.ignoreusage ~= &amp;#039;1&amp;#039; then&lt;br /&gt;
			for k, v in ipairs( ingredientKeys ) do&lt;br /&gt;
				v = v:sub( 2 )&lt;br /&gt;
				if not v:find( &amp;#039;:&amp;#039; ) then&lt;br /&gt;
					if v == &amp;#039;Any Dye&amp;#039; or v == &amp;#039;Any Colored Dye&amp;#039; then&lt;br /&gt;
						local dyes = {&lt;br /&gt;
							&amp;#039;Orange Dye&amp;#039;, &amp;#039;Magenta Dye&amp;#039;, &amp;#039;Light Blue Dye&amp;#039;, &amp;#039;Dandelion Yellow&amp;#039;, &amp;#039;Lime Dye&amp;#039;,&lt;br /&gt;
							&amp;#039;Pink Dye&amp;#039;, &amp;#039;Gray Dye&amp;#039;, &amp;#039;Light Gray Dye&amp;#039;, &amp;#039;Cyan Dye&amp;#039;, &amp;#039;Purple Dye&amp;#039;,&lt;br /&gt;
							&amp;#039;Lapis Lazuli&amp;#039;, &amp;#039;Cocoa Beans&amp;#039;, &amp;#039;Cactus Green&amp;#039;, &amp;#039;Rose Red&amp;#039;, &amp;#039;Ink Sac&amp;#039;&lt;br /&gt;
						}&lt;br /&gt;
						if v == &amp;#039;Any Dye&amp;#039; then&lt;br /&gt;
							table.insert( dyes, 1, &amp;#039;Bone Meal&amp;#039; )&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						for _, dye in ipairs( dyes ) do&lt;br /&gt;
							table.insert( categories, &amp;#039;[[Category:Recipe using &amp;#039; .. dye .. &amp;#039;]]&amp;#039; )&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						if v == &amp;#039;Sticky Piston&amp;#039; then v = &amp;#039;Piston&amp;#039;&lt;br /&gt;
						elseif v== &amp;#039;Any Mushroom&amp;#039; or v == &amp;#039;Red Mushroom&amp;#039; or v == &amp;#039;Brown Mushroom&amp;#039; then v = &amp;#039;Mushroom&amp;#039;&lt;br /&gt;
						elseif v == &amp;#039;Red Sand&amp;#039; then v = &amp;#039;Sand&amp;#039;&lt;br /&gt;
						elseif v == &amp;#039;Charcoal&amp;#039; then v = &amp;#039;Coal&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Wood$&amp;#039; ) then v = &amp;#039;Wood&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Wood Planks$&amp;#039; ) then v = &amp;#039;Wood Planks&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Stained Glass$&amp;#039; ) then v = &amp;#039;Stained Glass&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Stained Glass Pane$&amp;#039; ) then v = &amp;#039;Stained Glass Pane&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Wool$&amp;#039; ) then v = &amp;#039;Wool&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039;Red Sandstone$&amp;#039; ) then v = &amp;#039;Red Sandstone&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Sandstone$&amp;#039; ) then v = &amp;#039;Sandstone&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Stairs$&amp;#039; ) then v = &amp;#039;Stairs&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Slab$&amp;#039; ) then v = &amp;#039;Slab&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Pressure Plate$&amp;#039; ) then v = &amp;#039;Pressure Plate&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Firework Star$&amp;#039; ) then v = &amp;#039;Firework Star&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Stone Bricks$&amp;#039; ) then v = &amp;#039;Stone Bricks&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Quartz Block$&amp;#039; ) then v = &amp;#039;Block of Quartz&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Andesite$&amp;#039; ) then v = &amp;#039;Andesite&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Diorite$&amp;#039; ) then v = &amp;#039;Diorite&amp;#039;&lt;br /&gt;
						elseif v:find( &amp;#039; Granite$&amp;#039; ) then v = &amp;#039;Granite&amp;#039;&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						table.insert( categories, &amp;#039;[[Category:Recipe using &amp;#039; .. v .. &amp;#039;]]&amp;#039; )&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		categories = table.concat( categories, &amp;#039;&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.debug == &amp;#039;1&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;lt;pre&amp;gt;&amp;#039; .. header .. &amp;#039;\n&amp;#039; .. row .. &amp;#039;\n|-\n&amp;#039; .. footer .. categories .. &amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return header .. &amp;#039;\n&amp;#039; .. row .. &amp;#039;\n|-\n&amp;#039; .. footer .. categories&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Leynaf</name></author>
	</entry>
</feed>