Compatibility
Minecraft: Java Edition
Platforms
Links
Creators
Details
🎙️ VoiceServer – Powerful Group Management for Simple Voice Chat
VoiceServer is a lightweight yet advanced plugin that makes managing Simple Voice Chat groups effortless. With intuitive commands offering full tab completion, you can organize, secure, and monitor voice chat groups in real time — perfect for servers hosting events, teams, or dynamic player structures. Fully compatible with Folia, Paper, Spigot and Bukkit on Minecraft 1.21.x.
🚀 Key Features
- 📋 List all voice chat groups
View all active Simple Voice Chat groups, including those with password protection. Groups with passwords now show[locked]instead of revealing the password in listings! - 🆕 Create new groups with optional persistence or password protection
You can instantly create groups that are either persistent or non-persistent and assign players to them, with the option to secure persistent groups with a password. - 🧑🤝🧑 Join players to existing groups
Thejoincommand allows you to move players, using selectors like@a,@s,@r, or@p, into any group. The internalplayerGroupMapensures the group state stays consistent. - ❌ Remove players from groups
You can remove players from their current group with thekickcommand, which supports selectors for batch actions. Thekicksubcommand no longer requires an explicit group argument; players are removed from their current group automatically. - 🗑️ Safely delete groups
Unused or outdated groups can be removed safely. Non-persistent groups are automatically deleted when empty, while persistent groups remain until manually removed. - 🛡️ Access control via permissions
All group management commands are secured under the unified permissionvoicechat.group.manage. - ⚡ Full tab completion support
Commands and their arguments autocomplete with Tab for faster workflows. Online players and selectors compatible with Folia are suggested automatically, and quoted parsing for group names and passwords supports spaces and special characters. - 📌 Persistent groups
Groups can be created to remain available even after all members leave, making them ideal for staff, admin, or permanent team channels. - 🐞 Debug logging and safe error handling
Clear messages and graceful error handling ensure stability at all times. - ℹ️ New
infocommand
Displays details such as the group type, persistence, lock status, and the current members. - ⚙️ Automatic handling of empty non-persistent groups
Groups are automatically removed when the last member leaves or is kicked. - 🔁 Robust tab-completion & selector handling
Target resolution for selectors (@r,@p, etc.) is compatible with Folia and fixed for edge cases, and tab-completion suggests Folia-compatible online players and selectors. - 🔧 New per-player VoiceChat permission system via
/vcpermission
Manage SimpleVoiceChat-specific permissions per player for three categories:
listen— listen in voice chatspeak— speak in voice chatgroup— join or create voice chat groups
give,remove,defaultandresetsubcommands and are persisted toconfig.yml(survive restarts).
🧭 Commands
/vcgroup list This command lists all current voice chat groups and indicates whether a group is password-protected using [locked].
/vcgroup create <player|@a|@s|@r|@p> <type> "<group_name>" [persistent|not-persistent] ["password"] Use this command to create a new group and add the specified players. If persistent is selected, the group will remain even if everyone leaves. Password protection is optional for persistent groups.
/vcgroup join <player|@a|@s|@r|@p> "<group_name>" This command joins the specified players to an existing group, with playerGroupMap ensuring the group state stays consistent.
/vcgroup kick <player|@a|@s|@r|@p> This command removes players from their current group, and selectors can be used for batch actions. The group argument is no longer required.
/vcgroup remove "<group_name>" This command deletes a voice group, whether persistent or temporary, removes its password protection, and kicks members automatically.
/vcgroup info "<group_name>" This command shows the group type, persistence, lock status, and current members.
🔐 /vcpermission — Voice permission management
/vcpermission give <player> <listen|speak|group> Grants the specified voice permission to a single player. Granting always ensures the player is added to allowed-players and removed from disallowed-players, then applies the change live if the player is online.
/vcpermission remove <player> <listen|speak|group> Removes the specified permission from a player. Removing removes the player from allowed-players and adds them to disallowed-players, and applies the change live if the player is online.
/vcpermission default <listen|speak|group> <true|false> Sets the global default for a permission category. Defaults are used when a player has no explicit allow/remove entry. By default, all three are true. Changing a default is applied immediately and live-updates all online players.
/vcpermission reset Resets all permission categories to factory defaults: default: true, allowed-players: [], disallowed-players: []. Also live-updates all online players.
⚙️ Configuration
No setup is required. Simply install VoiceServer alongside Simple Voice Chat and you are ready to start.
Persistence: All permission changes (player-specific lists and default values) are stored in config.yml. The plugin ensures the permissions tree is present, migrates old keys (e.g. players: → allowed-players), and saves changes so permission state remains across server restarts and reloads.
⚠ Requirements
- Minecraft: 1.20 - 1.21.x (fully tested on 1.21.x)
- Server type: Folia, Paper, Spigot or Bukkit (1.21.x) — fully supported.
- Dependencies: Simple Voice Chat Mod and API
- The plugin must load after Simple Voice Chat to register correctly.
💡 Example Use Cases
- You can dynamically create voice chat groups for PvP, minigames, or events, assigning players using selectors like random, nearest, all, or sender.
- Password-protected or private groups can be created for staff or factions, with
[locked]displayed while the password remains hidden, and persistence applied if needed. - Players can be easily moved, joined, or removed from groups, with instant auto-removal when a non-persistent group becomes empty.
- Permanent groups such as "Admin" can be created and remain available even after all members have left.
- Fine-grained voice permission control: grant or revoke
listen,speakandgroupper player, set sensible global defaults, and persist everything inconfig.yml.
🧑💻 Developer Notes
- Developed by Jakomi1, focusing on performance, usability, and API-first design.
- Integrates directly with
VoicechatServerApi. - All permission nodes are dynamically managed and injected at runtime as needed.
- Runtime permission system uses a single
PermissionAttachmentper player (no duplicate attachments). Permissions are applied live asvoicechat.listen,voicechat.speakandvoicechat.groups, and the plugin attempts a best-effort update of permission caches/commands after changes. - reloadPermissions() reloads only the permissions section from
config.yml, preserving other config values and ensuring consistent live state; an automatic migration from old config keys (likeplayers) to the new structured format is provided. - Fully compatible with Folia, Paper, Spigot and Bukkit 1.21.x, including Folia-compatible tab-completion and selector handling.
- The plugin includes robust logging, safe error handling, and automatic creation of a minimal
config.ymlif none is present.



