Updated documentation to use <details> tag, updated the AGENTS md

This commit is contained in:
Anon 2026-03-22 17:31:41 +01:00
parent dc50df3b94
commit 611951668e
6 changed files with 543 additions and 44 deletions

View file

@ -49,12 +49,14 @@ Feature columns mean:
| 1.19.3-1.20.4 | `Protocol18Handler` | Yes | Yes | Yes | Newer chat/signing and palette splits | | 1.19.3-1.20.4 | `Protocol18Handler` | Yes | Yes | Yes | Newer chat/signing and palette splits |
| 1.20.6-1.21.4 | `Protocol18Handler` | Yes | Yes | Yes | Registry-driven world/attribute handling | | 1.20.6-1.21.4 | `Protocol18Handler` | Yes | Yes | Yes | Registry-driven world/attribute handling |
| 1.21.5-1.21.8 | `Protocol18Handler` | Yes | Yes | Yes | 1.21.7/1.21.8 reuse 1.21.6 block/entity palettes in code | | 1.21.5-1.21.8 | `Protocol18Handler` | Yes | Yes | Yes | 1.21.7/1.21.8 reuse 1.21.6 block/entity palettes in code |
| 1.21.9-1.21.10 | `Protocol18Handler` | Yes | Yes | Yes | Latest coded support; version tools prefer server data reports since 1.21.9 | | 1.21.9-1.21.10 | `Protocol18Handler` | Yes | Yes | Yes | Version tools prefer server data reports since 1.21.9 |
| 1.21.11 | `Protocol18Handler` | Yes | Yes | Yes | Own entity/item/metadata palettes; blocks reuse 1.21.9 palette |
| 26.1 | `Protocol18Handler` | Yes | Yes | Yes | Latest coded support; new Minecraft version naming scheme |
Notes: Notes:
- Declared code range is `1.4.6` to `1.21.10`. - Declared code range is `1.4.6` to `26.1`.
- Human docs are stale in places and sometimes stop at older ranges; prefer code when docs and code disagree. - Human docs are stale in places and sometimes stop at older ranges; prefer code when docs and code disagree.
- Movement/pathing limits called out in docs still apply: no swimming, no jumping, no knockback, slab support is partial. - Movement/pathing limits called out in docs still apply: no swimming, no knockback. The `Physics/` engine adds vanilla-accurate collision and movement but some edge cases remain.
## Module Map ## Module Map
### Core Runtime ### Core Runtime
@ -62,9 +64,10 @@ Notes:
| Module | What It Owns | Important Files | | Module | What It Owns | Important Files |
| --- | --- | --- | | --- | --- | --- |
| `MinecraftClient/` | Main `net8.0` runtime assembly and the best starting point. `Program.cs` owns startup, config load/writeback, CLI handling, auth/version selection, update/data-generation entrypoints, and restart/failure flow. `McClient.cs` owns the live session runtime: protocol handler ownership, command dispatch, bot lifecycle, world/inventory/entity state, queued chat, movement ticks, reconnect/disconnect logic, and the main-thread invoke queue. `Settings.cs` defines the TOML schema and runtime/internal overrides used across the app. | `Program.cs`, `McClient.cs`, `Settings.cs`, `ConsoleIO.cs`, `Command.cs`, `UpgradeHelper.cs`, `AutoTimeout.cs` | | `MinecraftClient/` | Main `net8.0` runtime assembly and the best starting point. `Program.cs` owns startup, config load/writeback, CLI handling, auth/version selection, update/data-generation entrypoints, and restart/failure flow. `McClient.cs` owns the live session runtime: protocol handler ownership, command dispatch, bot lifecycle, world/inventory/entity state, queued chat, movement ticks, reconnect/disconnect logic, and the main-thread invoke queue. `Settings.cs` defines the TOML schema and runtime/internal overrides used across the app. | `Program.cs`, `McClient.cs`, `Settings.cs`, `ConsoleIO.cs`, `Command.cs`, `UpgradeHelper.cs`, `AutoTimeout.cs` |
| `MinecraftClient/Protocol/` | Network/auth/session boundary. `ProtocolHandler.cs` does DNS SRV lookup, server ping/version detection, MC-version to protocol mapping, and handler selection. `Protocol16.cs` and `Protocol18.cs` implement the packet flow for legacy and modern versions. `Protocol18Terrain.cs` decodes chunk sections/biomes into `World`. `DataTypes.cs` is the low-level reader/writer layer for VarInts, metadata, NBT-like structures, and packet fields. `Message/`, `ProfileKey/`, `Session/`, `Handlers/Forge/`, `Handlers/PacketPalettes/`, and `Handlers/StructuredComponents/` cover chat/signing, cached auth, Forge, packet IDs, and 1.20.6+ item components. | `Protocol/ProtocolHandler.cs`, `Protocol/Handlers/Protocol16.cs`, `Protocol/Handlers/Protocol18.cs`, `Protocol/Handlers/Protocol18Terrain.cs`, `Protocol/Handlers/DataTypes.cs`, `Protocol/Message/ChatParser.cs`, `Protocol/MicrosoftAuthentication.cs`, `Protocol/MojangAPI.cs` | | `MinecraftClient/Protocol/` | Network/auth/session boundary. `ProtocolHandler.cs` does DNS SRV lookup, server ping/version detection, MC-version to protocol mapping, and handler selection. `Protocol16.cs` and `Protocol18.cs` implement the packet flow for legacy and modern versions. `Protocol18Terrain.cs` decodes chunk sections/biomes into `World`. `DataTypes.cs` is the low-level reader/writer layer for VarInts, metadata, NBT-like structures, and packet fields. `Message/`, `ProfileKey/`, `Session/`, `Handlers/Forge/`, `Handlers/PacketPalettes/`, `Handlers/Packet/`, and `Handlers/StructuredComponents/` cover chat/signing, cached auth, Forge, packet IDs, packet-level parsing, and 1.20.6+ item components with versioned registries under `StructuredComponents/Registries/`. | `Protocol/ProtocolHandler.cs`, `Protocol/Handlers/Protocol16.cs`, `Protocol/Handlers/Protocol18.cs`, `Protocol/Handlers/Protocol18Terrain.cs`, `Protocol/Handlers/DataTypes.cs`, `Protocol/Message/ChatParser.cs`, `Protocol/MicrosoftAuthentication.cs`, `Protocol/MojangAPI.cs` |
| `MinecraftClient/Mapping/` | World model, terrain storage, movement logic, and versioned block/entity metadata. `World.cs` stores chunk columns, dimension data, and 1.20.6+ registry-derived dimension/attribute mappings. `Chunk*`, `Block.cs`, and `Location.cs` are the terrain primitives. `Movement.cs` contains step generation, gravity/on-ground checks, and path execution support. `Material.cs` plus `BlockPalettes/*.cs` map block-state IDs to MCC materials. `Entity.cs`, `EntityType.cs`, `EntityPalettes/*.cs`, `EntityMetadataPalette.cs`, and `EntityMetadataPalettes/*.cs` do the same for entities and metadata serializers. | `Mapping/World.cs`, `Mapping/ChunkColumn.cs`, `Mapping/Chunk.cs`, `Mapping/Block.cs`, `Mapping/Location.cs`, `Mapping/Movement.cs`, `Mapping/RaycastHelper.cs`, `Mapping/Material.cs`, `Mapping/Entity.cs`, `Mapping/EntityType.cs` | | `MinecraftClient/Mapping/` | World model, terrain storage, movement logic, and versioned block/entity metadata. `World.cs` stores chunk columns, dimension data, and 1.20.6+ registry-derived dimension/attribute mappings. `Chunk*`, `Block.cs`, and `Location.cs` are the terrain primitives. `Movement.cs` contains step generation, gravity/on-ground checks, and path execution support. `Material.cs` plus `BlockPalettes/*.cs` map block-state IDs to MCC materials. `Entity.cs`, `EntityType.cs`, `EntityPalettes/*.cs`, `EntityMetadataPalette.cs`, and `EntityMetadataPalettes/*.cs` do the same for entities and metadata serializers. | `Mapping/World.cs`, `Mapping/ChunkColumn.cs`, `Mapping/Chunk.cs`, `Mapping/Block.cs`, `Mapping/Location.cs`, `Mapping/Movement.cs`, `Mapping/RaycastHelper.cs`, `Mapping/Material.cs`, `Mapping/Entity.cs`, `Mapping/EntityType.cs` |
| `MinecraftClient/Inventory/` | Inventory/container snapshots, item decoding, and versioned item registries. `Container.cs` models player inventories and server windows, including slot contents and container properties. `Item.cs` bridges older NBT-based items with 1.20.6+ structured components. `ItemType.cs` plus `ItemPalettes/*.cs` provide version-specific item ID mapping. Enchantment, effects, and villager-trade files add higher-level semantics on top of raw inventory data. | `Inventory/Container.cs`, `Inventory/ContainerType.cs`, `Inventory/Item.cs`, `Inventory/ItemMovingHelper.cs`, `Inventory/ItemType.cs`, `Inventory/ItemPalettes/*.cs`, `Inventory/EnchantmentMapping.cs`, `Inventory/VillagerTrade.cs` | | `MinecraftClient/Inventory/` | Inventory/container snapshots, item decoding, and versioned item registries. `Container.cs` models player inventories and server windows, including slot contents and container properties. `Item.cs` bridges older NBT-based items with 1.20.6+ structured components. `ItemType.cs` plus `ItemPalettes/*.cs` provide version-specific item ID mapping. Enchantment, effects, and villager-trade files add higher-level semantics on top of raw inventory data. | `Inventory/Container.cs`, `Inventory/ContainerType.cs`, `Inventory/Item.cs`, `Inventory/ItemMovingHelper.cs`, `Inventory/ItemType.cs`, `Inventory/ItemPalettes/*.cs`, `Inventory/EnchantmentMapping.cs`, `Inventory/VillagerTrade.cs` |
| `MinecraftClient/Physics/` | Vanilla-accurate per-tick physics engine. `PlayerPhysics.cs` mirrors vanilla `Entity.move()`, `LivingEntity.aiStep()/travel()`, and `Player.travel()` logic at 20 TPS, handling ground/air/water/lava/creative-fly travel, jumping, sprint-jump boost, climbing, sneak-edge-detection, friction, drag, gravity, slow-falling, and levitation. `CollisionDetector.cs` resolves full AABB collisions against the block world including step-up, mirroring vanilla axis-separated resolution. `BlockShapes.cs` maps block-state IDs to collision AABBs using PrismarineJS data from `BlockShapeData.json`. `Vec3d.cs` and `Aabb.cs` provide the geometric primitives. `MovementInput.cs` captures player input state. | `Physics/PlayerPhysics.cs`, `Physics/PhysicsConsts.cs`, `Physics/CollisionDetector.cs`, `Physics/BlockShapes.cs`, `Physics/BlockShapeData.json`, `Physics/Vec3d.cs`, `Physics/Aabb.cs`, `Physics/MovementInput.cs` |
### Commands And Extensions ### Commands And Extensions
@ -73,7 +76,7 @@ Notes:
| `MinecraftClient/Commands/` and `MinecraftClient/CommandHandler/` | Internal MCC command system built on Brigadier. Commands are discovered by reflection from `MinecraftClient.Commands` in `McClient.LoadCommands()`. Each file in `Commands/` registers one internal command. `ArgumentType/*.cs` provides typed Brigadier arguments and completion sources for accounts, bots, items, locations, scripts, inventories, and more. `Patch/*.cs` carries MCC-specific Brigadier extensions, and `CmdResult.cs` is the command execution result object. | `Command.cs`, `Commands/*.cs`, `CommandHandler/MccArguments.cs`, `CommandHandler/CmdResult.cs`, `CommandHandler/ArgumentType/*.cs`, `CommandHandler/Patch/*.cs` | | `MinecraftClient/Commands/` and `MinecraftClient/CommandHandler/` | Internal MCC command system built on Brigadier. Commands are discovered by reflection from `MinecraftClient.Commands` in `McClient.LoadCommands()`. Each file in `Commands/` registers one internal command. `ArgumentType/*.cs` provides typed Brigadier arguments and completion sources for accounts, bots, items, locations, scripts, inventories, and more. `Patch/*.cs` carries MCC-specific Brigadier extensions, and `CmdResult.cs` is the command execution result object. | `Command.cs`, `Commands/*.cs`, `CommandHandler/MccArguments.cs`, `CommandHandler/CmdResult.cs`, `CommandHandler/ArgumentType/*.cs`, `CommandHandler/Patch/*.cs` |
| `MinecraftClient/ChatBots/` | Built-in bots and bridges loaded from config through `McClient.RegisterBots()`. The folder mixes gameplay automation (`AutoAttack`, `AutoDig`, `AutoEat`, `AutoFishing`, `Farmer`), utility/logging bots (`ChatLog`, `PlayerListLogger`, `Alerts`), bridges (`DiscordBridge`, `TelegramBridge`, `RemoteControl`), and tooling like `ScriptScheduler`, `Map`, and `ReplayCapture`. | `ChatBots/AutoRelog.cs`, `ChatBots/Farmer.cs`, `ChatBots/FollowPlayer.cs`, `ChatBots/ItemsCollector.cs`, `ChatBots/Map.cs`, `ChatBots/RemoteControl.cs`, `ChatBots/ScriptScheduler.cs`, `ChatBots/DiscordBridge.cs`, `ChatBots/TelegramBridge.cs`, `ChatBots/ReplayCapture.cs` | | `MinecraftClient/ChatBots/` | Built-in bots and bridges loaded from config through `McClient.RegisterBots()`. The folder mixes gameplay automation (`AutoAttack`, `AutoDig`, `AutoEat`, `AutoFishing`, `Farmer`), utility/logging bots (`ChatLog`, `PlayerListLogger`, `Alerts`), bridges (`DiscordBridge`, `TelegramBridge`, `RemoteControl`), and tooling like `ScriptScheduler`, `Map`, and `ReplayCapture`. | `ChatBots/AutoRelog.cs`, `ChatBots/Farmer.cs`, `ChatBots/FollowPlayer.cs`, `ChatBots/ItemsCollector.cs`, `ChatBots/Map.cs`, `ChatBots/RemoteControl.cs`, `ChatBots/ScriptScheduler.cs`, `ChatBots/DiscordBridge.cs`, `ChatBots/TelegramBridge.cs`, `ChatBots/ReplayCapture.cs` |
| `MinecraftClient/Scripting/` | Shared extension boundary for compiled bots and runtime C# scripts. `ChatBot.cs` is the main bot API and lifecycle surface. Built-in bots and `/script` bots use the same event model. `CSharpRunner.cs` parses `//MCCScript` files, compiles them with Roslyn, caches assemblies, and executes them through `CSharpAPI`. `DynamicRun/Builder/*` handles in-memory compilation/load-context plumbing, while `BotMovementLock.cs` coordinates movement ownership between automation pieces. | `Scripting/ChatBot.cs`, `Scripting/CSharpRunner.cs`, `Scripting/BotMovementLock.cs`, `Scripting/AssemblyResolver.cs`, `Scripting/DynamicRun/Builder/Compiler.cs`, `Scripting/DynamicRun/Builder/CompileRunner.cs` | | `MinecraftClient/Scripting/` | Shared extension boundary for compiled bots and runtime C# scripts. `ChatBot.cs` is the main bot API and lifecycle surface. Built-in bots and `/script` bots use the same event model. `CSharpRunner.cs` parses `//MCCScript` files, compiles them with Roslyn, caches assemblies, and executes them through `CSharpAPI`. `DynamicRun/Builder/*` handles in-memory compilation/load-context plumbing, while `BotMovementLock.cs` coordinates movement ownership between automation pieces. | `Scripting/ChatBot.cs`, `Scripting/CSharpRunner.cs`, `Scripting/BotMovementLock.cs`, `Scripting/AssemblyResolver.cs`, `Scripting/DynamicRun/Builder/Compiler.cs`, `Scripting/DynamicRun/Builder/CompileRunner.cs` |
| `MinecraftClient/config/` | Sample runtime assets excluded from compilation. This is the examples/staging area for end-user scripts and standalone bots. `sample-script*.cs` shows supported `/script` patterns, while `config/ChatBots/*.cs` are copy/adapt examples rather than built-in bots. | `config/README.md`, `config/sample-script.cs`, `config/sample-script-with-chatbot.cs`, `config/sample-script-with-world-access.cs`, `config/ChatBots/*.cs` | | `MinecraftClient/config/` | Sample runtime assets excluded from compilation. This is the examples/staging area for end-user scripts and standalone bots. `sample-script*.cs` shows supported `/script` patterns (basic, chatbot, world access, HTTP requests, tasks, PM forwarding, extended), while `config/ChatBots/*.cs` are copy/adapt examples rather than built-in bots. | `config/README.md`, `config/sample-script.cs`, `config/sample-script-with-chatbot.cs`, `config/sample-script-with-world-access.cs`, `config/sample-script-with-http-request.cs`, `config/sample-script-with-task.cs`, `config/ChatBots/*.cs` |
| `ConsoleInteractive/` | Required git submodule for richer line editing and console UI. MCC uses the submodule's `ConsoleReader`, `ConsoleWriter`, and suggestion UI from `ConsoleIO.cs` and `McClient.cs` when `BasicIO` is not enabled. | `ConsoleInteractive/README.md`, `ConsoleInteractive/ConsoleInteractive/ConsoleInteractive.sln` | | `ConsoleInteractive/` | Required git submodule for richer line editing and console UI. MCC uses the submodule's `ConsoleReader`, `ConsoleWriter`, and suggestion UI from `ConsoleIO.cs` and `McClient.cs` when `BasicIO` is not enabled. | `ConsoleInteractive/README.md`, `ConsoleInteractive/ConsoleInteractive/ConsoleInteractive.sln` |
### Support And Tooling ### Support And Tooling
@ -81,24 +84,27 @@ Notes:
| Module | What It Owns | Important Files | | Module | What It Owns | Important Files |
| --- | --- | --- | | --- | --- | --- |
| `MinecraftClient/Logger/`, `MinecraftClient/Proxy/`, `MinecraftClient/Crypto/`, `MinecraftClient/Resources/`, `MinecraftClient/WinAPI/` | Support subsystems under the main app. Logging supports console/file output plus regex filtering. `ProxyHandler.cs` routes update/login/in-game traffic through HTTP or SOCKS proxies. `Crypto/` implements the stream ciphers needed for online-mode protocol encryption. `Resources/` contains UI strings, generated translation accessors, config help text, icons, and embedded Minecraft asset data. `WinAPI/` contains small Windows-only console helpers. | `Logger/FilteredLogger.cs`, `Logger/FileLogLogger.cs`, `Proxy/ProxyHandler.cs`, `Crypto/CryptoHandler.cs`, `Crypto/AesCfb8Stream.cs`, `Resources/Translations/Translations.resx`, `Resources/ConfigComments/ConfigComments.resx`, `Resources/en_us.json`, `WinAPI/ConsoleIcon.cs` | | `MinecraftClient/Logger/`, `MinecraftClient/Proxy/`, `MinecraftClient/Crypto/`, `MinecraftClient/Resources/`, `MinecraftClient/WinAPI/` | Support subsystems under the main app. Logging supports console/file output plus regex filtering. `ProxyHandler.cs` routes update/login/in-game traffic through HTTP or SOCKS proxies. `Crypto/` implements the stream ciphers needed for online-mode protocol encryption. `Resources/` contains UI strings, generated translation accessors, config help text, icons, and embedded Minecraft asset data. `WinAPI/` contains small Windows-only console helpers. | `Logger/FilteredLogger.cs`, `Logger/FileLogLogger.cs`, `Proxy/ProxyHandler.cs`, `Crypto/CryptoHandler.cs`, `Crypto/AesCfb8Stream.cs`, `Resources/Translations/Translations.resx`, `Resources/ConfigComments/ConfigComments.resx`, `Resources/en_us.json`, `WinAPI/ConsoleIcon.cs` |
| `docs/` | VuePress documentation site. `.vuepress/config.ts` sets bundler, theme, plugins, and redirects. `.vuepress/configs/**` holds locale and nav wiring. `guide/*.md` contains the user-facing install, usage, bot, and scripting docs. | `docs/.vuepress/config.ts`, `docs/.vuepress/configs/**`, `docs/guide/README.md`, `docs/guide/configuration.md`, `docs/guide/chat-bots.md`, `docs/guide/creating-text-script.md` | | `docs/` | VuePress documentation site. `.vuepress/config.ts` sets bundler, theme, plugins, and redirects. `.vuepress/configs/**` holds locale and nav wiring. `guide/*.md` contains the user-facing install, usage, bot, and scripting docs. | `docs/.vuepress/config.ts`, `docs/.vuepress/configs/**`, `docs/guide/README.md`, `docs/guide/configuration.md`, `docs/guide/chat-bots.md`, `docs/guide/creating-bots.md`, `docs/guide/creating-text-script.md`, `docs/guide/ai-assisted-development.md` |
| `tools/` | Python helpers for Minecraft version adaptation and palette generation. `README.md` is the authoritative workflow. `diff_registries.py` compares versions and validates decompiled data against server reports. The `gen_*` scripts emit the versioned palette source files consumed by `Protocol/`, `Mapping/`, and `Inventory/`. | `tools/README.md`, `tools/diff_registries.py`, `tools/gen_block_palette.py`, `tools/gen_item_palette.py`, `tools/gen_entity_palette.py`, `tools/gen_entity_metadata_palette.py` | | `tools/` | Python helpers for Minecraft version adaptation and palette generation. `README.md` is the authoritative workflow. `diff_registries.py` compares versions and validates decompiled data against server reports. The `gen_*` scripts emit the versioned palette source files consumed by `Protocol/`, `Mapping/`, `Inventory/`, and `Physics/`. | `tools/README.md`, `tools/diff_registries.py`, `tools/gen_block_palette.py`, `tools/gen_item_palette.py`, `tools/gen_entity_palette.py`, `tools/gen_entity_metadata_palette.py`, `tools/gen_block_shapes.py`, `tools/gen_command_argument_registry.py` |
| `DebugTools/` | Standalone packet/proxy debugging utilities for inspecting traffic and compression behavior outside the main client runtime. | `DebugTools/MinecraftClientProxy/Program.cs`, `DebugTools/MinecraftClientProxy/PacketProxy.cs`, `DebugTools/MinecraftClientProxy/ZlibUtils.cs` | | `DebugTools/` | Standalone packet/proxy debugging utilities for inspecting traffic and compression behavior outside the main client runtime. | `DebugTools/MinecraftClientProxy/Program.cs`, `DebugTools/MinecraftClientProxy/PacketProxy.cs`, `DebugTools/MinecraftClientProxy/ZlibUtils.cs` |
| `MinecraftClientGUI/` | Legacy Windows GUI wrapper around the console app. WinForms shell that launches and communicates with the console executable; not part of the main `net8.0` runtime path. | `MinecraftClientGUI/Program.cs`, `MinecraftClientGUI/Form1.cs`, `MinecraftClientGUI/Form1.Designer.cs`, `MinecraftClientGUI/MinecraftClient.cs` | | `MinecraftClientGUI/` | Legacy Windows GUI wrapper around the console app. WinForms shell that launches and communicates with the console executable; not part of the main `net8.0` runtime path. | `MinecraftClientGUI/Program.cs`, `MinecraftClientGUI/Form1.cs`, `MinecraftClientGUI/Form1.Designer.cs`, `MinecraftClientGUI/MinecraftClient.cs` |
## Engineering Guidance ## Engineering Guidance
Read `docs/guide/ai-assisted-development.md` before starting development work on MCC. It documents the full build-run-test loop, local server harness, repository tools, and standard workflows.
### DO ### DO
- Keep startup/config/auth logic in `Program` and connection runtime logic in `McClient` or `Protocol/*`. - Keep startup/config/auth logic in `Program` and connection runtime logic in `McClient` or `Protocol/*`.
- Update version support holistically: protocol constants, version mapping, packet palette, block palette, item palette, entity palette, metadata palette, and routing switches. - Update version support holistically: protocol constants, version mapping, packet palette, block palette, item palette, entity palette, metadata palette, and routing switches.
- Use `tools/` and authoritative server data reports when adapting to new Minecraft versions, especially 1.21.9+. - Use `tools/` and authoritative server data reports when adapting to new Minecraft versions.
- Guard optional subsystems with `GetTerrainEnabled()`, `GetInventoryEnabled()`, and `GetEntityHandlingEnabled()` before using them. - Guard optional subsystems with `GetTerrainEnabled()`, `GetInventoryEnabled()`, and `GetEntityHandlingEnabled()` before using them.
- For built-in bots, wire all pieces together: bot class, `Settings.ChatBotConfigHealper`, and `McClient.RegisterBots()`. - For built-in bots, wire all pieces together: bot class, `Settings.ChatBotConfigHealper`, and `McClient.RegisterBots()`.
- Keep `Initialize()` for setup/prereq checks and `AfterGameJoined()` for sending chat or commands. - Keep `Initialize()` for setup/prereq checks and `AfterGameJoined()` for sending chat or commands.
- Normalize inbound chat with `GetVerbatim()` before `IsChatMessage()` / `IsPrivateMessage()`. - Normalize inbound chat with `GetVerbatim()` before `IsChatMessage()` / `IsPrivateMessage()`.
- Clean up commands, plugin channels, threads, timers, and movement locks in `OnUnload()`. - Clean up commands, plugin channels, threads, timers, and movement locks in `OnUnload()`.
- Prefer nullable-aware code, pattern matching, `ArgumentNullException.ThrowIfNull`, `Try*` APIs for expected failures, and `InvokeOnMainThread()` for cross-thread state changes. - Prefer nullable-aware code, pattern matching, `ArgumentNullException.ThrowIfNull`, `Try*` APIs for expected failures, and `InvokeOnMainThread()` for cross-thread state changes.
- Use modern C# only when it fits the current target: the repo builds as `net8.0` with default language version. - Use modern C# 14 features.
- Use provided skills proactively depending on the context, read their descriptions to determine when to use them.
### DON'T ### DON'T
- Don't update only `MCVer2ProtocolVersion()` or only one palette file when adding a new Minecraft version. - Don't update only `MCVer2ProtocolVersion()` or only one palette file when adding a new Minecraft version.
@ -109,3 +115,4 @@ Notes:
- Don't start background workers when `Update()` or delayed tasks are sufficient; if you must, stop them on unload/disconnect. - Don't start background workers when `Update()` or delayed tasks are sufficient; if you must, stop them on unload/disconnect.
- Don't leave movement locks, plugin channels, or dispatcher registrations behind. - Don't leave movement locks, plugin channels, or dispatcher registrations behind.
- Don't trust older docs over current code for supported versions or feature gates. - Don't trust older docs over current code for supported versions or feature gates.
- Never use "—" ("em dash"), unless specifically being instructed to do so!

View file

@ -82,3 +82,82 @@
border-radius: 0.5rem; border-radius: 0.5rem;
} }
} }
/* Collapsible <details> sections */
details {
margin: 1rem 0;
padding: 0;
border: 1px solid var(--vp-c-divider);
border-radius: 0.5rem;
transition:
background var(--vp-t-color),
border-color var(--vp-t-color);
> summary {
display: flex;
align-items: center;
gap: 0.5em;
padding: 0.75rem 1.15rem;
font-weight: 600;
cursor: pointer;
user-select: none;
list-style: none;
border-radius: 0.5rem;
background: var(--vp-c-bg-soft);
transition: background var(--vp-t-color);
&::before {
content: '';
display: inline-block;
font-size: 0.55em;
color: var(--vp-c-text-2);
transition: transform 0.2s ease;
flex-shrink: 0;
}
/* Hide the default marker in all browsers */
&::-webkit-details-marker {
display: none;
}
&::marker {
content: none;
}
&:hover {
background: var(--vp-c-bg-mute);
}
> code {
font-size: 0.95em;
font-weight: 700;
color: var(--vp-c-accent);
background: var(--vp-c-control);
padding: 0.15em 0.45em;
border-radius: 0.25rem;
}
}
&[open] > summary {
border-bottom: 1px solid var(--vp-c-divider);
border-radius: 0.5rem 0.5rem 0 0;
margin-bottom: 0;
&::before {
transform: rotate(90deg);
}
}
&[open] > :not(summary) {
margin-left: 1.25rem;
margin-right: 1.25rem;
}
&[open] > :nth-child(2) {
margin-top: 1rem;
}
&[open] > :last-child {
margin-bottom: 1rem;
}
}

View file

@ -67,6 +67,9 @@ redirectFrom:
**Section:** **`ChatBot.Alerts`** **Section:** **`ChatBot.Alerts`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -181,6 +184,9 @@ redirectFrom:
Excludes = [ "myserver.com", "Yourname>:", "Player Yourname", "Yourname joined", "Yourname left", "[Lockette] (Admin)", " Yourname:", "Yourname is", ] Excludes = [ "myserver.com", "Yourname>:", "Player Yourname", "Yourname joined", "Yourname left", "[Lockette] (Admin)", " Yourname:", "Yourname is", ]
``` ```
</details>
## Anti AFK ## Anti AFK
- **Description:** - **Description:**
@ -191,6 +197,9 @@ redirectFrom:
**Section:** **`ChatBot.AntiAFK`** **Section:** **`ChatBot.AntiAFK`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -281,6 +290,9 @@ redirectFrom:
- **Default:** `20` - **Default:** `20`
</details>
## Auto Attack ## Auto Attack
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
@ -297,6 +309,9 @@ redirectFrom:
**Section:** **`ChatBot.AutoAttack`** **Section:** **`ChatBot.AutoAttack`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -432,6 +447,9 @@ redirectFrom:
- **Default:** `[ "Zombie", "Cow", ]` - **Default:** `[ "Zombie", "Cow", ]`
</details>
## Auto Craft ## Auto Craft
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
@ -466,6 +484,9 @@ redirectFrom:
**Section:** **`ChatBot.AutoCraft`** **Section:** **`ChatBot.AutoCraft`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -609,6 +630,9 @@ redirectFrom:
</div> </div>
</details>
## Auto Dig ## Auto Dig
- **Description:** - **Description:**
@ -637,6 +661,9 @@ redirectFrom:
**Section:** **`ChatBot.AutoDig`** **Section:** **`ChatBot.AutoDig`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -780,6 +807,9 @@ redirectFrom:
- **Default:** `[ "Cobblestone", "Stone", ]` - **Default:** `[ "Cobblestone", "Stone", ]`
</details>
## Auto Drop ## Auto Drop
- **Description:** - **Description:**
@ -796,6 +826,9 @@ redirectFrom:
**Section:** **`ChatBot.AutoDrop`** **Section:** **`ChatBot.AutoDrop`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -855,6 +888,9 @@ redirectFrom:
- **Default:** `[ "Cobblestone", "Dirt", ]` - **Default:** `[ "Cobblestone", "Dirt", ]`
</details>
## Auto Eat ## Auto Eat
- **Description:** - **Description:**
@ -871,6 +907,9 @@ redirectFrom:
**Section:** **`ChatBot.AutoEat`** **Section:** **`ChatBot.AutoEat`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -893,6 +932,9 @@ redirectFrom:
- **Default:** `6` - **Default:** `6`
</details>
## Auto Fishing ## Auto Fishing
- **Description:** - **Description:**
@ -934,6 +976,9 @@ redirectFrom:
**Section:** **`ChatBot.AutoFishing`** **Section:** **`ChatBot.AutoFishing`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1150,6 +1195,9 @@ redirectFrom:
facing = { yaw = -25.14, pitch = 36.25 } facing = { yaw = -25.14, pitch = 36.25 }
``` ```
</details>
## Auto Relog ## Auto Relog
- **Description:** - **Description:**
@ -1160,6 +1208,9 @@ redirectFrom:
**Section:** **`ChatBot.AutoRelog`** **Section:** **`ChatBot.AutoRelog`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1226,6 +1277,9 @@ redirectFrom:
- **Default:** `[ "Connection has been lost", "Server is restarting", "Server is full", "Too Many people", ]` - **Default:** `[ "Connection has been lost", "Server is restarting", "Server is full", "Too Many people", ]`
</details>
## Auto Respond ## Auto Respond
- **Description:** - **Description:**
@ -1248,6 +1302,9 @@ redirectFrom:
**Section:** **`ChatBot.AutoRespond`** **Section:** **`ChatBot.AutoRespond`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1306,6 +1363,9 @@ redirectFrom:
- **Default:** `false` - **Default:** `false`
</details>
## Chat Log ## Chat Log
- **Description:** - **Description:**
@ -1316,6 +1376,9 @@ redirectFrom:
**Section:** **`ChatBot.ChatLog`** **Section:** **`ChatBot.ChatLog`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1374,6 +1437,9 @@ redirectFrom:
- **Default:** `messages` - **Default:** `messages`
</details>
## Discord Bridge ## Discord Bridge
- **Description:** - **Description:**
@ -1442,6 +1508,9 @@ redirectFrom:
**Section:** **`ChatBot.DiscordBrdige`** **Section:** **`ChatBot.DiscordBrdige`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1534,6 +1603,9 @@ redirectFrom:
- **Default:** `A new Teleport Request from **{username}**!` - **Default:** `A new Teleport Request from **{username}**!`
</details>
## Farmer ## Farmer
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
@ -1619,6 +1691,9 @@ redirectFrom:
**Section:** **`ChatBot.Farmer`** **Section:** **`ChatBot.Farmer`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1643,6 +1718,9 @@ redirectFrom:
- **Minimum:** `1` - **Minimum:** `1`
</details>
## Follow player ## Follow player
- **Description:** - **Description:**
@ -1665,6 +1743,9 @@ redirectFrom:
**Section:** **`ChatBot.FollowPlayer`** **Section:** **`ChatBot.FollowPlayer`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1699,6 +1780,9 @@ redirectFrom:
- **Default:** `3.0` - **Default:** `3.0`
</details>
## Hangman ## Hangman
- **Description:** - **Description:**
@ -1719,6 +1803,9 @@ redirectFrom:
**Section:** **`ChatBot.HangmanGame`** **Section:** **`ChatBot.HangmanGame`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1769,6 +1856,9 @@ redirectFrom:
- **Default:** `hangman-fr.txt` - **Default:** `hangman-fr.txt`
- **Example**: [`words-fr.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-fr.txt) - **Example**: [`words-fr.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-fr.txt)
</details>
## Mailer ## Mailer
- **Description:** - **Description:**
@ -1922,6 +2012,9 @@ redirectFrom:
**Section:** **`ChatBot.Map`** **Section:** **`ChatBot.Map`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -2082,6 +2175,9 @@ redirectFrom:
- **Default:** `false` - **Default:** `false`
</details>
## PlayerList Logger ## PlayerList Logger
- **Description:** - **Description:**
@ -2091,6 +2187,9 @@ redirectFrom:
**Section:** **`ChatBot.PlayerListLogger`** **Section:** **`ChatBot.PlayerListLogger`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -2119,6 +2218,9 @@ redirectFrom:
- **Default:** `60.0` - **Default:** `60.0`
</details>
## Remote Control ## Remote Control
- **Description:** - **Description:**
@ -2137,6 +2239,9 @@ redirectFrom:
**Section:** **`ChatBot.RemoteControl`** **Section:** **`ChatBot.RemoteControl`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -2173,6 +2278,9 @@ redirectFrom:
- **Default:** `false` - **Default:** `false`
</details>
## Replay Capture ## Replay Capture
- **Description:** - **Description:**
@ -2201,6 +2309,9 @@ redirectFrom:
**Section:** **`ChatBot.ReplayCapture`** **Section:** **`ChatBot.ReplayCapture`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -2225,6 +2336,9 @@ redirectFrom:
- **Default:** `300.0` - **Default:** `300.0`
</details>
## Script Scheduler ## Script Scheduler
- **Description:** - **Description:**
@ -2235,6 +2349,9 @@ redirectFrom:
**Section:** **`ChatBot.ScriptScheduler`** **Section:** **`ChatBot.ScriptScheduler`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -2344,6 +2461,9 @@ redirectFrom:
Action = "send /login pass" Action = "send /login pass"
``` ```
</details>
## Telegram Bridge ## Telegram Bridge
- **Description:** - **Description:**
@ -2388,6 +2508,9 @@ redirectFrom:
**Section:** **`ChatBot.TelegramBridge`** **Section:** **`ChatBot.TelegramBridge`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -2478,6 +2601,9 @@ redirectFrom:
- **Default:** `A new Teleport Request from **{username}**!` - **Default:** `A new Teleport Request from **{username}**!`
</details>
## Items Collector ## Items Collector
- **Description:** - **Description:**
@ -2488,6 +2614,9 @@ redirectFrom:
**Section:** **`ChatBot.ItemsCollector`** **Section:** **`ChatBot.ItemsCollector`**
<details>
<summary>All settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -2577,3 +2706,6 @@ redirectFrom:
- **Default:** `true` - **Default:** `true`
</details>

View file

@ -60,6 +60,9 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Section header:** `Main.General` - **Section header:** `Main.General`
<details>
<summary>Account, Server, and Authentication settings</summary>
#### `Account` #### `Account`
- **Description:** - **Description:**
@ -174,10 +177,15 @@ Coordinate = { x = 145, y = 64, z = 2045 }
AuthUser = "SomePlayer" AuthUser = "SomePlayer"
``` ```
</details>
### Main Advanced section ### Main Advanced section
- **Section header:** `Main.Advanced` - **Section header:** `Main.Advanced`
<details>
<summary>Advanced settings (Language, Version, Features, and more)</summary>
#### `Language` #### `Language`
- **Description:** - **Description:**
@ -661,6 +669,8 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Default:** `true` - **Default:** `true`
</details>
### Account List section ### Account List section
- **Section header:** `Main.Advanced.AccountList` - **Section header:** `Main.Advanced.AccountList`
@ -724,6 +734,9 @@ Coordinate = { x = 145, y = 64, z = 2045 }
This section contains settings related to a new chat reporting (signing and verifying) feature introduced by Mojang. This section contains settings related to a new chat reporting (signing and verifying) feature introduced by Mojang.
<details>
<summary>Chat signing and verification settings</summary>
#### `LoginWithSecureProfile` #### `LoginWithSecureProfile`
- **Description:** - **Description:**
@ -816,10 +829,15 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Default:** `true` - **Default:** `true`
</details>
### App Vars values section ### App Vars values section
- **Section header:** `AppVar.VarStirng` - **Section header:** `AppVar.VarStirng`
<details>
<summary>Logging and filtering settings</summary>
#### `DebugMessages` #### `DebugMessages`
- **Description:** - **Description:**
@ -968,6 +986,8 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Default:** `false` - **Default:** `false`
</details>
## App Vars section ## App Vars section
- **Section header:** `AppVar` - **Section header:** `AppVar`
@ -1005,6 +1025,9 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Section header:** `Console.General` - **Section header:** `Console.General`
<details>
<summary>Console display settings</summary>
#### `ConsoleColorMode` #### `ConsoleColorMode`
- **Description:** - **Description:**
@ -1037,6 +1060,8 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Default:** `32` - **Default:** `32`
</details>
### Console CommandSuggestion section ### Console CommandSuggestion section
- **Section header:** `Console.CommandSuggestion` - **Section header:** `Console.CommandSuggestion`
@ -1045,6 +1070,9 @@ Coordinate = { x = 145, y = 64, z = 2045 }
Command completion suggestions in the console. Command completion suggestions in the console.
<details>
<summary>Command suggestion settings</summary>
#### `Enable` #### `Enable`
- **Description:** - **Description:**
@ -1103,6 +1131,8 @@ Coordinate = { x = 145, y = 64, z = 2045 }
MCC validates these values on startup and falls back to built-in defaults if a color string is invalid. MCC validates these values on startup and falls back to built-in defaults if a color string is invalid.
</details>
## Proxy section ## Proxy section
- **Section header:** `Proxy` - **Section header:** `Proxy`
@ -1111,6 +1141,9 @@ Coordinate = { x = 145, y = 64, z = 2045 }
Connect to a server via a proxy instead of connecting directly. Connect to a server via a proxy instead of connecting directly.
<details>
<summary>Proxy settings</summary>
#### `Enabled_Login` #### `Enabled_Login`
- **Description:** - **Description:**
@ -1202,6 +1235,8 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Default:** `` `` - **Default:** `` ``
</details>
## MCSettings section ## MCSettings section
- **Section header:** `MCSettings` - **Section header:** `MCSettings`
@ -1210,6 +1245,9 @@ Coordinate = { x = 145, y = 64, z = 2045 }
Client settings related to language, render distance, difficulty, chat and skins. Client settings related to language, render distance, difficulty, chat and skins.
<details>
<summary>Game client settings</summary>
#### `Enabled` #### `Enabled`
- **Description:** - **Description:**
@ -1293,6 +1331,8 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Default:** `left` - **Default:** `left`
</details>
## MCSettings Skin section ## MCSettings Skin section
- **Section header:** `MCSettings.Skin` - **Section header:** `MCSettings.Skin`
@ -1301,6 +1341,9 @@ Coordinate = { x = 145, y = 64, z = 2045 }
Skin options. Skin options.
<details>
<summary>Skin visibility settings</summary>
#### `Cape` #### `Cape`
- **Description:** - **Description:**
@ -1371,6 +1414,8 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Default:** `false` - **Default:** `false`
</details>
## Chat Format section ## Chat Format section
- **Section header:** `ChatFormat` - **Section header:** `ChatFormat`
@ -1395,6 +1440,9 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- [https://regex101.com/](https://regex101.com/) - [https://regex101.com/](https://regex101.com/)
- [https://regexr.com/](https://regexr.com/) - [https://regexr.com/](https://regexr.com/)
<details>
<summary>Chat format settings</summary>
#### `Builtins` #### `Builtins`
- **Description:** - **Description:**
@ -1461,6 +1509,8 @@ Coordinate = { x = 145, y = 64, z = 2045 }
- **Default:** `TeleportRequest = '^([a-zA-Z0-9_]+) has requested (?:to|that you) teleport to (?:you|them)\.$'` - **Default:** `TeleportRequest = '^([a-zA-Z0-9_]+) has requested (?:to|that you) teleport to (?:you|them)\.$'`
</details>
## Chat Bot section ## Chat Bot section
- **Section header:** `ChatBot` - **Section header:** `ChatBot`

View file

@ -30,6 +30,9 @@ However, if you want to build the program from source code, please follow the gu
### Windows ### Windows
<details>
<summary>Windows build instructions</summary>
Requirements: Requirements:
- [Git](https://www.git-scm.com/) - [Git](https://www.git-scm.com/)
@ -119,8 +122,13 @@ dotnet --info
If the publish step succeeds, the published binary `MinecraftClient.exe` will be in `MinecraftClient/bin/Release/net10.0/win-x64/publish/`. If the publish step succeeds, the published binary `MinecraftClient.exe` will be in `MinecraftClient/bin/Release/net10.0/win-x64/publish/`.
</details>
### Linux, macOS ### Linux, macOS
<details>
<summary>Linux and macOS build instructions</summary>
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
**If you're using Linux we will assume that you should be able to install git on your own. If you don't know how, search it up for your distribution, it should be easy. (Debian based distros: `apt install git`, Arch based: `pacman -S git`)** **If you're using Linux we will assume that you should be able to install git on your own. If you don't know how, search it up for your distribution, it should be easy. (Debian based distros: `apt install git`, Arch based: `pacman -S git`)**
@ -206,8 +214,13 @@ You can verify the SDK installation with:
dotnet --info dotnet --info
``` ```
</details>
## Using Docker ## Using Docker
<details>
<summary>Docker setup and usage</summary>
Requirements: Requirements:
- Git - Git
@ -295,6 +308,8 @@ As above, you can stop and remove the container using
docker-compose down docker-compose down
``` ```
</details>
## Run on Android ## Run on Android
It is possible to run Minecraft Console Client on Android through Termux and Ubuntu 24.04, but it requires a manual setup with a lot of commands, so be careful not to skip any steps. Depending on your technical background, internet speed, and device speed, this can take anywhere from 10 to 20 minutes or more. It is possible to run Minecraft Console Client on Android through Termux and Ubuntu 24.04, but it requires a manual setup with a lot of commands, so be careful not to skip any steps. Depending on your technical background, internet speed, and device speed, this can take anywhere from 10 to 20 minutes or more.
@ -319,6 +334,9 @@ It is possible to run Minecraft Console Client on Android through Termux and Ubu
### Installation ### Installation
<details>
<summary>Android installation steps (Termux + Ubuntu + .NET + MCC)</summary>
#### Termux #### Termux
<div class="custom-container warning"><p class="custom-container-title">Warning</p> <div class="custom-container warning"><p class="custom-container-title">Warning</p>
@ -579,6 +597,8 @@ Also, here are some linux tutorials for people who are new to it:
- [Linux Crash Course - The wget Command by Learn Linux TV](https://www.youtube.com/watch?v=F80Z5qd2b_4) - [Linux Crash Course - The wget Command by Learn Linux TV](https://www.youtube.com/watch?v=F80Z5qd2b_4)
- [Linux Basics: How to Untar and Unzip Files (tar, gzip) by webpwnized](https://www.youtube.com/watch?v=1DF0dTscHHs) - [Linux Basics: How to Untar and Unzip Files (tar, gzip) by webpwnized](https://www.youtube.com/watch?v=1DF0dTscHHs)
</details>
## Run on a VPS ## Run on a VPS
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
@ -636,6 +656,9 @@ Here is a [YouTube video](https://youtu.be/42fwh_1KP_o) that explains it in more
### Where to get a VPS ### Where to get a VPS
<details>
<summary>VPS providers and pricing</summary>
You have 2 options: You have 2 options:
- [Buying a VPS](#buying-a-vps) - [Buying a VPS](#buying-a-vps)
@ -719,8 +742,13 @@ Register on AWS and enter all of your billing info and a phone number.
Once you're done, you can continue to [Setting up the Amazon VPS](#setting-up-an-aws-vps). Once you're done, you can continue to [Setting up the Amazon VPS](#setting-up-an-aws-vps).
</details>
### Initial Amazon VPS setup ### Initial Amazon VPS setup
<details>
<summary>AWS EC2 setup steps</summary>
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
**Skip this section if you're not using AWS. Go to [Initial VPS setup](#initial-vps-setup)** **Skip this section if you're not using AWS. Go to [Initial VPS setup](#initial-vps-setup)**
@ -815,8 +843,13 @@ If you've provided the right info you should get `Welcome to Ubuntu 20.04.5 LTS`
Now you can continue to [Creating a new user](#creating-a-new-user) Now you can continue to [Creating a new user](#creating-a-new-user)
</details>
### Initial VPS setup ### Initial VPS setup
<details>
<summary>Non-AWS VPS login steps</summary>
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
**This section if for those who do not use AWS, if you use AWS skip it** **This section if for those who do not use AWS, if you use AWS skip it**
@ -855,8 +888,13 @@ ssh -p 2233 root@142.26.73.14
Once you've logged in you should see a Linux prompt and a welcome message if there is one set by your provider. Once you've logged in you should see a Linux prompt and a welcome message if there is one set by your provider.
</details>
### Creating a new user ### Creating a new user
<details>
<summary>User account and SSH key setup</summary>
Once you've logged in to your VPS you need to create a new user and give it SSH access. Once you've logged in to your VPS you need to create a new user and give it SSH access.
In this tutorial we will be using `mcc` as a name for the user account that will be running the MCC. In this tutorial we will be using `mcc` as a name for the user account that will be running the MCC.
@ -1051,8 +1089,13 @@ You can do `whoami` to see your username.
Now you can install the .NET 10 SDK and MCC. Now you can install the .NET 10 SDK and MCC.
</details>
### Installing .NET 10 SDK ### Installing .NET 10 SDK
<details>
<summary>.NET SDK installation on VPS</summary>
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
**If your VPS has an ARM CPU, follow [this](#installing-net-on-arm) part of the documentation and then return to section after this one.** **If your VPS has an ARM CPU, follow [this](#installing-net-on-arm) part of the documentation and then return to section after this one.**
@ -1105,8 +1148,13 @@ If you do not get this output and the installation was not successful, [try othe
If it was successful, you can now install MCC. If it was successful, you can now install MCC.
</details>
### Installing MCC on a VPS ### Installing MCC on a VPS
<details>
<summary>MCC installation and screen usage</summary>
Now that you have the .NET SDK and a user account, install the `screen` utility. You will need it if you want MCC to keep running after you close the SSH session. Now that you have the .NET SDK and a user account, install the `screen` utility. You will need it if you want MCC to keep running after you close the SSH session.
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
@ -1178,3 +1226,5 @@ screen -ls
``` ```
To stop the MCC, you can hit `CTRL + D` (hit it few times). To stop the MCC, you can hit `CTRL + D` (hit it few times).
</details>

View file

@ -63,6 +63,10 @@ See [Run using Docker](./installation.md#using-docker)
### For people not familiar with the command line ### For people not familiar with the command line
<details>
<summary>Introduction to command-line basics</summary>
For people who are not familiar with the usage of programs in the command line (terminal emulators), here we will explain what every single thing means, if you're already experienced you can skip this. For people who are not familiar with the usage of programs in the command line (terminal emulators), here we will explain what every single thing means, if you're already experienced you can skip this.
In command line (terminal emulators) you can run programs by specifying their name and hitting enter, usually programs have additional way of being configured, started or provided some additional data in a different manner, this is achieved by using command line parameters. In command line (terminal emulators) you can run programs by specifying their name and hitting enter, usually programs have additional way of being configured, started or provided some additional data in a different manner, this is achieved by using command line parameters.
@ -99,6 +103,8 @@ MinecraftClient.exe --help
MCC also supports a few maintenance and debugging switches such as `--upgrade`, `--force-upgrade`, `--generate`, `--keyboard-debug`, `BasicIO`, and `BasicIO-NoColor`. MCC also supports a few maintenance and debugging switches such as `--upgrade`, `--force-upgrade`, `--generate`, `--keyboard-debug`, `BasicIO`, and `BasicIO-NoColor`.
</details>
### Quick usage of MCC with examples ### Quick usage of MCC with examples
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
@ -189,7 +195,9 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
</div> </div>
### `animation` <details>
<summary><code>animation</code></summary>
- **Description:** - **Description:**
@ -201,7 +209,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/animation <mainhand|offhand> /animation <mainhand|offhand>
``` ```
### `bed` </details>
<details>
<summary><code>bed</code></summary>
- **Description:** - **Description:**
@ -237,7 +250,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/bed sleep 50 /bed sleep 50
``` ```
### `blockinfo` </details>
<details>
<summary><code>blockinfo</code></summary>
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
@ -259,7 +277,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/blockinfo <x> <y> <z> [-s] /blockinfo <x> <y> <z> [-s]
``` ```
### `bots` </details>
<details>
<summary><code>bots</code></summary>
- **Description:** - **Description:**
@ -287,7 +310,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/bots unload all /bots unload all
``` ```
### `changeslot` </details>
<details>
<summary><code>changeslot</code></summary>
- **Description:** - **Description:**
@ -305,7 +333,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/changeslot <1-9> /changeslot <1-9>
``` ```
### `chunk` </details>
<details>
<summary><code>chunk</code></summary>
- **Description:** - **Description:**
@ -333,7 +366,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
![Chunk status](/images/guide/ChunkStatus.png) ![Chunk status](/images/guide/ChunkStatus.png)
### `dig` </details>
<details>
<summary><code>dig</code></summary>
- **Description:** - **Description:**
@ -357,7 +395,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/dig ~ ~-1 ~2 /dig ~ ~-1 ~2
``` ```
### `dropitem` </details>
<details>
<summary><code>dropitem</code></summary>
- **Description:** - **Description:**
@ -387,7 +430,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/dropitem diamond /dropitem diamond
``` ```
### `enchant` </details>
<details>
<summary><code>enchant</code></summary>
<div class="custom-container tip"><p class="custom-container-title">Tip</p> <div class="custom-container tip"><p class="custom-container-title">Tip</p>
@ -411,7 +459,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/enchant <top|middle|bottom> /enchant <top|middle|bottom>
``` ```
### `entity` </details>
<details>
<summary><code>entity</code></summary>
- **Description:** - **Description:**
@ -451,7 +504,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/entity Zombie attack /entity Zombie attack
``` ```
### `execif` </details>
<details>
<summary><code>execif</code></summary>
- **Description:** - **Description:**
@ -513,7 +571,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/execif "1 == 1" "execmulti send 1 -> send 2 -> send 3" /execif "1 == 1" "execmulti send 1 -> send 2 -> send 3"
``` ```
### `execmulti` </details>
<details>
<summary><code>execmulti</code></summary>
- **Description:** - **Description:**
@ -531,14 +594,24 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/execmulti send 1 -> send 2 -> send 3 -> sneak /execmulti send 1 -> send 2 -> send 3 -> sneak
``` ```
### `quit` </details>
<details>
<summary><code>quit</code></summary>
- **Alias:** `exit` - **Alias:** `exit`
- **Description:** - **Description:**
Disconnect from the server and close the application Disconnect from the server and close the application
### `reco` </details>
<details>
<summary><code>reco</code></summary>
- **Description:** - **Description:**
@ -556,7 +629,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
</div> </div>
### `reload` </details>
<details>
<summary><code>reload</code></summary>
- **Description:** - **Description:**
@ -574,7 +652,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/reload /reload
``` ```
### `connect` </details>
<details>
<summary><code>connect</code></summary>
- **Description:** - **Description:**
@ -598,7 +681,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
</div> </div>
### `script` </details>
<details>
<summary><code>script</code></summary>
- **Description:** - **Description:**
@ -610,7 +698,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/script <script name> /script <script name>
``` ```
### `send` </details>
<details>
<summary><code>send</code></summary>
- **Description:** - **Description:**
@ -622,7 +715,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/send <text> /send <text>
``` ```
### `respawn` </details>
<details>
<summary><code>respawn</code></summary>
- **Description:** - **Description:**
@ -634,7 +732,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/respawn /respawn
``` ```
### `log` </details>
<details>
<summary><code>log</code></summary>
- **Description:** - **Description:**
@ -652,7 +755,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/log this is some text /log this is some text
``` ```
### `list` </details>
<details>
<summary><code>list</code></summary>
- **Description:** - **Description:**
@ -664,7 +772,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/list /list
``` ```
### `set` </details>
<details>
<summary><code>set</code></summary>
- **Description:** - **Description:**
@ -682,7 +795,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/set abc=123 /set abc=123
``` ```
### `setrnd` </details>
<details>
<summary><code>setrnd</code></summary>
- **Description:** - **Description:**
@ -702,7 +820,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
(Set a `%variable%` to a number from -7 to 10) (Set a `%variable%` to a number from -7 to 10)
### `sneak` </details>
<details>
<summary><code>sneak</code></summary>
- **Description:** - **Description:**
@ -714,7 +837,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/Sneak /Sneak
``` ```
### `tps` </details>
<details>
<summary><code>tps</code></summary>
- **Description:** - **Description:**
@ -726,7 +854,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/tps /tps
``` ```
### `useitem` </details>
<details>
<summary><code>useitem</code></summary>
- **Description:** - **Description:**
@ -750,7 +883,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/useitem /useitem
``` ```
### `useblock` </details>
<details>
<summary><code>useblock</code></summary>
- **Description:** - **Description:**
@ -794,7 +932,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/useblock 43 72 7 /useblock 43 72 7
``` ```
### `follow` </details>
<details>
<summary><code>follow</code></summary>
- **Description:** - **Description:**
@ -830,7 +973,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/follow milutinke /follow milutinke
``` ```
### `wait` </details>
<details>
<summary><code>wait</code></summary>
- **Description:** - **Description:**
@ -870,7 +1018,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/wait 20-35 /wait 20-35
``` ```
### `move` </details>
<details>
<summary><code>move</code></summary>
- **Description:** - **Description:**
@ -914,7 +1067,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/move center /move center
``` ```
### `nameitem` </details>
<details>
<summary><code>nameitem</code></summary>
- **Description:** - **Description:**
@ -959,7 +1117,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/inventory container close /inventory container close
``` ```
### `look` </details>
<details>
<summary><code>look</code></summary>
- **Description:** - **Description:**
@ -981,7 +1144,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/look east /look east
``` ```
### `inventory` </details>
<details>
<summary><code>inventory</code></summary>
- **Description:** - **Description:**
@ -1166,13 +1334,23 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
/inventory s SlimeBlock 10 /inventory s SlimeBlock 10
``` ```
### `debug` </details>
<details>
<summary><code>debug</code></summary>
- **Description:** - **Description:**
Toggle debug messages, useful for chatbot developers. Toggle debug messages, useful for chatbot developers.
### `help` </details>
<details>
<summary><code>help</code></summary>
- **Description:** - **Description:**
@ -1183,3 +1361,6 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
**Use "/send /help" for server help** **Use "/send /help" for server help**
</div> </div>
</details>