You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:52:13