Skip to content

Configuration

Evarius edited this page Jul 30, 2026 · 1 revision

RP Voice Additions

RP Voice Additions is a standalone Fabric extension for [Simple Voice Chat](https://modrepo.de/minecraft/voicechat/overview). The mod adds configurable speaking ranges, telephones, emergency numbers, radio channels, and an optional cellular network without modifying Simple Voice Chat itself.

Requirements

  • Minecraft 1.21.8
  • Java 21
  • Fabric Loader 0.19.3 or newer
  • Fabric API
  • Simple Voice Chat with API 2.6.20 or newer, installed on both client and server

Features

  • quiet, normal, shout, and scream speech modes with server-defined ranges
  • mobile phone item with a persistently assigned phone number and contacts
  • direct calls by player name, phone number, or contact name
  • server-validated contact management and persistent call history
  • configurable, unique phone numbers based on an area-code and digit scheme
  • answering, declining, hanging up, private handset mode, and spatial speaker mode
  • freely configurable emergency numbers and routing to players on a scoreboard team
  • radio device with configurable channels and optional team protection
  • toggleable radio transmission (TX) while the surrounding environment remains audible
  • optional radio range limitation
  • placeable and persistently registered cell towers
  • dedicated Phone and Radio volume controls in Simple Voice Chat
  • standalone portrait phone GUI and compact radio GUI
  • configurable device items, including terranexus:mobile_phone
  • registered Minecraft keybindings and a configurable communication HUD
  • optional TerraNexus phone app and institution-based radio permissions

Normal proximity voice chat is not suppressed during telephone or radio transmissions. Nearby players therefore continue to hear the speaker spatially.

Usage

Speaking

/rpvoice
/rpvoice range
/rpvoice range <quiet|normal|shout|scream>

Native whispering from Simple Voice Chat remains available and is not overridden by the additional modes. WHISPER can be included in the mode cycle defined in speech.json. Because the public Simple Voice Chat API 2.6.20 does not provide a setter for the microphone whisper state, the native SVC whisper key must still be used. RP-VCA detects the actual packet state server-side and indicates in the HUD when the SVC key is still required.

Phone

/phone
/phone call <player|number|contact>
/phone answer
/phone decline
/phone hangup
/phone speaker
/phone contacts
/phone contacts add <name> <number>
/phone contacts remove <name>

Right-clicking with a configured phone opens the portrait GUI. It provides a dial pad, contacts, emergency calling, call history, call controls, and optional apps. Contacts and individual call-history entries can be managed directly. A second confirmation is required before the entire history is cleared.

The interface appears as a non-blurred handheld device in the lower-right corner. TerraNexus apps are displayed only when the optional server-side integration is actually available.

Radio

/radio
/radio channels
/radio tune <channel>
/radio transmit
/radio off

Right-clicking with a configured radio opens the compact radio interface. The player’s voice is routed to the channel only while TX is enabled or the radio PTT key is held down.

The radio also remains in the lower-right corner over the unchanged game world and uses its own technical LCD and hardware-style interface instead of the smartphone grid.

Keybindings and HUD

The RP Voice Additions category appears in the Minecraft control settings. By default, the accent key is assigned to changing the speech mode, P to the phone, R to the radio, and left Alt to radio PTT. Direct modes and call-control keys are initially unassigned so that existing bindings are not overwritten.

The HUD displays the speech mode, range, call status, remote participant, speaker mode, radio channel, and RX/TX state. Its position and visible sections are configured in hud.json.

Administration

/rpvoice reload
/celltower list

Both commands require operator permission level 2. Cell towers are registered when the rp-vca:cell_tower block is placed and removed again when the block is broken.

Configuration

On first startup, the following files are created under config/rp-voice-additions/:

  • speech.json – speech modes and ranges
  • phone.json – phone settings, phone-number length, ring duration, and speaker range
  • emergency.json – emergency numbers and responsible scoreboard teams
  • radio.json – radio channels, team access, dimension restrictions, and optional maximum range
  • infrastructure.json – cellular-network activation and range
  • devices.json – permitted item IDs for phones and radios
  • hud.json – HUD visibility, position, and display duration
  • compatibility.json – TerraNexus apps and institution-to-radio-channel mappings
  • client.json – local radio volume configured through the radio GUI

With phone.requireCoverage=true, both call participants require cellular coverage. infrastructure.enabled=true enables coverage checks against placed towers. An active call is disconnected if coverage is lost.

Protected emergency and radio roles deliberately use vanilla scoreboard teams so that no roleplay core mod or permissions mod is required:

/team add police
/team join police <player>

Player data and tower positions are stored per world under <world>/rp-voice-additions/.

TerraNexus

When the mod ID terranexus is present, the TerraNexus application overview is offered as an app. To allow a TerraNexus item to open the RP-VCA phone as well, its item ID can be added to devices.json. Without TerraNexus, the default configuration contains no TerraNexus item assignment or visible integration. The integration is loaded through reflection and is automatically disabled when TerraNexus is missing or incompatible.

compatibility.json maps an institution ID, name, or type to a list of radio channels. A player receives access when any of their TerraNexus memberships matches the selected channel. Vanilla scoreboard teams remain active in parallel as a fallback.

Building

./gradlew build

The finished artifact is then located in build/libs/.

Technical Structure

Simple Voice Chat provides the microphone packets. A central server-side routing layer forwards the same Opus packet to private phone channels, spatial speaker channels, or radio recipients as required. Phone, radio, infrastructure, and speech states remain separate services and interact only through clearly defined queries.

Simple Extension Points

  • Additional phone apps implement PhoneIntegration and are provided through the CompatibilityManager.
  • Additional permission sources can be combined in RadioPermissionResolver.
  • New client actions are added as server-validated DeviceActionPayload actions.
  • Encryption and relays can build on the existing channel-specific voice-chat categories.

Public Integration API

After checking whether the Fabric mod is loaded, optional mods can access the active PhoneService through RpVcaApi.getPhoneService(). Public methods are available for contact mutations, immutable contact and history views, history deletion, phone-number allocation, and call control. Internal PlayerProfiles objects are not exposed through the service locator.

Institution mods can provide radio memberships through RpVcaApi.registerInstitutionMembershipProvider(...). RP-VCA does not use reflection or directly access external storage classes for this purpose. Optional devices, apps, and institution keys are registered through public providers in RpVcaApi.

Starting with schema 2, the player file additionally contains callHistory. Existing profiles without this field are migrated with an empty list when loaded; existing phone numbers and contacts are preserved.

Administrative history deletion:

/rpvoice phone history clear <player>
/rpvoice phone history clear-all

The required operator permission level is configured in phone.json through historyAdminPermissionLevel.