Create Collision Crashfix
No reviews yet
Fixes the Create 6.0.10 server crash where moving contraptions (pulley/drill quarries) throw NullPointerException "mf.axis" is null
Enhances game performance and optimizes resource usage.
Neoforge is a fork of the Minecraft Forge available for versions 1.20.1+ of Minecraft. Many Forge mods are compatible with Neoforge and vice versa.
Community voices
Reviews
Click once to include, again to exclude, again to clear
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
Compatibility
Supported Environments
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
Resources
External Links
About
Description
Create Collision Crashfix
A tiny, single-mixin hotfix for a server-fatal crash in Create 6.0.10 on Minecraft 1.21.1 (NeoForge).
The problem
A moving Create contraption can hard-crash the server tick loop:
java.lang.NullPointerException: Cannot read field "x" because "mf.axis" is null
at com.simibubi.create.foundation.collision.ContinuousOBBCollider.collideMany(ContinuousOBBCollider.java:153)
at com.simibubi.create.content.contraptions.ContraptionCollider.collideEntities(ContraptionCollider.java:166)
at com.simibubi.create.content.contraptions.ContraptionHandler.tick(ContraptionHandler.java:54)
Description: Exception in server tick loop
Once it happens the world usually crash-loops on load, because the offending contraption fires the same crash every tick.
When it triggers: a moving contraption's collision check hits a degenerate, zero-distance case — an entity's bounding-box center lands exactly on a contraption block's center on every axis. The most common real-world trigger is a rope pulley + drill quarry (e.g. a drill array with the pulley in the center column), but rotating bearings, tree farms with a saw, and similar setups can also hit it.
This is an upstream Create bug, present only in 6.0.10 (6.0.9 is unaffected). The official fix is Create PR #10301, milestoned for 6.0.11, which is not released yet. Downgrading to 6.0.9 is not an option for most packs because many Create addons require create >= 6.0.10.
Related upstream reports
- Issue #10218 (tracking) — https://github.com/Creators-of-Create/Create/issues/10218
- Issue #10278 —
mf.axisis null when entity AABB center coincides with contraption block center — https://github.com/Creators-of-Create/Create/issues/10278 - Issue #10344 — https://github.com/Creators-of-Create/Create/issues/10344
- Issue #10353 — https://github.com/Creators-of-Create/Create/issues/10353
- Issue #10378 — contraption collision NPE edge cases — https://github.com/Creators-of-Create/Create/issues/10378
- Issue #10479 — tree farm crashes server when loaded — https://github.com/Creators-of-Create/Create/issues/10479
- Upstream fix: PR #10301 — https://github.com/Creators-of-Create/Create/pull/10301
The fix — what changed and why it works
Inside Create's ContinuousSeparationManifold#separate, the separation axis (and normalAxis) are recorded only when the tested distance is non-zero:
if (distance != 0.0 && -diff <= Math.abs(this.separation)) {
this.axis = axis; // never runs in the degenerate, coincident-center case
this.separation = separation;
}
In a perfectly coincident overlap every separation test runs with distance == 0, so axis/normalAxis stay null. collideMany then dereferences them (mf.axis.x) and the server dies.
This mod wraps the two field reads in collideMany with a null guard (MixinExtras @WrapOperation). When the recorded axis is null, it returns Vec3.ZERO, so the degenerate collision contributes zero push for that tick instead of crashing. The next tick the entity has moved sub-voxel, a valid separation axis exists, and collision resolves normally — no stuck entities, no clipping.
@WrapOperation(
method = "collideMany",
at = @At(value = "FIELD",
target = "L.../ContinuousOBBCollider$ContinuousSeparationManifold;axis:Lnet/minecraft/world/phys/Vec3;",
opcode = Opcodes.GETFIELD),
remap = false)
private static Vec3 guardAxis(@Coerce Object manifold, Operation<Vec3> original) {
Vec3 value = original.call(manifold);
return value == null ? Vec3.ZERO : value; // same for normalAxis
}
Why Vec3.ZERO specifically, and why it's safe:
- When
axisis null, the pairedseparationscalar isDouble.MAX_VALUE. A non-zero fallback axis would computeaxis * MAX_VALUEand fling the entity to infinity.0 * MAX_VALUE == 0neutralizes it cleanly — no NaN, no teleport. axisandnormalAxisare the only nullableVec3reads incollideMany(stepSeparationAxisisfinaland non-null; thecollision*fields are primitivedouble), so this covers every null-deref site in the method.- The guard activates only on the null/degenerate path. Every normal collision is byte-for-byte unchanged.
The fix mirrors the intent of upstream PR #10301; it is deliberately surgical so it cannot affect non-degenerate physics.
Compatibility
- Minecraft 1.21.1 · NeoForge 21.1.x
- Create 6.0.10 only. The mod is hard-pinned to
create [6.0.10]. On any other Create version it refuses to load with a clearrequires create [6.0.10]message — which is your reminder to remove it once Create 6.0.11 (with the official fix) is out. - Install on both client and server (versions must match).
- No mixin into addon classes — it only guards two field reads inside Create core, so it coexists with addons that mixin
ContraptionCollider(Create Big Cannons, Aeronautics, Sable, etc.).
License
MIT. Ships no Create code — just a mixin and metadata.
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers
Statistics
Resources