预设

物品预设

Minecraft 1.20.5+ 物品组件 Give 命令

Java 1.20.5 改变了物品命令语法的核心。本文针对的是确切的迁移搜索意图:如何用物品组件来表达 /give 命令,而不是直接复制旧版 NBT 例子。

预设结果

一条现代的组件风格 /give 命令,可在迁移前与较旧的 Java 物品 NBT 做对比。

输出

Java 1.20.5+ 组件输出

/give @p minecraft:diamond_sword[custom_name={text:"Component Blade",color:"gold",italic:false},lore=[{text:"Built with Java 1.20.5+ item components",color:"gray",italic:false}],enchantments={"minecraft:sharpness":5},unbreakable={},custom_data={component_demo:1}] 1
Too long for Minecraft chat

The longest command line is 265 characters, 9 over the 256-character chat input limit. Pasting it into chat can truncate the line and make Minecraft report a syntax error even when the generated command is valid.

  • Use a Command Block: run /give @s command_block, place it, then paste this command into the block command field.
  • Use a .mcfunction for a reusable datapack: save the line without the leading slash at saves/<world>/datapacks/<pack>/data/<ns>/function/<name>.mcfunction with a minimal pack.mcmeta, run /reload, then run /function <ns>:<name>. Do not paste .mcfunction content into chat.

预设截图

用于 Minecraft 1.20.5 物品组件 /give 命令文章的 NBTForge 工作台状态,包括可见控件与生成的输出。

构建预设

  1. 编辑物品之前,先把版本选择器设为 Java 1.20.5 或更新版本。
  2. 在 Give 工作台里添加 custom_name、描述文本 (lore)、附魔、unbreakable 与 custom_data。
  3. 如果你正在迁移旧地图,请把输出与 Java 1.20.4 指南做对比。
  4. 确认目标服务器版本之后,再复制组件版输出。

1.20.4 之后改变了什么

在旧版命令里被存进 NBT 的许多物品细节,现在都改成以物品组件的形式书写了。其中包含 custom_name、描述文本 (lore)、附魔、unbreakable 与 custom_data 这些常见字段。

NBTForge 始终让版本选择器保持可见,因为这是一个语法选择,而不是装饰性的格式选择。

  • 如果要旧版 NBT 输出,请使用 1.20.4 或更早。
  • 如果要组件版输出,请使用 1.20.5+。
  • 当要迁移整个 Command Pack 时,请使用 Java 物品组件指南。

迁移工作流程

请从旧的物品意图出发,而不是从旧的命令字符串出发。在 Give 工作台里把这件物品重新搭出来,设置现代版本,然后再对比生成的输出。

如果这件物品出现在战利品表、商店或召唤生物的 equipment 里,请把重写后的组件版物品保存到 Project,让其他命令都引用同一份源头。

把预设嵌入真实项目

请把 Minecraft 1.20.5+ 物品组件 Give 命令当作一个需要测试的起点,而不仅仅是一条复制出去的字符串。当输出第一次跑通后,用清晰的 Project 名称把它保存下来,写明目标 Minecraft 版本,并让这个预设紧挨着相关的设置类命令(例如记分板、boss bar、战利品或重置行)。

在把这个预设发布到地图、服务器或 Command Pack 之前,请用复制出去的成品来运行它,而不是只在实时工作台上跑一遍。这样才能抓出缺失的依赖、过期的选择器、错误的版本选择,以及那些只是因为本地测试状态恰好存在才看似生效的命令。

  • 在共享命令时把选中的版本类别与版本一起带上。
  • 在使用伤害、击杀、清除或传送之前,先用无害命令测试选择器。
  • 把长命令搬进 Project 或函数式工作流,而不是粘贴到聊天里。
  • 在改动实体、物品组件、passenger 或数据包资源之后,重新检查警告。

FAQ

我可以把旧的 NBT /give 命令粘进 1.20.5+ 的世界吗?

有些旧例子会失败或表现不一样。当目标世界是 Java 1.20.5 或更新版本时,请把这件物品用组件重新构建一遍。

custom_data 和旧的自定义 NBT 是一回事吗?

它是当前 Java 物品输出中用于稳定承载自定义物品数据的现代组件。

这个预设什么时候应该成为 Command Pack 的一部分?

当输出依赖于设置行、重置命令、战利品资源、记分板状态或可重复测试时,请把它作为一条 Command Pack 条目来使用。单条安全命令仍然可以直接从输出处复制。

打开这个工作流

从相关 Give 工作台开始,然后按你的世界调整预设字段。