# 3.3 - 实战：NPC

## 插件选择：Citizens

经典老牌的 NPC 插件，功能丰富。

{% embed url="<https://github.com/CitizensDev/Citizens2>" %}

点击其中的 **Developmental builds** 后所给链接即可下载。

## 插件选择：ZNPCs

小巧免费的 NPC 插件。

{% embed url="<https://www.spigotmc.org/resources/znpcs.80940/>" %}

## 经验：如何使用 Citizens 2 创建 NPC

请先站在你需要创建 **NPC** 的大概的地方，然后使用指令 `/npc create NPC名称`。其中 **NPC** 名称是会显示在 **NPC** 头顶上方的，如果你要显示的内容 **超过一行**，请先填写 **&7，后面使用浮空字代替**。这时，一个 **NPC** 应该在你所在的位置生成了。

我们再使用以下指令对 NPC 进行进一步操作：

* /npc skin 正版玩家名称 —— 将 NPC 的皮肤设置成某位正版玩家的样子。
* /npc look —— NPC 将会看离它最近的玩家。
* /npc command add -p 指令 —— 给 NPC 绑定一个左键以玩家身份执行的指令

然后，使用指令 `/citizens save` 来保存当前的修改。这时打开 `plugins/Citizens/saves.yml` 文件，找到你刚刚创建的 NPC 的配置：

```
  '6':
    metadata:
      cached-skin-uuid-name: trades
      cached-skin-uuid: bc2d2519-c5e4-48f3-99c5-bfe9d396e73e
    name: §7
    uuid: f69095aa-6356-4974-9d0b-ed2a85d69bd4
    traits:
      skintrait:
        fetchDefaultSkin: true
        signature: uE/P8Xdcixfdns663hwABVwaBc3AOvL3LsuOCGJ0I7QSAm+OdfcnF3Cv2KQM1mwCAorHtOpmWGnd3LA7SfXEhYJdVuCuMZwMWTW/mexDRVD0qxAvj5NsHrKLX+hB80nWHshl0n6dMKyF0BzKqmyX0jLhYoYjXRDn4PxbcC4e0X11oHSo8EEanUTTk9Tu0VXAilEApibp+U3VvxnKnx1zm3aH97pxvS1gB0eYskUcv3fPwJ9aM4i5cjjxaXAg0jslm9sTDQzU+ZztjbNad7969TheUxCf5rDm/t3sjnasywEkcj3su7M+CpdwtDHHRBI47Nq6N8qAbR30cSz7RVRbmdnglyUssxYlFdVtNJ9GLAI5dBTBajbs7CM0gUcD4p6ya2upg9lmWnLBm0fLrkWNHeeSK0IzSPJRTyzO1LssKEFDso3l0IVhJrUxBIl14HaXgo9TuzI/weKo3HRv0t8DFnoReq0ugeAQ34frACEtpOATpsz7fpQf0cm/krpHh2ajF+CLamClU0j/9nH9UvKYkFicfYiYEPVoQfZ33KZHwefbtjt6B3g8c9QlkySTBHd0wNw9/TuylG9YPryr9gq29RxOSyxtELvwYXIi82qNjmZfqMgRu9iLLtZEdFN+pSJqPGBIjrEMEwYEayTrYs5DyzknqdEwvMbddgOPTBjIjps=
        skinName: trades
        textureRaw: ewogICJ0aW1lc3RhbXAiIDogMTYyODI0NDkwMzM2MSwKICAicHJvZmlsZUlkIiA6ICJiYzJkMjUxOWM1ZTQ0OGYzOTljNWJmZTlkMzk2ZTczZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJUcmFkZXMiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWJlZGI5NDJjMTU2ZDc0Mzc5MWE1NWY5ZDJjODg3MDBkZWZiOWY5YzEyYzQ0MGM3YjNiODc3ZDhmZGZiNWU3YyIKICAgIH0KICB9Cn0=
        updateSkins: false
      lookclose:
        range: '5.0'
        disablewhilenavigating: true
        enabled: true
        enableRandomLook: false
        randomLookDelay: 60
        realisticlooking: false
        randomPitchRange:
          '0': -10.0
          '1': 0.0
        randomYawRange:
          '0': 0.0
          '1': 360.0
      spawned: true
      location:
        bodyYaw: -85.93808
        world: world
        x: '-50.5'
        y: '38.0'
        z: '-253.5'
        yaw: '-47.4141'
        pitch: '0.0'
      type: PLAYER
      commandtrait:
        cost: -1.0
        executionMode: LINEAR
        experienceCost: -1.0
        hideErrorMessages: false
        commands:
          '0':
            command: trademenu
            hand: RIGHT
            player: true
            op: false
            cooldown: 0
            globalcooldown: 0
            n: -1
            delay: 0
      owner:
        uuid: ceb29779-392b-30ee-a212-6ad059f9046b
      sneak:
        sneaking: false
    traitnames: lookclose,skintrait,scoreboardtrait,type,spawned,inventory,equipment,owner,sneak,commandtrait,mounttrait,location
    navigator:
      speedmodifier: '1.0'
      avoidwater: false
      usedefaultstuckaction: true
```

找到 **location** 配置位置，将里面的 **x，y，z** 三个值小数点后面数字全部删除，改成 **5**，这样 **NPC** 就站在方块的正中央，更加美观了。（需要使用 `/citizens reload` 指令重新加载配置，该指令需要你执行两次）

你可以通过如下指令编辑 NPC。

* /npc sel —— 选中一个 NPC，你必须先对准一个 NPC 看然后使用该指令，才能继续使用 Citizens 的其他指令，否则插件不知道你要对哪个 NPC 进行编辑。
* /npc id —— 查看一个 NPC 的id，如果你忘记一个 NPC 的id，可以通过该指令查看。
* /npc movehere —— 将一个 NPC 搬到你所在的位置。
* /npc remove —— 删除一个 NPC。


---

# 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/new-user-doc/jian-ru-jia-jing/3.3-shi-zhan-npc.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.
