Tags
Creators
Details
Licensed MIT
Published 7 months ago
Updated 3 weeks ago
All versions
2.0.3
Release
inputbooster 2.0.3 stable release7 months ago 321
Uploaded by
Compatibility
Minecraft: Java Edition
1.21.8–1.21.11
Platform
Fabric
Supported environments
Client-side
Required content
Any compatible version
Changes
[2.0.3] - 2026-04-04
🐛 Fixed
Critical — "Not Responding" on MC 1.21.11 (Root Cause)
- DebugHudMixin crash on startup: The
@InjectinDebugHudMixintargeted the intermediary method namemethod_1835(getLeftText), which was remapped in MC 1.21.11. With the defaultrequire=1, a failed injection throwsInvalidInjectionException, crashing the render thread and leaving a blank white "Not Responding" window. Fixed by addingrequire=0so the injection silently skips if the target method is not found in the current MC version. defaultRequire: 1in mixin config:inputbooster.mixins.jsonhad"defaultRequire": 1, making every mixin injection fatal if unresolved. Changed to"defaultRequire": 0as a global safety net.
Thread Safety — Polling Thread Reading MC State Directly
- Unsafe MC options reads from background thread (critical):
InputPollingThread.poll()was callingMinecraftClient.getInstance()and readingmc.options.attackKey.isPressed()and all other key bindings directly from the background polling thread. Minecraft'sKeyBindingobjects are not thread-safe — concurrent reads from a non-main thread cause lock contention and can deadlock the game. IntroducedKeySnapshot, a new immutable class that captures all key states on the main thread once per tick. The polling thread now reads exclusively from this snapshot. WTapAssistrace condition:pendingWReleaseandwReleaseTickDelaywere plainboolean/intfields written by the polling thread viaonWRelease()and read by the main thread intick(). Withoutvolatile, the main thread could see stale values. Both fields markedvolatile.CpsLimiternot thread-safe:clickTimestampswas anArrayDeque— not safe for concurrent access. Replaced withConcurrentLinkedDeque.
✨ Added
KeySnapshot.java— New immutable class capturing all key binding states on the main thread each tick, published as avolatilefield onInputBoosterModfor the polling thread to read safely. Eliminates all direct MC object access from the background thread.
🔧 Changed
InputPollingThreadno longer imports or referencesMinecraftClientorGameOptions.InputBoosterModnow updateskeySnapshoteach tick alongsidegameReadyandgamePaused.DebugHudMixinpriority set to900and added null guard oncir.getReturnValue().
Optional dependencies
Any compatible version
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:WGGNOhWY:A3ut8NAH"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:WGGNOhWY:A3ut8NAH"
}

