Module:Aicon

Revision as of 20:50, 29 January 2026 by Deadlydiamond98 (talk | contribs) (Created page with "local p = {} local invIcon = require( 'Module:Inventory icon' ).icon function p.aIcon( icon, background, state, link, file ) local f = mw.getCurrentFrame() local argIcon = icon or 'Grass Block' local argBackground = background or 'plain' local argState = state or 'raw' local argLink = link or '' if ( argBackground ~= 'oval' ) and ( argBackground ~= 'fancy' ) and ( argBackground ~= 'plain-mini' ) then argBackground = 'plain' end if argState ~= 'worn' then...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This module implements {{Aicon}}, supports invocations from other modules.

See template documentation for how to use this module from template.

Functions

Other modules can invoke this module.

Exported function are listed below.

aIcon

This function generates an icon instance in the style of legacy achievements or advancements in Template:JE.

Syntax: aIcon ( InvIcon, Background, State, Link, InvFile )

  • InvIcon: The name should handled by Module:Inventory icon (not effective when InvFile is specified).
  • Background: The type of achievement or advancement this icon represents. Valid values: plain, oval, fancy, and plain-mini.
  • State: The status of achievement or advancement this icon represents. Valid values: raw, worn (valid only when Background is not plain-mini).
  • Link: Optional, the link target that the icon points to. No link by default.
  • InvFile: Optional, replacing the default icon (provided by Module:Inventory icon) as an image file (omitting File: prefix).

main

This function is designed for template invocation, without extra parameter accepted, so not recomended to invoke it by other modules.

Dependencies

ja:モジュール:Aicon pt:Módulo:Aicon th:มอดูล:Aicon uk:Модуль:Aicon zh:Module:Aicon


local p = {}

local invIcon = require( 'Module:Inventory icon' ).icon

function p.aIcon( icon, background, state, link, file )
	local f = mw.getCurrentFrame()

	local argIcon = icon or 'Grass Block'
	local argBackground = background or 'plain'
	local argState = state or 'raw'
	local argLink = link or ''

	if ( argBackground ~= 'oval' ) and ( argBackground ~= 'fancy' ) and ( argBackground ~= 'plain-mini' ) then
		argBackground = 'plain'
	end
	if argState ~= 'worn' then
		argState = 'raw'
	end
	if ( argBackground == 'plain-mini' ) and ( argState ~= 'raw' ) then
		argState = 'raw'
	end

	local iconBackground = '[[File:Advancement-' .. argBackground .. '-' .. argState .. '.png|link=' .. argLink .. '|class=pixel-image]]'
	local iconContent
	if file and file ~= '' then
		iconContent = '[[File:' .. file .. '|link=' .. argLink .. '|32px|class=pixel-image]]'
	else
		iconContent = invIcon{ argIcon, link = argLink }
	end

	local outputContent = f:extensionTag{ name = 'span', content = iconContent, args = { class = 'module-Aicon-content' } }
	local outputBackground = f:extensionTag{ name = 'span', content = iconBackground .. outputContent, args = { class = 'plainlinks module-Aicon-background' } }

	return require( 'Module:TSLoader' ).call( 'Module:Aicon/styles.css' ) .. outputBackground
end

function p.main( f )
	local args = f
	local frame = mw.getCurrentFrame()
	if f == frame then
		args = require( 'Module:ProcessArgs' ).merge( true )
	end

	return p.aIcon( args[ 1 ], args[ 2 ] or args.bg, args[ 3 ] or args.state, args.link, args.file )
end

return p