Minecraft-Console-Client/MinecraftClient/Pathing/Core/EntryPreparationState.cs
BruceChen da52aa5c3c pathing: sidewall runup precondition via EntryPreparation
Introduce an EntryPreparationState carried on PathNode + A* context so
sidewall parkour can explicitly request one or more runway traverses
before takeoff instead of silently dropping the move. ParkourFeasibility
gains TryGetRequiredStaticEntryRunupSteps + HasPreparedRunup helpers so
long descends (major=5, dy=-1) only remain feasible when the preceding
node proved the runup.

Widen HasDominantAxisRunUp to accept cold-start sprint-jumps within
~3.1-3.5 blocks horizontally so lone overhang / staircase takeoffs stay
feasible without a 2-block runway (matches Baritone's MomentumBehavior
.ALLOWED contract).

Add a runtime SidewallParkourController that implements the corner
commitment + wall-hug chain during execution.

Extend pathing test fixtures with InitialMomentumTicks, add sidewall
accepted/rejected scenarios, and refresh timing + contract baselines to
reflect the new planner shapes. Document the design in
docs/superpowers/specs and plans.

Made-with: Cursor
2026-04-19 17:03:03 +00:00

29 lines
885 B
C#

namespace MinecraftClient.Pathing.Core
{
public readonly record struct EntryPreparationState(
EntryPreparationKind Kind,
int OriginX,
int OriginY,
int OriginZ,
int ForwardX,
int ForwardZ,
byte RequiredSteps,
byte BackwardSteps,
byte ReturnSteps)
{
public static EntryPreparationState None => default;
public bool IsNone => Kind == EntryPreparationKind.None;
public bool IsPrepared =>
Kind != EntryPreparationKind.None &&
BackwardSteps == RequiredSteps &&
ReturnSteps == RequiredSteps;
public EntryPreparationState AdvanceBackward() =>
this with { BackwardSteps = (byte)(BackwardSteps + 1) };
public EntryPreparationState AdvanceReturn() =>
this with { ReturnSteps = (byte)(ReturnSteps + 1) };
}
}