# 菜单

菜单是对于贴图的重要应用之一，所有的菜单插件都支持使用贴图替换背景。像下面这样的，就是使用贴图实现的自定义菜单背景。

该功能所有插件都支持，只要它能自定义箱子UI的标题，所以不存在只能 **TrMenu** 这样做的限制。（我不知道为什么那么多人会这么觉得）

![](/files/k5uYRSsJRYGFt5rRdvMs)

## 自定义背景贴图

### 新建一个自定义背景的菜单

同样新建一个贴图，贴图的大小是随意的，只要分辨率在 **256 x 256** 以内即可。如果你的贴图大小超过了这个值，那么只能通过分割的形式进行显示，届时调整贴图位置的工作复杂量指数倍上升。

### 在菜单内显示该贴图

每个箱子 **UI** 都有一个标题，我们通过在标题处写上菜单背景贴图所替换的字符即可将其显示。所以，本质上玩家在打开带有贴图的菜单时，他面对的仍是箱子 **UI**，只是我们将标题的贴图放大，以至于它覆盖掉了下面的箱子 **UI** 内的所有地方（包括格子），以达到自定义菜单的效果。

一般来说，如果你是显示正常大箱子（6行格子）大小的 **UI** 的话，呈现正方形的长宽比即可。如果长是 **175** 像素点，那么每行（箱子格）大约是 **20** 像素点（包括格子外围的装饰）。

总而言之，贴图的分辨率大小在这里没有固定的标准，由于每个人的习惯、风格和像素画需要的像素点不同，往往分辨率大小也不是固定的。作为新手的你可以使用其他人做好的菜单贴图进行练手（例如 `ItemsAdder/resource_pack/assets/mcguis/textures` 内插件自带的一些菜单贴图模板，v.3.2.0 版本后为 `ItemsAdder/contents/_iainternal/resourcepack/assets_iainternal/textures/gui` 文件夹），反复调整 `scale_ratio` 和 `y_position` 的值，直到自己满意的位置（**不上下偏差**，物品能正常在所画的格子中间显示）为止，这样你就可以自己制作一个菜单模板，以后再做第二个菜单背景贴图时，上手快很多。

### :offset\_数值: 的使用

在调整完 `scale_ratio` 和 `y_position` 的值后，我们发现左右仍存在偏差，这时我们可以通过这个字符串来调整左右显示位置。我们只需要在菜单 **UI** 的标题的贴图所替换的那个字符前添加 `:offset_数值:` 即可，例如 `:offset_-8:`，直到找到自己满意的位置为止。

一般来说，由于字符本身与箱子 **UI** 的边缘本身也存在间距，因此尽管你在绘制贴图时是从最左边贴边开始绘制，在实际显示时仍会先右偏移，偏移的像素点往往是 **8** 个像素点，所以在字符前加上 `:offset_-8:` 即可。

### \&f 的使用

添加的贴图往往是莫名其妙的变成黑色调的，这是因为箱子 UI 标题自动添加的黑色颜色代码导致的，我们只需要再在上文的 `:offset_数值:` 前添加 `&f` 即可。

### 小结

在箱子 **UI** 的标题通过 `&f:offset_数字:替换的字符` 格式显示菜单的背景贴图。

### 按钮效果

例图按钮同样也是通过贴图显示的，也同样在箱子UI的标题中用贴图替换的字符显示，并使用 `&f:offset_数字:替换的字符` 格式，你需要来回调整贴图的位置才能达到满意的效果。

有时，固定使用字符也不是我们需要的效果，就以最开始给的例图来看，我们想要这个按钮在解锁和未解锁时是不同的贴图，这时我们需要自定义一个 **Placeholder**，这种功能在 **TAB** 插件中存在且功能丰富，并且笔者也为该插件翻译了 **Wiki**，感兴趣可以自行查看。

## 菜单内的物品

### 新建空白贴图的物品

首先我们需要了解，用物品来显示菜单内的按钮是不现实、也是非常复杂的，大多数都是直接使用贴图显示。以最上面给的图片为例，我们想要做到玩家碰到背景贴图所绘制的按钮那里后有一个物品 **Tip** 告诉玩家这个按钮具体作用，但我们不想让玩家真正的看到这个物品，这时，我们需要新建空白贴图的物品。

我们可以使用 **ItemsAdder** 的自定义物品（后文提及）制作空白贴图的物品，并在菜单中使用该物品，但在本篇教程中，笔者考虑到部分插件可能并不支持 **CustomModelData** 或者其他情况，只能使用原版自带的物品，因此介绍一个更加简便的方法。

我们通过替换原版资源包下的 **结构空位** 物品的材质，来实现空白贴图的物品。该物品在单机使用较多，服务器下几乎用不到，玩家也无法获取该物品，所以使用它是再合适不过的。

第一步：打开 `ItemsAdder/resource_pack/assets/minecraft/item` 文件夹（如果没有对应的文件夹，依次新建即可）。

v.3.3.0 版本以后为打开 `ItemsAdder/contents/_iainternal/resourcepack/assets/minecraft/item`。

第二步：绘制一个 **16x16** 分辨率的空白贴图，就像这样。

![空白图](/files/55apNbmRBu7l3a6xpalz)

第三步：将这个图片放置到第一步的文件夹，取名为 **structure\_void.png** 文件。

第四步：菜单中的物品 **ID** 填写为 **structure\_void** 即可。

### 新建 ItemsAdder 的物品

我们假设你已了解 **ItemsAdder** 的自定义物品功能，如果你尚未掌握，请跳过这里，在掌握后返回这里继续阅读。

第一步：使用 `/iacustommodeldata 物品id` 获取到该物品的 **CustomModelData** 值。

第二步：在菜单插件内配置对应物品的 **CustomModelData**。主流菜单插件均支持：包括 **DeluxeMenu、TrMenu**，请仔细阅读它们的 Wiki。


---

# 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/tie-tu/cai-dan.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.
