Skip to content

Wiretaps & Bugs

Samuel De Oliveira edited this page Sep 30, 2026 · 3 revisions

Wiretaps & Surveillance

The Wiretaps & Surveillance module provides covert listening bugs, real-time eavesdropping subscriptions across infinite distances, and direct physical cassette recording across both Paper / Purpur and Fabric.


Operational Mechanics

1. Static vs. Mobile Bugs

  • Static Wiretaps: Planted on blocks, under tables, or inside vents at fixed coordinates.
  • Mobile Wiretaps: Planted covertly on entities or unsuspecting players using /wiretap attach. The listening radius moves seamlessly with the target.

2. Real-Time Remote Eavesdropping

  • Subscribed listeners (/wiretap listen <name>) receive audio captured by the bug across infinite distance.
  • Audio packets are received privately in the listener's headphones without alerting nearby players.

3. In-Flight Physical Cassette Recording

  • Executing /wiretap record <name> captures audio intercepted by the bug straight to an active recording session.
  • Upon stopping, a physical Cassette item is generated, ready to be analyzed, archived, or played back in an interrogation room.

In-Game Commands

Command Permission Description
/wiretap create <name> [distance] dreamvoice.wiretap.create Plants a static listening bug at your location. Default radius: 12.0.
/wiretap attach <name> <target> dreamvoice.wiretap.attach Dissimulates a bug on an entity or player.
/wiretap detach <name> dreamvoice.wiretap.detach Detaches bug, freezing its location.
/wiretap remove <name> dreamvoice.wiretap.remove Deletes a wiretap bug.
/wiretap list dreamvoice.wiretap.list Lists all active wiretaps and listeners.
/wiretap listen <name> dreamvoice.wiretap.listen Toggles live audio eavesdropping on the bug.
/wiretap record <name> dreamvoice.wiretap.record Starts or stops recording bug audio directly to a cassette.

Java API & Integration (Paper & Fabric)

Service Retrieval

import fr.dreamin.dreamvoice.api.DreamVoiceAPI;
import fr.dreamin.dreamvoice.api.wiretap.service.VoiceWiretapService;
import fr.dreamin.dreamvoice.api.wiretap.model.VoiceWiretap;
import fr.dreamin.dreamvoice.api.model.VoiceLocation;
import java.util.UUID;

VoiceWiretapService wiretapService = DreamVoiceAPI.get().wiretapService();

Creating & Managing Wiretaps

// Create a static bug inside a room:
VoiceLocation bugLoc = new VoiceLocation("minecraft:overworld", 10.0, 64.0, -50.0);
VoiceWiretap bug = wiretapService.createWiretap("Conference_Room_Bug", bugLoc, 12.0f);

// Attach a bug to a suspect entity UUID:
wiretapService.attachToEntity("Suspect_Bug", suspectUuid);

Subscribing Investigators

// Subscribe detective to listen live:
wiretapService.addListener("Conference_Room_Bug", detectiveUuid);

// Later unsubscribe:
wiretapService.removeListener("Conference_Room_Bug", detectiveUuid);

Removing Wiretaps

wiretapService.removeWiretap("Conference_Room_Bug");

Inter-Mod & Network Integration (Fabric)

Spy and surveillance mods on Fabric can deploy, inspect, or listen to bugs dynamically via network packets:

  • ServerBoundWiretapCreatePacket
  • ServerBoundWiretapDeletePacket
  • ServerBoundWiretapSubscribePacket
  • ServerBoundWiretapUnsubscribePacket
  • ClientBoundWiretapSyncPacket

For full details, see Network Packets & Protocols.

Clone this wiki locally