Guides / Commands & Data

无需模组的自定义附魔:数据驱动的附魔格式

附魔现在是数据包 JSON 文件,因此自定义附魔无需模组。本文将介绍文件结构、实际生效的效果组件以及如何使其可获取。

附魔过去是硬编码的。现在它们是数据包数据,这意味着一个真正自定义的附魔——新的名称、新的效果、新的消耗曲线——都只是一个 JSON 文件。

文件位置

data/<namespace>/enchantment/lightning_strike.json

自重命名以来,与其他所有数据包类别一样,是单数形式的 enchantment/

最小文件

{
  "description": { "translate": "enchantment.my_pack.lightning_strike" },
  "supported_items": "#minecraft:enchantable/sword",
  "weight": 2,
  "max_level": 3,
  "min_cost": { "base": 10, "per_level_above_first": 10 },
  "max_cost": { "base": 50, "per_level_above_first": 10 },
  "anvil_cost": 4,
  "slots": ["mainhand"]
}

这样就创建了一个真实的附魔,它会出现在附魔台并显示在物品上。但它目前没有任何效果——行为是独立的。

  • weight 是附魔台上的稀有度。原版中,常见附魔使用 10,非常稀有附魔使用 1。这是一个相对值,而不是百分比。
  • slots 决定附魔在何处生效:mainhandoffhandarmorhead 等等。如果省略,附魔将永远不会生效。
  • supported_items 接受一个物品标签或一个列表。#minecraft:enchantable/* 标签已经存在,用于合理的物品分组。

使其生效

effects 附加行为:

"effects": {
  "minecraft:post_attack": [{
    "effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
    "requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
  }]
}

run_function 是一个“逃生舱”——函数能做的一切,附魔也能做。内置的效果类型涵盖了伤害、击退、耐久度、物品掉落和属性,完全不需要函数,而且成本更低。

requirements 接受任何谓词(predicate),因此根据目标类型、天气或随机几率进行限制只需一个 JSON 块。

命名

description 是一个文本组件,因此硬编码的名称是可行的:

"description": { "text": "Lightning Strike", "color": "gold" }

translate 键加上资源包中的语言文件,才能让其他语言的玩家正确阅读——这与本网站从 Mojang 自己的翻译中获取游戏术语的原因相同。

使其可获取

有三种途径,通常你需要不止一种:

  • 附魔台 — 一旦设置了 weight 和消耗曲线,就会自动出现。
  • 战利品表 — 列出你的附魔的 enchant_randomly,或者如果它应该在成本上竞争,则使用 enchant_with_levels
  • 村民:交易 — 交易物品中包含你的附魔的附魔书。

将其添加到 #minecraft:in_enchanting_table 是使附魔台提供它的关键;这个标签很容易被遗忘,导致附魔存在但从不出现。

自定义附魔和盔甲纹饰生成器 中构建附魔 JSON 及其盔甲纹饰对应项,并设置好标签和槽位。

自定义附魔与纹饰生成器 →

More guides

Browse all →

还想找别的我的世界工具?

一整套在浏览器里运行的生成器、查看器和转换器,全部免费。