Skip to content

Fix Litematica and MaLiLib compatibility for 0.6.3 - #9

Merged
ServChan merged 1 commit into
mainfrom
agent/easyplacefix-0.6.3
Jul 25, 2026
Merged

ServChan merged 1 commit into
mainfrom
agent/easyplacefix-0.6.3

Conversation

@ServChan

Copy link
Copy Markdown
Owner

What changed

  • Fixed the Easy Place crash from NoSuchMethodError when using easyplacefix with litematica on Minecraft 26.2 #5 on Minecraft 26.2 with Litematica 0.28.4 and MaLiLib 0.29.3.
  • Added a runtime compatibility adapter for both legacy IntBoundingBox#containsPos(Vec3i) and current IntBoundingBox#contains(Vec3i) APIs.
  • Resolve the placement bounding-box getter reflectively and cache the compatible containment method per runtime box class.
  • Refactored internal packages from Mixin to mixin and from the misspelled until package to util.
  • Renamed doEasyPlace to EasyPlaceHandler and updated imports plus mixin metadata consistently.
  • Bumped the project version to 0.6.3 and updated README/changelog.
  • Expanded dependency metadata to Litematica >=0.27.10 <0.29 and MaLiLib >=0.28.9 <0.30 for matching supported Minecraft builds.

Root cause

EasyPlaceFix 0.6.2 looked up IntBoundingBox#contains(BlockPos) by exact reflection signature. Both supported MaLiLib APIs actually accept Vec3i; the older API calls the method containsPos, while the relocated API calls it contains. Since BlockPos only extends Vec3i, exact Class#getMethod lookup failed with NoSuchMethodException and crashed Easy Place during class initialization.

User impact

Easy Place no longer crashes when used with the current Minecraft 26.2 Litematica/MaLiLib stack. The same source and artifact retain compatibility with the verified Minecraft 26.1.2 dependency stack.

Validation

Clean Gradle builds passed on JDK 25 for:

  • Minecraft 26.1.2, Litematica 0.27.10, MaLiLib 0.28.9
  • Minecraft 26.2, Litematica 0.28.4, MaLiLib 0.29.3

git diff --check also passes.

Resolve the Easy Place crash reported in issue #5 and reproduced with Litematica 0.28.4 / MaLiLib 0.29.3 on Minecraft 26.2.

The compatibility layer now discovers the placement bounding-box getter at runtime and accepts both containsPos(Vec3i) from the legacy API and contains(Vec3i) from the relocated API. Method matching uses assignable parameter types instead of requiring an exact BlockPos signature, and resolved methods are cached per runtime box class.

Refactor internal package names from Mixin to mixin and until to util, rename doEasyPlace to EasyPlaceHandler, and update all imports plus mixin metadata consistently.

Bump the mod to 0.6.3, broaden supported dependency metadata to Litematica >=0.27.10 <0.29 and MaLiLib >=0.28.9 <0.30, and document the verified Minecraft 26.1.2 and 26.2 dependency combinations in the README and changelog.

Validated with clean Gradle builds for Minecraft 26.1.2 and 26.2 on JDK 25.
@ServChan
ServChan merged commit a8360c9 into main Jul 25, 2026
2 checks passed
@ServChan
ServChan deleted the agent/easyplacefix-0.6.3 branch July 25, 2026 20:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant