Tags
Creators
Details
Licensed ARR
Published last year
Updated 6 months ago
All versions
0.3.4
Release
JanusMCD 0.3.46 months ago 227
Compatibility
Minecraft: Java Edition
26.1.x
1.21.x
Platforms
Bukkit
Folia
Paper
Purpur
Spigot
Velocity
Changes
[0.3.4] - 2026-04-13
[!NOTE] This update represents a foundational shift towards a complete Zero Trust Architecture, prioritizing immutable security boundaries and proactive data integrity.
Added
- Unified Linking Bottleneck: Refactored the core account linking logic to funnel all entry points (Slash Commands, Text Messages, and Direct Links) through a single
completeLinkProcessmethod. This ensures consistent enforcement of all security rules across the entire plugin. - Secure Link Wrapper: Restored a secure
linkAccountwrapper forAuthManagerthat maintains API compatibility while strictly routing all login refreshes through the mandatory security bottleneck. - Dynamic JDA Maintenance: Refactored core managers to support hot-swapping the Discord JDA instance during reloads, allowing the plugin to refresh its connection without requiring a full server reboot.
- Friendly Auth-Restart Messaging: Enhanced the login flow to detect when the authentication system is restarting, providing players with informative guidance and a friendly kick message instead of generic errors.
- Dynamic Channel Feedback (STATIC Mode):
- The in-game linking instructions now dynamically resolve and display the #channel-name of the designated Discord linking channel when
STATICmode is enabled. - Improved
AccountLinkListenerto provide immediate, 5-second auto-deleting feedback when a user sends a code to the wrong public channel inSTATICmode.
- The in-game linking instructions now dynamically resolve and display the #channel-name of the designated Discord linking channel when
- Linking Privacy Enhancement: Upgraded all user-facing account linking Slash Commands (
/link register,/link drop,/link status,/link remove,/link clear) to use ephemeral responses. Confirmation embeds and failure notices are now private to the executing user. - Differentiated Limit Feedback: Refactored the
LinkErrorsystem to distinguish between different types of failure limits.MAX_LINKS_REACHED: Specifically messages the user about hitting the maximum accounts per Discord profile.MAX_IP_LINKS_REACHED: Explicitly notifies users when they reach the maximum allowed links from their current IP address.
- Auto-Deleting Public Messages: Implemented a 5-second automatic cleanup for linking codes and bot responses in public channels. This ensures that valid/invalid codes and linking status messages do not clutter public text channels.
- Improved Listener Feedback: The
AccountLinkListenernow provides informative replies in public linking channels when a valid code is posted but fails due to a limit (like IP, Discord, or Guild requirements), ensuring users understand why the process stalled without revealing valid codes to others. - SLASH_ONLY Mode Feedback: In-game linking codes posted via text (DMs) while
SLASH_ONLYis enabled now receive a direct response pointing the user to the/link registercommand.
Fixed
- Shutdown Safety Guardrails: Implemented
plugin.isEnabled()checks across all asynchronous task schedulers to preventIllegalPluginAccessExceptionerrors during server shutdown or reloads. - Discord API Error Suppression: Silenced "Requester has been stopped" log spam that occurred when the Discord bot was forced to shutdown or restart while tasks were still in flight.
- Join-Time Blindness Persistence: Fixed a race condition where players would remain blinded after being unfrozen on their first join after an update. Leveraged
EventPriority.HIGHESTto ensure a final blindness cleanup at the end of the join sequence, providing a robust fix without artificial delays. - Duplicate Join Messages: Resolved an issue where authenticating via 2FA would occasionally trigger duplicate join broadcasts by centralizing broadcast logic within the linking bottleneck.
- STATIC Mode DM Fix: Fixed an issue where private messages (DMs) were ignored when
STATIClinking mode was enabled. DMs are now correctly processed regardless of the designated static channel.
Technical
- Build Optimization: Streamlined the
maven-shade-pluginconfiguration to prevent redundant artifact generation and reduce build noise.
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:kyiSeeUV:DylwhRnO"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:kyiSeeUV:DylwhRnO"
}

