
ConsoleDiscord
Mirrors your Paper server console log to a Discord channel and lets you run Minecraft console commands from Discord via /mc or !mc, with access control and configurable log batching.
ConsoleDiscord 2.0.0
release3 мая 2026 г.[2.0.0] - 2026-05-03 — Minecraft 26 Edition
Port of v1.4.1 to Minecraft 26.x with Java 25. Functionally identical to v1.4.1.
- Java 25 target (was Java 21)
- Paper API 26.1.2 (was 1.21.4)
- api-version: 26.1 (was 1.21)
- bStats metrics integration
Build: Java 25 | Paper 26.1.2 | JDA 6.1.0 | Folia supported
ConsoleDiscord 1.4.1
release3 мая 2026 г.[1.4.1] - 2026-05-03 — Bugfix & Quality Release
Bugfixes
- Fixed
NullPointerExceptionwhen audit logging is disabled - Fixed rate limiter not updating on config reload
- Fixed
allowed-user-idsnot working with unquoted numeric IDs - Fixed default config re-adding placeholder user IDs
- Fixed token placeholder check (now recognizes EN + DE placeholders)
- Fixed resource leak in
ModrinthUpdateChecker(try-with-resources) - Fixed
LogFilterregex usingmatches()instead offind()— patterns no longer need.*wrapping - Fixed
RateLimitermemory leak on public servers (auto-cleanup of empty entries) - Fixed update checker notifying about incompatible Java/MC versions
- Fixed language files not receiving new message keys on update (auto-merge added)
Improvements
- Log queue: O(1) size tracking via
AtomicInteger - Async audit log file writing (dedicated daemon thread)
- Bulk delete for message cleanup (Discord API, < 14 days)
- Command aliases pointing to blocked commands are rejected on load
- Performance alerts (TPS/Memory) now fully localized (EN/DE)
- Update checker filters by Minecraft version via Modrinth API
- Language files auto-merge new keys (like
config.ymlalready did) - Deprecated API calls replaced (
URLconstructor, Reflection for TPS) - bStats metrics integration
Build: Java 21 | Paper 1.21 - 1.21.11 | JDA 6.1.0 | Folia supported Migration: Drop-in replacement — just swap the JAR.
ConsoleDiscord 1.4.0
release10 апреля 2026 г.[1.4.0] - 2026-04-10 🚀 Folia Support & Stability Release
✨ New Features
Folia Compatibility ⭐
- Full Folia support - Plugin now works on both Paper and Folia servers
- Automatic detection - Detects server type and uses appropriate scheduler API
- Zero configuration - Works out of the box on both platforms
- Region-aware scheduling - Uses global region scheduler for console commands on Folia
- Async scheduler migration - All async tasks use Folia's new scheduler when available
Modrinth Update Checker ⭐
- Automatically checks for new versions on startup via Modrinth API
- Notification in server console and optionally in Discord channel
- Configurable:
update-checker.enabled
Config Auto-Merge ⭐
- New config options from updates are automatically added to existing config
- User values are never overwritten - only missing keys are added
- No more manual config migration needed after updates
🐛 Bugfixes
- Fixed:
MAX_EMBED_SIZE_EXCEEDEDerror - Embeds are now split into groups that respect Discord's 6000 character total limit per message. Previously, multiple embeds could exceed this limit and causeErrorResponseException: 50035 - Fixed:
Thread.sleep(1000)blocking server shutdown - Removed unnecessary sleep inonDisable(). The shutdown notification already uses blockingcomplete()call - Fixed:
CommandSecurityrace condition - Static fields are now thread-safe usingAtomicBooleanandAtomicReference. Config reloads during command checks no longer cause inconsistent state - Fixed:
SchedulerAdapter.isCancelled()always returningfalse- Folia tasks now properly track cancel state viaAtomicBoolean, Paper tasks delegate toBukkitTask.isCancelled() - Fixed: Potential
NullPointerExceptioninMessageCleanup- Added null-safety check forjda.getSelfUser()during message cleanup - Fixed: Fragile JSON parsing in
ModrinthUpdateChecker- Replaced manualindexOf()/substring()parsing with Gson for robust Modrinth API response handling
🔄 Changes
Scheduler Refactoring
- New
SchedulerAdapterclass provides unified API for Paper and Folia - Replaced all
Bukkit.getScheduler()calls with adapter methods - Console commands now use
GlobalRegionScheduleron Folia - Removed busy-wait loops when cancelling tasks (cleaner shutdown)
Code Cleanup
- Removed legacy
org.examplepackage (outdated duplicate code from pre-1.3.0) - Added Gson as provided dependency (shipped by Paper at runtime)
Technical Details
- Auto-detection via
io.papermc.paper.threadedregions.RegionizedServerclass check folia-supported: trueflag in plugin.yml- Backwards compatible with Paper/Spigot servers
📦 Build Information
JAR File: consolediscord-1.4.0.jar
Size: ~16 MB (with JDA shaded)
Java Version: 21
Paper Version: 1.21.4-R0.1-SNAPSHOT (also supports Folia)
JDA Version: 6.1.0
Migration Guide from 1.3.0 → 1.4.0
✅ Automatic Migration
All changes are 100% backwards compatible. Simply replace the JAR file!
New config options (like update-checker) are automatically merged into your existing config.yml on first startup - no manual editing needed.
ConsoleDiscord 1.3.0
release10 марта 2026 г.[1.3.0] - 2026-03-10 🎉 The Big Feature Update
✨ New Features
📋 Intelligent Log Forwarding
1. Discord Embeds instead of Code Blocks
- Color-coded embeds for better readability (Green=INFO, Orange=WARN, Red=ERROR)
- Structured presentation with timestamps
- Batch processing: Up to 10 log lines per embed
- Configurable:
log-formatting.use-embeds
2. Emoji Encoding for Log Levels
- 💀 FATAL - Critical errors
- ❌ ERROR - Errors
- ⚠️ WARN - Warnings
- ℹ️ INFO - Information
- 🔍 DEBUG - Debug output
- 🔬 TRACE - Trace logs
- Configurable:
log-formatting.use-emojis
3. Log-Level Filtering
- Send only specific log levels to Discord
- Default: INFO, WARN, ERROR, FATAL
- Configurable:
log-levels: [INFO, WARN, ERROR]
4. Regex Filters for Logs
- Filter out annoying spam logs ("Can't keep up", UUID warnings)
- Unlimited regex patterns
- Configurable:
log-filters.ignore-patterns
5. Log Categories with Separate Channels
- Security logs in separate channel (op, ban, kick, etc.)
- Performance logs in separate channel (TPS, Memory)
- Unlimited categories definable
- Pattern-based routing
- Configurable:
log-categories
🎮 Remote Commands
6. Command Autocomplete
- Intelligent suggestions while typing
- Pre-configured common commands (gamemode, weather, time, difficulty, etc.)
- Also shows command aliases
- Automatic Discord slash command integration
7. Command Aliases
- Define shortcuts:
tps→spark tps - Unlimited aliases
- Autocomplete shows aliases with arrow:
tps → spark tps - Configurable:
command-aliases.aliases
🔒 Security & Monitoring
8. Command Audit Logging
- Logs every command with user, timestamp, and status
- File-based:
plugins/ConsoleDiscord/audit.log - Optionally also in Discord channel
- Format:
[2026-03-10 19:30:45] User#123 (Name) executed: cmd [SUCCESS] - Configurable:
command-audit
9. Performance Alerts
- TPS warning at < 15.0 TPS (adjustable)
- Memory warning at > 90% RAM (adjustable)
- Cooldown system prevents spam (default: 5min)
- Color-coded embeds: 🟡 Warning / 🔴 Critical
- Configurable:
performance-alerts
🛠️ Management
10. Startup/Shutdown Notifications
- 🟢 Server Start: Shows version & plugin count
- 🔴 Server Stop: Shows uptime
- Beautiful embeds with timestamp
- Configurable:
notifications.startup¬ifications.shutdown
11. Auto-Cleanup for Old Messages
- Automatically deletes old log messages
- Default: After 7 days (adjustable)
- Check every 24 hours (adjustable)
- Only bot's own messages are deleted
- Configurable:
auto-cleanup
12. Batch Embeds
- Groups up to 10 log lines per embed
- Discord limit: Max 10 embeds per message
- Reduces API calls and rate limits
- Better performance with many logs
- Configurable:
log-formatting.embed-batch-size
13. Configurable Command Blacklist ⭐
- Fully customizable: You decide which commands to block
- Default recommendation: Only
opanddeopblocked (changeable) - Flexible: Add commands like
stop,restart,whitelistas needed - Disableable: Security can be completely turned off
- Namespace protection: Prefixes like
minecraft:,bukkit:are always blocked - Configurable:
command-security.enabled&command-security.blocked-commands
🔄 Changes
Package Refactoring
Before: org.example
Now: dev.boondocksulfur.consolediscord
New Package Structure:
dev.boondocksulfur.consolediscord- Main plugindev.boondocksulfur.consolediscord.audit- Audit loggingdev.boondocksulfur.consolediscord.cleanup- Message cleanupdev.boondocksulfur.consolediscord.i18n- Internationalizationdev.boondocksulfur.consolediscord.listener- Discord eventsdev.boondocksulfur.consolediscord.logging- Log appender & formatterdev.boondocksulfur.consolediscord.performance- Performance monitoringdev.boondocksulfur.consolediscord.security- Security & rate limiting
Maven Configuration
- groupId:
dev.boondocksulfur(previously:org.example) - artifactId:
consolediscord(previously:console-discord) - JDA relocation adjusted
Config Extensions
The config.yml has been extended with 58 new options:
- Advanced logging options (17 options)
- Command features (10 options)
- Performance alerts (4 options)
- Notifications & cleanup (5 options)
📚 Documentation
- JavaDoc: Complete documentation for all classes and methods
- README.md: Completely revised with feature matrix and examples
- CHANGELOG.md: Detailed changelog with migration guide
🐛 Improvements
- Better error messages with i18n support
- More informative Discord responses (emojis for feedback)
- Cleaner code structure with separation of concerns
- Improved type safety with proper generics
- More consistent logging practices
- Optimized performance through batch processing
- NEW: Thread-safe reconnect logic with synchronized lock - no more race conditions
- NEW: Discord bot token format validation on startup
- NEW: Configurable command blacklist - you decide which commands to block
🔒 Security
- Blocks execution of server-critical commands
- Prevents command spam via rate limiting
- Validates user permissions before execution
- Filters commands with namespace prefixes
- Audit trail for all commands
- NEW: Configurable command blacklist - blocks only dangerous operations you specify
- NEW: Discord bot token validation - checks format and length on startup
- NEW: Race condition protection for Discord reconnects through synchronized lock
📦 Build Information
JAR File: consolediscord-1.3.0.jar
Size: ~8 MB (with JDA shaded)
Java Version: 21
Paper Version: 1.21.4-R0.1-SNAPSHOT
JDA Version: 6.1.0
Migration Guide from 1.2.0 → 1.3.0
✅ Automatic Migration
Most changes are backwards compatible. Your old config.yml will continue to work!
📝 New Config Options
On first startup with 1.3.0, these options will be automatically added:
# New options with defaults
language: "en"
max-commands-per-minute: 5
command-security:
enabled: true
blocked-commands: ["op", "deop"]
log-levels: [INFO, WARN, ERROR, FATAL]
log-formatting:
use-embeds: true
use-emojis: true
embed-batch-size: 10
log-filters:
ignore-patterns: []
log-categories:
enabled: false
command-aliases:
enabled: true
aliases: {}
command-audit:
enabled: true
log-file: "audit.log"
performance-alerts:
enabled: true
low-tps-threshold: 15.0
high-memory-threshold: 90
notifications:
startup: true
shutdown: true
auto-cleanup:
enabled: false
⚙️ Recommended Post-Migration Steps
-
Enable Discord Embeds:
log-formatting: use-embeds: true use-emojis: true -
Filter Spam Logs:
log-filters: ignore-patterns: - "Can't keep up! Is the server overloaded\\?" -
Configure Command Aliases:
command-aliases: enabled: true aliases: tps: "spark tps" save: "save-all" -
Reload Plugin:
/cdr reload
⚠️ Breaking Changes
None! All changes are backwards compatible.
ConsoleDiscord 1.2.0
release22 ноября 2025 г.[1.2.0] - 2025-01-22
Bugfixes
-
Discord Slash-Command Interaction Fix: Behoben, dass beim Ausführen von
/mc cdr reloadder FehlerIllegalStateException: This interaction has already been acknowledgedauftrat- Slash-Commands verwenden jetzt
deferReply()um Discord sofort zu bestätigen - Antworten werden nun über
getHook().sendMessage()gesendet - JDA-Status wird geprüft bevor Antworten gesendet werden, um Race Conditions beim Reload zu vermeiden
- Slash-Commands verwenden jetzt
-
Verbesserte Fehlerbehandlung: Alle Discord-API-Aufrufe haben jetzt Error-Handler, die Fehler loggen statt Exceptions zu werfen
Technische Details
DiscordListener.java: Refactoring derrunMinecraftCommand()Methode- Neue Helper-Methode
sendResponse()für saubere Trennung von Slash-Command und Message-Antworten
[1.1.0] - Initiale Version
Features
- Server-Konsolen-Logs werden automatisch in einen Discord-Channel gepostet
- Minecraft-Befehle können über Discord ausgeführt werden:
/mc <befehl>- Slash-Command!mc <befehl>- Text-Prefix
- Konfigurierbare Berechtigungen (User-IDs)
- Optionaler Command-Channel für eingeschränkte Nutzung
- Watchdog für automatische JDA-Reconnects
- Debug-Modus für JDA-Status-Logging
