VOOZH about

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

⇱ Module:Advancement – Minecraft Wiki


Module:Advancement

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

Called by {{AdvancementRow}} and {{Load advancements}}

[view] [edit] [history] [purge]The above documentation is transcluded from Module:Advancement/doc.
localadvancement_page='Advancement'
localp={}
localnamespace=mw.title.getCurrentTitle().nsText
localpage_title=mw.title.getCurrentTitle().text
localfull_title=mw.title.getCurrentTitle().fullText
localhtml
localframe
localfunctionsanitize(str)
-- remove anything between < and > (simple way to remove span tag)
-- return lower case alpha numeric characters and spaces
returnmw.text.trim(str:gsub('<.->',''):gsub('[^%w%s]*',''):lower())
end
-- Adds one row of advancement data to html object
localfunctionprintLine(line,is_input)
localtr=html:tag('tr'):attr('id',line.title):cssText('text-align:left')
locallink=nil
ifnotis_inputthen
link=advancement_page..'#'..line.title
end
localimage=require('Module:Aicon').aIcon(line.image,line.background,'raw',(linkor''))
tr:tag('td'):wikitext(image)
localtitle_extra=''
ifline.upcoming_verthen
title_extra=title_extra..frame:expandTemplate{title='Upcoming',args={ver=line.upcoming_ver}}
end
ifline.until_verthen
title_extra=title_extra..frame:expandTemplate{title='Until',args={ver=line.until_ver}}
end
tr:tag('td'):wikitext('[['..(linkorfull_title)..'|'..line.title..']]',title_extra)
tr:tag('td'):wikitext(line.game_description)
ifis_inputthen-- These are only displayed on the input page, not on individual content pages
tr:tag('td'):wikitext(line.parent)
end
tr:tag('td'):wikitext(line.wiki_description)
ifis_inputthen-- These are only displayed on the input page, not on individual content pages
tr:tag('td'):attr('id',line.internal_id):wikitext('<code>',line.internal_id,'</code>')
tr:tag('td'):wikitext(line.reward)
end
end
-- Puts one line of data into Bucket for later querying
localfunctionstoreLine(line)
-- Put data into Bucket
-- The only top level params that are needed is stuff that would be used as selectors
-- everything else is put into a json blob for flexibility
ifnot(namespace==''ornamespace=='Minecraft_Wiki')then
return-- only store data if we are in main or Minecraft_Wiki namespaces
end
localsanitized_title=sanitize(line.title)
-- mw.text.unstrip gets rid of parser artifacts that are put there when a <ref> tag is used.
line.wiki_description=mw.text.unstrip(line.wiki_description)
line.game_description=mw.text.unstrip(line.game_description)
bucket('advancement').put({
title=sanitized_title,
json=mw.text.jsonEncode(line)-- serializes all data into a json blob
})
end
-- Public function - Called by {{AdvancementRow}}
functionp.inputLine(_frame)
frame=_frame-- store frame for later use by expandTemplate
localargs=frame:getParent().args
-- Normalize inputs and set defaults
localline={
title=args['title'],-- name
background=args['bg']or'plain',-- background for icon
upcoming_ver=args['upcoming'],-- version where advancement will be introduced
until_ver=args['until'],-- version where advancement will be removed
image=mw.text.trim(args[1]),
game_description=mw.text.trim(args[2]),
parent=mw.text.trim(args[3]),
wiki_description=mw.text.trim(args[4]),
internal_id=mw.text.trim(args[5]or'—'),
reward=mw.text.trim(args[6]or'—')
}
html=mw.html.create()
printLine(line,true)
storeLine(line)
returnhtml
end
localfunctionprintHeader(header_text,short_header,collapsed)
ifcollapsedthen
collapsed=' collapsed'
else
collapsed=''
end
-- Can't use table tag because it will close itself, but we need to close it with footer
html=mw.html.create():wikitext('<div style="overflow: auto;"><table class="wikitable collapsible',collapsed,'" style="text-align:center">')
ifheader_textandheader_text~=''then
html:tag('th')
:attr('colspan',7)
:attr('data-description',header_text)
:wikitext(header_text)
end
localtr=html:tag('tr')
tr:tag('th'):wikitext('Icon')
tr:tag('th'):wikitext('Advancement')
tr:tag('th'):wikitext('In-game description')
ifnotshort_headerthen
tr:tag('th'):wikitext('Parent')
end
tr:tag('th'):wikitext('Actual requirements (if different)')
ifnotshort_headerthen
tr:tag('th'):wikitext('[[Resource location]]')
tr:tag('th'):wikitext('Rewards')
end
returnhtml
end
localfunctionprintFooter()
return'</table></div>'
end
-- Public function - called by {{AdvancementTable}}
functionp.table(frame)
localargs=frame:getParent().args
ifargs[1]=='foot'then
returnprintFooter()
else
returnprintHeader(args[1],false,args['collapsed'])
end
end
-- Public function - called by {{Load advancements}}
functionp.load(frame_)
frame=frame_-- store frame for later use by expandTemplate
localargs=frame:getParent().args
advancement_page=args.pageoradvancement_page
printHeader('',true,false)
localconditions={}
fornameinstring.gmatch(args[1],"[^;]+")do
conditions[#conditions+1]={'title',sanitize(name)}
end
localquery=bucket('advancement')
.select('title','json')
.where('page_name',advancement_page)
.where(bucket.Or(unpack(conditions)))
.run()
ifquerythen
fori,vinipairs(query)do
localline=mw.text.jsonDecode(v['json']or'{}')
printLine(line,false)
end
end
if#conditions~=#querythen
html:wikitext('[[Category:Missing advancement]]')
end
html:wikitext(printFooter())
returnhtml
end
returnp
Retrieved from "https://minecraft.wiki/w/Module:Advancement?oldid=3254053"

Navigation menu