> For the complete documentation index, see [llms.txt](https://logo.gitbook.io/server/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://logo.gitbook.io/server/4/4-1.md).

# 4-1：认识YAML语法

YAML语法是开服必学的。

{% hint style="info" %}
**YAML**（/ˈjæməl/，尾音类似camel骆驼）是一个可读性高，用来表达数据[序列化](https://baike.baidu.com/item/%E5%BA%8F%E5%88%97%E5%8C%96)的格式。YAML参考了其他多种语言，包括：[C语言](https://baike.baidu.com/item/C%E8%AF%AD%E8%A8%80)、[Python](https://baike.baidu.com/item/Python)、[Perl](https://baike.baidu.com/item/Perl)，并从[XML](https://baike.baidu.com/item/XML)、电子邮件的数据格式（RFC 2822）中获得灵感。Clark Evans在2001年首次发表了这种语言，另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。当前已经有数种编程语言或脚本语言支持（或者说解析）这种语言。YAML是"YAML Ain't a Markup Language"（YAML不是一种[标记语言](https://baike.baidu.com/item/%E6%A0%87%E8%AE%B0%E8%AF%AD%E8%A8%80)）的[递归缩写](https://baike.baidu.com/item/%E9%80%92%E5%BD%92%E7%BC%A9%E5%86%99)。在开发的这种语言时，YAML 的意思其实是："Yet Another Markup Language"（仍是一种[标记语言](https://baike.baidu.com/item/%E6%A0%87%E8%AE%B0%E8%AF%AD%E8%A8%80)），但为了强调这种语言以数据做为中心，而不是以标记语言为重点，而用反向缩略语重命名。

—— 《百度百科》
{% endhint %}

**怎么来解释YAML语法？我们目前的服务器很多文件中使用的都是YAML语法，可以这样理解，有一个文档，打开之后的是一些文字、字符，这些内容控制着游戏内的一些设置，我们可以通过更改这些内容来对游戏内的一些设置或机制进行修改，那么我们在更改文档内容的过程中，是需要遵循YAML语法的，这样才能被机器识别出来。上面也说了，YAML就是一个可读性高，用来表达数据序列化的格式。**

**下面来看一段YAML语法片段：**

```
spawncmd:
  COMMAND: 'spawn'
  NAME: '&e/spawn'
  LORE:
    - 'It justs executes /spawn'
    - 'as the player who clicked.'
  ID: enderpearl
  POSITION-X: 1
  POSITION-Y: 1
```

{% hint style="success" %}
**上面就是老牌的菜单插件Chestcommands的一段YAML配置文件，这段内容定义了箱子菜单里面的一个物品节点，下面我将一一进行解释。**
{% endhint %}

**spawncmd: 代表整段的开头，告诉插件我定义了一个菜单图标，名字叫 spawncmd 。下一行，COMMAND: 代表这个图标节点点击之后执行的命令，注意冒号使用的是英文的冒号，冒号后面有个空格，空格后面的内容还有单引号将内容圈入。**

{% hint style="info" %}
**一般来说，在YAML语法里，冒号后面有内容的，冒号后面一定加空格，看到上面的例子，除了开头的 spawncmd: 冒号后面无空格之外，其他的都有空格，这是YAML所要求的格式。**
{% endhint %}

**再往下看到 NAME: ，它代表了这个图标节点这个物品的显示名字，英文制式冒号，冒号后面有空格，空格后面有单引号圈入内容。**

{% hint style="danger" %}
上面已经说过了的 COMMAND 和 NAME 都在 spawncmd 的下面而且往后空了两格，这代表了上下级的关系！下级需要往后空两格，注意，是要按空格键两下而不是按一下TAB键。
{% endhint %}

简单地说，对于YAML语法不用有太多的畏惧，在MC里面用到的YAML语法相当肤浅，我们只需要记得一串字符要加单引号，冒号后面有空格，如果是一串数字的话就不必添加单引号了，这个需要各位服主在日常对配置文件更改的时候慢慢体会，我找了一篇关于YAML更详细的介绍，想看的可以看一下。

{% hint style="success" %}
YAML 入门教程 <https://www.runoob.com/w3cnote/yaml-intro.html>
{% endhint %}
