屏蔽功能
LyOptimize 用于让玩家按需屏蔽客户端收到的部分视觉效果、模型、消息和其他玩家。插件通过 /lo 指令切换各项屏蔽状态,并使用 PlaceholderAPI 变量返回当前状态。
插件项目使用 Java 8 编译,构建依赖中声明了 Paper API 1.16.5-R0.1-SNAPSHOT。PlaceholderAPI 为软依赖;需要使用状态变量时必须安装并启用 PlaceholderAPI。
功能概览
| 功能 | 作用 | 玩家是否可以单独切换 |
|---|---|---|
| 其他暴雪粒子屏蔽 | 屏蔽其他来源的暴雪粒子效果 | 是 |
| 自身暴雪粒子屏蔽 | 屏蔽自身产生的暴雪粒子效果 | 是 |
| 怪物暴雪粒子屏蔽 | 屏蔽怪物产生的暴雪粒子效果 | 是 |
| 原版粒子屏蔽 | 屏蔽服务端发送的原版粒子效果 | 是 |
| 模型屏蔽 | 屏蔽全局模型显示 | 是 |
| 自定义消息屏蔽 | 屏蔽配置中由玩家控制的消息关键词 | 是 |
| 玩家隐藏 | 隐藏其他在线玩家 | 是 |
| 强制消息屏蔽 | 按关键词屏蔽消息 | 否,始终生效 |
各项屏蔽状态按玩家分别保存。执行对应指令会切换一次状态,再次执行即可恢复显示或接收。
指令
插件注册的主指令为 /lo。
| 指令 | 说明 |
|---|---|
/lo obp [玩家] | 屏蔽或显示其他暴雪粒子 |
/lo sbp [玩家] | 屏蔽或显示自身暴雪粒子 |
/lo mbp [玩家] | 屏蔽或显示怪物暴雪粒子 |
/lo par [玩家] | 屏蔽或显示全局原版粒子 |
/lo model [玩家] | 屏蔽或显示全局模型 |
/lo message [玩家] | 屏蔽或显示玩家可控消息 |
/lo player [玩家] | 隐藏或显示其他在线玩家 |
项目证据中仅声明了 /lo 主指令,未声明独立的权限节点,因此本文不列出未确认的权限名称。
粒子屏蔽
分类
| 子指令 | 屏蔽对象 |
|---|---|
obp | 其他来源的暴雪粒子效果 |
sbp | 自身产生的暴雪粒子效果 |
mbp | 怪物产生的暴雪粒子效果 |
par | 服务端发送的原版粒子效果 |
par 只针对服务端发送的原版粒子效果,不代表所有自定义粒子或暴雪粒子效果。其他暴雪粒子效果需要使用 obp、sbp 或 mbp 对应的开关。
模型屏蔽
使用以下指令切换全局模型屏蔽:
text
/lo model [玩家]开启屏蔽后,插件会尝试将附近生物模型设置为空;关闭屏蔽后恢复模型显示。
该功能针对全局模型显示,不等同于只隐藏某一个指定生物或某一个指定模型。
消息屏蔽
使用以下指令切换玩家可控消息屏蔽:
text
/lo message [玩家]消息屏蔽分为两部分:
| 类型 | 配置项 | 生效方式 |
|---|---|---|
| 强制屏蔽 | hide-custom-message | 匹配关键词后直接屏蔽消息,不需要玩家开启开关 |
| 玩家可控屏蔽 | player-hide-custom-message | 玩家开启消息屏蔽后,匹配关键词的消息才不会发送给该玩家 |
配置中的消息不是普通的颜色代码文本,而是消息内容经过处理后的 JSON 文本。插件按照关键词进行匹配,因此配置关键词时应使用实际消息中能够匹配到的文字。
多个关键词使用 | 分隔时,同一组中的关键词需要同时匹配到消息,插件才会屏蔽整条消息。
玩家隐藏
使用以下指令切换玩家隐藏:
text
/lo player [玩家]开启后,目标玩家看不到其他在线玩家;关闭后重新显示其他在线玩家。
PlaceholderAPI 变量
LyOptimize 声明了对 PlaceholderAPI 的软依赖。安装并启用 PlaceholderAPI 后,可以在菜单按钮名称、按钮描述或状态提示中使用以下变量。
| 变量 | 返回内容 |
|---|---|
%lo_obp% | 其他暴雪粒子是否屏蔽,返回 §7屏蔽 或 §a显示 |
%lo_sbp% | 自身暴雪粒子是否屏蔽,返回 §7屏蔽 或 §a显示 |
%lo_mbp% | 怪物暴雪粒子是否屏蔽,返回 §7屏蔽 或 §a显示 |
%lo_par% | 原版粒子是否屏蔽,返回 §7屏蔽 或 §a显示 |
%lo_model% | 模型是否屏蔽,返回 §7屏蔽 或 §a显示 |
%lo_message% | 自定义消息是否屏蔽,返回 §7屏蔽 或 §a显示 |
%lo_player% | 其他玩家是否屏蔽,返回 §7屏蔽 或 §a显示 |
配置文件
LyOptimize 的默认配置文件为 config.yml。以下配置项均来自插件项目中的默认配置。
数据库配置
| 配置项 | 类型 | 作用 |
|---|---|---|
mysql.enable | 布尔值 | 是否启用数据库存储,默认值为 false |
mysql.databasename | 文本 | 数据库名称 |
mysql.username | 文本 | 数据库用户名 |
mysql.password | 文本 | 数据库密码 |
mysql.port | 数字 | 数据库端口,默认配置为 3306 |
mysql.ip | 文本 | 数据库地址,默认配置为 127.0.0.1 |
数据库开关需要重启服务器后生效。
使用 MySQL 存储时,必须安装 LyMySQLCore,并确保 LyMySQLCore 已成功连接数据库。只有在 LyMySQLCore 已安装且数据库连接成功后,相关 MySQL 存储功能才会生效;仅修改配置但未成功连接数据库时,相关功能不会生效。
状态提示消息
以下配置项用于自定义玩家切换状态时收到的提示消息。配置值支持插件当前配置中使用的颜色代码写法,例如 &7、&a。
| 配置项 | 触发时机 |
|---|---|
message.hide-player | 开启玩家隐藏后 |
message.show-player | 关闭玩家隐藏后 |
message.hide-custom-message | 开启玩家可控消息屏蔽后 |
message.show-custom-message | 关闭玩家可控消息屏蔽后 |
message.hide-other-blizzard-particles | 开启其他暴雪粒子屏蔽后 |
message.show-other-blizzard-particles | 关闭其他暴雪粒子屏蔽后 |
message.hide-self-blizzard-particles | 开启自身暴雪粒子屏蔽后 |
message.show-self-blizzard-particles | 关闭自身暴雪粒子屏蔽后 |
message.hide-mob-blizzard-particles | 开启怪物暴雪粒子屏蔽后 |
message.show-mob-blizzard-particles | 关闭怪物暴雪粒子屏蔽后 |
message.hide-minecraft-particles | 开启原版粒子屏蔽后 |
message.show-minecraft-particles | 关闭原版粒子屏蔽后 |
message.hide-model | 开启模型屏蔽后 |
message.show-model | 关闭模型屏蔽后 |
强制消息屏蔽
配置项:
yaml
hide-custom-message:
- '这是一条关键词|这是第二个关键词|第三个'hide-custom-message 是强制屏蔽关键词列表。匹配到对应关键词后,消息会被屏蔽,不受玩家是否开启消息屏蔽影响。
玩家可控消息屏蔽
配置项:
yaml
player-hide-custom-message:
- '关键词1|关键词2|关键词3'player-hide-custom-message 是玩家可控屏蔽关键词列表。玩家使用 /lo message [玩家] 开启消息屏蔽后,匹配到对应关键词的消息才会被屏蔽。
关键词匹配规则
- 每个列表项是一组匹配条件。
- 同一列表项中的多个关键词使用
|分隔。 - 使用
|分隔的关键词需要同时匹配到同一条消息。 - 关键词应来自实际消息中可匹配的文字,而不是直接照搬普通颜色代码文本。
- 如果配置后没有生效,应根据实际消息内容调整关键词。
状态保存
插件支持使用本地文件或 MySQL 保存玩家的屏蔽状态,具体保存方式由配置决定。
使用 MySQL 存储时必须满足以下条件:
- 已安装 LyMySQLCore。
- LyMySQLCore 已成功连接数据库。
- 修改
mysql.enable后已重启服务器。
未安装 LyMySQLCore、数据库连接失败或未重启服务器时,MySQL 存储不会生效。
菜单接入
这些切换指令适合接入设置菜单。菜单按钮执行对应的 /lo 子指令即可切换状态;按钮名称或描述可以使用 PlaceholderAPI 状态变量显示当前状态。
例如,模型和玩家隐藏状态可以分别使用 %lo_model% 与 %lo_player% 获取。
常见问题
par 为什么没有屏蔽某些特效?
par 只针对服务端发送的原版粒子效果。其他暴雪粒子效果需要使用 obp、sbp 或 mbp 对应的开关。
消息关键词为什么没有生效?
请检查以下内容:
- 关键词是否来自消息实际使用的 JSON 内容。
- 关键词拼写是否与实际消息一致。
- 同一组中使用
|分隔的关键词是否都能在消息中匹配到。 player-hide-custom-message对应的消息屏蔽开关是否已经开启。- 如果仍然无法屏蔽,请改用消息中更稳定、明确的文字片段。
强制屏蔽和玩家可控屏蔽有什么区别?
hide-custom-message 始终生效,匹配到关键词后直接屏蔽消息;player-hide-custom-message 只有在玩家开启 /lo message [玩家] 后才会对该玩家生效。
PlaceholderAPI 变量为什么没有返回内容?
请确认已经安装并启用 PlaceholderAPI。LyOptimize 仅声明了对 PlaceholderAPI 的软依赖,不会替代 PlaceholderAPI 提供变量解析功能。
MySQL 存储为什么没有生效?
请确认已经安装 LyMySQLCore,并且 LyMySQLCore 已成功连接数据库。mysql.enable 修改后还需要重启服务器;仅修改配置但未成功连接数据库时,相关 MySQL 存储功能不会生效。