v1.1.1
Summary
Rewrites SignEditMixin for better mod compatibility, robustness, and correct environment scoping.
Changes
SignEditMixin.java
- Change mixin target from
ServerGamePacketListenerImpltoSignBlockEntity, injecting atHEADofupdateSignTextinstead of using a fragileINVOKE-before injection that captured local variables - Remove
@Shadow,LocalCapture.CAPTURE_FAILHARD, and all now-unneeded imports — the player,isFrontText, andfilteredLinesare all directly available as method parameters atHEAD - Add
instanceof ServerPlayerguard so the hook silently no-ops if somehow invoked outside a server context (e.g. future API changes)
private-chests.mixins.json
- Move
SignEditMixinfrom the sharedmixinsarray to theserverarray so it is never loaded on the client at all — the correct approach for a purely server-side mixin
Why
The original approach relied on LocalCapture.CAPTURE_FAILHARD to capture locals from inside ServerGamePacketListenerImpl.handleSignUpdate. This is brittle: any obfuscation or bytecode change in that method (or a conflicting mixin from another mod) can cause it to fail hard at startup. Targeting SignBlockEntity.updateSignText directly at HEAD requires no local capture and is far more stable across Minecraft versions and mod combinations.