1.0.5
Compatibility
Changes
X-Factor Optimization 1.0.5
X-Factor Optimization 1.0.5 is a menu/session recovery and multiplayer stability update built on top of the chunk-throughput and networking changes introduced in 1.0.4.
This release keeps the existing optimization stack in place. The main change is a major update to X-Factor's custom Client State Guard after further singleplayer and multiplayer testing exposed a deeper Minecraft 26.2 Video Settings state-loss problem.
Highlights
- Updated Client State Guard 1.0.6 → 1.0.11
- Added direct protection for Sodium's Video Settings screen
- Added recoverable snapshots of the active client world, player, network listener, and integrated-server identity
- Added packet-wide protection for queued clientbound gameplay packets during a temporary null-world state
- Added recovery for cases where both
Minecraft.levelandClientPacketListener.levelhave already been cleared - Real disconnect, transfer, and configuration packets are still allowed through normally
- Normal Save & Quit remains allowed
- Retained stale-session packet isolation from the 1.0.4 release
- Retained Rendersnap Sodium Menu Compat 1.0.14
- Retained Krypton, Multicore Magic, and the safer non-aggressive Greedy Meshing default from 1.0.4
Client State Guard 1.0.11
X-Factor 1.0.5 updates Client State Guard from:
1.0.6
to:
1.0.11
This is the main change in X-Factor 1.0.5.
The 1.0.4 release already protected several entity packet handlers from a temporary missing ClientLevel.
Further testing showed that the underlying issue was broader.
While navigating through:
Pause
→ Options
→ Video Settings
Minecraft 26.2 could temporarily detach the active client world from the network listener.
In more severe reproductions, the client could lose multiple related references at once:
Minecraft.level
Minecraft.player
ClientPacketListener.level
The visible result could include:
- A packet-handler disconnect
- The title-screen panorama appearing behind an old Pause/Options screen
- Resume returning to the title screen instead of the world
- A singleplayer world remaining active or locked after the client UI had already fallen back toward the title screen
Client State Guard 1.0.11 changes the protection model from a small set of packet-specific guards into a broader session-recovery system.
Direct Sodium Video Settings Protection
Earlier versions mainly observed normal Minecraft screen transitions.
Further testing showed that this was not early enough for every failure path.
Client State Guard 1.0.11 now directly observes Sodium's Video Settings screen when it initializes.
The protected path is now effectively:
Live game session
↓
Pause
↓
Options
↓
Sodium Video Settings opens
↓
Client State Guard arms protection immediately
This allows the mod to capture the active session before a broken transition can destroy the information needed for recovery.
The direct Sodium hook is optional.
If Sodium is not present, Client State Guard can still load without requiring it.
In X-Factor, Sodium remains part of the tested rendering stack.
Recoverable Client-State Snapshot
When protection is armed, Client State Guard now keeps a snapshot of the active session.
That snapshot includes the important live-session references needed to determine whether recovery is still safe:
Minecraft.level
Minecraft.player
ClientPacketListener
ClientPacketListener.level
Integrated server identity when applicable
If Minecraft temporarily clears the world while the same session is still active, Client State Guard can restore the protected state instead of immediately treating it as a real disconnect.
The recovery logic is intentionally conservative.
A missing reference can be restored only when the protected session is still the same live session.
If a replacement world, player, listener, or integrated server has genuinely appeared, the old snapshot is not forced back into the client.
The intended flow is:
Video Settings protection armed
↓
Minecraft temporarily clears client state
↓
same live session still owns the connection
↓
protected snapshot is restored
↓
gameplay continues
This is an important difference from simply checking whether a field is null.
A temporary null does not automatically mean the player intended to disconnect.
Packet-Wide Gameplay Protection
Client State Guard 1.0.6 directly protected several known entity packet handlers.
Those protections were useful, but further testing found additional packets that could become the first packet to touch the missing world.
Observed examples included:
ClientboundSectionBlocksUpdatePacket
ClientboundUpdateMobEffectPacket
This demonstrated that the bug was not limited to one packet family.
Any queued gameplay packet that needs the temporarily missing ClientLevel could potentially become the first failure.
Client State Guard 1.0.11 therefore protects the queued gameplay path more broadly.
The new flow is:
Clientbound gameplay packet arrives
↓
protected Video Settings session is active
↓
client-state snapshot is checked
↓
state is healthy?
↓
yes → packet continues normally
or
state is damaged?
↓
safe recovery is possible?
↓
yes → restore snapshot
↓
packet continues normally
If safe recovery is not possible, the gameplay packet can be suppressed rather than being allowed to enter a null-world handler and terminate the connection.
This avoids maintaining an endless blacklist of individual packet types.
Real Disconnects Are Still Allowed
The protection is not intended to trap the player inside an old session.
Real terminal session events are explicitly allowed to continue.
Examples include:
ClientboundDisconnectPacket
ClientboundTransferPacket
ClientboundStartConfigurationPacket
When one of these legitimate session-changing packets arrives, the protected Video Settings state is disarmed and the packet proceeds normally.
This means Client State Guard distinguishes between:
temporary broken menu state
and:
real server/session transition
The goal is to preserve a valid session, not prevent intentional disconnects.
Normal Save & Quit Is Preserved
Singleplayer required additional care because an integrated server can remain alive even after the client UI has lost the world reference.
That can leave the save unavailable to reopen because the still-running server process continues to own the world.
Client State Guard therefore protects against accidental teardown caused by the Video Settings bug while still allowing teardown that genuinely begins from the Pause screen.
Normal:
Pause
→ Save & Quit
is still allowed.
The protection is aimed at accidental menu/session destruction, not normal world shutdown.
Unexpected Title-Screen Routing
One of the more visible failure modes during testing was a stale Pause or Options screen appearing over the title-screen panorama.
In that state, the UI could still look partly like an in-world menu even though Minecraft had already detached the client world.
Pressing Resume could then return to the title screen rather than gameplay.
Client State Guard 1.0.11 protects recoverable sessions against unexpected routing toward:
Title screen
World selection
Server selection
while the protected Video Settings session is still valid.
If the original session can safely be recovered, the snapshot is restored instead.
If the session has genuinely ended or been replaced, Client State Guard does not force the old world back into Minecraft.
Session Isolation Retained
The session-isolation work from X-Factor 1.0.4 remains in 1.0.5.
Once Minecraft has genuinely replaced an old ClientPacketListener, traffic from that old session can be isolated so it does not contaminate the replacement session.
This is designed to prevent stale data such as:
- Chat
- Tab-list updates
- Player-list data
- World/block updates
- Entity updates
- Disconnect-state packets
from an old listener affecting a later connection.
The important distinction remains:
temporary missing world on the current session
≠
old listener that Minecraft has genuinely replaced
The current active session should not be destroyed merely because a menu transition temporarily exposes incomplete state.
Rendersnap Sodium Menu Compat 1.0.14
X-Factor 1.0.5 retains:
Rendersnap Sodium Menu Compat 1.0.14
This is the same compatibility version introduced in X-Factor 1.0.4.
Its safer Video Settings navigation behavior remains part of the pack:
- Rendersnap button widgets are recreated for each menu open
- Stateful widget instances are not reused across separate screen instances
- Video Settings prefers the current vanilla Options screen as its return parent
- Broad reflective searching for arbitrary parent screens is avoided
- A live multiplayer session is not intentionally routed straight from Video Settings to title/world/server-selection screens
- Sodium screen-construction/search-layout reflection metadata can still be cached
The two Rendersnap controls remain integrated into Sodium's Video Settings layout.
Client State Guard 1.0.11 now adds an additional session-safety layer around that menu transition.
Greedy Meshing Default Retained
The safer Greedy Meshing configuration introduced in X-Factor 1.0.4 remains in 1.0.5.
The main configuration continues to use:
enabled=true
aggressiveGreedy=false
greedyWater=false
mergeOrientedBlocks=true
debugWireframe=false
debugComparison=false
Normal Greedy Meshing therefore remains enabled.
The more aggressive ambient-occlusion-crossing mode remains disabled.
X-Factor continues to keep the core geometry-reduction benefit without forcing the most aggressive available meshing path.
About the previous 900+ FPS result
The previously discussed 900+ FPS development result remains a 1.0.3-era observation made with the older aggressive configuration.
It should not be treated as a guaranteed 1.0.5 benchmark.
Performance will continue to vary heavily by:
- Hardware
- World geometry
- Resolution
- Render distance
- Simulation distance
- Shader state
- Server conditions
- Background workload
Compared With X-Factor 1.0.4
Added
Direct Sodium Video Settings session protection
Recoverable client-state snapshots
Packet-wide queued gameplay protection during protected null-world states
Recovery of Minecraft.level, Minecraft.player,
and ClientPacketListener.level when the same live session is still active
Explicit terminal-session packet handling
Additional protection against unexpected title/world-selection routing
during a recoverable in-game Video Settings transition
Updated
Client State Guard
1.0.6 → 1.0.11
Configuration Changes
No new headline Greedy Meshing change.
aggressiveGreedy=false
remains the supplied default.
Removed
No 1.0.5 feature removal is required for the new Client State Guard protection.
Unchanged
The major 1.0.4 optimization additions remain in place:
Krypton 0.3.1
Multicore Magic
Rendersnap Sodium Menu Compat 1.0.14
Greedy Meshing with aggressiveGreedy=false
The tested rendering combination in the supplied 1.0.5 pack remains:
Sodium 0.9.1
Iris 1.11.2
Existing Optimization Stack Retained
X-Factor 1.0.5 continues to include the existing performance stack, including:
- Sodium
- Lithium
- Rendersnap
- ImmediatelyFast
- Greedy Meshing
- More Culling
- Ferrite
- FerriteCore
- ScalableLux
- Async
- Modernica
- Optimized Block Entities
- Particle Core
- BadOptimizations
- Signs Faster
- Gnetum
- PAPI
- Tick Sync
- Eslium
- Iris
- Oxidizium Panama
- Quantified API
- Krypton
- Multicore Magic
X-Factor's custom compatibility components also remain:
- Client State Guard
- Rendersnap Sodium Menu Compat
- X-Factor Compatibility Patcher
xfactor-compatibility-patches.txt
What 1.0.5 Is Trying to Improve
X-Factor 1.0.4 expanded the pack's optimization pipeline into chunk-mesh scheduling and networking.
X-Factor 1.0.5 focuses on making the client state around that optimized stack more resilient.
The relevant failure/recovery path now looks roughly like:
Live world
↓
Pause / Options
↓
Sodium Video Settings
↓
Client State Guard snapshot
↓
temporary client-world loss
↓
safe recovery check
↓
snapshot restore or unsafe gameplay packet suppression
↓
return to gameplay
The focus of 1.0.5 is therefore not a new headline FPS mod.
The goals are:
- Keep valid singleplayer and multiplayer sessions alive through broken Video Settings transitions
- Recover the active client world when Minecraft temporarily clears it
- Prevent queued gameplay packets from crashing a protected null-world session
- Avoid maintaining a fragile packet-by-packet blacklist
- Preserve real disconnects and transfers
- Preserve normal Save & Quit
- Prevent stale sessions from contaminating later connections
- Keep the rendering, chunk-throughput, and networking improvements from 1.0.4 intact
Recommended Testing
For general performance comparisons between 1.0.4 and 1.0.5:
- Use the same world/server.
- Use the same render and simulation distances.
- Keep resolution and shader state identical.
- Disable VSync for maximum-throughput testing.
- Use the same FPS cap.
- Test rapid traversal through already-generated and fresh terrain.
- Test a busy multiplayer lobby.
- Repeat each workload more than once.
Because 1.0.5 is primarily a stability update, the most important test is the Video Settings path.
For multiplayer:
Join server
→ Pause
→ Options
→ Video Settings
→ change/open settings
→ back
→ resume gameplay
Repeat the sequence several times.
Confirm that:
- The world remains loaded
- Resume returns to gameplay
- The title panorama does not appear behind the Pause/Options UI
- The connection remains alive
- Incoming gameplay packets do not trigger a null-world packet-handler disconnect
Also test:
Server A
→ disconnect normally
→ Server B
and confirm that chat, tab-list decorations, boss bars, player-list state, and other server-specific data do not leak between sessions.
For singleplayer:
Open world
→ Pause
→ Options
→ Video Settings
→ back
→ resume gameplay
Then separately test:
Open world
→ Pause
→ Save & Quit
→ reopen world
Confirm that the world saves normally and can be reopened without a save-lock error.
Updating From X-Factor 1.0.4
A clean launcher update is recommended.
If updating an existing instance:
- Back up worlds, screenshots, and personal configuration changes.
- Update the pack through the launcher.
- Remove duplicate older mod versions if the launcher leaves them behind.
- Make sure only Client State Guard 1.0.11 remains; remove an old 1.0.6 copy if it is left behind.
- Keep the supplied Rendersnap Sodium Menu Compat 1.0.14.
- Launch the pack.
- Review the X-Factor Compatibility Patcher wizard if it appears.
- Restart after an approved compatibility patch if requested.
Do not use a launcher-wide Update All Mods action on X-Factor.
The pack contains compatibility-sensitive rendering, networking, and Mixin combinations that are tested together.
In particular, the supplied X-Factor 1.0.5 rendering combination uses:
Sodium 0.9.1
Iris 1.11.2
Do not assume a newer standalone Sodium build is compatible with the supplied Iris version simply because it is newer.
Compatibility
- Minecraft: 26.2
- Mod loader: Fabric
- Environment: Client-focused
- Rendering: Sodium-based
- Shaders: Iris included
- Server installation: Not normally required
Reporting Problems
When reporting an issue, include:
- X-Factor version
- Minecraft version
- Fabric Loader version
- Java version
- CPU and GPU
- Full
latest.log - Exact reproduction steps
- Singleplayer or multiplayer
- Server address/name when relevant
- ViaFabricPlus target protocol when relevant
For performance reports, also include:
- Render distance
- Simulation distance
- Resolution
- FPS cap
- VSync state
- Shader state
- Spark profile link when available
For menu/session problems, include the exact screen sequence used before the issue.
For the 1.0.5 Client State Guard changes, also mention whether the log contains messages similar to:
[Client State Guard] Armed client state protection for Sodium Video Settings
or:
[Client State Guard] Restored the protected client world snapshot before ...
These messages help distinguish a successfully recovered temporary state loss from a different disconnect path.










































