Template:InvSprite: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(Created page with "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...") |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
<includeonly>{{#invoke: spriteFile | sprite |
|||
local p = {} |
|||
| name = Invicon | scale = {{{scale|1}}} |
|||
| keepcase = 1 | align = middle | size = 32 |
|||
function p.sprite( f ) |
|||
}}</includeonly><noinclude> |
|||
local args = f |
|||
{{documentation}} |
|||
if f == mw.getCurrentFrame() then |
|||
<!-- Put categories/interwiki on the documentation page --> |
|||
args = require( 'Module:ProcessArgs' ).merge( true ) |
|||
</noinclude> |
|||
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 |
|||
if name == 'InvSprite' then |
|||
name = 'Invicon' |
|||
end |
|||
local file = name .. ' ' .. id .. '.png' |
|||
local altText = file .. ': Sprite image for ' .. id .. ' in Minecraft' |
|||
if link ~= '' then |
|||
altText = altText .. ' linking to ' .. link |
|||
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 |
Latest revision as of 02:07, 22 January 2024
This template uses Lua: |
This template displays an inventory image.
Parameters
Name | Usage |
---|---|
|name=
|
Sets the image. |
|link=
|
Sets the link for the image and the optional text. If unset or set to none , no link is addedSupports both internal and external links |
|text=
|
If set, the value is displayed as text after the image. |
|scale=
|
Sets the scale of the image. If unset the default parameter is 1 .
|
Example
{{InvSprite}}
Full list
Here is a full list of entities:
Animated icons
See Category:Animated inventory icons for a list of animated icons.
They can be used like the static icons above, just omit the Invslot
prefix and extension from the file name.
See also
- {{InvLink}}
- {{Inventory slot}}