Toggle search
Search
Toggle menu
Notifications
Toggle personal menu
Editing
Module:Crafting
From WoopMC
Views
Read
Edit
View history
associated-pages
Module
Discussion
More actions
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} local i18n = { type = 'Crafting', colored = 'Colored', coloredDyes = { 'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Yellow Dye', 'Lime Dye', 'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye', 'Blue Dye', 'Brown Dye', 'Green Dye', 'Red Dye', 'Black Dye', }, categoryIngredientUsage = 'Category:Recipe using $1', categoryRecipeType = 'Category:$1 recipe', itemBrownMushroom = 'Brown Mushroom', itemColoredDye = 'Colored Dye', itemDye = 'Dye', itemMushroom = 'Mushroom', itemQuartzBlock = 'Quartz Block', itemRedMushroom = 'Red Mushroom', itemStone = 'Stone', itemWhiteDye = 'White Dye', moduleArgs = [[Module:ProcessArgs]], moduleRecipe = [[Module:Recipe table]], moduleSlot = [[Module:Inventory slot]], quartzBlockVariants = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' }, stoneVariants = { 'Stone', 'Andesite', 'Granite', 'Diorite' }, variantPages = { 'Banner', 'Bed', 'Firework Star', 'Shield', 'Stained Glass Pane', 'Stained Glass', 'Stripped Log', 'Stripped Wood', 'Log', 'Planks', 'Wool', 'Wood', }, copperBlockVariants = { 'Waxed Exposed', 'Waxed Weathered', 'Waxed Oxidized', 'Unwaxed Exposed', 'Unwaxed Weathered', 'Unwaxed Oxidized', 'Exposed', 'Weathered', 'Oxidized', 'Waxed', 'Unwaxed', }, } 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.type and args.ignoreusage ~= '1' 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 = {} local function addName(name) if not usedNames[name] then -- redundant with most current code, but not with all, and might prevent other issues categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', name ) .. ']]' cI = cI + 1 usedNames[name] = true end end for _, ingredientSet in pairs( ingredientSets ) do for _, ingredient in pairs( ingredientSet ) do local name = ingredient.name if not ingredient.mod and not usedNames[name] then -- List each dye individually as they have their own pages if name == slot.i18n.prefixes.any .. ' ' .. i18n.itemDye or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemDye or name == slot.i18n.prefixes.any .. ' ' .. i18n.itemColoredDye or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemColoredDye then if not name:find( i18n.colored ) then addName( i18n.itemWhiteDye ) end for _, dye in pairs( i18n.coloredDyes ) do addName( dye ) end -- List stone variants individually as they have their own pages elseif name == slot.i18n.prefixes.any .. ' ' .. i18n.itemStone or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemStone then for _, stone in pairs( i18n.stoneVariants ) do addName( stone ) end elseif name == slot.i18n.prefixes.any .. ' ' .. i18n.itemQuartzBlock or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemQuartzBlock then for _, quartzBlock in pairs( i18n.quartzBlockVariants ) do addName( quartzBlock ) end else -- Merge item variants which use a single page if name == slot.i18n.prefixes.any .. ' ' .. i18n.itemMushroom or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemMushroom or name == i18n.itemRedMushroom or name == i18n.itemBrownMushroom then name = i18n.itemMushroom 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 copper prefixes for _, variant in pairs( i18n.copperBlockVariants ) do if name:find( '^' .. variant .. ' ' ) then name = name:gsub( '^' .. variant .. ' ', '' ) break end end end -- handle "A or B" names local orA, orB = name:match("(.-) or (.+)") if orA then addName( orA ) addName( orB ) else addName( name ) end end end end end end return out, table.concat( categories, '' ) end return p
Summary:
Please note that all contributions to WoopMC may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
WoopMC:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Template link general
(
edit
)
Template:Template link general
(
edit
)
Module:Arguments
(
edit
)
Module:Crafting/doc
(
edit
)
Module:Template link general
(
edit
)