Skip to content

Recursive update crash when Lootr replaces DecoratedPot blocks during chunk loading #538

@MildilyAcidic

Description

@MildilyAcidic

Description

When Lootr attempts to replace a vanilla DecoratedPot with its own LootrDecoratedPotBlock during chunk post-processing, Sable intercepts the setBlockState call to compute physics collision data. During that computation, RapierVoxelColliderBakery calls getCollisionShape() on the new block, which triggers LootrDecoratedPotBlock.getCollisionState(), which calls LevelAccelerator.getBlockEntity(), which triggers another setBlockState event, which triggers Sable's physics handler again causing a java.lang.IllegalStateException: Recursive update inside ConcurrentHashMap.computeIfAbsent.

Result: Chunk [2, -27] fails to load, the server falls 100+ ticks behind, mob AI freezes, and a chunk IO error report is generated.

Game Log

https://mclo.gs/AofuWWb

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions