Tags
Creators
Details
Licensed Apache-2.0
Published 6 months ago
Updated 2 weeks ago
All versions
1.5.0
Release
ZDiscord 1.5.02 weeks ago 104
Uploaded by
Compatibility
Minecraft: Java Edition
26.3
26.2
26.1.x
1.21.x
1.20.x
Platforms
Bukkit
Folia
Paper
Purpur
Spigot
Changes
Added
- Halloween seasonal event A configurable seasonal mob hunt with customizable date window (
halloween.window-start/halloween.window-end), mob kill tracking, point scoring, and finale rewards. PvP kills are excluded. - In-game
/zdiscord halloween [status|top]displays event dates, personal points, and standings with the default player permissionzdiscord.halloween. - Discord
/halloweenslash command displays event state, standings, and countdown. - Daily countdown announcements in Discord and Minecraft broadcasts leading up to the event opening.
- Live standings embed panel auto-updating during the event window.
- Milestone announcements when players reach configured point thresholds, with boss multiplier bonuses for dragons, withers, and elder guardians.
- Configurable event timezone, eligible worlds and mob types, excluded game modes, and spawner-mob filtering.
- Optional Halloween join titles, ambient sounds, and milestone particles with separate appearance controls (cosmetics require explicit opt-in).
- Independent switches for opening announcements and public Minecraft broadcasts.
- Automatic ticket inactivity closure, persistent exclusive staff claims, and complete paginated transcripts with chronological attachments and embed records.
Changed
- Configuration schema version bumped to 16; existing settings are preserved while new defaults are materialized.
- Startup banner counts 17 modules, including the seasonal event.
- Halloween messages and displays use concise text, orange accents, and numbered standings; all in-game text customizable via
messages.yml. - Seasonal progress is described as points to reflect boss bonuses; Discord standings capped at 25 entries.
- Removed empty internal lifecycle hooks, unused message templates and status fields, obsolete ticket-count writes, and decorative emoji.
Fixed
- Setup dropdowns and modals check administrator permissions in the configured guild; category IDs, colors, and limits are validated.
- Reloads unregister command-log listeners, cancel console and lockdown timers, and reconcile public API settings.
- Shutdown drains Discord callbacks before closing storage and prevents late bot reconnects.
- Paper staff-chat toggles relay each message once, namespaced sensitive commands redact arguments, and Discord console works when the chat channel is unset.
- Shaded SLF4J providers are discovered through the plugin classloader, and turning off log suppression restores normal library logging.
- Text conversion preserves literal ampersands and strips hex colors correctly. Slash profile, seen, and following titles honor message settings; update checks avoid duplicate notices and tolerate oversized version numbers.
- Ticket controls validate the configured guild and tracked channel; failed interaction acknowledgements or deletion requests release the closing guard for retry.
- Required account linking supplies a code in the rejected login message. Each Minecraft account has one pending code, and relinking keeps both account directions consistent.
- Concurrent playtime flushes claim each interval once, preserving fractional seconds. Leaderboard updates persist in the same order as accepted changes.
- Stored follows are available before a player joins; reloads and the public follower API preserve accepted buffered writes.
- Configuration reloads and Discord setup reconcile enabled modules, refresh channel settings, and replace repeating panel timers. Local linking and statistics also initialize without Discord.
- Discord panels serialize creation, ignore stale callbacks, and replace messages only when Discord confirms deletion.
- Ticket interactions defer before channel creation. Atomic reservations enforce linked-account limits, private channels explicitly grant bot access, and slots are released only after confirmed deletion.
- MySQL schema failures close the connection pool and select YAML fallback instead of reporting a working database.
- Discord REST/callback workers drain before Paper closes the plugin classloader. Disabled-plugin database cleanup avoids rejected scheduler tasks, and concurrent ticket welcomes display their own ticket number.
- Link/follow event threading matches the caller. Join/follower database lookups run off the game thread, and delayed welcome messages use the player scheduler.
- Update notifications use Spigot-compatible clickable components. Advancement embeds use display titles, and quit embeds show the correct online-player count.
- Discord attachments carry clickable Minecraft URLs using the Spigot component API.
- Minecraft seasonal scoring and commands remain available without a connected Discord bot.
- Creative, Spectator, passive-mob, and spawner kills are excluded from the default hunt.
- Actual mob deaths and boss bonuses contribute to the hunt, including milestones crossed by a multi-point kill.
- Event reloads retire old panel loops, preserve in-flight panel creation, and retain scores and reward claims across the master switch.
- Late and offline finale checks recover the recorded event, and winner rewards apply to first place only.
- MySQL write ordering prevents stale score writes from replacing newer values; shutdown drains pending writes before closing the pool.
Install
Download the JAR below and place it in your server's plugins/ folder.
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:Ggb4tXoF:EUrT9XXe"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Ggb4tXoF:EUrT9XXe"
}

