Minecraft Wiki
Sem resumo de edição
Sem resumo de edição
Linha 6: Linha 6:
 
'Corante Laranja', 'Corante Magenta', 'Corante Azul Claro', 'Amarelo do Dente-de-Leão', 'Corante Verde Limão',
 
'Corante Laranja', 'Corante Magenta', 'Corante Azul Claro', 'Amarelo do Dente-de-Leão', 'Corante Verde Limão',
 
'Corante Rosa', 'Corante Cinza', 'Corante Cinza Claro', 'Corante Ciano', 'Corante Lilás',
 
'Corante Rosa', 'Corante Cinza', 'Corante Cinza Claro', 'Corante Ciano', 'Corante Lilás',
'Lápis-Lazúli', 'Sementes de Cacau', 'Verde do Cacto', 'Vermelho da Rosa', 'Saco de Tinta',
+
'Lápis-Lazúli', 'Sementes de Cacau', 'Verde do Cacto', 'Vermelho da Rosa', 'Bolsa de Tinta',
 
},
 
},
 
categoryIngredientUsage = 'Categoria:Receita usando $1',
 
categoryIngredientUsage = 'Categoria:Receita usando $1',

Edição das 13h43min de 20 de fevereiro de 2017

Este módulo implementa {{Fabricação}}.

Argumentos pais são automaticamente mesclados com argumentos diretamente passados (o último substituindo o anterior).

Dependências

Veja também

[ver | editar | histórico | purgar]A documentação acima é transcluída de Módulo:Crafting/doc.
local p = {}

local i18n = {
	colored = 'Colorido',
	coloredDyes = {
	'Corante Laranja', 'Corante Magenta', 'Corante Azul Claro', 'Amarelo do Dente-de-Leão', 'Corante Verde Limão',
	'Corante Rosa', 'Corante Cinza', 'Corante Cinza Claro', 'Corante Ciano', 'Corante Lilás',
	'Lápis-Lazúli', 'Sementes de Cacau', 'Verde do Cacto', 'Vermelho da Rosa', 'Bolsa de Tinta',
	},
	categoryIngredientUsage = 'Categoria:Receita usando $1',
	categoryRecipeType = 'Categoria:Receita de $1',
	categoryUpcoming = 'Categoria:Em breve',
	itemBlockOfQuartz = 'Bloco de Quartzo',
	itemBoneMeal = 'Farinha de Osso',
	itemBrownMushroom = 'Cogumelo Marrom',
	itemCharcoal = 'Carvão Vegetal',
	itemCoal = 'Carvão',
	itemColoredDye = 'Corante Colorido',
	itemDye = 'Corante',
	itemMushroom = 'Cogumelo',
	itemQuartzBlock = 'Bloco de Quartzo',
	itemRedMushroom = 'Cogumelo Vermelho',
	moduleArgs = [[Módulo:ProcessArgs]],
	moduleRecipe = [[Módulo:Recipe table]],
	moduleSlot = [[Módulo:Inventory slot]],
	type = 'Criação',
	variantPages = {
		'Andesito', 'Estandarte', 'Diorito', 'Estrela de Fogos de Artifício', 'Granito', 
		'Placa de Pressão', 'Areia', 'Arenito', 'Escudo', 'Laje', 'Painel de Vidro Tingido', 
		'Vidro Tingido', 'Escadas', 'Tijolos de Pedra', 'Tábuas', 'Madeira', 'Lã', 'Concreto',
		'Pó de Concreto', 'Terracota Envidraçada',
	},
}
p.i18n = i18n

local slot = require( i18n.moduleSlot )
local recipeTable = require( i18n.moduleRecipe ).table
local cArgVals = { 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3' }
p.cArgVals = cArgVals

function p.table( f )
	local args = f
	if f == mw.getCurrentFrame() then
		args = require( i18n.moduleArgs ).merge( true )
	else
		f = mw.getCurrentFrame()
	end
	
	-- Automatic shapeless positioning
	if args[1] then
		args.shapeless = 1
		if args[7] then
			args.A1 = args[1]
			args.B1 = args[2]
			args.C1 = args[3]
			args.A2 = args[4]
			args.B2 = args[5]
			args.C2 = args[6]
			if args[8] then
				-- ◼◼◼      ◼◼◼
				-- ◼◼◼  OR  ◼◼◼
				-- ◼◼◼      ◼◼◻
				args.A3 = args[7]
				args.B3 = args[8]
				args.C3 = args[9]
				if args[9] then
					local identical = true
					for i = 1, 8 do
						if args[i] ~= args[i + 1] then
							identical = false
							break
						end
					end
					if identical then
						args.shapeless = nil
					end
				end
			else
				-- ◼◼◼
				-- ◼◼◼
				-- ◻◼◻
				args.B3 = args[7]
			end
		elseif args[2] then
			args.A2 = args[1]
			args.B2 = args[2]
			if args[5] then
				-- ◻◻◻      ◻◻◻
				-- ◼◼◼  OR  ◼◼◼
				-- ◼◼◼      ◼◼◻
				args.C2 = args[3]
				args.A3 = args[4]
				args.B3 = args[5]
				args.C3 = args[6]
			elseif args[4] then
				-- ◻◻◻
				-- ◼◼◻
				-- ◼◼◻
				args.A3 = args[3]
				args.B3 = args[4]
			else
				-- ◻◻◻      ◻◻◻
				-- ◼◼◻  OR  ◼◼◻
				-- ◻◼◻      ◻◻◻
				args.B3 = args[3]
			end
		else
			-- ◻◻◻
			-- ◻◼◻
			-- ◻◻◻
			args.B2 = args[1]
			args.shapeless = nil
		end
		
		for i = 1, 9 do
			args[i] = nil
		end
	end
	
	-- Create recipe table, and list of ingredients
	local out, ingredientSets = recipeTable( args, {
		uiFunc = 'craftingTable',
		type = i18n.type,
		ingredientArgs = cArgVals,
		outputArgs = { 'Output' },
	} )
	
	local title = mw.title.getCurrentTitle()
	if args.nocat == '1' or title.namespace ~= 0 or title.isSubpage then
		return out
	end
	
	local categories = {}
	local cI = 1
	if args.upcoming then
		categories[cI] = '[[' .. i18n.categoryUpcoming .. ']]'
		cI = cI + 1
	end
	
	if args.type then
		categories[cI] = '[[' .. i18n.categoryRecipeType:gsub( '%$1', args.type ) .. ']]'
		cI = cI + 1
	end
	
	if args.ignoreusage ~= '1' then
		-- Create ingredient categories for DPL
		local usedNames = {}
		for _, ingredientSet in pairs( ingredientSets ) do
			for _, ingredient in pairs( ingredientSet ) do
				local name = ingredient.name
				if not ingredient.mod and not usedNames[name] and name ~= title.text then
					-- List each dye individually as they have their own pages
					if
						name == slot.i18n.prefixes.any .. ' ' .. i18n.itemDye or
						name == i18n.itemDye .. ' ' .. slot.i18n.suffixes.matching or
						name == slot.i18n.prefixes.any .. ' ' .. i18n.itemColoredDye or
						name == i18n.itemColoredDye .. ' '.. slot.i18n.suffixes.matching
					then
						if not name:find( i18n.colored ) then
							categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', i18n.itemBoneMeal ) .. ']]'
							cI = cI + 1
							usedNames[i18n.itemBoneMeal] = true
						end
						
						for _, dye in ipairs( i18n.coloredDyes ) do
							categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', dye ) .. ']]'
							cI = cI + 1
							usedNames[dye] = true
						end
					else
						-- Merge item variants which use a single page
						if
							name == slot.i18n.prefixes.any .. ' ' .. i18n.itemMushroom or
							name == i18n.itemMushroom .. ' ' .. slot.i18n.suffixes.matching or
							name == i18n.itemRedMushroom or
							name == i18n.itemBrownMushroom
						then name = i18n.itemMushroom
						elseif name == i18n.itemCharcoal then name = i18n.itemCoal
						elseif name:find( ' ' .. i18n.itemQuartzBlock .. '$' ) then name = i18n.itemBlockOfQuartz
						else
							for _, variant in pairs( i18n.variantPages ) do
								if name:find( '^' .. variant .. ' ' ) then
									name = variant
									break
								end
							end
							
							-- Remove prefixes
							for _, prefix in pairs( slot.i18n.prefixes ) do
								if name:find( '^' .. prefix .. ' ' ) then
									name = name:gsub( '^' .. prefix .. ' ', '' )
									break
								end
							end
							-- Remove suffixes
							for _, suffix in pairs( slot.i18n.suffixes ) do
								if name:find( ' ' .. suffix .. '$' ) then
									name = name:gsub( suffix .. '$', '' )
									break
								end
							end
						end
						
						if not usedNames[name] then
							categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', name ) .. ']]'
							cI = cI + 1
							usedNames[name] = true
						end
					end
				end
			end
		end
	end
	
	return out, table.concat( categories, '' )
end

return p