SANDBOX — this is a test environment. No servers are actually deployed and no real payments are charged.
✓ VerifiedGameplay & overhauls

Create Collision Crashfix

by Umpa · for Minecraft

Fixes the Create 6.0.10 server crash where moving contraptions (pulley/drill quarries) throw NullPointerException "mf.axis" is null

19KDownloads
3 mo agoLast updated
MITLicense
NeoForgeLoaders

About Create Collision Crashfix

From Modrinth

Fixes the Create 6.0.10 server crash where moving contraptions (pulley/drill quarries) throw NullPointerException "mf.axis" is null

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.axis is 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 axis is null, the paired separation scalar is Double.MAX_VALUE. A non-zero fallback axis would compute axis * MAX_VALUE and fling the entity to infinity. 0 * MAX_VALUE == 0 neutralizes it cleanly — no NaN, no teleport.
  • axis and normalAxis are the only nullable Vec3 reads in collideMany (stepSeparationAxis is final and non-null; the collision* fields are primitive double), 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 clear requires 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.

Highlights

From source data

Game versions

Built for Minecraft 1.21.1.

Loaders

Runs on NeoForge.

Footprint

Rated a light load on a server.

What kind of mod it is

From the catalog
Listed on Modrinth as “Mods”

Gameplay & overhauls

New mechanics, content and overhauls that change how the game plays.

Runs on your server

From source side support

Modrinth lists Create Collision Crashfix as required on the server. Check its Modrinth page to see whether players need it too.

Compatibility

Game
Minecraft
Loaders
NeoForge
Runs on
Serverrequired on the server
Game versions
1.21.1

Verified at the source

  • ✓ModrinthOfficial listing, checked 2026-10-01Open ↗
  • ✓AuthorUmpa, as published on Modrinth
  • ✓LicenseMITFree

Create Collision Crashfix, answered

Generated from the mod’s own source data.

Do my players need to install Create Collision Crashfix?

Modrinth lists Create Collision Crashfix as required on the server. Check its Modrinth page to see whether players need it too.

Which loaders does it support?

NeoForge.

Is it free?

Yes. Create Collision Crashfix is free to download from Modrinth. Its license is MIT.

How do I add it to my Nxeon server?

Use “Add to a server” on this page, or open NxLabs from your dashboard. We install it, restart your server and switch it on.

NxLabs

Run Create Collision Crashfix on a Minecraft server.

Deploy in about a minute from $4.20 a month, then add Create Collision Crashfix in one click.