This mod safely modifies the core read method of Minecraft network packets. Whenever any mod attempts to write null into a packet, the method automatically replaces null with an empty CompoundTag at the return stage, ensuring that any subsequent NBT operations (such as getString, getInt, etc.) will not throw a null pointer exception.
Notes • This is a crash guard, not a data fix: a skipped feature may stop working temporarily (for example, one dropped item is discarded or one block entity stops ticking), but the server/client stays alive. • Only null-pointer exceptions are suppressed; other errors still produce a normal crash report.
[NullPointer Fix for Mio — How to enable the extra protections]
Both options are OFF by default. Only enable them if your crash log contains:
Slot.getItem / Inventory.setItem / Inventory.add / NonNullList
Add these JVM arguments:
-Dnullpointerfix.sanitizeSlots=true
-Dnullpointerfix.sanitizeInventory=true
Client (close the game first):
• CurseForge: Settings → Game Specific → Minecraft → Java Arguments, append at the end
• Prism: right-click instance → Edit → Settings → Java → JVM arguments, append at the end
• HMCL: Version Settings → Advanced Settings → JVM Arguments, append at the end
• PCL2: Settings → Launch Settings → Advanced → JVM Arguments, append at the end
• Official Launcher: Installations → Edit → More Options → JVM arguments, append at the end
Note: put them in the "JVM / Java arguments" field, NOT in "Game arguments".
Server (Forge 1.19/1.20, NeoForge 1.21):
Open user_jvm_args.txt in the server folder and add one per line:
-Dnullpointerfix.sanitizeSlots=true
-Dnullpointerfix.sanitizeInventory=true
Save and restart.
If your start script does not read that file, put the arguments between java and -jar.
How to verify:
After launch, logs/latest.log should contain:
[NPE-Fix] NullPointerFixForMio active (... slots=true, inventory=true ...)
How to disable:
Remove the arguments and restart the game/server.
Notes:
• Client crash → add on the client. Server crash → add on the server. One side does not affect the other.
• If items disappear, storage terminals misbehave, or inventories get out of sync, remove the arguments first.
• All other protections are enabled by default. These two are optional.

