# 制作一个新武器

在本节中,我们将一起新建一个武器,使其具备攻击特性。

# 创建配置

我们打开我的世界开发工作台的编辑器,通过创建配置的方式快速创建一个新物品。

我们以“自定义武器”为基础,这样便可以创建一个武器。

# 更改属性

我们一起来考察这个物品的组件。我们可以看到,决定了这个物品为武器的组件为“武器属性”组件。该组件为中国版自制的组件minecraft:weapon。这个组件决定了一个武器的伤害、附魔能力、挖掘等级、基础挖掘速度等属性。我们可以根绝自己的意愿对该组件进行自定义。比如,我们把武器的伤害改为20。

我们这里提供一对稍加修改之后的武器物品对应的定义文件。行为包定义文件如下:

{
  "format_version": "1.10",
  "minecraft:item": {
    "description": {
      "identifier": "tutorial_demo:weapon",
      "category": "Equipment",
      "custom_item_type": "weapon",
      "register_to_create_menu": true
    },
    "components": {
      "minecraft:max_damage": 10,
      "netease:weapon": {
        "attack_damage": 20,
        "enchantment": 10,
        "level": 3,
        "speed": 5,
        "type": "sword"
      }
    }
  }
}

资源包定义文件如下:

{
  "format_version": "1.10",
  "minecraft:item": {
    "description": {
      "identifier": "tutorial_demo:weapon"
    },
    "components": {
      "minecraft:icon": "tutorial_demo:weapon"
    }
  }
}

值得注意的是,这里的“耐久”组件对应的是minecraft:max_damage,即最大的损坏值Damage Value,简称DV),而非攻击能够产生的伤害Damage)。该武器能够造成的攻击伤害由netease:weapon/attack_damage定义。这里的损坏值即我们在其他语境下经常提到的特殊值、数据值或附加值。之所以称为损坏值,是因为该物品每用一次便会一定程度上地损坏一次,损坏值也会逐渐增大。当损坏值达到最大损坏值时,物品便会因为损坏殆尽而破碎。所以最大损坏值也就是物品的耐久Durability)。

我们进入游戏测试我们的武器。

image-20211217180955089

可以看到,我们的武器确实如我们修改的那样,多出了一个+20的攻击伤害。这代表我们的武器自定义成功了!