Commit graph

2309 commits

Author SHA1 Message Date
BruceChen
f0b79d5f9c feat: enhance MCC runtime management with dynamic launcher detection and improved error handling 2026-04-12 20:35:02 +00:00
BruceChen
0514fcb327 feat: implement parkour admissibility hardening with new feasibility checks 2026-04-12 18:43:33 +00:00
BruceChen
a5f772c4d4 chore: update .gitignore to include third-party source code reference files 2026-04-12 18:43:33 +00:00
BruceChen
52a2dbe31b feat: add automated parkour jump test and transition braking validation scripts 2026-04-12 18:43:33 +00:00
BruceChen
8170e11e14 feat: add Minecraft Jump Reachability Simulator for analyzing player jump physics 2026-04-12 18:43:33 +00:00
BruceChen
594e467da6 docs: add difficulty setting for AI-driven offline testing 2026-04-12 18:43:33 +00:00
BruceChen
a3822c7700 feat: add VSCode tasks for building, publishing, and watching MinecraftClient project 2026-04-12 18:43:33 +00:00
BruceChen
14c5bc7f77 test: add descend live regression smoke 2026-04-12 18:43:33 +00:00
BruceChen
6e4cf4a10e fix: stabilize descend landings after braking 2026-04-12 18:43:33 +00:00
BruceChen
33ff02042c test: add corner ascend live smoke 2026-04-12 18:43:33 +00:00
BruceChen
4b92781d10 fix: brake landing recovery before turns 2026-04-12 18:43:33 +00:00
BruceChen
0e0fc06b72 feat: tighten parkour reliability checks 2026-04-12 18:43:33 +00:00
BruceChen
6b449cc72a feat: converge grounded path segment completion 2026-04-12 18:43:33 +00:00
BruceChen
3b4e552d70 feat: add transition-aware path execution braking 2026-04-12 18:43:33 +00:00
BruceChen
945eae958a docs: add slab support scheme two design spec 2026-04-12 18:43:33 +00:00
BruceChen
00494078df fix: parkour diagonal flight path, wall-adjacent parkour, sprint descend checks
- MoveParkour: replace full-rectangle intermediate check with diagonal
  strip check (CheckFlightPath) so walls outside the actual flight
  corridor no longer block valid parkour jumps.
- MoveParkour: require both cardinal neighbors passable for diagonal
  parkour takeoff; a wall on either side clips the AABB and prevents
  reaching the target.
- MoveSprintDescend: replace full-rectangle check with explicit
  per-axis intermediate column check.
- SprintJumpTemplate: track diagonal jumps and skip approach delay for
  short diagonal jumps to avoid overshooting small starting platforms.

Made-with: Cursor
2026-04-12 18:43:33 +00:00
BruceChen
9e6b689dd6 feat: add corner walk, sprint descend, and parkour descend moves
- MoveDiagonal: allow single-side-blocked diagonals (corner walk) so
  the bot can hug an open side to cut around a wall; both-sides-blocked
  remains impossible. Walk-speed cost when one side is blocked.
- MoveSprintDescend: sprint off a ledge covering 2 horizontal blocks
  while dropping 1-3 blocks. Registered for cardinal and diagonal
  offsets.
- MoveParkour: support negative yDelta (-1, -2) for descending parkour
  where the bot sprint-jumps across a gap and lands on a lower
  platform. Registered cardinal (dist 2-4, y-1/-2) and diagonal
  variants.
- DescendTemplate: sprint when horizontal distance > 1.5 blocks.
- SprintJumpTemplate: increase vertical landing tolerance for descend.

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
285c3000c3 feat: add diagonal ascend/descend moves, fix pitch, smooth look angles
- Add MoveDiagonalAscend and MoveDiagonalDescend for "corner" moves:
  step diagonally around a wall edge while ascending/descending 1 block.
  Requires at least one intermediate cardinal direction to be passable.

- Fix pitch calculation: look toward target's eye level (same height
  delta as feet delta) instead of subtracting eye height, which caused
  the player to stare at the ground during flat walks.

- Add Yaw/Pitch smoothing via SmoothYaw/SmoothPitch in TemplateHelper.
  Max 35 deg/tick for yaw, 25 deg/tick for pitch. Prevents instant
  camera snaps between path segments while still being responsive
  enough for sprint-jumps and tight maneuvers.

- Apply smoothing to all five action templates (Walk, Ascend, Descend,
  Climb, SprintJump).

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
399c8cdc79 fix: remove spurious jump on vines in WalkTemplate and add pitch tracking
- WalkTemplate: remove OnClimbable jump/sprint logic that caused the
  player to jump when walking past vine blocks during flat traversal
- TemplateHelper: add CalculatePitch() for computing the look angle
  toward a 3D target relative to eye height
- All templates (Walk, Ascend, Descend, Climb, SprintJump): set
  physics.Pitch each tick so the player visually looks toward the
  current path target direction
- McClient: sync playerPitch and set _yaw/_pitch after pathfinding
  ticks so rotation is included in position update packets sent to
  the server

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
9046c61f95 fix: improve vine/ladder climb-down and descent through climbable blocks
- ClimbTemplate: add explicit descent handling with horizontal drift
  correction instead of relying on no-input gravity alone
- DescendTemplate: on climbable blocks, suppress Forward input to
  prevent HorizontalCollision-triggered upward bumps, allowing gravity
  to slide the player down naturally
- MoveClimb: restrict climb-up past the top of a climbable column --
  only allow if there is solid ground to stand on at destination,
  preventing impossible vine-top exits where the player would fall back

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
fb30886756 fix: handle climbable blocks in WalkTemplate to prevent stuck on ladders
WalkTemplate now detects when physics.OnClimbable is true (player entering
a ladder/vine block) and switches from Sprint to Jump input, with extended
stuck detection thresholds. This prevents the template from failing when
the path walks through climbable blocks.

Tested on 1.21.11: all movement types pass (walk, diagonal, ascend, descend,
climb, parkour 2-4 gap, mixed courses with direction changes).

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
8ece75acc3 feat: complete Phase 4 McClient integration for A* pathfinding
- Fix MoveHelper.IsOpenGate: MangroveWood -> MangroveFenceGate
- Fix ResetStateForTransfer to cancel and clear pathSegmentManager
- Fix GetCurrentMovementGoal to return correct goal during A* navigation
- Fix SetMovementSpeed(Sneak) speed value consistency (2 -> 1)
- Migrate /pathfind command to use MoveToAStar + PathSegmentManager
- Add NavigateToGoal(IGoal) to McClient for flexible goal navigation
- Refactor MoveToAStar to delegate to NavigateToGoal
- Add ChatBot API: NavigateTo, CancelMovement, GetCurrentMovementGoal
- Expose PathSegmentManager.Goal property for external goal inspection

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
53082d387e feat: add 4-block jumps, diagonal parkour, high-fall water/ladder support
MoveParkour rewritten to support both cardinal and diagonal sprint jumps
with unified (xOff, zOff) interface. New capabilities:

- 4-block cardinal sprint jumps with edge-approach timing in template
- Diagonal parkour: (2,1), (1,2), (2,2), (3,1), (1,3) in all quadrants
- Ascending parkour extended to dist=3 (cardinal)
- Overshoot safety check after landing destination
- Block parkour from climbable starting blocks (vine/ladder)

MoveDescend/MoveFall enhanced with Baritone-style dynamic fall scanning:
- Water landing: accepts falls of any height into water
- Mid-fall ladder/vine grab: resets effective fall height (<=11 blocks)
- CalculationContext gains MaxFallHeightWater, AllowLadderGrabDuringFall

SprintJumpTemplate gains distance-based approach timing:
- Long jumps (>=3.5 blocks): delays jump until 0.5 blocks from center
- Medium jumps (>=2.5): 0.35 blocks approach
- Landing tolerance scales with jump distance

All movements verified on 1.21.11 local server.

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
a9c9a6a669 fix: set movement input before completion check to maintain sprint momentum
Templates now set Forward/Sprint input before checking completion
conditions. This prevents a 1-tick input gap during template transitions
that caused the player to lose sprint speed, making parkour jumps fail
due to insufficient horizontal velocity.

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
034c5d0cab fix: correct collision axis ordering and step-up threshold to match vanilla
Two bugs in CollisionDetector caused persistent Y-axis bouncing (0.6 block
oscillation) while walking on flat ground:

1. GetAxisStepOrder used a complex 6-branch sorting that often placed
   horizontal axes before Y. Vanilla's Direction.Axis.axisStepOrder always
   resolves Y first, then the larger horizontal axis. Replaced with the
   simple two-case vanilla logic.

2. The horizontal-blocked checks (blockedX/blockedZ) used exact != which
   triggered on floating-point noise (~1e-15) from sin/cos in movement
   input. Vanilla uses Mth.equal (1e-5 threshold). This false positive
   caused step-up to fire every few ticks on flat terrain.

Also includes DescendTemplate robustness fixes from the previous session
(fail on unintended climbing, suppress forward input on climbable blocks).

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
4b49135107 feat: add parkour moves and template-based path execution system
Phase 2.2: MoveParkour for sprint-jump across 1-2 block gaps (distance 2-3)
and ascending parkour (distance 2, +1Y). Registered in BuildDefaultMoves
with CalculationContext.AllowParkour gating.

Phase 3.1-3.2: Template execution engine replacing the waypoint queue system.
- IActionTemplate interface with per-tick state machine pattern
- Templates: Walk, Ascend, Descend, Climb, Fall, SprintJump
- ActionTemplateFactory maps MoveType to the correct template
- PathExecutor drives sequential template execution with logging
- PathSegmentManager handles replanning on failure (up to 5 retries)
- McClient integration: MoveToAStar now creates PathSegmentManager,
  UpdatePathfindingInput delegates to it, CancelMovement/ClientIsMoving
  updated for both old and new systems.

Tested on 1.21.11: straight walk, zigzag maze, stair ascent,
1-gap and 2-gap sprint jumps all pass.

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
2d4f1fa677 fix: improve waypoint execution with look-ahead and vertical jump handling
Refactor movement tick into AdvanceWaypoint(), add look-ahead logic that
detects vertical-only waypoints and merges to the next horizontal waypoint
early to handle ladder-to-platform transitions, and add jump input when
horizontally aligned but needing to reach a higher Y level.

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
a6261e4019 fix: improve pathfinding execution for climbing and block classification
- Fix MoveHelper.CanWalkThrough to treat climbable blocks (ladders, vines)
  as passable, not solid -- MCC's IsSolid() incorrectly classifies them
- Fix MoveHelper.CanWalkOn to exclude climbable blocks from ground check
- Add fence gate passability in MoveHelper
- Fix start position calculation in MoveToAStar to handle solid-block
  floor rounding (player at y=79.9 → floor y=79 inside solid)
- Fix ReachedWaypoint to require vertical proximity for climb waypoints,
  preventing premature waypoint consumption during ladder ascent
- Fix SetInputToward to handle ladder climbing with Jump input and proper
  wall-facing when OnClimbable

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
77c5f88168 feat: add /goto command with A* pathfinder integration and MoveFall
- Add MoveFall move for straight-down falls beyond MoveDescend range
- Register MoveFall in default move set
- Create /goto command using new A* pathfinder
- Add MoveToAStar() method to McClient bridging A* results to existing
  path execution system (Queue<Location> + UpdatePathfindingInput)
- Add translation entries for goto command

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
deb1bc47cc refactor: clean up debug logging in pathfinder and pathfind command
Remove verbose per-node insertion tracking from A*. Keep essential
logging: start, goal reached, partial/failed results. Clean up
pathfind command with exception handling and cleaner output.

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
e9b19d3cbb fix: correct PathNode.Pack bit overlap causing hash collisions
The X and Z fields shared bit 36, causing nodes like (1,80,0)
and (0,80,0) to hash to the same value. Fixed by using proper
non-overlapping bit allocation: X in bits 38-63, Z in bits 12-37,
Y in bits 0-11. Added diagnostic logging to pathfind command.

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
1abab20f17 feat: add Phase 1 core pathfinding architecture
Implements the new Baritone-inspired A* pathfinding system:
- Core types: PathNode, PathResult, MoveResult, MoveType, ActionCosts
- BinaryHeapOpenSet min-heap for A* open set
- AStarPathFinder with timeout, cancellation, partial path support
- CalculationContext for thread-safe world state snapshots
- MoveHelper for block passability checks
- IGoal interface + GoalBlock, GoalXZ, GoalNear, GoalComposite
- IMove interface + MoveTraverse, MoveDiagonal, MoveAscend, MoveDescend, MoveClimb
- /pathfind command for testing the new pathfinder

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
3efe63c54d feat: add pose system, slime block bounce, and crawling to physics engine
Implement the three Phase 0 prerequisites for the pathfinding rewrite:

- Pose system (vanilla Player.updatePlayerPose): dynamic AABB height based
  on current pose -- Standing (1.8), Sneaking (1.5), Swimming/Crawling (0.6).
  Automatically downgrades pose when headroom is insufficient (Standing ->
  Sneaking -> Swimming), matching vanilla 1.14+ forced-crawl behavior.

- Slime block bounce (vanilla SlimeBlock.bounceUp / stepOn): reverses
  downward velocity on landing, with sneaking suppression via
  isSuppressingBounce(). Also applies the horizontal slowdown effect
  from SlimeBlock.stepOn when walking on slime with low vertical velocity.

- Per-pose dimension constants in PhysicsConsts with eye heights for each
  pose, sourced from vanilla Avatar.POSES (26.1 decompiled).

- Debug logging for pose transitions, slime bounces, and periodic physics
  state dumps routed through McClient's ILogger.

Tested on a real 1.21.11 server: crawling triggers correctly under 1-block
ceilings, sneaking under 1.5-block ceilings, slime bounce produces correct
decaying oscillation, and pose recovery works when obstacles are removed.

Made-with: Cursor
2026-04-12 18:43:32 +00:00
BruceChen
4013d39068
[skipci] Merge pull request #3078 from BruceChenQAQ/bruce/shared-server-mcc-sessions
Add MCC wrappers and guards for build and publish
2026-04-13 02:39:32 +08:00
BruceChen
ab29180e39 Add MCC wrappers and guards for build and publish 2026-04-12 18:37:03 +00:00
BruceChen
248a7a2f6f
Merge pull request #3077 from BruceChenQAQ/bruce/shared-server-mcc-sessions
tools: isolate MCC sessions while sharing local servers
2026-04-12 23:51:25 +08:00
BruceChen
8e0db1402f chore: remove remaining CursorBot references 2026-04-12 23:43:54 +08:00
BruceChen
ca5c9f73e3 docs: describe shared server MCC sessions 2026-04-12 23:33:59 +08:00
BruceChen
af285866dc tools: harden shared server session workflow 2026-04-12 23:33:45 +08:00
BruceChen
b665ebfeac Add session-scoped dual-session smoke test and harness updates 2026-04-12 20:46:39 +08:00
BruceChen
e4d71d970b Make tmpfs dotnet env wrapper bash-3 compatible 2026-04-12 20:21:59 +08:00
BruceChen
0a041b37c5 Add worktree-isolated tmpfs build outputs 2026-04-12 20:07:15 +08:00
BruceChen
e0752d8d98 tools: harden task3 session debug scripts 2026-04-12 19:57:54 +08:00
BruceChen
0519eac4a8 tools: run file-input debug sessions in tmux 2026-04-12 19:47:36 +08:00
BruceChen
bf292ea1be tools: scope mcc debug runtime artifacts by session 2026-04-12 19:38:53 +08:00
BruceChen
afee31e918 Ensure mcc-cmd handles unquoted multi-token commands 2026-04-12 19:26:32 +08:00
BruceChen
e03b7de959 Preserve full command in mcc-cmd and broaden tests 2026-04-12 19:25:25 +08:00
BruceChen
1be001bdf8 Fix session parser robustness and test assertion 2026-04-12 19:21:07 +08:00
BruceChen
4c6d5b566b Make MCC helpers session-aware and add reset test 2026-04-12 19:10:00 +08:00
BruceChen
d9c6826443 tools: fix tmpfs build root test 2026-04-12 19:04:38 +08:00