- 版权类型
- 原创
- 插件中文名称
- 爱NPC
- 插件英文名称
- LoveNPC
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- 其他核心
- 语言支持
- 多语言
- 前置组件
- ProtocolLib
- 适配版本(Java)
- 1.8
[MD]
# LoveNPC
**Hypixel 大厅风格的旋转头颅 NPC 插件**
专为 Spigot 1.8.8 及其分支核心打造,还原 Hypixel 大厅里那些不断旋转、轻柔跳动、头顶环绕粒子、带附魔光辉的头颅 NPC。
---
## ✨ 核心特性
| 特性 | 说明 |
|------|------|
| **持续旋转** | 头颅平滑自转,速度可调 |
| **上下跳动** | 正弦波轻柔起伏,还原大厅手感 |
| **头颅粒子环** | 稀疏粒子围绕头颅持续旋转,贴近 Hypixel 效果 |
| **附魔光辉** | 头颅自带闪光贴图,不显示附魔文字 |
| **自定义皮肤** | 支持玩家名皮肤 / 自定义 base64 材质 |
| **点击指令** | 支持控制台 / 玩家身份执行,可绑多条指令 |
| **权限控制** | 可单独为每个 NPC 设置点击所需权限 |
---
## 🚀 为什么性能好?
LoveNPC 采用 **离屏 NMS 实体 + 纯数据包** 方案:
- NPC 对应的 `EntityArmorStand` **从未加入世界**(不调用 `world.addEntity`)
- 不参与服务端 Tick、不被其他插件/生物感知、不占用实体数量、不写入存档
- 只对「视距内能看见它」的玩家单独发送生成 / 装备 / 移动 / 转头 / 销毁 / 粒子包
- 大厅放大量 NPC 也不会拖垮 TPS 和带宽
点击检测通过 **ProtocolLib** 监听客户端 `UseEntity` 包完成,稳定兼容 1.8.8 生态。
---
## 📦 依赖与环境
| 项目 | 要求 |
|------|------|
| 服务端 | Spigot 1.8.8 或兼容分支核心 |
| Java | JDK 17 |
| 依赖插件 | [ProtocolLib](https://www.spigotmc.org/resources/protocollib.1997/)(必需,建议 4.1~4.4 的 1.8 兼容构建) |
构建:
```bash
mvn clean package
```
---
## 🎮 快速上手
1. 安装 ProtocolLib 与本插件,重启服务器
2. 进入游戏,站在想放 NPC 的位置:
```text
/lnpc create welcome player Notch
/lnpc name welcome &b&l欢迎光临
/lnpc particle welcome true VILLAGER_HAPPY 0.55 8
/lnpc addcommand welcome player spawn
```
3. 完成。玩家点击头颅即可执行绑定指令。
主命令:`/lovenpc`(别名 `/lnpc`),权限 `lovenpc.admin`(默认 OP)。
---
## 📋 常用命令
| 命令 | 说明 |
|------|------|
| `/lnpc create <id> player <玩家名>` | 创建玩家头颅 NPC |
| `/lnpc create <id> texture <base64> [签名]` | 创建自定义材质 NPC |
| `/lnpc remove <id>` | 删除 NPC |
| `/lnpc list` | 列出全部 NPC |
| `/lnpc moveto <id>` | 把 NPC 移到你脚下 |
| `/lnpc setskin <id> player\|texture ...` | 更换皮肤 |
| `/lnpc name <id> <名称>` | 设置显示名(支持 `&` 颜色) |
| `/lnpc glint <id> true\|false` | 附魔光辉开关 |
| `/lnpc rotate <id> true\|false [速度]` | 旋转开关与速度 |
| `/lnpc bob <id> true\|false [高度] [速度]` | 跳动开关与参数 |
| `/lnpc particle <id> true\|false [类型] [半径] [点数]` | 粒子环设置 |
| `/lnpc addcommand <id> console\|player <指令>` | 绑定点击指令(`%player%` 替换为点击者) |
| `/lnpc removecommand <id> <序号>` | 删除指定指令 |
| `/lnpc listcommands <id>` | 查看指令列表 |
| `/lnpc reload` | 重载配置并重建所有 NPC |
---
## ⚙️ 粒子效果(Hypixel 风格)
粒子默认围绕 **头颅** 做水平圆环旋转,参数刻意调成稀疏,避免过厚:
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `type` | `VILLAGER_HAPPY` | 1.8 `EnumParticle` 名称 |
| `radius` | `0.55` | 圆环半径(约半格) |
| `points` | `8` | 圆环上的粒子数量(少而清爽) |
| `y-offset` | `1.7` | 相对脚底高度(普通盔甲架头颅附近) |
小盔甲架建议把 `y-offset` 设为 `0.85` 左右。常用粒子:`VILLAGER_HAPPY`、`FLAME`、`SPELL_WITCH`、`PORTAL`、`HEART`、`REDSTONE`。
---
## 🔐 权限
| 权限节点 | 说明 | 默认 |
|----------|------|------|
| `lovenpc.admin` | 所有管理命令 | OP |
| `lovenpc.use.*` | 可点击所有需要权限的 NPC | 所有人 |
| 自定义节点 | 在配置里为单个 NPC 指定 `permission` | — |
---
## 📝 注意事项
- **玩家皮肤**(`type: PLAYER`)在正版验证服务器上可正确拉取真实皮肤;离线模式可能无法获取。
- **自定义材质**使用 Mojang 签名后的 base64(如 minecraft-heads.com 的 Value 字段),部分材质无需 signature 也可显示。
- 粒子类型必须使用 **1.8 版** `EnumParticle` 枚举名。
- 修改配置后执行 `/lnpc reload` 即可生效。
---
## 💡 设计理念
> 看起来像 Hypixel,跑起来却几乎零负担。
不做真实实体、不广播全服、只给看得见的人发包——这就是 LoveNPC 能在大厅里放心铺满旋转头颅的原因。
---
**LoveNPC** · 让你的 1.8 大厅,多一点熟悉的感觉。
[/MD]