Tags
Creators
Details
1.4.0
Compatibility
Changes
[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.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:oaqaMp1R:O6uw0Ayz"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:oaqaMp1R:O6uw0Ayz"
}

