1.0.1
Compatibility
Changes
HypeDuels v1.0.1 β Changelog
π Bug Fixes
Fixed a major reconnect bug involving Ender Pearls. Previously, a player could throw an Ender Pearl, leave the duel or disconnect from the server, and get teleported back to the old duel arena after rejoining. Duel, spectator, respawn and delayed teleport states are now cleared correctly when a player quits or reconnects.
Fixed delayed restore tasks that could keep old duel locations alive after a player disconnected. Players are now restored to their saved location immediately during quit cleanup instead of waiting for a delayed task that could no longer run after disconnecting.
Fixed stale match data remaining after reconnects. Old duel, Team Fight, FFA, spectator and respawn references are now removed when the player joins again.
Fixed active arena states not being released correctly during shutdown or unexpected disconnects. Arenas are now safely marked as available during cleanup.
Fixed FFA arenas with fewer than two spawn points being considered available. FFA arenas now require at least two valid spawns before they can be used.
Fixed queue entries becoming stuck after an offline player was removed. Offline and invalid players are now removed from both the queue and the internal player index.
Fixed empty matchmaking queues remaining in memory after a player leaves.
β¨ New Features
Added a live duel scoreboard showing the opponent, opponent health, your health, kit, arena, duel duration and ELO during active 1v1 matches.
Added configurable scoreboard support. The scoreboard can be enabled or disabled from the config, and its title, refresh interval and displayed lines can be customized.
Added configurable duel command blocking. Commands used during duels, Team Fights, FFA matches and spectator mode are now blocked unless they are explicitly added to the allowed command list.
Added configurable teleport protection during matches. Command teleports, Nether Portals, End Portals and End Gateways can now be blocked while a player is in a match.
Added configurable bucket protection to prevent players from emptying or filling buckets during matches.
Added automatic scoreboard cleanup when a duel ends, a player quits, a player reconnects or the plugin shuts down. The playerβs previous scoreboard is restored after the duel.
Added active scoreboard reloading. If the scoreboard is disabled or enabled through config reload, the setting is applied to active duels without requiring a full server restart.
Added safe plugin shutdown cleanup for active duels. Players and arenas are cleaned up immediately when the plugin is disabled.
π§ Internal Improvements
Added a dedicated DuelScoreboardManager to handle scoreboard creation, updates, placeholders, restoration and cleanup.
Scoreboard updates are handled by a scheduled task instead of creating permanent per-player tasks, reducing unnecessary task overhead.
Added scoreboard placeholders for {player}, {opponent}, {kit}, {arena}, {time}, {elo}, {opponent_elo}, {health} and {opponent_health}.
Improved duel lifecycle handling so delayed tasks cannot re-teleport disconnected players into old arenas.
Improved FFA arena type separation and match model consistency.
Improved queue cleanup and matchmaking state management.
Updated the project version and plugin metadata to 1.0.1.
β οΈ Config Note
If you are upgrading from v1.0.0, add the new scoreboard, command protection, teleport protection and bucket protection settings to your existing config.yml, or delete the old config file to generate the updated default configuration.
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:Fbmqb9a9:HSeYvoaY"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Fbmqb9a9:HSeYvoaY"
}

