MineTools我的世界 Java 版工具站

我的世界指令格式版本对照表

如果你的指令「以前能用现在报错」,答案基本都在这一页。Minecraft Java 版在 1.20.5 和 1.21.5 做了两次不向下兼容的格式大改,本文把差异整理成可对照的表格。

三个断代,一句话概括

版本区间物品数据文本组件
1.20.4 及以下 NBT 标签 item{...} JSON 字符串 '{"text":"你好"}'
1.20.5 ~ 1.21.4 数据组件 item[组件=值] JSON 字符串(组件里要加外层单引号)
1.21.5+ / 26.x 数据组件(部分组件结构简化) SNBT {text:"你好"},无外层引号

一、1.20.5:NBT 变成数据组件

这是影响最大的一次。物品身上那一坨自由格式的 tag 被拆成了一个个结构化组件,写法从大括号变成方括号:

作用1.20.4 及以下(NBT)1.20.5+(组件)
显示名称display:{Name:'...'}custom_name='...'
描述文字display:{Lore:['...']}lore=['...']
附魔Enchantments:[{id:"...",lvl:5s}]enchantments={levels:{sharpness:5}}
附魔书StoredEnchantments:[...]stored_enchantments={...}
无法破坏Unbreakable:1bunbreakable={}
耐久损耗Damage:10damage=10
自定义模型CustomModelData:1custom_model_data=1
皮革染色display:{color:16711680}dyed_color={rgb:16711680}
隐藏提示HideFlags:1各组件的 show_in_tooltip:false
自定义标记随便写在 tagcustom_data={...}
关键提醒:组件是结构化的。旧版里塞进 tag 的任意字段,现在必须放进 custom_data;写进 custom_dataDamage 之类的字段不会再被游戏机制识别。

二、1.21.5:文本组件改用 SNBT

文本组件(聊天消息、物品名、告示牌、书本)从 JSON 变成了 SNBT。表面看只是引号的变化,实际影响到所有写过 tellraw 的人:

项目1.21.4 及以下1.21.5+ / 26.x
基本写法{"text":"你好","color":"red"}{text:"你好",color:"red"}
作为组件值custom_name='{"text":"剑"}'(外层单引号)custom_name={text:"剑"}(无引号)
点击事件clickEvent:{action,value}click_event:{action,command/url/page}
悬停事件hoverEvent:{action,contents}hover_event:{action,value}
物品悬停contents 里嵌套字符串id / count / components 直接内联
附魔组件enchantments={levels:{...}}enchantments={sharpness:5}
隐藏提示各组件 show_in_tooltip统一到 tooltip_display
属性修饰符{modifiers:[...],show_in_tooltip}直接是一个列表 [...]
生物装备ArmorItems / HandItems合并为 equipment:{...}
装备掉落率ArmorDropChances 等数组drop_chances:{...}
最阴险的一条:生物装备从 ArmorItems 改成 equipment 之后,旧写法在新版本里不报错也不生效——召唤出来的怪就是光着的。检查 /summon 时要特别注意。

三、2026 年起的新版本号

Mojang 在 2025 年 12 月宣布 Java 版改用「年份.序号」编号。1.21.11(2025 年 12 月 9 日)是旧体系的最后一版,之后是 26.1(2026 年 3 月)、26.2(2026 年 6 月)。当前正式版为 26.2

指令格式方面,26.x 沿用 1.21.5 之后的规则,所以本站的版本选择器把 26.x 与 1.21.5+ 归为同一档。另外 26.1 起最低 Java 版本要求提升到了 Java 25,开服前记得先升级 JDK,参考服务器启动参数生成器

常见报错速查

报错 / 现象多半是什么原因
Unknown or incomplete command整体格式不对,比如在 1.21 上用了 {} 的物品写法
Expected key / Expected valueSNBT 与 JSON 混用,例如在 1.21.5 上还写了外层单引号
Unknown item component组件名写错,或该组件在当前版本还不存在(如 1.20.4 用 item_name
指令执行成功但没有效果字段被静默忽略:ArmorItems 在 1.21.5、Enchantments 写进了 custom_data
物品名字带斜体custom_name 默认斜体,需要显式写 italic:false
颜色被后面的文字继承文本组件数组的样式继承规则,在开头加一个空组件即可

不想背这些?

本站所有生成器都内置了版本切换,同一份配置会按版本自动输出正确的写法:

常见问题

我的指令报错“Unknown or incomplete command”,怎么办?

先确认三件事:① 指令是不是用了旧格式({} 还是 []);② 版本是不是对得上;③ 是不是在命令方块里漏写了斜杠以外的空格。绝大多数「突然全都用不了」的情况,都是 1.20.5 或 1.21.5 的格式变更导致的。

有没有自动把旧指令转成新格式的办法?

Paper 服务端会尽量自动转换含物品的旧指令,Mojang 也提供了世界存档的自动升级,但命令方块与数据包里的指令不会被自动改写。最稳妥的做法是用生成器按新版本重新生成一遍,本站的每个工具都支持版本切换。

为什么 1.21.11 之后直接跳到了 26.1?

Mojang 在 2025 年 12 月宣布 Java 版改用「年份.序号」的版本号规则,1.21.11 是旧编号体系的最后一个版本,之后依次是 26.1、26.2……目前正式版为 26.2。指令格式方面 26.x 沿用 1.21.5 之后的写法,所以本站把它们归为同一档。