Minecraft Wiki

Das Minecraft-Wiki wird von Microsoft nicht mehr als offiziell angesehen, weshalb einige Änderungen vorgenommen werden müssen, unter anderem am Logo des Wikis. Bitte lese diese Ankündigung für mehr Informationen.

MEHR ERFAHREN

Minecraft Wiki
Advertisement
Minecraft Wiki
[Lesen | Bearbeiten | Versionen | Aktualisieren]Buch und Feder.png DokumentationSpringe zum Quelltext ↴Lua logo.svg Zum Gebrauch von Lua-Modulen siehe die Modul-Hilfe.

Das Modul BlockGrid stellt Funktionen zur Verfügung, die zur Darstellung von Block-Sprite-Schemazeichnungen dienen:

  • grid: Darstellung von Block-Sprites in einem Rechteck
  • grid2: Darstellung von Block-Sprites in einem Grid2

Intern wird das Sprite-Modul mit den Block-IDs verwendet, um ein einzelnes Block-Sprite innerhalb des Rechtecks anzuzeigen.

Aufruf

Die Parameter des Aufrufers werden automatisch übergeben. Das sind:

Anwendung

Liste der Vorlagen, die dieses Modul verwenden


local p = {}
local text = require( [[Modul:Text]] )
local sprite = require( [[Modul:Sprite]] ).link

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
	
	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 = 'BlockSprite'
				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 >= 12 and spriteName:sub( 1, 11 ):lower() == 'gegenstand:') or (#spriteName >= 6 and spriteName:sub( 1, 5 ):lower() == 'item:') then
						sheet = 'GegenstandSprite'
						spriteName = spriteName:sub( 6 )
					else
						if #spriteName >= 8 and (spriteName:sub( 1, 7 ):lower() == 'objekt:' or spriteName:sub( 1, 7 ):lower() == 'entity:') then
							sheet = 'ObjektSprite'
							spriteName = spriteName:sub( 8 )
						end
					end
				end
				
				local image, spriteCat = sprite{
					data = sheet,
					spriteName,
					scale = scale,
					link = 'none',
					notext = 1,
					nocat = args.nocat,
					css = css
				}
				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 '{| class="block-grid" cellspacing="' .. spacing .. '" cellpadding="0" style="margin:0; line-height:0"\n| ' ..
		table.concat( rows, '\n|-\n| ' ) ..
	'\n|}' .. table.concat( categories )
	
end

function p.grid2( f )
	local args = f:getParent().args
	local rows = {}
	local cell = require( 'Modul:Inventar slot' ).slot
	local cellArgs = {'',title='none',link='none'}
	
	for k, v in ipairs( args ) do
		local row = {}
		for v2 in mw.text.gsplit( v:gsub( '^%s-\n+', '' ):gsub( '\n+%s-$', '' ), '' ) do
			if args[v2] == 'Luft' then
				cellArgs[1] = ''
			else
				cellArgs[1] = args[v2]
			end	
			table.insert( row, cell( cellArgs ) )
		end
		
		table.insert( rows, table.concat( row, ' || ' ) )
	end
	
	return '{| cellspacing="0" cellpadding="0" style="line-height:0"\n| ' .. table.concat( rows, '\n|-\n| ' ) .. '\n|}'
end

return p
Advertisement