- 版权类型
- 原创
- 插件中文名称
- 自定义NPC绑定指令
- 插件英文名称
- LingNpcCommand
- 原帖地址
- #
- 支持的核心(服务端)
- 其他核心
- 语言支持
- 多语言
- 前置组件
- 无硬性依赖,兼容 [辅助]自定义NPC.jar(CustomNPCs 模组)
- 适配版本(Java)
- 1.7
[MD]
## 一、功能强大,自定义强。
右键 自定义NPC模组(CustomNPCs)生成的NPC,即可自动执行你在配置文件中写好的指令。
- 支持 **全局指令** 与 **按NPC名称独立指令** 两种模式,右键任意NPC时先执行全局指令,再执行该NPC专属指令,互不干扰。
- 支持 **无限数量的NPC配置**,一个NPC对应多条指令,指令按顺序依次执行。
- 指令支持 **控制台身份 / 玩家身份** 双模式执行,只需在指令前加 `player:` 前缀即可让玩家本人代为执行。
- 内置 **占位符系统**:`%player_name%`(玩家名)、`%player_uuid%`、`%player_x% / %player_y% / %player_z%`(玩家坐标)、`%npc_name%`(NPC名称)、`%npc_class%`(NPC类名),可自由组合进任意指令中。
- 支持 **每NPC每玩家独立冷却**,防止玩家高频连点刷指令。
## 二、轻量无负担,安全性高。
- 除配置文件外 **没有任何多余储存文件**,冷却记录常驻内存并由定时任务周期清理,无写入、无IO、无数据库,绝不产生垃圾文件。
- **不存在模组不兼容就报错的问题**:插件通过反射访问模组类,即使服务端没有安装自定义NPC模组,插件也能正常加载,只会输出一条提示日志,不影响其他插件。
- 反射字段与方法 **只解析一次并缓存**,并优先以 `isInstance` 快速过滤普通实体,对非NPC实体零反射开销,性能损耗几乎为0。
- 所有关键逻辑均有异常捕获与兜底,单条指令执行失败不会影响后续指令。
## 三、完美联动自定义NPC模组。
- 原生识别 CustomNPCs 模组实体(`EntityNPCInterface`),支持 **按NPC真实名称匹配**,无需额外绑定ID。
- 即便从NPC的DataDisplay中读取不到名称,也会自动回退到实体的 CustomName 甚至类名,保证稳定识别。
- 右键触发后可选择 **取消原版交互**,彻底覆盖NPC自带的对话/任务界面,只执行你的指令,适合做商店、传送、礼包、任务领取等玩法。
- 三个配套权限节点:`lingnpccommend.use`(触发权限,默认所有人)、`lingnpccommend.reload`(重载权限,默认OP)、`lingnpccommend.bypass`(绕过冷却,默认关闭)。
## 四、使用教程
### 主配置文件(config.yml)
```yaml
# 调试模式(控制台输出检测到的NPC信息)
Debug: false
# 右键NPC时是否取消原版交互
CancelInteract: true
# 同一NPC对同一玩家的右键冷却(毫秒), 0 关闭
Cooldown: 1000
# 是否启用全局指令 (右键任意本模组NPC都会执行)
EnableGlobal: false
# 全局指令列表, 支持占位符
Global-Commands:
- "broadcast %player_name% 右键了NPC %npc_name%"
# 按NPC名称配置指令
Npc-Commands:
"管理员":
- "player: say hello %player_name%"
- "give %player_name% minecraft:diamond 1"
"传送使者":
- "player: tp %player_x% %player_y% %player_z%"
```
### 常用指令
```
/lnpc reload 重载配置 (别名 /lingnpccommend, /lnc)
```
[/MD]