1萨日朗花+10绿宝石→1章鱼哥(CareerLevel为17开启)
此时有一个叫“Liu_Huaqiang”的玩家骑着Heat And Climate(热量与气候)模组中的摩托车(黑)前来买瓜。首先他换取了一个西瓜,使该村民的CareerLevel提升到了2,开放了两个新的交易项目。随后他用闪烁的瓜皮和闪烁的西瓜兑换了2颗绿宝石,进一步使村民的该标签提升到了4,又开放了1个交易。就这样,最终当CareerLevel≥17时,村民才不再开放新的交易项目。
(然后这名玩家来了个跳劈将村民一刀砍死了)
CareerLevel标签对于自定义交易很重要。如果它的值过低,没有超过该职业最后开放的交易项目需要的CareerLevel的值,玩家在进行自定义的交易项目后村民将会开放新的交易项目。
比如某服务器腐竹使用了上面那名卖瓜的村民作为自定义村民的职业,但在编辑自定义交易项目时忘记了将CareerLevel设为大于或等于17的值。这就导致玩家前来与该村民进行交易后,村民又开放了两个新的交易项目,使玩家们很疑惑。
上面这些都是自定义交易相关联的内容,而接下来我们将要学习核心内容:Offers标签。
自定义交易最重要的NBT标签就是Offers(复合标签)和Recipes(列表)。具体的格式如下:
{Offers:{Recipes:[{一个交易项目},{一个交易项目}]}}
Offers有什么用我们并不知道,似乎去掉这个NBT标签把Recipes拿出来也丝毫没有问题,也不知道Mojang为何要在Recipes外套一个Offers。
单个交易项目有以下NBT标签:
rewardExp(Byte布尔值)——交易成功后是否提供经验球,1为提供,0为不提供。
maxUses(Int整形)——该交易项目能够使用的次数,当交易项目被刷新时会随机增加2~12。
uses(Int整形)——该交易项目已经被使用的次数。如果大于等于maxUses该交易项目将会无法使用。交易项目刷新时maxUses会随机增加,uses就再次小于maxUses,交易项目便重新开启。
buy(复合标签)——该交易项目中村民需要收购的东西,值为物品通用标签。
buyB(复合标签)——该交易项目中村民需要收购的第二个东西,值为物品通用标签。该标签不一定需要。
sell(复合标签)——该交易项目中村民出售的东西,值为物品通用标签。
举个简单的例子:
/summon villager ~~~{CareerLevel:200,Offers:{Recipes:[{rewardExp:1,maxUses:,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万次并且可以提供经验值的交易项目:用1个幻影骑士战利品(暮色森林mod)+10绿宝石换取一把锋利X的钻石剑。
现在你可以尝试自己去自定义一个交易项目。但请注意,最好新建一个txt文件并使用notepad、文本文档之类的程序打开再在里面编写指令(因为这样子可以用换行+tab键以类似于代码的样子编写,极为方便),编写完成后再复制进游戏中执行。不要在游戏内的命令方块、聊天栏内编写,因为这样子很容易出错!
村民的NBT除了上面讲到和交易有关的标签,还有另外三个并不怎么重要的标签:
Riches(Int整形)——直译为“富有的”,游戏内没有使用,会随村民收到绿宝石而上升。
Willing(Byte布尔值)——村民是否愿意繁殖,1为愿意。会在进行一次让交易项目刷新的交易后变为1。
Inventory(列表)——村民的背包,但并没有栏位之分。举个简单的例子:
/summon villager ~~~{Inventory:[{id:“minecraft:emerald“,Count:64}]}
这将会生成一名有64个绿宝石的村民。
村民的背包只有8格,所以如果这个列表内的项目超过了8格,多余的部分将会被清除(除非能够与没有超过的部分堆叠)。
现在,你知道如何自定义村民交易了吧?需要注意,单个村民具有的交易项目最多只能有16项!
喜欢Minecraft指令手册请大家收藏:(m.2yq.org)Minecraft指令手册爱言情更新速度全网最快。