<?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%3ACrafting_DPL</id>
	<title>Módulo:Crafting DPL - 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%3ACrafting_DPL"/>
	<link rel="alternate" type="text/html" href="https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Crafting_DPL&amp;action=history"/>
	<updated>2026-05-04T12:07:04Z</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:Crafting_DPL&amp;diff=3053&amp;oldid=prev</id>
		<title>MinedNugget: Protegió «Módulo:Crafting DPL» ([Editar=Solo permitir administradores] (indefinido) [Pueden trasladar=Solo permitir administradores] (indefinido))</title>
		<link rel="alternate" type="text/html" href="https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Crafting_DPL&amp;diff=3053&amp;oldid=prev"/>
		<updated>2014-04-20T14:41:40Z</updated>

		<summary type="html">&lt;p&gt;Protegió «&lt;a href=&quot;/M%C3%B3dulo:Crafting_DPL&quot; title=&quot;Módulo:Crafting DPL&quot;&gt;Módulo:Crafting DPL&lt;/a&gt;» ([Editar=Solo permitir administradores] (indefinido) [Pueden trasladar=Solo permitir administradores] (indefinido))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 14:41 20 abr 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>MinedNugget</name></author>
	</entry>
	<entry>
		<id>https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Crafting_DPL&amp;diff=1042&amp;oldid=prev</id>
		<title>MinedNugget: Página creada con «local p = {} function p.dpl( f ) 	local debug = f:callParserFunction( &#039;#dplvar:debug&#039; ) 	local args = require( &#039;Module:ProcessArgs&#039; ).merge() 	if args.ignoreusage then retu...»</title>
		<link rel="alternate" type="text/html" href="https://wikiminecraft.es/index.php?title=M%C3%B3dulo:Crafting_DPL&amp;diff=1042&amp;oldid=prev"/>
		<updated>2014-04-11T16:30:27Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «local p = {} function p.dpl( f ) 	local debug = f:callParserFunction( &amp;#039;#dplvar:debug&amp;#039; ) 	local args = require( &amp;#039;Module:ProcessArgs&amp;#039; ).merge() 	if args.ignoreusage then retu...»&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.dpl( f )&lt;br /&gt;
	local debug = f:callParserFunction( &amp;#039;#dplvar:debug&amp;#039; )&lt;br /&gt;
	local args = require( &amp;#039;Module:ProcessArgs&amp;#039; ).merge()&lt;br /&gt;
	if args.ignoreusage then return end&lt;br /&gt;
	&lt;br /&gt;
	local title = f:callParserFunction( &amp;#039;#dplvar:craftingdplingredient&amp;#039; )&lt;br /&gt;
	if title == &amp;#039;&amp;#039; then&lt;br /&gt;
		title = mw.title.getCurrentTitle().text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local craftingArgs = {&lt;br /&gt;
		args[1] or args.A1 or &amp;#039;&amp;#039;, args[2] or args.B1 or &amp;#039;&amp;#039;, args[3] or args.C1 or &amp;#039;&amp;#039;,&lt;br /&gt;
		args[4] or args.A2 or &amp;#039;&amp;#039;, args[5] or args.B2 or &amp;#039;&amp;#039;, args[6] or args.C2 or &amp;#039;&amp;#039;,&lt;br /&gt;
		args[7] or args.A3 or &amp;#039;&amp;#039;, args[8] or args.B3 or &amp;#039;&amp;#039;, args[9] or args.C3 or &amp;#039;&amp;#039;,&lt;br /&gt;
		Output = args.Output&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local matchType = f:callParserFunction( &amp;#039;#dplvar:craftingdplmatch&amp;#039; )&lt;br /&gt;
	function matchPattern( ingredient )&lt;br /&gt;
		local pattern&lt;br /&gt;
		local escaped = mw.ustring.lower( ingredient ):gsub( &amp;#039;([%(%)])&amp;#039;, &amp;#039;%%%1&amp;#039; )&lt;br /&gt;
		if matchType == &amp;#039;start&amp;#039; then&lt;br /&gt;
			pattern = &amp;#039;[;:%]]%s*&amp;#039; .. escaped&lt;br /&gt;
		elseif matchType == &amp;#039;end&amp;#039; then&lt;br /&gt;
			pattern = escaped .. &amp;#039;%s*[,;%[]&amp;#039;&lt;br /&gt;
		elseif matchType == &amp;#039;any&amp;#039; then&lt;br /&gt;
			pattern = escaped&lt;br /&gt;
		else&lt;br /&gt;
			pattern = &amp;#039;[;:%]]%s*&amp;#039; .. escaped .. &amp;#039;%s*[,;%[]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return pattern&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local usedRecipes = f:callParserFunction( &amp;#039;#dplvar:craftingdplrecipes&amp;#039; )&lt;br /&gt;
	local hasIngredient&lt;br /&gt;
	for _, v in ipairs( craftingArgs ) do&lt;br /&gt;
		if ( &amp;#039;;&amp;#039; .. mw.ustring.lower( v ) .. &amp;#039;;&amp;#039; ):find( matchPattern( title ) ) then&lt;br /&gt;
			if usedRecipes:find( matchPattern( args.Output ) ) then return end&lt;br /&gt;
			if not v:find( &amp;#039;;&amp;#039; ) then&lt;br /&gt;
				hasIngredient = &amp;#039;static&amp;#039;&lt;br /&gt;
			elseif not hasIngredient then&lt;br /&gt;
				hasIngredient = &amp;#039;animated&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not hasIngredient then return end&lt;br /&gt;
	&lt;br /&gt;
	local maxFrames = 1&lt;br /&gt;
	local requiredFrames = {}&lt;br /&gt;
	if hasIngredient == &amp;#039;animated&amp;#039; then&lt;br /&gt;
		for _, v in ipairs( craftingArgs ) do&lt;br /&gt;
			if v:find( &amp;#039;;&amp;#039; ) then&lt;br /&gt;
				local frameNum = 0&lt;br /&gt;
				for frame in mw.text.gsplit( v, &amp;#039;%s*;%s*&amp;#039; ) do&lt;br /&gt;
					frameNum = frameNum + 1&lt;br /&gt;
					if frameNum &amp;gt; maxFrames then maxFrames = frameNum end&lt;br /&gt;
					&lt;br /&gt;
					if not requiredFrames[frameNum] and ( &amp;#039;;&amp;#039; .. mw.ustring.lower( frame ) .. &amp;#039;;&amp;#039; ):find( matchPattern( title ) ) then&lt;br /&gt;
						requiredFrames[frameNum] = true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if maxFrames &amp;gt; 1 then&lt;br /&gt;
		local frames = {}&lt;br /&gt;
		for k, arg in pairs( craftingArgs ) do&lt;br /&gt;
			if arg:find( &amp;#039;;&amp;#039; ) then&lt;br /&gt;
				local frameNum = 0&lt;br /&gt;
				for frame in mw.text.gsplit( arg, &amp;#039;%s*;%s*&amp;#039; ) do&lt;br /&gt;
					frameNum = frameNum + 1&lt;br /&gt;
					if requiredFrames[frameNum] then&lt;br /&gt;
						if not frames[k] then frames[k] = {} end&lt;br /&gt;
						table.insert( frames[k], frame )&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				frames[k] = table.concat( frames[k], &amp;#039;;&amp;#039; )&lt;br /&gt;
			else&lt;br /&gt;
				frames[k] = arg&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;, &amp;#039;craftingdplrecipes&amp;#039;, usedRecipes .. &amp;#039;;&amp;#039; .. mw.ustring.lower( frames.Output ) .. &amp;#039;;&amp;#039; )&lt;br /&gt;
		&lt;br /&gt;
		if args[1] then&lt;br /&gt;
			local argNum = 0&lt;br /&gt;
			for _, arg in ipairs( frames ) do&lt;br /&gt;
				if arg ~= &amp;#039;&amp;#039; then&lt;br /&gt;
					argNum = argNum + 1&lt;br /&gt;
					args[argNum] = arg&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			args.Output = frames.Output&lt;br /&gt;
		else&lt;br /&gt;
			args.A1 = frames[1]; args.B1 = frames[2]; args.C1 = frames[3]&lt;br /&gt;
			args.A2 = frames[4]; args.B2 = frames[5]; args.C2 = frames[6]&lt;br /&gt;
			args.A3 = frames[7]; args.B3 = frames[8]; args.C3 = frames[9]&lt;br /&gt;
			args.Output = frames.Output&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- If not all frames are used, overwrite custom name and ingredient values&lt;br /&gt;
		if maxFrames &amp;gt; #requiredFrames then&lt;br /&gt;
			args.name = nil&lt;br /&gt;
			args.ingredients = nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;, &amp;#039;craftingdplrecipes&amp;#039;, usedRecipes .. &amp;#039;;&amp;#039; .. mw.ustring.lower( args.Output ) .. &amp;#039;;&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if debug == &amp;#039;1&amp;#039; then&lt;br /&gt;
		args.name = &amp;#039;From: [[&amp;#039; .. args[&amp;#039;%PAGE%&amp;#039;] .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local crafting = require( &amp;#039;Module:Crafting&amp;#039; ).table&lt;br /&gt;
	args.head = &amp;#039;1&amp;#039;&lt;br /&gt;
	args.showname = nil&lt;br /&gt;
	args.foot = nil&lt;br /&gt;
	args.nocat = &amp;#039;1&amp;#039;&lt;br /&gt;
	args.showdescription = f:callParserFunction( &amp;#039;#dplvar:craftingdescription&amp;#039; )&lt;br /&gt;
	return crafting( args )&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>MinedNugget</name></author>
	</entry>
</feed>