1.0.3
Compatibility
Changes
⚠️ Release Note: Version 1.0.2 contained several runtime bugs and was skipped for general distribution on Modrinth (its development archive remains on GitHub). Version 1.0.3 is the definitive production release.
🐛 Bug Fixes & Improvements in v1.0.3:
- 🏷️ 3D Floating Nametag
[AFK] <name>Fix:- Broadcasts explicit
ClientboundSetPlayerTeamPacketprotocol packets across all active player connections, guaranteeing that the floating nametag above the dummy's head displays[AFK] <name>consistently across all client setups and custom scoreboard plugins. - Implemented single source of truth for dummy display names with prefix deduplication (
[AFK] Steve$\rightarrow$[AFK] Steve). - Removed all unwanted trailing session ID characters and suffix artifacts.
- Broadcasts explicit
- 📍 Initial Spawn Placement Race Condition Fix:
- Pre-registers dummy sessions in active tracking maps prior to
PlayerList.placeNewPlayer(). - Paper's
PlayerSpawnLocationEventintercepts the injection and places the fake player directly in the target chunk and coordinates on tick 0, preventing world spawn appearance.
- Pre-registers dummy sessions in active tracking maps prior to
- ✨ Teleportation & Rotation Sync:
- Replaced unacknowledged packet teleports with authoritative NMS position and connection resets, fixing visual rubberbanding and snap-backs.
- Synchronized head yaw (
yHeadRot) and body yaw (yBodyRot) with Bukkit rotation queries and tracking packets.
- ⚙️ Dual
config.json&config.ymlSupport:- Native loading and live hot-reloading (
/afkdummy reload) for bothconfig.jsonandconfig.yml. - Full configuration audit logging tracking item currency, limits, and costs.
- Native loading and live hot-reloading (
- 🔍 Duplicate Entity Detection & Diagnostics:
- Added
/afkdummy debugcommand and automated entity duplicate checks across server worlds and player lists.
- Added
- 💤 Sleep Ignored Integration:
- Dummies have
setSleepingIgnored(true)enabled, allowing real players to skip the night normally.
- Dummies have
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:PHiV6JLQ:OwTtKRIV"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:PHiV6JLQ:OwTtKRIV"
}

