モジュール:Materials row

提供: Minecraft Wiki
移動先: 案内検索
このモジュールには解説がありません。もしあなたがこのモジュールを使用する方法を知っている場合は、解説ページを作成してください。
local p = {}

function p.properties( frame )
    local args = frame
	if frame == mw.getCurrentFrame() then
		args = frame:getParent().args
	else
		frame = mw.getCurrentFrame()
	end
    local output = { '|-' }

	if args.th and args.th ~= "" then
		table.insert( output, '! scope=row | ' .. args.name )
	else
		table.insert( output, '| ' .. args.name )
    end

    if args.rgb then
        table.insert( output, '| style="background-color: rgb(' .. args.rgb .. ');" |   ' )
        table.insert( output, '| ' .. args.rgb )
    else
        table.insert( output, '|   ' )
        table.insert( output, '| なし' )
    end

    local bools = {
        liquid = '0',
        solid = '1',
        blockmove = '1',
        burn = '0',
        replace = '0',
        solidBlocking = '1'
    }

    -- Material subclasses
    if args.subclass == 'liquid' then
        bools.liquid = '1'
        bools.blockmove = '0'
        bools.solid = '0'
        bools.replace = '1'
        args.piston = args.piston or 'replace'
    elseif args.subclass == 'nonsolid' then
        bools.solid = '0'
        bools.blockmove = '0'
    elseif args.subclass == 'transparent' then
        bools.solid = '0'
        bools.blockmove = '0'
        bools.replace = '1'
        args.piston = args.piston or 'replace'
    end

    -- Apply args
    for _, bool in pairs{ 'liquid', 'solid', 'blockmove', 'burn', 'replace', 'solidBlocking' } do
        if args[bool] then
            bools[bool] = args[bool]
        end
    end

    -- Output!
    local yes = frame:expandTemplate{ title = 'tc', args = { 'yes' } }
    local no = frame:expandTemplate{ title = 'tc', args = { 'no' } }
    for _, bool in pairs{ 'liquid', 'solid', 'solidBlocking', 'blockmove', 'burn', 'replace' } do
        if bools[bool] == '0' then
            table.insert( output, '| ' .. no )
        else
            table.insert( output, '| ' .. yes )
        end
    end

    args.piston = args.piston or 'pushed'
    if args.piston == 'pushed' then
        table.insert( output, '| ' .. frame:expandTemplate{ title = 'tc', args = { 'はい', '押出可' } } )
    elseif args.piston == 'replace' then
        table.insert( output, '| ' .. frame:expandTemplate{ title = 'tc', args = { 'neutral', '上書き' } } )
    elseif args.piston == 'blocked' then
        table.insert( output, '| ' .. frame:expandTemplate{ title = 'tc', args = { 'いいえ', '押出不可' } } )
    else
        table.insert( output, '| ' .. frame:expandTemplate{ title = 'tc', args = { '不明', args.piston } } )
    end

    return table.concat( output, '\n' )
end

function p.blocks( frame )
    local args = frame
	if frame == mw.getCurrentFrame() then
		args = frame:getParent().args
	else
		frame = mw.getCurrentFrame()
	end
	local slot = require( 'モジュール:Inventory slot' ).slot
    local output = { '|-' }

	if args.th and args.th ~= "" then
		table.insert( output, '! scope=row | ' .. args.name )
	else
		table.insert( output, '| ' .. args.name )
    end

    if args.blocks or '' ~= '' then
        local images = {}
		for block in mw.text.gsplit( args.blocks, '%s*,%s*' ) do
			table.insert( images, slot{ block, class = 'invslot-plain' } )
		end
        table.insert( output, '| style="text-align:center" | ' .. table.concat( images ) )
    else
        table.insert( output, "| style=\"text-align:center\" |  ''すべてのブロックには適用されません。''" )
    end

    return table.concat( output, '\n' )
end

return p