-
Notifications
You must be signed in to change notification settings - Fork 0
Voice Projections
Samuel De Oliveira edited this page Sep 30, 2026
·
3 revisions
The Voice Projections module allows players or plugins to decouple a voice source from the physical player body, projecting sound from virtual anchors, security CCTV cameras, or drones across both Paper / Purpur and Fabric.
- The player's microphone audio is routed to emanate from a specified
VoiceLocationorEntityin the world. - Nearby listeners hear the voice coming directly from the anchor, complete with directional 3D stereo positioning.
Projections support independent directional flags:
-
emitVoiceAtPlayer(boolean): Whentrue, speech from the player emanates from the anchor. -
hearPlayerEnvironment(boolean): Whentrue, the player hears audio occurring around the anchor, acting as a remote acoustic surveillance feed.
- CCTV Surveillance: Players viewing security cameras hear audio directly from the camera feed.
- Drone Relays: A flying drone entity projects announcements across a battlefield.
- Astral / Spectator Projections: Staff or game masters speak into a scene without exposing their physical player avatar.
| Command | Permission | Description |
|---|---|---|
/projection create <name> [target] |
dreamvoice.projection.create |
Creates a static projection point at current location or target. |
/projection attach <name> <target> |
dreamvoice.projection.attach |
Binds projection dynamically to a moving entity. |
/projection remove <name> |
dreamvoice.projection.remove |
Removes a projection anchor. |
/projection list |
dreamvoice.projection.list |
Lists all active projections and parameters. |
/projection emit <name> <true|false> |
dreamvoice.projection.edit |
Toggles whether player voice emanates from anchor. |
/projection hear <name> <true|false> |
dreamvoice.projection.edit |
Toggles whether player hears the anchor's environment. |
import fr.dreamin.dreamvoice.api.DreamVoiceAPI;
import fr.dreamin.dreamvoice.api.projection.service.VoiceProjectionService;
import fr.dreamin.dreamvoice.api.projection.model.VoiceProjection;
import fr.dreamin.dreamvoice.api.model.VoiceLocation;
import java.util.UUID;
VoiceProjectionService projectionService = DreamVoiceAPI.get().projectionService();VoiceLocation anchorLoc = new VoiceLocation("minecraft:overworld", 100.0, 75.0, -150.0);
// Create a static projection anchor:
VoiceProjection staticProj = projectionService.createProjection(playerUuid, anchorLoc);
// Configure bilateral audio (speak from anchor AND listen from anchor surroundings):
staticProj.setEmitVoiceAtPlayer(true);
staticProj.setHearPlayerEnvironment(true);projectionService.removeProjection(playerUuid);On Fabric servers, camera and drone mods can manipulate voice anchors using packets:
ServerBoundProjectionCreatePacketServerBoundProjectionDeletePacketClientBoundProjectionSyncPacket
For details, see Network Packets & Protocols.