DreamVoiceСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (16)
release
DreamVoice NeoForge 2.0.4
2.0.4+neoforge28 окт. 2026 г.27Minecraft: 26.1.2neoforge
Что нового
# Changelog 2.0.4
## 📦 Build System & JitPack Support
- **JitPack Java 25 & API Isolation**:
- Added dedicated `jitpack.yml` configuration targeting **OpenJDK 25** (`openjdk25`).
- Configured `settings.gradle` to isolate the `:api` subproject during JitPack builds (`JITPACK` environment detection), avoiding unnecessary Fabric Loom and NeoForge ModDev initialization on JitPack containers.
- Updated root `build.gradle` Java toolchain declaration (`JavaLanguageVersion.of(25)`) for native JitPack JDK auto-detection and scoped Maven repositories by group.
- **Release Pipeline Optimization**:
- Resolved Gradle project configuration lock contention on multi-loader builds (`Paper`, `Fabric`, `NeoForge`).
release
DreamVoice Fabric 2.0.4
2.0.4+fabric28 окт. 2026 г.14Minecraft: 26.1.2fabric
Что нового
# Changelog 2.0.4
## 📦 Build System & JitPack Support
- **JitPack Java 25 & API Isolation**:
- Added dedicated `jitpack.yml` configuration targeting **OpenJDK 25** (`openjdk25`).
- Configured `settings.gradle` to isolate the `:api` subproject during JitPack builds (`JITPACK` environment detection), avoiding unnecessary Fabric Loom and NeoForge ModDev initialization on JitPack containers.
- Updated root `build.gradle` Java toolchain declaration (`JavaLanguageVersion.of(25)`) for native JitPack JDK auto-detection and scoped Maven repositories by group.
- **Release Pipeline Optimization**:
- Resolved Gradle project configuration lock contention on multi-loader builds (`Paper`, `Fabric`, `NeoForge`).
release
DreamVoice Paper 2.0.4
2.0.4+paper28 окт. 2026 г.9Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 2.0.4
## 📦 Build System & JitPack Support
- **JitPack Java 25 & API Isolation**:
- Added dedicated `jitpack.yml` configuration targeting **OpenJDK 25** (`openjdk25`).
- Configured `settings.gradle` to isolate the `:api` subproject during JitPack builds (`JITPACK` environment detection), avoiding unnecessary Fabric Loom and NeoForge ModDev initialization on JitPack containers.
- Updated root `build.gradle` Java toolchain declaration (`JavaLanguageVersion.of(25)`) for native JitPack JDK auto-detection and scoped Maven repositories by group.
- **Release Pipeline Optimization**:
- Resolved Gradle project configuration lock contention on multi-loader builds (`Paper`, `Fabric`, `NeoForge`).
release
DreamVoice Fabric 2.0.2
2.0.2+fabric28 окт. 2026 г.14Minecraft: 26.1.2fabric
Что нового
# Changelog 2.0.2
## 🎙️ Multi-Speaker Tracking & Selective Voice Recording
- **Per-Frame Speaker Attribution**:
- `TimedAudioFrame` now tags every audio frame with the speaker's unique identifier (`speakerUuid`).
- **Multi-Speaker Track Management in `VoiceRecording`**:
- `getSpeakers()`: Returns all distinct players who spoke during the recording session.
- `getFramesOfSpeaker(UUID)`: Retrieves audio frames filtered by speaker.
- `extractSpeakerRecording(UUID)`: Isolates and generates an independent recording containing only the selected speaker's voice.
- **Enhanced `.dv` Audio Persistence**:
- Serializes and deserializes speaker UUIDs per frame while preserving backward compatibility with older format revisions.
- **Selective Audio Export**:
- `VoiceRecordingService.exportRecording(rec, format, targetFile, speakerUuid)`: Allows exporting either full mixed audio or an isolated individual speaker track to WAV, MP3, or OGG.
- `VoiceRecordingService.extractSpeakerRecording(recUuid, speakerUuid)`: Direct service extraction helper.
- **Wiretap Speaker Tagging**:
- Intercepted audio streams captured by `VoiceWiretapService` now track speaker UUIDs on every recorded frame.
---
## 📻 Radio Channel Recording & Broadcasting
- **Full Radio Channel Capture**:
- Added radio recording APIs: `startRecording(channel)`, `stopRecording(channel)`, `isRecording(channel)`, and `getActiveRecording(channel)`.
- Captures all conversations transmitted across a radio frequency with complete speaker attribution.
- **Radio Playback Streaming**:
- Added radio playback APIs: `playRecordingToRadio(channel, recording)`, `stopRadioPlayback(channel)`, and `isRadioPlaying(channel)`.
- Seamlessly broadcasts pre-recorded audio or intercepted transmissions back over radio channels.
- **Zero-CPU Direct Opus Streaming (`OpusAudioPlayer`)**:
- Lightweight audio player streams raw Opus packets directly into Simple Voice Chat static audio channels without decoding and re-encoding overhead.
- Supports dynamic `frameConsumer` callbacks per frame for real-time synchronization with external addons.
---
## 📡 Radio Transmission Filtering & Packet Interception (`RadioPacketFilter`)
- **Bidirectional Packet Filter Interface (`RadioPacketFilter`)**:
- `shouldTransmit(channel, senderUuid)`: Intercepts transmissions at the sender microphone stage before recording or dispatching. Enables mods (such as AcoustiCraft) to block transmissions if players are out of antenna range or lacking power/equipment.
- `shouldDeliver(channel, senderUuid, receiverUuid)`: Intercepts delivery at the receiver stage to simulate range attenuation, line-of-sight wall penetration, and distance falloff.
- Registered and accessed via `VoiceRadioService.setPacketFilter(...)` and `VoiceRadioService.getPacketFilter()`.
- **New `RadioTransmissionEvent`**:
- Dispatched whenever voice audio is transmitted over a radio frequency, providing access to the channel, sender UUID, and raw Opus audio data.
- **Audio Transmission Listeners**:
- Added `RadioAudioTransmissionListener` and `VoiceRadioService.addAudioTransmissionListener(...)` to subscribe to broadcast frames.
- **Cleaner Voice Output**:
- Removed artificial RF hiss generator from `RadioVoiceFilter` for cleaner and more intelligible voice communications.
---
## ⌨️ New Commands (Fabric & Paper)
- **Radio Recording Management**:
- `/record radio start <channel>`: Starts recording audio from a specific radio channel.
- `/record radio stop <channel> [target]`: Stops recording and saves the captured radio stream.
- `/record radio play <channel> <recording>`: Plays back an audio recording over a radio channel.
- `/record radio stop-play <channel>`: Halts an active radio broadcast.
- **Audio Timeline Slicing**:
- `/record slice <recording> <startMs> <endMs> [target]`: Cuts out a precise timestamp window from an existing recording.
- `/record slice-last <recording> <durationSec> [target]`: Quickly slices the last N seconds of an active or saved recording.
- **Speaker-Filtered Export**:
- `/record export <id> <format> [speaker]`: Exports an audio recording to disk with optional player filtering.
---
## 🛠️ Bug Fixes & Refactoring
- **Command Argument Parsing**:
- Fixed optional `Boolean` argument handling (`rogerBeep`, `loop`) on Fabric `/radio create` and `/speaker play` commands.
- **Radio Channel Member Restoration**:
- Corrected member population logic in `RadiosPersistence` to use `channel.addMember(...)`.
- **Version Bump**:
- Updated project version to `2.0.2` in `gradle.properties`.
release
DreamVoice Paper 2.0.2
2.0.2+paper28 окт. 2026 г.8Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 2.0.2
## 🎙️ Multi-Speaker Tracking & Selective Voice Recording
- **Per-Frame Speaker Attribution**:
- `TimedAudioFrame` now tags every audio frame with the speaker's unique identifier (`speakerUuid`).
- **Multi-Speaker Track Management in `VoiceRecording`**:
- `getSpeakers()`: Returns all distinct players who spoke during the recording session.
- `getFramesOfSpeaker(UUID)`: Retrieves audio frames filtered by speaker.
- `extractSpeakerRecording(UUID)`: Isolates and generates an independent recording containing only the selected speaker's voice.
- **Enhanced `.dv` Audio Persistence**:
- Serializes and deserializes speaker UUIDs per frame while preserving backward compatibility with older format revisions.
- **Selective Audio Export**:
- `VoiceRecordingService.exportRecording(rec, format, targetFile, speakerUuid)`: Allows exporting either full mixed audio or an isolated individual speaker track to WAV, MP3, or OGG.
- `VoiceRecordingService.extractSpeakerRecording(recUuid, speakerUuid)`: Direct service extraction helper.
- **Wiretap Speaker Tagging**:
- Intercepted audio streams captured by `VoiceWiretapService` now track speaker UUIDs on every recorded frame.
---
## 📻 Radio Channel Recording & Broadcasting
- **Full Radio Channel Capture**:
- Added radio recording APIs: `startRecording(channel)`, `stopRecording(channel)`, `isRecording(channel)`, and `getActiveRecording(channel)`.
- Captures all conversations transmitted across a radio frequency with complete speaker attribution.
- **Radio Playback Streaming**:
- Added radio playback APIs: `playRecordingToRadio(channel, recording)`, `stopRadioPlayback(channel)`, and `isRadioPlaying(channel)`.
- Seamlessly broadcasts pre-recorded audio or intercepted transmissions back over radio channels.
- **Zero-CPU Direct Opus Streaming (`OpusAudioPlayer`)**:
- Lightweight audio player streams raw Opus packets directly into Simple Voice Chat static audio channels without decoding and re-encoding overhead.
- Supports dynamic `frameConsumer` callbacks per frame for real-time synchronization with external addons.
---
## 📡 Radio Transmission Filtering & Packet Interception (`RadioPacketFilter`)
- **Bidirectional Packet Filter Interface (`RadioPacketFilter`)**:
- `shouldTransmit(channel, senderUuid)`: Intercepts transmissions at the sender microphone stage before recording or dispatching. Enables mods (such as AcoustiCraft) to block transmissions if players are out of antenna range or lacking power/equipment.
- `shouldDeliver(channel, senderUuid, receiverUuid)`: Intercepts delivery at the receiver stage to simulate range attenuation, line-of-sight wall penetration, and distance falloff.
- Registered and accessed via `VoiceRadioService.setPacketFilter(...)` and `VoiceRadioService.getPacketFilter()`.
- **New `RadioTransmissionEvent`**:
- Dispatched whenever voice audio is transmitted over a radio frequency, providing access to the channel, sender UUID, and raw Opus audio data.
- **Audio Transmission Listeners**:
- Added `RadioAudioTransmissionListener` and `VoiceRadioService.addAudioTransmissionListener(...)` to subscribe to broadcast frames.
- **Cleaner Voice Output**:
- Removed artificial RF hiss generator from `RadioVoiceFilter` for cleaner and more intelligible voice communications.
---
## ⌨️ New Commands (Fabric & Paper)
- **Radio Recording Management**:
- `/record radio start <channel>`: Starts recording audio from a specific radio channel.
- `/record radio stop <channel> [target]`: Stops recording and saves the captured radio stream.
- `/record radio play <channel> <recording>`: Plays back an audio recording over a radio channel.
- `/record radio stop-play <channel>`: Halts an active radio broadcast.
- **Audio Timeline Slicing**:
- `/record slice <recording> <startMs> <endMs> [target]`: Cuts out a precise timestamp window from an existing recording.
- `/record slice-last <recording> <durationSec> [target]`: Quickly slices the last N seconds of an active or saved recording.
- **Speaker-Filtered Export**:
- `/record export <id> <format> [speaker]`: Exports an audio recording to disk with optional player filtering.
---
## 🛠️ Bug Fixes & Refactoring
- **Command Argument Parsing**:
- Fixed optional `Boolean` argument handling (`rogerBeep`, `loop`) on Fabric `/radio create` and `/speaker play` commands.
- **Radio Channel Member Restoration**:
- Corrected member population logic in `RadiosPersistence` to use `channel.addMember(...)`.
- **Version Bump**:
- Updated project version to `2.0.2` in `gradle.properties`.
release
DreamVoice Fabric 2.0.1
2.0.1+fabric30 сент. 2026 г.99Minecraft: 26.1.2fabric
Что нового
# Changelog 2.0.1
## 🚀 Dual-Platform Engine: Paper & Fabric First-Class Support
- **Multi-Module Gradle Architecture**:
- Restructured the entire codebase into a clean, modern multi-module architecture:
- `:api`: Platform-independent public interfaces, models, and events (`DreamVoiceAPI`, `VoiceLocation`, `Speaker`, `VoiceWiretap`, `VoiceEvent`, etc.).
- `:common`: Platform-agnostic core acoustic engine (`DreamVoiceCommon`), DSP audio pipelines, raycasting logic, persistence, and service implementations.
- `:paper`: Paper / Purpur 26.1.2+ server plugin (`DreamVoice-paper-2.0.1.jar`) utilizing Paperweight and shadow jar packaging.
- `:fabric`: Fabric 26.1.2+ server mod (`DreamVoice-fabric-2.0.1.jar`) built with Fabric Loom 1.17, Fabric API, and Cloud Fabric commands.
- **Platform Abstraction Layer (`VoicePlatform`)**:
- Implemented `PaperVoicePlatform` and `FabricVoicePlatform` bridging server scheduling (sync/async/timer), entity tracking, block occlusion raycasts, particle dispatches, and loggers.
- Native multiplatform coordinates via `VoiceLocation`, allowing services to operate identically regardless of whether Bukkit or Minecraft ServerLevel is running underneath.
- **Dual Configuration Directories**:
- Automatically loads and saves data in standard platform locations:
- **Paper**: `plugins/DreamVoice/`
- **Fabric**: `config/dreamvoice/`
---
## 🔌 Unified `DreamVoiceAPI` Service Locator
- **Universal API Entrypoint**:
- Unified entry point `DreamVoiceAPI.get()` accessible from both Paper plugins and Fabric mods without platform-specific boilerplate.
- Direct accessor methods for all acoustic services:
- `api.speakerService()`: 3D spatial speakers, dual-channel audio, entity tracking.
- `api.wallService()`: VoiceWall raycast occlusion, material decibel loss, diffraction.
- `api.roomService()`: Soundproof Cuboid zones and reverberation presets.
- `api.recordingService()`: Zero-CPU Opus capture, timeline slicing, interactive cassettes.
- `api.radioService()`: Frequency channels, analog band-pass filters, push-to-talk clicks.
- `api.wiretapService()`: Covert listening bugs, mobile entity bugs, live eavesdropping.
- `api.projectionService()`: Decoupled voice anchors, CCTV feeds, bilateral audio.
- `api.transmitterService()`: Point-to-point directional voice transmitters.
- `api.broadcastService()`: Server-wide and localized podium/intercom broadcasts.
- `api.filterService()`: File-first DSP filters, hot-compilation, and stack management.
- `api.speechService()`: Offline Vosk keyword spotting and transcription stations.
- `api.playerService()`: Voice player wrappers (`VPlayer`) and connection metadata.
- `api.persistenceService()`: Asynchronous disk flushes and auto-save coordination.
- `api.voiceService()`: Direct Simple Voice Chat bridge and raw packet dispatch.
---
## 📡 Fabric Network Packet System & Inter-Mod Protocols (`@DreamPacket`)
- **Annotation-Driven Networking Pipeline**:
- Introduced `@DreamPacket` and `@DreamServerReceiver` with automatic classpath scanning via `PacketAnnotationProcessor` and `ServerPacketAnnotationProcessor`.
- Registered all packet codecs with Fabric's `PayloadTypeRegistry` under the `dreamvoice:*` namespace.
- **Preshot Server-Bound & Client-Bound Packet Catalog (40+ Packets)**:
- **Configuration & Visualizer**: `ServerBoundRequestConfigSyncPacket`, `ClientBoundConfigSyncPacket`, `ServerBoundVisualizerTogglePacket`, `ClientBoundVisualizerSyncPacket`.
- **3D Spatial Speakers**: `ServerBoundSpeakerCreatePacket`, `ServerBoundSpeakerDeletePacket`, `ServerBoundSpeakerLinkPacket`, `ServerBoundSpeakerUnlinkPacket`, `ServerBoundSpeakerPlaySoundPacket`, `ServerBoundSpeakerStopSoundPacket`, `ServerBoundSpeakerUpdatePacket`, `ClientBoundSpeakerSyncPacket`.
- **Wiretaps & Surveillance**: `ServerBoundWiretapCreatePacket`, `ServerBoundWiretapDeletePacket`, `ServerBoundWiretapSubscribePacket`, `ServerBoundWiretapUnsubscribePacket`, `ClientBoundWiretapSyncPacket`.
- **Radios & Walkie-Talkies**: `ServerBoundRadioCreatePacket`, `ServerBoundRadioJoinPacket`, `ServerBoundRadioLeavePacket`, `ClientBoundRadioSyncPacket`.
- **Audio Recordings & Cassettes**: `ServerBoundRecordingStartPacket`, `ServerBoundRecordingStopPacket`, `ServerBoundCassetteCreatePacket`, `ServerBoundRecordingPlayPacket`, `ServerBoundRecordingStopPlayPacket`, `ClientBoundRecordingSyncPacket`.
- **DSP Voice Filters**: `ServerBoundFilterApplyPacket`, `ServerBoundFilterRemovePacket`, `ServerBoundFilterClearPacket`, `ServerBoundFilterTogglePacket`, `ClientBoundFilterSyncPacket`.
- **Acoustic Rooms**: `ServerBoundRoomCreatePacket`, `ServerBoundRoomDeletePacket`, `ServerBoundRoomUpdatePacket`, `ClientBoundRoomSyncPacket`.
- **Transmitters & Projections**: `ServerBoundTransmitterCreatePacket`, `ServerBoundTransmitterDeletePacket`, `ServerBoundTransmitterTogglePacket`, `ClientBoundTransmitterSyncPacket`, `ServerBoundProjectionCreatePacket`, `ServerBoundProjectionDeletePacket`, `ClientBoundProjectionSyncPacket`.
- **Zero-Dependency Inter-Mod Integration**:
- Allows external survival mods (craftable megaphones, spy bugs, walkie-talkies, tape recorders) and client HUD mods to control DreamVoice subsystems via JSON custom payloads without hard compile-time dependencies.
---
## ⚡ Dual-Platform Event Bus (Bukkit & Fabric)
- **Unified Voice Events**:
- All event classes extend `VoiceEvent` and feature self-dispatching via `.callEvent()`.
- **Platform Event Dispatching**:
- **Paper**: Dispatched natively through Bukkit's `PluginManager` for `@EventHandler` listeners.
- **Fabric**: Dispatched through `DreamVoiceEvents.VOICE_EVENT.register(...)` callback hook.
- **Event Coverage**:
- Cancellable hooks across all lifecycle actions: `SpeakerLinkPlayerEvent`, `SpeakerPlaySoundEvent`, `RadioChannelJoinEvent`, `CassetteCreateEvent`, `CassettePlayEvent`, `VoiceRecordingStartEvent`, `VoiceFilterApplyEvent`, `VoiceWallOcclusionEvent`, `VoiceKeywordSpokenEvent`, `WiretapSubscribeEvent`, etc.
---
## 👁️ Real-Time 3D Acoustic Visualizer Mode (`/voice visualizer`)
- **Interactive Acoustic Raycasting**:
- Added `/voice visualizer [toggle|on|off]` (permission: `dreamvoice.visualizer`).
- Renders 3D particle rays illustrating line-of-sight paths, wall collision impacts, aperture diffraction bypasses around doors/openings, and speaker audible coverage spheres.
- **Performance-Conscious Hand-Held Requirement**:
- Particle streams are rendered **only** when the inspecting player has the visualizer tool (default: `COMPASS`) equipped in their main hand, preventing client lag and visual clutter during normal gameplay.
- **Synchronized Visualizer State**:
- State is automatically synced to Fabric clients via `ServerBoundVisualizerTogglePacket` and `ClientBoundVisualizerSyncPacket`.
---
## 🎙️ VoiceWiretap x VoiceProjection Integration
- **Cross-Module Audio Propagation**:
- Covert wiretap microphones (`VoiceWiretap`) now dynamically support and intercept voices emitted through active voice projections (`VoiceProjection`).
- **Dual-Origin Spatial Audio**:
- **Physical Emission (`isEmitVoiceAtPlayer`)**: Microphones in proximity to the player's physical body capture the direct voice as normal.
- **Anchor Emission (`isEmitVoiceAtAnchor`)**: Microphones in proximity to the projection's anchor location (`projection.getAnchorLocation()`) intercept the projected voice in real time.
- **Acoustic Occlusion & Wall Physics**: Line-of-sight raycasting (`VoiceRayCast`) and material attenuation (`VoiceWall`) are accurately simulated between the anchor coordinates and the wiretap.
- **Filter Inheritance**: Voice projections configured with custom filters (e.g., megaphone, radio, disguise) pass their processed audio downstream to wiretap listeners.
---
## 🔌 Public Hearing & Attenuation API (`VoiceService` & `VoiceWallService`)
- **Unified Audibility Check (`canHear`)**:
- Introduced `voiceService.canHear(speaker, listener)` (with `Player` and `UUID` overloads).
- Evaluates whether a listener can hear a speaker across all communication channels:
1. Direct point-to-point audio transmitters (`VoiceTransmitterService`).
2. Shared radio frequency channels (`VoiceRadioService`).
3. Proximity spatial voice chat (`canHearProximity`).
- **Full-Condition Proximity Audibility (`canHearProximity`)**:
- Introduced `voiceService.canHearProximity(speaker, listener)` (with `Player` and `UUID` overloads).
- Validates active Simple Voice Chat connections for both players.
- Enforces life states (`ALIVE`, `DEAD`, `SPECTATE`).
- Evaluates voice projection constraints (`emitVoiceAtPlayer`, `emitVoiceAtAnchor`, `hearPlayerEnvironment`).
- Respects configured distance limits (`Codex.getEffectiveDistance()`).
- Computes total dB attenuation across `VoiceWall` materials and isolated `VoiceRoom` cuboids; returns `false` if sound is blocked ($\ge 99.0\text{ dB}$).
- **Direct Decibel Attenuation Metrics**:
- Added `voiceService.getEffectiveAttenuationDb(speaker, listener)` to measure total acoustic dB loss between two players.
- Added `voiceWallService.getAttenuationDb(speaker, listener)` for querying raw wall and room isolation losses.
---
## 📢 Physical Broadcast System (`VoiceBroadcastService`)
- **Podium & Intercom Broadcast Points**:
- Introduced `VoiceBroadcastService` and `/voice broadcast` command suite.
- Players speaking within a configured capture radius around a location or entity automatically have their voice routed to connected speakers.
- **Flexible Audio Routing**:
- **All Speakers Routing (`allSpeakers = true`)**: Broadcasts to every registered speaker across the server.
- **Selective Target Speakers**: Link specific speakers to a broadcast point (`/voice broadcast link <name> <speaker>`).
- **On/Off Toggle & Filter Chaining**:
- Broadcast points can be toggled on/off on demand (`/voice broadcast toggle <name>`).
- Optional custom audio filters can be chained to the broadcast (e.g. intercom distortion, PA megaphone filter).
- **Modular Persistence**:
- Stored under `modules/broadcast/` with automatic saving on server shutdown.
---
## 🛠️ Interactive Configuration Mode & Tool (`/voice config`)
- **Interactive Configuration Tool (`/voice tool`)**:
- Added `/voice config` and `/voice tool` commands (using `ECHO_SHARD` as the physical tool to prevent conflicts with WorldEdit wands).
- Config tool supports interactive targeting: entities, blocks, or air/gaze fallback.
- **Full InvUI Management GUIs Across All Audio Subsystems**:
- **Dashboard (`VoiceConfigMainGUI`)**: Visual dashboard covering all audio subsystems with target coordinates/entity indicators.
- **Speakers Manager (`SpeakerListGUI`, `SpeakerEditGUI`)**: Browse speakers, adjust distance/range with +/- buttons, toggle mode (GLOBAL / RESTRICTED), teleport, or create new speakers at current target.
- **Broadcast Manager (`BroadcastListGUI`, `BroadcastEditGUI`, `BroadcastLinkSpeakersGUI`)**: Browse broadcast points, toggle active state (ON/OFF), adjust radius, toggle all-speakers routing, visually link/unlink individual speakers, cycle filters, or create new points.
- **Wiretaps Manager (`WiretapListGUI`, `WiretapEditGUI`)**: Inspect covert bugs, toggle live eavesdropping, teleport, or deploy new bugs.
- **Acoustic Rooms Inspector (`RoomListGUI`)**: View room dimensions, reverberation presets, and acoustic isolation percentages.
- **Radio Channels Manager (`RadioListGUI`)**: Browse frequencies, view active listener counts, and tune in/disconnect directly.
- **Transmitters Manager (`TransmitterListGUI`)**: Toggle transmitter mode, view linked receiver players, unlink or configure receivers.
- **Projections Inspector (`ProjectionListGUI`)**: Inspect active player projections, emission modes (anchor/player), and teleport to anchor coordinates.
- **Acoustic & Wall Engine (`AcousticInspectGUI`)**: Live toggle for VoiceWall, cycle occlusion modes (Realistic/Strict/Off), toggle air damping, particle raycast debug, and inspect acoustic properties of targeted blocks/materials.
---
## 🌐 Complete Localization & Translation System (`LangService`)
- **Adventure Component.translatable Integration**:
- All command messages, items (Cassette, Config Tool), and InvUI configuration menus now use `Component.translatable(...)` backed by MiniMessage translation stores.
- Eliminated all hardcoded `TextDecoration` (`<!italic>`, `<b>`) and `NamedTextColor` calls across UI classes; all styling is defined directly within language files.
- **Bilingual English (Default) & French Support**:
- Populated `lang-dreamvoice.json` with comprehensive translation keys, gradients, formatting tags, and arguments.
- Configured default plugin language to English (`EN`) with full client-side French (`FR`) fallback.
---
## 📦 Build System & Dependency Centralization
- **Centralized `gradle.properties`**:
- Consolidated all plugin, toolchain, and dependency versions into `gradle.properties`:
- `minecraft_version = 26.1.2`
- `paper_api_version = 26.1.2.build.+`
- `fabric_api_version = 0.155.0+26.1.2`
- `loader_version = 0.19.3`
- `loom_version = 1.17-SNAPSHOT`
- `shadow_version = 9.4.1`
- `voicechat_api_version = 2.6.20`
- `vosk_version = 0.3.45`
- `cloud_fabric_version = 2.0.0-beta.16`
- `java_version = 25`
- Streamlined `settings.gradle` and all subproject build files (`api`, `common`, `paper`, `fabric`) to reference properties exclusively.
- **CI/CD Workflow Modernization**:
- Updated GitHub Actions workflows (`publish.yml`, `javadoc.yml`, `discord-announce.yml`) for dual-platform publishing to GitHub Packages and Modrinth.
---
## 🐛 Bug Fixes & Stability
- **Projection Audio Crackling & Transcoding Artifacts**:
- Eliminated audio crackling and high-frequency buzzing occurring when speaking while in voice projection:
- Removed discontinuous chunk-level 1-pole lowpass smoothing filter that injected 50 Hz boundary discontinuities into audio packets.
- Prevented multi-decoding of incoming microphone Opus packets on shared decoders across listeners.
- Implemented `encoder.resetState()` on speech pauses (> 400ms) to prevent Opus predictor state corruption upon resuming speech.
- Bypassed PCM decoding and lossy Opus transcoding completely when no wall occlusion or voice filters are present, routing raw Opus packets directly to 3D locational audio channels.
- **Speech Recognizer Crash on Reload**:
- Resolved `kaldi::KaldiFatalError` (`Can't add speaker model to already running recognizer`) triggered during `/voice speech reload` by safely closing and cycling active Vosk recognizer instances before applying updated keyword grammars.
- **CI / Discord Webhook Release Workflow**:
- Fixed Python variable scope (`brand_color`) in `.github/workflows/discord-announce.yml`.
- Added role mention `<@&1546913649308995738>` to automated Discord release broadcasts.
---
## 🧹 Code Quality & Conventions
- Removed redundant control-flow braces on single statements (`if`, `else`, `for`) across `fabric`, `paper`, `common`, and `api`.
- Cleaned up inline fully-qualified class names in favor of clean header imports.
- Standardized `final var` declaration across all local variable scopes.
release
DreamVoice Paper 2.0.1
2.0.1+paper30 сент. 2026 г.30Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 2.0.1
## 🚀 Dual-Platform Engine: Paper & Fabric First-Class Support
- **Multi-Module Gradle Architecture**:
- Restructured the entire codebase into a clean, modern multi-module architecture:
- `:api`: Platform-independent public interfaces, models, and events (`DreamVoiceAPI`, `VoiceLocation`, `Speaker`, `VoiceWiretap`, `VoiceEvent`, etc.).
- `:common`: Platform-agnostic core acoustic engine (`DreamVoiceCommon`), DSP audio pipelines, raycasting logic, persistence, and service implementations.
- `:paper`: Paper / Purpur 26.1.2+ server plugin (`DreamVoice-paper-2.0.1.jar`) utilizing Paperweight and shadow jar packaging.
- `:fabric`: Fabric 26.1.2+ server mod (`DreamVoice-fabric-2.0.1.jar`) built with Fabric Loom 1.17, Fabric API, and Cloud Fabric commands.
- **Platform Abstraction Layer (`VoicePlatform`)**:
- Implemented `PaperVoicePlatform` and `FabricVoicePlatform` bridging server scheduling (sync/async/timer), entity tracking, block occlusion raycasts, particle dispatches, and loggers.
- Native multiplatform coordinates via `VoiceLocation`, allowing services to operate identically regardless of whether Bukkit or Minecraft ServerLevel is running underneath.
- **Dual Configuration Directories**:
- Automatically loads and saves data in standard platform locations:
- **Paper**: `plugins/DreamVoice/`
- **Fabric**: `config/dreamvoice/`
---
## 🔌 Unified `DreamVoiceAPI` Service Locator
- **Universal API Entrypoint**:
- Unified entry point `DreamVoiceAPI.get()` accessible from both Paper plugins and Fabric mods without platform-specific boilerplate.
- Direct accessor methods for all acoustic services:
- `api.speakerService()`: 3D spatial speakers, dual-channel audio, entity tracking.
- `api.wallService()`: VoiceWall raycast occlusion, material decibel loss, diffraction.
- `api.roomService()`: Soundproof Cuboid zones and reverberation presets.
- `api.recordingService()`: Zero-CPU Opus capture, timeline slicing, interactive cassettes.
- `api.radioService()`: Frequency channels, analog band-pass filters, push-to-talk clicks.
- `api.wiretapService()`: Covert listening bugs, mobile entity bugs, live eavesdropping.
- `api.projectionService()`: Decoupled voice anchors, CCTV feeds, bilateral audio.
- `api.transmitterService()`: Point-to-point directional voice transmitters.
- `api.broadcastService()`: Server-wide and localized podium/intercom broadcasts.
- `api.filterService()`: File-first DSP filters, hot-compilation, and stack management.
- `api.speechService()`: Offline Vosk keyword spotting and transcription stations.
- `api.playerService()`: Voice player wrappers (`VPlayer`) and connection metadata.
- `api.persistenceService()`: Asynchronous disk flushes and auto-save coordination.
- `api.voiceService()`: Direct Simple Voice Chat bridge and raw packet dispatch.
---
## 📡 Fabric Network Packet System & Inter-Mod Protocols (`@DreamPacket`)
- **Annotation-Driven Networking Pipeline**:
- Introduced `@DreamPacket` and `@DreamServerReceiver` with automatic classpath scanning via `PacketAnnotationProcessor` and `ServerPacketAnnotationProcessor`.
- Registered all packet codecs with Fabric's `PayloadTypeRegistry` under the `dreamvoice:*` namespace.
- **Preshot Server-Bound & Client-Bound Packet Catalog (40+ Packets)**:
- **Configuration & Visualizer**: `ServerBoundRequestConfigSyncPacket`, `ClientBoundConfigSyncPacket`, `ServerBoundVisualizerTogglePacket`, `ClientBoundVisualizerSyncPacket`.
- **3D Spatial Speakers**: `ServerBoundSpeakerCreatePacket`, `ServerBoundSpeakerDeletePacket`, `ServerBoundSpeakerLinkPacket`, `ServerBoundSpeakerUnlinkPacket`, `ServerBoundSpeakerPlaySoundPacket`, `ServerBoundSpeakerStopSoundPacket`, `ServerBoundSpeakerUpdatePacket`, `ClientBoundSpeakerSyncPacket`.
- **Wiretaps & Surveillance**: `ServerBoundWiretapCreatePacket`, `ServerBoundWiretapDeletePacket`, `ServerBoundWiretapSubscribePacket`, `ServerBoundWiretapUnsubscribePacket`, `ClientBoundWiretapSyncPacket`.
- **Radios & Walkie-Talkies**: `ServerBoundRadioCreatePacket`, `ServerBoundRadioJoinPacket`, `ServerBoundRadioLeavePacket`, `ClientBoundRadioSyncPacket`.
- **Audio Recordings & Cassettes**: `ServerBoundRecordingStartPacket`, `ServerBoundRecordingStopPacket`, `ServerBoundCassetteCreatePacket`, `ServerBoundRecordingPlayPacket`, `ServerBoundRecordingStopPlayPacket`, `ClientBoundRecordingSyncPacket`.
- **DSP Voice Filters**: `ServerBoundFilterApplyPacket`, `ServerBoundFilterRemovePacket`, `ServerBoundFilterClearPacket`, `ServerBoundFilterTogglePacket`, `ClientBoundFilterSyncPacket`.
- **Acoustic Rooms**: `ServerBoundRoomCreatePacket`, `ServerBoundRoomDeletePacket`, `ServerBoundRoomUpdatePacket`, `ClientBoundRoomSyncPacket`.
- **Transmitters & Projections**: `ServerBoundTransmitterCreatePacket`, `ServerBoundTransmitterDeletePacket`, `ServerBoundTransmitterTogglePacket`, `ClientBoundTransmitterSyncPacket`, `ServerBoundProjectionCreatePacket`, `ServerBoundProjectionDeletePacket`, `ClientBoundProjectionSyncPacket`.
- **Zero-Dependency Inter-Mod Integration**:
- Allows external survival mods (craftable megaphones, spy bugs, walkie-talkies, tape recorders) and client HUD mods to control DreamVoice subsystems via JSON custom payloads without hard compile-time dependencies.
---
## ⚡ Dual-Platform Event Bus (Bukkit & Fabric)
- **Unified Voice Events**:
- All event classes extend `VoiceEvent` and feature self-dispatching via `.callEvent()`.
- **Platform Event Dispatching**:
- **Paper**: Dispatched natively through Bukkit's `PluginManager` for `@EventHandler` listeners.
- **Fabric**: Dispatched through `DreamVoiceEvents.VOICE_EVENT.register(...)` callback hook.
- **Event Coverage**:
- Cancellable hooks across all lifecycle actions: `SpeakerLinkPlayerEvent`, `SpeakerPlaySoundEvent`, `RadioChannelJoinEvent`, `CassetteCreateEvent`, `CassettePlayEvent`, `VoiceRecordingStartEvent`, `VoiceFilterApplyEvent`, `VoiceWallOcclusionEvent`, `VoiceKeywordSpokenEvent`, `WiretapSubscribeEvent`, etc.
---
## 👁️ Real-Time 3D Acoustic Visualizer Mode (`/voice visualizer`)
- **Interactive Acoustic Raycasting**:
- Added `/voice visualizer [toggle|on|off]` (permission: `dreamvoice.visualizer`).
- Renders 3D particle rays illustrating line-of-sight paths, wall collision impacts, aperture diffraction bypasses around doors/openings, and speaker audible coverage spheres.
- **Performance-Conscious Hand-Held Requirement**:
- Particle streams are rendered **only** when the inspecting player has the visualizer tool (default: `COMPASS`) equipped in their main hand, preventing client lag and visual clutter during normal gameplay.
- **Synchronized Visualizer State**:
- State is automatically synced to Fabric clients via `ServerBoundVisualizerTogglePacket` and `ClientBoundVisualizerSyncPacket`.
---
## 🎙️ VoiceWiretap x VoiceProjection Integration
- **Cross-Module Audio Propagation**:
- Covert wiretap microphones (`VoiceWiretap`) now dynamically support and intercept voices emitted through active voice projections (`VoiceProjection`).
- **Dual-Origin Spatial Audio**:
- **Physical Emission (`isEmitVoiceAtPlayer`)**: Microphones in proximity to the player's physical body capture the direct voice as normal.
- **Anchor Emission (`isEmitVoiceAtAnchor`)**: Microphones in proximity to the projection's anchor location (`projection.getAnchorLocation()`) intercept the projected voice in real time.
- **Acoustic Occlusion & Wall Physics**: Line-of-sight raycasting (`VoiceRayCast`) and material attenuation (`VoiceWall`) are accurately simulated between the anchor coordinates and the wiretap.
- **Filter Inheritance**: Voice projections configured with custom filters (e.g., megaphone, radio, disguise) pass their processed audio downstream to wiretap listeners.
---
## 🔌 Public Hearing & Attenuation API (`VoiceService` & `VoiceWallService`)
- **Unified Audibility Check (`canHear`)**:
- Introduced `voiceService.canHear(speaker, listener)` (with `Player` and `UUID` overloads).
- Evaluates whether a listener can hear a speaker across all communication channels:
1. Direct point-to-point audio transmitters (`VoiceTransmitterService`).
2. Shared radio frequency channels (`VoiceRadioService`).
3. Proximity spatial voice chat (`canHearProximity`).
- **Full-Condition Proximity Audibility (`canHearProximity`)**:
- Introduced `voiceService.canHearProximity(speaker, listener)` (with `Player` and `UUID` overloads).
- Validates active Simple Voice Chat connections for both players.
- Enforces life states (`ALIVE`, `DEAD`, `SPECTATE`).
- Evaluates voice projection constraints (`emitVoiceAtPlayer`, `emitVoiceAtAnchor`, `hearPlayerEnvironment`).
- Respects configured distance limits (`Codex.getEffectiveDistance()`).
- Computes total dB attenuation across `VoiceWall` materials and isolated `VoiceRoom` cuboids; returns `false` if sound is blocked ($\ge 99.0\text{ dB}$).
- **Direct Decibel Attenuation Metrics**:
- Added `voiceService.getEffectiveAttenuationDb(speaker, listener)` to measure total acoustic dB loss between two players.
- Added `voiceWallService.getAttenuationDb(speaker, listener)` for querying raw wall and room isolation losses.
---
## 📢 Physical Broadcast System (`VoiceBroadcastService`)
- **Podium & Intercom Broadcast Points**:
- Introduced `VoiceBroadcastService` and `/voice broadcast` command suite.
- Players speaking within a configured capture radius around a location or entity automatically have their voice routed to connected speakers.
- **Flexible Audio Routing**:
- **All Speakers Routing (`allSpeakers = true`)**: Broadcasts to every registered speaker across the server.
- **Selective Target Speakers**: Link specific speakers to a broadcast point (`/voice broadcast link <name> <speaker>`).
- **On/Off Toggle & Filter Chaining**:
- Broadcast points can be toggled on/off on demand (`/voice broadcast toggle <name>`).
- Optional custom audio filters can be chained to the broadcast (e.g. intercom distortion, PA megaphone filter).
- **Modular Persistence**:
- Stored under `modules/broadcast/` with automatic saving on server shutdown.
---
## 🛠️ Interactive Configuration Mode & Tool (`/voice config`)
- **Interactive Configuration Tool (`/voice tool`)**:
- Added `/voice config` and `/voice tool` commands (using `ECHO_SHARD` as the physical tool to prevent conflicts with WorldEdit wands).
- Config tool supports interactive targeting: entities, blocks, or air/gaze fallback.
- **Full InvUI Management GUIs Across All Audio Subsystems**:
- **Dashboard (`VoiceConfigMainGUI`)**: Visual dashboard covering all audio subsystems with target coordinates/entity indicators.
- **Speakers Manager (`SpeakerListGUI`, `SpeakerEditGUI`)**: Browse speakers, adjust distance/range with +/- buttons, toggle mode (GLOBAL / RESTRICTED), teleport, or create new speakers at current target.
- **Broadcast Manager (`BroadcastListGUI`, `BroadcastEditGUI`, `BroadcastLinkSpeakersGUI`)**: Browse broadcast points, toggle active state (ON/OFF), adjust radius, toggle all-speakers routing, visually link/unlink individual speakers, cycle filters, or create new points.
- **Wiretaps Manager (`WiretapListGUI`, `WiretapEditGUI`)**: Inspect covert bugs, toggle live eavesdropping, teleport, or deploy new bugs.
- **Acoustic Rooms Inspector (`RoomListGUI`)**: View room dimensions, reverberation presets, and acoustic isolation percentages.
- **Radio Channels Manager (`RadioListGUI`)**: Browse frequencies, view active listener counts, and tune in/disconnect directly.
- **Transmitters Manager (`TransmitterListGUI`)**: Toggle transmitter mode, view linked receiver players, unlink or configure receivers.
- **Projections Inspector (`ProjectionListGUI`)**: Inspect active player projections, emission modes (anchor/player), and teleport to anchor coordinates.
- **Acoustic & Wall Engine (`AcousticInspectGUI`)**: Live toggle for VoiceWall, cycle occlusion modes (Realistic/Strict/Off), toggle air damping, particle raycast debug, and inspect acoustic properties of targeted blocks/materials.
---
## 🌐 Complete Localization & Translation System (`LangService`)
- **Adventure Component.translatable Integration**:
- All command messages, items (Cassette, Config Tool), and InvUI configuration menus now use `Component.translatable(...)` backed by MiniMessage translation stores.
- Eliminated all hardcoded `TextDecoration` (`<!italic>`, `<b>`) and `NamedTextColor` calls across UI classes; all styling is defined directly within language files.
- **Bilingual English (Default) & French Support**:
- Populated `lang-dreamvoice.json` with comprehensive translation keys, gradients, formatting tags, and arguments.
- Configured default plugin language to English (`EN`) with full client-side French (`FR`) fallback.
---
## 📦 Build System & Dependency Centralization
- **Centralized `gradle.properties`**:
- Consolidated all plugin, toolchain, and dependency versions into `gradle.properties`:
- `minecraft_version = 26.1.2`
- `paper_api_version = 26.1.2.build.+`
- `fabric_api_version = 0.155.0+26.1.2`
- `loader_version = 0.19.3`
- `loom_version = 1.17-SNAPSHOT`
- `shadow_version = 9.4.1`
- `voicechat_api_version = 2.6.20`
- `vosk_version = 0.3.45`
- `cloud_fabric_version = 2.0.0-beta.16`
- `java_version = 25`
- Streamlined `settings.gradle` and all subproject build files (`api`, `common`, `paper`, `fabric`) to reference properties exclusively.
- **CI/CD Workflow Modernization**:
- Updated GitHub Actions workflows (`publish.yml`, `javadoc.yml`, `discord-announce.yml`) for dual-platform publishing to GitHub Packages and Modrinth.
---
## 🐛 Bug Fixes & Stability
- **Projection Audio Crackling & Transcoding Artifacts**:
- Eliminated audio crackling and high-frequency buzzing occurring when speaking while in voice projection:
- Removed discontinuous chunk-level 1-pole lowpass smoothing filter that injected 50 Hz boundary discontinuities into audio packets.
- Prevented multi-decoding of incoming microphone Opus packets on shared decoders across listeners.
- Implemented `encoder.resetState()` on speech pauses (> 400ms) to prevent Opus predictor state corruption upon resuming speech.
- Bypassed PCM decoding and lossy Opus transcoding completely when no wall occlusion or voice filters are present, routing raw Opus packets directly to 3D locational audio channels.
- **Speech Recognizer Crash on Reload**:
- Resolved `kaldi::KaldiFatalError` (`Can't add speaker model to already running recognizer`) triggered during `/voice speech reload` by safely closing and cycling active Vosk recognizer instances before applying updated keyword grammars.
- **CI / Discord Webhook Release Workflow**:
- Fixed Python variable scope (`brand_color`) in `.github/workflows/discord-announce.yml`.
- Added role mention `<@&1546913649308995738>` to automated Discord release broadcasts.
---
## 🧹 Code Quality & Conventions
- Removed redundant control-flow braces on single statements (`if`, `else`, `for`) across `fabric`, `paper`, `common`, and `api`.
- Cleaned up inline fully-qualified class names in favor of clean header imports.
- Standardized `final var` declaration across all local variable scopes.
release
DreamVoice 2.0.0
2.0.08 сент. 2026 г.11Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 2.0.0
## 🚀 Architectural Overhaul & Modular Storage
- **Modular Folder & Storage Architecture**:
- Transitioned from a monolithic layout to a clean, isolated **per-module** directory structure under `plugins/DreamVoice/modules/`:
- `modules/wall/config.json`: Acoustic occlusion, diffraction, and material attenuation properties.
- `modules/speaker/data.json`: 3D directional and omni speaker locations and configurations.
- `modules/radio/data.json`: Walkie-talkie and radio frequency channels.
- `modules/record/`: Dedicated subdirectories for raw capture (`recordings/`) and converted audio files (`exports/`).
- `modules/wiretap/data.json`: Wiretapping bugs persistence.
- `modules/projection/data.json`: Voice projections.
- `modules/transmitter/data.json`: Voice transmitters.
- **Preserved Root Audio Library**:
- The `plugins/DreamVoice/sounds/` directory remains directly at the root, allowing all modules (Speakers, Radios, Intercoms) to seamlessly share common sound effects, chimes, and alarms without duplicate assets.
- **Root `config.json` Dedicated to Modules**:
- The root `config.json` is now streamlined to exclusively handle module toggling (`modules: { wall: true, speaker: true, ... }`).
- **Per-Module Persistence Configuration (`config.json`)**:
- Each persistent module (`speaker`, `radio`, `wiretap`, `projection`, `transmitter`, `room`) includes its own `persistence` block within `modules/<module>/config.json`:
- `save_on_stop`: When `false`, ignores saving on server shutdown (`onDreamDisable`).
- `auto_save`: Enables or disables background periodic auto-saving.
- `auto_save_interval_seconds`: Dedicated interval in seconds for asynchronous persistence per module.
- **Zero-Loss Hot Migration**:
- Automatic migration on startup: existing data from `data/*.json`, `recordings/`, and `exports/` are moved safely into their respective `modules/` directories with zero administrative intervention and zero downtime.
## 🌍 DreamAPI LangService Integration
- **Decoupled Localization Engine**:
- Integrated DreamAPI's `LangService` (`fr.dreamin.dreamapi.api.lang.service.LangService`).
- DreamVoice explicitly boots `LangServiceImpl` when running with `@EnableServices(mode = LoadMode.NONE)`.
- All hardcoded chat, action bar, title, and item lore strings are moved to `plugins/DreamVoice/lang/lang-dreamvoice.json`.
- Automatic per-player client locale resolution (`player.locale()`) with seamless fallback to English defaults.
## 🎒 DreamAPI ItemRegistryService Voice Handlers
- **`VoiceItemHandler` & `VoiceItemContext`**:
- Introduced native voice handlers designed for DreamAPI's `ItemDefinition.builder()`:
- `VoiceItemHandler.addFilter("filterId")`: Applies voice filter (e.g. on `ItemAction.SET_ARMOR` or `ItemAction.HELD`).
- `VoiceItemHandler.removeFilter("filterId")`: Removes voice filter (e.g. on `ItemAction.REMOVE_ARMOR` or `ItemAction.UNHELD`).
- `VoiceItemHandler.toggleFilter("filterId")`: Toggles filter on/off with feedback (e.g. on `ItemAction.RIGHT_CLICK`).
- `VoiceItemHandler.timedFilter("filterId", Duration)`: Applies a filter for a typed `java.time.Duration` before auto-reverting.
- `VoiceItemHandler.connectRadio("frequency")` & `disconnectRadio()`.
- `VoiceItemHandler.of(consumer)`: Exposes an enriched `VoiceItemContext` for custom item logic directly in item builders.
## 🎛️ Custom File Filters & Auto-Registration Engine
- **Annotation-Driven Auto-Registration (`@AutoVoiceFilter`)**:
- Introduced `@AutoVoiceFilter(priority = ..., enabled = ...)` for automated discovery and registration of third-party or addon filters via `voiceFilterService.registerAnnotatedFilters(Collection<Class<?>>)`.
- **Dynamic File Filters (`.yml`, `.json`, `.java`)**:
- Removed hardcoded filter implementations from `core` source code in favor of a 100% file-first architecture.
- All 13 built-in filters (`AlienVoiceFilter.java`, `CaveVoiceFilter.java`, `DeepVoiceFilter.java`, `DisguiseVoiceFilter.java`, `GasmaskVoiceFilter.java`, `GhostVoiceFilter.java`, `HeliumVoiceFilter.java`, `MegaphoneVoiceFilter.java`, `MuffledVoiceFilter.java`, `RadioVoiceFilter.java`, `RobotVoiceFilter.java`, `TelephoneVoiceFilter.java`, `UnderwaterVoiceFilter.java`) are stored in `core/src/main/resources/modules/filter/filters/` and automatically extracted to `plugins/DreamVoice/modules/filter/filters/` upon first server boot.
- Filters can be created, tweaked, or removed on the fly in `plugins/DreamVoice/modules/filter/filters/`.
- Declarative DSP pipeline for `.yml` and `.json`: support for `lowpass`, `highpass`, `gain`, `overdrive`, `ring_modulator`, and `delay/echo`.
- Hot-compilation of `.java` source files on-the-fly via JDK `JavaCompiler` with custom in-memory classloading and dependency resolution against DreamVoice and DreamAPI.
- **Filter Exporter Engine**:
- Added API method `voiceFilterService.exportFilter(filterId, format)` supporting `"yml"`, `"json"`, and `"java"`.
- Added commands: `/voice filter list`, `/voice filter reload`, and `/voice filter export <filter> <yml|json|java>`.
- Allows exporting any active filter into a declarative pipeline file (`.yml` / `.json`) or extracting its full Java source code (`.java`) directly into `modules/filter/filters/`.
## 🏰 Acoustic Zones & Soundproof Rooms (Acoustic Rooms)
- **Module `room` (`plugins/DreamVoice/modules/room/`)**:
- `modules/room/config.json`: Defines reusable acoustic presets with dedicated sound isolation percentage (`isolation_pct`), spatial reverberation (`reverb`), and automated voice filters (`filters`). Includes module `persistence` configuration.
- `modules/room/data.json`: Stores active rooms and their DreamAPI `Cuboid` spatial bounds.
- **Soundproofing & Room Attenuation Integration**:
- Connected directly to `VoiceWallServiceImpl.processEntitySoundPacket`.
- Sound isolation blocks sound transmission completely (100% loss) if either the sender or receiver is inside a fully soundproof room, or if they are in distinct isolated rooms.
- Proportional sound attenuation loss is calculated based on effective isolation percentages.
- **Dynamic Presence & Filter Stacking**:
- Event listeners for DreamAPI `CuboidPlayerEnterEvent` and `CuboidPlayerLeaveEvent` automatically track player room transitions and attach or detach room filters seamlessly.
- **Commands & Management**:
- Added `/voice room list`, `/voice room info <id>`, `/voice room delete <id>`, and `/voice room reload`.
## 🎙️ Speech-to-Text, Keyword Spotting & Interactive Transcription Stations
- **Module `speech` (`plugins/DreamVoice/modules/speech/`)**:
- `config.json`: Comprehensive configuration with English default texts, transcription mode selection (`LOCAL` or `SIDECAR`), station parameters, and analysis display settings.
- `keywords.json`: Dedicated configuration defining keywords, aliases, confidence thresholds, cooldowns, and required permissions.
- `models/`: Dedicated directory storing offline Vosk models, manageable manually or downloaded via command.
- **Realtime Keyword Spotting (KWS) with Constrained Vosk Grammar**:
- Ultra-lightweight asynchronous background listening per player powered by Vosk.
- Utilizes a constrained grammar JSON array containing only registered keywords and `[unk]`, minimizing CPU usage and eliminating dictionary hallucinations.
- Instant recognizer reset on keyword trigger to prevent duplicate triggers across consecutive 20ms audio frames.
- Configurable audio energy gate (`min_energy_threshold`) preventing microphone hiss and background noise from feeding into the speech decoder.
- Automatic phonetic buffer clearance on speech pauses (`silence_reset_ms`), eliminating phantom residue and cross-phrase keyword hallucinations.
- Triggers the Bukkit `VoiceKeywordSpokenEvent(player, keyword, matchedWord, confidence)` for game scripting, roleplay spells, secret doors, and voice interactions.
- Live debug inspector via `/voice speech debug [player]` or global console logging.
- **Interactive Audio Cassette Transcription Stations**:
- Right-click with an **Audio Cassette** on a configured block (`LECTERN`, `JUKEBOX`, or custom block materials).
- Fully customizable analysis feedback with multiple display types (`ACTION_BAR`, `CHAT`, `TITLE`), default English strings, and `LangService` i18n translation keys.
- Configurable sound effects and particle animations during the analysis period.
- Generates a formatted **Written Book (`Material.WRITTEN_BOOK`)** containing paginated transcripts, timestamps (`[00:14] Player: Text`), and translatable metadata.
- Automatic lectern placement (`put_on_lectern`) when interacting with an empty lectern.
- **Hybrid Local (Vosk) & Sidecar (faster-whisper) Transcription Engine**:
- `LOCAL` mode: runs directly inside the JVM using `com.alphacephei:vosk`.
- `SIDECAR` mode: offloads audio transcription over asynchronous HTTP to an external Whisper instance with automatic fallback to local Vosk (`fallback_to_local`).
- Production-ready official Pterodactyl Egg (`egg-dreamvoice-transcription.json`).
- **Model Management & Commands**:
- `/voice speech download <lang|model>`: Asynchronously downloads and unpacks official Vosk models without server freezes. Supports both lightweight small models (`fr`, `en`, `de`, `es`, `it`, `ja`, `ru`, `pt`, `nl`, `zh`) and high-accuracy big server models (`fr-big`, `en-big`, `de-big`, `es-big`, `it-big`, `ja-big`, `ru-big`, `zh-big`, `hi-big`, `uk-big`).
- `/voice speech models` & `/voice speech setmodel <model>`: Inspects and selects the active speech recognition model.
- `/voice speech transcribe <id> [book|chat]`: Manual transcription utility for staff, moderators, and storytellers.
- `/voice speech keywords`: Displays all active keyword spotting definitions and trigger phrases.
- `/voice speech reload`: Hot-reloads speech configuration, keywords, and Vosk grammar definitions.
release
DreamVoice 1.1.2
1.1.28 сент. 2026 г.10Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 1.1.2
## ✨ New Features
- **Audio File Export (MP3, OGG, WAV)**:
- Added asynchronous audio export to `VoiceRecordingService`: `exportRecording(UUID/VoiceRecording, AudioExportFormat, [fileName])`.
- Converts audio into MP3, OGG Vorbis, or standard PCM WAV into `plugins/DreamVoice/exports/`.
- Decodes Opus speech stream directly and accurately using sequential stream reconstruction with natural conversational pause detection, eliminating distortion and crackling.
- Added command: `/record export <id> <mp3|ogg|wav> [fileName]` with tab-completion, custom destination file naming, and direct file path feedback.
## 🐛 Bug Fixes & Audio Improvements
- **Fixed VoiceWallOcclusionEvent Async Dispatch Exception**:
- Resolved `java.lang.IllegalStateException: VoiceWallOcclusionEvent may only be triggered synchronously` occurring when `VoiceWallServiceImpl.processEntitySoundPacket` dispatched acoustic occlusion checks on Simple Voice Chat's audio processing thread (`Server$ProcessThread`).
- `VoiceWallOcclusionEvent` now explicitly calls `super(true)` in its constructor to mark the Bukkit event as asynchronous, allowing Paper's `PaperEventManager` to dispatch it safely across worker threads without exceptions.
- Hardened `EntitySoundPacketEvent` with an explicit asynchronous constructor (`super(true)`) to prevent similar thread check violations.
- **Restored Speaker Audio Feedback for Nearby Senders**:
- Fixed an issue where players speaking into or next to a 3D speaker could not hear their own voice coming out of the speaker.
- Removed sending-player exclusions (`!sp.getUuid().equals(senderUuid)` in `broadcastToDedicatedChannels` and `if (listener.getUniqueId().equals(senderUuid)) return;` in `processSingleListenerStream`).
- Players standing within the speaker's acoustic range (`distance`) and line-of-sight now naturally hear their voice projected from the speaker's 3D locational coordinates.
- Integrated `speaker.getFilter()` listener validation within `processSingleListenerStream` to ensure custom speaker recipient predicates are consistently respected across both direct streaming and DSP-filtered pipelines.
- **Complete DSP Voice Filter Overhaul**:
- **Radio (`RadioVoiceFilter`)**: Replaced 10-bit stair-step quantization (which caused harsh clicking/crackling) and 1st-order IIR with a cascaded 4th-order Butterworth bandpass (480 Hz – 2600 Hz, 24 dB/oct), mid-range presence boost (+4 dB at 1.5 kHz), warm hyperbolic tangent ($\tanh$) analog overdrive, and subtle RF carrier hiss (-42 dB).
- **Telephone (`TelephoneVoiceFilter`)**: Implemented 2nd-order Butterworth bandpass (350 Hz – 3400 Hz) with vintage carbon capsule asymmetrical saturation.
- **Alien (`AlienVoiceFilter`)**: Implemented linear fractional-delay interpolation on the sinus modulation line, eliminating sample-skipping clicks.
- **Ghost (`GhostVoiceFilter`)**: Added smooth linear delay interpolation on dual chorusing delay lines with soft-knee limiting to eliminate crackling.
- **Helium & Deep (`HeliumVoiceFilter`, `DeepVoiceFilter`)**: Completely redesigned pitch-shifting using 40ms grains with Hann windowing (ensuring constant unity overlap-add gain) and linear interpolation, eliminating the 50 Hz buzz and window boundary clicks.
- **Cave (`CaveVoiceFilter`)**: Rebalanced wet/dry mix (0.68/0.32) and added soft limiting to prevent reverb buffer overflow and distortion on loud speech.
- **Megaphone (`MegaphoneVoiceFilter`)**: 2nd-order horn bandpass (600 Hz – 3400 Hz) with +5 dB acoustic throat resonance at 1100 Hz, analog saturation, and normalized slapback echo.
- **Robot (`RobotVoiceFilter`)**: Normalized carrier synthesis to strictly $\le 1.0$ and tuned ring modulation dry/wet balance.
- **Disguise (`DisguiseVoiceFilter`)**: Fixed buffer index clamping bug, isolated states per player UUID to prevent cross-player modulation bleeding, and added linear interpolation.
release
DreamVoice 1.1.1
1.1.16 сент. 2026 г.6Minecraft: 26.1.2paper, purpur, spigot
Что нового
# 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: `processVoiceConnections` 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.
release
DreamVoice 1.1.0
1.1.05 сент. 2026 г.2Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 1.1.0
## 🔊 3D Spatial Audio & Speaker/Projection Enhancements
- **Native 3D Positional Audio for In-Game Speakers**:
- Migrated speaker audio playback from flat `StaticAudioChannel` with manual gain curves to `LocationalAudioChannel`.
- Speakers now feature full 3D spatialization (OpenAL / HRTF, stereo panning, pitch, and distance roll-off) centered directly on the speaker's in-game block location.
- **Native 3D Positional Audio for Voice Projections (Body Anchors)**:
- Upgraded voice projections (`routeOwnerVoiceToAnchorListeners`) to `LocationalAudioChannel` positioned at the projection's anchor location.
- Players standing around an active projection/anchor (e.g. security cameras, drones, intercoms) now hear the projected voice with accurate 3D spatialization and attenuation.
- **Elimination of Multi-Channel Audio Crackling & Popping**:
- Resolved Opus filter corruption occurring when multiple speakers or projections transmit concurrently.
- Replaced shared/global `OpusEncoder` instances with discrete, stateful stream encoders keyed per `(Source : Sender : Listener)` pipeline.
- Deterministic channel UUIDs (`UUID.nameUUIDFromBytes`) ensure each unique audio stream retains its own independent Opus prediction state without inter-channel bleed.
- Added automatic encoder lifecycle cleanup on player disconnect and inactivity timeouts (30 seconds).
---
## ⚙️ Configuration & Live Reload Synchronization
- **Fixed Live Config Reload (`/dreamvoice reload config`)**:
- Fixed an issue where reloading the configuration reloaded `Codex` in memory but failed to notify or update the active `VoiceWallService`.
- `/dreamvoice reload config` now dynamically applies changes to `VoiceWall` active state (`enabled`), modes (`STRICT_BLOCK`, `REALISTIC`, etc.) and `airDamping` live without requiring a server reboot.
- Updated `Codex.VoiceWall.getEffectiveMode()` so disabling VoiceWall (`"enabled": false`) properly forces `VoiceWallMode.OFF` even if an explicit mode string is present in the configuration.
- **Modernized Default `config.json` Template**:
- Aligned default `config.json` with the full modern `Codex` object graph (including `diffraction`, `categories`, `overrides`, `reverb`, and `airDamping`).
- Strict JSON handling in `CodexServiceImpl`: eliminates stale fallback behaviors and ensures consistency between file configuration and in-game diagnostic commands (`/voicewall info`).
---
## 🧱 VoiceWall & Acoustic Physics
- **Fixed Wall Attenuation Gain Inversion & Clipping Elimination**:
- Fixed a critical DSP bug where wall attenuation formula `Math.pow(10.0, totalDbLoss / 20.0)` amplified audio signals (e.g. +15 dB to +40 dB boost, up to 100x magnification) instead of attenuating them (`-totalDbLoss / 20.0`).
- Added sample clamping `Math.clamp(..., Short.MIN_VALUE, Short.MAX_VALUE)` and soft-knee anti-clipping limiting (`AudioLimiter`) to prevent digital saturation crackling/popping when voice passes through walls.
- **Full 3D Spatialization Intact**: Retained native Simple Voice Chat `EntitySoundPacket` transmission, preserving client-side OpenAL HRTF, angle, distance, and 3D spatial panning.
- **Dedicated Stream Codecs for VoiceWall Audio**:
- Replaced shared receiver codecs with isolated `OpusDecoder` and `OpusEncoder` pipelines keyed per `(senderUuid : receiverUUID)` stream.
- Prevents Opus Linear Predictive Coding (LPC) state desynchronization when multiple speakers talk simultaneously or within wall attenuation fields.
- Added automatic cleanup of inactive stream codecs upon player quit and inactivity timeouts (30s).
- **Acoustic Raycast Partial Attenuation**:
- Updated speaker and projection wall occlusion checks from binary block checks (`ray.isBlocked()`) to line-of-sight analysis (`!ray.lineOfSight()`).
- Allows material-based sound dampening and wall absorption through blocks instead of completely cutting off audio prematurely.
- **Codex Data Mutability**:
- Removed `final` from `Codex.distance` and added `@Setter` / `@AllArgsConstructor` annotations to support runtime updates and proper deserialization.
---
## 🎙️ Global Audio Codec Isolation & Crackling Elimination
- **Wiretaps & Hidden Bugs (`VoiceWiretapService`)**:
- Isolated Opus encoders per `(wiretapUuid : senderUuid)` stream to eliminate multi-speaker corruption around listening bugs.
- Deterministic channel UUIDs (`UUID.nameUUIDFromBytes`) ensure channel stability across player reconnections.
- Automatic stream encoder disposal on player quit and inactivity.
- **Walkie-Talkie Radio (`VoiceRadioService`)**:
- Isolated radio Opus encoders per sender to prevent frame predictor corruption between radio broadcasts and other audio features.
- Fixed Roger Beep audio injection: temporary tone generator encoder is cleanly closed without colliding with ongoing player voice streams.
- Deterministic channel UUIDs for static radio channels.
- **Point-to-Point Transmitters (`VoiceTransmitterService`)**:
- Dedicated transmitter encoders per speaker and deterministic static channel IDs.
- Complete lifecycle tracking with automatic inactivity cleanup.
- **Voice Cassette Recording (`VoiceRecordingService`)**:
- Dedicated recording encoders per speaker protected by `AudioLimiter`.
- Guaranteed safe native Opus decoder closure in `finally` blocks during cassette playback frame stitching.
release
DreamVoice 1.0.9
1.0.95 сент. 2026 г.2Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 1.0.9
## 🐛 Bug Fixes & Paper ClassLoader Isolation
- **Resolved Startup Crash (`NoClassDefFoundError: net/luckperms/api/LuckPerms`)**:
- Fixed a critical initialization crash on Paper servers running LuckPerms caused by Paper's strict plugin classloader isolation (`PaperPluginClassLoader`).
- Added `LuckPerms` as an optional dependency (`required: false, load: BEFORE`) in `paper-plugin.yml` so Paper properly authorizes class access if LuckPerms is installed on the server.
- **Eliminated ModelEngine Startup Warning**:
- Resolved `[DreamVoice] Plugin ModelEngine is marked as hard dependency but not declared as such in plugin.yml or paper-plugin.yml!`.
- Suppressed unneeded dependency checks during plugin initialization by opting out of DreamAPI's default gameplay and item registry services.
---
## 📦 Dependency & Distribution
- **DreamAPI Upgrade (`0.5.1` → `0.5.3`)**:
- **JitPack Availability**:
- The `dreamvoice-api` is now available through [JitPack](https://jitpack.io/#Dreamin-MC/DreamVoice) for seamless Gradle and Maven dependency integration without requiring GitHub Packages authentication.
release
DreamVoice 1.0.8
1.0.81 сент. 2026 г.3Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 1.0.8
## 📖 Comprehensive JavaDoc Documentation (`api`)
- **Exhaustive English JavaDoc**: 100% of all public interfaces, classes, records, events, models, and builders in the `dreamvoice-api` module are now thoroughly documented in English.
- **Detailed API Coverage**:
- **Core & Lifecycle**: `VoiceService`, `VoicePersistenceService`, `CodexService`.
- **Player & State Management**: `PlayerService`, `VPlayer`, `PlayerManager`, `PlayerState`, and associated lifecycle events (`PlayerJoinVoiceEvent`, `PlayerLeaveVoiceEvent`, `PlayerStateChangeEvent`).
- **Audio Routing & Spatial Features**: `VoiceSpeakerService`, `Speaker`, `SpeakerMode`, `VoiceProjectionService`, `VoiceProjection`, `VoiceWiretapService`, `VoiceWiretap`, `VoiceRadioService`, `RadioChannel`, `VoiceTransmitterService`, `ReceiverConfig`.
- **DSP & Physics**: `VoiceFilterService`, `VoiceFilter`, `VoiceWallService`, `VoiceWallMode`, `MicrophonePacketEvent`, `EntitySoundPacketEvent`, `VoiceSoundBuilder`, `ByteArrayUtils`.
---
## ⚡ DSP Audio Filter & Real-Time Performance Optimizations
- **Precalculated Phase Constants**: Precomputed static phase increments (`LFO_INC`, `PHASE_INCREMENT`, `TWO_PI`) across all DSP filters (`UnderwaterVoiceFilter`, `RobotVoiceFilter`, `AlienVoiceFilter`, `DisguiseVoiceFilter`, `GhostVoiceFilter`), eliminating redundant mathematical calculations at 48,000 samples/second.
- **Static Constant Extraction**: Centralized magic numbers, frame dimensions (`FRAME_SIZE_SAMPLES = 960`), silence thresholds, audio buffer sizes, cleanup intervals, and volume category identifiers as `private static final` constants.
- **English Filter Display Names**: Standardized all filter names in English (`Deep Voice (Monster)`, `Helium (High Pitch)`, `Alien / Sci-Fi`, `Gas Mask / Helmet`, `Telephone`, `Disguise / Anonymizer`).
- **Acoustic Raycast Refinement**: Cleaned up direct line-of-sight checks in `VoiceRayCast` (`hitsTargetAtAnyHeight`) by eliminating redundant material lookups and dead control flow.
---
## 🏗️ Code Architecture & Cyclomatic Complexity Reduction
- **Monolithic Handler Decomposition**: Refactored large packet routing methods (`onMicrophone`, `processEntitySoundPacket`, `playRecordingTo`, `startRecording`) into dedicated, single-responsibility private helper routines across all core services (`VoiceWallServiceImpl`, `VoiceSpeakerServiceImpl`, `VoiceProjectionServiceImpl`, `VoiceWiretapServiceImpl`, `VoiceRadioServiceImpl`, `VoiceTransmitterServiceImpl`, `VoiceRecordingServiceImpl`, `VoiceServiceImpl`).
- **Standardized Section Banners**: Applied uniform structure comments (`STATIC FIELDS`, `INSTANCE FIELDS`, `CONSTRUCTOR METHODS`, `PUBLIC SERVICE METHODS`, `PRIVATE HELPER METHODS`, `EVENT LISTENERS`) across all services.
- **Modern Java Code Standards**: Consistent usage of `final var`, guard clauses with early returns, and simplified single-line control statements.
- **Full English Localization**: Converted remaining Action Bar debug messages, logger warnings, and console outputs to English.
---
## 🚀 CI/CD & Automated Deployment Pipelines
- **Automated JavaDoc Deployment (`javadoc.yml`)**: GitHub Actions workflow automatically generating and deploying complete API documentation to GitHub Pages on every release tag.
- **Streamlined GitHub Releases (`publish.yml`)**: Automatic release workflow publishing `DreamVoice.jar` (plugin binary) and `dreamvoice-api-${VERSION}.jar` with changelogs and Modrinth synchronization.
- **Code Quality Inspection (`qodana_code_quality.yml`)**: Integrated JetBrains Qodana static code analysis for automated quality checks and vulnerability scanning.
release
DreamVoice 1.0.7
1.0.71 сент. 2026 г.2Minecraft: 26.1.2paper, purpur, spigot
Что нового
# Changelog 1.0.7
## 💾 System Persistence & Storage
- **Automatic Lifecycle Persistence**: Automatic loading on server startup (`onServerStarted` once Simple Voice Chat API is ready) and automatic saving on server shutdown/plugin disable (`onDreamDisable`).
- **Independent JSON Storage**: Each voice module persists independently in `plugins/DreamVoice/data/`:
- `speakers.json`: 3D fixed/mobile speakers, locations, ranges, modes (`GLOBAL`/`RESTRICTED`), linked players, and attached entities.
- `wiretaps.json`: Spatial wiretaps, positions, listening ranges, attached entities, audio filters, and active listeners.
- `projections.json`: Body anchors and vocal projections, audio emission/listening toggles, ranges, and filters.
- `radios.json`: Radio frequency channels, Roger Beep settings, audio filters, and connected members.
- `transmitters.json`: Transmitter modes and configured receivers with optional max distance ranges.
- **Java API Integration**:
- New service `VoicePersistenceService` (`saveAll()`, `loadAll()`, `saveSpeakers()`, `loadSpeakers()`, `saveWiretaps()`, etc.).
- Added direct `save()` and `load()` methods on all sub-services (`VoiceSpeakerService`, `VoiceWiretapService`, `VoiceProjectionService`, `VoiceRadioService`, `VoiceTransmitterService`).
---
## 🎮 Unified & Harmonized Commands
- **New Central Administration Command `/dreamvoice` (or `/dv`)**:
- `/dv status`: Overview of active speakers, wiretaps, radio channels, projections, and VoiceWall mode.
- `/dv save [all|speakers|wiretaps|projections|radios|transmitters]`: Save specific or all data modules to disk.
- `/dv load [all|speakers|wiretaps|projections|radios|transmitters]`: Reload data modules from disk.
- `/dv reload [all|config|data|<module>]`: Reload configuration (`config.json`), saved data (`data/*.json`), or everything.
- **Consistent Action Verbs Across All Modules**:
- Support for both `add`/`create` and `remove`/`delete` across `/speaker`, `/wiretap`, `/radio`, and `/transmitter`.
- **New Detailed Inspection Commands**:
- `/speaker info <name>`: Displays location, attached entity, range, mode, allowed speakers, and playback state.
- `/radio info <channel>`: Displays channel audio filter, Roger Beep status, and active member list.
- `/wiretap info <name>`: Displays location, attached entity, range, filter, recording status, and listener count.
- `/projection info [player]`: Displays full anchor configuration, audio routing, and entity links.
- **Enhanced Utility Subcommands**:
- `/radio kick <channel> <player>`: Expel a player from a radio frequency channel.
- `/transmitter clear`: Clear all configured receivers from a transmitter.
- **Standardized Cassette Commands**:
- Unified parameter ordering: ID/Name first, target player optional (e.g., `/record cassette <id> [player]`, `/wiretap cassette <name> [player]`).
---
## 🌐 Full English Localization
- **Command Feedback & Error Messages**: All command output, errors, permission messages, and debug notifications translated to English.
- **In-Game Items**: Voice Cassette display name (`Voice Cassette`), item lore (`Author`, `Duration`, `ID`, `▶ Right-Click to play`), and interaction feedback translated to English.
---
## ⚙️ Code Quality & Performance
- Standardized codebase on modern Java standards (`final var` usage, simplified conditionals).
- Removed duplicate command logic between `voice airdamping`, `voicewall airdamping`, and config reloaders.
release
DreamVoice 1.0.6
1.0.61 сент. 2026 г.4Minecraft: 26.1.2paper, purpur, spigot
release
DreamVoice 1.0.5
1.0.51 сент. 2026 г.6Minecraft: 26.1.2paper, purpur, spigot