第一百五十六章 村庄与掠夺更新后的自定义交易

在开始本章的主要内容之前,容我先讲几句话。

看起来我已经有一两个月没更新了,但其实这些天来我一直在高强度更新。更新什么呢?以前的章节。

为什么我要去更新以前的章节呢?因为随着MC版本的更新,以及时间的流逝,加上我当时没什么写教程的经验,以上种种因素导致以前的章节出现了许多错误和疏漏之处,因此我开始进行一次大修,我称之为『本书第一次大修』。这个大修主要是对本书113章之前的内容进行修改,工程量十分的巨大。但好消息是,截止2022年7月25日,本书已经基本完成了从序言到第九十章的修改。因为改动巨大,所以我强烈推荐各位抽点时间重看一遍,特别是自计分板之后的内容,几乎每章都有重写。

大修预计将会在8月初结束,不出意外的话,届时我将会重新恢复相对比较高的更新频率。另外,如果你是在一些盗版网站上阅读本书,建议你来起点读书或红袖添香等正版网站来看,不然盗版网站可不会对之前的章节进行更新。

回到正题。

—————不华丽的分割线—————

黑夜将至,忘记带床和羊毛的你,虽然身披下界合金套装,但源自内心对黑暗的恐惧仍然使你感觉到些许害怕。行走在积雪的桦树森林中,你想起刚刚开启这个存档时,虽然挖三填一度过了危险的夜晚,但仍然一出来就被骷髅射死的窘迫场面。

低头看了看手上拿着的海洋探险家地图,再次抬头时,你看见前方似乎有一些亮光。你以为这是岩浆湖的亮光,但随着你的前进,亮光背后的房子冒了出来——前方是一个村庄!兴奋的你跑了过去,那房子越来越近。但奇怪的是,这房子后面并没有任何其他房子,直到你快要到达那里时,才发现这个房子建在悬崖上,村庄本体其实在悬崖下面。

一个村民从你旁边走过——他看起来像是这栋房子的主人。此时你冒出了个点子——趁着村民不注意,把他挤下山崖。这个想法很成功付诸实现,然后你就一觉睡到天亮。

次日清晨,你来到山崖下的村庄,手上拿着刚刚从田里摘的胡萝卜。突然有一位手中抱着绿宝石的农民兴冲冲跑到你的面前。你打开了这个农民的交易界面,他是一位没有任何经验的新手农民,提供两项交易:

22胡萝卜→1绿宝石

15甜菜根→1绿宝石

你突然来了兴趣,想要和这个村民交易亿下。很快你就把村庄里所有胡萝卜给摘了,加上你背包里原有的胡萝卜,总共215个。你和他进行了5次交易,花费110根胡萝卜拿到5颗绿宝石,村民也刚好获得足够的经验升到了『学徒』级,并附带生命恢复效果。

升到『学徒』级之后,村民新开放了两个交易:

6南瓜→1绿宝石

1绿宝石→4南瓜派

你先把剩下的胡萝卜花光,然后拿着得到的9颗绿宝石加上自己原先的3颗绿宝石买了48个南瓜派,这一项交易就没货了,村民也成功升级到『老手』级。到了老手后,村民又开放两个新的交易,且由于好感度的提升,交易开始打折。你继续和村民交易,让他继续升级.......十几分钟后,村民成功升级到了『大师』级。

升级到『大师』级别之后,村民的经验条消失,也就是无法再次升级。你也得到了一堆的交易品和大量的经验值。将交易品装入潜影箱后,你继续朝着海底神殿的方向进发。

如上文所见加上你的经验,可以得出,在村庄与掠夺更新后,村民的交易系统有这么几个特点:

①指定的村民职业具有指定的交易项目。

②有职业村民具有经验系统和等级系统。等级分为5级,从低到高分别是『新手、学徒、老手、专家和大师』。村民可以从交易中获得经验,经验可以用来提升自己的等级,每提升一次等级,升级到下一级所花费的经验值会更多。

③每个交易项目都可以用一到两种物品换取指定的物品。

④玩家也能够从交易中获得一定的经验。

⑤交易项目具有次数限制,次数限制达到后将无法使用该交易项目,需要村民前往工作站工作并补货后,交易项目才能重新开放。

⑥每个交易项目的价格都会受到该村民言论以及其他因素的影响,可能会上浮也可能会打折。

上面这六个特点其实与村民NBT标签中的这些标签有关:

①VillagerData(复合标签)

②VillagerData内的level、Xp和一个交易项目中的xp(均为Int整形)

③一个交易项目中的buy、bugB和sell(均为复合标签)

④一个交易项目中的rewardExp(Byte布尔值)

⑤Brain(复合标签)和一个交易项目中的maxUses(Int整形)

小主,

⑥Gossips(复合标签列表)和一个交易项目中的demand、specialPrice和priceMultiplier(前两者为Int整形,后者为Float单精度浮点数)

为了在村庄与掠夺更新后也能够使用NBT自定义交易,我们得先来看看村民职业方面的改变。

在1.14版本之前,村民有一级职业(Profession标签决定)和二级职业(Career标签决定)。而在1.14版本更新后,就没有什么一级二级之分,所有职业都有了单独的命名空间ID,如农民就有了minecraft:farmer。并且由于职业不再分一级二级,所以在新版本只有一个标签决定着村民的职业:VillagerData复合标签下的profession标签。

profession标签的值就是该村民的职业ID。截止Java1.19版本,原版村民14个职业的ID分别是:

minecraft:armorer——盔甲匠

minecraft:butcher——屠夫

minecraft:cartographer——制图师

minecraft:cleric——牧师

minecraft:farmer——农民

minecraft:fisherman——渔夫

minecraft:fletcher——制箭师

minecraft:leatherworker——皮匠

minecraft:librarian——图书管理员

minecraft:mason——石匠

minecraft:nitwit——傻子(这也是职业?)

minecraft:shepherd——牧羊人

minecraft:toolsmith——工具匠

minecraft:weaponsmith——武器匠

举个例子,假设我们要生成一个农民,只需要这样子:

/summon villager ~~~{VillagerData:{profession:“minecraft:farmer“}}

然后游戏就会生成一个没有任何职业的村民。等等,怎么不是农民?

因为我们没有指定工作站点。村民由于没有工作站点,所以就变成了无职业的村民。我们会在待会了解到如何解决这个问题。

VillagerData内不仅仅有profession标签用来决定村民职业,还有另外两个比较重要的标签:

level(Int整形)——村民的职业等级,新手为1级,大师为5级。如果设定的等级高于职业的最高等级,村民将不会开放新的交易项目。(没错,这就等同于1.14更新前的CareerLevel标签)

type(字符串)——村民的种类,它指定了这个村民是沙漠村民(minecraft:desert)还是平原村民(minecraft:plains)还是其他类型的村民。