自定义武器与工具
自定义武器与工具属于特殊的自定义物品,在支持自定义物品所有特性的基础上,还具有武器或工具相关的功能。本文将介绍如何通过 custom_item_type: "weapon" 和 netease:weapon 组件来创建剑、镐、斧、铲、锄等自定义武器与采集工具。
前置条件
请先阅读 自定义基础物品 了解物品注册的基础流程(步骤 1-6)。武器与工具的注册在此基础上进行扩展。format_version 使用 1.10。
概述
自定义武器/工具与普通自定义物品的区别在于:
- 攻击伤害:通过
netease:weapon组件的attack_damage字段设置额外攻击伤害。 - 挖掘能力:通过
type、level、speed字段,让工具拥有与原版镐/斧/铲/锄一致的挖掘行为和破坏速度。 - 攻击动画:
type字段决定了手持攻击时播放的动画类型(如剑的横扫、斧的劈砍)。 - 附魔兼容:
enchantment字段控制在附魔台上可获得的附魔等级与品质。 - 铁砧修复:
level字段同时决定了铁砧修复时所用的材料类型。
武器/工具继承普通自定义物品的所有能力,包括自定义贴图、自定义配方、脚本事件监听等。
注册流程
注册流程与 自定义基础物品 的步骤 1-6 基本相同,额外需要:
步骤 1-6 保持不变:创建
netease_items_beh目录、编写物品 JSON、配置贴图、编写item_texture.json、创建netease_items_res资源定义、添加zh_CN.lang本地化。在
description中设置custom_item_type:json"description": { "identifier": "mymod:my_sword", "custom_item_type": "weapon" }在
components中添加netease:weapon组件(必填):json"netease:weapon": { "type": "sword", "level": 3, "speed": 8, "attack_damage": 7, "enchantment": 10 }设置堆叠数量:自定义武器/工具只支持
minecraft:max_stack_size设为1。设置耐久度(可选):通过
minecraft:max_damage组件设置最大耐久值。
注意
custom_item_type 设为 weapon 后,物品的默认 category 会变为 Equipment(装备),无需手动指定。若需要放到其他分类,可显式设置 category 字段。
武器类型(custom_item_type: weapon)
在行为包物品 JSON 的 description 中,将 custom_item_type 设为 "weapon" 即可将该物品标记为武器/工具类型:
"description": {
"identifier": "mymod:my_pickaxe",
"custom_item_type": "weapon"
}该声明会使物品获得以下默认行为:
| 行为 | 说明 |
|---|---|
| 默认分类 | category 自动设为 Equipment,在创造模式物品栏的"装备"分页中显示 |
| 手持渲染 | 自动以武器方式竖直手持渲染(等同于 minecraft:hand_equipped: true) |
| 组件要求 | 必须包含 netease:weapon 组件,否则武器功能不生效 |
netease:weapon 组件详解
netease:weapon 是武器/工具的核心组件,定义在行为包 netease_items_beh 的物品 JSON 中。所有字段如下:
| 键 | 类型 | 默认值 | 说明 |
|---|---|---|---|
type | str | (必填) | 武器/工具的类型,决定攻击动画和挖掘行为。可选值:sword(剑)、shovel(铲)、pickaxe(镐)、hatchet(斧)、hoe(锄) |
level | int | (必填) | 工具等级,影响挖掘等级判定和铁砧修复材料。详见 工具挖掘等级 |
speed | int | 0 | 采集工具挖掘方块时的基础速度倍率。对采集工具(镐、斧、铲、锄)生效,剑类型通常设为 0 或较低值 |
attack_damage | int | 0 | 额外攻击伤害值。玩家的最终攻击伤害 = 基础攻击力(1)+ 该值 |
enchantment | int | 0 | 附魔能力值,影响在附魔台上获得的附魔等级与品质。详见 附魔兼容 |
type 字段详解
type 决定了工具的行为特征:
| type 值 | 对应工具 | 攻击动画 | 挖掘加速方块类型 |
|---|---|---|---|
sword | 剑 | 横扫动画 | 蜘蛛网、竹子等(与原版剑一致) |
pickaxe | 镐 | 劈砍动画 | 石质方块、矿石、金属方块等 |
hatchet | 斧 | 劈砍动画 | 木质方块、南瓜、菌类方块等 |
shovel | 铲 | 劈砍动画 | 泥土、沙子、砂砾、雪等 |
hoe | 锄 | 劈砍动画 | 干草块、树叶、海绵等(1.16+ 行为) |
提示
type 为 hatchet(斧)而非 axe,这是中国版的命名约定,请注意区分。
speed 字段详解
speed 表示该工具对其对应类型方块的挖掘基础速度。速度越高,挖掘越快。以下是原版工具的速度参考值:
| 材质等级 | 原版速度值 |
|---|---|
| 木制工具 | 2 |
| 石制工具 | 4 |
| 铁制工具 | 6 |
| 钻石工具 | 8 |
| 下界合金工具 | 9 |
| 金制工具 | 12 |
对于剑类型,speed 通常设为 0,因为剑的挖掘加速仅对蜘蛛网等少数方块生效(固定 15 倍速,不受此字段影响)。
attack_damage 字段详解
attack_damage 为额外攻击伤害值,叠加在玩家基础攻击力之上。以下是原版武器/工具的攻击伤害参考值:
| 物品 | attack_damage | 最终伤害(基础 1 + 额外) |
|---|---|---|
| 木剑 | 3 | 4 |
| 石剑 | 4 | 5 |
| 铁剑 | 5 | 6 |
| 钻石剑 | 6 | 7 |
| 下界合金剑 | 7 | 8 |
| 木镐 | 1 | 2 |
| 铁镐 | 3 | 4 |
| 钻石镐 | 4 | 5 |
工具挖掘等级
level 字段对应工具的挖掘等级。当工具类型为镐(pickaxe)时,挖掘等级决定了能否正常采集特定矿石并产生掉落物。只有当工具挖掘等级 >= 方块要求的最低等级时,方块才会掉落物品。
等级对照表
| level 值 | 对应材质 | 可挖掘方块(镐为例) |
|---|---|---|
| 0 | 木 / 金 | 石头、煤矿石、下界石英矿等基础石质方块 |
| 1 | 石 | 铁矿石、青金石矿石 |
| 2 | 铁 | 钻石矿石、绿宝石矿石、金矿石、红石矿石 |
| 3 | 钻石 | 黑曜石、远古残骸 |
| 4+ | 下界合金 | 与等级 3 相同(目前无更高需求的方块) |
铁砧修复材料
level 同时决定了该武器/工具在铁砧中使用何种材料进行修复:
| level 值 | 修复材料 |
|---|---|
| 0(且 speed = 2) | 木板 |
| 0(且 speed != 2) | 金锭 |
| 1 | 圆石 |
| 2 | 铁锭 |
| 3 | 钻石 |
| > 3 | 无法使用铁砧修复 |
注意
如果 level 大于 3,该武器/工具将无法在铁砧中使用材料修复。如需支持修复,请将 level 设置在 0-3 范围内。
耐久度
通过 minecraft:max_damage 组件为武器/工具设置耐久度。耐久值范围为 [0, 32767]。
"minecraft:max_damage": 1561原版武器/工具耐久度参考:
| 材质 | 耐久度 |
|---|---|
| 木制 | 59 |
| 石制 | 131 |
| 铁制 | 250 |
| 钻石 | 1561 |
| 下界合金 | 2031 |
| 金制 | 32 |
耐久度消耗规则:
- 攻击实体:每次攻击消耗 1 点耐久。
- 挖掘方块:每破坏一个方块消耗 1 点耐久(对于剑破坏方块消耗 2 点耐久)。
- 耐久为 0:物品损坏消失。
提示
自定义武器/工具的 minecraft:max_stack_size 只能设为 1。如果堆叠数量大于 1,耐久度行为可能不符合预期。
附魔兼容
netease:weapon 组件中的 enchantment 字段控制物品的附魔能力值。该值影响物品在附魔台上能够获得的附魔种类和等级。
附魔能力值参考
| 材质 | 附魔能力值 |
|---|---|
| 木制 | 15 |
| 石制 | 5 |
| 铁制 | 14 |
| 钻石 | 10 |
| 下界合金 | 15 |
| 金制 | 22 |
附魔能力值越高,在附魔台上获得高等级附魔和多重附魔的概率越大。金制工具虽然耐久最低,但附魔能力最高,这与原版行为一致。
附魔类型
根据 type 字段的不同,武器/工具可获得的附魔类型也不同:
| type | 可用附魔 |
|---|---|
sword | 锋利、亡灵杀手、节肢杀手、击退、火焰附加、抢夺、耐久、经验修补 |
pickaxe | 效率、时运、精准采集、耐久、经验修补 |
hatchet | 效率、锋利、时运、精准采集、耐久、经验修补 |
shovel | 效率、时运、精准采集、耐久、经验修补 |
hoe | 效率、时运、精准采集、耐久、经验修补 |
完整示例:自定义剑
以下是一把完整的自定义钻石级剑的配置示例,包含行为包和资源包文件。
行为包 — 物品定义
文件路径
behavior/netease_items_beh/mymod_flame_sword.json
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "mymod:flame_sword",
"custom_item_type": "weapon"
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:max_damage": 1561,
"netease:weapon": {
"type": "sword",
"level": 3,
"speed": 0,
"attack_damage": 8,
"enchantment": 14
},
"netease:fire_resistant": {
"value": true
},
"netease:customtips": {
"value": "§6火焰之刃"
}
}
}
}资源包 — 贴图映射
文件路径
resource/textures/item_texture.json
{
"resource_pack_name": "mymod",
"texture_name": "atlas.items",
"texture_data": {
"mymod_flame_sword": {
"textures": "textures/items/flame_sword"
}
}
}资源包 — 物品表现
文件路径
resource/netease_items_res/mymod_flame_sword.json
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "mymod:flame_sword",
"category": "Equipment"
},
"components": {
"minecraft:icon": "mymod_flame_sword",
"minecraft:hand_equipped": true
}
}
}本地化
文件路径
resource/texts/zh_CN.lang
item.mymod:flame_sword.name=烈焰之剑完整示例:自定义镐
以下是一把自定义铁级镐的完整配置。
行为包 — 物品定义
文件路径
behavior/netease_items_beh/mymod_mithril_pickaxe.json
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "mymod:mithril_pickaxe",
"custom_item_type": "weapon"
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:max_damage": 500,
"netease:weapon": {
"type": "pickaxe",
"level": 2,
"speed": 7,
"attack_damage": 4,
"enchantment": 14
}
}
}
}资源包 — 贴图映射
文件路径
resource/textures/item_texture.json(在已有文件中追加)
{
"resource_pack_name": "mymod",
"texture_name": "atlas.items",
"texture_data": {
"mymod_mithril_pickaxe": {
"textures": "textures/items/mithril_pickaxe"
}
}
}资源包 — 物品表现
文件路径
resource/netease_items_res/mymod_mithril_pickaxe.json
{
"format_version": "1.10",
"minecraft:item": {
"description": {
"identifier": "mymod:mithril_pickaxe",
"category": "Equipment"
},
"components": {
"minecraft:icon": "mymod_mithril_pickaxe",
"minecraft:hand_equipped": true
}
}
}本地化
文件路径
resource/texts/zh_CN.lang
item.mymod:mithril_pickaxe.name=秘银镐与脚本配合
通过 Python 脚本(Mod SDK),可以为自定义武器实现更丰富的功能:
- 自定义攻击效果:监听
ServerItemUseOnEvent或ActorUseItemServerEvent事件,在攻击命中时触发粒子特效、播放音效或施加状态效果。 - 耐久度控制:通过
ItemDurabilityChangedServerEvent事件监听耐久变化,实现不消耗耐久或额外消耗的逻辑。 - 特殊挖掘行为:监听
PlayerTryDestroyBlockServerEvent事件,为特定方块实现自定义挖掘速度或掉落物。
如果需要为武器添加 3D 模型和自定义攻击动画(如第一人称挥砍特效、第三人称手臂动画),请参考 自定义 3D 物品。
常见问题
Q: 武器没有攻击伤害 / 挖掘不掉落物品?
确认 custom_item_type 已正确设为 "weapon",且 netease:weapon 组件存在于 components 中。缺少任一配置都会导致武器功能失效。
Q: 铁砧无法修复自定义武器?
检查 level 值。level 大于 3 时无法使用铁砧修复。将 level 设为 0-3 中的合适值。
Q: 附魔台上附魔效果很差?
提高 enchantment 附魔能力值。该值越高,获得高级附魔的概率越大。参考金制工具的值为 22。
Q: 工具类型写了 axe 不生效?
中国版中斧的 type 值为 hatchet,不是 axe。
