Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
3efe63c
feat: add pose system, slime block bounce, and crawling to physics en…
BruceChenQAQ Apr 10, 2026
1abab20
feat: add Phase 1 core pathfinding architecture
BruceChenQAQ Apr 10, 2026
e9b19d3
fix: correct PathNode.Pack bit overlap causing hash collisions
BruceChenQAQ Apr 10, 2026
deb1bc4
refactor: clean up debug logging in pathfinder and pathfind command
BruceChenQAQ Apr 10, 2026
77c5f88
feat: add /goto command with A* pathfinder integration and MoveFall
BruceChenQAQ Apr 10, 2026
a6261e4
fix: improve pathfinding execution for climbing and block classification
BruceChenQAQ Apr 10, 2026
2d4f1fa
fix: improve waypoint execution with look-ahead and vertical jump han…
BruceChenQAQ Apr 10, 2026
4b49135
feat: add parkour moves and template-based path execution system
BruceChenQAQ Apr 11, 2026
034c5d0
fix: correct collision axis ordering and step-up threshold to match v…
BruceChenQAQ Apr 11, 2026
a9c9a6a
fix: set movement input before completion check to maintain sprint mo…
BruceChenQAQ Apr 11, 2026
53082d3
feat: add 4-block jumps, diagonal parkour, high-fall water/ladder sup…
BruceChenQAQ Apr 11, 2026
8ece75a
feat: complete Phase 4 McClient integration for A* pathfinding
BruceChenQAQ Apr 11, 2026
fb30886
fix: handle climbable blocks in WalkTemplate to prevent stuck on ladders
BruceChenQAQ Apr 11, 2026
9046c61
fix: improve vine/ladder climb-down and descent through climbable blocks
BruceChenQAQ Apr 11, 2026
399c8cd
fix: remove spurious jump on vines in WalkTemplate and add pitch trac…
BruceChenQAQ Apr 11, 2026
285c300
feat: add diagonal ascend/descend moves, fix pitch, smooth look angles
BruceChenQAQ Apr 11, 2026
9e6b689
feat: add corner walk, sprint descend, and parkour descend moves
BruceChenQAQ Apr 11, 2026
0049407
fix: parkour diagonal flight path, wall-adjacent parkour, sprint desc…
BruceChenQAQ Apr 11, 2026
945eae9
docs: add slab support scheme two design spec
BruceChenQAQ Apr 12, 2026
3b4e552
feat: add transition-aware path execution braking
BruceChenQAQ Apr 12, 2026
6b449cc
feat: converge grounded path segment completion
BruceChenQAQ Apr 12, 2026
0e0fc06
feat: tighten parkour reliability checks
BruceChenQAQ Apr 12, 2026
4b92781
fix: brake landing recovery before turns
BruceChenQAQ Apr 12, 2026
33ff020
test: add corner ascend live smoke
BruceChenQAQ Apr 12, 2026
6e4cf4a
fix: stabilize descend landings after braking
BruceChenQAQ Apr 12, 2026
14c5bc7
test: add descend live regression smoke
BruceChenQAQ Apr 12, 2026
a3822c7
feat: add VSCode tasks for building, publishing, and watching Minecra…
BruceChenQAQ Apr 12, 2026
594e467
docs: add difficulty setting for AI-driven offline testing
BruceChenQAQ Apr 12, 2026
8170e11
feat: add Minecraft Jump Reachability Simulator for analyzing player …
BruceChenQAQ Apr 12, 2026
52a2dbe
feat: add automated parkour jump test and transition braking validati…
BruceChenQAQ Apr 12, 2026
a5f772c
chore: update .gitignore to include third-party source code reference…
BruceChenQAQ Apr 12, 2026
0514fcb
feat: implement parkour admissibility hardening with new feasibility …
BruceChenQAQ Apr 12, 2026
f0b79d5
feat: enhance MCC runtime management with dynamic launcher detection …
BruceChenQAQ Apr 12, 2026
2b8a811
refactor: update MCC commands and documentation to use version 1.21.1…
BruceChenQAQ Apr 12, 2026
31c968f
chore: remove redundant comment from MCC debug script for clarity
BruceChenQAQ Apr 12, 2026
d2b2799
refactor: update decompilation process and documentation to use versi…
BruceChenQAQ Apr 12, 2026
7ad0a57
docs: add theory-aligned pathing regression design
BruceChenQAQ Apr 13, 2026
360883a
feat: add transition-aware path execution core
BruceChenQAQ Apr 13, 2026
b0fab26
test: add pathing transition regression coverage
BruceChenQAQ Apr 13, 2026
aefc723
test: add zero-replan live pathing harness
BruceChenQAQ Apr 13, 2026
9fe376a
Add pathing contract loader validation scaffold
BruceChenQAQ Apr 13, 2026
b9bff02
Add path execution telemetry and scenario runner
BruceChenQAQ Apr 13, 2026
ba1dc32
test: lock short route planner and timing contracts
BruceChenQAQ Apr 13, 2026
eb9d6ce
test: add jump combo planner and timing contracts
BruceChenQAQ Apr 13, 2026
b42a24e
test: add long route timing contracts
BruceChenQAQ Apr 13, 2026
4b193e6
test: add pathing contract report parser
BruceChenQAQ Apr 14, 2026
be6be4d
test: surface path timing contracts in live harness
BruceChenQAQ Apr 14, 2026
07c948a
docs: document pathing contract metrics workflow
BruceChenQAQ Apr 14, 2026
7fbb32d
feat: extract reusable pathing theory generator
BruceChenQAQ Apr 14, 2026
ef3cd64
feat: generate theory-aligned pathing artifacts
BruceChenQAQ Apr 14, 2026
7d3ce42
feat: add theory-to-live pathing report
BruceChenQAQ Apr 14, 2026
e4fc557
test: tune canonical live case selection
BruceChenQAQ Apr 14, 2026
84a452d
test: make linear pathing suite manifest-driven
BruceChenQAQ Apr 14, 2026
51a96da
test: tune theory headhitter case selection
BruceChenQAQ Apr 14, 2026
f065d62
test: add theory-aligned neo and ceiling suite
BruceChenQAQ Apr 14, 2026
2f65594
docs: document theory-aligned pathing workflow
BruceChenQAQ Apr 14, 2026
2d8c8b2
refactor: replace CursorBot references with MCCBot in pathing scripts…
BruceChenQAQ Apr 14, 2026
e271854
docs: add jump-entry direct yaw design
BruceChenQAQ Apr 15, 2026
2be9b28
pathing: snap yaw for sprint jump approach
BruceChenQAQ Apr 15, 2026
8408a41
pathing: snap yaw for jump-ready grounded handoffs
BruceChenQAQ Apr 15, 2026
aad6ad8
pathing: snap yaw only for grounded jump-entry walk states
BruceChenQAQ Apr 15, 2026
ce555da
pathing: align prepare-jump convergence tests
BruceChenQAQ Apr 15, 2026
cf8bf34
pathing: align parkour contracts with live budgets
BruceChenQAQ Apr 15, 2026
418f17b
pathing: add side-wall theory, full-coverage parkour test suite, and …
BruceChenQAQ Apr 15, 2026
ddb0ca9
test-harness: isolate parkour cases per session
BruceChenQAQ Apr 17, 2026
8917636
pathing: align linear completion with live execution
BruceChenQAQ Apr 17, 2026
d919bff
pathing: tighten linear parkour execution
BruceChenQAQ Apr 18, 2026
4aa7637
test-harness: add parkour worker pool
BruceChenQAQ Apr 18, 2026
6cc4c6a
test: harden integration harness cleanup and spill handling
BruceChenQAQ Apr 18, 2026
056d7af
test: add sidewall scenario builder fixtures
BruceChenQAQ Apr 18, 2026
43db395
test: complete sidewall fixture matrix
BruceChenQAQ Apr 18, 2026
f64c6be
test: harden sidewall fixture coverage
BruceChenQAQ Apr 18, 2026
b4b0c6e
refactor: thread parkour profile into runtime segments
BruceChenQAQ Apr 18, 2026
724880f
fix: propagate parkour profiles through astar
BruceChenQAQ Apr 18, 2026
e23037a
feat: add sidewall parkour planner support
BruceChenQAQ Apr 18, 2026
95b20d9
pathing: async replan + template success/failure alignment
BruceChenQAQ Apr 19, 2026
da52aa5
pathing: sidewall runup precondition via EntryPreparation
BruceChenQAQ Apr 19, 2026
d002930
pathing: unify jump moves into MoveJump + IMoveExpander
BruceChenQAQ Apr 19, 2026
5de169d
pathing: stabilize 0-replan round-trip on ledge/descend runs
BruceChenQAQ Apr 22, 2026
8ec1ccd
pathing: 0-replan on long Descend->Traverse + cold-start 5 c2c
BruceChenQAQ Apr 25, 2026
1c2e6fb
pathing: tighten diagonal step-descend and Descend-carry runway
BruceChenQAQ Apr 25, 2026
b35cdfc
pathing: route Descend->turn handoff through LandingRecovery hints
BruceChenQAQ Apr 26, 2026
512693d
pathing: relax cardinal sprint-jump side and overshoot gates
BruceChenQAQ Apr 26, 2026
c1831b2
pathing: lock Descend air-yaw and shortcut Ascend->Turn landing
BruceChenQAQ Apr 27, 2026
3a82914
pathing: narrow Ascend post-landing shortcut to Turn exits only
BruceChenQAQ Apr 27, 2026
f7d9a80
pathing: fix long-descend water drift and offload PathDiag to background
BruceChenQAQ Apr 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -444,3 +444,6 @@ server.pid

# Crowdin translation automation working directory
/.crowdin-translate/

# Third-party source code reference files
ThirdpartyReference/
42 changes: 21 additions & 21 deletions .skills/mcc-dev-workflow/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Use this skill when the task needs a real local server loop, not just code readi
- Runtime target: `.NET 10` / `net10.0`
- Environment: Linux, macOS, or WSL with Java, tmux, python3, and dotnet available
- Default server root after `source tools/mcc-env.sh`: `${MCC_SERVERS:-<repo>/MinecraftOfficial/downloads}`
- Default validation target when the user does not specify a version: `1.21.11`
- Default validation target when the user does not specify a server directory: `1.21.11-Vanilla`

## Console modes

Expand Down Expand Up @@ -51,13 +51,13 @@ Two worktrees can debug against one shared server like this:
# worktree A
cd ~/Minecraft/Minecraft-Console-Client
source tools/mcc-env.sh
mc-start 1.21.11
mcc-debug -v 1.21.11 --file-input
mc-start 1.21.11-Vanilla
mcc-debug -v 1.21.11-Vanilla --file-input

# worktree B
cd ~/Minecraft/Minecraft-Console-Client-foo
source tools/mcc-env.sh
mcc-debug -v 1.21.11 --file-input
mcc-debug -v 1.21.11-Vanilla --file-input

# from each worktree, mcc-* targets that worktree's default session
mcc-state
Expand All @@ -84,8 +84,8 @@ Before scripted runs, especially on macOS or in a reused tmux environment:

```bash
source tools/mcc-env.sh
mcc-preflight 1.21.11
mc-reset-test-env 1.21.11
mcc-preflight 1.21.11-Vanilla
mc-reset-test-env 1.21.11-Vanilla
```

`mcc-preflight` checks Java, tmux, dotnet, python3, and server directories. It also resolves common Homebrew Java paths on macOS. `mc-reset-test-env` clears stale tmux sessions and stale `stdin.pipe` files before they turn into misleading startup failures.
Expand All @@ -107,16 +107,16 @@ Interactive shell:
source tools/mcc-env.sh
SESSION="$(_mcc_resolve_session)"
USERNAME="$(_mcc_resolve_username "$SESSION")"
mc-start 1.21.11
mc-log 1.21.11 100
mc-start 1.21.11-Vanilla
mc-log 1.21.11-Vanilla 100
mc-rcon "op $USERNAME"
mc-stop 1.21.11
mc-stop 1.21.11-Vanilla
```

Non-interactive shell:

```bash
tools/start-server.sh 1.21.11
tools/start-server.sh 1.21.11-Vanilla
tools/mc-rcon.sh "op mcc_smoke_a"
```

Expand All @@ -135,19 +135,19 @@ The `tools/mcc-debug.sh` script handles build, server startup, config preparatio
source tools/mcc-env.sh

# Classic mode with FileInput (script-driven debugging):
mcc-debug -v 1.21.11 --file-input
mcc-debug -v 1.21.11-Vanilla --file-input

# Classic mode interactive (attach via tmux):
mcc-debug -v 1.21.11
mcc-debug -v 1.21.11-Vanilla

# TUI mode:
mcc-debug -v 1.21.11 -m tui
mcc-debug -v 1.21.11-Vanilla -m tui

# With debug messages enabled from start:
mcc-debug -v 1.21.11 --file-input --debug-on
mcc-debug -v 1.21.11-Vanilla --file-input --debug-on

# Skip build (already built):
mcc-debug -v 1.21.11 --file-input --no-build
mcc-debug -v 1.21.11-Vanilla --file-input --no-build
```

### What mcc-debug.sh does
Expand Down Expand Up @@ -202,7 +202,7 @@ For agents calling MCC commands programmatically:
```bash
source tools/mcc-env.sh
SESSION="smoke-a"
mcc-debug -v 1.21.11 --file-input --session "$SESSION" --no-build
mcc-debug -v 1.21.11-Vanilla --file-input --session "$SESSION" --no-build

# Send commands:
mcc-cmd --session "$SESSION" "debug state"
Expand All @@ -215,15 +215,15 @@ mcc-log-mcc --session "$SESSION"
# Stop:
mcc-cmd --session "$SESSION" "quit"
mcc-kill --session "$SESSION"
mc-stop 1.21.11
mc-stop 1.21.11-Vanilla
```

### Interactive workflow

```bash
source tools/mcc-env.sh
SESSION="live-a"
mcc-debug -v 1.21.11 --session "$SESSION"
mcc-debug -v 1.21.11-Vanilla --session "$SESSION"

# In another terminal:
tmux attach -t "mcc-$SESSION"
Expand All @@ -245,7 +245,7 @@ TUI mode runs Consolonia full-screen in a tmux session. Key differences:
```bash
source tools/mcc-env.sh
SESSION="tui-a"
mcc-debug -v 1.21.11 -m tui --session "$SESSION" --no-build
mcc-debug -v 1.21.11-Vanilla -m tui --session "$SESSION" --no-build

# Cannot use mcc-cmd (no FileInput); must use tmux send-keys:
tmux send-keys -t "mcc-$SESSION" "/debug state" Enter
Expand Down Expand Up @@ -330,12 +330,12 @@ If a scripted run fails before MCC joins, check for a harness problem before ass
## Typical debug loop

1. `source tools/mcc-env.sh`
2. `mcc-debug -v 1.21.11 --file-input` (or `-m tui`)
2. `mcc-debug -v 1.21.11-Vanilla --file-input` (or `-m tui`)
3. Confirm `Server was successfully joined` in log
4. `mcc-cmd "debug state"` to verify MCC state
5. Run test commands
6. Inspect log output
7. `mcc-cmd "quit"` and `mc-stop 1.21.11`
7. `mcc-cmd "quit"` and `mc-stop 1.21.11-Vanilla`
8. Edit code, rebuild, repeat

## Debugging tips
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,20 @@ Usage:
EOF
}

normalize_output_ini() {
local raw_output_ini="$1"
local spill_dir

if [[ "$raw_output_ini" == *.ini || "$raw_output_ini" == */* ]]; then
printf '%s\n' "$raw_output_ini"
return 0
fi

spill_dir="${MCC_CONFIG_SPILL_DIR:-$REPO_ROOT/.tmp/mcc-config-spill}"
mkdir -p "$spill_dir"
printf '%s/%s.ini\n' "$spill_dir" "$raw_output_ini"
}

if [[ $# -lt 2 || $# -gt 4 ]]; then
usage
exit 1
Expand All @@ -24,17 +38,27 @@ OUTPUT_INI=""
MC_VERSION=""
LOGIN_NAME=""

if [[ $# -ge 3 && -f "$1" ]]; then
if [[ $# -ge 3 && "$2" == *.ini ]]; then
TEMPLATE_INI="$1"
OUTPUT_INI="$2"
MC_VERSION="$3"
LOGIN_NAME="${4:-MCCBot}"
elif [[ $# -eq 4 && "$1" == *.ini && -f "$1" ]]; then
TEMPLATE_INI="$1"
OUTPUT_INI="$2"
MC_VERSION="$3"
LOGIN_NAME="$4"
elif [[ $# -eq 4 ]]; then
usage
exit 1
else
OUTPUT_INI="$1"
MC_VERSION="$2"
LOGIN_NAME="${3:-MCCBot}"
fi

OUTPUT_INI="$(normalize_output_ini "$OUTPUT_INI")"

ACCOUNT_TYPE="${MCC_TEST_ACCOUNT_TYPE:-mojang}"
PASSWORD_VALUE="${MCC_TEST_PASSWORD-}"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,6 @@ cleanup() {
wait "$MCC_PID" 2>/dev/null || true
fi

mc-stop "$SERVER_DIR" --confirm >/dev/null 2>&1 || true
wait_for_server_stop "$SERVER_DIR" 20 >/dev/null 2>&1 || true
ln -sfn "$RUN_DIR" "$LATEST_LINK"
write_summary
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ cleanup() {
mcc-cmd --session "$SESSION_NAME" "quit" >/dev/null 2>&1 || true
sleep 2
mcc-kill --session "$SESSION_NAME" >/dev/null 2>&1 || true

mc-stop "$VERSION" --confirm >/dev/null 2>&1 || true
wait_for_server_stop "$VERSION" 20 >/dev/null 2>&1 || true
}
trap cleanup EXIT

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,6 @@ cleanup() {
sleep 1
mcc-kill --session "$SESSION_A" >/dev/null 2>&1 || true
mcc-kill --session "$SESSION_B" >/dev/null 2>&1 || true
mc-stop "$VERSION" --confirm >/dev/null 2>&1 || true
wait_for_server_stop "$VERSION" 20 >/dev/null 2>&1 || true
}
trap cleanup EXIT

Expand Down
8 changes: 4 additions & 4 deletions .skills/mcc-version-adaptation/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ Systematic workflow for updating Minecraft Console Client to support a new Minec
- Decompiled server source for both the old and new MC versions in `$MCC_REPO/MinecraftOfficial/<version>-decompiled/`
- If missing, decompile and download server.jar:
```bash
$MCC_REPO/tools/decompile.sh --version <ver>
$MCC_REPO/tools/decompile.sh --version <ver>-Vanilla
```
This auto-downloads `MinecraftDecompiler.jar` if needed, produces the decompiled source, and downloads `server.jar` into `$MCC_SERVERS/<ver>/`.
- `tools/decompile.sh` depends on official mappings. For older versions where it refuses to decompile, fall back to a raw Java decompiler such as `cfr-decompiler` against `$MCC_SERVERS/<ver>/server.jar`. That fallback is good enough for packet inspection and registration order checks even when the output is obfuscated.
- A test server of the target version in `$MCC_SERVERS/<version>/` (see `mcc-dev-workflow` skill)
This auto-downloads `MinecraftDecompiler.jar` if needed, produces the decompiled source under `$MCC_REPO/MinecraftOfficial/<mc-version>-decompiled/`, and downloads `server.jar` into `$MCC_SERVERS/<ver>-Vanilla/`.
- `tools/decompile.sh` depends on official mappings. For older versions where it refuses to decompile, fall back to a raw Java decompiler such as `cfr-decompiler` against `$MCC_SERVERS/<ver>-Vanilla/server.jar`. That fallback is good enough for packet inspection and registration order checks even when the output is obfuscated.
- A test server of the target version in `$MCC_SERVERS/<version>-Vanilla/` (see `mcc-dev-workflow` skill)

## Step 0: Generate Server Reports (CRITICAL since 1.21.9)

Expand Down
41 changes: 41 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/MinecraftClient.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/MinecraftClient.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/MinecraftClient.sln"
],
"problemMatcher": "$msCompile"
}
]
}
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
- Init submodules first: `git submodule update --init --recursive`
- Build for local development: `source tools/mcc-env.sh && mcc-build`
- Publish (matches CI shape): `source tools/mcc-env.sh && mcc-publish --rid <RID>`
- Run/debug from source: `source tools/mcc-env.sh && mcc-debug -v 1.21.11 --file-input`
- Run/debug from source: `source tools/mcc-env.sh && mcc-debug -v 1.21.11-Vanilla --file-input`
- Docs: `cd docs && npm install && npm run docs:dev` or `npm run docs:build`
- Docker: `cd Docker && docker build -t minecraft-console-client:latest .`
- Tests: no dedicated test project is present in the main solution.
Expand Down
25 changes: 25 additions & 0 deletions MinecraftClient.Tests/MinecraftClient.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\MinecraftClient\MinecraftClient.csproj" />
</ItemGroup>
</Project>
Loading