# 物品基础

在本节开始，笔者将向各位介绍一个新的概念——物品。区别于贴图，物品是可以由玩家放置到物品栏中的，而贴图只能用于显示，不能存放在物品栏中；再区别于下文即将提到的方块，物品不能被放置，只能一直存于玩家物品栏，类似于原版的 **纸** 等的存在。

物品的贴图分辨率只能是 **2** 的指数乘积，最小为 **16x16**，最大为 **256x256**。每个贴图都有最适合自己的分辨率，请不要自己尝试使用图片编辑软件强制将 **32x32** 分辨率的贴图缩放到 **16x16** 分辨率，分之亦然，这会彻底改变这个贴图的显示效果，因此，制作自己的 **ItemsAdder** 配置最好的方法就是所有贴图均由自己绘制，这会让你的服务器显得风格统一，没有零散的感觉。

### 新建一个物品包

与贴图几乎一样，在此不再赘述。

### 新建第一个物品

v.3.3.0 版本以前：使用文本软件打开 **items\_pack/你新建的文件夹/你新建的文件.yml** 文件，将下面的模板内容复制进去：

v.3.3.0 版本以后：使用文本软件打开 **contents/你新建的文件夹（即包名）/configs/你新建的文件.yml** 文件。

```
info:
  namespace: "你新建的文件夹"
items:
  myitem:
    resource:
      material: DIAMOND_SWORD
      generate: true
      textures:
      - item/example_item.png
```

{% hint style="info" %}
再次重申！namespace 不是必须和包名一样，一个包也可以有多个 namespace，但是，一一对应是一个良好的习惯！
{% endhint %}

不同于贴图，物品的配置头选项为 **items**，而不是贴图的 **font\_images**，这也代表 **ItemsAdder** 本身区分贴图和物品的，所以请不要将这两个概念混淆。

另请注意，物品id不能出现大写字母，只能是小写字母、数字、下划线组成。

我们以新建一个 `id` 为 `myitem` 的贴图物品为例，在上面的配置中，我们需只需要做以下操作：

#### `resource` 的配置

`materiel` 是这个物品的材料。

我们首先需要了解一个知识，物品的实现是通过原版的 **CustomModelData** 的，翻译过来即自定义模型数值，这意味着一个物品可以拥有多个材质，同时根据这个数值来决定到底你手上的这个物品显示的是哪一个材质。

因此，在实现自定义物品时，我们必须指定这个自定义物品是以哪一个原版物品为模板新建的。但是这也不能随意选择，因为往往这些原版物品都有不同的属性，例如牛排可以吃、骨粉可以催熟，弓可以拉展等，我们需要避免玩家在使用自定义物品做我们本不希望他做的事情。大多数情况下我们使用纸，也就是 `paper`，作为这里的值。

`generate` 是 **ItemsAdder** 是否为这个物品自动生成 **model** json。正常情况下如果我们不希望这个自定义物品与原版的模型有差异，那么我们只需将其填写为 **true**。在后文我们将陆续介绍需要改为 **false** 并手动填写模型文件路径的各种情况。

`textures` 为物品材质，其本质与贴图的 `path` 一致，在此不再赘述。但请注意正如本文开头所述，物品材质单独分辨率必须是大于 **16** 的 **2** 的指数乘积的数量。

#### 获得物品

在你完成上面的操作后，在使用 `/iareload` 和 `/iazip` 后我们可以使用 `/iaget namespace:物品id` 获得该物品，例如 `/iaget xxx:myitems`。

我们将在后文陆续介绍有关物品的高级用法和 `/ia` 菜单的分类显示物品。
