Minecraft client help
Everything that goes wrong between MediaMod and this website, in the order it usually goes wrong. Start at the top — most reports turn out to be a version mismatch or a bridge that was never running.
26.1.2 · Fabric Loader 0.19.3+
· Fabric API 0.154.2+26.1.2. A mismatch on any one of these causes most crash reports,
and the crash message rarely says so directly.
Crashes and startup
Minecraft crashes during startup with a registration error
Minecraft 26.1.2 changed how items and blocks register. Both
Item.Properties and BlockBehaviour.Properties now require
.setId(ResourceKey) to be called before the object is constructed. A jar built
against an older Minecraft throws during registration, usually before the main menu appears.
Fix: use a mod jar built for 26.1.2, and make sure Fabric API is the matching
+26.1.2 build. Mixing a new mod with an old API produces the same symptom.
Crash mentioning a mixin or an injection point
Mixins are compiled against exact method signatures, so they break when the target class changes between versions. If the stack trace names a mixin class, the mod was built for a different Minecraft than the one you are running.
A known trap in this mod: @Shadow on an inherited method does not resolve reliably.
The stable pattern is one generic ScreenMediaButtonsMixin using
instanceof checks rather than one mixin per screen class.
The game launches but the mod is not in the mod list
Almost always the wrong folder. Fabric reads .minecraft/mods for the profile you are
launching — if you use a custom game directory in the launcher, that is a different mods folder.
Also confirm you copied the built jar and not the -sources or -dev one that
Gradle also produces.
Items and blocks show a purple and black checkerboard
That is Minecraft's missing-texture placeholder. Each item needs a client item definition JSON in
assets/modid/items/. If you built from source and the resources did not get packaged,
every item renders like this.
It is cosmetic — the mod still works — but it means the resource pack side of the jar is incomplete.
Buttons appear twice on the title or pause screen
Two mixins are injecting the same buttons. Older builds shipped
PauseScreenMediaButtonsMixin and TitleScreenMediaButtonsMixin alongside the
generic one. Removing the duplicates and keeping a single registered mixin fixes it.
The build fails and the console output is unreadable
Open build/reports/problems/problems-report.html in a browser. Gradle writes a
structured report there that is far clearer than the terminal spew.
When packaging source to share, send only src/ plus the three root Gradle files:
Bridge and connection
Bridge status shows disconnected
The website opens a TCP connection to 127.0.0.1:9010 every 5 seconds and sends
{"type":"ping"}, expecting {"ok":true,"type":"pong"} back. Disconnected means
that failed.
- Is the website server running? Its console should show
[bridge] listening on 127.0.0.1:9010at startup. - Is something else on port 9010? Only one process can hold it.
- Is Minecraft on a different machine? Then
127.0.0.1is wrong — changebridge_hostinconfig/config.jsonto a reachable address and allow the port through the firewall.
A disconnected bridge does not break the website. The arcade, calls and chat all keep working; only Minecraft-to-web events stop.
Test the bridge by hand
You do not need Minecraft to check the bridge. Any TCP client works:
If you see the hello line, the bridge is fine and the problem is on the mod side. If the connection is refused, the server is not running or the port is wrong.
Events reach the website but nothing comes back
Fire-and-forget clients that connect, write, and disconnect can only send. To receive pushed events you have to register and keep the socket open:
After that, keep reading. Pushed events arrive as additional lines whenever they happen. Full detail is in the protocol docs.
My reader gets out of sync after a while
Classic symptom of assuming exactly one reply per request. Once you register, the server can write unsolicited lines at any time — an incoming call, for example — so a reader that pairs each line with the last request it sent will drift permanently out of step.
Read lines in a dedicated loop on its own thread and dispatch on the type field.
Never block the Minecraft client thread on socket I/O.
Linking and calls
Account linking will not stick
Link from the Minecraft tab on your dashboard, not from inside the game. The website is the source of truth for the mapping.
The Minecraft username you enter must match the one the mod registers with, or the site will not know where to send in-game events. Matching is case-insensitive.
Calling a Minecraft player does nothing in game
Three things all have to be true:
- The mod is connected to the bridge right now
- It sent
registerwith a username, and kept the socket open - That username matches the site account you are calling
When the push succeeds, the caller sees "Also rang them in Minecraft" in the call log on the calls page. No message means no registered client matched.
In-game voice is quiet or choppy
In-game voice uses javax.sound.sampled for device enumeration and audio I/O, relayed
through the server connection rather than peer to peer. If Java picks the wrong input device, you get
silence or a very low level.
Browser-to-browser calls on the calls page are a separate path using WebRTC, and are the better test of whether your microphone hardware is fine. If the browser call is clean and the in-game one is not, the problem is Java device selection, not your mic.
Still stuck?
Open a ticket under the Minecraft mod & bridge category and include:
- Minecraft, Fabric Loader and Fabric API versions
- The full crash report, or the last 40 lines of
latest.log - What the bridge status pill says on your dashboard
- Whether
nc 127.0.0.1 9010returns the hello line