第一百五十四章 村莊與掠奪更新前的自定義交易
林地府邸和海底神殿這兩個遺跡,一般都生成在幾千格遠的地方,如果想要單獨靠運氣尋找那簡直是大海撈針。如果有作弊的話用/locate也就罷了,沒開作弊或者是在服務器內(nèi)找,那就必須得找到身著白色服裝的制圖師換取林地探險家地圖和海洋探險家地圖。
現(xiàn)在,你找到了一個制圖師村民,他希望能用1顆綠寶石換取你的36張紙。你早有準備,與村民進行了一場交易,并獲得了些許經(jīng)驗值。村民看起來很高興,頭上冒出綠色的粒子并伴隨生命提升效果給你開了一個新的交易項目:用一個指南針換取一顆綠寶石。
為了不死圖騰,你又向村民換取了一顆綠寶石。村民更加開心了,繼續(xù)給你開了一個新的交易........最終,你成功用44顆綠寶石加上兩個指南針換取了那兩張你夢寐以求的地圖。
后來,其他玩家也發(fā)現(xiàn)了這個制圖師。其中一個玩家攜帶了大量紙張,將這個村民的第一個交易項目換沒了。但當他與該村民進行其他交易項目時,那個沒貨的交易項目又有貨了。
如你所見,村民的交易系統(tǒng)有以下幾個特點:
①指定的村民職業(yè)具有指定的交易項目
?、诮灰醉椖繒鸩介_放,直到?jīng)]有項目可開放為止
?、垡粋€交易項目可以用一到兩種物品換取指定的物品。
?、芙灰醉椖渴褂煤罂梢垣@得一些經(jīng)驗
?、萁灰醉椖烤哂写螖?shù)限制,次數(shù)限制達到后將無法使用該交易項目,需要與村民進行其他交易后才會重新開放。
上面這幾個特點分別對應村民NBT標簽中的:
?、貾rofession和Career(均為Int整形)
?、凇狢areerLevel(Int整形)
?、邸粋€交易項目中的buy、bugB和sell(均為復合標簽)
?、堋粋€交易項目中的rewardExp(Byte布爾值)
?、荨粋€交易項目中的maxUses(Int整形)
為了能夠用NBT自定義村民交易,我們首先需要注意的是Profession和Career標簽,這兩個NBT標簽的作用分別是:
Profession——確定村民的一級職業(yè),即村民的衣服是什么顏色。0為棕色(農(nóng)民),1為白色(圖書管理員),2為紫色(牧師),3為棕色+黑色(鐵匠),4為棕色+白色(屠夫)5為綠色(傻子)。如果不填該項游戲會隨機賦予村民一級職業(yè)。
Career——確定村民的二級職業(yè),即村民的具體職業(yè)。如果沒有這項或這項為0,當玩家打開該村民的交易菜單時游戲?qū)⑿略摯迕竦穆殬I(yè)并重置CareerLevel為1。如果不填該項游戲會隨機賦予村民二級職業(yè)。
村民的二級職業(yè)ID具體如下:
?棕色長袍(農(nóng)民)——1為農(nóng)民,2為漁夫,3為牧羊人,4為制箭師;
?、侔咨L袍(圖書管理員)——1為圖書管理員,2為制箭師;
?、谧仙L袍(牧師)——1為牧師;
?、圩厣?黑色(鐵匠)——1為盔甲商,2為工具商,3為武器商;
?、茏厣?白色(屠夫)——1為屠夫,2為皮匠;
?、菟{色長袍(傻子)——1為傻子。
需要注意,在Java1.13版本中,工具商和武器商的ID進行了交換。也就是在1.13版本中鐵匠下面的二級職業(yè)ID變?yōu)榱恕?為盔甲商,2為武器商,3為工具商”。
舉個很簡單的例子:
/summon minecraft:villager ~~~{Profession:0,Career:1}
這條指令將會生成一名普普通通的農(nóng)民。
CareerLevel直譯為“交易水平”。它的作用很簡單,就是控制村民開放的交易項目的多少,基本上就相當于村莊更新后的“新手”、“老手”、“大師”各種村民級別,每當完成一次交易就刷新并增加一些。和Career標簽一樣,如果為0就會重新刷新該村民的職業(yè)將CareerLevel設為1。
舉個簡單的例子,假設有一個農(nóng)民,游戲給他的交易項目有:
2綠寶石→1西瓜(CareerLevel為1開啟)
1閃爍的瓜皮→1綠寶石(CareerLevel為2開啟)
1閃爍的西瓜→1綠寶石(CareerLevel為2開啟)
10綠寶石→1大鵬(CareerLevel為4開啟)
1水果攤+1綠寶石→1生瓜蛋子(CareerLevel為6開啟)
2猹→1綠寶石(CareerLevel為10開啟)
1秤→5綠寶石(CareerLevel為12開啟)
1指南針+15西瓜→30綠寶石(CareerLevel為13開啟)
1薩日朗花+10綠寶石→1章魚哥(CareerLevel為17開啟)
此時有一個叫“Liu_Huaqiang”的玩家騎著Heat And Climate(熱量與氣候)模組中的摩托車(黑)前來買瓜。首先他換取了一個西瓜,使該村民的CareerLevel提升到了2,開放了兩個新的交易項目。隨后他用閃爍的瓜皮和閃爍的西瓜兌換了2顆綠寶石,進一步使村民的該標簽提升到了4,又開放了1個交易。就這樣,最終當CareerLevel≥17時,村民才不再開放新的交易項目。
?。ㄈ缓筮@名玩家來了個跳劈將村民一刀砍死了)
CareerLevel標簽對于自定義交易很重要。如果它的值過低,沒有超過該職業(yè)最后開放的交易項目需要的CareerLevel的值,玩家在進行自定義的交易項目后村民將會開放新的交易項目。
比如某服務器腐竹使用了上面那名賣瓜的村民作為自定義村民的職業(yè),但在編輯自定義交易項目時忘記了將CareerLevel設為大于或等于17的值。這就導致玩家前來與該村民進行交易后,村民又開放了兩個新的交易項目,使玩家們很疑惑。
上面這些都是自定義交易相關聯(lián)的內(nèi)容,而接下來我們將要學習核心內(nèi)容:Offers標簽。
自定義交易最重要的NBT標簽就是Offers(復合標簽)和Recipes(列表)。具體的格式如下:
{Offers:{Recipes:[{一個交易項目},{一個交易項目}]}}
Offers有什么用我們并不知道,似乎去掉這個NBT標簽把Recipes拿出來也絲毫沒有問題,也不知道Mojang為何要在Recipes外套一個Offers。
單個交易項目有以下NBT標簽:
rewardExp(Byte布爾值)——交易成功后是否提供經(jīng)驗球,1為提供,0為不提供。
maxUses(Int整形)——該交易項目能夠使用的次數(shù),當交易項目被刷新時會隨機增加2~12。
uses(Int整形)——該交易項目已經(jīng)被使用的次數(shù)。如果大于等于maxUses該交易項目將會無法使用。交易項目刷新時maxUses會隨機增加,uses就再次小于maxUses,交易項目便重新開啟。
buy(復合標簽)——該交易項目中村民需要收購的東西,值為物品通用標簽。
buyB(復合標簽)——該交易項目中村民需要收購的第二個東西,值為物品通用標簽。該標簽不一定需要。
sell(復合標簽)——該交易項目中村民出售的東西,值為物品通用標簽。
舉個簡單的例子:
/summon villager ~~~{CareerLevel:200,Offers:{Recipes:[{rewardExp:1,maxUses:150000,buy:{Count:1,id:“twilightforest:trophy“,Damage:4},buyB:{Count:10,id:“minecraft:emerald“},sell:{Count:1,id:“minecraft:diamond_sword“,tag:{ench:[{id:16,lvl:10}]}}}]}}
?。ㄉ厦孢@條指令適用于Java1.13之前的版本)
看起來這個很復雜,但如果你能夠把它展開再看就極為簡單了。
這條指令將會生成一名CareerLevel為200的村民,他有一個可以使用15萬次并且可以提供經(jīng)驗值的交易項目:用1個幻影騎士戰(zhàn)利品(暮色森林mod)+10綠寶石換取一把鋒利X的鉆石劍。
現(xiàn)在你可以嘗試自己去自定義一個交易項目。但請注意,最好新建一個txt文件并使用notepad、文本文檔之類的程序打開再在里面編寫指令(因為這樣子可以用換行+tab鍵以類似于代碼的樣子編寫,極為方便),編寫完成后再復制進游戲中執(zhí)行。不要在游戲內(nèi)的命令方塊、聊天欄內(nèi)編寫,因為這樣子很容易出錯!
村民的NBT除了上面講到和交易有關的標簽,還有另外三個并不怎么重要的標簽:
Riches(Int整形)——直譯為“富有的”,游戲內(nèi)沒有使用,會隨村民收到綠寶石而上升。
Willing(Byte布爾值)——村民是否愿意繁殖,1為愿意。會在進行一次讓交易項目刷新的交易后變?yōu)?。
Inventory(列表)——村民的背包,但并沒有欄位之分。舉個簡單的例子:
/summon villager ~~~{Inventory:[{id:“minecraft:emerald“,Count:64}]}
這將會生成一名有64個綠寶石的村民。
村民的背包只有8格,所以如果這個列表內(nèi)的項目超過了8格,多余的部分將會被清除(除非能夠與沒有超過的部分堆疊)。
現(xiàn)在,你知道如何自定義村民交易了吧?需要注意,單個村民具有的交易項目最多只能有16項!