Skip to content

Voice Projections

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

Voice Projections

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.


Core Capabilities

1. Directional Audio Anchors

  • The player's microphone audio is routed to emanate from a specified VoiceLocation or Entity in the world.
  • Nearby listeners hear the voice coming directly from the anchor, complete with directional 3D stereo positioning.

2. Unilateral vs. Bilateral Modes

Projections support independent directional flags:

  • emitVoiceAtPlayer (boolean): When true, speech from the player emanates from the anchor.
  • hearPlayerEnvironment (boolean): When true, the player hears audio occurring around the anchor, acting as a remote acoustic surveillance feed.

3. Practical Applications

  • 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.

In-Game Commands

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.

Java API & Integration (Paper & Fabric)

Service Retrieval

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();

Creating Static & Entity Projections

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);

Removing Projections

projectionService.removeProjection(playerUuid);

Inter-Mod & Network Integration (Fabric)

On Fabric servers, camera and drone mods can manipulate voice anchors using packets:

  • ServerBoundProjectionCreatePacket
  • ServerBoundProjectionDeletePacket
  • ClientBoundProjectionSyncPacket

For details, see Network Packets & Protocols.

Clone this wiki locally