diff --git a/AGENTS.md b/AGENTS.md index b8fbcd39..20281931 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -49,12 +49,14 @@ Feature columns mean: | 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.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: -- 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. -- 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 ### Core Runtime @@ -62,9 +64,10 @@ Notes: | 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/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/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 @@ -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/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/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` | ### Support And Tooling @@ -81,24 +84,27 @@ Notes: | 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` | -| `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` | -| `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` | +| `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/`, `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` | | `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 +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 - 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. -- 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. - 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. - Normalize inbound chat with `GetVerbatim()` before `IsChatMessage()` / `IsPrivateMessage()`. - 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. -- 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 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 leave movement locks, plugin channels, or dispatcher registrations behind. - 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! diff --git a/docs/.vuepress/styles/index.scss b/docs/.vuepress/styles/index.scss index dbe9cbc8..3be2b2ca 100644 --- a/docs/.vuepress/styles/index.scss +++ b/docs/.vuepress/styles/index.scss @@ -82,3 +82,82 @@ border-radius: 0.5rem; } } + +/* Collapsible
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; + } +} diff --git a/docs/guide/chat-bots.md b/docs/guide/chat-bots.md index 0dcf7965..ed912651 100644 --- a/docs/guide/chat-bots.md +++ b/docs/guide/chat-bots.md @@ -67,6 +67,9 @@ redirectFrom: **Section:** **`ChatBot.Alerts`** +
+ All settings + #### `Enabled` - **Description:** @@ -181,6 +184,9 @@ redirectFrom: Excludes = [ "myserver.com", "Yourname>:", "Player Yourname", "Yourname joined", "Yourname left", "[Lockette] (Admin)", " Yourname:", "Yourname is", ] ``` + +
+ ## Anti AFK - **Description:** @@ -191,6 +197,9 @@ redirectFrom: **Section:** **`ChatBot.AntiAFK`** +
+ All settings + #### `Enabled` - **Description:** @@ -281,6 +290,9 @@ redirectFrom: - **Default:** `20` + +
+ ## Auto Attack

Tip

@@ -297,6 +309,9 @@ redirectFrom: **Section:** **`ChatBot.AutoAttack`** +
+ All settings + #### `Enabled` - **Description:** @@ -432,6 +447,9 @@ redirectFrom: - **Default:** `[ "Zombie", "Cow", ]` + +
+ ## Auto Craft

Tip

@@ -466,6 +484,9 @@ redirectFrom: **Section:** **`ChatBot.AutoCraft`** +
+ All settings + #### `Enabled` - **Description:** @@ -609,6 +630,9 @@ redirectFrom:
+ +
+ ## Auto Dig - **Description:** @@ -637,6 +661,9 @@ redirectFrom: **Section:** **`ChatBot.AutoDig`** +
+ All settings + #### `Enabled` - **Description:** @@ -780,6 +807,9 @@ redirectFrom: - **Default:** `[ "Cobblestone", "Stone", ]` + +
+ ## Auto Drop - **Description:** @@ -796,6 +826,9 @@ redirectFrom: **Section:** **`ChatBot.AutoDrop`** +
+ All settings + #### `Enabled` - **Description:** @@ -855,6 +888,9 @@ redirectFrom: - **Default:** `[ "Cobblestone", "Dirt", ]` + +
+ ## Auto Eat - **Description:** @@ -871,6 +907,9 @@ redirectFrom: **Section:** **`ChatBot.AutoEat`** +
+ All settings + #### `Enabled` - **Description:** @@ -893,6 +932,9 @@ redirectFrom: - **Default:** `6` + +
+ ## Auto Fishing - **Description:** @@ -934,6 +976,9 @@ redirectFrom: **Section:** **`ChatBot.AutoFishing`** +
+ All settings + #### `Enabled` - **Description:** @@ -1150,6 +1195,9 @@ redirectFrom: facing = { yaw = -25.14, pitch = 36.25 } ``` + +
+ ## Auto Relog - **Description:** @@ -1160,6 +1208,9 @@ redirectFrom: **Section:** **`ChatBot.AutoRelog`** +
+ All settings + #### `Enabled` - **Description:** @@ -1226,6 +1277,9 @@ redirectFrom: - **Default:** `[ "Connection has been lost", "Server is restarting", "Server is full", "Too Many people", ]` + +
+ ## Auto Respond - **Description:** @@ -1248,6 +1302,9 @@ redirectFrom: **Section:** **`ChatBot.AutoRespond`** +
+ All settings + #### `Enabled` - **Description:** @@ -1306,6 +1363,9 @@ redirectFrom: - **Default:** `false` + +
+ ## Chat Log - **Description:** @@ -1316,6 +1376,9 @@ redirectFrom: **Section:** **`ChatBot.ChatLog`** +
+ All settings + #### `Enabled` - **Description:** @@ -1374,6 +1437,9 @@ redirectFrom: - **Default:** `messages` + +
+ ## Discord Bridge - **Description:** @@ -1442,6 +1508,9 @@ redirectFrom: **Section:** **`ChatBot.DiscordBrdige`** +
+ All settings + #### `Enabled` - **Description:** @@ -1534,6 +1603,9 @@ redirectFrom: - **Default:** `A new Teleport Request from **{username}**!` + +
+ ## Farmer

Tip

@@ -1619,6 +1691,9 @@ redirectFrom: **Section:** **`ChatBot.Farmer`** +
+ All settings + #### `Enabled` - **Description:** @@ -1643,6 +1718,9 @@ redirectFrom: - **Minimum:** `1` + +
+ ## Follow player - **Description:** @@ -1665,6 +1743,9 @@ redirectFrom: **Section:** **`ChatBot.FollowPlayer`** +
+ All settings + #### `Enabled` - **Description:** @@ -1699,6 +1780,9 @@ redirectFrom: - **Default:** `3.0` + +
+ ## Hangman - **Description:** @@ -1719,6 +1803,9 @@ redirectFrom: **Section:** **`ChatBot.HangmanGame`** +
+ All settings + #### `Enabled` - **Description:** @@ -1769,6 +1856,9 @@ redirectFrom: - **Default:** `hangman-fr.txt` - **Example**: [`words-fr.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-fr.txt) + +
+ ## Mailer - **Description:** @@ -1922,6 +2012,9 @@ redirectFrom: **Section:** **`ChatBot.Map`** +
+ All settings + #### `Enabled` - **Description:** @@ -2082,6 +2175,9 @@ redirectFrom: - **Default:** `false` + +
+ ## PlayerList Logger - **Description:** @@ -2091,6 +2187,9 @@ redirectFrom: **Section:** **`ChatBot.PlayerListLogger`** +
+ All settings + #### `Enabled` - **Description:** @@ -2119,6 +2218,9 @@ redirectFrom: - **Default:** `60.0` + +
+ ## Remote Control - **Description:** @@ -2137,6 +2239,9 @@ redirectFrom: **Section:** **`ChatBot.RemoteControl`** +
+ All settings + #### `Enabled` - **Description:** @@ -2173,6 +2278,9 @@ redirectFrom: - **Default:** `false` + +
+ ## Replay Capture - **Description:** @@ -2201,6 +2309,9 @@ redirectFrom: **Section:** **`ChatBot.ReplayCapture`** +
+ All settings + #### `Enabled` - **Description:** @@ -2225,6 +2336,9 @@ redirectFrom: - **Default:** `300.0` + +
+ ## Script Scheduler - **Description:** @@ -2235,6 +2349,9 @@ redirectFrom: **Section:** **`ChatBot.ScriptScheduler`** +
+ All settings + #### `Enabled` - **Description:** @@ -2344,6 +2461,9 @@ redirectFrom: Action = "send /login pass" ``` + +
+ ## Telegram Bridge - **Description:** @@ -2388,6 +2508,9 @@ redirectFrom: **Section:** **`ChatBot.TelegramBridge`** +
+ All settings + #### `Enabled` - **Description:** @@ -2478,6 +2601,9 @@ redirectFrom: - **Default:** `A new Teleport Request from **{username}**!` +
+ + ## Items Collector - **Description:** @@ -2488,6 +2614,9 @@ redirectFrom: **Section:** **`ChatBot.ItemsCollector`** +
+ All settings + #### `Enabled` - **Description:** @@ -2577,3 +2706,6 @@ redirectFrom: - **Default:** `true` +
+ + diff --git a/docs/guide/configuration.md b/docs/guide/configuration.md index ce6c23de..cf73256b 100644 --- a/docs/guide/configuration.md +++ b/docs/guide/configuration.md @@ -60,6 +60,9 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Section header:** `Main.General` +
+Account, Server, and Authentication settings + #### `Account` - **Description:** @@ -174,10 +177,15 @@ Coordinate = { x = 145, y = 64, z = 2045 } AuthUser = "SomePlayer" ``` +
+ ### Main Advanced section - **Section header:** `Main.Advanced` +
+Advanced settings (Language, Version, Features, and more) + #### `Language` - **Description:** @@ -661,6 +669,8 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `true` +
+ ### Account List section - **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. +
+Chat signing and verification settings + #### `LoginWithSecureProfile` - **Description:** @@ -816,10 +829,15 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `true` +
+ ### App Vars values section - **Section header:** `AppVar.VarStirng` +
+Logging and filtering settings + #### `DebugMessages` - **Description:** @@ -968,6 +986,8 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `false` +
+ ## App Vars section - **Section header:** `AppVar` @@ -1005,6 +1025,9 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Section header:** `Console.General` +
+Console display settings + #### `ConsoleColorMode` - **Description:** @@ -1037,6 +1060,8 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `32` +
+ ### Console CommandSuggestion section - **Section header:** `Console.CommandSuggestion` @@ -1045,6 +1070,9 @@ Coordinate = { x = 145, y = 64, z = 2045 } Command completion suggestions in the console. +
+Command suggestion settings + #### `Enable` - **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. +
+ ## Proxy section - **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. +
+Proxy settings + #### `Enabled_Login` - **Description:** @@ -1202,6 +1235,8 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `` `` +
+ ## MCSettings section - **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. +
+Game client settings + #### `Enabled` - **Description:** @@ -1293,6 +1331,8 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `left` +
+ ## MCSettings Skin section - **Section header:** `MCSettings.Skin` @@ -1301,6 +1341,9 @@ Coordinate = { x = 145, y = 64, z = 2045 } Skin options. +
+Skin visibility settings + #### `Cape` - **Description:** @@ -1371,6 +1414,8 @@ Coordinate = { x = 145, y = 64, z = 2045 } - **Default:** `false` +
+ ## Chat Format section - **Section header:** `ChatFormat` @@ -1395,6 +1440,9 @@ Coordinate = { x = 145, y = 64, z = 2045 } - [https://regex101.com/](https://regex101.com/) - [https://regexr.com/](https://regexr.com/) +
+Chat format settings + #### `Builtins` - **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)\.$'` +
+ ## Chat Bot section - **Section header:** `ChatBot` diff --git a/docs/guide/installation.md b/docs/guide/installation.md index 77082f1a..ae3ff235 100644 --- a/docs/guide/installation.md +++ b/docs/guide/installation.md @@ -30,6 +30,9 @@ However, if you want to build the program from source code, please follow the gu ### Windows +
+Windows build instructions + Requirements: - [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/`. +
+ ### Linux, macOS +
+Linux and macOS build instructions +

Tip

**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 ``` +
+ ## Using Docker +
+Docker setup and usage + Requirements: - Git @@ -295,6 +308,8 @@ As above, you can stop and remove the container using docker-compose down ``` +
+ ## 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. @@ -319,6 +334,9 @@ It is possible to run Minecraft Console Client on Android through Termux and Ubu ### Installation +
+Android installation steps (Termux + Ubuntu + .NET + MCC) + #### Termux

Warning

@@ -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 Basics: How to Untar and Unzip Files (tar, gzip) by webpwnized](https://www.youtube.com/watch?v=1DF0dTscHHs) +
+ ## Run on a VPS

Tip

@@ -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 +
+VPS providers and pricing + You have 2 options: - [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). +
+ ### Initial Amazon VPS setup +
+AWS EC2 setup steps +

Tip

**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) +
+ ### Initial VPS setup +
+Non-AWS VPS login steps +

Tip

**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. +
+ ### Creating a new user +
+User account and SSH key setup + 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. @@ -1051,8 +1089,13 @@ You can do `whoami` to see your username. Now you can install the .NET 10 SDK and MCC. +
+ ### Installing .NET 10 SDK +
+.NET SDK installation on VPS +

Tip

**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. +
+ ### Installing MCC on a VPS +
+MCC installation and screen usage + 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.

Tip

@@ -1178,3 +1226,5 @@ screen -ls ``` To stop the MCC, you can hit `CTRL + D` (hit it few times). + +
diff --git a/docs/guide/usage.md b/docs/guide/usage.md index 93d5d150..19bf0f44 100644 --- a/docs/guide/usage.md +++ b/docs/guide/usage.md @@ -63,6 +63,10 @@ See [Run using Docker](./installation.md#using-docker) ### For people not familiar with the command line +
+Introduction to command-line basics + + 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. @@ -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`. +
+ ### Quick usage of MCC with examples

Tip

@@ -189,7 +195,9 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
-### `animation` +
+animation + - **Description:** @@ -201,7 +209,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /animation ``` -### `bed` +
+ + +
+bed + - **Description:** @@ -237,7 +250,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /bed sleep 50 ``` -### `blockinfo` +
+ + +
+blockinfo +

Tip

@@ -259,7 +277,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /blockinfo [-s] ``` -### `bots` +
+ + +
+bots + - **Description:** @@ -287,7 +310,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /bots unload all ``` -### `changeslot` +
+ + +
+changeslot + - **Description:** @@ -305,7 +333,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /changeslot <1-9> ``` -### `chunk` +
+ + +
+chunk + - **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) -### `dig` +
+ + +
+dig + - **Description:** @@ -357,7 +395,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /dig ~ ~-1 ~2 ``` -### `dropitem` +
+ + +
+dropitem + - **Description:** @@ -387,7 +430,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /dropitem diamond ``` -### `enchant` +
+ + +
+enchant +

Tip

@@ -411,7 +459,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /enchant ``` -### `entity` +
+ + +
+entity + - **Description:** @@ -451,7 +504,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /entity Zombie attack ``` -### `execif` +
+ + +
+execif + - **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" ``` -### `execmulti` +
+ + +
+execmulti + - **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 ``` -### `quit` +
+ + +
+quit + - **Alias:** `exit` - **Description:** Disconnect from the server and close the application -### `reco` +
+ + +
+reco + - **Description:** @@ -556,7 +629,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
-### `reload` + + + +
+reload + - **Description:** @@ -574,7 +652,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /reload ``` -### `connect` +
+ + +
+connect + - **Description:** @@ -598,7 +681,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
-### `script` + + + +
+script + - **Description:** @@ -610,7 +698,12 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q /script