我的世界指令格式版本对照表
如果你的指令「以前能用现在报错」,答案基本都在这一页。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:1b | unbreakable={} |
| 耐久损耗 | Damage:10 | damage=10 |
| 自定义模型 | CustomModelData:1 | custom_model_data=1 |
| 皮革染色 | display:{color:16711680} | dyed_color={rgb:16711680} |
| 隐藏提示 | HideFlags:1 | 各组件的 show_in_tooltip:false |
| 自定义标记 | 随便写在 tag 里 | custom_data={...} |
tag 的任意字段,现在必须放进 custom_data;写进 custom_data 的 Damage 之类的字段不会再被游戏机制识别。二、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 value | SNBT 与 JSON 混用,例如在 1.21.5 上还写了外层单引号 |
| Unknown item component | 组件名写错,或该组件在当前版本还不存在(如 1.20.4 用 item_name) |
| 指令执行成功但没有效果 | 字段被静默忽略:ArmorItems 在 1.21.5、Enchantments 写进了 custom_data |
| 物品名字带斜体 | custom_name 默认斜体,需要显式写 italic:false |
| 颜色被后面的文字继承 | 文本组件数组的样式继承规则,在开头加一个空组件即可 |
不想背这些?
本站所有生成器都内置了版本切换,同一份配置会按版本自动输出正确的写法:
- give 物品指令生成器——名称、Lore、附魔、属性、隐藏提示
- tellraw 文本组件生成器——彩色聊天、点击与悬停事件
- summon 召唤生成器——装备、血量、状态效果
常见问题
我的指令报错“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 之后的写法,所以本站把它们归为同一档。