关灯 巨大 直达底部
亲,双击屏幕即可自动滚动
第一百五十六章 村庄与掠夺更新后的自定义交易

minecraft:weaponsmith——武器匠

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

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

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

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

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

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

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

其中的type标签不用管,除非你想要给村民弄点儿不一样的衣服。我们重点看看level标签。举个例子:

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

这将会生成一个大师级别的农民。等等,怎么不变回无职业了?

正常情况下,level字段只能由交易改变,也就是说玩家是个关键因素。新版本的村民虽然有『工作站没掉就失业』的性质,但如果游戏发现这个村民好像和其他玩家交易过,就不会让这个村民失业。在这边,由于我们改变了level标签的值,导致游戏认为这个村民已经和玩家交易过了,所以这个村民不会失业。

上面这些也是1.14更新后与自定义交易关系相当大的内容,接下来我们来看看同样也是1.14更新后自定义交易的核心:Offers标签。

Offers标签的内容其实变化并不大,我们在第一百五十四章所讲的内容可以完美适配过来,因此这里就不细讲那些重复的内容。我们就重点来看看1.14更新后,在交易项目中添加的4个新标签:

xp(Int整形)——村民每次交易能从该交易项目中获取的经验值

demand(Int整形)——价格调整因素之一:供需关系

specialPrice(Int整形)——价格调整因素之二:特惠

priceMultiplier(Float单精度浮点数)——价格调整因素之三:价格乘数

xp标签我们就不讲了,做自定义交易干嘛要管村民升级。我们重点来看看后面三个标签,这三个标签十分重要,因为它们关系到一个非常重要的东西:价格

这章没有结束,请点击下一页继续阅读!在村庄与掠夺更新后,每个交易项目的第一个收购项,也就是buy复合标签所规定的物品,其数量,也就是价格,会发生变化。所以我们有一个专门的公式来计算村民收购的第一个物品的最终数量,也就是价格的计算公式:

(此公式更新于2022年12月28日,仅适用于Java版)

当a≥0且V≥1时

e=-〔(5A + B + C - D - 5E)× p〕-〔((V-1)×0.0625+0.3)×m〕+f

y = clamp(〔a×p×m〕+m +e, 1 ,M)