Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  –  Noch keinen Server gefunden? Es gibt einen Wiki-Server

Hello there! We are conducting a survey to better understand the user experience in making a first edit. If you have ever made an edit on Gamepedia, please fill out the survey. Thank you!

Modul:BlockGrid

Aus Minecraft Wiki
Wechseln zu: Navigation, Suche
[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 '{| 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:Grid' ).cell
	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