预设

物品预设

Java 1.20.4 物品 NBT 预设指南

Java 1.20.4 物品 NBT 预设指南如今是一套完整的 Give 工作流程,而不再是模板化的命令说明。当地图或服务器有意保留 Java 1.20.4 或更早的语法时,请使用这个预设。它给作者提供了一个面向旧版物品 NBT 的安全审阅界面,又不会让这种输出污染到 Java 1.20.5+ 的组件命令。本文把设置字段、输出审阅、Project 归位与结果捕获放在一起呈现,让命令在成为地图设置、事件触发器或可复用 Command Pack 一部分之前,能被轻松审查。真正有用的工作流是对比。请把目标版本、显示名称、描述文本 (lore)、附魔、unbreakable 标记和旧版 NBT 负载都保持可见,这样当 Project 日后迁移到组件时代的 Minecraft 版本时,命令就可以被重新构建出来。

预设结果

一条旧版 Java 1.20.4 `/give` 命令,与现代组件输出保持彼此独立。

输出

旧版 Java 1.20.4 物品 NBT 命令

/give @p minecraft:diamond_sword{display:{Name:'{"text":"Legacy Blade","color":"gold","italic":false}',Lore:['{"text":"Java 1.20.4 NBT item","color":"gray","italic":false}']},Enchantments:[{id:"minecraft:sharpness",lvl:5s}],Unbreakable:1b,nbtforge:{legacy_item:1b}} 1
Too long for Minecraft chat

The longest command line is 267 characters, 11 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.

预设截图

从定义此预设状态的 Give 控件开始。
第二张截图突出展示改变玩家可见行为的设置或配套命令。
输出截图在进入 Project 之前,让最终命令或命令对保持可见。

构建预设

  1. 打开 Give 工作台,把目标版本设为 Java 1.20.4。
  2. 重新表达这件物品的意图,而不是闷头改一条复制来的命令。
  3. 添加自定义名称、描述文本 (lore)、附魔以及耐久行为。
  4. 把旧版 NBT 输出和现代组件输出分开来审阅。
  5. 把这个旧版变体保存到 Project,并在标题里写清楚目标版本。
  6. 在把同一张地图迁移到 Java 1.20.5 或更高版本之前,先规划好用组件重写这条命令的方案。

为什么这个 Give 预设应该归入 Project

当地图或服务器有意保留 Java 1.20.4 或更早的语法时,请使用这个预设。它给作者提供了一个面向旧版物品 NBT 的安全审阅界面,又不会让这种输出污染到 Java 1.20.5+ 的组件命令。

真正有用的工作流是对比。请把目标版本、显示名称、描述文本 (lore)、附魔、unbreakable 标记和旧版 NBT 负载都保持可见,这样当 Project 日后迁移到组件时代的 Minecraft 版本时,命令就可以被重新构建出来。一条复制出去的命令,只有在其周围的假设全部可见时才真正有用:选择器范围、世界状态、数据包内部顺序,以及最终会被粘贴进 Minecraft 的确切输出。请把这个预设当作一个检查点,让这些细节都能在命令离开 NBTForge 之前被审视一遍。

整组示意图正是围绕这种审视方式构建的。第一张截图展示工作台状态,第二张截图调出会改变玩家面向行为的字段或配套模块,输出截图则让最终命令或命令对保持可见。当预设具备可见结果时,游戏内截图会在一个已恢复的测试世界中确认相同的思路,而不是依靠通用覆盖层。

测试与范围检查

不要把这种旧版物品 NBT 直接粘进现代组件工作流里,并假定它能干净地迁移。请把 1.20.4 的命令当作意图来源,等目标服务器发生变化时,再用组件把它重写一遍。

用范围狭窄的选择器和干净的世界状态先做一次冒烟测试。环境、工具、传送和反馈类命令看起来无害,却往往会影响所有玩家或整个世界。先确认命令只改变了你期望的状态,再把准确的输出保存到对应的设置行或后续行旁边,让它的存在理由一目了然。

如果命令会成为函数文件或命令方块链的一部分,请测试复制出去的成品,而不是只验证实时的工作台状态。这样才能抓出陈旧的选择器、错乱的命令顺序、被漏掉的设置行,以及那些只是因为上一次测试残留状态才看似生效的效果。

  • 在完整数据包接受审阅之前,把选择器范围保持得足够窄。
  • 把世界设置类命令排在遭遇专属的覆盖命令之前。
  • 把反馈类命令紧挨着触发它们的状态变化一起保存。

下一步去哪里

把旧版命令和现代替代命令并排保存,让审阅者在迁移之前能够把两种输出直接对照。

想了解现代路径,可以对照Java 1.21 物品组件预设指南旧版 Java 命令预设迁移

FAQ

我可以把这条 Give 命令粘贴到聊天里吗?

如果选择器安全、命令行也很短,做单条命令冒烟测试通常没问题。要实现可重复的地图行为,请把它保存到 Project,再复制带顺序的数据包输出或函数风格的输出。

为什么这组示意图全是 UI?

这个预设产出的是 JSON、Project 组织或审阅流程,而不是世界中可见的实体物体。真正有用的证据是工作台状态、输出,以及它在 Project 中的归位。

在分享这个预设之前,我应该检查什么?

检查选择器范围、命令顺序、目标版本,以及这条命令究竟属于设置、遭遇逻辑、反馈还是清理。这些类别决定了它在 Project 数据包中应归入哪个位置。

打开这个工作流

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