Java版1.20.4自定义交易村民菜单闪退问题求助
解决方法(Java版1.20.4)
方法一:召唤时直接设置职业+自定义交易
无职业村民的交易菜单无法正常加载,这是你打开菜单就关闭的核心原因。1.14+版本中,村民的职业信息通过VillagerData标签定义,必须在召唤时同时指定,才能让交易菜单正常工作。
正确的召唤命令示例:
/summon villager ~ ~ ~ {VillagerData:{type:plains, profession:farmer, level:2}, Offers:{Recipes:[{buy:{id:dirt,Count:6b}, sell:{id:diamond_block,Count:64b}, maxUses:9999999}]}}
核心注意点:
VillagerData内的profession需为有效职业(如farmer、librarian),type对应生物群系(如plains、desert),level为职业等级(1-5)- 物品数量需添加
b后缀(Java版NBT中整数需标记为字节,避免兼容性问题) - 召唤完成后村民直接拥有职业,交易菜单可正常打开,自定义交易不会被清空
方法二:给已有职业的村民添加自定义交易
如果已经通过放置堆肥桶让村民获得了职业(此时交易已被清空),可以用data命令修改其交易列表:
覆盖原有交易列表
站在村民旁执行以下命令,直接替换所有交易:
/data merge entity @e[type=villager,limit=1,sort=nearest] {Offers:{Recipes:[{buy:{id:dirt,Count:6b}, sell:{id:diamond_block,Count:64b}, maxUses:9999999}]}}
追加新交易(保留原有交易)
如果不想清空村民现有交易,可执行以下命令追加自定义交易:
/data modify entity @e[type=villager,limit=1,sort=nearest] Offers.Recipes append value {buy:{id:dirt,Count:6b}, sell:{id:diamond_block,Count:64b}, maxUses:9999999}
注意:@e[type=villager,limit=1,sort=nearest]会选中离你最近的1个村民,确保命令只作用于目标对象。
问题根源说明
你之前的召唤命令缺少VillagerData标签,导致村民处于无职业状态,游戏无法正常渲染交易菜单,因此出现打开即关闭的情况。而放置堆肥桶会触发村民职业初始化流程,自动清空原有交易数据,所以必须通过data命令后续修改,或在召唤时直接指定职业与交易。
内容的提问来源于stack exchange,提问作者Laszlo Pav
相关产品推荐
相关产品推荐

