Minecraft Wiki

The Minecraft Wiki is no longer considered as official by Microsoft and therefore several changes are required to be made, including to the wiki's logo. Please read this announcement for more information.

READ MORE

Minecraft Wiki
Advertisement
Minecraft Wiki
[view | edit | history | purge]DocumentationJump to code ↴

This module implements {{Sprite grid}}.

Dependencies[]

[view | edit | history | purge]The above documentation is transcluded from Module:Sprite grid/doc.
local p = {}
local text = require( [[Module:Text]] )
local sprite = require( [[Module:Sprite]] )

function p.grid( f )

	local args = f
	
	if f == mw.getCurrentFrame() then
		args = f:getParent().args
	end
	
	local rows = {}
	local scale = args.scale
	local size = 16 * ( scale or 1 )
	local categories = {}
	local keys = args.keys or args
	local baseSheet = args.sheet or 'BlockSprite'
	
	for k, v in ipairs( args ) do
		local row = {}
		
		for v2 in text.gsplit( v:gsub( '^%s-\n+', '' ):gsub( '\n+%s-$', '' ), '' ) do
			local spriteName = keys[v2]
			
			if text.trim( v2 ) == '' or spriteName == 'air' then
				row[#row + 1] = ' style="width:' .. size .. 'px;height:' .. size .. 'px" | '
			else
				local sheet = baseSheet
				local css
				
				if spriteName then
					local spritePart = text.split( spriteName, '-rot' )
					spriteName = spritePart[1]
					if spritePart[2] then
						css = 'transform:rotate(' .. spritePart[2] .. 'deg)'
					end
				    if spriteName:find(':') then
						local sheetSplit = text.split( spriteName, ':')
						sheet = sheetSplit[1]
							spriteName = sheetSplit[2]
					end
				end
				
				local includeLink = true
				if spriteName and spriteName:sub(1, 1) == '+' then
					includeLink = false
					spriteName = spriteName:sub(2)
				end
				
				local image, spriteCat
				local spriteData = {
					data = sheet,
					spriteName,
					scale = scale,
					notext = 1,
					nocat = args.nocat,
					css = css
				}
				
				if includeLink then
					image, spriteCat = sprite.link(spriteData)
				else
					image, spriteCat = sprite.sprite(spriteData)
				end
				
				row[#row + 1] = image
				categories[#categories + 1] = spriteCat
			end
		end
		
		rows[k] = table.concat( row, ' || ' )
	end
	
	local spacing = tonumber( args.spacing or '' ) or 0
	
	return '{| cellspacing="' .. spacing .. '" cellpadding="0" style="margin:0; line-height:0"\n| ' ..
		table.concat( rows, '\n|-\n| ' ) ..
	'\n|}' .. table.concat( categories )
	
end
return p
Advertisement