
Zenith-Mod
Advanced moderation plugin with ban/mute systems, escalation templates, offline support, and Web-API integration for professional server management.
Список изменений
Zenith-Mod v1.2.3 Update
⚠️ Beta Notice
This update includes significant API additions that are currently in Beta. While we've thoroughly tested all features, please be aware that:
- In very rare cases, API methods may behave unexpectedly
- In very rare cases, events may not fire or fire incorrectly
- API structure may undergo changes in future versions
- We do not provide any warranty or guarantee regarding the API's functionality
Use of the new API features is at your own risk. However, all core plugin functionality (commands, moderation, etc.) remains stable and fully supported.
🚨 CRITICAL: Database Fix
⚠️ THIS UPDATE IS HIGHLY RECOMMENDED - CRITICAL DATABASE ISSUE FIXED
This version fixes a critical database problem that could cause data inconsistency issues. We strongly recommend updating immediately, especially if you're using MySQL or MariaDB databases.
What Was Fixed?
- Fixed: Critical database transaction issue that could cause history entries to be incomplete
- Fixed: Potential race condition in database operations that could lead to missing case IDs
- Improved: Database connection handling and error recovery
- Result: More reliable database operations and complete history tracking
Note: If you experience any issues after updating, please check your database logs and ensure all migrations completed successfully.
🎯 New API System (Beta)
Zenith-Mod now includes a comprehensive Java API for developers to integrate with other plugins and extend functionality!
📦 New API Modules
FreezeAPI (me.kzlyth.api.freeze)
freeze(UUID, UUID, String)- Freeze a player with reasonunfreeze(UUID, UUID, String)- Unfreeze a playerisFrozen(UUID)- Check if player is frozengetFrozenPlayers()- Get list of all frozen players- Automatic history logging with case IDs
- Staff notifications for all freeze actions
ChatFreezeAPI (me.kzlyth.api.chatfreeze)
freezeChat(UUID, String)- Freeze the server chatunfreezeChat(UUID, String)- Unfreeze the server chatisChatFrozen()- Check if chat is currently frozen- Server-wide chat control with history tracking
- Automatic staff notifications
EssentialsAPI (me.kzlyth.api.essentials)
- God Mode:
setGodMode(UUID, UUID, boolean),isGodMode(UUID) - Fly Mode:
setFlyMode(UUID, UUID, boolean),isFlying(UUID) - Heal:
heal(UUID, UUID)- Restore player health - Feed:
feed(UUID, UUID)- Restore player hunger - Clear Inventory:
clearInventory(UUID, UUID)- Clear player inventory - Teleport:
teleport(UUID, UUID),teleportHere(UUID, UUID)- Teleport players - All methods include staff notifications
VanishAPI (me.kzlyth.api.vanish)
vanish(UUID)- Make player invisibleunvanish(UUID)- Make player visibletoggleVanish(UUID)- Toggle vanish statusisVanished(UUID)- Check if player is vanishedgetVanishedPlayers()- Get list of all vanished players- Automatic staff notifications
🎪 Event System (Beta)
A powerful event bus system for listening to moderation actions in real-time!
Available Events
- Ban Events:
PlayerBanEvent,PlayerUnbanEvent - Mute Events:
PlayerMuteEvent,PlayerUnmuteEvent - Warn Events:
PlayerWarnEvent - Kick Events:
PlayerKickEvent
Event Packages
me.kzlyth.api.events.ban.*- Ban and unban eventsme.kzlyth.api.events.mute.*- Mute and unmute eventsme.kzlyth.api.events.warn.*- Warn eventsme.kzlyth.api.events.kick.*- Kick events
Features
- Events fired after actions complete (for integrations and logging)
- Complete event data (player info, staff info, reason, case ID, duration, etc.)
- Automatic main-thread handling for safe Bukkit API access
- Simple subscription/unsubscription system
- Perfect for Discord webhooks, external databases, analytics, and plugin integrations
📚 API Integration
All new APIs are accessible through the main ZenithAPI class:
ZenithAPI api = ZenithAPI.getInstance();
if (api != null && api.isAvailable()) {
FreezeAPI freezeAPI = api.getFreezeAPI();
ChatFreezeAPI chatFreezeAPI = api.getChatFreezeAPI();
EssentialsAPI essentialsAPI = api.getEssentialsAPI();
VanishAPI vanishAPI = api.getVanishAPI();
ZenithEventBus eventBus = ZenithEventBus.getInstance();
eventBus.subscribe(PlayerBanEvent.class, event -> {
// Handle ban event
});
}
📖 Complete API Documentation
For detailed API documentation, method signatures, parameters, and usage examples, visit:
http://javadocs.zenith-studios.org/
The Javadoc includes:
- Complete class and method documentation
- Parameter descriptions and return types
- Usage examples and best practices
- Exception handling guides
- Event system documentation
✅ Enhanced Existing APIs
BanAPI Improvements
- Fixed: Players are now automatically kicked when banned via API
- Added: Staff notifications for all ban API calls
- Improved: Better error handling and validation
MuteAPI Improvements
- Added: Staff notifications for all mute API calls
- Improved: Better offline player handling
WarnAPI Improvements
- Added: Staff notifications for all warn API calls
- Fixed: Auto-escalation now works correctly with API calls
KickAPI Improvements
- Added: Staff notifications for all kick API calls
- Improved: Better integration with history system
📊 Analytics Integration
bStats Integration
- Added: Integrated bStats metrics system for plugin analytics
- Anonymous usage statistics to help us improve the plugin
- Respects server privacy settings
- Can be disabled via bStats configuration
🔧 Technical Details
API Architecture
- Asynchronous Operations: All API methods use
CompletableFuturefor non-blocking operations - Thread Safety: Event bus automatically handles thread synchronization
- Error Handling: Comprehensive exception handling with
APIUnavailableException - History Integration: All API actions automatically create history entries with case IDs
- Notification System: Automatic staff notifications for all moderation actions
Database Improvements
- Fixed critical transaction issues
- Improved connection handling
- Better error recovery mechanisms
- Enhanced history entry consistency
Performance
- Asynchronous API calls prevent server lag
- Event system optimized for high-throughput scenarios
- Efficient database operations
📋 Setup Instructions
For Plugin Developers
- Add Zenith-Mod as a dependency in your
plugin.yml:
depend: [Zenith-Mod]
- Get the API instance:
ZenithAPI api = ZenithAPI.getInstance();
if (api != null && api.isAvailable()) {
// Use API...
}
- Subscribe to events:
ZenithEventBus bus = ZenithEventBus.getInstance();
bus.subscribe(PlayerBanEvent.class, event -> {
// Handle event...
});
For complete setup instructions and examples, see the API Documentation.
⚠️ Breaking Changes
None - This update is fully backward compatible. All existing commands and functionality work exactly as before.
🔄 Migration Notes
- No configuration changes required
- No database migrations needed (automatic)
- All existing bans, mutes, warns, and history entries remain intact
- API is opt-in - existing plugins continue to work without changes
📝 Files Changed
New API Classes
me.kzlyth.api.freeze.FreezeAPIme.kzlyth.api.chatfreeze.ChatFreezeAPIme.kzlyth.api.essentials.EssentialsAPIme.kzlyth.api.vanish.VanishAPIme.kzlyth.api.events.ZenithEventme.kzlyth.api.events.ZenithEventBus- Event classes in
me.kzlyth.api.events.*packages
Enhanced Existing Classes
ZenithAPI- Added getters for new APIsBanAPI- Added notifications and auto-kickMuteAPI- Added notificationsWarnAPI- Added notificationsKickAPI- Added notifications
Database Fixes
- Enhanced transaction handling in all repository classes
- Improved connection pool management
- Better error recovery mechanisms
🔗 Full API Documentation: http://javadocs.zenith-studios.org/
⚠️ Remember: The API system is in Beta. While core plugin functionality is stable, please test API integrations thoroughly in a development environment before using in production.
📢 Important: This update fixes a critical database issue. We highly recommend updating as soon as possible.
Developed by Zenith-Studios
