- 版权类型
- 原创
- 版权链接
- #
- 语言支持
- 中文(简体)
- 模组加载器
- Forge
- Fabric
- NeoForge
- 前置组件
- YACL≥ 3.9.0 https://www.curseforge.com/minecraft/mc-mods/yacl
YACL≥ 3.6.6 https://www.curseforge.com/minecraft/mc-mods/yacl
- 适配版本(Java)
- 26.x
- 1.21
- 1.20
[MD]
# Blank DG-LAB
**将您的 DG-LAB Coyote 3.0 设备连接到 Minecraft,体验实时、由游戏驱动的触觉反馈。**
Blank DG-LAB 是一款 Minecraft 客户端模组,通过 DG-LAB Coyote 3.0 设备将游戏内事件转化为物理触觉脉冲。感受每一次击中、每一次坠落、每一次死里逃生——通过深度 Create 与 Aeronautics 集成,**感受每一次转向、爬升与引擎轰鸣**。
> **这是一款触觉/生物反馈外设模组。** 不含任何性主题、NSFW 元素或年龄限制内容。所有反馈完全基于游戏内伤害、玩家动作与载具物理。
---
## ✨ 特性
### 🔗 连接
| 功能 | 说明 |
| :--- | :--- |
| 二维码配对 | 内嵌 WebSocket 服务器生成二维码;DG-LAB App 扫码即连 |
| 无需外部后端 | 模组内置 WebSocket 服务器,无需 Node.js 或其他独立服务 |
| 自动端口检测 | 自动查找可用端口,并提供随机化按钮快速更换 |
| 重连支持 | App 断开后自动尝试重连,无需手动操作 |
| IP 输入净化 | 自动识别并处理中文标点与全角数字等手动输入问题 |
### 🌐 多人联机(伤害互换)
多人伤害互换让伤害事件在玩家之间流动,用于丰富联机互动玩法。模式由**服务端权威**决定,全员一致。
| 功能 | 说明 |
| :--- | :--- |
| 总开关 | 多人伤害互换总开关(默认开) |
| 随机转发(RANDOM) | 公共"随机池"机制:默认池为空,需**互相邀请并在弹窗中同意**后才加入;伤害只在池成员之间随机传递;未加入池则不转发。同一玩家始终可作为接收者。**单次伤害事件内锁定同一位接收者**(含归零脉冲),避免强度卡住不消退 |
| 链式定向(CHAIN) | 每个玩家可自行**设置转发目标**,支持形成环链(A→B→C→A)与多人指向同一人;收到的强度仅驱动自身设备/显示,**不会二次转发**,避免链式放大 |
| 提示规则(只提示相关的人) | 受伤者收到"你的伤害已随机转发给 XXX";被选中的接收者收到"XXX 受伤,传给您的强度:A=.. B=..(持续 N 秒)";其他人无任何提示。持续性伤害(烧伤/中毒等)会做限频防刷屏,持续时间以**秒**显示 |
| 伤势传递 | 受伤者**正常扣血**;强度转发给接收者,接收者**只感受到强度、不额外掉血** |
| 无硬件参与(服务端权威) | 未连接郊狼硬件且未开启"允许无硬件参与"时会自动退出联机并提示。一条链路成立的条件是**双方都连接了硬件,或双方都开启"允许无硬件参与"**,否则建立时直接拒绝、已建立的自动断开并提示双方 |
| 房主准入策略 | 房主可设置对**未安装本模组玩家**的处理(默认允许加入) |
| 联机面板 | 游戏内按 `G` 键直接打开(也可从主菜单进入):可**滚轮滚动**的在线玩家列表;随机池"邀请/退出";"设置/解除转发目标";"解除被控制"(被控制方可主动解除他人对自己的控制,无需对方操作);"全局同步预设"入口 |
| 全局预设同步 | 需 OP 权限、每次间隔 10 秒;发起端会**反馈所有参与玩家按"拒绝 / 接受"分组排序的结果**;接收方弹出接受/拒绝弹窗,接受则应用预设与通道模式 |
| 被控方战斗提示 | 被控制方受伤时聊天栏提示对应强度数值(可开关) |
| HUD 联机链路显示 | 在黑底半透明面板内、"郊狼连接/未连接"状态行下方,显示自己链路"上一位 → 自己 → 下一位"(缺失则省略对应部分) |
| 郊狼连接图标 | 在玩家头顶名牌名字前、以及原版 Tab 玩家列表名字前,显示郊狼连接状态图标(**绿色=已连接,灰色=未连接,未连接带红色斜杠**);两项各有独立开关(默认开) |
### ✈️ 载具集成(Create + Aeronautics)
> 需安装对应模组;未安装时集成功能自动隐藏,不影响基础功能。
- **Create: Aeronautics**:载具速度 / 转向 / 高度 / 碰撞映射为触觉强度,气囊损伤渐隐脉冲;提供轻 / 中 / 强 / 极限四种预设与自定义曲线。
- **Create**:引擎 RPM 振动、过热 / 损坏警报脉冲、机械运转微振动。
### ⚡ 伤害与状态检测
| 类别 | 说明 |
| :--- | :--- |
| 战斗伤害 | 每种伤害类型独立配置倍率、最小/最大强度与脉冲时长 |
| 伤害类型 | 通用、弹射物、火焰、坠落、持续伤害、魔法、爆炸、溺水、环境、死亡、攻击、破坏方块 |
| 低生命值触发 | 生命值低于最大值时持续脉冲,每损失 10% 可独立配置强度 |
| 低饥饿值触发 | 饥饿值低于最大值时持续脉冲,每损失 10% 可独立配置强度 |
| 吸收心 | 金苹果提供的吸收心计入有效生命值 |
| 创造/旁观者免疫 | 创造或旁观模式下自动禁用所有触觉反馈 |
| 暂停检测 | 游戏暂停(ESC)时暂停生命/饥饿检测 |
### 📊 强度系统
| 功能 | 说明 |
| :--- | :--- |
| 最大强度唯一上限 | 强度以游戏内配置的「最大强度」(默认 40)为**唯一上限**,不再依赖 APP 上报的上限值 |
| APP 端上限需手动设置 | APP 端的通道上限仍需在 App 内**手动**设置;模组无法代为设置,也无法与其同步 |
| A/B 通道独立 | 每个通道独立跟踪 |
| 浮点精度累加 | 所有伤害贡献使用浮点运算,仅最终输出时取整 |
| 自动钳制 | 输出强度永远不会超过最大强度 |
### 🖥️ HUD 显示
| 功能 | 说明 |
| :--- | :--- |
| 4 种样式 | BAR、WAVE、PULSE、NUMBER 自由切换 |
| 拖放定位 | 游戏内 HUD 编辑器直接拖拽调整位置 |
| 缩放调节 | 0.5× ~ 2.0× 缩放,适配不同屏幕 |
| 平滑动画 | 受伤时快速上升,恢复时渐变下降(线性插值) |
| 连接状态 | 实时显示"✓ 已连接"或"✗ 已断开" |
| 暂停感知 | 游戏暂停时波形与脉冲动画自动冻结 |
| 半透明背景 | 轻量设计,任何场景下均可读 |
### ⚙️ 配置系统(YACL)
| 功能 | 说明 |
| :--- | :--- |
| 快捷入口 | 按 `B` 键打开主菜单(含"HUD 位置编辑""联机面板""二维码连接""返回游戏");按 `G` 键直接打开"联机面板",也可直接通过 YACL 访问 |
| 精细调校 | 每种伤害类型独立设置倍率、最小值、最大值与时长 |
| 预设系统 | 保存、加载、导入、导出强度预设(滚动列表) |
| 内置预设 | 轻、中、重、极限四种预设开箱即用 |
| 安全导入 | 导入超过当前限制的预设时弹出确认警告 |
---
## 🌍 当前版本支持情况
| 协议 | Minecraft | 加载器 | 状态 |
| :---: | :--- | :--- | :---: |
| **V4** | **26.1 / 26.1.1 / 26.1.2 / 26.2 / 26.3** | Fabric / NeoForge | ✅ 已发布 |
| V4 | 1.21.11 | Fabric | ✅ 已发布 |
| V4 | 1.21.1 | NeoForge | ✅ 已发布 |
| V4 | 1.20.1 | Fabric / Forge | ✅ 已发布 |
> 注:1.21.1 另提供 **Create Edition**(Create 集成特别版)。
---
## 📋 环境要求
### 必备软件
| 项目 | 要求 |
| :--- | :--- |
| Minecraft | 26.1 / 26.1.1 / 26.1.2 / 26.2 / 26.3 / 1.21.11 / 1.21.1 / 1.20.1 |
| 模组加载器 | Fabric ≥ 0.18.0 / NeoForge / Forge |
| API | Fabric API / NeoForge / Forge(无需额外 API) |
| YACL | ≥ 3.9.0+26.1-fabric(26.x)<br>≥ 3.9.0+1.21.1-neoforge(1.21.1) |
| Java | ≥ 25(26.x)· ≥ 21(1.21.x / 1.20.1) |
> Fabric API 版本需与 Minecraft 版本匹配;YACL 选择对应的最新版本即可。
### 可选依赖
| 模组 | 用途 |
| :--- | :--- |
| **Create** | 启用引擎振动与机械反馈 |
| **Create: Aeronautics** | 启用速度、转向、高度与碰撞反馈 |
| **CC:Sable** | 提升 Aeronautics 载具检测精度(推荐) |
### 硬件要求
- DG-LAB Coyote 3.0 设备
- 装有官方 DG-LAB 4.0+ App 的手机
---
## 🚀 快速开始
| 步骤 | 操作 |
| :---: | :--- |
| 1 | 将 `blankdglab-<version>.jar` 放入 `mods` 文件夹(并安装对应加载器所需依赖) |
| 2 | (可选)一并安装 Create 和/或 Aeronautics 以获得完整载具反馈 |
| 3 | 游戏内按 `B` 键打开主菜单 |
| 4 | 点击"二维码连接",用 DG-LAB App 扫描二维码 |
| 5 | App 内进入 Socket 控制页,点击 A/B 通道限制的 `+` 按钮设定上限 |
| 6 | **在 App 中选择您喜欢的波形,然后点击「开始」按钮** |
| 7 | 开始游戏,HUD 显示"✓ 已连接"即配置成功 |
> ⚠️ **重要提示(最新版本):** 为尊重您的波形选择,模组仅发送数字强度,**不发送波形**。信号需要您在 App 上选择想要的波形并点击「开始」按钮后才会发送,设备才会实际输出触觉反馈。
---
## ⚙️ 配置说明
所有设置可通过 `B` → 主菜单 → 设置访问,或直接通过 YACL 图形界面。
配置文件保存于 `config/blankdglab.json`。
### 连接设置
| 设置 | 说明 | 默认 |
| :--- | :--- | :---: |
| 服务器端口 | 内嵌 WebSocket 服务器端口 | 8877 |
| 手动 IP | 覆盖自动检测的 IP(留空则自动) | - |
| 通道模式 | 双通道 / 仅 A / 仅 B;仅 A 时 B 通道上限置灰不可调,反之亦然 | 双通道 |
| 最大强度 | 游戏端强度上限(唯一上限) | 40 |
| 最小强度 | 脉冲强度下限 | 0 |
| 同步 A/B 通道 | 将合并后的强度发送至两个通道 | true |
> **端口回退机制**:默认端口为 **8877**。端口被占用时会自动回退——优先尝试 **20000–21000**,其次配置端口附近,最后回退 **8877–8900**;全部占用则明确报错。二维码界面提供"随机化端口"按钮(在 **20000–20999** 中随机,避开系统动态端口范围)。若回退到 20000 段,会把实际端口**写回配置并保存**,确保"配置端口 / 界面显示 / 二维码内容"三处一致。
### 联机设置
| 设置 | 说明 | 默认 |
| :--- | :--- | :---: |
| 多人伤害互换 | 多人联机总开关 | 开 |
| 转发模式 | 随机转发 / 链式定向 | 随机转发 |
| 未装模组玩家 | 房主准入策略(允许加入等) | 允许 |
| 允许无硬件参与 | 未连接硬件也能参与联机 | 开 |
| 被控方伤害提示 | 收到转发强度时聊天栏提示 | 开 |
| 名牌显示郊狼图标 | 玩家头顶名字前显示连接图标 | 开 |
| 玩家列表显示郊狼图标 | Tab 列表名字前显示连接图标 | 开 |
### 伤害反馈
每种伤害类型均独立配置以下三项:
| 设置 | 说明 |
| :--- | :--- |
| 启用 | 切换该伤害类型的触觉反馈 |
| 强度 A / B | A/B 通道各自脉冲强度 |
| 脉冲时长 | 脉冲持续时间(毫秒) |
**支持类型**:通用、弹射物、火焰、坠落、持续伤害、魔法、爆炸、溺水、环境、死亡、攻击、破坏方块
### 状态反馈
| 设置 | 说明 | 默认 |
| :--- | :--- | :---: |
| 低生命值反馈 | 生命低于最大值时触发脉冲 | true |
| 低生命值强度 / 10% | 每损失 10% 生命值的强度 | 5 |
| 低生命值脉冲间隔 | 脉冲间隔(毫秒) | 2000 |
| 低饥饿值反馈 | 饥饿低于最大值时触发脉冲 | false |
| 低饥饿值强度 / 10% | 每损失 10% 饥饿值的强度 | 3 |
| 低饥饿值脉冲间隔 | 脉冲间隔(毫秒) | 3000 |
### Aeronautics 反馈
*需安装 Create: Aeronautics 模组*
| 设置 | 说明 | 默认 |
| :--- | :--- | :---: |
| 速度反馈 | 载具速度映射振动强度 | true |
| 转向反馈 | 角速度触发额外脉冲 | true |
| 高度反馈 | 垂直速度控制强度 | true |
| 碰撞反馈 | 撞击时瞬间强脉冲 | true |
| 引擎振动 | RPM 映射持续振动 | true |
| 故障警告 | 引擎损坏时警报脉冲 | true |
| 气球损伤 | 气囊破裂渐隐脉冲 | true |
### HUD 设置
| 设置 | 说明 | 默认 |
| :--- | :--- | :---: |
| 显示 HUD | 切换 HUD 可见性 | true |
| HUD 样式 | BAR / WAVE / PULSE / NUMBER | BAR |
| HUD 布局 | VERTICAL / HORIZONTAL | VERTICAL |
| HUD 位置 | 在 HUD 编辑器中拖放 | 左侧,距顶部 30% |
| HUD 缩放 | 0.5× ~ 2.0× | 1.0 |
---
**享受您的触觉 Minecraft 旅程!** 🎮
---
## 📡 工作原理
**工作流程:** Minecraft → 内嵌 WebSocket 服务器 → DG-LAB App(手机)→ 蓝牙 → Coyote 设备
模组内嵌一个实现 DG-LAB SOCKET V4 协议的 WebSocket 服务器。当您扫描二维码时,DG-LAB App 直接连接到模组——无需外部后端或 Node.js 服务器。模组发送结构化的强度与脉冲命令,App 通过蓝牙将它们中继到设备;波形由您在 App 中自行选择,模组不会向 App 写入波形,以确保体感始终符合您的偏好。
对于 Create/Aeronautics 集成,模组实时读取载具物理数据(速度、角速度、高度、RPM),并使用您配置的曲线将它们映射到触觉强度。
---
## 🔮 未来计划
### ✅ 已完成
- **多版本支持** —— 26.x(Fabric / NeoForge)、1.21.11、1.21.1、1.20.1(Fabric / Forge)均已支持。
- **Socket 协议重写(V2 → V4)** —— 全部版本已基于 V4 协议完成重写并发布。
- **t:4 强度控制修复** —— 全版本使用 SetTempIntensity 绝对强度控制,修复强度叠加超限与无真实输出的问题。
- **服务器特殊玩法(伤害转移)** —— 已实现多人伤害互换系统:随机转发池 / 链式定向 / 无硬件参与 / 全局预设同步。
### 📋 计划中
- **持续维护** —— 继续维护已发布分支,修复已知问题并持续优化性能。
- **版本跟进** —— 跟随 Minecraft 官方更新,逐步兼容后续新版本。
- **生态集成** —— 根据社区反馈,积极探索与其他模组的联动玩法,拓展模组生态。
---
## ❓ 常见问题
- **问:这个模组在服务器上允许使用吗?**
答:看版本。**不含「多人伤害互换」的版本是纯客户端模组**——只作用于本机,不与服务器逻辑交互、无需服务器安装,通常不会被判定为违规。**含「多人伤害互换」的版本(目前仅 26.1~26.2)是客户端 + 服务端模组**,会引入服务器侧交互(服务端权威的转发、准入与预设同步),需要服务端配合,**因此不保证不会被封禁**。
- **问:会被封号吗?**
答:**纯客户端版本**不提供任何不公平优势、也不修改服务器数据包,一般不会被封。**但含「多人伤害互换」的版本(目前仅 26.1~26.2)会收发自定义数据包并与服务端逻辑交互,无法保证不被封禁**;若后续为其他版本更新该功能,情况同样如此。请以目标服务器的规则为准。
- **问:需要运行独立后端吗?**
答:不需要。模组有自己的内嵌 WebSocket 服务器。只需扫描二维码并连接。
- **问:为什么 APP 中 A/B 通道限制是 0?**
答:SOCKET 协议未提供设置 APP 端限制的命令。连接后,请进入 APP 的 SOCKET 控制页,手动点击 A 与 B 通道限制的 `+` 按钮,将其设置为您期望的最大值。
- **问:为什么 APP 显示强度但没有实际输出?**
答:最新版本为尊重您的波形选择,模组仅发送数字强度、不发送波形。请在 APP 中**选择您想要的波形并点击「开始」按钮**,此后信号才会发送、设备才会输出触觉反馈。
- **问:可以与其他触觉设备一起使用吗?**
答:目前仅支持通过官方 SOCKET 协议连接的 DG-LAB Coyote 3.0。
- **问:需要 Create 或 Aeronautics 才能使用吗?**
答:不需要。两者都是**可选的**。没有它们,模组仍提供完整的基于伤害的触觉反馈。飞行功能是额外加分项。
- **问:发现 bug / 有建议——在哪里反馈?**
答:请访问 [GitHub Issues](https://github.com/kskongbai/Blank-DG-LAB/issues) 提交问题或建议,我会及时跟进。
- **问:扫码连接时 App 提示“网络异常?请稍后再试”,但又能正常连上,这是为什么?**
答:这是**手机端 DG-LAB App 自己弹出的提示,与模组无关,无害**。二维码内容整体指向一个在线域名前缀(`dungeon-lab.cn`),App 扫码后若手机当时无法访问外网(只连局域网、DNS 解析失败等),会先弹这个提示;但真正要连接的局域网地址已内嵌在二维码参数里,App 仍能读取并正常连上模组的 WebSocket 服务器。因此“提示了却又能正常使用”。让手机能访问外网即可不再出现该提示。
- **问:多人伤害互换怎么用?随机转发和链式定向有什么区别?**
答:见上文“多人联机”章节——随机池需邀请并在弹窗中同意后才能加入,伤害在池成员间随机传递;链式定向需各自设置转发目标。
- **问:被转发/被控制的玩家会掉血吗?**
答:不会。受伤者正常扣血,接收者只感受到强度、不额外掉血。
---
## 💬 支持与反馈
| 入口 | 说明 | 链接 |
| :--- | :--- | :--- |
| 📦 仓库 | 模组源码与 Releases 发布 | [Blank-DG-LAB 仓库](https://github.com/kskongbai/Blank-DG-LAB) |
| 🐛 问题反馈 | 提交 Bug 报告、功能建议与改进意见 | [Issues](https://github.com/kskongbai/Blank-DG-LAB/issues) |
| 📖 Wiki | 使用指南、FAQ 与详细文档 | [Wiki](https://github.com/kskongbai/Blank-DG-LAB/wiki/) |
> ⭐ 喜欢这个模组吗?麻烦在 [GitHub](https://github.com/kskongbai/Blank-DG-LAB) 上点一个 **Star** 收藏支持,谢谢喵~🐱
---
## 📜 许可证
本模组基于 **GNU 宽通用公共许可证 v3.0 (LGPL-3.0)** 授权。详情见 `LICENSE` 文件。
---
## 🤝 致谢
* DG-LAB 提供开源的 SOCKET 通信协议
* Fabric 团队提供优秀的模组开发工具链
* NeoForge / Forge 团队对社区驱动加载器生态的奉献
* YetAnotherConfigLib 提供简洁的配置 GUI 框架
* Create 与 Aeronautics 团队创造了令人惊叹的模组,使此次集成成为可能
---
**负责任地享受全新的沉浸体验!**
**最后更新:2026 年 10 月 | 支持 Minecraft 26.1 / 26.1.1 / 26.1.2 / 26.2 / 26.3 / 1.21.11 / 1.21.1 / 1.20.1 | 2026 夏季版**
[/MD]