More actions
No edit summary Tag: Manual revert |
No edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
-------------------------------------------------------------------------------- | |||
-- Renders a Minecraft player head using https://mc-heads.net/avatar/{name}/{size} | |||
-- Requires: Extension:ExternalImage (provides <img …> parser tag) | |||
-------------------------------------------------------------------------------- | |||
local p = {} | local p = {} | ||
-- Helper to strip “px” or other non-digits from a size string. | |||
local function cleanSize( s ) | |||
s = (s or ''):match('^%s*(%d+)') -- keep leading digits only | |||
return tonumber(s) or 64 | |||
end | |||
if name == | function p.render( frame ) | ||
return | local args = frame:getParent().args | ||
local name = mw.text.trim( args[1] or '' ) | |||
if name == '' then | |||
return 'Error: No player name provided.' | |||
end | end | ||
-- | local size = cleanSize( args[2] or '64' ) | ||
local | local title = mw.text.trim( args[3] or '' ) | ||
local overlay = ( (args.overlay or 'yes'):lower() ~= 'no' ) -- boolean | |||
if overlay | |||
url = url .. | -- Build URL | ||
local url = string.format( 'https://mc-heads.net/avatar/%s/%d', name, size ) | |||
if not overlay then | |||
url = url .. '?overlay=false' | |||
end | end | ||
-- Build | -- Build <img> via the ExternalImage tag (so it’s parsed, not escaped) | ||
local img = | local img = frame:extensionTag( | ||
'img', -- tag name supplied by the extension | |||
'', -- no inner content | |||
{ | |||
src = url, | |||
width = tostring(size) .. "px", | |||
height = tostring(size) .. "px", | |||
alt = title ~= '' and title or ('Head of ' .. name), | |||
class = "mc-player-head" | |||
} | |||
) | |||
-- Optional wrapper span so you can style all heads via .mc-player-head | |||
return tostring(img) | return tostring(img) | ||
end | end | ||
return p | return p |
Latest revision as of 18:48, 6 July 2025
Documentation for this module may be created at Module:PlayerHead/doc
--------------------------------------------------------------------------------
-- Renders a Minecraft player head using https://mc-heads.net/avatar/{name}/{size}
-- Requires: Extension:ExternalImage (provides <img …> parser tag)
--------------------------------------------------------------------------------
local p = {}
-- Helper to strip “px” or other non-digits from a size string.
local function cleanSize( s )
s = (s or ''):match('^%s*(%d+)') -- keep leading digits only
return tonumber(s) or 64
end
function p.render( frame )
local args = frame:getParent().args
local name = mw.text.trim( args[1] or '' )
if name == '' then
return 'Error: No player name provided.'
end
local size = cleanSize( args[2] or '64' )
local title = mw.text.trim( args[3] or '' )
local overlay = ( (args.overlay or 'yes'):lower() ~= 'no' ) -- boolean
-- Build URL
local url = string.format( 'https://mc-heads.net/avatar/%s/%d', name, size )
if not overlay then
url = url .. '?overlay=false'
end
-- Build <img> via the ExternalImage tag (so it’s parsed, not escaped)
local img = frame:extensionTag(
'img', -- tag name supplied by the extension
'', -- no inner content
{
src = url,
width = tostring(size) .. "px",
height = tostring(size) .. "px",
alt = title ~= '' and title or ('Head of ' .. name),
class = "mc-player-head"
}
)
-- Optional wrapper span so you can style all heads via .mc-player-head
return tostring(img)
end
return p