Improvements
This release hardens placement logic for complex interactive blocks at high speed, especially when using Easy Place on multiplayer servers.
Main changes
- Reworked the placementStateOverride flow:
- replaced the previous one-shot global state with a short-lived override queue;
- overrides are now scoped to block position and block type;
- improved resilience against multiple internal getPlacementState() calls during one placement;
- added a fallback path for rare client desync cases.
Trapdoors
- Fixed the direction inversion issue: trapdoors should no longer be placed mirrored relative to the schematic.
- Improved high-speed placement stability.
- Hardened follow-up interaction handling for states that require an extra click (OPEN).
Stairs
- Improved enforcement of facing and half.
- SHAPE is no longer forced, allowing neighbor-dependent shape updates to resolve naturally on the server.
- This reduces incorrect placements under high-speed conditions.
Lecterns
- Added dedicated support for correct facing placement.
- Added interactive handling via ICanUse.
- Shelf blocks
- Facing is now enforced more safely without forcing dynamic runtime properties.
- Internal changes
- Updated the mixin set.
- Added new mixins for LecternBlock.
- The project builds successfully after these changes.
Known limitations
1. There are still open findings around follow-up interactions for some multi-click blocks.
2. Generic multiface placement still needs additional work.
3. If you rely heavily on glow lichen / sculk vein style blocks, separate testing is recommended.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }