- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
Module:Sprite grid
来自Minecraft基岩版开发Wiki
local p = {}
function p.grid( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
local spriteModule = require( [[Module:Sprite]] )
local rows = {}
local sprite = args.nolink and spriteModule.sprite or spriteModule.link
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 mw.text.gsplit( v:gsub( '^%s-\n+', '' ):gsub( '\n+%s-$', '' ), '' ) do
local spriteName = keys[v2]
if mw.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 = mw.text.split( spriteName, '-rot' )
spriteName = spritePart[1]
if spritePart[2] then
css = 'transform:rotate(' .. spritePart[2] .. 'deg)'
end
if spriteName:find(':') then
local sheetSplit = mw.text.split( spriteName, ':')
sheet = sheetSplit[1]
spriteName = sheetSplit[2]
end
end
if spriteName and spriteName:sub(1, 1) == '+' then
sprite = spriteModule.sprite
spriteName = spriteName:sub(2)
end
local image, spriteCat
local spriteData = {
data = sheet,
spriteName,
scale = scale,
notext = 1,
nocat = args.nocat,
css = css
}
image, spriteCat = sprite(spriteData)
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; width:auto"\n| ' ..
table.concat( rows, '\n|-\n| ' ) ..
'\n|}' .. table.concat( categories )
end
return p