local p = {}
local dec2hex = require('Module:Convert base').fromDec
local sprite = require('Module:Sprite').sprite
local autolink = require('Module:Autolink').link
local id2name = require('Module:Sandbox/AllConversion2')
local alink = function(text)
if text == 'err' then
text = '-'..mw.getCurrentFrame():extensionTag('ref',"Its name varies with aux value.",{group="note",name="blank name"})
else
if text:find(' %(') then
local suff = text:sub(text:find(' %('),-1)
text = autolink({text:gsub('%(',''):gsub('%)','')})
if text:find('|') then
text = text .. suff
else
text = text .. '|' .. text .. suff
end
else
text = autolink({text})
end
text = '[['..text..']]'
end
return text
end
function p.jeBlockList()
local list = mw.loadData('module:Sandbox/AllConversion2/JE IDs').blocks
local result = {}
local name,itema,itemb,item
table.insert(result, [==[{| class="fandom-table wikitable stikitable sortable collapsible collapsed" data-description="Block IDs"
! 图片 !! [[命名空间ID]] !! 方块 !! 物品形式
]==])
for _, v in ipairs(list) do
table.insert(result, [[
|-
| height="27px"]])
name = id2name.je.getEnname(v,'block')
table.insert(result, ' | [[File:'..name..'.png|30px]] ||')
table.insert(result, mw.getCurrentFrame():extensionTag('code', v) .. '||')
table.insert(result, alink(name))
itema = id2name.je.getDirectItem(v)
itemb = id2name.je.getIndirectItem(v)
if itema==itemb then
if itema=='err' then
item = [[
| style="background-color:#ffa0a0" | 无]]
elseif itema==v then
item = '|| ID相同'
else
local variants = mw.loadData('Module:Sandbox/AllConversion2/data').jeBlockToItem2
if variants[v] then
item = [[
| style="background-color:#ccaaff" |]]..itema
else
item = [[
| style="background-color:#a0a0ff" |]]..itema
end
end
elseif itema=='err' then
item = [[
| style="background-color:#ffff80" |]]..itemb
elseif itemb=='err' then
item = [[
| style="background-color:#80ff80" | ID相同]]
else
item = [[
| style="background-color:#ffccdd" |]]..itema..'<br>'..itemb
end
table.insert(result,item)
end
table.insert(result,[[
|}]])
table.insert(result,mw.getCurrentFrame():expandTemplate({title='-'}))
return table.concat(result)
end
function p.jeItemList()
local list = mw.loadData('module:Sandbox/AllConversion2/JE IDs').items
local result = {}
local icon, name
table.insert(result, [==[{| class="fandom-table wikitable stikitable sortable collapsible collapsed" data-description="Block IDs"
! 图片 !! [[命名空间ID]] !! 物品
]==])
for _, v in ipairs(list) do
table.insert(result, [[
|-
| height="27px"]])
icon, name = id2name.je.getSpriteName(v,'item')
table.insert(result, ' |'.. sprite({data='ItemSprite',[1]=icon}) .. '||')
table.insert(result, mw.getCurrentFrame():extensionTag('code', v) .. '||')
table.insert(result, alink(name))
end
table.insert(result,[[
|}]])
table.insert(result,mw.getCurrentFrame():expandTemplate({title='-'}))
return table.concat(result)
end
function p.beLegacyItemList()
local list = require('模块:Sandbox/AllConversion2/BE_Items')
local result = {}
local id, icon, hex, text, spec
table.insert(result, [==[{| class="data-table" data-description="Item IDs"
! 图标 !! Dec !! Hex !! [[命名空间ID]] !! 物品
]==])
for k, v in ipairs(list.legacyId) do
table.insert(result, [[
|-
| height="27px"]])
if v[1]:find('-') then
table.insert(result, ' colspan="5" style="color: gray;" | '..v[1]..' (未使用)')
elseif v[2]:find('unused') then
table.insert(result, 'style="color: gray;" | || '..tostring(tonumber(v[1])+256)..' ||'..dec2hex({[1]=tonumber(v[1])+256,[2]=16})..' ||(未使用)|| ')
else
id = v[2]
id, spec = id2name.be.fromLegacy(id,'nil','yes')
icon, text= id2name.be.getSpriteName(id, 'item', 'nil', spec)
icon = sprite({data='ItemSprite',[1]=icon})
table.insert(result, ' |'..icon..' || '..tostring(tonumber(v[1])+256)..' || ')
hex = dec2hex({[1]=tonumber(v[1])+256,[2]=16})
table.insert(result, hex..' || '..v[2]..' || ')
text = alink(text)
table.insert(result, text)
end
if k % 50==0 then
table.insert(result, [==[
|}
{| class="data-table" data-description="Item IDs"
! 图标 !! Dec !! Hex !! [[命名空间ID]] !! 物品
]==])
end
end
table.insert(result,[[
|}]])
table.insert(result,mw.getCurrentFrame():expandTemplate({title='-'}))
return table.concat(result)
end
function p.beItemList(f)
local args = f
if f == mw.getCurrentFrame() then
args = f.args
end
args = args or {}
local isEdu = args[1] or args.isEdu or false
local isDev = args[2] or args.isDev or false
local lists = require('模块:Sandbox/AllConversion2/BE_Items')
local items = lists.getRuntimeIdList(isEdu, isDev)
local result = {}
local icon, hex, text
table.insert(result, [==[{| class="data-table" data-description="Item IDs"
! 图标 !! Dec !! Hex !! [[命名空间ID]] !! 物品
]==])
for k, v in ipairs(items) do
table.insert(result, [[
|-
| height="27px"]])
icon, text= id2name.be.getSpriteName(v, 'item', 'nil')
icon = sprite({data='ItemSprite',[1]=icon})
table.insert(result, ' |'..icon..' || '..tostring(tonumber(k)+256)..' || ')
hex = dec2hex({[1]=tonumber(k)+256,[2]=16})
table.insert(result, hex..' || '..v..' || ')
text = alink(text)
table.insert(result, text)
if k % 50==0 then
table.insert(result, [==[
|}
{| class="data-table" data-description="Item IDs"
! 图标 !! Dec !! Hex !! [[命名空间ID]] !! 物品
]==])
end
end
table.insert(result,[[
|}]])
table.insert(result,mw.getCurrentFrame():expandTemplate({title='-'}))
return table.concat(result)
end
function p.beBlockList()
local lists = require('模块:Sandbox/AllConversion2/BE_Blocks')
local blocks = lists.all
local result = {}
local icon, hex, text
table.insert(result, [==[
为了避免和物品的ID空间重叠,物品栏中以物品形式存在的ID大于255的方块会用负数公式来作为ID,它们用来排序的ID是 255-原ID。而空气是个例外,其物品形式的ID为-158。
]==])
table.insert(result, [==[{| class="data-table" data-description="Block IDs"
! 图标 !! Dec !! Hex !! [[命名空间ID]] !! 方块
]==])
for k, v in ipairs(blocks) do
table.insert(result, [[
|-
| height="27px"]])
if v[1]:find('-') then
table.insert(result, ' colspan="5" style="color: gray;" | '..v[1]..' (未使用)')
elseif v[2]:find('unused') then
table.insert(result, 'style="color: gray;" | || '..v[1]..' ||'..dec2hex({[1]=v[1],[2]=16})..' ||(未使用)|| ')
else
icon, text= id2name.be.getSpriteName(v[2], 'block', 'nil')
icon = sprite({data='BlockSprite',[1]=icon})
table.insert(result, ' |'..icon..' || '..v[1]..' || ')
hex = dec2hex({[1]=v[1],[2]=16})
table.insert(result, hex..' || '..v[2]..' || ')
text = alink(text)
table.insert(result, text)
end
if k % 50==0 then
table.insert(result, [==[
|}
{| class="data-table" data-description="Block IDs"
! 图标 !! Dec !! Hex !! [[命名空间ID]] !! 方块
]==])
end
end
table.insert(result,[[
|}]])
table.insert(result,mw.getCurrentFrame():expandTemplate({title='-'}))
table.insert(result, [==[
通常情况下,方块在物品栏中的物品形式的命名空间ID与方块本身的命名空间ID相同。但存在以下例外:
{|class="fandom-table wikitable stikitable sortable collapsible" data-description="Block Item IDs"
! 方块ID !! 方块物品形式的ID
]==])
local items = mw.loadData('模块:Sandbox/AllConversion2/data').beItemToBlock
for k, v in pairs(items) do
table.insert(result, [[
|-
| ]] .. v..' || ' .. k)
end
table.insert(result,[[
|}]])
return table.concat(result)
end
function p.beItemAlias()
local result = {}
local items = require('模块:Sandbox/AllConversion2/BE_Items')
table.insert(result, [==[
{|class="fandom-table wikitable stikitable sortable collapsible" data-description="Block Item IDs"
! 物品的别名ID !! 物品ID
]==])
for k, v in pairs(items.alias) do
table.insert(result, [[
|-
| ]] .. k..' || ' .. v)
end
for k, v in pairs(items.complexAlias) do
for l, w in pairs(v) do
if not (l == 'nil') then
table.insert(result, [[
|-
| ]] .. k .. ':' .. l ..' || ' .. w)
end
end
end
table.insert(result,[[
|}]])
return table.concat(result)
end
return p
Advertisement
Module:Sandbox/AllConversion2/Data Table
Advertisement