VOOZH about

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

⇱ Module:Get trade info – Minecraft Wiki


Module:Get trade info

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

See also

[edit source]
[view] [edit] [history] [purge]The above documentation is transcluded from Module:Get trade info/doc.
localp={}
localnamespace=mw.title.getCurrentTitle().nsText
localsprite=require("Module:SpriteFile")
localtradeTable=require("Module:TradeTable")
localrefUsed=false
localnote_list={}-- Track note names that have already been used, so we don't output them twice
functionp.match_wanted(frame)
returnp._main(frame:getParent().args,'wanted_item')
end
functionp.match_given(frame)
returnp._main(frame:getParent().args,'given_item')
end
functionp.match_profession(frame)
returnp._main(frame:getParent().args,'profession',true)
end
localfunctionmakeTradeLine(data,hideProfession,professionRowspan,levelRowspan,hideXP,hideMulti)
localprofession=data['profession']
locallevel=data['level']
localjava_probability=data['java_probability']
localbedrock_probability=data['bedrock_probability']
localgiven_item=data['given_item']
localgiven_quant=data['given_quant']
localgiven_sprite=data['given_sprite']
localwanted_item=data['wanted_item']
localwanted_quant=data['wanted_quant']
localwanted_sprite=data['wanted_sprite']
localwanted_item_2=data['wanted_item_2']
localwanted_quant_2=data['wanted_quant_2']
localwanted_sprite_2=data['wanted_sprite_2']
localgiven_note=data['given_note']
localgiven_note_text=data['given_note_text']
localwanted_note=data['wanted_note']
localwanted_note_text=data['wanted_note_text']
localprice_multiplier=data['price_multiplier']
localmax_trades=data['max_trades']
localvillager_xp_gain=data['villager_xp_gain']
ifnotprofessionthen
mw.log("Error empty profession")
mw.logObject(data)
returnnil
end
localret=mw.html.create('tr'):css('text-align','center')
locallevel_sort_key=0
iflevel=='Novice'thenlevel_sort_key=1end
iflevel=='Apprentice'thenlevel_sort_key=2end
iflevel=='Journeyman'thenlevel_sort_key=3end
iflevel=='Expert'thenlevel_sort_key=4end
iflevel=='Master'thenlevel_sort_key=5end
-- Wandering Trader
iflevel=='Purchase'thenlevel_sort_key=6end
iflevel=='Special'thenlevel_sort_key=7end
iflevel=='Ordinary'thenlevel_sort_key=8end
ifnothideProfessionandprofessionRowspan>0then
ret:tag('td'):css('text-align','left')
:attr('rowspan',professionRowspan)
:wikitext(sprite.link({profession,name='EntitySprite'}))
end
iflevelRowspan>0then
locallevel_cell=ret:tag(hideProfessionand'th'or'td')
:css('text-align',hideProfessionand'center'or'left')
:attr('rowspan',levelRowspan)
:attr('data-sort-value',level_sort_key)
ifprofession~='Wandering Trader'then
level_cell:wikitext('[[File:Villager badge ',level,'.png|link=|16x16px]] ')
end
level_cell:wikitext(level)
end
ret:tag('td'):wikitext(java_probability)
ret:tag('td'):wikitext(bedrock_probability)
localwanted=ret:tag('td')
wanted:wikitext(tradeTable.formatItemOutput(wanted_item,wanted_quant,wanted_item_2,wanted_quant_2,wanted_sprite,wanted_sprite_2))
ifwanted_note_textthen
refUsed=true-- Used to set references at footer
ifwanted_note~=nilandnote_list[wanted_note]==nilthen
note_list[wanted_note]=wanted_note_text
end
wanted:wikitext(mw.getCurrentFrame():extensionTag{name='ref',content=wanted_note_text,args={name=wanted_note,group='t'}})
end
localgiven=ret:tag('td'):wikitext(tradeTable.formatItemOutput(given_item,given_quant,nil,nil,given_sprite))
ifgiven_note_textthen
refUsed=true-- Used to set references at footer
ifgiven_note~=nilandnote_list[given_note]==nilthen
note_list[given_note]=given_note_text
end
given:wikitext(mw.getCurrentFrame():extensionTag{name='ref',content=given_note_text,args={name=given_note,group='t'}})
end
ret:tag('td'):wikitext(max_tradesor'—')
ifnothideXPthen
ret:tag('td'):wikitext(villager_xp_gainor'—')
end
ifnothideMultithen
ret:tag('td'):wikitext(price_multiplieror'—')
end
returnret:done()
end
functionp._main(args,primary,hideProfession)
-- Get the trading data from bucket
localb=bucket('trade')
.select('json')
localhideXP=(args.hide_xpandtrue)orfalse
localhideMulti=(args.hide_multiplierandtrue)orfalse
localwheres={}
ifargs.namethen
table.insert(wheres,{primary,args.name})
elseifnotargs[1]then
table.insert(wheres,{primary,mw.title.getCurrentTitle().text})
else
for_,arginipairs(args)do
table.insert(wheres,{primary,arg})
end
end
b.where(bucket.Or(wheres))
localdata=b.run()
fori,bucketRowinipairs(data)do
data[i]=mw.text.jsonDecode(bucketRow.jsonor'{}')
end
-- Create the html table to display results
localtradeTable=mw.html.create('table'):addClass('wikitable sortable autosort=1,a'):css('text-align','center')
-- Generate the table header
header=tradeTable
:tag('tr')
:tag('th'):wikitext(hideProfessionand'Level'or'Villager'):attr('rowspan',2):attr('colspan',hideProfessionand1or2)
:tag('th'):wikitext('Probability'):attr('colspan',2)
:tag('th'):wikitext('Villager wants'):attr('rowspan',2)
:tag('th'):wikitext('Player receives'):attr('rowspan',2)
:tag('th'):wikitext('Trades in<br>stock'):attr('rowspan',2)
ifnothideXPthen
header:tag('th'):wikitext('Villager<br>experience'):attr('rowspan',2)
end
ifnothideMultithen
header:tag('th'):wikitext('Price<br>multiplier'):attr('rowspan',2)
end
tradeTable
:tag('tr')
:tag('th'):wikitext("''[[JE]]''")
:tag('th'):wikitext("''[[BE]]''")
-- If there are no results, add an error category
if#data==0andnamespace==''then
tradeTable:node():wikitext('[[Category:Empty trade info]]')
end
-- Merge rows in the first two cells if appropriate:
-- Traverse the list in reverse to set the rowspans for each row
localrowspansProfession={}
localrowspansLevel={}
fori=1,#datado
localj=#data+1-i
ifj>1then
ifdata[j-1]['profession']==data[j]['profession']then
rowspansProfession[j-1]=(rowspansProfession[j]or1)+1
rowspansProfession[j]=0
ifdata[j-1]['level']==data[j]['level']then
rowspansLevel[j-1]=(rowspansLevel[j]or1)+1
rowspansLevel[j]=0
end
end
end
end
-- Generate all the table rows and insert them into the table
fori,tradeDatainipairs(data)do
localprofessionRowspan=hideProfessionand0orrowspansProfession[i]or1
locallevelRowspan=rowspansLevel[i]or1
localrow=makeTradeLine(tradeData,hideProfession,professionRowspan,levelRowspan,hideXP,hideMulti)
tradeTable:node(row)
end
returnmw.html.create():wikitext(tostring(tradeTable)..mw.getCurrentFrame():extensionTag{name="references",args={group='t'}})
end
returnp
Retrieved from "https://minecraft.wiki/w/Module:Get_trade_info?oldid=3336046"

Navigation menu