Skip to content

Release 11.0.0: production fixes, API cleanup, simplification - #1

Merged
iam4722202468 merged 1 commit into
masterfrom
release/11.0.0
Oct 22, 2026
Merged

iam4722202468 merged 1 commit into
masterfrom
release/11.0.0

Conversation

@iam4722202468

Copy link
Copy Markdown
Member

Summary

  • Production fixes: searches near unloaded chunks no longer throw (PathStop.TERRAIN_UNLOADED); block-change notifications are per-instance and applied on the controller's tick thread; close() keeps a finished outcome.
  • Breaking API cleanup: controllers come only from NavigationSystem.controller(...) / controllerBuilder(...); DiscreteGroundPathfinder, GroundSearchLimits and compatibility overloads removed; EntityTargets and SpliceCounts are exported; -Xlint:exports -Werror guards the module boundary.
  • Simplification: duplicated collision/footprint/route-length/latency/validation code consolidated into shared helpers; imports and test fixtures cleaned up.

Version bumped to 11.0.0 (major, because public API was removed). Merging publishes it via the Release workflow.

Test plan

  • ./gradlew build locally: 605 tests pass, javadoc, examples, published-Minestom compile check
  • JMH sources compile
  • New WorldBoundaryE2ETest, close/builder tests
  • CI Build workflow

🤖 Generated with Claude Code

Production fixes:
- Searches read unloaded chunks as solid instead of throwing; a search
  walled in by unloaded terrain reports the new PathStop.TERRAIN_UNLOADED
  rather than claiming the target unreachable.
- Block-change notifications are filtered by instance and applied on the
  controller's own tick, so edits in other instances or threads no longer
  replan unrelated routes or fire events off the ticking thread.
- close() keeps a finished navigation's outcome instead of re-reporting it
  as cancelled.

API (breaking):
- Controllers are created only through NavigationSystem.controller(Entity)
  or the new controllerBuilder(Entity); the public constructors and
  builtin() factories, which bypassed admission control, are removed.
- Removed DiscreteGroundPathfinder and GroundSearchLimits; search with
  EntityPathfinder and a NavigationRequest.
- Removed notifyBlockChanged(Point), TerrainType.defaultMalus(), the
  compatibility constructors on PathNode, NavigationPlan,
  EntityTraversalState and AsyncEntityPathfindingService.
- TerrainClassifier is a static utility.
- EntityTargets moves to the root package; spliceCounts() returns the
  exported metrics.SpliceCounts. The main compile fails on any exported
  signature that names a non-exported type.

Cleanup:
- Shared helpers replace duplicated collision, footprint, route-length,
  search-latency, rail, validation and budget code.
- Imports normalised across the tree; tests share TestWorlds and
  GroundSearches fixtures; builder chains no longer restate defaults.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@iam4722202468
iam4722202468 merged commit 816c7b8 into master Oct 22, 2026
1 check passed
@iam4722202468
iam4722202468 deleted the release/11.0.0 branch October 22, 2026 22:11
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