✨ Added
- New
/vcpermissioncommand introducing a fully custom per-player permission system for SimpleVoiceChat. - Three new voice permissions can now be managed individually for every player:
listen,speak, andgroup. /vcpermission give <player> <permission>allows granting a specific voice permission to any player./vcpermission remove <player> <permission>allows removing a previously granted permission from a player./vcpermission default <permission> <true|false>allows configuring global default values forlisten,speak, andgroup./vcpermission resetcommand restores the entire permission system to factory defaults (all defaults =true, no player overrides).- All permission changes — player-specific and default values — are now fully persisted in the
config.ymland remain saved across server restarts.
🛠️ Changed
- VoiceChat permission handling now first checks player-specific overrides (
give/remove) before falling back to global defaults. - Default behavior updated so that all three permissions (
listen,speak,group) are enabled by default unless modified. - Internal permission storage moved to a structured
config.ymlformat to ensure stability and persistence.
🐛 Fixed
- Resolved inconsistencies where permissions were previously inherited incorrectly from global SimpleVoiceChat settings.
- Fixed edge cases where players could gain or lose permissions unintentionally when no explicit permission rule existed.
- Fixed issues where permission changes were not saved properly across reloads or restarts.
🚑 Hotfix
- Hotfix for full compatibility with Spigot, Bukkit, and Arclight Neoforge.
✨ Added
- Full Folia support for all group-related commands (
/vcgroup create,join,kick,remove,info), ensuring compatibility with asynchronous player handling. - New
infosubcommand for/vcgroup, displaying group type, persistence, lock status, and current members. - Groups can now be created as
persistentornot-persistent. - Groups with a password now display only
[locked]in thelistcommand to hide passwords. - Automatic removal of empty non-persistent groups when the last member leaves or is kicked.
🛠️ Changed
- Quoted parsing for group names and passwords now works correctly (including spaces and special characters).
- Internal mapping
playerGroupMapupdated reliably on join, leave, and kick events to ensure consistent group state. kicksubcommand no longer requires a group argument; players are removed from their current group automatically.- Tab-completion improved: Folia-compatible online players and player selectors (
@a,@s,@r,@p) are suggested correctly.
🐛 Fixed
- Players are now reliably removed from their current group when leaving, being kicked, or switching groups.
- Group list immediately shows correct lock status (
[locked]) after changes. - Target resolution for all selectors (
@r,@p, etc.) fixed for Folia environments. - Empty non-persistent groups are always deleted correctly.
✨ Added
/vcgroupcommand improvements:- Support for group persistence: When creating, you can now specify
persistentornot-persistent. Persistent groups remain even after everyone leaves; non-persistent groups are automatically deleted when empty. - New
joinsubcommand replacesaddfor moving or adding players to existing groups. - Password protection is now optionally available for persistent groups. Only persistent groups can have a password.
- Group list in chat: All groups are now shown as clickable chat components with "Click to join" hover text, triggering the
/vcgroup join ...command when clicked. - Tab completion supports persistence options and always displays group names in quotes (
"<group name>").
- Support for group persistence: When creating, you can now specify
- Groups with a password are now displayed as
[locked]in the list; the password itself remains hidden.
🛠️ Changed
- Argument parsing for group name and password fully switched to quoted format:
"<group name>","<password>". - Tab completion refined contextually, especially for
create,join, and persistence options. - Automatic group removal: Only non-persistent groups are now deleted when empty. Persistent groups remain permanently.
- Only relevant groups are suggested in argument slots (always correctly quoted).
🐛 Fixed
- Consistent removal of group passwords when the group is deleted.
- All subcommands now handle quoted arguments robustly, with clear error handling for malformed input.
- Missing click events and status display for password-protected groups in the list are now fixed.
- Group switching actions (such as join/kick) now correctly consider persistence, so temporary groups disappear as expected.
🚑 Hotfix
- Permission node updated: All group management commands now use
voiceserver.vcgroupinstead ofvoicechat.group.manage. - Ensure your server’s permission configuration grants
voiceserver.vcgroupto users who should manage voice chat groups.
✨ Added
/vcgroupcommand improvements:- New selectors
@r(random player) and@p(nearest player to sender) are now supported for all relevant subcommands (create,add,kick). kick <player>now works without requiring a group argument and automatically removes players from their current group.- Tab completion now offers
@rand@pas suggestions in all player argument slots, alongside existing selectors and player names.
- New selectors
- Groups with a password now show only
[locked]in thelistdisplay, hiding the password for security.
🛠️ Changed
- Argument parsing for all player selectors (including
@r,@p) improved and made consistent throughout the plugin. - The
kicksubcommand no longer requires a group argument. - Tab completion for
kickno longer suggests group names. - Improved automatic group removal: groups are fully deleted as soon as the last member is removed.
🐛 Fixed
- Players are now reliably removed from their correct current group (including through selectors and direct kicks).
- The group list now always shows the correct status with
[locked]immediately after changes. - Resolved issues with group and player target resolution for
@rand@pselectors.
✨ Added
/vcgroupcommand improvements:listcommand upgraded for better display and functionality.remove <group_name>andkick <player> <group_name>now work correctly and reliably.- Groups are now fully and cleanly removed, including kicking all players from removed groups automatically.
- Improved argument parsing for group names with spaces and quotes.
- Tab completion suggestions now better support group names, player selectors (
@a,@s), and player names.
🛠️ Changed
- Better handling of group removal and player kicks on group deletion.
- Improved command feedback with clearer success and error messages.
- Unified permission check to
voicechat.group.managefor all group management commands.
🐛 Fixed
removeandkickcommands now fully functional without issues.- Group list updates after changes now happen reliably.
✨ Added
- Group names with spaces are now supported using quotes.
Example:/vc-group create Player "My Group Name" - Advanced argument parsing to handle group names and optional passwords reliably, even when names contain spaces.
🛠️ Changed
- Unified permission: Replaced multiple permissions with a single one:
voicechat.group.manage. - Enhanced tab completion: Group names with spaces are automatically wrapped in quotes when suggested.
- Improved command usage hints and clearer error messages for all subcommands.
- Automatic player removal from voice groups when a group is deleted.
🐛 Fixed
- Incorrect usage hints that previously showed
[...]instead of<...>. - Removed a duplicate import of
Collectors.
🛠️ Changed
-
Internal improvements to
/vc-group remove <group_name>:- Reworked the command’s logic to cleanly separate argument parsing from execution logic.
- Improved maintainability and code readability.
- Prepared for potential future extensions and internal reuse.
Note: This update does not alter the command's external behavior, but significantly improves the underlying structure.
✨ Added
/vc-groupcommand to manage voice chat groups:list– View all current voice chat groups.create <player|@a|@s> <group_name> [password]– Create a group and assign players.add <player|@a|@s> <group_name>– Add players to an existing group.kick <player> <group_name>– Remove players from a group.remove <group_name>– Delete a voice chat group.
- Support for selectors:
@a– all players@s– the command sender
- Password-protected groups (optional).
🛠️ Changed
- Group names are now displayed with
[locked]if password-protected. - Improved feedback messages with color formatting and tags.
- Command tab-completion for subcommands, players, and group names.
🔐 Permissions
voicechat.group.list– Required to list, add, kick, or remove.voicechat.group.create– Required to create new groups.
✨ Features
- Integrated with Simple Voice Chat API by henkelmax.
- Voice chat group management using the
/vc-groupcommand:/vc-group list– List all existing voice chat groups./vc-group add <player> <group>– Add a player to a voice chat group./vc-group kick <player> <group>– Remove a player from a voice chat group./vc-group remove <group>– Delete a voice chat group.
- Tab completion for all subcommands, player names, and group names.
- Basic permission support:
voicechat.group.list– Required to view and manage groups.
- Debug logging to assist with troubleshooting and development.
🐞 Fixes
- None – this is the initial version.
⚠️ Known Issues
- None known at the time of release.
👨💻 Developer Notes
- Developed by Jakomi1.
- Designed to be lightweight and efficient.
- Optimized for Paper 1.21.4 servers.



