VOOZH about

URL: https://minecraft.wiki/w/Module:Protocol_version

⇱ Module:Protocol version – Minecraft Wiki


Module:Protocol version

From Minecraft Wiki
Jump to navigation Jump to search
Documentation[view] [edit] [history] [purge]Jump to code ↴

This module implements {{Protocol version}}, {{Data version}}, {{Resource pack version}}, {{Data pack version}}, and {{Protocol version/Table}}.

The actual data used by this module is stored in Module:Protocol version/Versions.

See also

[view] [edit] [history] [purge]The above documentation is transcluded from Module:Protocol version/doc.
localp={}
localfunctiongetVersion(version,dataType,nocat)
ifnotversionornotdataTypethen
returnnil
end
dataType=dataType:lower()
localtypeDatas={
protocol={
template='Template:Protocol version#Unknown version',
category='Category:Unknown protocol version'
},
data={
template='Template:Data version#Unknown version',
category='Category:Unknown data version'
},
res={
template='Template:Resource pack version#Unknown version',
category='Category:Unknown resource pack version'
},
dat={
template='Template:Data pack version#Unknown version',
category='Category:Unknown data pack version'
}
}
-- load the values from the submodule
localdataSource=mw.loadData('Module:Protocol version/Versions')
localversionData=dataSource.versions[version]
localdefinedTypes=dataSource.types
ifversionDatathen
typeDatas.protocol.data=versionData.protocol
typeDatas.data.data=versionData.data
typeDatas.res.data=versionData.res
typeDatas.dat.data=versionData.dat
end
localresult=nil
locallinkText=nil
ifversionDatathen
iftypeDatas[dataType].datathen
iftypeDatas[dataType].data==definedTypes.unknownthen
linkText=definedTypes.unknown
else
iftype(typeDatas[dataType].data)=='number'andtypeDatas[dataType].data>=0x40000000then
result=string.format('%#x',typeDatas[dataType].data)
elseif(dataType=='res'ordataType=='dat')andtype(typeDatas[dataType].data)=='table'then
result=string.format('%s.%s',typeDatas[dataType].data.majorortypeDatas[dataType].data[1]or'0',typeDatas[dataType].data.minorortypeDatas[dataType].data[2]or'0')
else
result=typeDatas[dataType].data
end
end
else
result=definedTypes.none
end
else
linkText=definedTypes.pending
end
iflinkTextandnotresultthen
result=string.format('[[%s|%s]]',typeDatas[dataType].template,linkText)
ifnotnocatandmw.title.getCurrentTitle().namespace==0andnotmw.title.getCurrentTitle().isSubpagethen
result=result..string.format('[[%s]]',typeDatas[dataType].category)
end
end
returnresult
end
-- {{Protocol version}}
functionp.protocol(f)
localargs=f
iff==mw.getCurrentFrame()then
args=require('Module:ProcessArgs').merge(true)
end
returngetVersion(mw.text.trim(args[1]or''),'protocol',args.nocat)
end
-- {{Data version}}
functionp.data(f)
localargs=f
iff==mw.getCurrentFrame()then
args=require('Module:ProcessArgs').merge(true)
end
returngetVersion(mw.text.trim(args[1]or''),'data',args.nocat)
end
-- {{Resource pack version}}
functionp.resourcePack(f)
localargs=f
iff==mw.getCurrentFrame()then
args=require('Module:ProcessArgs').merge(true)
end
returngetVersion(mw.text.trim(args[1]or''),'res',args.nocat)
end
-- {{Data pack version}}
functionp.dataPack(f)
localargs=f
iff==mw.getCurrentFrame()then
args=require('Module:ProcessArgs').merge(true)
end
returngetVersion(mw.text.trim(args[1]or''),'dat',args.nocat)
end
-- Version table ({{Protocol version/table}})
functionp.table(f)
localargs=f
iff==mw.getCurrentFrame()then
args=require('Module:ProcessArgs').merge(true)
end
locallastVers={}
forvinmw.text.gsplit(mw.text.trim(args.lastversor''),',',true)do
v=mw.text.trim(v)
ifv~=''then
table.insert(lastVers,v)
end
end
localresult={}
localdataSource=mw.loadData('Module:Protocol version/Versions')
localdefinedTypes=dataSource.types
for_,groupinipairs(dataSource.groups)do
localinclude=true
if#args~=0then
include=false
for_,nameinipairs(args)do
ifname==group.namethen
include=true
break
end
end
end
ifincludethen
localdisplayControl={
protocol=notargs.hideprotocol,
data=group.optional.dataandnotargs.hidedata,
resPack=group.optional.resPackandnotargs.hiderespack,
datPack=group.optional.datPackandnotargs.hidedatpack,
}
ifnotdisplayControl.protocolandnotdisplayControl.dataandnotdisplayControl.resPackandnotdisplayControl.datPackthen
break
end
ifnotargs.notitlethen
table.insert(result,string.format('<h3>[[%s|%s]]</h3>',group.link,group.name))
end
ifgroup.desc~=nilthen
table.insert(result,group.desc)
end
localhtmlTable=mw.html.create('table'):addClass('wikitable sortable jquery-tablesorter')
localhtmlTableHeader=mw.html.create('tr')
htmlTableHeader:tag('th'):wikitext('Client version'):done()
ifdisplayControl.protocolthen
htmlTableHeader:tag('th'):wikitext('[[Protocol version]]'):done()
end
ifdisplayControl.datathen
htmlTableHeader:tag('th'):wikitext('[[Data version]]'):done()
end
ifdisplayControl.resPackthen
htmlTableHeader:tag('th'):wikitext('[[Resource pack format]]'):done()
end
ifdisplayControl.datPackthen
htmlTableHeader:tag('th'):wikitext('[[Data pack format]]'):done()
end
htmlTable:node(htmlTableHeader)
localrows={}
localrowFirst='<td style="text-align:center">%s</td>'
localrowMerged='<td style="text-align:center" rowspan="%s">%s</td>'
localctrl={
pv={prev=-1},
dv={prev=-1},
rp={prev=-1},
dp={prev=-1},
}
localdisplayedProtocol=''
for_,versioninipairs(group.values)do
table.insert(rows,'<tr>')
table.insert(rows,string.format('<td>[[%s]]</td>',version.name))
displayedProtocol=version.protocol
iftype(displayedProtocol)=='number'anddisplayedProtocol>=0x40000000then
displayedProtocol='0x'..string.format('%X',displayedProtocol)..'<br>('..displayedProtocol..')'
end
ifdisplayControl.protocolthen
ifversion.protocol~=ctrl.pv.prevorversion.forceSplitProtocolthen
ctrl.pv.prev=version.protocol
ctrl.pv.rowspan=1
table.insert(rows,rowFirst:format(displayedProtocol))
ctrl.pv.idx=#rows
else
ctrl.pv.rowspan=ctrl.pv.rowspan+1
rows[ctrl.pv.idx]=rowMerged:format(ctrl.pv.rowspan,displayedProtocol)
end
end
ifdisplayControl.datathen
ifversion.datathen
ifversion.data~=ctrl.dv.prevthen
ctrl.dv.prev=version.data
ctrl.dv.rowspan=1
table.insert(rows,rowFirst:format(version.data))
ctrl.dv.idx=#rows
else
ctrl.dv.rowspan=ctrl.dv.rowspan+1
rows[ctrl.dv.idx]=rowMerged:format(ctrl.dv.rowspan,version.data)
end
else
ifctrl.dv.prev~=definedTypes.nonethen
ctrl.dv.prev=definedTypes.none
ctrl.dv.rowspan=1
table.insert(rows,rowFirst:format(definedTypes.none))
ctrl.dv.idx=#rows
else
ctrl.dv.rowspan=ctrl.dv.rowspan+1
rows[ctrl.dv.idx]=rowMerged:format(ctrl.dv.rowspan,definedTypes.none)
end
end
end
ifdisplayControl.resPackthen
ifversion.resthen
localversionRes=version.res
iftype(versionRes)=='table'then
versionRes=string.format('%s.%s',versionRes.majororversionRes[1]or'0',versionRes.minororversionRes[2]or'0')
end
ifversionRes~=ctrl.rp.prevthen
ctrl.rp.prev=versionRes
ctrl.rp.rowspan=1
table.insert(rows,rowFirst:format(versionRes))
ctrl.rp.idx=#rows
else
ctrl.rp.rowspan=ctrl.rp.rowspan+1
rows[ctrl.rp.idx]=rowMerged:format(ctrl.rp.rowspan,versionRes)
end
else
ifctrl.rp.prev~=definedTypes.nonethen
ctrl.rp.prev=definedTypes.none
ctrl.rp.rowspan=1
table.insert(rows,rowFirst:format(definedTypes.none))
ctrl.rp.idx=#rows
else
ctrl.rp.rowspan=ctrl.rp.rowspan+1
rows[ctrl.rp.idx]=rowMerged:format(ctrl.rp.rowspan,definedTypes.none)
end
end
end
ifdisplayControl.datPackthen
ifversion.datthen
localversionDat=version.dat
iftype(versionDat)=='table'then
versionDat=string.format('%s.%s',versionDat.majororversionDat[1]or'0',versionDat.minororversionDat[2]or'0')
end
ifversionDat~=ctrl.dp.prevthen
ctrl.dp.prev=versionDat
ctrl.dp.rowspan=1
table.insert(rows,rowFirst:format(versionDat))
ctrl.dp.idx=#rows
else
ctrl.dp.rowspan=ctrl.dp.rowspan+1
rows[ctrl.dp.idx]=rowMerged:format(ctrl.dp.rowspan,versionDat)
end
else
ifctrl.dp.prev~=definedTypes.nonethen
ctrl.dp.prev=definedTypes.none
ctrl.dp.rowspan=1
table.insert(rows,rowFirst:format(definedTypes.none))
ctrl.dp.idx=#rows
else
ctrl.dp.rowspan=ctrl.dp.rowspan+1
rows[ctrl.dp.idx]=rowMerged:format(ctrl.dp.rowspan,definedTypes.none)
end
end
end
table.insert(rows,'</tr>')
localisLast=false
for_,vinpairs(lastVers)do
ifversion.name==vthen
isLast=true
break
end
end
ifisLast==truethen
break
end
end
htmlTable:wikitext(table.concat(rows))
table.insert(result,tostring(htmlTable))
end
end
returntable.concat(result)
end
returnp
Retrieved from "https://minecraft.wiki/w/Module:Protocol_version?oldid=3226463"

Navigation menu