Blank DG-LAB
Connect your DG-LAB Coyote 3.0 device to Minecraft for real-time, game-driven haptic feedback.
Blank DG‑LAB is a client‑side mod for Minecraft that transforms in‑game events into physical haptic pulses via the DG‑LAB Coyote 3.0 device. Feel every hit, every fall, every close call – and now, feel every turn, climb, and engine roar with deep Create & Aeronautics integration.
This is a haptic / biofeedback peripheral mod. It contains no sexual themes, NSFW elements, or age‑restricted material. All feedback is purely based on in‑game damage, player actions, and vehicle physics.
✨ Features
🔗 Connection
| Feature | Description |
|---|---|
| QR Code Pairing | Embedded WebSocket server generates a QR code; scan it with the DG‑LAB App to connect instantly |
| No External Backend | The mod runs its own WebSocket server internally – no Node.js or separate backend needed |
| Auto Port Detection | Automatically finds available ports, with a randomize button for quick changes |
| Reconnection Support | Automatically attempts to reconnect if the app disconnects |
| IP Input Sanitization | Handles Chinese punctuation and full‑width numbers in manual IP entry |
🌐 Multiplayer (Damage Exchange)
Multiplayer damage exchange lets damage events flow between players – a great way to enrich co‑op interaction. The mode is server‑authoritative, so everyone agrees on it.
| Feature | Description |
|---|---|
| Master Switch | Global multiplayer damage‑exchange toggle (default: on) |
| Random Forwarding (RANDOM) | A public "random pool": empty by default – players must mutually invite and accept in a popup to join; damage is forwarded randomly only among pool members; no forwarding if you are not in the pool. Any player can always act as a receiver. The same receiver is locked for a single damage event (including the zeroing pulse) so intensity never gets stuck and fails to fade |
| Chain Targeting (CHAIN) | Each player can set their own forwarding target, supporting cyclic chains (A→B→C→A) and multiple players pointing at the same person; received intensity only drives your own device/display and is never forwarded again, avoiding chain amplification |
| Notification Rules (only relevant people) | The victim gets "Your damage was randomly forwarded to XXX"; the selected receiver gets "XXX was hurt – intensity sent to you: A=.. B=.. (lasts N seconds)"; everyone else gets nothing. Continuous damage (fire/poison, etc.) is rate‑limited to avoid spam; duration is shown in seconds |
| Damage Transfer | The victim still takes normal damage; the intensity is forwarded to the receiver, who only feels the intensity and takes no extra damage |
| No‑Hardware Participation (server‑authoritative) | A player with no Coyote hardware connected and "Allow no‑hardware participation" off is automatically removed from multiplayer with a notice. A link forms only when both sides have hardware connected, or both enable "Allow no‑hardware participation"; otherwise the link is rejected on creation, and an established one auto‑disconnects with a notice to both sides |
| Host Admission Policy | The host can control how players without this mod are handled (default: allowed to join) |
| Multiplayer Panel | Open directly in‑game with G (also reachable from the main menu): a scrollable online‑player list; pool "invite/leave"; "set/clear forwarding target"; "release control" (a controlled player can release another player's control over them without the other's action); "global preset sync" entry |
| Global Preset Sync | Requires OP permission, at most once every 10 seconds; the initiator reports the results of all participating players grouped and sorted by "declined / accepted"; receivers get an accept/decline popup; accepting applies the preset and channel mode |
| Controlled‑Player Combat Notice | When a controlled player is hurt, the corresponding intensity value is shown in chat (toggleable) |
| HUD Multiplayer Link | Inside the dark semi‑transparent panel, below the "Coyote connected/disconnected" status line, shows your own chain "previous → you → next" (missing parts omitted) |
| Coyote Connection Icons | Shows a Coyote connection status icon before the player's name above their head and before names in the vanilla Tab player list (green = connected, gray = not connected with a red slash); each has its own toggle (default: on) |
✈️ Vehicle Integration (Create + Aeronautics)
Requires the respective mods; integration features auto‑hide when absent, without affecting base features.
- Create: Aeronautics: vehicle speed / steering / altitude / collision map to haptic intensity, with a fading pulse on balloon damage; includes Light / Medium / Strong / Extreme presets and a custom curve.
- Create: engine RPM vibration, overheat/damage alert pulses, and mechanical‑operation micro‑vibrations.
⚡ Damage & Status Detection
| Category | Description |
|---|---|
| Combat Damage | Independent multiplier, min/max strength, and pulse duration for each damage type |
| Damage Types | Generic, Projectile, Fire, Fall, DoT, Magic, Explosion, Drown, Environmental, Death, Attack, Block Break |
| Low Health Trigger | Continuous pulses below max health (independent strength per 10% lost) |
| Low Hunger Trigger | Continuous pulses below max hunger (independent strength per 10% lost) |
| Absorption Hearts | Golden apple absorption counts as effective health |
| Creative/Spectator Immunity | All haptic feedback automatically disabled in creative or spectator mode |
| Pause Detection | Health/hunger checks paused when the game is paused (ESC) |
📊 Strength System
| Feature | Description |
|---|---|
| Single Max‑Strength Limit | Strength uses the in‑game Max Strength (default 40) as the sole cap (no longer depends on the APP‑reported limit); APP‑side limits must be set manually and cannot be synced |
| A/B Independent Channels | Each channel is tracked independently |
| Float Precision Stacking | All damage contributions use float arithmetic, rounded only at final output |
| Auto Clamping | Output strength never exceeds Max Strength |
🖥️ HUD Display
| Feature | Description |
|---|---|
| 4 Visual Styles | BAR, WAVE, PULSE, NUMBER |
| Draggable Position | In‑game HUD editor with drag‑and‑drop positioning |
| Adjustable Scale | 0.5× to 2.0× zoom |
| Smooth Animation | Linear interpolation: fast rise on damage, gradual fall on recovery |
| Connection Status | Shows "✓ Connected" or "✗ Disconnected" |
| Pause‑Aware | Wave and pulse animations freeze when the game is paused |
| Semi‑transparent Background | Light overlay for readability on any scene |
⚙️ Configuration (YACL)
| Feature | Description |
|---|---|
| Quick Access | Press B to open the main menu (HUD position editor, Multiplayer Panel, QR Code Connect, Back to Game); press G to open the Multiplayer Panel directly, or access YACL directly |
| Fine Tuning | Independent multiplier, min, max, and duration for each damage type |
| Preset System | Save, load, import, and export strength presets (scrollable list) |
| Built‑in Presets | Light, Medium, Heavy, Extreme – ready out of the box |
| Safe Import | Confirmation dialog when importing presets that exceed current limits |
🌍 Current Version Support
| Protocol | Minecraft | Loader | Status |
|---|---|---|---|
| V4 | 26.1 / 26.1.1 / 26.1.2 / 26.2 / 26.3 | Fabric / NeoForge | ✅ Released |
| V4 | 1.21.11 | Fabric | ✅ Released |
| V4 | 1.21.1 | NeoForge | ✅ Released |
| V4 | 1.20.1 | Fabric / Forge | ✅ Released |
Note: A Create Edition (Create integration special edition) is also available for 1.21.1.
📋 Requirements
Required Software
| Item | Requirement |
|---|---|
| Minecraft | 26.1 / 26.1.1 / 26.1.2 / 26.2 / 26.3 / 1.21.11 / 1.21.1 / 1.20.1 |
| Mod Loader | Fabric ≥ 0.18.0 / NeoForge / Forge |
| API | Fabric API / NeoForge / Forge (no separate API required) |
| YACL | ≥ 3.9.0+26.1-fabric (26.x) ≥ 3.9.0+1.21.1-neoforge (1.21.1) |
| Java | ≥ 25 (26.x) · ≥ 21 (1.21.x / 1.20.1) |
The Fabric API version must match your Minecraft version; just choose the latest YACL version for your loader.
Optional Dependencies
| Mod | Purpose |
|---|---|
| Create | Enables engine vibration and mechanical feedback |
| Create: Aeronautics | Enables speed, steering, altitude, and collision feedback |
| CC:Sable | Improves Aeronautics vehicle detection accuracy (recommended) |
Hardware
- DG‑LAB Coyote 3.0 device
- A mobile phone with the official DG‑LAB 4.0+ App
🚀 Quick Start
| Step | Action |
|---|---|
| 1 | Drop blankdglab-<version>.jar into your mods folder (and install loader dependencies) |
| 2 | (Optional) Install Create and/or Aeronautics for full vehicle feedback |
| 3 | Press B in‑game to open the main menu |
| 4 | Click "QR Code Connect", then scan the QR code with the DG‑LAB App |
| 5 | In the App's SOCKET Control page, tap the + button on the A/B channel limits to set your desired maximum |
| 6 | Select your preferred waveform in the App, then tap the Start button |
| 7 | Start playing – the HUD showing "✓ Connected" means everything is ready |
⚠️ Important (latest version): To respect your waveform choice, the mod only sends digital strength values – it does not send waveforms. The signal is sent only after you select the waveform you want and tap the Start button in the App; the device will then output the haptic feedback.
⚙️ Configuration
All settings are accessible via B → main menu → settings, or directly through YACL.
Configuration is saved to config/blankdglab.json.
Connection Settings
| Setting | Description | Default |
|---|---|---|
| Server Port | Embedded WebSocket server port | 8877 |
| Manual IP | Override auto‑detected IP (leave empty for auto) | - |
| Channel Mode | Dual / A only / B only; with A only the B cap is grayed out, and vice versa | Dual |
| Max Strength | Game‑side strength cap (sole limit) | 40 |
| Min Strength | Minimum pulse strength | 0 |
| Sync A/B Channels | Send combined strength to both channels | true |
Port fallback: The default port is 8877. If it is occupied, the mod falls back automatically – it first tries 20000–21000, then ports near the configured one, and finally 8877–8900; if all are occupied it reports a clear error. The QR screen provides a "randomize port" button (random within 20000–20999, avoiding the system's dynamic port range). If it falls back into the 20000 range, the actual port is written back to the config and saved, keeping "configured port / displayed port / QR content" consistent.
Multiplayer Settings
| Setting | Description | Default |
|---|---|---|
| Multiplayer Damage Exchange | Global multiplayer toggle | On |
| Forwarding Mode | Random / Chain | Random |
| Players Without Mod | Host admission policy (allow to join, etc.) | Allow |
| Allow No‑Hardware Participation | Join multiplayer without hardware connected | On |
| Controlled‑Player Damage Notice | Chat notice when receiving forwarded intensity | On |
| Coyote Icon on Nametag | Show connection icon before the name above the player's head | On |
| Coyote Icon in Player List | Show connection icon before the name in the Tab list | On |
Damage Feedback
Each damage type has independent settings for the following three items:
| Setting | Description |
|---|---|
| Enable | Toggle haptic feedback for this damage type |
| Strength A / B | Pulse strength for channel A and B |
| Pulse Duration | Pulse duration in milliseconds |
Supported types: Generic, Projectile, Fire, Fall, DoT, Magic, Explosion, Drown, Environmental, Death, Attack, Block Break
Status Feedback
| Setting | Description | Default |
|---|---|---|
| Low Health Feedback | Pulse when below max health | true |
| Low Health Strength / 10% | Strength per 10% health lost | 5 |
| Low Health Pulse Interval | Milliseconds between pulses | 2000 |
| Low Hunger Feedback | Pulse when below max hunger | false |
| Low Hunger Strength / 10% | Strength per 10% hunger lost | 3 |
| Low Hunger Pulse Interval | Milliseconds between pulses | 3000 |
Aeronautics Feedback
Requires the Create: Aeronautics mod
| Setting | Description | Default |
|---|---|---|
| Speed Feedback | Vehicle speed maps to vibration intensity | true |
| Steering Feedback | Extra pulses based on angular velocity | true |
| Altitude Feedback | Vertical speed controls intensity | true |
| Collision Feedback | Instant strong pulse on impact | true |
| Engine Vibration | RPM maps to continuous vibration | true |
| Fault Warning | Alert pulse on engine damage | true |
| Balloon Damage | Fading pulse on balloon breach | true |
HUD Settings
| Setting | Description | Default |
|---|---|---|
| Show HUD | Toggle HUD visibility | true |
| HUD Style | BAR / WAVE / PULSE / NUMBER | BAR |
| HUD Layout | VERTICAL / HORIZONTAL | VERTICAL |
| HUD Position | Drag‑and‑drop in HUD editor | Left, 30% from top |
| HUD Scale | 0.5× – 2.0× | 1.0 |
Enjoy your haptic Minecraft journey! 🎮
📡 How it Works
Minecraft → Embedded WebSocket Server → DG‑LAB App (phone) → Bluetooth → Coyote Device
The mod embeds a WebSocket server that implements the DG‑LAB SOCKET V4 protocol. When you scan the QR code, the DG‑LAB App connects directly to the mod – no external backend or Node.js server needed. The mod sends structured strength and pulse commands which the App relays to the device via Bluetooth; the waveform itself is chosen by you in the App – the mod never writes waveforms to the App, so the sensation always matches your preference.
For Create/Aeronautics integration, the mod reads vehicle physics data (speed, angular velocity, altitude, RPM) in real time and maps them to haptic intensity using your configured curves.
🔮 Future Plans
✅ Completed
- Multi‑version support – 26.x (Fabric / NeoForge), 1.21.11, 1.21.1, and 1.20.1 (Fabric / Forge) are all supported.
- Socket protocol rewrite (V2 → V4) – All versions have been rewritten on the V4 protocol and released.
- t:4 intensity control fix – All versions use SetTempIntensity absolute strength control, fixing strength stacking over‑limit and missing real output issues.
- Server‑specific gameplay (damage transfer) – Implemented: the multiplayer damage‑exchange system (random forwarding pool / chain targeting / no‑hardware participation / global preset sync).
📋 Planned
- Continued maintenance – Maintaining released branches, fixing known issues, and improving performance.
- Version tracking – Following official Minecraft updates and adding compatibility with future versions.
- Ecosystem integrations – Exploring additional mod integrations based on community feedback.
❓ FAQ
Q: Is this mod allowed on servers?
A: Depends on the version. Versions without the multiplayer damage exchange feature are client‑side only – they affect only your own machine, do not interact with server logic, and need no server‑side installation, so they are normally not considered a violation. Versions that include it (currently only 26.1~26.2) are client + server mods and do introduce server‑side interaction (server‑authoritative forwarding, admission rules, and preset sync), so server‑side cooperation is required and no guarantee can be given that they will not get you banned.
Q: Will it get me banned?
A: Client‑side‑only versions provide no unfair advantage and do not modify server packets, so they normally will not. However, versions that include the multiplayer damage exchange feature (currently only 26.1~26.2) send and receive custom payloads and interact with server‑side logic, so no guarantee can be given – the same will apply if the feature is later added to other versions. Please follow the rules of the server you play on.
Q: Do I need to run a separate backend?
A: No. The mod has its own embedded WebSocket server – just scan the QR code and connect.
Q: Why are the A/B channel limits 0 in the APP?
A: The SOCKET protocol provides no command to set APP‑side limits. After connecting, go to the APP's SOCKET Control screen and manually tap the + button on both A and B channel limits to set them to your desired maximum.
Q: The APP shows strength but there is no actual output – why?
A: In the latest version, to respect your waveform choice, the mod only sends digital strength values and does not send waveforms. Please select the waveform you want and tap the Start button in the APP – only then will the signal be sent and the device output haptic feedback.
Q: Can I use it with other haptic devices?
A: Currently only the DG‑LAB Coyote 3.0 is supported via the official SOCKET protocol.
Q: Do I need Create or Aeronautics for the mod to work?
A: No. Both are optional. Without them, the mod still provides full damage‑based haptic feedback. Flight features are an extra bonus.
Q: Found a bug / have a suggestion – where do I report it?
A: Please open an issue in the GitHub Issues tracker. I follow up on every report.
Q: When scanning the QR code, the App shows "network error – please try again later" but it still connects fine. Why?
A: This is a prompt from the phone‑side DG‑LAB App itself, unrelated to the mod and harmless. The QR content points to an online domain prefix (dungeon-lab.cn); if the phone cannot reach the internet at that moment (LAN only, DNS failure, etc.), the App shows this prompt first – but the actual LAN address to connect to is embedded in the QR parameters, so the App can still read it and connect normally to the mod's WebSocket server. That's why "it warns yet still works". Making the phone able to reach the internet removes the prompt.
Q: How do I use multiplayer damage exchange? What's the difference between random forwarding and chain targeting?
A: See the "Multiplayer (Damage Exchange)" section above – the random pool requires an invitation and popup acceptance to join, and damage is forwarded randomly among pool members; chain targeting requires each player to set their own forwarding target.
Q: Do forwarded / controlled players lose health?
A: No. The victim takes normal damage; the receiver only feels the intensity and takes no extra damage.
💬 Support & Feedback
| Entry | Description | Link |
|---|---|---|
| 📦 Repository | Source code & Releases | Blank-DG-LAB Repository |
| 🐛 Issue Tracker | Report bugs, request features, share ideas | Issues |
| 📖 Wiki | Guides, FAQ & detailed documentation | Wiki |
⭐ Like this mod? Feel free to hit Star on GitHub to show your support – meow! 🐱
📜 License
This mod is licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0). See the LICENSE file for details.
🤝 Acknowledgements
- DG‑LAB for providing the open‑source SOCKET communication protocol
- The Fabric team for the excellent modding toolchain
- The NeoForge / Forge teams for their dedication to the community‑driven loader ecosystem
- YetAnotherConfigLib for the clean configuration GUI framework
- The Create and Aeronautics teams for their incredible mods that made this integration possible
Enjoy your new level of immersion – responsibly!
Last updated: October 2026 | Supports Minecraft 26.1 / 26.1.1 / 26.1.2 / 26.2 / 26.3 / 1.21.11 / 1.21.1 / 1.20.1 | Summer 2026 Edition

