优化 LyOptimize
LyOptimize 是一个面向 DragonCore 客户端显示效果的优化插件。插件通过服务端数据包监听和 DragonCore 客户端通信,允许管理员按玩家单独关闭部分客户端内容,减少模型、粒子、聊天消息和其他玩家实体带来的显示开销。
插件包含 LyOptimize 与 LyOptimize-Core 两个构件。LyOptimize 负责插件入口和授权相关逻辑,LyOptimize-Core 负责服务端功能、玩家数据和数据包监听。
MySQL 前置要求
启用 MySQL 存储时,必须安装 LyMySQLCore,并确认它已经成功连接数据库。只有在配置开启 MySQL 且数据库连接成功时,玩家设置才会读写 MySQL;否则插件会使用本地 YAML 文件保存数据。
插件信息
| 项目 | 内容 |
|---|---|
| 插件名 | LyOptimize |
| 项目版本 | 1.0.2 |
| 作者 | 离渊 |
| 主命令 | /lo |
| 软依赖 | PlaceholderAPI |
| 编译目标 | Java 8 |
| 编译 API | Paper API 1.16.5-R0.1-SNAPSHOT |
| NMS 代码引用 | v1_12_R1 |
项目证据没有提供完整的服务端版本兼容列表。代码同时使用 Paper API 1.16.5-R0.1-SNAPSHOT 和 v1_12_R1 NMS 类,实际运行兼容性应以插件发布包及对应服务端环境为准。
依赖与运行组件
| 组件 | 类型 | 说明 |
|---|---|---|
DragonCore | 必需运行组件 | 插件使用 DragonCore 的客户端通信、模型和粒子接口。 |
ProtocolLib | 必需运行组件 | 插件使用 ProtocolLib 监听服务端聊天、原版粒子、实体元数据和 DragonCore 自定义数据包。 |
LyMySQLCore | MySQL 前置 | 仅在启用 MySQL 存储时必须安装,并且必须成功连接数据库。 |
PlaceholderAPI | 软依赖 | 用于提供 LyOptimize 变量。 |
功能
| 功能 | 说明 |
|---|---|
| 隐藏其他玩家 | 对指定玩家隐藏在线玩家,减少客户端可见玩家实体。 |
| 屏蔽 DragonCore 模型 | 对指定玩家隐藏实体的 DragonCore 模型;关闭屏蔽后刷新当前世界中的实体模型。 |
| 屏蔽其他暴雪粒子 | 屏蔽来源为其他玩家,或无法识别为自身、玩家和怪物的 DragonCore 暴雪粒子。 |
| 屏蔽自身暴雪粒子 | 屏蔽来源为当前查看玩家自身的 DragonCore 暴雪粒子。 |
| 屏蔽怪物暴雪粒子 | 屏蔽来源为怪物实体的 DragonCore 暴雪粒子。 |
| 屏蔽原版粒子 | 取消发送到玩家客户端的原版世界粒子数据包。 |
| 屏蔽自定义消息 | 根据聊天消息 JSON 内容匹配关键词并取消发送消息。 |
| 强制消息屏蔽 | 通过 hide-custom-message 对所有玩家强制屏蔽匹配消息。 |
| 玩家消息屏蔽 | 通过 player-hide-custom-message,仅对开启自定义消息屏蔽的玩家生效。 |
| 玩家设置保存 | 保存七项独立的玩家屏蔽开关。 |
| YAML 存储 | MySQL 未启用或连接不可用时,将玩家数据保存到插件数据目录下的独立 YAML 文件。 |
| MySQL 存储 | MySQL 开启且连接成功时,将玩家数据保存到以插件名命名的数据表。 |
| PlaceholderAPI 变量 | 返回各项屏蔽开关的当前显示状态,可用于菜单或状态文本。 |
支持版本
项目文件明确记录的构建环境如下:
| 项目 | 支持信息 |
|---|---|
| Java | Java 8 |
| Bukkit API | Paper API 1.16.5-R0.1-SNAPSHOT |
| NMS | net.minecraft.server.v1_12_R1 |
项目没有提供完整的服务端版本列表。由于核心代码直接引用 v1_12_R1 NMS,使用其他服务端版本前需要确认插件发布包是否包含对应适配。
玩家设置
插件为每名玩家保存以下七项开关,初次读取时默认均为 false:
| 数据键 | 对应功能 | 默认值 |
|---|---|---|
hideSelfBlizzardParticles | 屏蔽自身暴雪粒子 | false |
hideOtherBlizzardParticles | 屏蔽其他暴雪粒子 | false |
hideMobBlizzardParticles | 屏蔽怪物暴雪粒子 | false |
hideModel | 屏蔽模型 | false |
hideMinecraftEffect | 屏蔽原版粒子 | false |
hideCustomMessage | 屏蔽自定义消息 | false |
hidePlayer | 隐藏其他玩家 | false |
玩家数据会在玩家进入服务器时读取,在玩家退出或设置发生变化时保存。启用 MySQL 时,只有 LyMySQLCore 已安装并成功连接数据库,MySQL 读取和保存才会生效。
指令
插件在 plugin.yml 中注册主命令 /lo。代码中的指令权限判断使用管理员身份判断,执行者需要是 OP;项目没有声明独立的 Bukkit 权限节点。
带有 [玩家] 参数的指令要求目标玩家在线,并且目标玩家已经完成数据加载。
| 指令 | 说明 | 执行要求 |
|---|---|---|
/lo | 查看 LyOptimize 指令帮助。 | OP |
/lo reload | 重载配置和数据包监听器。 | OP |
/lo obp [玩家] | 切换目标玩家的其他暴雪粒子屏蔽。关闭时清理目标玩家当前已存在的相关粒子。 | OP,目标在线 |
/lo mbp [玩家] | 切换目标玩家的怪物暴雪粒子屏蔽。关闭时清理目标玩家当前已存在的相关粒子。 | OP,目标在线 |
/lo sbp [玩家] | 切换目标玩家的自身暴雪粒子屏蔽。关闭时清理目标玩家当前已存在的相关粒子。 | OP,目标在线 |
/lo par [玩家] | 切换目标玩家的全局原版粒子屏蔽,仅处理服务端发送的原版粒子效果。 | OP,目标在线 |
/lo model [玩家] | 切换目标玩家的全局模型屏蔽,并刷新目标玩家当前世界中的生物模型。 | OP,目标在线 |
/lo message [玩家] | 切换目标玩家的自定义消息屏蔽。 | OP,目标在线 |
/lo player [玩家] | 切换目标玩家的隐藏其他玩家功能。 | OP,目标在线 |
配置文件
主配置文件为 plugins/LyOptimize/config.yml,包含以下配置组:
| 配置组 | 用途 |
|---|---|
mysql | 配置玩家设置的 MySQL 存储。数据库开关需要重启服务器。 |
message | 配置切换屏蔽功能时发送给目标玩家的提示。 |
hide-custom-message | 配置对所有玩家强制生效的聊天消息关键词。 |
player-hide-custom-message | 配置仅在玩家开启自定义消息屏蔽后生效的聊天消息关键词。 |
详细配置键、消息内容和关键词匹配规则请查看配置说明。
数据与生效范围
LyOptimize 的屏蔽开关属于查看玩家自己的客户端显示设置:管理员切换的是目标玩家的显示状态,不是全服统一状态。
| 项目 | 生效方式 |
|---|---|
| DragonCore 暴雪粒子 | 根据粒子数据包中的来源 UUID 或位置字段判断来源,再按照自身、其他玩家和怪物分类处理。 |
| 原版粒子 | 监听服务端 WORLD_PARTICLES 数据包,开启后直接取消发送。 |
| 自定义消息 | 检查服务端聊天数据包中的 JSON 内容,匹配关键词后取消发送。 |
| DragonCore 模型 | 监听实体元数据数据包,并向目标客户端发送空模型;关闭时重新发送实体模型。 |
| 其他玩家 | 使用 Bukkit 的玩家显示控制,对目标玩家隐藏或显示在线玩家。 |
页面索引
| 页面 | 内容 |
|---|---|
| 配置说明 | MySQL、提示消息和聊天关键词配置。 |
| 屏蔽功能 | 玩家隐藏、模型、暴雪粒子、原版粒子和消息屏蔽的处理机制。 |
| 插件变量 | PlaceholderAPI 变量及返回值。 |
| 常见问题 | 数据保存、依赖、消息匹配和屏蔽效果排查。 |
| 更新日志 | 插件版本更新记录。 |