# 总体配置结构了解

在阅读完 **首次使用** 一章后，恭喜你来到了第二章。在本章你将基础地掌握 **ItemsAdder** 的一些基础知识。

### ItemsAdder 插件内的大概框架

在此之前，我们需要了解 **ItemsAdder** 文件夹内的大概框架。请注意，是大概。各个文件的具体作用，将在后文陆续揭秘，此时的你不宜了解太多。

我们会发现该文件夹下有以下部分组成：

* **contents** 文件夹。这是贯彻整个教程的文件夹，也是整个插件的核心所在。这里保存着所有 **ItemsAdder** 你所添加的内容的配置。
* **lang** 文件夹。是英文单词 **language**（语言）的缩写，现在不用我说，你也知道这是干什么的吧。
* **storage** 文件夹。这是保存 **ItemsAdder** 一些缓存记录的数据的地方，在教程没有特别标注的地方，请不要动这里。轻则物品的 **CustomModelData** 值全部被打乱，重则你的资源包就因此报废了，你要花上一整天时间去修补到底哪里不小心出现问题了。（此时的你可能看不懂到底是什么，总之记得这里很危险，不要乱动，就对了）
* **output** 文件夹。你第一次使用时可能看不到这个文件夹，它的作用笔者将在后文揭秘。
* **config.yml** 文件。是英文单词 **configuration**（配置）的缩写，同样不用我说了。
* **ia\_gui.yml** 文件。配置 **/ia** 指令后打开的各种 **UI** 的文件。

以上 **6** 个文件，在你基础的配置完 **ItemsAdder** 以后，基本只会看 **contents** 文件夹内的内容了，所以整个插件并不难，需要的是前期你的耐心。

### contents 文件夹

那么，很显然，**contents** 文件夹是我们关注的重心，所以我们还需要对它进行研究分析，请再次打开它，我们可以发现里面包括一个名字为 `_iainternal` 的文件夹，这是 **ItemsAdder** 为你提供的基础包。

从这我们似乎不能发现什么，你可以 [点击这里](https://github.com/ItemsAdder/DefaultPack/releases) 下载 **ItemsAdder** 为你提供的示例配置。

打开示例配置，我们不难发现，`contents` 文件夹内包含的是其他若干文件夹，这些文件夹对应一个新的概念：**包**，你可以做物品包、盔甲包，这些文件夹名称就是包的名称。

### 包文件夹内的组成

打开任意一个包所对应的文件夹，我们发现它由如下 **2** 个文件夹组成：

* **configs** 文件夹：这个包的物品配置文件所在的文件夹，一个包可以由若干物品配置文件，物品配置文件不止止是物品，还有其他内容，只是为了方便理解叫做物品配置文件，你可以在下一节快速了解一下它。
* **resourcepack** 文件夹：这个包的资源包所在的文件夹。**ItemsAdder** 最终发给玩家的资源包是所有包的子资源包打包后自动生成的，这时 **output** 文件夹作用就体现出来了：它的作用就是存放这些包的子资源包最终打包生成的总资源包。

### resourcepack 文件夹

我们先不着急 **configs** 文件夹包括的物品配置文件的学习，因为下面我们重点学习的就是这个，在此之前，我们先来把目光投放到 **resourcepack** 文件夹身上。我们需要了解一个新的概念，我们称为 **namespace**，中文意思为命名空间。

我们随意打开一个网上下载的资源包，发现一进入压缩包预览页面，映入眼帘的往往是一个 **minecraft** 文件夹，这就是 **Minecraft** 原版自身给自己的命名空间，游戏自身会在这个命名空间内找到自己所要的纹理、模型、音效等等。

而我们自己也可以创建一个新的命名空间，把自己想要增加的纹理、模型、音效等等放入进去，更好的管理它们，在需要修改、删除它们时能快速定位到其所在目录。

在上文我们已经介绍了包的概念，在示例配置中，各个包下的 **resourcepack** 文件夹正是子资源包，而打开这个文件夹映入眼帘的正是 **namespace**！

### 包和 namespace 的关系

首先是包的作用。例如，你可以把一些武器放在一起，再把另外的盔甲放在一起，这时，包的作用就是分类了。**ItemsAdder** 并不限制你的包到底是怎么区分的，但很显然在这里，笔者推荐你使用“物品分类”进行配置。

这些由你想设置的包的名称和各包下 **resourcepack** 文件夹下的 **namespace** 不必一模一样，而且一个包也可以有多个 **namespace**，但在本教程为了培养良好习惯，全部默认只能一样且一一对应。**namespace** 用于内部管理，而玩家无法看到，所以你不必填写中文，也不能使用中文，只能是 **小写英文、数字和下划线** 组成。

在使用插件各个指令，或者配置 **ItemsAdder** 内物品，乃至与 **ItemsAdder** 挂钩（兼容）的插件时，我们在填写 **ItemsAdder** 物品的名称时，非常建议你写 `namespace:id` 的格式，例如 `weapon:starter_sword`。**namespace** 即是文件夹的名称，**id** 即是物品的ID。

关于各包 **resourcepack** 文件夹的各命名空间下的具体结构，将在后文中陆续介绍。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.superiormc.cn/itemsadder-doc/ji-chu-shi-yong/zong-ti-pei-zhi-jie-gou-liao-jie.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
