Skip to content

Conversation

@cassandra288
Copy link

@cassandra288 cassandra288 commented Aug 19, 2025

I've been having issues with using raw mouse input and, with some digging, I discovered the problem stems from JInput. For some reason it's picking up a device on my system with 32 buttons:

...
[16:52:31] [getMouseThread/INFO] [JInputTransformer]: 5
[16:52:31] [getMouseThread/INFO] [JInputTransformer]: 5
[16:52:31] [getMouseThread/INFO] [JInputTransformer]: 32
...

Which then proceeded to cause this error:

Exception in thread "getMouseThread" [17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]: java.lang.NullPointerException
[17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:      at net.java.games.input.RawMouse$Button.<init>(RawMouse.java:197)
[17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:      at net.java.games.input.RawMouseInfo.createControllerFromDevice(RawMouseInfo.java:83)
[17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:      at net.java.games.input.RawInputEnvironmentPlugin.createControllersFromDevices(RawInputEnvironmentPlugin.java:160)
[17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:      at net.java.games.input.RawInputEnvironmentPlugin.enumControllers(RawInputEnvironmentPlugin.java:176)
[17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:      at net.java.games.input.RawInputEnvironmentPlugin.<init>(RawInputEnvironmentPlugin.java:123)        
[17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:      at net.java.games.input.DirectAndRawInputEnvironmentPlugin.<init>(DirectAndRawInputEnvironmentPlugin.java:46)
[17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:      at world.maryt.rawinput.RawInputHandler.lambda$getMouse$1(RawInputHandler.java:53)
[17:02:31] [getMouseThread/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:1052]:      at java.lang.Thread.run(Thread.java:750)

We can see here in JInput 2.0.5 (the version older minecraft versioned like 1.12.2 used) that it iterates through the buttons to set them up but it can't handle devices with >= 32 buttons.

This PR adds an ASM transformer to inject a safety check into that method, to reject devices with >= 32 buttons (similar to how it already rejects when = 0 buttons).

I believe others may have been having this issue too:
xCuri0#11

@cassandra288 cassandra288 mentioned this pull request Aug 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant