> For the complete documentation index, see [llms.txt](https://leawinds-organization.gitbook.io/yetanotherconfiglib-jian-ti-zhong-wen-fei-guan-fang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://leawinds-organization.gitbook.io/yetanotherconfiglib-jian-ti-zhong-wen-fei-guan-fang/tu-xing-jie-mian-de-gou-jian-gui-builder/kai-shi.md).

# 开始

了解YACL 的结构，理解它是如何工作的。

{% hint style="danger" %}
这不是官方文档！官方文档位于 [https://docs.isxander.dev](https://docs.isxander.dev/yet-another-config-lib/)
{% endhint %}

{% hint style="warning" %}
目前本 wiki 正在编写中，还没有完成！
{% endhint %}

在我们开始前，重要的是要注意 wiki 代码示例将使用官方Mojang映射。您还需要具备 Java 编程语言的基本知识。如果你不知道，请先学习 Java。

有一个简单的结构：类别（categories）包含组（groups），组包含选项（options）。你也可以跳过组，直接向类别添加选项。他们总是凌驾于任何组之上。

在我们开始前，让我们详细了解如何构造一个选项，然后我们将使用它来制作GUI。

```java
Option.<Boolean>createBuilder() // boolean 是我们要创建的选项的类型
        .name(Component.literal("Boolean 选项"))
        .description(OptionDescription.of(Component.literal("当光标停留在选项上时以提示框的形式显示此文本")))
        .binding(
                true, // 默认值
                () -> this.myBooleanOption, // 从这个字段获取当前值
                newVal -> this.myBooleanOption = newVal
        )
        .controller(TickBoxControllerBuilder::create)
        .build()
```

YACL选项中的一个重要概念是控制器（controllers）。每种选项类型都没有硬编码的显示方式。在 GUI 中显示选项的逻辑保存在 `Controller` 中。要了解更多关于控制器的信息，请点击这里。

要开始使用YACL创建GUI，你需要构建 `YetAnotherConfigLib` 的一个实例。我们将从上面插入我们的`Option`代码…

```java
YetAnotherConfigLib.createBuilder()
        .title(Component.literal("用于复述功能。将来可以用来渲染标题。"))
        .category(ConfigCategory.createBuilder()
                .name(Component.literal("类别的名称"))
                .tooltip(Component.literal("当光标停留或用Tab聚焦按钮时，这段文本将显示为一个提示框。不需要添加\n来换行，因为YACL会自动添加。"))
                .group(OptionGroup.createBuilder()
                        .name(Component.literal("组的名称"))
                        .description(OptionDescription.of(Component.literal("当光标停留在名称上或用Tab聚焦折叠按钮时，这段文本将显示为一个提示框。")))
                        .option(Option.<Boolean>createBuilder()
                                .name(Component.literal("Boolean 选项"))
                                .description(OptionDescription.of(Component.literal("当光标停留在选项上时，这段文本将显示为一个提示框。")))
                                .binding(true, () -> this.myBooleanOption, newVal -> this.myBooleanOption = newVal)
                                .controller(TickBoxControllerBuilder::create)
                                .build())
                        .build())
                .build())
        .build()
```

你需要做的仅仅是告诉YACL从它生成一个屏幕实例。

```java
YetAnotherConfigLib.createBuilder()
        [...]
        .build()
        .generateScreen(parentScreen) // 当你关闭YACL时显示的屏幕
```

{% hint style="info" %}
每次你想要获得一个GUI屏幕时，都必须生成一个 `YetAnotherConfigLib` 的新实例。你不能仅仅是再调用一次 `generateScreen()` 方法！
{% endhint %}

就这么简单！你已经用YACL创建了你的第一个GUI！

<figure><img src="https://1519116863-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWiUFZnUcH6D7I7YlJC1P%2Fuploads%2FQ1plJyCZHlZQXwPrDK8B%2FScreenshot%202023-11-26%20at%2014.23.12.png?alt=media&amp;token=267bdee8-a12a-4fbe-a4ed-32c37d03d148" alt=""><figcaption></figcaption></figure>
