Compatibility
Minecraft: Java Edition
1.21–1.21.5
Platforms
Creators
Details
Licensed MIT
Published 4 weeks ago
Updated 2 weeks ago
Changelog
Version 3.2.1 (July 21, 2025) - ADMINISTRATION IMPROVEMENTS
🔧 Features and Improvements
- Added Plugin Reload Command: Implemented
/skyenetv reload
and/snv reload
commands - Removed Discord Reload: Removed the standalone
/discord reload
command - Simplified Configuration: Updated config.yml with new reload command documentation
- Improved Error Handling: Better feedback for reload success/failure
Version 3.2.0 (July 21, 2025) - SIMPLIFIED LOCAL CHAT FOCUS
🔄 Major Changes
- Removed Global Chat: Removed all global chat functionality for a simpler chat system
- Simplified Chat System: All messages now stay local to their respective servers
- Code Cleanup: Removed unused global chat toggle code and commands
- Streamlined Architecture: Replaced GlobalChatManager with streamlined ChatManager
- Maintained Features: LuckPerms prefix/suffix integration and Discord forwarding still work
🔧 Technical Changes
- Replaced GlobalChatManager: New ChatManager with simplified message routing
- Removed Commands: Removed /gc and /lc commands and related code
- Preserved Formatting: Maintained consistent chat formatting with LuckPerms
- Simplified Configuration: No more need for global chat toggle settings
Version 3.1.2 (July 5, 2025) - CHAT DUPLICATION FIX
🔧 Critical Bug Fixes
- FIXED: Chat Duplication for Senders: Fixed issue where senders saw their own messages twice
- FIXED: Message Format for Senders: Senders now see their messages with proper formatting (including globe emoji)
- FIXED: Message Routing Edge Cases: Improved message routing logic to ensure proper delivery in all scenarios
- FIXED: Self-Message Handling: Players now see exactly one correctly formatted message for their own chat
Version 3.1.1 (June 21, 2025) - GLOBAL CHAT SYSTEM REWRITE
🔧 Critical Bug Fixes
- FIXED: Local Chat Duplication Bug: Eliminated duplicate messages that appeared when global chat was toggled OFF
- FIXED: Global Chat Message Routing: Complete rewrite of message routing logic with explicit recipient handling
- FIXED: Message Format Consistency: Globe emoji (🌐) now consistently appears only for global chat messages
- FIXED: Self-Message Handling: Players now see their own messages with correct formatting
- Fixed Global Chat Message Duplication: Eliminated double messages when global chat is enabled
- Fixed Global Chat Sender Visibility: Globe emoji (🌐) now appears correctly on sender's own messages
- Fixed Private Messaging Cross-Server:
/msg
and/r
commands now work properly across all servers in the network - Fixed Double Globe Emoji Issue: Removed redundant globe emoji prefix causing double display
- Implemented Channel-Based Global Chat: Complete rewrite of global chat system to work as a proper channel
🌐 Global Chat Channel System (MAJOR UPDATE)
- Mutually Exclusive Message Routing: Completely redesigned routing logic to prevent duplicates
- Two-Phase Message Processing: Separate determination of recipients from message delivery
- Format-Based Message Variants: Different message formats created for different recipient types
- Globe Emoji as Status Indicator: 🌐 now indicates that the MESSAGE SENDER has global chat enabled
- Recipient-Based Visibility: Your ability to see cross-server messages depends on YOUR global chat setting
- Smart Message Routing:
- Global Chat ON: See messages from ALL servers (cross-server channel)
- Global Chat OFF: See only messages from YOUR current server
- Complete Backend Bypass: All chat now processed through SkyeNet proxy, preventing duplication
- Consistent Formatting: All messages use SkyeNet formatting with LuckPerms integration
🌐 Global Chat Improvements
- Proper Event Cancellation: Global chat messages now properly cancel local chat events to prevent duplication
- LuckPerms Integration Fix: Now uses proper
PrefixUtils.getPrefixString()
andPrefixUtils.getSuffixString()
methods - Consistent Message Format: All recipients (including sender) see the same formatted global chat message
- Single Message Path: Streamlined message processing to eliminate race conditions
💬 Private Messaging Enhancements
- Cross-Server Player Search: Enhanced player lookup finds players by exact name or partial name matches across servers
- Improved Error Messages: More descriptive error messages when players are not found
- Better Reply Functionality: Reply system now works seamlessly across different servers
- Self-Message Prevention: Prevents sending messages to yourself with humorous error message
🔧 Technical Fixes
- Consolidated Message Processing: Removed redundant
handlePlayerMessage()
method to prevent double processing - Fixed Component Handling: Resolved compilation issues with join/leave message Component handling
- Enhanced Player Lookup: Improved
findPlayer()
method with comprehensive cross-server search - Lobby Command Infrastructure: Added configuration support for lobby teleportation coordinates
📋 Code Quality Improvements
- Removed Placeholder Methods: Eliminated unused
getLuckPermsPrefix()
placeholder in Config.java - Fixed ChatListener Syntax: Cleaned up duplicate code and syntax errors in ChatListener.java
- Early Event Processing: Used
PostOrder.FIRST
to ensure global chat events are processed before backend servers
🛠️ Build & Deployment
- Updated Version: Incremented to 3.1.1 to reflect all bug fixes and improvements
- Maven Build Success: Plugin compiles cleanly with no errors or warnings
- JAR Generation: Successfully generates
SkyeNetV-3.1.1.jar
for deployment
🎯 What Was Fixed in Detail
Global Chat Message Flow (Before vs After)
Before (3.1.0):
1. Player sends message "test"
2. ChatListener processes message → calls processPlayerMessage()
3. sendGlobalMessage() adds extra 🌐 prefix
4. Message sent to all players: "🌐 🌐 [PREFIX] Player test"
5. Local server also processes message normally
6. Result: Double messages and double globe emojis
After (3.1.1):
1. Player sends message "test"
2. ChatListener processes message → calls processPlayerMessage()
3. sendGlobalMessage() uses config format directly (no extra prefix)
4. Message sent to all players: "🌐 [PREFIX] Player » test"
5. Original chat event is cancelled (event.setResult(denied()))
6. Result: Single message with single globe emoji
LuckPerms Integration (Before vs After)
Before:
- Used placeholder
config.getLuckPermsPrefix(player)
returning"<prefix>"
- Wrong placeholder replacement:
{luckperms_prefix}
(not in config format)
After:
- Uses proper
PrefixUtils.getPrefixString(player)
andPrefixUtils.getSuffixString(player)
- Correct placeholder replacement:
{prefix}
and{suffix}
(matching config format)
🧪 Testing Results
- Global Chat: No more double messages ✅
- Globe Emoji: Single emoji display for all users ✅
- LuckPerms Prefixes: Proper prefix/suffix display ✅
- Cross-Server Messaging: Private messages work between servers ✅
- Event Cancellation: No local chat duplication ✅
Version 3.1.0 (June 17, 2025) - DISCORD & GLOBAL CHAT RE-IMPLEMENTATION
🆕 Major Features Added Back
- Discord Integration: Complete Discord bot integration with configurable messages
- Global Chat System: Cross-server chat with customizable toggle behavior
- Comprehensive Configuration: All messages, formats, and behavior now configurable
🌐 Global Chat Features
/gc
- Toggle global chat mode or send direct global messages/lc
- Switch to local chat mode- Smart Message Handling: When global chat is ON, shows message with globe emoji to sender, broadcasts to all servers, suppresses local
- When Global Chat is OFF: Normal local server chat behavior
- Configurable default state for new players
- Custom message formats with placeholder support
💬 Discord Integration
- Bidirectional messaging between Discord and game (configurable)
- Global chat to Discord relay with custom formats
- Discord to game messaging with custom formatting
- Connection status monitoring and status commands
- Configurable bot token and channel settings
⚙️ Configuration System
- Main config.yml: Complete configuration for all features
- Backwards compatible discord_config.yml fallback
- Configurable message templates using MiniMessage format
- Feature toggles for Discord integration aspects
- Customizable join/leave message formats
🎨 Message Customization
All command responses and system messages are now configurable:
- Global chat enable/disable messages
- Discord status messages
- Join/leave message formats
- Error and permission messages
- Discord message formatting templates
🛠️ Technical Improvements
- Smart config loading with resource template fallbacks
- MiniMessage support for rich text formatting throughout
- Improved error handling and logging
- Modular command system with shared configuration
- Memory-efficient Discord connection management
📋 Command Updates
/gc [message]
- Toggle global chat or send global message/lc
- Switch to local chat mode/discord [status]
- Show Discord integration info and status- All commands now use configurable messages and permissions
🔧 Dependencies
- JDA 5.0.0-beta.13 for Discord integration
- SnakeYAML 2.0 for configuration management
- MiniMessage 4.14.0 for rich text formatting (provided by Velocity)
- LuckPerms API 5.4 for prefix/suffix integration (provided)
📦 Build Information
- JAR Size: ~47KB (increased from 24KB due to Discord/Global Chat features)
- Java Version: 17+
- Velocity Version: 3.1.1+
🔄 Migration Notes
- Existing v3.0.0 installations will automatically create new configuration files
- Old discord_config.yml files are still supported as fallback
- Join/leave message behavior unchanged from v3.0.0
- All core commands (rules, lobby, sudo) remain unchanged
Version 3.0.0 (June 15, 2025) - LUCKPERMS JOIN/LEAVE MESSAGES
✅ NEW FEATURES
- Custom Join/Leave Messages with LuckPerms Integration
- Join Message Format:
[+] [PREFIX] PlayerName [SUFFIX] joined the network
(green) - Leave Message Format:
[-] [PREFIX] PlayerName [SUFFIX] left the network
(red) - LuckPerms Prefix/Suffix Support: Full integration with player ranks and formatting
- Vanilla Message Replacement: Disables default Velocity join/leave messages
- Network-wide Broadcasting: Messages sent to all online players
- Join Message Format:
🔧 TECHNICAL IMPLEMENTATION
- PrefixUtils Enhancement: Added
createJoinMessage()
andcreateLeaveMessage()
methods - Event Handlers: Added
PostLoginEvent
andDisconnectEvent
listeners - LuckPerms Integration: Full support for prefix, suffix, and color formatting
- MiniMessage Support: Proper parsing of LuckPerms formatting tags
📦 CURRENT PLUGIN FEATURES
- Rules System:
/rules
command with JSON configuration - Lobby Commands:
/lobby
,/l
,/hub
for server navigation - Administrative Tools:
/sudo
command for admin tasks - Custom Join/Leave Messages: LuckPerms-integrated network messages
- LuckPerms Integration: Prefix, suffix, and color support
🎨 MESSAGE EXAMPLES
[+] [ADMIN] PlayerName joined the network
[-] [VIP] PlayerName left the network
[+] [OWNER] PlayerName [★] joined the network
🔧 DEPENDENCIES
- Velocity API: Core proxy functionality
- LuckPerms API: Permission and formatting system
- Adventure Text MiniMessage: Text formatting and parsing
Version 2.4.7 (June 10, 2025)
🚫 CRITICAL FIXES
- FIXED: Global Chat Duplication Issue - Messages no longer appear twice when global chat is enabled
- Restructured chat event handler to properly cancel original events
- Added early return after global chat processing to prevent duplicate handling
- Fixed event.setResult(ChatResult.denied()) implementation
📝 NEW FEATURES
- Updated Join/Leave Message Formats
- Join:
[+] [PREFIX] PlayerName joined global chat
- Leave:
[-] [PREFIX] PlayerName left global chat
- Clean gray brackets with green/red symbols for better readability
- Join:
🎨 Configurable Global Chat Messages
- Configurable Message Formats: Global chat messages now use customizable MiniMessage formats
- Separate formats for messages with/without globe icon
- Configurable join/leave notification messages
- Customizable new player notification message
- Enhanced Color Continuation: Added
getFullFormattedNameWithColorContinuation()
for seamless gradient flow - Flexible Placeholder System: Support for
{player}
,{luckperms_prefix}
, and{message}
placeholders - Config-Driven Display: All global chat message formats controlled via
config.yml
New Configuration Options
global_chat:
message_with_icon: "🌐 {luckperms_prefix}<bold>{player}</bold>: {message}"
message_without_icon: "{luckperms_prefix}<bold>{player}</bold>: {message}"
join_message: "🌐 {luckperms_prefix}<bold>{player}</bold> <green>joined global chat</green>"
leave_message: "🌐 {luckperms_prefix}<bold>{player}</bold> <red>left global chat</red>"
new_player_notification: "<green>You are not connected to global chat. Type </green><gold><bold>/gc</bold></gold><green> to toggle.</green>"
Technical Changes
- Enhanced
DiscordConfig.java
: Added global chat message format fields and getters - Updated
GlobalChatCommand.java
: Use configurable formats for join/leave/notification messages - Updated
SkyeNetV.java
: Main global chat display now uses configurable MiniMessage formats - Enhanced
PrefixUtils.java
: Added color continuation method for gradient preservation - Updated
config.yml
: Added comprehensive global chat message format section - Version bump:
2.4.6
→2.4.7
Benefits
- Customizable Branding: Server owners can customize all global chat message formats
- Better Color Support: Proper gradient/color continuation from prefix to username
- MiniMessage Integration: Full support for modern Minecraft text formatting
- Consistent Configuration: All message formats centralized in config.yml