- 版权类型
- 原创
- 插件中文名称
- 星陨躲猫猫
- 插件英文名称
- StarDmm
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- Purpur
- 语言支持
- 中文(简体)
- 前置组件
- LibsDisguises 11.x https://www.spigotmc.org/resources/libs-disguises-free.81/
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
- 1.19
[MD]
### StarDmm — 星陨躲猫猫
星陨大陆自研躲猫猫插件,在服务器上实际运行打磨了一年多(1.0 → 1.17.1,六十余个版本迭代)。**任意地点开局,不需要专用地图**:抓人者原地 `/dmm start`,范围内玩家收到可点击邀请即可开局。
[/MD]

[MD]
**核心特性**
- **真方块实体化**:躲藏者变成范围内的方块自由移动;右键「定点罗盘」把脚下**实体化为世界真方块**——放置语义保证不可能与其他方块重叠隐身,锁定态与地形 100% 一致、无 F3+B 碰撞箱
- **锁定即旁观**:实体化锁定后进入旁观模式自由飞行观察(真方块即身体),**双击 Shift 解除固定**恢复移动伪装
- **硬墙边界**:出界位置自动夹紧(可沿墙滑动),跨世界传送取消,粒子墙靠近时显示;支持正方体/球形/圆柱三种边界,多场并行且范围自动拒绝重叠
- **防自由相机**:躲藏阶段对所有躲藏者伪装按观察者包级隐藏 + 失明双保险——抓人者无论开不开 FreeCam 类 mod,看到的都是"没有躲藏者的地形",信息对等
- **背包绝对安全**:入场备份整背包+药水快照,带魔数信封格式、副本双保险(内存+数据库)、崩溃开机自动归还、孤儿备份状态感知——宁可重复发放绝不丢物品
- **计分防刷**:完整打完一局分数才作数,提前退出/掉线/越界判罚本场作废;最后一名躲藏者主动退出不再判抓人者胜(防小号循环刷进度)
- **阶段奖励**:按历史累计统计判定里程碑,每人每档只发一次;奖励支持 Vault 金币 / PlayerPoints 点券 / 控制台指令(带白名单+审计日志)/ 物品模板(GUI 拖入即捕获,保留附魔等全部元数据),全图形化编辑
- **统计排行**:SQLite 默认 / MySQL 可选,8 维历史统计、`/dmm top` 多字段排行榜、16 个 `%stardmm_*%` 占位符
- **移动态伪装严谨**:LibsDisguises FALLING_BLOCK 外观(唯一"整块外观+可被攻击"的方案),方块实体家族(箱子/旗帜/告示牌等 ~114 种)、双格方块、墙体变体、无模型薄片全部代码级排除——伪装后不会透明
- **领地/插件兼容**:实体化走程序化 API 不触发 BlockPlaceEvent,领地内畅通;针对 CMI 罗盘冲突已改用回收罗盘;提供 `%stardmm_in_game%` 配合 CustomNameplates 隐藏游戏内聊天气泡
- **基岩友好**:无法点击聊天的玩家可手动输入 `/dmm join <邀请码>` 加入
**前置要求**
[/MD]
| 依赖 | 必需性 | 说明 |
| Paper 1.19.4+ | 必需 | Paper 及其分支(Purpur 等);单 jar 兼容 1.19.4 ~ 最新版 |
| LibsDisguises 11.x | 必需(硬依赖) | 移动态方块伪装;11.x 自带 PacketEvents,**无需 ProtocolLib** |
| Java 17+ | 必需 | |
| PlaceholderAPI | 可选(软依赖) | 提供 `%stardmm_*%` 占位符 |
| Vault | 可选(软依赖) | 金币类阶段奖励 |
| PlayerPoints | 可选(软依赖) | 点券类阶段奖励 |
[MD]
**安装**
1. 把 `StarDmm-1.17.1.jar` 放入 `plugins/` 文件夹,重启服务器
2. 确认已安装 LibsDisguises 11.x
3. 按需修改 `plugins/StarDmm/config.yml`(时长/范围/材质排除/边界/计分/奖励),`/dmm reload` 热重载
4. (可选)在 `rewards.yml` 或 `/dmm rewards` GUI 配置里程碑奖励
**快速上手(3 步开一局)**
1. 抓人者:`/dmm start [范围] [人数] [躲藏时间] [寻找时间]`,如 `/dmm start 30 5 1m 5m`(自定义参数需 `stardmm.start.custom` 权限,默认 op)
2. 附近玩家点击聊天邀请(或 `/dmm join <邀请码>`)加入 → 自动备份背包、变成随机方块开始躲藏
3. 躲藏者右键罗盘实体化为真方块,抓人者限时找齐即获胜;红床双击可随时退出
**指令一览**
[/MD]
| 指令 | 权限 | 说明 |
| `/dmm start [范围] [人数] [躲藏时间] [寻找时间]` | stardmm.play | 以当前位置为中心开局;自定义参数需 `stardmm.start.custom`(默认 op) |
| `/dmm join <邀请码>` | stardmm.play | 通过邀请(点击或手动输入)加入 |
| `/dmm quit` | stardmm.play | 退出游戏(也可用红床道具双击) |
| `/dmm back` | stardmm.play | 灵魂拉回方块处(仅锁定态) |
| `/dmm toggle` | stardmm.play | 开关接收邀请(偏好持久化) |
| `/dmm stats [玩家]` | stardmm.admin | 查看战绩 |
| `/dmm top [页码] [字段]` | stardmm.admin | 历史排行(得分/场次/抓到人数/胜场等 7 字段) |
| `/dmm rewards` | stardmm.admin | 阶段奖励 GUI 编辑器 |
| `/dmm stop [玩家]` | stardmm.admin | 强制结束该玩家所在场次 |
| `/dmm reload` | stardmm.admin | 热重载 config.yml + messages.yml |
[MD]
时长写法:`90`(秒)/ `90s` / `1m` / `1m30s` / `1h`。
**权限一览**
[/MD]
| 权限 | 默认 | 说明 |
| `stardmm.play` | 玩家 | 参与躲猫猫 |
| `stardmm.start.custom` | op | `/dmm start` 自定义参数 |
| `stardmm.admin` | op | 管理指令与奖励 GUI(奖励可配置控制台指令,建议仅授予最高管理员) |
[MD]
**玩法机制**
- 躲藏者变身随机方块(材质池自动排除会"透明"的非法材质,可在 config 追加排除),22.5° 扇区跟随视角原地转头旋转
- 找到判定:攻击/右键命中躲藏者实体,或对真方块开始破坏/破坏/箭矢/右键(`found-by.*` 可各自开关);间接伤害(宠物/TNT/药水云)不算找到
- 灵魂机制:`soul-max-seconds` 到时拉回方块一次(不解除锁定),`soul-leash` 缰绳与 `/dmm back` 持续生效
- 寻找阶段最后 `game.shuffle-blocks-remaining`(默认 1 分钟)未锁定者方块洗牌重随(可配预告提前量,0 关闭)
- 游戏内禁拾取/容器/破坏世界/乘骑/飞行/奶桶;入场自动清除隐身等现有药水(结束按剩余时长归还),局外喷溅/滞留药水对参与者无效
- 存活计分:寻找阶段每 15 秒 +2 分(可调可关),action bar 实时提示
- 实体化方块受自然力保护:活塞推拉/火烧/融化/生长均无法破坏或移动,局外人全程零接触
**计分**
烟花 +2 / 山羊角 +3(30s 冷却)/ 存活 +2/15s / 获胜 +10 / 被找到 +1;抓人者每找到一人 +5、限时找齐 +10。
**阶段奖励**:配置在 `rewards.yml`(GUI `/dmm rewards` 与手改等价),领取记录在数据库按 uuid 去重;奖励语法 `money:<n>` / `points:<n>` / `command:<指令>`(`%player%` 替换,受 `rewards.command-whitelist` 白名单约束)/ `item:<键>`。缺前置插件时对应奖励不发并后台告警,下次达标自动重试。
**PlaceholderAPI**:实时 `in_game` `role` `state` `time_left` `hiders_alive` `hiders_found` `hiders_total` `seeker` `radius` `game_points` `game_rank` `top1~3_name/points`;历史 `games_total` `games_seeker` `games_hider` `seeker_founds` `hider_points` `seeker_points` `wins_seeker` `wins_hider`。内置侧边栏与 TAB 记分板冲突时二选一。
**已知边界**
- F3+B 与实体雷达类客户端 mod 无法从服务端禁用(纯插件做不到,需配套客户端 mod 的方案本插件未采用)。缓解:锁定态=真方块完全无碰撞箱,移动态=薄盒不隔墙渲染(无透视)
- FreeCam 类 mod 可绕过失明(客户端渲染效果),默认方案为包级过滤+失明双保险:躲藏阶段抓人者看到的永远是"没有躲藏者的地形",信息与普通玩家对等
- TAB 列表/定位条类工具可能泄露在线状态,服务端无法完全杜绝
- `seeker.hide-vision` 四档可调(FILTER_BLIND 默认 / FILTER / BLINDNESS / NONE)
- 未适配 Spigot(使用 Paper API 与 MiniMessage);未在 1.19.4 以下版本测试
- 有特殊传送类插件(wild/rtp 等)请自行扩充 `escape.blocked-commands`(前缀匹配)
**FAQ**
- **Q:需要专门地图吗?** A:不需要,任意地点开局,边界自动生成,支持多场并行(默认上限 3 场,范围重叠自动拒绝)。
- **Q:会丢背包吗?** A:背包路径是本项目最高优先级红线:入场备份(含药水快照),带格式校验信封,双副本(内存+数据库)存续到归还成功,崩溃重启开机自动归还;孤儿备份在状态不明时只并入空位不动现有物品。
- **Q:基岩玩家能玩吗?** A:能,聊天点击加入或手动 `/dmm join <邀请码>`。
- **Q:和领地插件冲突吗?** A:实体化/还原不触发 BlockPlaceEvent 等事件,领地内可正常使用;游戏内参与者被禁破坏世界,不会踩领地。
- **Q:和 CMI / TAB / CustomNameplates 冲突吗?** A:定点罗盘已改用回收罗盘回避 CMI 冲突;内置侧边栏与 TAB 记分板二选一;`%stardmm_in_game%` 可配合 CustomNameplates 隐藏游戏内气泡(见附带的 bubble.yml 配置说明)。
- **Q:支持 MySQL?** A:支持,`storage.*` 配置(改后需重启)。
- **Q:奖励的指令奖励安全吗?** A:`rewards.command-whitelist` 白名单(词边界前缀匹配)+ 每次发放打后台审计日志,金额/点券有有限性与上限校验。
- **Q:报错了?** A:先贴完整控制台日志。报错栈可直接读行号定位(本插件未混淆)。
**更新日志**
- **1.17.1**(本发布):阶段奖励一致性(发放成功才写领取记录)、指令奖励白名单+审计、刷局口径收紧(仅自然打完计进度)、侧边栏增量刷新与边界粒子性能优化、统计锁按 uuid 分片、多项退出链路审计修复
- **1.17.0**:躲藏阶段防自由相机(per-viewer 包级过滤+失明四档可配)、对局范围不重叠校验
- **1.16.0**:奖励配置回归 rewards.yml(配置归文件、记录归数据库)
- **1.13.0**:阶段奖励系统、`stardmm.start.custom` 权限
- **1.12.0**:存活计分
- **1.11.0**:完整打完分数才作数(防提前退场刷分)
- **1.10.0**:锁定态=纯旁观、双击 Shift 解锁、参数配置化
- **1.9.0 / 1.8.x**:伪装选型定型(FALLING_BLOCK)、真方块实体化、灵魂出窍、硬墙边界、药水快照、红床双击退出、崩溃自愈
**使用条款**
- 允许在自己服务器免费使用,含商用服
- 禁止转载至其他平台/网盘二次分发;禁止反编译修改后以任何名义再发布
- 可自行修改自用,但不提供修改版的技术支持
- 本插件按"现状"提供,请先在测试环境验证再上生产;使用造成的损失作者不承担责任
- 我自己的服务器是 1.21.11 Leaf核心
- bug反馈/交流群:482941718
[/MD]
-
Snipaste_2026-10-28_06-38-52.webp
19 KB
· 查看: 2
-
Snipaste_2026-10-28_06-39-31.webp
36.2 KB
· 查看: 1
-
Snipaste_2026-10-28_06-40-26.webp
8.5 KB
· 查看: 2