Repository navigation
server crash #1458
Description
Context
Client crashes with a NullPointerException every single time when connecting to our dedicated NeoForge server, but the same client mod list works fine in singleplayer. The crash is 100% reproducible on multiplayer connect and has persisted through extensive troubleshooting (details below).
Crash Report
java.lang.NullPointerException: Cannot invoke "dev.ryanhcode.sable.mixinterface.entity.entity_sublevel_collision.EntityMovementExtension.sable$getTrackingSubLevel()" because "entity" is null
at TRANSFORMER/sable@2.0.3/dev.ryanhcode.sable.ActiveSableCompanion.getTrackingSubLevel(ActiveSableCompanion.java:435) ~[sable-neoforge-1.21.1-2.0.3.jar]
at TRANSFORMER/minecraft@1.21.1/net.minecraft.client.renderer.GameRenderer.handler$fpo000$sable$renderLevel(GameRenderer.java:13078)
at TRANSFORMER/minecraft@1.21.1/net.minecraft.client.renderer.GameRenderer.renderLevel(GameRenderer.java)
at TRANSFORMER/minecraft@1.21.1/net.minecraft.client.renderer.GameRenderer.mixinextras$bridge$renderLevel$321(GameRenderer.java)
...
Full crash reports available on request (multiple identical crashes captured across different sessions, same stack trace and line numbers each time).
Environment
- Minecraft: 1.21.1
- NeoForge: 21.1.248
- Sable: 2.0.3 (neoforge)
- Sable Companion: 1.6.0
- Create: 6.0.10
- Create Aeronautics (bundled): 1.3.0 (includes Create Offroad 1.3.0, Create Simulated 1.3.0)
- CC: Sable: 1.3.4
- Java: 21.0.9 (Azul)
- OS: Windows 11
- Launcher: Modrinth App
Steps to Reproduce
- Join the dedicated multiplayer server with the modpack installed.
- Client crashes immediately during the first
renderLevelcall after connecting. - Crash is 100% reproducible — every connection attempt fails the same way.
What we've already ruled out
We've done extensive isolation testing before filing this report:
| Tested | Result |
|---|---|
| Singleplayer world with identical client mods | Works fine — no crash |
Changing player's own Pos/Dimension in playerdata NBT |
No change |
Deleting/renaming sable_tracking_points.dat, sable_sub_level_occupancy.dat, sable_sub_level_force_load_tickets.dat |
No change |
| Removing Create: Vibrant Vaults from the server (was previously causing an unrelated crash — see below) | No change |
Setting disable_udp_pipeline = true in sable-common.toml on both client and server |
No change — identical crash, same line numbers |
| Full modpack reinstall (fresh download, all mods re-fetched) | No change — identical crash |
| Full client/server mod list diff (79 server mods vs 95 client mods) | No relevant version mismatches found; only expected client-only performance/visual mods differ |
Additional context that may be relevant
Earlier in our troubleshooting, before this crash appeared, we saw repeated console log spam on the server:
[Netty Epoll Server IO #0/ERROR] [de.ry.sa.Sable/]: SableUDPPacket SNAPSHOT (ClientboundSableSnapshotDualPacket) was larger than expected, found 27 bytes extra
This suggested a UDP snapshot packet decode issue. We hypothesized this might be related to the current NPE crash, which is why we tried disabling the UDP pipeline entirely — but that had no effect, so the two issues may be unrelated (or the corruption happens somewhere UDP-disable doesn't reach).
We also separately hit an unrelated crash caused by Create: Vibrant Vaults (ItemVaultItem.place NPE on placing a specific block variant) which we've since worked around by removing that mod — this is likely a separate bug in Vibrant Vaults itself, not Sable, but mentioning for completeness since it was in the same troubleshooting session.
Working hypothesis
Since the crash is independent of the connecting player's own position/data, we suspect the null entity may belong to a different entity being rendered near spawn/player location — possibly an active Create Aeronautics contraption (airship, vehicle, etc.) with a corrupted or incomplete Sable sub-level tracking reference. We have not yet been able to test removing/landing all active contraptions to confirm this, but wanted to file this report with the full troubleshooting history in case it's useful regardless.
Expected behavior
Sable's renderLevel mixin should null-check entity before calling sable$getTrackingSubLevel() on it, similar to the pattern seen in other reported NPEs in Sable's mixins (e.g. #675, #1080).
crash-2026-08-09_16.47.49-server.txt
Activity
JethroDreemurr451 commentedon Aug 22, 2026
I have identically same issue! Idk if it helps, im pretty silly, but it happened after I removed two mods
could the issue happen because of some missing mod items on the contraption? Though im not sure if any items or anything from these mods, including chest inventory, were left on any contraption. I suspect not.
steps of what I have done:
I could also provide crash reports on request <3 If anyone finds workaround pls let us know, would be a shame to loose my airship qwq
JethroDreemurr451 commentedon Aug 22, 2026
UPD: did a clean reinstall of client, and it worked, problem gone
if anyone will find it useful: one my friend kept Voxy LOD files and Xaero map files, while deleted other minecraft stuff, and it did crash for him with NullPointerException upon joining a server. But when he removed Voxy LOD files, it worked. We have Voxy working with NeoForge through Fabric Connector mod. As a total noob in anything code-related I hardly understand the logical connection, 'cause it seemed like Voxy didn't render Sable sub-levels.
Hope if anyone has similar setup it helps!
Implement null check for LocalPlayer in renderLevel