创建 NPC
配置设置
isEnabled
设置 NPC 是否启用。
| 键 | 值 | 默认值 |
|---|---|---|
isEnabled | 布尔值 | true |
示例
isEnabled: true
name
设置 NPC 的显示名称。支持 颜色代码 以及用于多语言服务器的翻译键。
| 键 | 值 | 默认值 |
|---|---|---|
name | 字符串 | 无 |
示例
name: "&aEnn Peecee"

scale
设置 NPC 的缩放(大小)。
| 键 | 值 | 默认值 |
|---|---|---|
scale | 倍率 | 1.0 |
进行缩放时,1.0 代表默认大小。要让实体变大,请增大该值(例如 1.2)。要让实体变小,请减小该值(例如 0.8)。
示例
scale: 1.2
role
设置 NPC 名称下方显示的角色身份。仅为视觉效果。支持 颜色代码 以及用于多语言服务器的翻译键。
| 键 | 值 | 默认值 |
|---|---|---|
role | 字符串 | 无 |
示例
role: "&c<Red Fellow>"

profession
设置 NPC 的职业,在 未 使用伪装时它决定 NPC 的皮肤。
| 键 | 值 | 默认值 |
|---|---|---|
profession | 职业 | NITWIT |
示例
profession: NITWIT

greetings
设置当玩家靠近时 NPC 所说的问候语列表。支持用于多语言服务器的翻译键。
| 键 | 值 | 默认值 |
|---|---|---|
greetings | 字符串列表 | 无 |
示例
greetings:
- Hi there!
- Good day.

dialog
设置当玩家在附近时 NPC 将说出的对白(在 DIALOG interactionType 的情况下,这就是对白)。支持用于多语言服务器的翻译键。
| 键 | 值 | 默认值 |
|---|---|---|
dialog | 字符串列表 | 无 |
示例
dialog:
- I like apples!
- Sure is hot.

farewell
设置 NPC 的告别消息。支持用于多语言服务器的翻译键。
| 键 | 值 | 默认值 |
|---|---|---|
farewell | 字符串列表 | 无 |
示例
farewell:
- Until next time!
- Bye!

canTalk
设置 NPC 是否能交谈。
| 键 | 值 | 默认值 |
|---|---|---|
canTalk | 布尔值 | true |
示例
canTalk: true
activationRadius
设置 NPC 能检测到玩家靠近的半径。
| 键 | 值 | 默认值 |
|---|---|---|
activationRadius | 双精度 | 3.0 |
示例
activationRadius: 3.0
scripts
设置附加到该 NPC 的 Lua 脚本。脚本文件从 plugins/EliteMobs/npc_scripts/ 加载,文件名必须完全匹配,包括 .lua 扩展名。
| 键 | 值 | 默认值 |
|---|---|---|
scripts | 字符串列表 | 无 |
NPC 脚本可以响应生命周期、交互和邻近钩子,例如 on_npc_proximity_enter。完整的 API 和示例请参阅 Lua NPC 脚本。
示例
scripts:
- wave.lua
interactionType
设置 NPC 将执行的交互类型。
| 键 | 值 | 默认值 |
|---|---|---|
interactionType | 特殊 [1] | 无 |
示例
interactionType: TELEPORT_BACK
noPreviousLocationMessage
当传送员 NPC 没有可将玩家传送到的先前位置时,它会显示此消息。接受 颜色代码 以及用于多语言服务器的翻译键。
| 键 | 值 | 默认值 |
|---|---|---|
noPreviousLocationMessage | 字符串 | 无 |
示例
noPreviousLocationMessage: '&8[EliteMobs] &cCouldn''t send you back to your previous location - no previous location found!'

timeout
设置 NPC 永久消失前的时间量(以分钟为单位)。
| 键 | 值 | 默认值 |
|---|---|---|
timeout | 双精度 | 0(永不) |
示例
timeout: 0
questFileName
设置 NPC 给予的任务。
| 键 | 值 | 默认值 |
|---|---|---|
questFileName | 字符串列表 | 无 |
示例
questFileName:
- my_quest_one.yml
- my_quest_two.yml
disguise
设置 NPC 拥有的 LibsDisguises 伪装。
| 键 | 值 | 默认值 |
|---|---|---|
disguise | LibsDisguises 格式 | 无 |
示例
disguise: SKELETON

customDisguiseData
设置自定义 LibsDisguises 伪装的数据。
| 键 | 值 | 默认值 |
|---|---|---|
customDisguiseData | LibsDisguises 格式 | 无 |
示例
disguise: custom:my_cool_disguise_name
customDisguiseData: player my_cool_disguise_name setskin {"id":"364acb6d-9050-46f7-b5fb-f8c3fd83a6fc","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTYxMTk4ODA4Nzc1NSwKICAicHJvZmlsZUlkIiA6ICJkZGVkNTZlMWVmOGI0MGZlOGFkMTYyOTIwZjdhZWNkYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJEaXNjb3JkQXBwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzliYmVkODQzNWY4YmYyNzhhZmUyNmU2NGZkOTI2YjhiMzc3MzJkODhlMzM0ODk3ZGJkNTI3ZDU2ZmY5MTk5MGUiCiAgICB9CiAgfQp9","signature":"ujLq1joYVktuQAp1xpFKlxQFUVinSePiDBiVCAxxix/mA5vP86i/eAOfb1mtGjaAZ6sO0l2olbzvycnGXNBtbAxgqprguROXY4tpWiePVTDmy3iD4GdOCxHAkYLoyMV5qTT4SNsldUFFuND8GSEgbNMltKDLmhNKwzm08iCigPfpeuYpwljgJPxu6ka54PKNaQu4doI0ZDZXKqq4hPhR3Bs2Sz9MI0SmdmQWwcCzUz3DFdVno27fmQ6LwqmT+eSoOv0EttVG/XMaTYQ5lhBY61mqf6WlJyYVUSfjJk1AbYsctu7dWM+sbY8jFq5ljvXJGGr5TyKi+fs8vHy06Z2go20QgTYOw+caFxFijAS6fgm3oY57VEO/+/9OLHdD+Z9BrWqQWcIIrVeIfxjue/yt4pyeVv9jX59hjNFjhcPEwotkxJ+vZ96WlTLWDG4BiqauDr2VeGyLlVaygO9ZU0wwsN65iSh91GI3tMIA5wbDR0Hts/9ABvt9eafHbowS+4SZXN0i9mYnKg7op1eiB8nMEAGsPJg3DwsmUrh3ACAapQ6eYHiJpo59RXDqKlRcXwo7wsEFp//5LgQWbPj0NP3nxnywdpozqSAeq6236qlhE9BT9eiyJ41V9sMelYFEWMlUAltR40NdbIrHB0J3nmfuLJz44/sTwWf6P1khOy//XX0="}],"legacy":false}

customModel
设置 NPC 将使用的 ModelEngine 自定义模型。
| 键 | 值 | 默认值 |
|---|---|---|
customModel | 字符串 | 无 |
示例
customModel: MY_MODEL_ONE
arena
设置 NPC 将为之打开菜单的竞技场的文件名(需要 ARENA_MASTER interactionType)。
| 键 | 值 | 默认值 |
|---|---|---|
arena | 文件名 | 无 |
示例
arena: my_arena.yml
command
设置 NPC 将运行的命令(需要 COMMAND interactionType)。命令以玩家身份执行,而非以控制台身份。不要包含开头的斜杠(/)。
| 键 | 值 | 默认值 |
|---|---|---|
command | 字符串 | 无 |
示例
command: say Look at me running a command, how cool!
![]()
spawnLocation
设置 NPC 的生成位置。你应当通过 /em place npc <npcfilename.yml> 命令来设置此项。
| 键 | 值 | 默认值 |
|---|---|---|
spawnLocation | 字符串 | 无 |
示例
spawnLocation: my_world,10,50,10,0,0
spawnLocations
设置 NPC 的生成位置。你应当通过 /em place npc <npcfilename.yml> 命令来设置此项。
| 键 | 值 | 默认值 |
|---|---|---|
spawnLocations | 字符串列表 | 无 |
示例
spawnLocations:
- my_world,10,50,10,0,0
- my_world,-10,50,-10,0,0
instanced
设置 NPC 是否应被实例化(用于实例地下城)。当设置为 true 时,NPC 会自动为每个地下城实例克隆一份,每个克隆体存在于对应的实例世界中。
| 键 | 值 | 默认值 |
|---|---|---|
instanced | 布尔值 | false |
示例
instanced: false
syncMovement
设置 NPC 的移动是否应被同步。用于控制 NPC 的位置更新是否被同步。
| 键 | 值 | 默认值 |
|---|---|---|
syncMovement | 布尔值 | true |
示例
syncMovement: true
NPC 配置示例
isEnabled: true
name: "&cRed Rubin"
role: "&a<Generic NPC>"
profession: NITWIT
greetings:
- Hiya!
- Hello!
dialog:
- Great conversation!
- Pleasure talking with you!
farewell:
- Goodbye!
- Laters!
canTalk: true
activationRadius: 4
interactionType: CHAT
timeout: 0
questFileName:
- my_quest.yml #npc interactionType must be set to CUSTOM_QUEST_GIVER
disguise: SKELETON
customDisguiseData: #used when a custom libsdisguise is being set
customModel: MODEL_ONE
arena: my_arena.yml #npc interactionType must be set to ARENA_MASTER
command: say Hello World! #npc interactionType must be set to COMMAND (do not include the leading slash)
spawnLocation: my_world,584,55,127,90,10 #remember that NPCs use pitch and yaw to set where they are looking at. this is also automatically set when running the /em place npc <npcfilename.yml> command, so make sure you pose where you want the NPC to be facing when running the command.

特殊 [1]
以下是有效的 NPC 交互类型列表:
| 类型 | 描述 |
|---|---|
GUILD_GREETER | 打开武器技能加成选择菜单 |
CHAT | 右键点击会循环切换 dialog |
CUSTOM_SHOP | 打开自定义商店菜单 |
PROCEDURALLY_GENERATED_SHOP | 打开程序生成商店 |
BAR | 未实现。告知玩家该功能即将推出。 |
ARENA | 不执行任何操作。请改用 ARENA_MASTER。 |
QUEST_GIVER | 打开程序生成任务菜单 |
CUSTOM_QUEST_GIVER | 打开 questFileName 中所设特定任务的任务菜单 |
NONE | 无交互 |
SELL | 打开出售菜单 |
TELEPORT_BACK | 将玩家传送回他们上次所在的非 elitemobs 世界位置 |
SCRAPPER | 打开拆解菜单 |
REPAIRMAN | 打开修理菜单 |
ENCHANTER | 打开附魔菜单 |
REFINER | 已替换 —— 告知玩家该功能已被替换;建议管理员移除该 NPC |
SMELTER | 已替换 —— 告知玩家该功能已被替换;建议管理员移除该 NPC |
ENHANCER | 已替换 —— 告知玩家该功能已被替换;建议管理员移除该 NPC |
UNBINDER | 打开解绑菜单 |
ARENA_MASTER | 打开 arena 中所设竞技场的竞技场菜单 |
COMMAND | 运行 command 中所设的命令 |
SCROLL_APPLIER | 将精英物品卷轴应用到物品上 |
ARROW_SHOP | 打开箭矢商店菜单 |
GAMBLING_BLACKJACK | 打开二十一点赌博游戏 |
GAMBLING_COINFLIP | 打开抛硬币赌博游戏 |
GAMBLING_SLOTS | 打开老虎机赌博游戏 |
GAMBLING_HIGHERLOWER | 打开猜大小赌博游戏 |
关于 SCRAPPER 及类似交互类型的更多信息,请点击 这里。
NPC 行为说明
NPC 有几种硬编码的、无法配置的行为:
- AI 已禁用:NPC 无法自主移动。它们会停留在生成位置。
- 角色身份显示:角色身份文本显示在 NPC 上方固定高度处的一个隐形盔甲架上。
- 对白冷却:NPC 在两次说话事件之间会等待 3 秒,以防止消息重叠。
- 区块生命周期:当 NPC 所在区块卸载时它们会消失,区块重新加载时它们会重新生成。
