VoiceCraft.Addon (Bedrock Addon)

Repository: AvionBlock/VoiceCraft.Addon

This repository contains practical Bedrock addon packages and the script-side McApi surface for custom world logic.

Use it when Minecraft Bedrock is the source of player/entity state. The addon connects Bedrock worlds to the VoiceCraft server through either McHttp or McWss, then exposes bind flow, UI, events, and packet helpers for world scripts.

Quick links:

Packages

PackagePurposeUse when
Basicready-to-use bind flow, settings UI, in-game voice indicators, common script eventsyou want a working reference or default Bedrock behavior
Core.McHttpHTTP transport packageyou run Bedrock Dedicated Server
Core.McWsswebsocket / command-tunnel transport packageyou run a local Bedrock world or test setup

Most real Bedrock setups combine a transport package with the behavior/UI pieces needed by the world.

Version alignment

VoiceCraft v1.6.1 requires updating the addon packages together with the client/server release. This release includes in-game voice icons, auto connection quality-of-life, broadcasted events, and McHttp/McWss disconnect fixes that depend on the matching addon-side packages.

Do not upgrade the server/client and leave an old addon package in the world. Mismatched packages can connect but fail later during bind, event, or icon behavior.

Namespace

Across packages:

  • VoiceCraft.Namespace = "voicecraft"

Commands

Basic

  • voicecraft:vcbind <binding_key> permission: Any
  • voicecraft:vcsettings permission: GameDirectors

Core.McHttp

  • voicecraft:vcconnect <hostname> <token> permission: GameDirectors

Core.McWss

  • voicecraft:vcconnect <token> permission: Host
  • voicecraft:data_tunnel [max_string_length] [data] permission: Host

What the Basic package gives you

  • bind / unbind flow
  • player settings UI
  • effect toggles
  • script events for automation
  • in-game indicators used by supported releases

Start from Basic if you want to understand the expected player experience before writing custom addon logic.

Bind flow details

From the current implementation:

  1. a new network entity receives a random 5-character binding key
  2. entity description is updated with the key prompt
  3. player runs voicecraft:vcbind <key>
  4. entity binds to the player
  5. on leave, unbind happens and a new key is generated

Script events:

  • voicecraft:onPlayerBind
  • voicecraft:onPlayerUnbind

VoiceCraft v1.6.1 also broadcasts more addon-side lifecycle and packet events so custom worlds can react without polling the transport layer directly.

The binding key is intentionally short because it is typed in game. Treat it as a temporary link token, not as a long-term secret.

Effects UI

voicecraft:vcsettings currently exposes:

  • Visibility
  • Proximity
  • Directional
  • Proximity Echo
  • Echo
  • Proximity Muffle
  • Muffle

Effects are sent through McApiSetEffectRequestPacket.

What you can customize

  • bind / unbind policy
  • role or tag based restrictions
  • world ID rules
  • position / rotation update behavior
  • staff forms through @minecraft/server-ui
  • packet handlers around the McApi surface

Customize only after a basic stock setup works. That gives you a known-good baseline for transport, bind, and position behavior.

Current limitations

  • Core.McWss stability depends on command and payload limits
  • host/provider restrictions can block the network path required by Core.McHttp
  • custom packet handlers need testing on the target Bedrock version
  1. enable McHttpConfig.Enabled = true
  2. ensure BDS can reach McHttpConfig.Hostname
  3. copy the Core.McHttp package
  4. run voicecraft:vcconnect <hostname> <token>
  5. validate bind with voicecraft:vcbind <key>
  1. enable McWss
  2. install Core.McWss
  3. run /connect
  4. run voicecraft:vcconnect <token>
  5. keep voicecraft:data_tunnel aligned with server config

Validation checklist

  • correct transport package is installed
  • both behavior and resource packs are active
  • vcconnect uses the token from the matching server config section
  • player can bind with voicecraft:vcbind <key>
  • player movement changes position data in VoiceCraft
  • effects UI opens for authorized users