Files
horizon-airdef/docs/launcher-commands.md
T
Ludovic Marie 108ced5793 launcher: a Shader packs tab that installs Horizon's own shader packs
The Mods page gets a fourth kind, Shader packs, which searches Horizon's
registry and installs a `.hshader` into `shaderpacks/` once
`index::check_file` has run the game's own `horizon_shader_api::check`.
Modrinth and CurseForge answer that tab with a pointer to the registry:
their shader packs are the shaders/ format and are not offered.

The sample index lists a shader pack (`glow`, made with
`horizon-shader new` and `pack`), so the registry build, check_file and
the launcher's install are tested on a real file. A file of the same
name the registry didn't put in place is no longer called a mod.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 07:41:24 +01:00

489 lines
12 KiB
Markdown

# Launcher commands
<!-- Generated from launcher/src/cli.rs by cli_tools::markdown(); a test fails when this file is out of date. Update it with: HORIZON_WRITE_DOCS=1 cargo test --manifest-path launcher/Cargo.toml the_launcher_reference -->
Every command of `horizon-launcher`, and the tool `horizon-launcher mcp` offers for it. A tool's arguments are the command's, in snake_case. A tool runs the command with `--json` and returns what it printed. The tools that change the player's things for good need `confirm: true`. The tools that send something or reach other people say "only when the player asks". The game's own tools, `game_*`, are in [horizon-ctl-commands.md](horizon-ctl-commands.md). With No AI on, `mcp` and `agent-config` are hidden and refuse; every other command stays. See [agent-control.md](agent-control.md#no-ai).
## `horizon-launcher versions`
List Horizon releases, or the installed versions.
horizon-launcher versions
- `--installed`: Only the versions installed here (no network)
MCP: `versions`.
## `horizon-launcher install`
Download and install a release (a tag such as v2026.10.13, or "latest").
horizon-launcher install <TAG>
- `TAG`
MCP: `install`.
## `horizon-launcher remove`
Remove an installed version.
horizon-launcher remove <TAG>
- `TAG`
MCP: `remove`, needs `confirm: true`.
## `horizon-launcher prepare`
Prepare a version's resources from your own Minecraft install.
horizon-launcher prepare
- `--minecraft`: The game folder of the official launcher, Prism Launcher, MultiMC, the Modrinth App, ATLauncher or GDLauncher (default: the launcher's, then every launcher's default)
MCP: `prepare`.
## `horizon-launcher play`
Start the client.
horizon-launcher play
- `--world`: Open or create this world (a folder under saves) at once
- `--creative`: Creative mode for a new world
- `--join`: Join a friend's world with its invite code
- `--arg`: An extra argument for the game, passed through as-is (repeatable), for example --server-thread
MCP: `play`, then the `game_*` tools.
## `horizon-launcher server`
Run a dedicated server here; type commands into its console.
horizon-launcher server
- `--dir`: The server's folder (default: the one the launcher uses)
- `--accept-eula`: Agree to the Minecraft EULA (https://aka.ms/MinecraftEULA)
MCP: `server`, `server_command`, `server_log`, `server_stop`.
## `horizon-launcher notes`
Show a release's patch notes (default: the newest).
horizon-launcher notes [TAG]
- `TAG`
MCP: `notes`.
## `horizon-launcher links`
Show the Discord, sponsor and website links.
horizon-launcher links
MCP: `links`.
## `horizon-launcher account list`
The signed-in accounts and which one plays.
horizon-launcher account list
MCP: `account_list`.
## `horizon-launcher account sign-in`
Sign in with a Microsoft account in your browser (device code).
horizon-launcher account sign-in
MCP: `account_sign_in`.
## `horizon-launcher account sign-out`
Sign out: the account's tokens leave the keychain.
horizon-launcher account sign-out <WHO>
- `WHO`: Its name or UUID
MCP: `account_sign_out`, needs `confirm: true`.
## `horizon-launcher account select`
Play as this account.
horizon-launcher account select <WHO>
- `WHO`
MCP: `account_select`.
## `horizon-launcher account offline`
Play offline, without an account.
horizon-launcher account offline
MCP: `account_offline`.
## `horizon-launcher settings`
Show the launcher's settings, or set one (the Settings page): selected-version TAG, minecraft-dir PATH, server-dir PATH ("default" resets a folder), install-new-versions on|off, opening-animation on|off.
horizon-launcher settings [KEY] [VALUE]
- `KEY` (selected-version, minecraft-dir, server-dir, install-new-versions, opening-animation)
- `VALUE`: The new value (with KEY)
MCP: `settings`.
## `horizon-launcher game-args`
Show or set the extra arguments the game starts with (for example --server-thread); quotes group a word with spaces in it.
horizon-launcher game-args [ARGS]
- `ARGS`: Omit to show the current arguments
MCP: `game_args`.
## `horizon-launcher logs`
Print the end of the game's log (logs/latest.log in the game folder), or its newest crash report.
horizon-launcher logs
- `--lines`: How many lines of latest.log
- `--crash`: The newest crash report instead
MCP: `logs`.
## `horizon-launcher update`
Look for a newer Horizon release and launcher, and install them.
horizon-launcher update
- `--check`: Only report what is available
MCP: `update`.
## `horizon-launcher desktop-entry`
Linux: put Horizon in the applications menu (an entry and the icon, under $XDG_DATA_HOME), or take it out with --remove.
horizon-launcher desktop-entry
- `--remove`: Remove the entry and the icon, and stop adding them back
MCP: `desktop_entry`.
## `horizon-launcher data status`
What is allowed, the install ID and how many items wait (the default).
horizon-launcher data status
MCP: `data_status`.
## `horizon-launcher data allow`
Turn kinds on: performance, crashes, bugs, benchmarks, or all.
horizon-launcher data allow <KINDS>...
- `KINDS`
MCP: `data_allow`, only when the player asks.
## `horizon-launcher data deny`
Turn kinds off: performance, crashes, bugs, benchmarks, or all.
horizon-launcher data deny <KINDS>...
- `KINDS`
MCP: `data_deny`.
## `horizon-launcher data show`
Print exactly what would be sent.
horizon-launcher data show
MCP: `data_show`.
## `horizon-launcher data delete`
Delete everything sent from here, and what waits, and take a new install ID.
horizon-launcher data delete
MCP: `data_delete`, needs `confirm: true`.
## `horizon-launcher data send`
Send what is waiting now.
horizon-launcher data send
MCP: `data_send`, only when the player asks.
## `horizon-launcher data bug`
Send a bug report you write; it is printed first, as it would leave.
horizon-launcher data bug <TEXT>
- `TEXT`
- `--log`: Add the end of the game's log (scrubbed, without chat)
- `--yes`: Send without asking
MCP: `data_bug`, only when the player asks.
## `horizon-launcher data benchmark`
Upload a benchmark report (docs/benchmark-report.md); it is printed first.
horizon-launcher data benchmark <FILE>
- `FILE`
- `--yes`
MCP: `data_benchmark`, only when the player asks.
## `horizon-launcher modpack list`
The imported packs and their coverage (the default).
horizon-launcher modpack list
MCP: `modpack_list`.
## `horizon-launcher modpack import`
Import a .mrpack, a CurseForge zip or an instance folder, and write its coverage report.
horizon-launcher modpack import <PATH>
- `PATH`
MCP: `modpack_import`.
## `horizon-launcher modpack port`
Get the jars of what this computer can port and carry them over.
horizon-launcher modpack port <PACK>
- `PACK`: The pack's folder name, as list shows it
- `--from`: A folder with your own jars (an installed instance, a downloads folder)
MCP: `modpack_port`.
## `horizon-launcher modpack play`
Play a ported pack as its own profile.
horizon-launcher modpack play <PACK>
- `PACK`
MCP: `modpack_play`.
## `horizon-launcher modpack remove`
Remove an imported pack: its jars, ports and the profile's saves.
horizon-launcher modpack remove <PACK>
- `PACK`
MCP: `modpack_remove`, needs `confirm: true`.
## `horizon-launcher mods list`
What the browser installed (the default).
horizon-launcher mods list
MCP: `mods_list`.
## `horizon-launcher mods search`
Search for packs Horizon loads.
horizon-launcher mods search [TEXT]...
- `TEXT`
- `--kind` (mod, resource, modpack, shader)
- `--everything`: Also what was made for other versions or runs only partly, each marked
- `--source` (modrinth, curseforge, horizon)
MCP: `mods_search`.
## `horizon-launcher mods check`
Say how well a Java mod runs in Horizon: its jar is downloaded (checksum checked), carried over and read; the answer is kept.
horizon-launcher mods check <PROJECT>
- `PROJECT`
- `--everything`: Allow a version made for another Minecraft version (1.21 and later)
- `--source` (modrinth, curseforge, horizon)
MCP: `mods_check`.
## `horizon-launcher mods install`
Install a pack and what it needs, by its id or slug (checksums checked); a Java mod is ported into horizon-mods and turned on; a modpack is imported.
horizon-launcher mods install <PROJECT>
- `PROJECT`
- `--everything`: Allow a version made for another Minecraft version
- `--source` (modrinth, curseforge, horizon)
MCP: `mods_install`.
## `horizon-launcher mods update`
Update what the browser installed (or one pack).
horizon-launcher mods update [PROJECT]
- `PROJECT`
- `--check`: Only say what is newer
MCP: `mods_update`.
## `horizon-launcher mods remove`
Remove a pack the browser installed.
horizon-launcher mods remove <PROJECT>
- `PROJECT`
MCP: `mods_remove`, needs `confirm: true`.
## `horizon-launcher mods enable`
Turn on a mod the browser installed (horizon-mods.txt, as the game's Options > Mods does).
horizon-launcher mods enable <PROJECT>
- `PROJECT`
MCP: `mods_enable`.
## `horizon-launcher mods disable`
Turn off a mod the browser installed; it stays installed.
horizon-launcher mods disable <PROJECT>
- `PROJECT`
MCP: `mods_disable`.
## `horizon-launcher servers list`
The servers, their folder and whether they run.
horizon-launcher servers list
MCP: `servers_list`.
## `horizon-launcher servers create`
Create a server; with no options it is a new world, survival, normal, 10 players, friends only.
horizon-launcher servers create
- `--name`
- `--seed`: The new world's seed (default: random)
- `--copy-world`: Start from a copy of this world folder (one of your saves)
- `--mode` (survival, creative, adventure, spectator)
- `--difficulty` (peaceful, easy, normal, hard)
- `--max-players`
- `--open`: Let anyone in (no whitelist)
- `--check-accounts`: Check players' Minecraft accounts (they must sign in with Microsoft)
- `--player`: Who may join (repeatable); the first becomes an operator
- `--accept-eula`: Agree to the Minecraft EULA (https://aka.ms/MinecraftEULA)
MCP: `servers_create`, only when the player asks.
## `horizon-launcher servers set-up`
Copy an installed, prepared version's programs and game files for the servers (again).
horizon-launcher servers set-up
MCP: `servers_set_up`.
## `horizon-launcher servers run`
Run a horizon-server command on a server, for example: servers run "My server" -- status.
horizon-launcher servers run <SERVER> -- <ARGS>...
- `SERVER`: The server's name or folder
- `ARGS`
MCP: `servers_run`.
## `horizon-launcher servers forget`
Take a server off the list (its folder stays).
horizon-launcher servers forget <SERVER>
- `SERVER`
MCP: `servers_forget`, needs `confirm: true`.
## `horizon-launcher mcp`
Serve the Model Context Protocol on stdin and stdout, for AI agents (refused while No AI is on).
horizon-launcher mcp
MCP: none: this command is the MCP server.
## `horizon-launcher agent-config`
How to connect an AI agent (Claude Code, Codex, Cursor, any MCP client) to `mcp`: the config to paste and the command that adds it (refused while No AI is on).
horizon-launcher agent-config
- `--client` (claude-code, codex, cursor, generic): Only this client
- `--test`: Start the MCP server as a client would and say whether it answered
MCP: none: it prints how to connect a client to `mcp`.
## `horizon-launcher no-ai`
Show or set No AI: on hides and turns off every AI feature (the companion, agent control, horizon-ctl and both MCP servers); off, the default, makes them available.
horizon-launcher no-ai [STATE]
- `STATE` (on, off): Omit to show the current state
MCP: none: the player's switch.
## `horizon-launcher benchmark`
Measure the launcher: starts (the first is the cold one), page switching, idle CPU and memory, the release list fetch; writes a benchmark report to benchmarks/ in its data folder.
horizon-launcher benchmark
- `--repeats`: How many times to start it
MCP: `benchmark`.