Freedom Lib

Self-rescue and tunneling primitives for modded mob AI. Unstuck any mob from pits, aquifers, or corners; controlled block-by-block digging via composable Steps. Ships one hidden climb-scaffold with a 15s self-destruct fuse. Standalone logic library.

File Details

freedom-0.5.1.jar

  • R
  • Jun 10, 2026
  • 203.05 KB
  • 5
  • 1.21.1
  • NeoForge

File Name

freedom-0.5.1.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:freedom-lib-1529212:8224369"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Freedom v0.1.30 → v0.5.1 — Changes Writeup

Big version jump — 21 minor releases. Three major themes: (1) Freedom's first registered block, (2) two new primitives, (3) substantial API expansion for ZV's nav-rollout work. Plus safety polish across the existing primitive family.


Headline changes

A new block: freedom:climb_scaffold (v0.2.0)

For the first time, Freedom registers a real block — ClimbScaffoldBlock. Hidden, non-obtainable, no item, no recipe, no creative tab. It's a ladder-climbable, non-brittle scaffold look-alike that the ScaffoldStack primitive now places instead of vanilla scaffolding. Mobs actually climb it.

Follow-up polish:

  • v0.2.1 — fixed a "bounce on column top" where the jump-drive over-fired at the top of the climb
  • v0.2.2 — added an unconditional 15-second self-destruct fuse so orphaned columns never leak

The whole point: vanilla scaffolding has annoying physics (auto-breaks on non-sturdy support, has a distance property, gets targeted by mob break-obstacle AI). The custom block doesn't.

Two new primitives

ReachAssistPrimitive (v0.3.0) — caller-direct climb-to-elevated-target. Sits between JumpAssist (deltaY==2 single-cobble) and ClimbAssist (deltaY≥3 cobble column). Designed for host-controlled use cases where the host knows exactly which target to reach toward.

WallTraversePrimitive (v0.5.1) — over-the-wall traverse. The newest primitive, addressing ZV nav-rollout GAP 1. Designed for "mob on one side of a wall, target on the other" scenarios that the existing climb primitives don't handle cleanly.

API surface expansion (v0.4.0 + v0.5.0)

These are the changes consumers care about most because they alter API contracts:

  • DigUp / DigForward fill-block overload (v0.4.0) — these primitives now accept a fill block (default cobble). Lets callers pick what gets placed during dig operations.
  • ClimbAssist + JumpAssist migrated (v0.4.0) — both now place climb_scaffold instead of cobble. Consumers see the new climbable block in the world instead of cobble columns.
  • RescueRegistry.tryPlacementOnly + EscapePrimitive.isDestructive (v0.5.0, GAP 4) — host can now ask the registry to only consider non-destructive primitives. Used by ZV when it wants nav assistance without risking block breaks.
  • ScaffoldColumns.countColumnsNear (v0.5.0, GAP 3) — anti-herd query so multiple stuck mobs don't pile columns on top of each other.
  • EscapeContext.maxColumnTopY (v0.5.0, GAP 2) — caller-supplied cap on how high a column primitive will build. ScaffoldStack honors it. Useful for caves where you don't want columns punching through the ceiling.

Polish, safety, and test hardening

v0.1.31 — Bundle 2-5 + doc drift

  • RescueRegistry → CopyOnWriteArrayList (F-CONC-003) — concurrency-safe registry mutation. Prevents iterator-mid-modification races if a primitive ever registers from a non-main thread.
  • Family-uniform null guards — Objects.requireNonNull(mob) on older primitives that didn't have it; Objects.requireNonNull for negative cap params on tryStep family.
  • StuckDetector.isStuck null-guard symmetry — both sides handle null consistently now.
  • ClimbAssist destroyContiguousDownward isLoaded guard — family parity with the other column-tearer primitives; prevents accessing unloaded chunks during cleanup.
  • LavaPillar ServerLevel guard — same family-parity safety.
  • BreakBlock BE-guard — block-entity check before destroy.
  • SuffocationDig + LavaPillar protection-veto gametests — closes test gaps; the protection contract is now enforced and tested across all destructive primitives.
  • 5 legacy gametests strengthened with explicit post-state assertions.
  • Doc drift fixes — DigUp PROTECTED javadoc + SealAdjacent 7-arg overload corrections.

v0.1.32 — Bundle 6 perf

  • MutableBlockPos in scan loops — replaces per-iteration BlockPos allocation in Scaffold + ClimbAssist tower scans. Real GC reduction in hot paths.
  • Freedom.shouldLogAction predicate — lazy details-string guard so telemetry doesn't pay the formatting cost when rate-limited.
  • LiquidProbe @Nullable return + static Direction[] — cuts an allocation per call.
  • PrimitiveDefaults centralization — pulled family-duplicated default constants into one helper.

Per-version table

Version Tag Headline
0.1.31 v0.1.31-bundles-2-5 Safety + concurrency hardening across the family; doc drift fixes
0.1.32 v0.1.32-bundle-6-perf Per-tick allocation reduction in Scaffold + ClimbAssist; lazy log-formatting
0.2.0 v0.2.0-climb-scaffold New: freedom:climb_scaffold block. ScaffoldStack places climbable scaffold instead of vanilla scaffolding
0.2.1 v0.2.1-climb-bounce-fix Fix: jump-drive bounce on climb-scaffold column top
0.2.2 v0.2.2-climb-fuse New: unconditional 15s self-destruct fuse on climb_scaffold blocks
0.3.0 v0.3.0-reach-assist New primitive: ReachAssistPrimitive — caller-direct climb-to-elevated-target
0.4.0 v0.4.0-climb-scaffold-migration ClimbAssist + JumpAssist migrate to place climb_scaffold; DigUp/DigForward fill-block param added
0.5.0 v0.5.0-zv-nav-rollout API: tryPlacementOnlyisDestructivemaxColumnTopYScaffoldColumns.countColumnsNear (GAPs 4/3/2)
0.5.1 v0.5.1-wall-traverse New primitive: WallTraversePrimitive — over-the-wall traverse (GAP 1)