Context
The server enters a constant crash loop whenever a player has a Magic Map (from The Twilight Forest) in their inventory. The map's inventoryTick periodically scans the world to update the map, which triggers chunk loading/post-processing in the Twilight Forest dimension. This triggers a Recursive update error involving Sable's LevelAccelerator and RapierVoxelColliderBakery.
To Reproduce
Have a player log in with a MagicMapItem in their inventory.
The item attempts to scan the Twilight Forest terrain.
The server encounters a ForceFieldBlock (from Twilight Forest).
Sable intercepts this, leading to a recursive update loop in ConcurrentHashMap.computeIfAbsent.
The server crashes immediately.
Crash Report Logs
java.lang.IllegalStateException: Recursive update
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1763) ~[?:?] {re:mixin}
at TRANSFORMER/minecraft@1.21.1/net.minecraft.Util$8.apply(Util.java:795) ~[server-1.21.1-20240808.144430-srg.jar%23305!/:?] {re:classloading,pl:connector_pre_launch:A}
at TRANSFORMER/sable@1.2.2/dev.ryanhcode.sable.physics.impl.rapier.collider.RapierVoxelColliderBakery.getPhysicsDataForBlock(RapierVoxelColliderBakery.java:98) ~[sable-neoforge-1.21.1-1.2.2.jar%23452!/:1.2.2] {re:classloading}
at TRANSFORMER/sable@1.2.2/dev.ryanhcode.sable.util.LevelAccelerator.getBlockState(LevelAccelerator.java:66) ~[sable-neoforge-1.21.1-1.2.2.jar%23452!/:1.2.2] {re:classloading}
at TRANSFORMER/twilightforest@4.8.3345/twilightforest.block.ForceFieldBlock.fullFaceOrSimilarForceField(ForceFieldBlock.java:69) ~[twilightforest-1.21.1-4.8.3345-universal.jar%23472!/:4.8.3345] {re:classloading}
...
at TRANSFORMER/twilightforest@4.8.3345/twilightforest.item.MagicMapItem.update(MagicMapItem.java:XX) ~[twilightforest-1.21.1-4.8.3345-universal.jar%23472!/:4.8.3345]
at net.minecraft.world.item.ItemStack.inventoryTick(ItemStack.java:395)
Context
Minecraft Version: 1.21.1
Loader: NeoForge 5.1.6 (with Sinytra Connector)
Sable Version: 1.2.2
The Twilight Forest Version: 4.8.3345
Note: The crash is triggered by the Magic Map scanning the Twilight Forest blocks (specifically ForceFieldBlocks). Removing the item from the player's inventory (while Sable is temporarily disabled) resolves the crash loop.
Crash Report
https://mclo.gs/mEqic3V
Context
The server enters a constant crash loop whenever a player has a Magic Map (from The Twilight Forest) in their inventory. The map's inventoryTick periodically scans the world to update the map, which triggers chunk loading/post-processing in the Twilight Forest dimension. This triggers a Recursive update error involving Sable's LevelAccelerator and RapierVoxelColliderBakery.
To Reproduce
Have a player log in with a MagicMapItem in their inventory.
The item attempts to scan the Twilight Forest terrain.
The server encounters a ForceFieldBlock (from Twilight Forest).
Sable intercepts this, leading to a recursive update loop in ConcurrentHashMap.computeIfAbsent.
The server crashes immediately.
Crash Report Logs
java.lang.IllegalStateException: Recursive update
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1763) ~[?:?] {re:mixin}
at TRANSFORMER/minecraft@1.21.1/net.minecraft.Util$8.apply(Util.java:795) ~[server-1.21.1-20240808.144430-srg.jar%23305!/:?] {re:classloading,pl:connector_pre_launch:A}
at TRANSFORMER/sable@1.2.2/dev.ryanhcode.sable.physics.impl.rapier.collider.RapierVoxelColliderBakery.getPhysicsDataForBlock(RapierVoxelColliderBakery.java:98) ~[sable-neoforge-1.21.1-1.2.2.jar%23452!/:1.2.2] {re:classloading}
at TRANSFORMER/sable@1.2.2/dev.ryanhcode.sable.util.LevelAccelerator.getBlockState(LevelAccelerator.java:66) ~[sable-neoforge-1.21.1-1.2.2.jar%23452!/:1.2.2] {re:classloading}
at TRANSFORMER/twilightforest@4.8.3345/twilightforest.block.ForceFieldBlock.fullFaceOrSimilarForceField(ForceFieldBlock.java:69) ~[twilightforest-1.21.1-4.8.3345-universal.jar%23472!/:4.8.3345] {re:classloading}
...
at TRANSFORMER/twilightforest@4.8.3345/twilightforest.item.MagicMapItem.update(MagicMapItem.java:XX) ~[twilightforest-1.21.1-4.8.3345-universal.jar%23472!/:4.8.3345]
at net.minecraft.world.item.ItemStack.inventoryTick(ItemStack.java:395)
Context
Minecraft Version: 1.21.1
Loader: NeoForge 5.1.6 (with Sinytra Connector)
Sable Version: 1.2.2
The Twilight Forest Version: 4.8.3345
Note: The crash is triggered by the Magic Map scanning the Twilight Forest blocks (specifically ForceFieldBlocks). Removing the item from the player's inventory (while Sable is temporarily disabled) resolves the crash loop.
Crash Report
https://mclo.gs/mEqic3V