▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/DreamVoice
DreamVoice

DreamVoice

Advanced spatial audio framework for Paper, Fabric & Simple Voice Chat. Featuring soundproof acoustic physics (VoiceWall), 3D visualizer, spatial speakers, covert wiretaps, radio channels, playable audio cassettes, DSP filters & speech AI.

Оцените первым
144
3
Все версии→DreamVoice 1.1.1

DreamVoice 1.1.1

Release06.09.2026

Список изменений

Changelog 1.1.1

🐛 Bug Fixes & Network Stability

  • Fixed VoiceChat VolumeCategory Packet Overflow (String too big, max 16):
    • Resolved Netty serialization crash EncoderException: String too big (was 24 bytes encoded, max 16) in AddCategoryPacket when players join the server.
    • Shortened SVC volume category display names to comply with Simple Voice Chat's strict 16-byte network limit ("Projection / Body Anchor" → "Projection", "Wiretap / Bug" → "Wiretap").
  • Fixed VoiceWall Acoustic Diffraction & Attenuation Silence Bug:
    • Resolved complete client silence during diffraction (-2 to -6 dB). Fixed the EntitySoundPacket reconstruction in VoiceWallServiceImpl: entitySoundPacketBuilder() automatically copies all original packet metadata (channelId, sender, sequenceNumber, distance, entityUuid), avoiding packet corruption or null sender overrides in Simple Voice Chat's client mixer.
    • Added proactive resetState() on Concentus Opus decoders and encoders when switching between line-of-sight and obstructed paths (> 400ms stream inactivity), preventing corrupted Linear Predictive Coding (LPC) state and silent dropped packets.
    • Cleaned up PCM processing to apply mathematically accurate dB gain without waveform distortion.
    • Fixed client connection validation in VoiceWallManager.isValidClient() by looking up active connections via VoicechatServerApi.getConnectionOf(uuid) dynamically.
    • Filtered sound packet handling in VoiceServiceImpl to only process SoundPacketEvent.SOURCE_PROXIMITY, preventing infinite reflection loops.
    • Added immediate short-circuiting for 100% blocked walls (totalDbLoss >= 99.0), dropping the packet directly and saving unnecessary CPU cycles.
  • Fixed Inadvertent Environmental Cave Filter on Speakers:
    • Fixed an issue where autoEnvironment enabled by default in VoiceFilterManager was automatically injecting CaveVoiceFilter (multi-tap delay reverb + low-pass filter) on indoor/underground maps (light level 0, Y < 55).
    • Added hasExplicitFilters(UUID) to VoiceFilterService (API & Core) to distinguish between manual user-added filters and automatic environmental reverberation.
    • Updated VoiceSpeakerServiceImpl to only check for explicit filters, preventing environmental reverb from being applied when speaking through speakers.
    • Disabled autoEnvironment by default in VoiceFilterManager.
  • Fixed VoiceWall Diffraction Blocked as 100% Soundproof (BLOCKED):
    • Fixed an issue where players with open line-of-sight diffraction apertures (-2 to -6 dB in /voicewall debug) were completely blocked with BLOCKED (100% Soundproof) when speaking.
    • Removed incorrect ternary override in VoiceWallServiceImpl.processPlayerPair: VoiceRayCast already accurately computes diffraction vs solid block attenuation per mode; overriding it forced all diffracted sound through apertures to 100.0 dB (silence) in STRICT_BLOCK mode.
    • Synchronized mode resolution in VoiceRayCast with VoiceWallService.getMode().
    • Stopped polluting lineOfSightCache with fake 100.0 dB entries when players exceed voice distance or cross worlds, preventing stale 100% blocked entries when players move closer.
    • Fixed LOS cache expiration bypass: proces✨iceConnections now verifies cache expiration so that stationary players (e.g. standing near a door that opens or closes) have their acoustic line-of-sight recalculated automatically every 2 seconds.
    • Integrated distance parameter directly into voiceWall configuration (config.json), with automatic fallback to root distance.
    • Enhanced /voicewall info to display the active max acoustic distance.
    • Bound /voicewall debug target searching to the effective configured distance rather than a hardcoded radius.
  • Fixed Speaker Audio Crackling, Robotic Distortion ("Filter" Effect) & Self-Echo:
    • Single Opus Decode Per Packet: Previously, when VoiceWall or filters were active, VoiceSpeakerServiceImpl.processSingleListenerStream was calling voiceService.getDecoder(senderUuid).decode(rawOpus) repeatedly in an inner loop for every listener on the same OpusDecoder instance. This severely corrupted the Opus decoder's adaptive LPC filter state, causing extreme robotic distortion, metallic phasing (sounding like an unwanted filter), and harsh digital crackling. Opus decoding is now performed strictly once per microphone packet and shared across all listeners.
    • Excluded Speaker from Self-Broadcast: Filtered out the sending player (senderUuid) from receiving their own voice back through LocationalAudioChannel and broadcastToDedicatedChannels. Hearing one's own voice delayed by UDP round-trip time was causing severe acoustic comb-filtering, echo, and clipping.
    • VoiceSpeakerServiceImpl.broadcastToDedicatedChannels now streams raw Opus bytes (channel.send(rawOpus)) instead of forwarding MicrophonePacket. This allows Simple Voice Chat to generate an uninterrupted, strictly linear sequence counter for the speaker channel, preventing client-side OpenAL jitter buffer resets, packet drops, and harsh crackling when speaking near speakers.
    • Restricted DSP transcoding (decode → filter → gain → limiter → encode) exclusively to listeners who actually require acoustic attenuation or voice filters.
    • Removed experimental distance-based air damping low-pass filter from VoiceSpeakerServiceImpl to ensure clean audio transmission.
  • Real-Time Acoustic & VoiceWall Audio Debugger (/voicewall debug):
    • Enhanced /voicewall debug with clean sound packet inspection: whenever a player receives voice audio, an Action Bar HUD displays the sender, exact dB loss, resulting volume percentage, PCM Root Mean Square (RMS signal strength before and after DSP), and whether the output is audible ([HEARD]) or silent ([SILENT]).
    • Displays direct notifications when audio is unattenuated (DIRECT (0.0 dB, 100% Vol)) or completely blocked by soundproof walls (BLOCKED (100% Soundproof, loss=X.XdB)).
    • Removed emojis from all debug HUD and command feedback messages for a clean, professional interface.
  • Decoder Resource Cleanup:
    • Ensured all Concentus Opus decoders are closed in finally blocks within VoiceSpeakerServiceImpl to avoid memory and resource leaks.

⚡ Performance Optimizations & Audio Streaming

  • Direct Opus Frame Streaming (OpusAudioPlayer):
    • Eliminated the double-transcoding bottleneck during playback (previously: pure-Java Opus decoding to PCM, padding silence, then pure-Java Opus re-encoding to channels).
    • Pre-recorded Opus frames from VoiceRecording are now streamed directly to SVC AudioChannel.send(opusData) at high precision (10ms scheduler) without Concentus re-encoding.
    • Dramatically reduces server CPU usage, completely eliminating audio buffer underruns, packet drops, and choppy audio during multi-speaker broadcasts.
    • Faithful timeline preservation: All silences (initial pauses, intermediate silences between words, and trailing pauses) and total recording duration are preserved naturally according to recorded timestamps with near-zero CPU overhead.
  • Optimized Batch Audio Playback:
    • Broadcast playback across all speakers (all) now streams pre-encoded Opus packets simultaneously across all speaker channels in a single pass.
    • Playing recordings to multiple player connections (playRecordingTo(Collection<VoicechatConnection>, VoiceRecording)) now shares a single static audio channel and an OpusAudioPlayer.
  • Real-Time Asynchronous Microphone Event Dispatching:
    • MicrophonePacketEvent is now explicitly asynchronous (super(true)) and dispatched directly on the VoiceChat network thread without enqueueing onto Bukkit's 20 TPS (50ms) tick loop.
    • Removes packet bundling/jitter, eliminating choppy playback and phase stuttering when speaking through speakers.
  • Asynchronous Disk Persistence:
    • Made .dv binary recording file writes asynchronous (CompletableFuture.runAsync) during stopRecording, sliceRecording, and wiretap stops, preventing I/O lag spikes on the main thread.

📢 Speaker Command Enhancements & Looping

  • Recording Loop Support:
    • Added optional [loop] parameter to voice recording playback:
      • /speaker play record <speaker> <recording> [loop]
      • /speaker play record all <recording> [loop]
    • Added overloaded methods playRecording(..., boolean loop) to VoiceSpeakerService and VoiceSpeakerServiceImpl.
  • Bulk Target all in Speaker Commands:
    • Added all to tab-completion suggestions across all /speaker subcommands.
    • Commands now accept all as the <speaker> argument to execute actions across every active speaker at once:
      • /speaker remove all: Unregisters and removes all active speakers.
      • /speaker info all: Displays detailed configuration and audio state for every speaker.
      • /speaker mode all <global|restricted>: Sets the playback access mode for all speakers.
      • /speaker link all <player>: Authorizes a player on all speakers.
      • /speaker unlink all <player>: Revokes player speaking authorization on all speakers.
      • /speaker play record all <recording> [loop]: Broadcasts a voice recording across all speakers (with optional looping).
      • /speaker play file all <fileName> [loop]: Plays a local audio file on all speakers simultaneously.
      • /speaker play url all <url> [loop]: Streams an online audio URL on all speakers simultaneously.
      • /speaker stop all: Stops playback on all active speakers.
    • Keyword Reservation: Creating a speaker named all is now prohibited to prevent command collisions.

🔌 Custom Events & Extensibility Suite

  • Complete Custom Bukkit Event Catalog:
    • Added 21 new strongly-typed Bukkit events extending ToolsEvent and ToolsCancelEvent:
      • Speakers (speaker.event): SpeakerRegisterEvent, SpeakerUnregisterEvent, SpeakerLinkPlayerEvent, SpeakerUnlinkPlayerEvent, SpeakerPlaySoundEvent, SpeakerStopSoundEvent.
      • Wiretaps (wiretap.event): WiretapRegisterEvent, WiretapRemoveEvent, WiretapSubscribeEvent, WiretapUnsubscribeEvent.
      • Radios & Transmitters (radio.event, transmitter.event): RadioChannelJoinEvent, RadioChannelLeaveEvent, RadioChannelCreateEvent, TransmitterToggleEvent.
      • Recordings & Cassettes (recording.event): VoiceRecordingStartEvent, VoiceRecordingStopEvent, CassetteCreateEvent, CassettePlayEvent.
      • DSP Filters (filter.event): VoiceFilterApplyEvent, VoiceFilterRemoveEvent.
      • VoiceWall Occlusion (wall.event): VoiceWallOcclusionEvent.
    • Full Action Interceptability:
      • Cancellable events allow third-party plugins to enforce gameplay permissions (e.g. requiring a physical walkie-talkie item to join a radio frequency, or checking for detective gadgets before listening to a wiretap).
      • VoiceWallOcclusionEvent allows plugins to modify calculated decibel loss (lossDb) or cancel soundproofing entirely for custom powers, spectator modes, or supernatural mechanics.
      • CassetteCreateEvent enables customizing cassette item display names, lores, custom model data, and NBT tags before handing items to players.
      • CassettePlayEvent allows intercepting right-click playback to enforce audio player equipment or cooldowns.

Файлы

DreamVoice.jar(7.81 MiB)
Основной
Скачать

Метаданные

Канал релиза

Release

Номер версии

1.1.1

Загрузчики

Paper
Purpur
Spigot

Версии игры

26.1.2

Загрузок

4

Дата публикации

06.09.2026

Загрузил

ID версии

Главная