Module:SpriteFile: Difference between revisions
No edit summary |
m 1 revision imported: Modules for Animated Sprites for the Crafting UI |
||
(No difference)
|
Latest revision as of 01:58, 13 July 2025
Script error: The function "docPage" does not exist.
This module implements a replacement for {{sprite}}
. It should generally be invoked directly on template pages, rather than using the sprite template.
Parent arguments are automatically merged with directly passed arguments (the latter overwriting the former) and all arguments are normalized to trim whitespace and set empty arguments to nil
.
Dependencies
See also
- Minecraft
{{BiomeSprite}}
{{BlockSprite}}
{{EffectSprite}}
{{EntitySprite}}
{{EnvSprite}}
{{ItemSprite}}
{{InvSprite}}
{{SchematicSprite}}
{{SlotSprite}}
{{SkinSprite}}
{{PersonaSprite}}
{{AchievementSprite}}
{{NewAchievementSprite}}
- Minecraft (legacy)
{{LegacyBlockSprite}}
{{LegacyEntitySprite}}
Minecraft Dungeons
{{DungeonsLevelSprite}}
{{DungeonsEnchantmentSprite}}
{{DungeonsEffectSprite}}
{{DungeonsEntitySprite}}
{{DungeonsItemSprite}}
{{DungeonsAchievementSprite}}
{{DungeonsMiscellaneousSprite}}
- Minecraft Legends
{{LegendsEntitySprite}}
{{LegendsStructureSprite}}
{{LegendsAchievementSprite}}
{{LegendsMiscellaneousSprite}}
Minecraft Story Mode
{{Interact}}
{{StoryModeAreaSprite}}
{{StoryModeEntitySprite}}
{{StoryModeItemSprite}}
{{StoryModeAchievementSprite}}
Franchise
{{AreaSprite}}
{{CharacterSprite}}
{{ObjectSprite}}
{{MovieSprite}}
- Other
{{Sprite}}
{{Sprite grid}}
{{Layered blueprint}}
{{Schematic}}
{{SchematicSprite}}
{{CommentSprite}}
{{FrontPageSprite}}
{{ProgressSprite}}
{{Tint}}
- Module:Sprite
es:Módulo:SpriteFile fr:Module:SpriteFile it:Modulo:SpriteFile ja:モジュール:SpriteFile ko:모듈:SpriteFile lzh:模組:SpriteFile pt:Módulo:SpriteFile ru:Модуль:СпрайтФайл th:มอดูล:SpriteFile uk:Модуль:СпрайтФайл zh:Module:SpriteFile
local p = {}
function p.sprite( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = mw.getCurrentFrame()
end
-- Default settings
local default = {
scale = 1,
size = 16,
align = 'text-top'
}
local id = mw.text.trim( tostring( args[1] or '' ) )
if not args.keepcase then
id = mw.ustring.lower( id ):gsub( '[%s%+]', '-' )
end
local link = ( args.link or '' )
if mw.ustring.lower( link ) == 'none' then
link = ''
elseif link ~= '' then
local linkPrefix = ( not link:find( '//' ) and args.linkprefix ) or ''
link = linkPrefix .. link
end
local scale = args.scale or default.scale
local height = ( args.height or args.size or default.size ) * scale
local width = ( args.width or args.size or default.size ) * scale
local size = width .. 'x' .. height .. 'px'
local styles = {}
if height ~= default.size then
styles[#styles + 1] = 'height:' .. height .. 'px'
end
if width ~= default.size then
styles[#styles + 1] = 'width:' .. width .. 'px'
end
local name = args.name or ''
if name == 'InvSprite' then
name = 'Invicon'
end
local file = name .. ' ' .. id .. '.png'
local altText = ''
if link == '' then
altText = file .. ': Sprite image for ' .. id .. ' in Minecraft'
end
if id == '' then
file = 'Grid Unknown.png'
altText = 'Unknown sprite image'
end
local sprite = mw.html.create( 'span' ):addClass( 'sprite-file' )
local img = '[[File:' .. file .. '|' .. size .. '|link=' .. link .. '|alt=' .. altText .. '|class=pixel-image|' .. ( args.title or '' ) .. ']]'
sprite:node( img )
local align = args.align or default.align
if align ~= default.align then
styles[#styles + 1] = '--vertical-align:' .. align
end
styles[#styles + 1] = args.css
sprite:cssText( table.concat( styles, ';' ) )
local root
local spriteText
if args.text then
if not args['wrap'] then
root = mw.html.create( 'span' ):addClass( 'nowrap' )
end
spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( args.text )
if args.title then
spriteText:attr( 'title', args.title )
end
if link ~= '' then
-- External link
if link:find( '//' ) then
spriteText = '[' .. link .. ' ' .. tostring( spriteText ) .. ']'
else
spriteText = '[[' .. link .. '|' .. tostring( spriteText ) .. ']]'
end
end
end
if not root then
root = mw.html.create( '' )
end
root:node( sprite )
if spriteText then
root:node( spriteText )
end
return tostring( root )
end
function p.link( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( 'Module:ProcessArgs' ).merge( true )
end
local link = args[1]
if args[1] and not args.id then
link = args[1]:match( '^(.-)%+' ) or args[1]
end
local text
if not args.notext then
text = args.text or args[2] or link
end
args[1] = args.id or args[1]
args.link = args.link or link
args.text = text
return p.sprite( args )
end
return p