diff --git a/docs/guide/README.md b/docs/guide/README.md index e2d179b3..b645b958 100644 --- a/docs/guide/README.md +++ b/docs/guide/README.md @@ -32,46 +32,63 @@ It was originally made by [ORelio](https://github.com/ORelio) in 2012 on the [Mi ## Features -- Chat +- Chat - - Send and receive chat messages - - [Log chat history](chat-bots.md#chat-log) - - [Get alerted on certain keywords](chat-bots.md#alerts) - - [Auto Respond](chat-bots.md#auto-respond) + - Send and receive chat messages + - [Log chat history](chat-bots.md#chat-log) + - [Get alerted on certain keywords](chat-bots.md#alerts) + - [Auto Respond](chat-bots.md#auto-respond) -- Microsoft account authentication with 2FA support (OAuth 2.0 device code flow) -- [Anti AFK](chat-bots.md#anti-afk) -- [Auto Relog](chat-bots.md#auto-relog) -- [Script Scheduler](chat-bots.md#script-scheduler) -- [Remote Control](chat-bots.md#remote-control) -- [Auto Respond](chat-bots.md#auto-respond) -- [Auto Attack](chat-bots.md#auto-attack) -- [Auto Fishing](chat-bots.md#auto-fishing) -- [Auto Eat](chat-bots.md#auto-eat) -- [Auto Craft](chat-bots.md#auto-craft) -- [Mailer Bot](chat-bots.md#mailer) -- [Auto Drop](chat-bots.md#auto-drop) -- [Replay Mod](chat-bots.md#replay-mod) -- [API for creating Bots in C#](creating-bots.md#creating-chat-bots) -- [Docker Support](installation.md#using-docker) -- [Inventory Handling](usage.md#inventory) -- [Terrain Traversing](usage.md#move) -- Entity Handling +- Microsoft account authentication with 2FA support (OAuth 2.0 device code flow) + +- [Anti AFK](chat-bots.md#anti-afk) + +- [Auto Relog](chat-bots.md#auto-relog) + +- [Script Scheduler](chat-bots.md#script-scheduler) + +- [Remote Control](chat-bots.md#remote-control) + +- [Auto Respond](chat-bots.md#auto-respond) + +- [Auto Attack](chat-bots.md#auto-attack) + +- [Auto Fishing](chat-bots.md#auto-fishing) + +- [Auto Eat](chat-bots.md#auto-eat) + +- [Auto Craft](chat-bots.md#auto-craft) + +- [Mailer Bot](chat-bots.md#mailer) + +- [Auto Drop](chat-bots.md#auto-drop) + +- [Replay Mod](chat-bots.md#replay-mod) + +- [API for creating Bots in C#](creating-bots.md#creating-chat-bots) + +- [Docker Support](installation.md#using-docker) + +- [Inventory Handling](usage.md#inventory) + +- [Terrain Traversing](usage.md#move) + +- Entity Handling _Note: Some of these features are disabled by default. You need to enable them in the configuration file, and some also require additional setup._ ## Why Minecraft Console Client? -- Easy to use -- Helpful community -- Open-Source -- Fast performance -- Easy Scripting/Automation -- Cross-Platform -- Docker Support -- 10 years of continuous development -- Active contributors -- Widely used +- Easy to use +- Helpful community +- Open-Source +- Fast performance +- Easy Scripting/Automation +- Cross-Platform +- Docker Support +- 10 years of continuous development +- Active contributors +- Widely used ## Quick Intro @@ -81,13 +98,13 @@ If you do not want to read through the documentation right away, the community h Installation: -- [Installation on Windows by Daenges](https://www.youtube.com/watch?v=BkCqOCa2uQw) -- [Installation on Windows + Auto AFK and More by Dexter113](https://www.youtube.com/watch?v=FxJ0KFIHDrY) +- [Installation on Windows by Daenges](https://www.youtube.com/watch?v=BkCqOCa2uQw) +- [Installation on Windows + Auto AFK and More by Dexter113](https://www.youtube.com/watch?v=FxJ0KFIHDrY) Using Commands, Scripts and other features: -- [Minecraft Console Client | Tutorial | Commands, Scripts, AppVars, Matches, Tasks and C# Scripts by Daenges](https://youtu.be/JbDpwwETEnU) -- [Console Client Tutorial - Scripting by Zixxter](https://www.youtube.com/watch?v=XE7rYBFJxn0) +- [Minecraft Console Client | Tutorial | Commands, Scripts, AppVars, Matches, Tasks and C# Scripts by Daenges](https://youtu.be/JbDpwwETEnU) +- [Console Client Tutorial - Scripting by Zixxter](https://www.youtube.com/watch?v=XE7rYBFJxn0) ## Getting Help @@ -97,8 +114,8 @@ Click [here](https://github.com/MCCTeam/Minecraft-Console-Client/discussions) to ### Before getting help -- **Please use the search option here or in the discussion section and read the documentation so we avoid duplicate questions. Thank you!** -- **Please be kind and patient, respect others as they're the ones using their time to help you** +- **Please use the search option here or in the discussion section and read the documentation so we avoid duplicate questions. Thank you!** +- **Please be kind and patient, respect others as they're the ones using their time to help you** ## Bugs, Ideas, Feature Requests @@ -112,8 +129,8 @@ If you are reporting a bug, be as specific as possible. Explain how to reproduce ### Before submitting -- **Please use the search option here or in the `Issues` section and read the documentation so we avoid duplicate questions/ideas/reports. Thank you!** -- **Please be kind, patient and respect others. Thank you!** +- **Please use the search option here or in the `Issues` section and read the documentation so we avoid duplicate questions/ideas/reports. Thank you!** +- **Please be kind, patient and respect others. Thank you!** ## AI-Assisted Development @@ -137,10 +154,11 @@ If there was a major game update, and the MCC hasn't been updated to support the ### Path-Finding and Physics -MCC now uses A* path-finding together with a physics-based movement system for movement and collision handling. +MCC now uses A\* path-finding together with a physics-based movement system for movement and collision handling. What is supported and works: -- Terrain navigation with A* path-finding and physics-driven movement + +- Terrain navigation with A\* path-finding and physics-driven movement - Collision-aware movement using real block shapes - Automatic jumping when the path requires moving up - Step-up movement for slabs and similar low obstacles @@ -150,6 +168,7 @@ What is supported and works: - Gravity, friction, and block speed modifiers such as ice, soul sand, soul soil, and honey blocks Current limitations: + - Path-finding is still block-based, so very complex terrain can still fail - Automatic route planning still avoids underwater routes by default, so this is not a full swimming path-finder yet - Knockback and other external velocity effects are not simulated yet diff --git a/docs/guide/ai-assisted-development.md b/docs/guide/ai-assisted-development.md index 8cc7496d..664487db 100644 --- a/docs/guide/ai-assisted-development.md +++ b/docs/guide/ai-assisted-development.md @@ -28,31 +28,31 @@ If you develop on Windows, use WSL2. This workflow is built around Unix-style sh ## Index -- [What This Workflow Covers](#what-this-workflow-covers) -- [Setup](#setup) -- [How The Harness Works](#how-the-harness-works) -- [Repository Tools](#repository-tools) -- [Skills](#skills) -- [Standard Development Loop](#standard-development-loop) -- [Testing And Validation](#testing-and-validation) -- [Version Adaptation Notes](#version-adaptation-notes) -- [Example Workflows](#example-workflows) +- [What This Workflow Covers](#what-this-workflow-covers) +- [Setup](#setup) +- [How The Harness Works](#how-the-harness-works) +- [Repository Tools](#repository-tools) +- [Skills](#skills) +- [Standard Development Loop](#standard-development-loop) +- [Testing And Validation](#testing-and-validation) +- [Version Adaptation Notes](#version-adaptation-notes) +- [Example Workflows](#example-workflows) ## What This Workflow Covers This is the workflow for: -- local MCC development -- local offline server testing -- AI-assisted debugging -- bot authoring -- protocol and version adaptation work -- documentation work that should still follow the same disciplined loop +- local MCC development +- local offline server testing +- AI-assisted debugging +- bot authoring +- protocol and version adaptation work +- documentation work that should still follow the same disciplined loop It is built around two layers: -- repo tools in `tools/`, which do the actual work -- AI skills in `.skills/`, which tell the agent when and how to use those tools +- repo tools in `tools/`, which do the actual work +- AI skills in `.skills/`, which tell the agent when and how to use those tools ## Setup @@ -100,9 +100,9 @@ echo $SHELL Notes: -- Bash is the normal baseline on Linux. -- Zsh is the default interactive shell on modern macOS. -- The helper script `tools/mcc-env.sh` can be sourced from either `~/.bashrc` or `~/.zshrc`. +- Bash is the normal baseline on Linux. +- Zsh is the default interactive shell on modern macOS. +- The helper script `tools/mcc-env.sh` can be sourced from either `~/.bashrc` or `~/.zshrc`. @@ -187,9 +187,9 @@ dotnet --version References: -- [Install .NET on Ubuntu](https://learn.microsoft.com/dotnet/core/install/linux-ubuntu) -- [Install .NET on Debian](https://learn.microsoft.com/dotnet/core/install/linux-debian) -- [Homebrew `dotnet-sdk` cask](https://formulae.brew.sh/cask/dotnet-sdk) +- [Install .NET on Ubuntu](https://learn.microsoft.com/dotnet/core/install/linux-ubuntu) +- [Install .NET on Debian](https://learn.microsoft.com/dotnet/core/install/linux-debian) +- [Homebrew `dotnet-sdk` cask](https://formulae.brew.sh/cask/dotnet-sdk) @@ -232,9 +232,9 @@ java -version References: -- [Ubuntu `openjdk-21-jdk` package](https://packages.ubuntu.com/noble/openjdk-21-jdk) -- [Arch `jdk21-openjdk` package](https://archlinux.org/packages/extra/x86_64/jdk21-openjdk/) -- [Homebrew `openjdk@21` formula](https://formulae.brew.sh/formula/openjdk@21) +- [Ubuntu `openjdk-21-jdk` package](https://packages.ubuntu.com/noble/openjdk-21-jdk) +- [Arch `jdk21-openjdk` package](https://archlinux.org/packages/extra/x86_64/jdk21-openjdk/) +- [Homebrew `openjdk@21` formula](https://formulae.brew.sh/formula/openjdk@21) @@ -272,9 +272,9 @@ python3 --version References: -- [Ubuntu `python3` package](https://packages.ubuntu.com/noble/python/python3) -- [Arch `python` package](https://archlinux.org/packages/core/x86_64/python/) -- [Homebrew Python formula](https://formulae.brew.sh/formula/python@3.14) +- [Ubuntu `python3` package](https://packages.ubuntu.com/noble/python/python3) +- [Arch `python` package](https://archlinux.org/packages/core/x86_64/python/) +- [Homebrew Python formula](https://formulae.brew.sh/formula/python@3.14) @@ -338,8 +338,8 @@ tools/decompile.sh --version 1.20.6 That creates the paths used by the harness and the version-adaptation workflow: -- `$MCC_SERVERS/1.20.6/server.jar` -- `MinecraftOfficial/1.20.6-decompiled/` +- `$MCC_SERVERS/1.20.6/server.jar` +- `MinecraftOfficial/1.20.6-decompiled/` If you are doing protocol work, this step is not optional. @@ -362,16 +362,16 @@ source ~/.bashrc This gives you the helper functions used by the workflow: -- `mc-start` -- `mc-stop` -- `mc-cmd` -- `mc-log` -- `mc-rcon` -- `mcc-build` -- `mcc-run` -- `mcc-cmd` -- `mcc-kill` -- `mcc-reload` +- `mc-start` +- `mc-stop` +- `mc-cmd` +- `mc-log` +- `mc-rcon` +- `mcc-build` +- `mcc-run` +- `mcc-cmd` +- `mcc-kill` +- `mcc-reload` @@ -423,11 +423,11 @@ AI agents do not get a rich interactive terminal in the same way a human does. T The moving parts are: -- a local Minecraft server running in `tmux` -- `mc-rcon` for server-side commands such as `/op`, `/give`, `/summon`, or gamerule setup -- MCC started with `MCC_FILE_INPUT=1` -- `FileInputBot`, which watches `mcc_input.txt` and turns file lines into MCC commands or server chat -- logs from MCC and the local server, which the agent can inspect between runs +- a local Minecraft server running in `tmux` +- `mc-rcon` for server-side commands such as `/op`, `/give`, `/summon`, or gamerule setup +- MCC started with `MCC_FILE_INPUT=1` +- `FileInputBot`, which watches `mcc_input.txt` and turns file lines into MCC commands or server chat +- logs from MCC and the local server, which the agent can inspect between runs The result is simple: the agent can change code, rebuild, start the app, inject commands, and read the result without waiting for a human to sit in the terminal. @@ -435,51 +435,51 @@ The result is simple: the agent can change code, rebuild, start the app, inject These are the repo-level tools that make the workflow practical. -| Path | Purpose | -| --- | --- | -| `tools/mcc-env.sh` | Loads the shell helper functions used for the normal loop. | -| `tools/start-server.sh` | Starts a local Minecraft server in a named `tmux` session with a FIFO for stdin. | -| `tools/mc-rcon.sh` | Sends RCON commands to the local server using `python3`. | -| `tools/decompile.sh` | Downloads `MinecraftDecompiler.jar` if needed, decompiles the requested Minecraft version, and fetches `server.jar` for server-side work. | -| `tools/diff_registries.py` | Compares registries between two Minecraft versions to show which palettes need updates. | -| `tools/gen_item_palette.py` | Generates item palette source from decompiled or reported registry data. | -| `tools/gen_block_palette.py` | Generates block palette source from authoritative block reports. | -| `tools/gen_entity_palette.py` | Generates entity palette source from registry reports. | -| `tools/gen_entity_metadata_palette.py` | Generates entity metadata palette source from serializer registration order. | -| `tools/gen_command_argument_registry.py` | Helps update modern declare-commands registry order. | -| `tools/gen_block_shapes.py` | Downloads and compacts collision shape data for physics support. | +| Path | Purpose | +| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `tools/mcc-env.sh` | Loads the shell helper functions used for the normal loop. | +| `tools/start-server.sh` | Starts a local Minecraft server in a named `tmux` session with a FIFO for stdin. | +| `tools/mc-rcon.sh` | Sends RCON commands to the local server using `python3`. | +| `tools/decompile.sh` | Downloads `MinecraftDecompiler.jar` if needed, decompiles the requested Minecraft version, and fetches `server.jar` for server-side work. | +| `tools/diff_registries.py` | Compares registries between two Minecraft versions to show which palettes need updates. | +| `tools/gen_item_palette.py` | Generates item palette source from decompiled or reported registry data. | +| `tools/gen_block_palette.py` | Generates block palette source from authoritative block reports. | +| `tools/gen_entity_palette.py` | Generates entity palette source from registry reports. | +| `tools/gen_entity_metadata_palette.py` | Generates entity metadata palette source from serializer registration order. | +| `tools/gen_command_argument_registry.py` | Helps update modern declare-commands registry order. | +| `tools/gen_block_shapes.py` | Downloads and compacts collision shape data for physics support. | There is one more piece worth calling out: -- `MinecraftClient/ChatBots/FileInputBot.cs` is what makes file-driven command injection possible. -- It is loaded when `MCC_FILE_INPUT=1` is set. -- `mcc-run` in `tools/mcc-env.sh` already sets that flag for you. +- `MinecraftClient/ChatBots/FileInputBot.cs` is what makes file-driven command injection possible. +- It is loaded when `MCC_FILE_INPUT=1` is set. +- `mcc-run` in `tools/mcc-env.sh` already sets that flag for you. ## Skills The tools above do the work. The skills in `.skills/` tell the AI when to use them and what good output looks like. -| Skill | What it is for | Notes | -| --- | --- | --- | -| `mcc-dev-workflow` | The default build, run, debug, and local server loop. | This is the skill to use for most day-to-day MCC debugging. It assumes WSL, `tmux`, Java, and the local harness. | -| `mcc-integration-testing` | Repeatable end-to-end testing against a local offline server. | This skill bundles its own scripts under `.skills/mcc-integration-testing/scripts/`. Those are skill resources, not top-level repo scripts. | -| `mcc-version-adaptation` | Protocol and palette updates for new Minecraft versions. | Use this when routing, registries, metadata, palettes, or structured components change. | -| `mcc-chatbot-authoring` | Authoring or repairing built-in bots and standalone `/script` bots. | This skill bundles references and templates under `.skills/mcc-chatbot-authoring/`. It defaults to standalone `/script` bots unless built-in wiring is requested. | -| `csharp-best-practices` | C# 14 / .NET 10 coding guidance for this repo. | Use it whenever the change touches MCC runtime code. | -| `humanizer` | Documentation and prose cleanup. | Use it for docs, guides, release notes, and anything that starts sounding machine-written. | -| `mcc-prompt-engineer` | Generating structured prompts for MCC development tasks. | Manually triggered. Interviews the user, explores the codebase, and produces a self-contained prompt with reasoning framework, skill references, and sub-agent directives. | -| `skill-creator` | Creating or evolving skills themselves. | This is for improving the AI workflow, not for normal MCC feature work. | +| Skill | What it is for | Notes | +| ------------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `mcc-dev-workflow` | The default build, run, debug, and local server loop. | This is the skill to use for most day-to-day MCC debugging. It assumes WSL, `tmux`, Java, and the local harness. | +| `mcc-integration-testing` | Repeatable end-to-end testing against a local offline server. | This skill bundles its own scripts under `.skills/mcc-integration-testing/scripts/`. Those are skill resources, not top-level repo scripts. | +| `mcc-version-adaptation` | Protocol and palette updates for new Minecraft versions. | Use this when routing, registries, metadata, palettes, or structured components change. | +| `mcc-chatbot-authoring` | Authoring or repairing built-in bots and standalone `/script` bots. | This skill bundles references and templates under `.skills/mcc-chatbot-authoring/`. It defaults to standalone `/script` bots unless built-in wiring is requested. | +| `csharp-best-practices` | C# 14 / .NET 10 coding guidance for this repo. | Use it whenever the change touches MCC runtime code. | +| `humanizer` | Documentation and prose cleanup. | Use it for docs, guides, release notes, and anything that starts sounding machine-written. | +| `mcc-prompt-engineer` | Generating structured prompts for MCC development tasks. | Manually triggered. Interviews the user, explores the codebase, and produces a self-contained prompt with reasoning framework, skill references, and sub-agent directives. | +| `skill-creator` | Creating or evolving skills themselves. | This is for improving the AI workflow, not for normal MCC feature work. | The important distinction is this: -- repo tools are executable scripts and source files -- skills are instructions, references, templates, and workflow constraints for the AI +- repo tools are executable scripts and source files +- skills are instructions, references, templates, and workflow constraints for the AI Some skills also carry their own bundled resources: -- `mcc-integration-testing` bundles scripts and a command matrix reference -- `mcc-chatbot-authoring` bundles references and bot templates -- `skill-creator` bundles scripts, eval tooling, and reviewer assets +- `mcc-integration-testing` bundles scripts and a command matrix reference +- `mcc-chatbot-authoring` bundles references and bot templates +- `skill-creator` bundles scripts, eval tooling, and reviewer assets ## Standard Development Loop @@ -538,9 +538,9 @@ mcc-cmd "/gamemode creative" Behavior: -- lines starting with `/` are sent as server commands or chat -- lines without `/` are treated as MCC internal commands first -- if a line is not an MCC internal command, it falls back to normal chat sending +- lines starting with `/` are sent as server commands or chat +- lines without `/` are treated as MCC internal commands first +- if a line is not an MCC internal command, it falls back to normal chat sending ### 6. Inspect the result @@ -562,19 +562,19 @@ There are two main testing styles in this workflow. This is enough for smaller changes: -- join the local server -- grant operator privileges with `mc-rcon` -- run internal MCC commands through `mcc-cmd` -- trigger gameplay or server state changes through `mc-rcon` -- inspect logs for parsing errors, disconnects, or wrong output +- join the local server +- grant operator privileges with `mc-rcon` +- run internal MCC commands through `mcc-cmd` +- trigger gameplay or server state changes through `mc-rcon` +- inspect logs for parsing errors, disconnects, or wrong output Typical manual checks: -- inventory listing and creative item injection -- entity tracking after `summon` -- terrain and chunk handling after join -- chat and command flow -- explosion, particle, and sound events +- inventory listing and creative item injection +- entity tracking after `summon` +- terrain and chunk handling after join +- chat and command flow +- explosion, particle, and sound events ### Scripted full-spectrum testing @@ -584,21 +584,21 @@ Treat those scripts as skill-owned resources. Read the skill before running them That skill is designed for repeatable offline validation of: -- chat -- slash commands -- MCC internal commands -- inventory handling -- entity handling -- particles and sounds -- TNT and explosion handling +- chat +- slash commands +- MCC internal commands +- inventory handling +- entity handling +- particles and sounds +- TNT and explosion handling Server settings that matter for AI-driven offline testing: -- `eula=true` -- `online-mode=false` -- `enforce-secure-profile=false` -- `enable-rcon=true` -- `rcon.password=test123` +- `eula=true` +- `online-mode=false` +- `enforce-secure-profile=false` +- `enable-rcon=true` +- `rcon.password=test123` If those are wrong, the loop gets noisy fast. @@ -608,19 +608,19 @@ Version work needs a stricter process than normal bug fixing. The important rule is simple: -- for newer versions, especially `1.21.9+`, use server data reports as the authority for items and blocks -- use decompiled source for implementation details, field order, codecs, and serializer logic -- do not stop at a palette diff; finish with a build and a live server test +- for newer versions, especially `1.21.9+`, use server data reports as the authority for items and blocks +- use decompiled source for implementation details, field order, codecs, and serializer logic +- do not stop at a palette diff; finish with a build and a live server test The usual order is: 1. `tools/decompile.sh --version ` -2. generate server reports from `server.jar` -3. run `tools/diff_registries.py` -4. regenerate the palettes that actually changed -5. update version routing and packet handling -6. build MCC -7. test against the real target version +1. generate server reports from `server.jar` +1. run `tools/diff_registries.py` +1. regenerate the palettes that actually changed +1. update version routing and packet handling +1. build MCC +1. test against the real target version That is exactly the sort of work `mcc-version-adaptation` is meant to guide. @@ -632,8 +632,8 @@ These are four common patterns this guide is meant to support. Use skills: -- `mcc-dev-workflow` -- `csharp-best-practices` +- `mcc-dev-workflow` +- `csharp-best-practices` Typical loop: @@ -656,18 +656,18 @@ mcc-reload Use skills: -- `mcc-chatbot-authoring` -- `csharp-best-practices` -- `mcc-dev-workflow` +- `mcc-chatbot-authoring` +- `csharp-best-practices` +- `mcc-dev-workflow` Typical flow: 1. Decide whether this should be a standalone `/script` bot or a built-in bot. -2. Use the authoring skill's references and templates. -3. Build MCC. -4. Start a local server and join it. -5. Test the bot behavior through live commands, chat, or event-driven actions. -6. Make sure cleanup paths such as `OnUnload()` are correct. +1. Use the authoring skill's references and templates. +1. Build MCC. +1. Start a local server and join it. +1. Test the bot behavior through live commands, chat, or event-driven actions. +1. Make sure cleanup paths such as `OnUnload()` are correct. For standalone script work, the skill defaults to `/script` unless built-in repo wiring is explicitly needed. @@ -675,9 +675,9 @@ For standalone script work, the skill defaults to `/script` unless built-in repo Use skills: -- `mcc-version-adaptation` -- `mcc-dev-workflow` -- `mcc-integration-testing` +- `mcc-version-adaptation` +- `mcc-dev-workflow` +- `mcc-integration-testing` Typical flow: @@ -706,12 +706,12 @@ Then regenerate the palettes that changed, update routing, build MCC, start a lo Use skills: -- `humanizer` -- `skill-creator`, if you are changing the skills rather than just the docs +- `humanizer` +- `skill-creator`, if you are changing the skills rather than just the docs Typical flow: 1. Re-read the relevant skill files and repo tools. -2. Update the guide so the written process matches the real process. -3. Keep the instructions concrete enough that another contributor can follow them without guessing. -4. If the workflow itself changed, update the relevant skill too instead of leaving the docs ahead of the automation. +1. Update the guide so the written process matches the real process. +1. Keep the instructions concrete enough that another contributor can follow them without guessing. +1. If the workflow itself changed, update the relevant skill too instead of leaving the docs ahead of the automation. diff --git a/docs/guide/chat-bots.md b/docs/guide/chat-bots.md index e43684d3..aa852a1b 100644 --- a/docs/guide/chat-bots.md +++ b/docs/guide/chat-bots.md @@ -1,25 +1,20 @@ --- title: Chat Bots redirectFrom: - - "/g/bots/index.html" - - "/g/bots.html" + - /g/bots/index.html + - /g/bots.html --- # Chat Bots -- [About](#about) -- [List of built-in Chat Bots](#list-of-built-in-chat-bots) -- [Creating your own](creating-bots.md) +- [About](#about) +- [List of built-in Chat Bots](#list-of-built-in-chat-bots) +- [Creating your own](creating-bots.md) ## About **Minecraft Console Client** has a number of default built in Chat Bots (Scripts/Plugins) which allow for various types of automation. -

Warning

- - -
-

Tip

**Settings refer to settings in the [configuration file](configuration.md)** @@ -58,241 +53,239 @@ redirectFrom: ## Alerts -- **Description:** +- **Description:** - Get alerted when specified words are detected in the chat + Get alerted when specified words are detected in the chat - Useful for moderating your server or detecting when someone is talking to you. + Useful for moderating your server or detecting when someone is talking to you. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.Alerts`** + **Section:** **`ChatBot.Alerts`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Alerts Chat Bot is enabled. + This setting specifies if the Alerts Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Beep_Enabled` + #### `Beep_Enabled` -

Tip

+

Tip

- **This might not work depending on your system or a console (terminal emulator).** + **This might not work depending on your system or a console (terminal emulator).** -
+
- - **Description:** + - **Description:** - This setting specifies if you want to hear a beep when you get an alert. + This setting specifies if you want to hear a beep when you get an alert. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `Trigger_By_Words` + #### `Trigger_By_Words` - - **Description:** + - **Description:** - Triggers an alert after receiving a specified keyword. + Triggers an alert after receiving a specified keyword. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Trigger_By_Rain` + #### `Trigger_By_Rain` - - **Description:** + - **Description:** - Trigger alerts when it rains and when it stops. + Trigger alerts when it rains and when it stops. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Trigger_By_Thunderstorm` + #### `Trigger_By_Thunderstorm` - - **Description:** + - **Description:** - Triggers alerts at the beginning and end of thunderstorms. + Triggers alerts at the beginning and end of thunderstorms. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Log_To_File` + #### `Log_To_File` - - **Description:** + - **Description:** - Should the Alerts Chat Bot log alerts into a file. + Should the Alerts Chat Bot log alerts into a file. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Log_File` + #### `Log_File` - - **Description:** + - **Description:** - A path to the file where alerts will be logged if `Log_To_File` is set to `true`. + A path to the file where alerts will be logged if `Log_To_File` is set to `true`. - - **Type:** `string` + - **Type:** `string` - - **Default:** `"alerts-log.txt"` + - **Default:** `"alerts-log.txt"` - #### `Matches` + #### `Matches` - - **Description:** + - **Description:** - List of words/strings to alert you on. + List of words/strings to alert you on. - - **Type:** `array of strings` + - **Type:** `array of strings` - - **Example**: + - **Example**: - ```toml - Matches = [ "Yourname", " whispers ", "-> me", "admin", ".com", ] - ``` + ```toml + Matches = [ "Yourname", " whispers ", "-> me", "admin", ".com", ] + ``` - #### `Excludes` + #### `Excludes` - - **Description:** + - **Description:** - List of words/strings to NOT alert you on. + List of words/strings to NOT alert you on. - - **Type:** `array of strings` + - **Type:** `array of strings` - - **Example**: + - **Example**: - ```toml - Excludes = [ "myserver.com", "Yourname>:", "Player Yourname", "Yourname joined", "Yourname left", "[Lockette] (Admin)", " Yourname:", "Yourname is", ] - ``` + ```toml + Excludes = [ "myserver.com", "Yourname>:", "Player Yourname", "Yourname joined", "Yourname left", "[Lockette] (Admin)", " Yourname:", "Yourname is", ] + ``` - -
+
## Anti AFK -- **Description:** +- **Description:** - Send a command and sneak on a regular or random basis or make the bot walk around randomly to avoid automatic AFK disconnection. + Send a command and sneak on a regular or random basis or make the bot walk around randomly to avoid automatic AFK disconnection. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AntiAFK`** + **Section:** **`ChatBot.AntiAFK`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Anti AFK Chat Bot is enabled. + This setting specifies if the Anti AFK Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Delay` + #### `Delay` - - **Description:** + - **Description:** - The time interval for execution in seconds. + The time interval for execution in seconds. - If the `min` and `max` are the same, the time interval will be consistent. However if they are not the same, the plugin will choose a random number between `min` and `max`, this is useful if you want to have a random interval to trick anti afk plugins. + If the `min` and `max` are the same, the time interval will be consistent. However if they are not the same, the plugin will choose a random number between `min` and `max`, this is useful if you want to have a random interval to trick anti afk plugins. - - **Format:** `{ min = , max = }` + - **Format:** `{ min = , max = }` - - **Type:** `inline table with min and max fields which have type of double` + - **Type:** `inline table with min and max fields which have type of double` - - **Default:** `{ min = 60.0, max = 60.0 }` + - **Default:** `{ min = 60.0, max = 60.0 }` - #### `Command` + #### `Command` - - **Description:** + - **Description:** - Command to be sent. + Command to be sent. - - **Type:** `string` + - **Type:** `string` - - **Default:** `/ping` + - **Default:** `/ping` - #### `Use_Sneak` + #### `Use_Sneak` - - **Description:** + - **Description:** - Sometimes you can trick plugins with sneaking or command might not be enough, enable it if you need it. + Sometimes you can trick plugins with sneaking or command might not be enough, enable it if you need it. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Use_Terrain_Handling` + #### `Use_Terrain_Handling` -

Tip

+

Tip

- **You need to enable [Terrain Handling](configuration.md#terrainandmovements) in the settings and it's recommended to put the bot into an enclosure not to wander off. (Recommended size 5x5x5)** + **You need to enable [Terrain Handling](configuration.md#terrainandmovements) in the settings and it's recommended to put the bot into an enclosure not to wander off. (Recommended size 5x5x5)** -
+
- - **Description:** + - **Description:** - Should the bot use [Terrain Handling](configuration.md#terrainandmovements) instead of the command method. + Should the bot use [Terrain Handling](configuration.md#terrainandmovements) instead of the command method. - This will enable your bot to randomly move about, thus a better anti afk effect. + This will enable your bot to randomly move about, thus a better anti afk effect. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Walk_Range` + #### `Walk_Range` - - **Description:** + - **Description:** - The range which bot will use to walk around (-X to +X and -Z to +Z, Y is not used). + The range which bot will use to walk around (-X to +X and -Z to +Z, Y is not used). - The bigger the slower the bot might be at calculating the path, recommended 2-5. + The bigger the slower the bot might be at calculating the path, recommended 2-5. - - **Default:** `5` + - **Default:** `5` - #### `Walk_Retries` + #### `Walk_Retries` -

Tip

+

Tip

- **This happens on each trigger of the task, so it does not permanently switch to alternative method.** + **This happens on each trigger of the task, so it does not permanently switch to alternative method.** -
+
- - **Description:** + - **Description:** - This is the number of times the bot will try to pathfind, if he can't find a valid path for 20 times, he will use the command method. + This is the number of times the bot will try to pathfind, if he can't find a valid path for 20 times, he will use the command method. - - **Default:** `20` + - **Default:** `20` - -
+
## Auto Attack @@ -302,154 +295,153 @@ redirectFrom:
-- **Description:** +- **Description:** - Automatically attacks mobs around you, you can configure it to attack both hostile and passive mobs and only certain mobs or all mobs. + Automatically attacks mobs around you, you can configure it to attack both hostile and passive mobs and only certain mobs or all mobs. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AutoAttack`** + **Section:** **`ChatBot.AutoAttack`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Auto Attack Chat Bot is enabled. + This setting specifies if the Auto Attack Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Mode` + #### `Mode` - - **Description:** + - **Description:** - Available values: + Available values: - - `single` + - `single` - Target one mob per attack. + Target one mob per attack. - - `multi` + - `multi` - Target all mobs in range per attack. + Target all mobs in range per attack. - - **Type:** `string` + - **Type:** `string` - - **Default:** `single` + - **Default:** `single` - #### `Priority` + #### `Priority` - - **Description:** + - **Description:** - Available values: + Available values: - - `health` (prioritize targeting mobs with lower health) - - `distance` (prioritize targeting mobs closer to you) + - `health` (prioritize targeting mobs with lower health) + - `distance` (prioritize targeting mobs closer to you) - - **Type:** `string` + - **Type:** `string` - - **Default:** `distance` + - **Default:** `distance` - #### `Cooldown_Time` + #### `Cooldown_Time` - - **Description:** + - **Description:** - How long to wait between each attack in seconds. + How long to wait between each attack in seconds. - To enable it, set `Custom` (boolean) to `true` and change `value` (double) to your preferred value (eg. `1.5`). + To enable it, set `Custom` (boolean) to `true` and change `value` (double) to your preferred value (eg. `1.5`). - By default, this is disabled and MCC calculates it based on the server TPS. + By default, this is disabled and MCC calculates it based on the server TPS. - - **Format:** `Cooldown_Time = { Custom = , value = }` + - **Format:** `Cooldown_Time = { Custom = , value = }` - - **Type:** `inline table` + - **Type:** `inline table` - - **Example:** `Cooldown_Time = { Custom = true, value = 1.5 }` + - **Example:** `Cooldown_Time = { Custom = true, value = 1.5 }` - - **Default:** `{ Custom = false, value = 1.0 }` + - **Default:** `{ Custom = false, value = 1.0 }` - #### `Interaction` + #### `Interaction` - - **Description:** + - **Description:** - Available values: + Available values: - - `Attack` + - `Attack` - Just attack a mob. (Default) + Just attack a mob. (Default) - - `Interact` + - `Interact` - Just interact with a mob. + Just interact with a mob. - - `InteractAt` + - `InteractAt` - Interact with and attack a mob. + Interact with and attack a mob. - - **Type:** `string` + - **Type:** `string` - - **Default:** `Attack` + - **Default:** `Attack` - #### `Attack_Hostile` + #### `Attack_Hostile` - - **Description:** + - **Description:** - This setting specifies if the Auto Attack Chat Bot should attack hostile mobs. + This setting specifies if the Auto Attack Chat Bot should attack hostile mobs. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `Attack_Passive` + #### `Attack_Passive` - - **Description:** + - **Description:** - This setting specifies if the Auto Attack Chat Bot should attack passive mobs. + This setting specifies if the Auto Attack Chat Bot should attack passive mobs. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `List_Mode` + #### `List_Mode` - - **Description:** + - **Description:** - This setting specifies which mode of the list should Auto Attack Chat Bot use for `Entites_List` setting. + This setting specifies which mode of the list should Auto Attack Chat Bot use for `Entites_List` setting. - - **Available values:** `whitelist` (only attack specified mobs) and `blacklist` (do not attack specified mobs). + - **Available values:** `whitelist` (only attack specified mobs) and `blacklist` (do not attack specified mobs). - - **Type:** `string` + - **Type:** `string` - - **Default:** `whitelist` + - **Default:** `whitelist` - #### `Entites_List` + #### `Entites_List` - - **Description:** + - **Description:** - A list of mobs which are either whitelisted or blacklisted, the mode is set in `List_Mode` setting. + A list of mobs which are either whitelisted or blacklisted, the mode is set in `List_Mode` setting. - You can find the full list of mobs [here](https://mccteam.github.io/r/entity/#L15). + You can find the full list of mobs [here](https://mccteam.github.io/r/entity/#L15). - - **Format:** `["", "", ...]` + - **Format:** `["", "", ...]` - - **Type:** `array of strings` + - **Type:** `array of strings` - - **Example:** `[ "Spider", "Skeleton", "Pig", ]` + - **Example:** `[ "Spider", "Skeleton", "Pig", ]` - - **Default:** `[ "Zombie", "Cow", ]` + - **Default:** `[ "Zombie", "Cow", ]` - -
+
## Auto Craft @@ -459,1409 +451,1399 @@ redirectFrom: -- **Description:** +- **Description:** - Automatically craft items in your inventory or in a crafting table. + Automatically craft items in your inventory or in a crafting table. -- **Commands:** +- **Commands:** - - `/autocraft list` + - `/autocraft list` - List all loaded recipes. + List all loaded recipes. - - `/autocraft start ` + - `/autocraft start ` - Start the crafting process with the given recipe name you had defined. + Start the crafting process with the given recipe name you had defined. - - `/autocraft stop` + - `/autocraft stop` - Stop the crafting process. + Stop the crafting process. - - `/autocraft help` + - `/autocraft help` - In-game help command. + In-game help command. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AutoCraft`** + **Section:** **`ChatBot.AutoCraft`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Auto Craft Chat Bot is enabled. + This setting specifies if the Auto Craft Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `CraftingTable` + #### `CraftingTable` - - **Description:** + - **Description:** - This setting specifies the location of the crafting table. + This setting specifies the location of the crafting table. - - **Type/Format:** + - **Type/Format:** - This setting is an of an `inline table` type that has the following sub-options/settings; + This setting is an of an `inline table` type that has the following sub-options/settings; - - `x` - X coordinate, the type is `double` (eg. `123.0`) + - `x` - X coordinate, the type is `double` (eg. `123.0`) - - `y` - Y coordinate, the type is `double` (eg. `64.0`) + - `y` - Y coordinate, the type is `double` (eg. `64.0`) - - `z` - Z coordinate, the type is `double` (eg. `456.0`) + - `z` - Z coordinate, the type is `double` (eg. `456.0`) - - **Example:** - - ```toml - CraftingTable = { X = 123.0, Y = 65.0, Z = 456.0 } - ``` - - #### `OnFailure` - - - **Description:** - - This setting specifies what the Auto Craft Chat Bot should do on failure. - - Failure can happen when there are no materials available or when a crafting table can't be reached. - - - **Available values:** `abort` and `wait`. - - - **Type:** `string` - - - **Default:** `abort` - - ### Defining a recipe - -

Tip

- - **If you're using `table` you need to set the `CraftingTable` setting.** - -
- - The recipes are defines as a separate new sub-section `[[ChatBot.AutoCraft.Recipes]]` of the `[ChatBot.AutoCraft]` section. - - The `[[ChatBot.AutoCraft.Recipes]]` section needs to contain the following settings: - - - `Name` - - The name of your recipe, can be whatever you like. - - **Type**: `string` - - - `Type` - - **Available values:** `player` and `table` - - - `Result` - - This is the type of resulting item. - - **Type:** `string` - - **Example:** `"StoneBricks"` - - - `Slots` - - This setting is an array/list of material names (strings) that go into an each slot (max 9 elements). Empty slots should be marked with `"Null"` - - **Type:** `array of strings` - - **Format:** - - ```toml - Slots = [ "", "", ... ] - ``` - - - **Slots are indexed as following:** - - **`2x2` (Player)** - - ```cs - ╔═══╦═══╗ - ║ 1 ║ 2 ║ - ╠═══╬═══╣ - ║ 3 ║ 4 ║ - ╚═══╩═══╝ - ``` - - **`3x3` (Crafting Table)** - - ```cs - ╔═══╦═══╦═══╗ - ║ 1 ║ 2 ║ 3 ║ - ╠═══╬═══╬═══╣ - ║ 4 ║ 5 ║ 6 ║ - ╠═══╬═══╬═══╣ - ║ 7 ║ 8 ║ 9 ║ - ╚═══╩═══╩═══╝ - ``` - - **Full Examples:** + - **Example:** ```toml - # Stone Bricks using the player inventory - [[ChatBot.AutoCraft.Recipes]] - Name = "Recipe-Name-1" - Type = "player" - Result = "StoneBricks" - Slots = [ "Stone", "Stone", "Stone", "Stone", ] - - # Stone Bricks using a crafting table - [[ChatBot.AutoCraft.Recipes]] - Name = "Recipe-Name-2" - Type = "table" - Result = "StoneBricks" - Slots = [ "Stone", "Stone", "Null", "Stone", "Stone", "Null", "Null", "Null", "Null", ] + CraftingTable = { X = 123.0, Y = 65.0, Z = 456.0 } ``` -

Tip

+ #### `OnFailure` - **If you have a case where you have to leave some fields empty, use `"Null"` to mark them as empty. Example for stone bricks: `Slots = [ "Stone", "Stone", "Null", "Stone", "Stone", "Null", "Null", "Null", "Null", ]`** + - **Description:** - **All item types can be found [here](https://mccteam.github.io/r/item/#L12).** + This setting specifies what the Auto Craft Chat Bot should do on failure. - **Make sure to provide materials for your bot by placing them in inventory first.** + Failure can happen when there are no materials available or when a crafting table can't be reached. -
+ - **Available values:** `abort` and `wait`. + - **Type:** `string` -
+ - **Default:** `abort` + + ### Defining a recipe + +

Tip

+ + **If you're using `table` you need to set the `CraftingTable` setting.** + +
+ + The recipes are defines as a separate new sub-section `[[ChatBot.AutoCraft.Recipes]]` of the `[ChatBot.AutoCraft]` section. + + The `[[ChatBot.AutoCraft.Recipes]]` section needs to contain the following settings: + + - `Name` + + The name of your recipe, can be whatever you like. + + **Type**: `string` + + - `Type` + + **Available values:** `player` and `table` + + - `Result` + + This is the type of resulting item. + + **Type:** `string` + + **Example:** `"StoneBricks"` + + - `Slots` + + This setting is an array/list of material names (strings) that go into an each slot (max 9 elements). Empty slots should be marked with `"Null"` + + **Type:** `array of strings` + + **Format:** + + ```toml + Slots = [ "", "", ... ] + ``` + + **Slots are indexed as following:** + + **`2x2` (Player)** + + ```cs + ╔═══╦═══╗ + ║ 1 ║ 2 ║ + ╠═══╬═══╣ + ║ 3 ║ 4 ║ + ╚═══╩═══╝ + ``` + + **`3x3` (Crafting Table)** + + ```cs + ╔═══╦═══╦═══╗ + ║ 1 ║ 2 ║ 3 ║ + ╠═══╬═══╬═══╣ + ║ 4 ║ 5 ║ 6 ║ + ╠═══╬═══╬═══╣ + ║ 7 ║ 8 ║ 9 ║ + ╚═══╩═══╩═══╝ + ``` + + **Full Examples:** + + ```toml + # Stone Bricks using the player inventory + [[ChatBot.AutoCraft.Recipes]] + Name = "Recipe-Name-1" + Type = "player" + Result = "StoneBricks" + Slots = [ "Stone", "Stone", "Stone", "Stone", ] + + # Stone Bricks using a crafting table + [[ChatBot.AutoCraft.Recipes]] + Name = "Recipe-Name-2" + Type = "table" + Result = "StoneBricks" + Slots = [ "Stone", "Stone", "Null", "Stone", "Stone", "Null", "Null", "Null", "Null", ] + ``` + +

Tip

+ + **If you have a case where you have to leave some fields empty, use `"Null"` to mark them as empty. Example for stone bricks: `Slots = [ "Stone", "Stone", "Null", "Stone", "Stone", "Null", "Null", "Null", "Null", ]`** + + **All item types can be found [here](https://mccteam.github.io/r/item/#L12).** + + **Make sure to provide materials for your bot by placing them in inventory first.** + +
+ +
## Auto Dig -- **Description:** +- **Description:** - Automatically digs block on specified locations. + Automatically digs block on specified locations. -

Tip

+

Tip

- **You need to have [inventoryhandling](configuration.md#inventoryhandling) and [terrainandmovements](configuration.md#terrainandmovements) enabled in order for this bot to work.** + **You need to have [inventoryhandling](configuration.md#inventoryhandling) and [terrainandmovements](configuration.md#terrainandmovements) enabled in order for this bot to work.** -
+
-

Tip

+

Tip

- **Since MCC does not yet support accurate calculation of the collision volume of blocks, all blocks are considered as complete cubes when obtaining the position of the lookahead.** + **Since MCC does not yet support accurate calculation of the collision volume of blocks, all blocks are considered as complete cubes when obtaining the position of the lookahead.** -
+
-- **Commands:** +- **Commands:** - - `/digbot start` - Starts the digging + - `/digbot start` - Starts the digging - - `/digbot stop` - Stops the digging + - `/digbot stop` - Stops the digging -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AutoDig`** + **Section:** **`ChatBot.AutoDig`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Auto Dig Chat Bot is enabled. + This setting specifies if the Auto Dig Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Mode` + #### `Mode` - - **Description:** + - **Description:** - This setting specifies in which mode the Auto Dig Chat Bot will operate. + This setting specifies in which mode the Auto Dig Chat Bot will operate. - - **Available values:** + - **Available values:** - - `lookat` + - `lookat` - Digs the block that the bot is looking at. + Digs the block that the bot is looking at. - - `fixedpos` + - `fixedpos` - Digs the block in a fixed location/position/coordinate. + Digs the block in a fixed location/position/coordinate. - - `both` + - `both` - Dig only when the block you are looking at is in the "Locations" list. + Dig only when the block you are looking at is in the "Locations" list. - - **Type:** `string` + - **Type:** `string` - - **Default:** `lookat` + - **Default:** `lookat` - #### `Locations` + #### `Locations` - - **Description:** + - **Description:** - This setting specifies an array/list of locations which the bot will dig out. + This setting specifies an array/list of locations which the bot will dig out. - - **Type/Format:** + - **Type/Format:** - The type of this setting is an array of inline table which has the following sub-options/settings: + The type of this setting is an array of inline table which has the following sub-options/settings: - - `x` - X coordinate, the type is `double` (eg. `123.45`) + - `x` - X coordinate, the type is `double` (eg. `123.45`) - - `y` - Y coordinate, the type is `double` (eg. `64.0`) + - `y` - Y coordinate, the type is `double` (eg. `64.0`) - - `z` - Z coordinate, the type is `double` (eg. `234.5`) + - `z` - Z coordinate, the type is `double` (eg. `234.5`) - - **Full example:** + - **Full example:** - ```toml - Locations = [ - { x = 123.5, y = 64.0, z = 234.5 }, - { x = 124.5, y = 63.0, z = 235.5 }, - ] - ``` + ```toml + Locations = [ + { x = 123.5, y = 64.0, z = 234.5 }, + { x = 124.5, y = 63.0, z = 235.5 }, + ] + ``` - #### `Location_Order` + #### `Location_Order` - - **Description:** + - **Description:** - This setting specifies in which order the Auto Dig Chat Bot will dig blocks. + This setting specifies in which order the Auto Dig Chat Bot will dig blocks. - - **Available values:** + - **Available values:** - - `distance` + - `distance` - Digs the block closest to the bot. + Digs the block closest to the bot. - - `index` + - `index` - Digs blocks in the list order. + Digs blocks in the list order. - - **Type:** `string` + - **Type:** `string` - - **Default:** `distance` + - **Default:** `distance` - #### `Auto_Start_Delay` + #### `Auto_Start_Delay` - - **Description:** + - **Description:** - How many seconds to wait after entering the game to start digging automatically. + How many seconds to wait after entering the game to start digging automatically. - Set to `-1` to disable the automatic start. + Set to `-1` to disable the automatic start. - - **Type:** `float` + - **Type:** `float` - - **Default:** `3.0` + - **Default:** `3.0` - #### `Dig_Timeout` + #### `Dig_Timeout` - - **Description:** + - **Description:** - If mining a block takes longer than this value, a new attempt will be made to find a block to mine. + If mining a block takes longer than this value, a new attempt will be made to find a block to mine. - - **Type:** `float` + - **Type:** `float` - - **Default:** `60.0` + - **Default:** `60.0` - #### `Log_Block_Dig` + #### `Log_Block_Dig` - - **Description:** + - **Description:** - This setting specifies whether to output logs in to the console when digging blocks. + This setting specifies whether to output logs in to the console when digging blocks. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `List_Type` + #### `List_Type` - - **Description:** + - **Description:** - This setting specifies the mode at which the `Blocks` setting is operating. + This setting specifies the mode at which the `Blocks` setting is operating. - - **Available values:** `whitelist` (only dig specified blocks) and `blacklist` (do not dig specified blocks). + - **Available values:** `whitelist` (only dig specified blocks) and `blacklist` (do not dig specified blocks). - - **Type:** `string` + - **Type:** `string` - - **Default:** `whitelist` + - **Default:** `whitelist` - #### `Blocks` + #### `Blocks` - - **Description:** + - **Description:** - This setting specifies the list of blocks which either should not should not be dug out. + This setting specifies the list of blocks which either should not should not be dug out. - **The list of block types can be found [here](https://mccteam.github.io/r/block/#L15).** + **The list of block types can be found [here](https://mccteam.github.io/r/block/#L15).** - - **Format:** `[ "", "", ...]` + - **Format:** `[ "", "", ...]` - - **Type:** `array of strings` + - **Type:** `array of strings` - - **Example:** `Blocks = [ "DiamondOre", "RedstoneOre", "EmeraldOre", "RedstoneBlock" ]` + - **Example:** `Blocks = [ "DiamondOre", "RedstoneOre", "EmeraldOre", "RedstoneBlock" ]` - - **Default:** `[ "Cobblestone", "Stone", ]` + - **Default:** `[ "Cobblestone", "Stone", ]` - -
+
## Auto Drop -- **Description:** +- **Description:** - Automatically drop items you don't need from the inventory. + Automatically drop items you don't need from the inventory. -

Tip

+

Tip

- **You need to have [inventoryhandling](configuration.md#inventoryhandling) enabled in order for this bot to work** + **You need to have [inventoryhandling](configuration.md#inventoryhandling) enabled in order for this bot to work** -
+
-- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AutoDrop`** + **Section:** **`ChatBot.AutoDrop`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Auto Drop Chat Bot is enabled. + This setting specifies if the Auto Drop Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Mode` + #### `Mode` - - **Description:** + - **Description:** - This setting specifies the mode of the auto dropping. + This setting specifies the mode of the auto dropping. - Available values: + Available values: - - `include` + - `include` - This mode will drop any items specified in the list in the `Items` setting. + This mode will drop any items specified in the list in the `Items` setting. - - `exclude` + - `exclude` - This mode will drop any other items than specified in the list in the `Items` setting. + This mode will drop any other items than specified in the list in the `Items` setting. - So it would keep the items specified in the list. + So it would keep the items specified in the list. - - `everything` + - `everything` - Drop any item regardless of the items listed in the `Items` setting. + Drop any item regardless of the items listed in the `Items` setting. - - **Type:** `string` + - **Type:** `string` - - **Default:** `include` + - **Default:** `include` - #### `Items` + #### `Items` -

Tip

+

Tip

- **All item types can be found [here](https://mccteam.github.io/r/item/#L12).** + **All item types can be found [here](https://mccteam.github.io/r/item/#L12).** -
+
- - **Description:** + - **Description:** - This setting is where you can specify the list of items which you want to drop, or keep. + This setting is where you can specify the list of items which you want to drop, or keep. + - **Format:** `[ "", "", ...]` - - **Format:** `[ "", "", ...]` + - **Type:** `array of strings` - - **Type:** `array of strings` + - **Example:** `[ "Totem", "GlassBottle", ]` - - **Example:** `[ "Totem", "GlassBottle", ]` + - **Default:** `[ "Cobblestone", "Dirt", ]` - - **Default:** `[ "Cobblestone", "Dirt", ]` - - -
+
## Auto Eat -- **Description:** +- **Description:** - Automatically eat food when your Hunger value is low. + Automatically eat food when your Hunger value is low. -

Tip

+

Tip

- **You need to have [inventoryhandling](configuration.md#inventoryhandling) enabled in order for this bot to work** + **You need to have [inventoryhandling](configuration.md#inventoryhandling) enabled in order for this bot to work** -
+
-- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AutoEat`** + **Section:** **`ChatBot.AutoEat`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Auto Eat Chat Bot is enabled. + This setting specifies if the Auto Eat Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Threshold` + #### `Threshold` - - **Description:** + - **Description:** - Threshold bellow which the bot will auto eat. + Threshold bellow which the bot will auto eat. - - **Type:** `integer` + - **Type:** `integer` - - **Default:** `6` + - **Default:** `6` - -
+
## Auto Fishing -- **Description:** +- **Description:** - Automatically catch fish using a fishing rod. + Automatically catch fish using a fishing rod. -

Tip

+

Tip

- **You need to have [entityhandling](configuration.md#entityhandling) enabled in order for this bot to work.** + **You need to have [entityhandling](configuration.md#entityhandling) enabled in order for this bot to work.** -
+
-

Tip

+

Tip

- **To use the automatic rod switching and durability check feature, you need to enable [inventoryhandling](configuration.md#inventoryhandling).** + **To use the automatic rod switching and durability check feature, you need to enable [inventoryhandling](configuration.md#inventoryhandling).** -
+
-

Tip

+

Tip

- **Note: To adjust the position or angle after catching a fish, you need to enable [terrainandmovements](configuration.md#terrainandmovements).** + **Note: To adjust the position or angle after catching a fish, you need to enable [terrainandmovements](configuration.md#terrainandmovements).** -
+
-

Tip

+

Tip

- **A fishing rod with **Mending enchantment** is strongly recommended.** + **A fishing rod with **Mending enchantment** is strongly recommended.** -
+
- **Steps for using this bot (with the default setting)** + **Steps for using this bot (with the default setting)** - 1. Hold a fishing rod and aim towards the sea before login with MCC - 2. Make sure `AutoFish` is `enabled` in config file - 3. Login with MCC - 4. You will be able to see the log "Fishing will start in 3.0 second(s).". + 1. Hold a fishing rod and aim towards the sea before login with MCC + 1. Make sure `AutoFish` is `enabled` in config file + 1. Login with MCC + 1. You will be able to see the log "Fishing will start in 3.0 second(s).". -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AutoFishing`** + **Section:** **`ChatBot.AutoFishing`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Auto Fishing Chat Bot is enabled. + This setting specifies if the Auto Fishing Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Antidespawn` + #### `Antidespawn` - - **Description:** + - **Description:** - This option may be used in some special cases, so if it has not been modified before, leave the default value. + This option may be used in some special cases, so if it has not been modified before, leave the default value. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Mainhand` + #### `Mainhand` - - **Description:** + - **Description:** - Whether to use the main hand or off hand to hold the rod. + Whether to use the main hand or off hand to hold the rod. - - **Available values:** + - **Available values:** - - `true` (Main Hand) - - `false` (Off Hand) + - `true` (Main Hand) + - `false` (Off Hand) - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `Auto_Start` + #### `Auto_Start` - - **Description:** + - **Description:** - Whether to start fishing automatically after joining the game or switching worlds. + Whether to start fishing automatically after joining the game or switching worlds. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `Cast_Delay` + #### `Cast_Delay` - - **Description:** + - **Description:** - Wait how many seconds after successfully catching a fish before recasting the rod. + Wait how many seconds after successfully catching a fish before recasting the rod. - - **Type:** `float` + - **Type:** `float` - - **Default:** `0.4` + - **Default:** `0.4` - #### `Fishing_Delay` + #### `Fishing_Delay` - - **Description:** + - **Description:** - Effective only when `auto_start = true`. + Effective only when `auto_start = true`. - After joining the game or switching worlds, wait how many seconds before starting to fish automatically. + After joining the game or switching worlds, wait how many seconds before starting to fish automatically. - - **Type:** `float` + - **Type:** `float` - - **Default:** `3.0` + - **Default:** `3.0` - #### `Fishing_Timeout` + #### `Fishing_Timeout` - - **Description:** + - **Description:** - How long the fish bite is not detected is considered a timeout. It will re-cast after the timeout. + How long the fish bite is not detected is considered a timeout. It will re-cast after the timeout. - - **Type:** `float` + - **Type:** `float` - - **Default:** `300.0` + - **Default:** `300.0` - #### `Durability_Limit` + #### `Durability_Limit` - - **Description:** + - **Description:** - Will not use rods with less durability than this (full durability is 64). + Will not use rods with less durability than this (full durability is 64). - Set to zero to disable this feature. + Set to zero to disable this feature. - **Type/Available values:** An integer number from `0` to `64`. + **Type/Available values:** An integer number from `0` to `64`. - - **Default:** `2` + - **Default:** `2` - #### `Auto_Rod_Switch` + #### `Auto_Rod_Switch` - - **Description:** + - **Description:** - Switch to a new rod from inventory after the current rod is unavailable. + Switch to a new rod from inventory after the current rod is unavailable. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `Stationary_Threshold` + #### `Stationary_Threshold` - - **Description:** + - **Description:** - For each movement of the fishhook entity (entity movement packet), if the distance on both X and Z axes is below this threshold it will be considered as stationary. + For each movement of the fishhook entity (entity movement packet), if the distance on both X and Z axes is below this threshold it will be considered as stationary. - This is to avoid being detected as a bite during the casting of the hook. + This is to avoid being detected as a bite during the casting of the hook. - **If set too high, it will cause the rod to be reeled in while casting.** + **If set too high, it will cause the rod to be reeled in while casting.** - **If set too low, it will result in not detecting a bite.** + **If set too low, it will result in not detecting a bite.** - - **Type:** `float` + - **Type:** `float` - - **Default:** `0.001` + - **Default:** `0.001` - #### `Hook_Threshold` + #### `Hook_Threshold` - - **Description:** + - **Description:** - For each movement of the fishhook entity (entity movement packet), if it is stationary (check `stationary_threshold`) and its movement on the Y-axis is greater than this threshold, it will be considered to have caught a fish. + For each movement of the fishhook entity (entity movement packet), if it is stationary (check `stationary_threshold`) and its movement on the Y-axis is greater than this threshold, it will be considered to have caught a fish. - If it is set too high, it will cause normal bites to be ignored. + If it is set too high, it will cause normal bites to be ignored. - If set too low, it can cause small fluctuations in the hook to be recognized as bites. + If set too low, it can cause small fluctuations in the hook to be recognized as bites. - - **Type:** `float` + - **Type:** `float` - - **Default:** `0.2` + - **Default:** `0.2` - #### `Log_Fish_Bobber` + #### `Log_Fish_Bobber` - - **Description:** + - **Description:** - When turned on it will be print a log every time a fishhook entity movement packet is received. + When turned on it will be print a log every time a fishhook entity movement packet is received. - If auto-fishing does not work as expected, turn this option on to adjust `stationary_threshold` and `hook_threshold`, or create an issue and attach these logs. + If auto-fishing does not work as expected, turn this option on to adjust `stationary_threshold` and `hook_threshold`, or create an issue and attach these logs. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Enable_Move` + #### `Enable_Move` - - **Description:** + - **Description:** - Some plugins do not allow the player to fish in one place for a long time. This setting allows the player to change position/angle after each catch. + Some plugins do not allow the player to fish in one place for a long time. This setting allows the player to change position/angle after each catch. - Each position is added as a new `[[ChatBot.AutoFishing.Movements]]` subsection, more on that bellow. + Each position is added as a new `[[ChatBot.AutoFishing.Movements]]` subsection, more on that bellow. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - ### Adding a position/movement + ### Adding a position/movement - Each position/movement is added as a new `[[ChatBot.AutoFishing.Movements]]` subsection of `[ChatBot.AutoFishing]`. + Each position/movement is added as a new `[[ChatBot.AutoFishing.Movements]]` subsection of `[ChatBot.AutoFishing]`. - **Available settings/options:** + **Available settings/options:** - - `XYZ` + - `XYZ` - This setting specifies at location the bot should move to. + This setting specifies at location the bot should move to. - The type of this setting is `inline table`, that has the following sub-settings/options: + The type of this setting is `inline table`, that has the following sub-settings/options: - - `x` - X coordinate, the type is `double` (eg. `123.0`) + - `x` - X coordinate, the type is `double` (eg. `123.0`) - - `y` - Y coordinate, the type is `double` (eg. `64.0`) + - `y` - Y coordinate, the type is `double` (eg. `64.0`) - - `z` - Z coordinate, the type is `double` (eg. `-654.0`) + - `z` - Z coordinate, the type is `double` (eg. `-654.0`) - **Example**: - - ```toml - XYZ = { x = 123.0, y = 64.0, z = -654.0 } - ``` - - - `facing` - - This setting specifies at which angle the bot will look at when he arrives to this position/location. - - The type of this setting is `inline table`, that has the following sub-settings/options: - - - `yaw` - The type is `double` (eg. `12.34`) - - - `pitch` - The type is `double` (eg. `-23.45`) - - **Example**: - - ```toml - facing = { yaw = 12.34, pitch = -23.45 } - ``` - - #### Full example + **Example**: ```toml - [[ChatBot.AutoFishing.Movements]] - facing = { yaw = 12.34, pitch = -23.45 } - - [[ChatBot.AutoFishing.Movements]] - XYZ = { x = 123.45, y = 64.0, z = -654.32 } - facing = { yaw = -25.14, pitch = 36.25 } + XYZ = { x = 123.0, y = 64.0, z = -654.0 } ``` + - `facing` -
+ This setting specifies at which angle the bot will look at when he arrives to this position/location. + + The type of this setting is `inline table`, that has the following sub-settings/options: + + - `yaw` - The type is `double` (eg. `12.34`) + + - `pitch` - The type is `double` (eg. `-23.45`) + + **Example**: + + ```toml + facing = { yaw = 12.34, pitch = -23.45 } + ``` + + #### Full example + + ```toml + [[ChatBot.AutoFishing.Movements]] + facing = { yaw = 12.34, pitch = -23.45 } + + [[ChatBot.AutoFishing.Movements]] + XYZ = { x = 123.45, y = 64.0, z = -654.32 } + facing = { yaw = -25.14, pitch = 36.25 } + ``` + +
## Auto Relog -- **Description:** +- **Description:** - Make MCC automatically relog when disconnected by the server, for example because the server is restating. + Make MCC automatically relog when disconnected by the server, for example because the server is restating. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AutoRelog`** + **Section:** **`ChatBot.AutoRelog`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Auto Relog Chat Bot is enabled. + This setting specifies if the Auto Relog Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Delay` + #### `Delay` - - **Description:** + - **Description:** - The delay time before joining the server. + The delay time before joining the server. - If the `min` and `max` are the same, the time will be consistent, however, if you want a random time, you can set `min` and `max` to different values to get a random time. The time format is in seconds, and the type is double. (eg. `37.0`) + If the `min` and `max` are the same, the time will be consistent, however, if you want a random time, you can set `min` and `max` to different values to get a random time. The time format is in seconds, and the type is double. (eg. `37.0`) - - **Format:** `{ min = , max = }` + - **Format:** `{ min = , max = }` - - **Type:** `inline table` + - **Type:** `inline table` - - **Example:** `{ min = 8.0, max = 60.0 }` + - **Example:** `{ min = 8.0, max = 60.0 }` - - **Default:** `{ min = 3.0, max = 3.0 }` + - **Default:** `{ min = 3.0, max = 3.0 }` - #### `Retries` + #### `Retries` -

Tip

+

Tip

- **This might get you banned by the server owners.** + **This might get you banned by the server owners.** -
+
- - **Description:** + - **Description:** - Number of retries. + Number of retries. - Use `-1` for infinite retries. + Use `-1` for infinite retries. - - **Default:** `-1` + - **Default:** `-1` - #### `Ignore_Kick_Message` + #### `Ignore_Kick_Message` - - **Description:** + - **Description:** - This settings specifies if the `Kick_Messages` setting will be ignored, if set to `true` it will auto relog regardless of the kick messages. + This settings specifies if the `Kick_Messages` setting will be ignored, if set to `true` it will auto relog regardless of the kick messages. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Kick_Messages` + #### `Kick_Messages` - - **Description:** + - **Description:** - A list of words which should trigger the Auto Reconnect Chat Bot. + A list of words which should trigger the Auto Reconnect Chat Bot. - - **Format:** `[ "", "", ... ]` + - **Format:** `[ "", "", ... ]` - - **Type:** `array of strings` + - **Type:** `array of strings` - - **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", ]` - -
+
## Auto Respond -- **Description:** +- **Description:** - Run commands or send messages automatically when a specified pattern is detected in the chat. + Run commands or send messages automatically when a specified pattern is detected in the chat. -

Warning

+

Warning

- **Server admins can spoof PMs (`/tellraw`, `/nick`) so enable `AutoRespond` only if you trust server admins.** + **Server admins can spoof PMs (`/tellraw`, `/nick`) so enable `AutoRespond` only if you trust server admins.** -
+
-

Warning

+

Warning

- **This bot may get spammy depending on your rules, although the global [messagecooldown](configuration.md#messagecooldown) setting can help you avoiding accidental spam.** + **This bot may get spammy depending on your rules, although the global [messagecooldown](configuration.md#messagecooldown) setting can help you avoiding accidental spam.** -
+
-- **Settings:** +- **Settings:** - **Section:** **`ChatBot.AutoRespond`** + **Section:** **`ChatBot.AutoRespond`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Auto Respond Chat Bot is enabled. + This setting specifies if the Auto Respond Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Matches_File` + #### `Matches_File` -

Tip

+

Tip

- **This file is not created by default, we recommend making a clone of the [`sample-matches.ini`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/sample-matches.ini) and changing it according to your needs.** + **This file is not created by default, we recommend making a clone of the [`sample-matches.ini`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/sample-matches.ini) and changing it according to your needs.** -
+
-

Warning

+

Warning

- **If you want to use variables from this chat bot in scripts, currently that does not work. You will have to use a C# script in that case. We are working on getting this functionality back.** + **If you want to use variables from this chat bot in scripts, currently that does not work. You will have to use a C# script in that case. We are working on getting this functionality back.** -
+
- - **Description:** + - **Description:** - This setting specifies the path to the file which contains the list of rules for detecting of keywords and responding on them. + This setting specifies the path to the file which contains the list of rules for detecting of keywords and responding on them. - To find out how to configure the rules, take a look at the [`sample-matches.ini`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/sample-matches.ini) which has very detailed examples and a lot of comments. + To find out how to configure the rules, take a look at the [`sample-matches.ini`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/sample-matches.ini) which has very detailed examples and a lot of comments. - _PS: In the future we will document the rules here with examples too._ + _PS: In the future we will document the rules here with examples too._ - - **Type:** `string` + - **Type:** `string` - - **Default:** `matches.ini` + - **Default:** `matches.ini` - #### `Match_Colors` + #### `Match_Colors` -

Tip

+

Tip

- **This feature uses the `§` symbol for color matching** + **This feature uses the `§` symbol for color matching** -
+
- - **Description:** + - **Description:** - This setting specifies if the Auto Respond Chat Bot should keep the color formatting send by the server. + This setting specifies if the Auto Respond Chat Bot should keep the color formatting send by the server. - You can use this when you need to match text by colors. + You can use this when you need to match text by colors. - List of all color codes: [here](https://minecraft.tools/en/color-code.php) + List of all color codes: [here](https://minecraft.tools/en/color-code.php) - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - -
+
## Chat Log -- **Description:** +- **Description:** - Make MCC log chat messages into a file. + Make MCC log chat messages into a file. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.ChatLog`** + **Section:** **`ChatBot.ChatLog`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Chat Log Chat Bot is enabled. + This setting specifies if the Chat Log Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Default:** `false` + - **Default:** `false` - #### `Add_DateTime` + #### `Add_DateTime` - - **Description:** + - **Description:** - This setting specifies if the Chat Log should prepend timestamps to the logged messages. + This setting specifies if the Chat Log should prepend timestamps to the logged messages. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Default:** `true` + - **Default:** `true` - #### `Log_File` + #### `Log_File` - - **Description:** + - **Description:** - This setting specifies the name of the Chat Log file that will be created. + This setting specifies the name of the Chat Log file that will be created. - - **Default:** `chatlog-%username%-%serverip%.txt` + - **Default:** `chatlog-%username%-%serverip%.txt` - #### `Filter` + #### `Filter` - - **Description:** + - **Description:** - Type of messages to be logged into the file. + Type of messages to be logged into the file. - Available values: + Available values: - - `all` + - `all` - All text from the console + All text from the console - - `messages` + - `messages` - All messages, including system, plugin channel, player and server. + All messages, including system, plugin channel, player and server. - - `chat` + - `chat` - Only chat messages. + Only chat messages. - - `private` + - `private` - Only private messages. + Only private messages. - - `internal` + - `internal` - Only internal messages and commands. + Only internal messages and commands. - - **Default:** `messages` + - **Default:** `messages` - -
+
## Discord Bridge -- **Description:** +- **Description:** - This Chat Bot allows you to send and receive messages and MCC commands via a Discord channel. + This Chat Bot allows you to send and receive messages and MCC commands via a Discord channel. -- **Setup:** +- **Setup:** - In order for this to work you must create a Discord bot on the [Discord Developers portal](https://discord.com/developers/applications/). + In order for this to work you must create a Discord bot on the [Discord Developers portal](https://discord.com/developers/applications/). - First go to [Discord Developers portal](https://discord.com/developers/applications/), click on **New Application**, fill out the name of your bot and confirm the terms of service and click **Create**. + First go to [Discord Developers portal](https://discord.com/developers/applications/), click on **New Application**, fill out the name of your bot and confirm the terms of service and click **Create**. - ![Image](/images/guide/Discord_Create_Application.png) + ![Image](/images/guide/Discord_Create_Application.png) - Copy the **Application ID** and save it somewhere. + Copy the **Application ID** and save it somewhere. - Click on the **Bot** tab in the left menu. + Click on the **Bot** tab in the left menu. - Click on **Add Bot** + Click on **Add Bot** - ![Image](/images/guide/Discord_Add_Bot.png) + ![Image](/images/guide/Discord_Add_Bot.png) - Click on the **Reset Token** button and copy the generated token, then paste it in the `Token` field in the MCC configuration. + Click on the **Reset Token** button and copy the generated token, then paste it in the `Token` field in the MCC configuration. - Enable `Message Content Intent`, `Server Members Intent` and `Presence Intent`. + Enable `Message Content Intent`, `Server Members Intent` and `Presence Intent`. - ![Image](/images/guide/Discord_Reset_Token.png) - ![Image](https://i.pics.rs/AAhyx.png) + ![Image](/images/guide/Discord_Reset_Token.png) + ![Image](https://i.pics.rs/AAhyx.png) -

Warning

+

Warning

- **Token is what gives you access to the Bot, do not share it with anyone and keep it safe!** + **Token is what gives you access to the Bot, do not share it with anyone and keep it safe!** -
+
-

Warning

+

Warning

- **You must Enable `Message Content Intent`, `Server Members Intent` and `Presence Intent` for the bot to work!** + **You must Enable `Message Content Intent`, `Server Members Intent` and `Presence Intent` for the bot to work!** -
+
- Then go to [Discord Permissions Calculator](https://discordapi.com/permissions.html). - Paste the **Application Id** that you've copied into the **Client ID** field, then Check/Enable the **Administrator** field in General Permissions section. - Finally click on the **Link** down bellow and invite the Bot on to a server you want to interact with the MCC on. + Then go to [Discord Permissions Calculator](https://discordapi.com/permissions.html). + Paste the **Application Id** that you've copied into the **Client ID** field, then Check/Enable the **Administrator** field in General Permissions section. + Finally click on the **Link** down bellow and invite the Bot on to a server you want to interact with the MCC on. - ![Image](/images/guide/Discord_Permissions.png) + ![Image](/images/guide/Discord_Permissions.png) - Go to your Discord Client and go to **Settings -> Advanced**, Enable **Developer Mode**. + Go to your Discord Client and go to **Settings -> Advanced**, Enable **Developer Mode**. - Then **right click** on a server where you invited the bot to in the server list and click on **Copy ID**, paste the copied id in `GuildId` in your MCC configuration. + Then **right click** on a server where you invited the bot to in the server list and click on **Copy ID**, paste the copied id in `GuildId` in your MCC configuration. - Then **right click** on a channel where you want to interact with the bot and click on **Copy ID**, paste the copied id in `ChannelId` in your MCC configuration. + Then **right click** on a channel where you want to interact with the bot and click on **Copy ID**, paste the copied id in `ChannelId` in your MCC configuration. - Send a message in that channel and **right click** on your nick and click **Copy ID** and paste the copied id in `OwnersIds` list setting in your MCC configuration. + Send a message in that channel and **right click** on your nick and click **Copy ID** and paste the copied id in `OwnersIds` list setting in your MCC configuration. - Enable the bot by setting `Enabled` to `true` in your MCC configuration and start the MCC. + Enable the bot by setting `Enabled` to `true` in your MCC configuration and start the MCC. -- **Usage:** +- **Usage:** - To send a message simply type it out in the Discord channel and press enter. + To send a message simply type it out in the Discord channel and press enter. - To execute a MCC command, you must prefix it with a dot (`.`). - Example: `.move 145 64 832` + To execute a MCC command, you must prefix it with a dot (`.`). + Example: `.move 145 64 832` -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.DiscordBridge`** + **Section:** **`ChatBot.DiscordBridge`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Discord Bridge Chat Bot is enabled. + This setting specifies if the Discord Bridge Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Token` + #### `Token` - - **Description:** + - **Description:** - This is the token of your Discord bot. + This is the token of your Discord bot. - - **Type:** `string` + - **Type:** `string` - #### `GuildId` + #### `GuildId` - - **Description:** + - **Description:** - This is the ID of your server/guild where you have invited the bot to. + This is the ID of your server/guild where you have invited the bot to. - - **Type:** `unsigned long` + - **Type:** `unsigned long` - #### `ChannelId` + #### `ChannelId` - - **Description:** + - **Description:** - This is the ID of a channel on your server/guild where you want to interact with the bot. + This is the ID of a channel on your server/guild where you want to interact with the bot. - - **Type:** `unsigned long` + - **Type:** `unsigned long` - #### `OwnersIds` + #### `OwnersIds` - - **Description:** + - **Description:** - This is a list of Discord user IDs which can interact with the bot. + This is a list of Discord user IDs which can interact with the bot. - - **Type:** `list/array of: unsigned long` + - **Type:** `list/array of: unsigned long` - #### `Message_Send_Timeout` + #### `Message_Send_Timeout` - - **Description:** + - **Description:** - How long (in seconds) to wait for a message to be sent to Discord before giving up. + How long (in seconds) to wait for a message to be sent to Discord before giving up. - - **Type:** `integer` + - **Type:** `integer` - - **Default:** `3` + - **Default:** `3` - #### `Allow_Other_Bot_Messages` + #### `Allow_Other_Bot_Messages` - - **Description:** + - **Description:** - When enabled, messages from other Discord bots in the channel are relayed to Minecraft chat. The bridge always ignores its own messages to prevent loops. + When enabled, messages from other Discord bots in the channel are relayed to Minecraft chat. The bridge always ignores its own messages to prevent loops. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `PrivateMessageFormat` + #### `PrivateMessageFormat` - - **Description:** + - **Description:** - The format used when someone sends you a private message on the server. + The format used when someone sends you a private message on the server. - Parts of the message between `{` and `}` are replaced by the Chat Bot at runtime; do not change them. + Parts of the message between `{` and `}` are replaced by the Chat Bot at runtime; do not change them. - `{message}` is replaced with the message text, `{username}` with the sender's name, and `{timestamp}` with the current date and time. + `{message}` is replaced with the message text, `{username}` with the sender's name, and `{timestamp}` with the current date and time. - For Discord message formatting, refer to [this guide](https://www.writebots.com/discord-text-formatting/). + For Discord message formatting, refer to [this guide](https://www.writebots.com/discord-text-formatting/). - - **Type:** `string` + - **Type:** `string` - - **Default:** `**[Private Message]** {username}: {message}` + - **Default:** `**[Private Message]** {username}: {message}` - #### `PublicMessageFormat` + #### `PublicMessageFormat` - - **Description:** + - **Description:** - The format used when sending a public message to the Discord channel. + The format used when sending a public message to the Discord channel. - Parts of the message between `{` and `}` are replaced by the Chat Bot at runtime; do not change them. + Parts of the message between `{` and `}` are replaced by the Chat Bot at runtime; do not change them. - `{message}` is replaced with the message text, `{username}` with the sender's name, and `{timestamp}` with the current date and time. + `{message}` is replaced with the message text, `{username}` with the sender's name, and `{timestamp}` with the current date and time. - For Discord message formatting, refer to [this guide](https://www.writebots.com/discord-text-formatting/). + For Discord message formatting, refer to [this guide](https://www.writebots.com/discord-text-formatting/). - - **Type:** `string` + - **Type:** `string` - - **Default:** `{username}: {message}` + - **Default:** `{username}: {message}` - #### `TeleportRequestMessageFormat` + #### `TeleportRequestMessageFormat` - - **Description:** + - **Description:** - The format used when someone sends you a teleport request. + The format used when someone sends you a teleport request. - Parts of the message between `{` and `}` are replaced by the Chat Bot at runtime; do not change them. + Parts of the message between `{` and `}` are replaced by the Chat Bot at runtime; do not change them. - `{username}` is replaced with the requester's name. + `{username}` is replaced with the requester's name. - For Discord message formatting, refer to [this guide](https://www.writebots.com/discord-text-formatting/). + For Discord message formatting, refer to [this guide](https://www.writebots.com/discord-text-formatting/). - - **Type:** `string` + - **Type:** `string` - - **Default:** `A new Teleport Request from **{username}**!` + - **Default:** `A new Teleport Request from **{username}**!` -
+
## Discord RPC -- **Description:** +- **Description:** - This Chat Bot shows your current Minecraft session as a Discord Rich Presence status. It displays information like the server address, your health, current dimension, coordinates, gamemode, and how long you have been connected. + This Chat Bot shows your current Minecraft session as a Discord Rich Presence status. It displays information like the server address, your health, current dimension, coordinates, gamemode, and how long you have been connected. -

Warning

+

Warning

- **Discord RPC uses a local IPC socket to communicate with the Discord client. MCC and Discord must be running on the same machine for this to work.** + **Discord RPC uses a local IPC socket to communicate with the Discord client. MCC and Discord must be running on the same machine for this to work.** -
+
-- **Setup:** +- **Setup:** - You need a Discord Application ID to use this bot. Here is how to get one: + You need a Discord Application ID to use this bot. Here is how to get one: - 1. Go to the [Discord Developer Portal](https://discord.com/developers/applications/) and click **New Application**. + 1. Go to the [Discord Developer Portal](https://discord.com/developers/applications/) and click **New Application**. - 2. Give it a name (this is what shows up in your Discord status, e.g. "Minecraft Console Client"), accept the terms, and click **Create**. + 1. Give it a name (this is what shows up in your Discord status, e.g. "Minecraft Console Client"), accept the terms, and click **Create**. - 3. On the **General Information** page, copy the **Application ID** and paste it into the `ApplicationId` field in your MCC configuration. + 1. On the **General Information** page, copy the **Application ID** and paste it into the `ApplicationId` field in your MCC configuration. - 4. *(Optional)* If you want a custom image in your status, go to the **Rich Presence** tab and click **Art Assets**. Upload an image and give it a name (the **key**). Use that key in the `LargeImageKey` or `SmallImageKey` settings. The default value `mcc_icon` references a built-in MCC icon already registered on the application -- no upload needed if you are happy with that. + 1. *(Optional)* If you want a custom image in your status, go to the **Rich Presence** tab and click **Art Assets**. Upload an image and give it a name (the **key**). Use that key in the `LargeImageKey` or `SmallImageKey` settings. The default value `mcc_icon` references a built-in MCC icon already registered on the application -- no upload needed if you are happy with that. - 5. Enable the bot by setting `Enabled` to `true` in your MCC configuration and start MCC with Discord already running. + 1. Enable the bot by setting `Enabled` to `true` in your MCC configuration and start MCC with Discord already running. - Discord updates Rich Presence at most once every 15 seconds regardless of how often MCC sends updates, so you may notice a short delay before your status reflects changes. + Discord updates Rich Presence at most once every 15 seconds regardless of how often MCC sends updates, so you may notice a short delay before your status reflects changes. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.DiscordRpc`** + **Section:** **`ChatBot.DiscordRpc`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Discord RPC Chat Bot is enabled. + This setting specifies if the Discord RPC Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `ApplicationId` + #### `ApplicationId` - - **Description:** + - **Description:** - Your Discord Application ID. Create one at [discord.com/developers/applications](https://discord.com/developers/applications/). + Your Discord Application ID. Create one at [discord.com/developers/applications](https://discord.com/developers/applications/). - - **Type:** `string` + - **Type:** `string` - #### `PresenceDetails` + #### `PresenceDetails` - - **Description:** + - **Description:** - The top line of the Rich Presence display. Supports placeholders (see below). + The top line of the Rich Presence display. Supports placeholders (see below). - - **Type:** `string` + - **Type:** `string` - - **Default:** `Playing on {server_host}:{server_port}` + - **Default:** `Playing on {server_host}:{server_port}` - #### `PresenceState` + #### `PresenceState` - - **Description:** + - **Description:** - The second line of the Rich Presence display. Supports placeholders (see below). + The second line of the Rich Presence display. Supports placeholders (see below). - - **Type:** `string` + - **Type:** `string` - - **Default:** `{dimension} - HP: {health}/{max_health}` + - **Default:** `{dimension} - HP: {health}/{max_health}` - #### `LargeImageKey` + #### `LargeImageKey` - - **Description:** + - **Description:** - The key of the large image asset uploaded to your Discord application. Leave empty to show no image. + The key of the large image asset uploaded to your Discord application. Leave empty to show no image. - - **Type:** `string` + - **Type:** `string` - - **Default:** `mcc_icon` + - **Default:** `mcc_icon` - #### `LargeImageText` + #### `LargeImageText` - - **Description:** + - **Description:** - Tooltip text shown when hovering over the large image. Supports placeholders (see below). + Tooltip text shown when hovering over the large image. Supports placeholders (see below). - - **Type:** `string` + - **Type:** `string` - - **Default:** `Minecraft Console Client` + - **Default:** `Minecraft Console Client` - #### `SmallImageKey` + #### `SmallImageKey` - - **Description:** + - **Description:** - The key of the small image asset uploaded to your Discord application. Leave empty to hide the small image. + The key of the small image asset uploaded to your Discord application. Leave empty to hide the small image. - - **Type:** `string` + - **Type:** `string` - - **Default:** *(empty)* + - **Default:** *(empty)* - #### `SmallImageText` + #### `SmallImageText` - - **Description:** + - **Description:** - Tooltip text shown when hovering over the small image. Supports placeholders (see below). + Tooltip text shown when hovering over the small image. Supports placeholders (see below). - - **Type:** `string` + - **Type:** `string` - - **Default:** *(empty)* + - **Default:** *(empty)* - #### `ShowServerAddress` + #### `ShowServerAddress` - - **Description:** + - **Description:** - Show the server address in the Discord presence. When set to `false`, `{server_host}` and `{server_port}` are replaced with `Hidden` and `****`. + Show the server address in the Discord presence. When set to `false`, `{server_host}` and `{server_port}` are replaced with `Hidden` and `****`. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `ShowCoordinates` + #### `ShowCoordinates` - - **Description:** + - **Description:** - Show your coordinates in the Discord presence. When set to `false`, `{x}`, `{y}`, and `{z}` are replaced with `?`. + Show your coordinates in the Discord presence. When set to `false`, `{x}`, `{y}`, and `{z}` are replaced with `?`. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `ShowHealth` + #### `ShowHealth` - - **Description:** + - **Description:** - Show health and food level in the Discord presence. When set to `false`, `{health}`, `{max_health}`, and `{food}` are replaced with `?`. + Show health and food level in the Discord presence. When set to `false`, `{health}`, `{max_health}`, and `{food}` are replaced with `?`. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `ShowDimension` + #### `ShowDimension` - - **Description:** + - **Description:** - Show the current dimension in the Discord presence. When set to `false`, `{dimension}` is replaced with `Hidden`. + Show the current dimension in the Discord presence. When set to `false`, `{dimension}` is replaced with `Hidden`. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `ShowGamemode` + #### `ShowGamemode` - - **Description:** + - **Description:** - Show the current gamemode in the Discord presence. When set to `false`, `{gamemode}` is replaced with `Hidden`. + Show the current gamemode in the Discord presence. When set to `false`, `{gamemode}` is replaced with `Hidden`. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `ShowElapsedTime` + #### `ShowElapsedTime` - - **Description:** + - **Description:** - Show how long you have been connected to the server as an elapsed time in the Discord presence. + Show how long you have been connected to the server as an elapsed time in the Discord presence. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `ShowPlayerCount` + #### `ShowPlayerCount` - - **Description:** + - **Description:** - Show the number of online players as a party size in the Discord presence. + Show the number of online players as a party size in the Discord presence. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `UpdateIntervalSeconds` + #### `UpdateIntervalSeconds` - - **Description:** + - **Description:** - How often (in seconds) to refresh the Discord presence. Minimum value is `1`. + How often (in seconds) to refresh the Discord presence. Minimum value is `1`. - Note: Discord itself only accepts presence updates once every 15 seconds, so setting this lower than `15` has no visible effect on the Discord side. + Note: Discord itself only accepts presence updates once every 15 seconds, so setting this lower than `15` has no visible effect on the Discord side. - - **Type:** `integer` + - **Type:** `integer` - - **Default:** `10` + - **Default:** `10` - --- + ______________________________________________________________________ - #### Placeholders + #### Placeholders - The following placeholders can be used in `PresenceDetails`, `PresenceState`, `LargeImageText`, and `SmallImageText`: + The following placeholders can be used in `PresenceDetails`, `PresenceState`, `LargeImageText`, and `SmallImageText`: - | Placeholder | Description | - |---|---| - | `{server_host}` | Server hostname (masked if `ShowServerAddress` is `false`) | - | `{server_port}` | Server port (masked if `ShowServerAddress` is `false`) | - | `{username}` | Your Minecraft username | - | `{health}` | Current health (masked if `ShowHealth` is `false`) | - | `{max_health}` | Maximum health, always `20` (masked if `ShowHealth` is `false`) | - | `{food}` | Current food level (masked if `ShowHealth` is `false`) | - | `{dimension}` | Current dimension name, e.g. `Overworld` (masked if `ShowDimension` is `false`) | - | `{gamemode}` | Current gamemode, e.g. `Survival` (masked if `ShowGamemode` is `false`) | - | `{x}` | X coordinate (masked if `ShowCoordinates` is `false`) | - | `{y}` | Y coordinate (masked if `ShowCoordinates` is `false`) | - | `{z}` | Z coordinate (masked if `ShowCoordinates` is `false`) | - | `{player_count}` | Number of players currently online | - | `{protocol}` | Minecraft protocol version number | + | Placeholder | Description | + | ---------------- | ------------------------------------------------------------------------------- | + | `{server_host}` | Server hostname (masked if `ShowServerAddress` is `false`) | + | `{server_port}` | Server port (masked if `ShowServerAddress` is `false`) | + | `{username}` | Your Minecraft username | + | `{health}` | Current health (masked if `ShowHealth` is `false`) | + | `{max_health}` | Maximum health, always `20` (masked if `ShowHealth` is `false`) | + | `{food}` | Current food level (masked if `ShowHealth` is `false`) | + | `{dimension}` | Current dimension name, e.g. `Overworld` (masked if `ShowDimension` is `false`) | + | `{gamemode}` | Current gamemode, e.g. `Survival` (masked if `ShowGamemode` is `false`) | + | `{x}` | X coordinate (masked if `ShowCoordinates` is `false`) | + | `{y}` | Y coordinate (masked if `ShowCoordinates` is `false`) | + | `{z}` | Z coordinate (masked if `ShowCoordinates` is `false`) | + | `{player_count}` | Number of players currently online | + | `{protocol}` | Minecraft protocol version number | -
+
## Farmer @@ -1877,1092 +1859,1080 @@ redirectFrom: -- **Description:** +- **Description:** - This bot can farm crops for you. - When you start it it will plant, break and bonemeal crops in order. + This bot can farm crops for you. + When you start it it will plant, break and bonemeal crops in order. - Supported crops: + Supported crops: - - Beetroot - - Carrot - - Melon - - Netherwart - - Pumpkin - - Potato - - Wheat + - Beetroot + - Carrot + - Melon + - Netherwart + - Pumpkin + - Potato + - Wheat - **Current list of issues:** + **Current list of issues:** - - Sometimes the bot will not bone meal carrots/potatoes or melon/pumpkin stems (you will see it in a pattern of crops that have not been bonemealed) - - Sometimes the bot can jump on to the crops and break the farmland when coming form a different height, it's advised to keep the farming area flat and fenced off so the items to not fly out of the farming area - - If you have a farming platform that is 1 block thick and has air bellow, make it a few blocks thick because the bot can fall through sometimes when logging in and standing on farmland - - Sometimes the bot can be kicked for "invalid movement" packets when farming netherwart on soul sand, we haven't been able to figure why this happens in some parts of the world, while on other it's completely fine, it's advised to keep the farming area small and flat. + - Sometimes the bot will not bone meal carrots/potatoes or melon/pumpkin stems (you will see it in a pattern of crops that have not been bonemealed) + - Sometimes the bot can jump on to the crops and break the farmland when coming form a different height, it's advised to keep the farming area flat and fenced off so the items to not fly out of the farming area + - If you have a farming platform that is 1 block thick and has air bellow, make it a few blocks thick because the bot can fall through sometimes when logging in and standing on farmland + - Sometimes the bot can be kicked for "invalid movement" packets when farming netherwart on soul sand, we haven't been able to figure why this happens in some parts of the world, while on other it's completely fine, it's advised to keep the farming area small and flat. - _We're working on solving these issues._ + _We're working on solving these issues._ - **What the bot does not do as of the time of writing, but are planned features:** + **What the bot does not do as of the time of writing, but are planned features:** - - Does not collect items which fly off to the side, (it's advised to fence off the farming area with 2 high wall) - - Does not put items to the chest once the inventory is full - - Does not warn you when the inventory is full - - Does not refill inventory with seeds or bonemeal from chests by it self. + - Does not collect items which fly off to the side, (it's advised to fence off the farming area with 2 high wall) + - Does not put items to the chest once the inventory is full + - Does not warn you when the inventory is full + - Does not refill inventory with seeds or bonemeal from chests by it self. - > **ℹ️ NOTE: The default radius of scanning is `30` blocks, we suggest that you do not use radius too big because it might slow down the bot. The bigger the radius, the slower the scanning and processing is.** + > **ℹ️ NOTE: The default radius of scanning is `30` blocks, we suggest that you do not use radius too big because it might slow down the bot. The bigger the radius, the slower the scanning and processing is.** -- **Commands:** +- **Commands:** - When enabled will add the `/farmer` command. + When enabled will add the `/farmer` command. - **Usage**: + **Usage**: - ``` - /farmer [radius:] [unsafe:] [teleport:] [debug:]|stop> - ``` + ``` + /farmer [radius:] [unsafe:] [teleport:] [debug:]|stop> + ``` - _Options marked with `[` and `]` are optional and in case of this command can have whatever order you prefer after the `` field._ + _Options marked with `[` and `]` are optional and in case of this command can have whatever order you prefer after the `` field._ - _Options that have `=` means that the value after the `=` is a default value, in case of this command the default radius is 30 blocks._ + _Options that have `=` means that the value after the `=` is a default value, in case of this command the default radius is 30 blocks._ - **Examples:** + **Examples:** - Farming `wheat` in a radius of `40` blocks. + Farming `wheat` in a radius of `40` blocks. - ``` - /farmer start wheat radius:40 - ``` + ``` + /farmer start wheat radius:40 + ``` - Farming `melon` with debug output and direct teleporting: + Farming `melon` with debug output and direct teleporting: - ``` - /farmer start melon debug:true teleport:true - ``` + ``` + /farmer start melon debug:true teleport:true + ``` - Stopping the bot: + Stopping the bot: - ``` - /farmer stop - ``` + ``` + /farmer stop + ``` -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.Farmer`** + **Section:** **`ChatBot.Farmer`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Farmer Chat Bot is enabled. + This setting specifies if the Farmer Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Delay_Between_Tasks` + #### `Delay_Between_Tasks` - - **Description:** + - **Description:** - This setting specifies the delay in seconds between each task performed by the bot. + This setting specifies the delay in seconds between each task performed by the bot. - - **Type:** `integer` + - **Type:** `integer` - - **Default:** `1` + - **Default:** `1` - - **Minimum:** `1` + - **Minimum:** `1` - -
+
## Follow player -- **Description:** +- **Description:** - This bot enables you to make a bot follow a specific player. + This bot enables you to make a bot follow a specific player. -

Tip

+

Tip

- **The bot can be slow at times, you need to walk with a normal speed and to sometimes stop for it to be able to keep up with you, it's similar to making animals follow you when you're holding food in your hand. This is due to a slow pathfinding algorithm, we're working on getting a better one. You can tweak the update limit and find what works best for you. (NOTE: Do not but a very low one, because you might achieve the opposite, this might clog the thread for terrain handling) and thus slow the bot even more.** + **The bot can be slow at times, you need to walk with a normal speed and to sometimes stop for it to be able to keep up with you, it's similar to making animals follow you when you're holding food in your hand. This is due to a slow pathfinding algorithm, we're working on getting a better one. You can tweak the update limit and find what works best for you. (NOTE: Do not but a very low one, because you might achieve the opposite, this might clog the thread for terrain handling) and thus slow the bot even more.** -
+
-

Tip

+

Tip

- **You need to have [terrainandmovements](configuration.md#terrainandmovements) and [entityhandling](configuration.md#entityhandling) enabled in order for this bot to work.** + **You need to have [terrainandmovements](configuration.md#terrainandmovements) and [entityhandling](configuration.md#entityhandling) enabled in order for this bot to work.** -
+
-- **Settings:** +- **Settings:** - **Section:** **`ChatBot.FollowPlayer`** + **Section:** **`ChatBot.FollowPlayer`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Follow Player Chat Bot is enabled. + This setting specifies if the Follow Player Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Update_Limit` + #### `Update_Limit` - - **Description:** + - **Description:** - The rate at which the bot does calculations (second). + The rate at which the bot does calculations (second). - You can tweak this if you feel the bot is too slow. + You can tweak this if you feel the bot is too slow. - - **Type:** `float` + - **Type:** `float` - - **Default:** `1.5` + - **Default:** `1.5` - #### `Stop_At_Distance` + #### `Stop_At_Distance` - - **Description:** + - **Description:** - Do not follow the player if he is in the range of `X` blocks (prevents the bot from pushing a player in an infinite loop). + Do not follow the player if he is in the range of `X` blocks (prevents the bot from pushing a player in an infinite loop). - - **Type:** `float` + - **Type:** `float` - - **Default:** `3.0` + - **Default:** `3.0` - -
+
## Hangman -- **Description:** +- **Description:** - Hangman game is one of the first bots ever written for MCC, to demonstrate ChatBot capabilities. + Hangman game is one of the first bots ever written for MCC, to demonstrate ChatBot capabilities. - Create a file with words to guess (examples: [`words-en.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-en.txt), [`words-fr.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-fr.txt)) and set it in config inside the `[Hangman]` section. + Create a file with words to guess (examples: [`words-en.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-en.txt), [`words-fr.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-fr.txt)) and set it in config inside the `[Hangman]` section. - Also set `enabled` to `true`, then, add your username in the `botowners` INI setting, and finally, connect to the server and use `/tell start` to start the game. + Also set `enabled` to `true`, then, add your username in the `botowners` INI setting, and finally, connect to the server and use `/tell start` to start the game. -

Tip

+

Tip

- **If the bot does not respond to bot owners, see the [Detecting chat messages](https://github.com/MCCTeam/Minecraft-Console-Client/tree/master/MinecraftClient/config#detecting-chat-messages) section.** + **If the bot does not respond to bot owners, see the [Detecting chat messages](https://github.com/MCCTeam/Minecraft-Console-Client/tree/master/MinecraftClient/config#detecting-chat-messages) section.** -
+
-- **Settings:** +- **Settings:** - **Section:** **`ChatBot.HangmanGame`** + **Section:** **`ChatBot.HangmanGame`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Hangman Chat Bot is enabled. + This setting specifies if the Hangman Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Default:** `false` + - **Default:** `false` - #### `English` + #### `English` - - **Description:** + - **Description:** - This setting specifies if the Hangman Chat Bot should use English. + This setting specifies if the Hangman Chat Bot should use English. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Default:** `true` + - **Default:** `true` - #### `FileWords_EN` + #### `FileWords_EN` -

Tip

+

Tip

- **This settings file is for English and is not created by the default** + **This settings file is for English and is not created by the default** -
+
- - **Description:** + - **Description:** - This setting specifies the path to the file which Hangman will use for the list of words, each word is added on a separate line. + This setting specifies the path to the file which Hangman will use for the list of words, each word is added on a separate line. - - **Default:** `hangman-en.txt` - - **Example**: [`words-en.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-en.txt) + - **Default:** `hangman-en.txt` - #### `FileWords_FR` + - **Example**: [`words-en.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-en.txt) -

Tip

+ #### `FileWords_FR` - **This settings file is for French and is not created by the default** +

Tip

-
+ **This settings file is for French and is not created by the default** - - **Description:** +
- This setting is same as the above but for French. + - **Description:** - - **Default:** `hangman-fr.txt` - - **Example**: [`words-fr.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-fr.txt) + This setting is same as the above but for French. + - **Default:** `hangman-fr.txt` -
+ - **Example**: [`words-fr.txt`](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/config/hangman-fr.txt) + +
## Mailer -- **Description:** +- **Description:** - Relay messages between players and servers, like a mail plugin. + Relay messages between players and servers, like a mail plugin. - This bot can store messages when the recipients are offline, and send them when they join the server. + This bot can store messages when the recipients are offline, and send them when they join the server. - The Mailer bot can store and relay mails much like Essential's `/mail` command. + The Mailer bot can store and relay mails much like Essential's `/mail` command. - - `/tell mail [RECIPIENT] [MESSAGE]`: Save your message for future delivery - - `/tell tellonym [RECIPIENT] [MESSAGE]`: Same, but the recipient will receive an anonymous mail + - `/tell mail [RECIPIENT] [MESSAGE]`: Save your message for future delivery + - `/tell tellonym [RECIPIENT] [MESSAGE]`: Same, but the recipient will receive an anonymous mail - The bot will automatically deliver the mail when the recipient is online. The bot also offers a /mailer command from the MCC command prompt: + The bot will automatically deliver the mail when the recipient is online. The bot also offers a /mailer command from the MCC command prompt: - - `/mailer getmails` + - `/mailer getmails` - Show all mails in the console. + Show all mails in the console. - - `/mailer addignored [NAME]` + - `/mailer addignored [NAME]` - Prevent a specific player from sending mails. + Prevent a specific player from sending mails. - - `/mailer removeignored [NAME]` + - `/mailer removeignored [NAME]` - Lift the mailer restriction for this player. + Lift the mailer restriction for this player. - - `/mailer getignored` + - `/mailer getignored` - Show all ignored players. + Show all ignored players. -

Warning

+

Warning

- **The bot identifies players by their name (Not by UUID!). A nickname plugin or a Minecraft rename may cause mails going to the wrong player! Never write something to the bot you wouldn't say in the normal chat (You have been warned!).** + **The bot identifies players by their name (Not by UUID!). A nickname plugin or a Minecraft rename may cause mails going to the wrong player! Never write something to the bot you wouldn't say in the normal chat (You have been warned!).** -
+
-

Warning

+

Warning

- **Server admins can spoof PMs (`/tellraw`, `/nick`) so enable `RemoteControl` only if you trust server admins.** + **Server admins can spoof PMs (`/tellraw`, `/nick`) so enable `RemoteControl` only if you trust server admins.** -
+
- **Mailer Network:** + **Mailer Network:** - - The Mailer bot can relay messages between servers. + - The Mailer bot can relay messages between servers. - - To set up a network of two or more bots, launch several instances with the bot activated and the same database. + - To set up a network of two or more bots, launch several instances with the bot activated and the same database. - - If you launch two instances from one .exe they should synchronize automatically to the same file. + - If you launch two instances from one .exe they should synchronize automatically to the same file. -* **Settings:** +* **Settings:** - **Section:** **`ChatBot.Mailer`** + **Section:** **`ChatBot.Mailer`** - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Mailer Chat Bot is enabled. + This setting specifies if the Mailer Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `DatabaseFile` + #### `DatabaseFile` - - **Description:** + - **Description:** - This setting specifies the path to the file where the Mailer Chat Bot will store the mails. + This setting specifies the path to the file where the Mailer Chat Bot will store the mails. - This file will be auto created by the Mailer Chat Bot. + This file will be auto created by the Mailer Chat Bot. - - **Default:** `MailerDatabase.ini` + - **Default:** `MailerDatabase.ini` - #### `IgnoreListFile` + #### `IgnoreListFile` - - **Description:** + - **Description:** - This setting specifies the path to the file where the Mailer Chat Bot will load people who are to be ignored by the Chat Bot. If you want to prevent someone from using this chat bot, add him in this file by writing his nickname on a new line. + This setting specifies the path to the file where the Mailer Chat Bot will load people who are to be ignored by the Chat Bot. If you want to prevent someone from using this chat bot, add him in this file by writing his nickname on a new line. - This file will be auto created by the Mailer Chat Bot. + This file will be auto created by the Mailer Chat Bot. - - **Default:** `MailerIgnoreList.ini` + - **Default:** `MailerIgnoreList.ini` - #### `PublicInteractions` + #### `PublicInteractions` - - **Description:** + - **Description:** - This setting specifies if the Mailer Chat Bot should be interacted with in the public chat (in addition to private messages). + This setting specifies if the Mailer Chat Bot should be interacted with in the public chat (in addition to private messages). - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `MaxMailsPerPlayer` + #### `MaxMailsPerPlayer` - - **Description:** + - **Description:** - This setting specifies how many mails the Mailer Chat Bot should store per player at maximum. + This setting specifies how many mails the Mailer Chat Bot should store per player at maximum. - - **Type:** `integer` + - **Type:** `integer` - - **Default:** `10` + - **Default:** `10` - #### `MaxDatabaseSize` + #### `MaxDatabaseSize` - - **Description:** + - **Description:** - This setting specifies the maximum database file size of Mailer Chat Bot in Kilobytes. + This setting specifies the maximum database file size of Mailer Chat Bot in Kilobytes. - - **Type:** `integer` + - **Type:** `integer` - - **Default:** `10000` (10 MB) + - **Default:** `10000` (10 MB) - #### `MailRetentionDays` + #### `MailRetentionDays` - - **Description:** + - **Description:** - This setting specifies how long should the Mailer Chat Bot save/store messages for (in days). + This setting specifies how long should the Mailer Chat Bot save/store messages for (in days). - - **Type:** `integer` + - **Type:** `integer` - - **Default:** `30` + - **Default:** `30` ## Map -- **Description:** +- **Description:** - This Chat Bot allows you to render items maps in the console, to `.bmp` images and to relay them to Discord using the [Discord Bridge](#discord-bridge) Chat Bot. + This Chat Bot allows you to render items maps in the console, to `.bmp` images and to relay them to Discord using the [Discord Bridge](#discord-bridge) Chat Bot. - This is useful for solving captchas on servers which require it, or saving the map art into an image. + This is useful for solving captchas on servers which require it, or saving the map art into an image. - The maps are **rendered** into `Rendered_Maps` folder which will be auto created in the same folder where the client executable is located. + The maps are **rendered** into `Rendered_Maps` folder which will be auto created in the same folder where the client executable is located. -- **Commands:** +- **Commands:** - When enabled will add the `/maps` command. + When enabled will add the `/maps` command. - **Usage**: + **Usage**: - ``` - /maps > | maps > - ``` + ``` + /maps > | maps > + ``` -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.Map`** + **Section:** **`ChatBot.Map`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Map Chat Bot is enabled. + This setting specifies if the Map Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Render_In_Console` + #### `Render_In_Console` - - **Description:** + - **Description:** - This setting specifies if the Map Chat Bot should render the map in the console. + This setting specifies if the Map Chat Bot should render the map in the console. - It is recommended to use something like Power Shell for the best map quality (at least for Windows users). + It is recommended to use something like Power Shell for the best map quality (at least for Windows users). - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `Save_To_File` + #### `Save_To_File` -

Warning

+

Warning

- **If you want the Discord relay feature, you must enable this setting!** + **If you want the Discord relay feature, you must enable this setting!** -
+
- - **Description:** + - **Description:** - This setting specifies if the Map Chat Bot should render the map and save it into a file (`.bmp` format) + This setting specifies if the Map Chat Bot should render the map and save it into a file (`.bmp` format) - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Auto_Render_On_Update` + #### `Auto_Render_On_Update` -

Warning

+

Warning

- **On some versions older than 1.17 this could cause some performance issue on older hardware if there a lot of maps being rendered, since map updates are sent multiple times a second. Be careful.** + **On some versions older than 1.17 this could cause some performance issue on older hardware if there a lot of maps being rendered, since map updates are sent multiple times a second. Be careful.** -
+
- - **Description:** + - **Description:** - This setting specifies if the Map Chat Bot should automatically render maps as they're received from the servers. + This setting specifies if the Map Chat Bot should automatically render maps as they're received from the servers. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Delete_All_On_Unload` + #### `Delete_All_On_Unload` - - **Description:** + - **Description:** - This setting specifies if the Map Chat Bot should automatically delete rendered maps when un-loaded or reloaded. + This setting specifies if the Map Chat Bot should automatically delete rendered maps when un-loaded or reloaded. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `Notify_On_First_Update` + #### `Notify_On_First_Update` - - **Description:** + - **Description:** - This setting specifies if the Map Chat Bot should notify you when it got a map from the server for the first time. + This setting specifies if the Map Chat Bot should notify you when it got a map from the server for the first time. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Rasize_Rendered_Image` + #### `Rasize_Rendered_Image` -

Tip

+

Tip

- **The bigger the size, the less is the quality.** + **The bigger the size, the less is the quality.** -
+
-

Tip

+

Tip

- **For upscaling your maps you could use (getting a bit better quality): https://deepai.org/machine-learning-model/torch-srgan** + **For upscaling your maps you could use (getting a bit better quality): https://deepai.org/machine-learning-model/torch-srgan** -
+
- - **Description:** + - **Description:** - This setting specifies if the Map Chat Bot should resize the rendered image (the one that is saved to a file). + This setting specifies if the Map Chat Bot should resize the rendered image (the one that is saved to a file). - This is useful if you're relying map images to Discord via the [Discord Bridge](#discord-bridge) Chat Bot. + This is useful if you're relying map images to Discord via the [Discord Bridge](#discord-bridge) Chat Bot. - The default map size is `128x128`. + The default map size is `128x128`. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Resize_To` + #### `Resize_To` -

Tip

+

Tip

- **Might be a bit slow on less powerful systems when rendering a lot of maps. Lower down the resolution if you have any performance issues. If your system is not that powerful and can't handle it, use external tools for upscaling and resizing.** + **Might be a bit slow on less powerful systems when rendering a lot of maps. Lower down the resolution if you have any performance issues. If your system is not that powerful and can't handle it, use external tools for upscaling and resizing.** -
+
- - **Description:** + - **Description:** - Which size the map should be resized to if `Rasize_Rendered_Image` is `true`. + Which size the map should be resized to if `Rasize_Rendered_Image` is `true`. + - **Type:** `integer` - - **Type:** `integer` + - **Default:** `512` - - **Default:** `512` + #### `Send_Rendered_To_Discord` - #### `Send_Rendered_To_Discord` +

Warning

-

Warning

+ **The [Discord Bridge](#discord-bridge) Chat Bot must be enabled and configured!** - **The [Discord Bridge](#discord-bridge) Chat Bot must be enabled and configured!** +
-
+

Warning

-

Warning

+ **You need to enable `Save_To_File` in order for this to work.** - **You need to enable `Save_To_File` in order for this to work.** +
-
+

Tip

-

Tip

+ **Sometimes when the client connects, the [Discord Bridge](#discord-bridge) will be loaded a tiny bit after. Rendered map images are queued up and sent in order as soon as the [Discord Bridge](#discord-bridge) is ready and connected.** - **Sometimes when the client connects, the [Discord Bridge](#discord-bridge) will be loaded a tiny bit after. Rendered map images are queued up and sent in order as soon as the [Discord Bridge](#discord-bridge) is ready and connected.** +
-
+ - **Description:** - - **Description:** + Send a rendered map (saved to a file) to a Discord channel via the [Discord Bridge](#discord-bridge) Chat Bot. - Send a rendered map (saved to a file) to a Discord channel via the [Discord Bridge](#discord-bridge) Chat Bot. + - **Type:** `boolean` + - **Default:** `false` - - **Type:** `boolean` - - - **Default:** `false` - - -
+
## PlayerList Logger -- **Description:** - Log the list of players periodically into a textual file. +- **Description:** -- **Settings:** + Log the list of players periodically into a textual file. - **Section:** **`ChatBot.PlayerListLogger`** +- **Settings:** -
- All settings + **Section:** **`ChatBot.PlayerListLogger`** - #### `Enabled` +
+ All settings - - **Description:** + #### `Enabled` - This setting specifies if the PlayerList Logger Chat Bot is enabled. + - **Description:** - - **Available values:** `true` and `false`. + This setting specifies if the PlayerList Logger Chat Bot is enabled. - - **Default:** `false` + - **Available values:** `true` and `false`. - #### `File` + - **Default:** `false` - - **Description:** + #### `File` - This setting specifies the name of the player list Log file that will be created. + - **Description:** - - **Default:** `playerlog.txt` + This setting specifies the name of the player list Log file that will be created. - #### `Delay` + - **Default:** `playerlog.txt` - - **Description:** + #### `Delay` - Save the list of players every how many seconds. + - **Description:** - - **Type:** `float` + Save the list of players every how many seconds. - - **Default:** `60.0` + - **Type:** `float` + - **Default:** `60.0` -
+
## Remote Control -- **Description:** +- **Description:** - Send MCC console commands to your bot through server PMs (`/tell`). + Send MCC console commands to your bot through server PMs (`/tell`). - You need to have [ChatFormat](configuration.md#chat-format) working correctly and add yourself in [botowners](configuration.md#botowners) to use the bot. + You need to have [ChatFormat](configuration.md#chat-format) working correctly and add yourself in [botowners](configuration.md#botowners) to use the bot. -

Warning

+

Warning

- **Server admins can spoof PMs (`/tellraw`, `/nick`) so enable `RemoteControl` only if you trust server admins.** + **Server admins can spoof PMs (`/tellraw`, `/nick`) so enable `RemoteControl` only if you trust server admins.** -
+
-- **Settings:** +- **Settings:** - **Section:** **`ChatBot.RemoteControl`** + **Section:** **`ChatBot.RemoteControl`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Remote Control Chat Bot is enabled. + This setting specifies if the Remote Control Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `AutoTpaccept` + #### `AutoTpaccept` - - **Description:** + - **Description:** - This setting specifies if the Remote Control Chat Bot should automatically accept teleport requests. + This setting specifies if the Remote Control Chat Bot should automatically accept teleport requests. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `true` + - **Default:** `true` - #### `AutoTpaccept_Everyone` + #### `AutoTpaccept_Everyone` - - **Description:** + - **Description:** - This setting specifies if the Remote Control Chat Bot should automatically accept teleport requests from everyone. + This setting specifies if the Remote Control Chat Bot should automatically accept teleport requests from everyone. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - -
+
## Replay Capture -- **Description:** +- **Description:** - Enable recording of the game (`/replay start`) and replay it later using the Replay Mod (https://www.replaymod.com/). + Enable recording of the game (`/replay start`) and replay it later using the Replay Mod (https://www.replaymod.com/). -

Warning

+

Warning

- **This bot does not work for 1.19, we need maintainers for it.** + **This bot does not work for 1.19, we need maintainers for it.** -
+
-

Tip

+

Tip

- **Please note that due to technical limitations, the client player (you) will not be shown in the replay file** + **Please note that due to technical limitations, the client player (you) will not be shown in the replay file** -
+
-

Warning

+

Warning

- **You SHOULD use `/replay stop` or exit the program gracefully with `/quit` OR THE REPLAY FILE MAY GET CORRUPT!** + **You SHOULD use `/replay stop` or exit the program gracefully with `/quit` OR THE REPLAY FILE MAY GET CORRUPT!** -
+
-- **Settings:** +- **Settings:** - **Section:** **`ChatBot.ReplayCapture`** + **Section:** **`ChatBot.ReplayCapture`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Replay Mod Chat Bot is enabled. + This setting specifies if the Replay Mod Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Backup_Interval` + #### `Backup_Interval` - - **Description:** + - **Description:** - This setting specifies the time interval in seconds when the replay file should be auto-saved. + This setting specifies the time interval in seconds when the replay file should be auto-saved. - Use `-1` to disable. + Use `-1` to disable. - - **Type:** `float` + - **Type:** `float` - - **Default:** `300.0` + - **Default:** `300.0` - -
+
## Script Scheduler -- **Description:** +- **Description:** - Schedule commands and scripts to launch on various events such as server join, date/time or time interval. + Schedule commands and scripts to launch on various events such as server join, date/time or time interval. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.ScriptScheduler`** + **Section:** **`ChatBot.ScriptScheduler`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Script Scheduler Chat Bot is enabled. + This setting specifies if the Script Scheduler Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - ### Defining a task + ### Defining a task -

Tip

+

Tip

- **It is recommended that you align subsections to the right by one tab or 4 spaces for better readability.** + **It is recommended that you align subsections to the right by one tab or 4 spaces for better readability.** -
+
- - **Description:** + - **Description:** - Each task is defined as a new subsection `[[ChatBot.ScriptScheduler.TaskList]]` of the section: `[ChatBot.ScriptScheduler]`. + Each task is defined as a new subsection `[[ChatBot.ScriptScheduler.TaskList]]` of the section: `[ChatBot.ScriptScheduler]`. - **Subsection format:** - - ```toml - [[ChatBot.ScriptScheduler.TaskList]] - = - = - ``` - - **Available settings/options:** - - - `Trigger_On_First_Login` - - Will trigger the task when you login the first time. - - **Available values**: `true` and `false` - - **Type**: `boolean` - - - `Trigger_On_Login` - - Will trigger the task each time you login. - - **Available values**: `true` and `false` - - **Type**: `boolean` - - - `Trigger_On_Times` - - This will enable the task to trigger at exact time(s) you want. - - The type of this setting is `inline table`, that has the following sub-settings/options: - - - `Enable` - Enables/Disables the setting (Boolean, so either `true` or `false`) - - - `Times` - An array/list of times on which the task should run/trigger (each element is of the [Local Time](https://toml.io/en/v1.0.0#local-time) type, eg. `14:00:00`, so: `hours:minutes:seconds`) - - **Example**: - - ```toml - Trigger_On_Times = { Enable = true, Times = [ 14:00:00, 22:35:8] } - ``` - - - `Trigger_On_Interval` - - This will enable the task to trigger at certain interval which you've defined. - - The type of this setting is `inline table`, that has the following sub-settings/options: - - - `Enable` - Enables/Disables the setting (Boolean, so either `true` or `false`) - - - `MinTime` - Time in seconds (the type is `double`, eg. `3.14`) - - - `MaxTime` - Time in seconds (the type is `double`, eg. `3.14`) - - **If `MinTime` and `MaxTime` are the same, the interval will be consistent, however if they are not, the ChatBot will generate a random interval in between those two numbers provided, each time the task is run.** - - **Example**: - - ```toml - Trigger_On_Interval = { Enable = true, MinTime = 30.0, MaxTime = 160.0 } - ``` - - ### Full example + **Subsection format:** ```toml - [ChatBot.ScriptScheduler] - Enabled = true - - [[ChatBot.ScriptScheduler.TaskList]] - Task_Name = "Task Name 1" - Trigger_On_First_Login = false - Trigger_On_Login = false - Trigger_On_Times = { Enable = true, Times = [ 14:00:00, ] } - Trigger_On_Interval = { Enable = true, MinTime = 3.6, MaxTime = 4.8 } - Action = "send /hello" - - [[ChatBot.ScriptScheduler.TaskList]] - Task_Name = "Task Name 2" - Trigger_On_First_Login = false - Trigger_On_Login = true - Trigger_On_Times = { Enable = false, Times = [ ] } - Trigger_On_Interval = { Enable = false, MinTime = 1.0, MaxTime = 10.0 } - Action = "send /login pass" + [[ChatBot.ScriptScheduler.TaskList]] + = + = ``` + **Available settings/options:** -
+ - `Trigger_On_First_Login` + + Will trigger the task when you login the first time. + + **Available values**: `true` and `false` + + **Type**: `boolean` + + - `Trigger_On_Login` + + Will trigger the task each time you login. + + **Available values**: `true` and `false` + + **Type**: `boolean` + + - `Trigger_On_Times` + + This will enable the task to trigger at exact time(s) you want. + + The type of this setting is `inline table`, that has the following sub-settings/options: + + - `Enable` - Enables/Disables the setting (Boolean, so either `true` or `false`) + + - `Times` - An array/list of times on which the task should run/trigger (each element is of the [Local Time](https://toml.io/en/v1.0.0#local-time) type, eg. `14:00:00`, so: `hours:minutes:seconds`) + + **Example**: + + ```toml + Trigger_On_Times = { Enable = true, Times = [ 14:00:00, 22:35:8] } + ``` + + - `Trigger_On_Interval` + + This will enable the task to trigger at certain interval which you've defined. + + The type of this setting is `inline table`, that has the following sub-settings/options: + + - `Enable` - Enables/Disables the setting (Boolean, so either `true` or `false`) + + - `MinTime` - Time in seconds (the type is `double`, eg. `3.14`) + + - `MaxTime` - Time in seconds (the type is `double`, eg. `3.14`) + + **If `MinTime` and `MaxTime` are the same, the interval will be consistent, however if they are not, the ChatBot will generate a random interval in between those two numbers provided, each time the task is run.** + + **Example**: + + ```toml + Trigger_On_Interval = { Enable = true, MinTime = 30.0, MaxTime = 160.0 } + ``` + + ### Full example + + ```toml + [ChatBot.ScriptScheduler] + Enabled = true + + [[ChatBot.ScriptScheduler.TaskList]] + Task_Name = "Task Name 1" + Trigger_On_First_Login = false + Trigger_On_Login = false + Trigger_On_Times = { Enable = true, Times = [ 14:00:00, ] } + Trigger_On_Interval = { Enable = true, MinTime = 3.6, MaxTime = 4.8 } + Action = "send /hello" + + [[ChatBot.ScriptScheduler.TaskList]] + Task_Name = "Task Name 2" + Trigger_On_First_Login = false + Trigger_On_Login = true + Trigger_On_Times = { Enable = false, Times = [ ] } + Trigger_On_Interval = { Enable = false, MinTime = 1.0, MaxTime = 10.0 } + Action = "send /login pass" + ``` + +
## Telegram Bridge -- **Description:** +- **Description:** - This bot allows you to send and receive messages and commands via a Telegram Bot DM or to receive messages in a Telegram channel. + This bot allows you to send and receive messages and commands via a Telegram Bot DM or to receive messages in a Telegram channel. -

Warning

+

Warning

- **You can't send messages and commands from a group channel, you can only send them in the bot DM, but you can get the messages from the client in a group channel.** + **You can't send messages and commands from a group channel, you can only send them in the bot DM, but you can get the messages from the client in a group channel.** -
+
-- **Setup:** +- **Setup:** - 1. First you need to create a Telegram bot and obtain an API key, to do so, go to Telegram and find @botfather - 2. Click on `Start` button and read the bot reply, then type `/newbot`, the Botfather will guide you through the bot creation. - 3. Once you create the bot, copy the **API key** that you have gotten, and put it into the `Token` field of `ChatBot.TelegramBridge` section (this section). - 4. Then launch the client and go to Telegram, find your newly created bot by searching for it with its username, and open a DM with it. - 5. Click on `Start` button and type and send the following command `.chatid` to obtain the chat id. - 6. Copy the chat id number (eg. `2627844670`) and paste it in the `ChannelId` field and add it to the `Authorized_Chat_Ids` field (in this section) (an id in "Authorized_Chat_Ids" field is a number/long, not a string!), then save the file. - Now you can use the bot using it's DM. + 1. First you need to create a Telegram bot and obtain an API key, to do so, go to Telegram and find @botfather + 1. Click on `Start` button and read the bot reply, then type `/newbot`, the Botfather will guide you through the bot creation. + 1. Once you create the bot, copy the **API key** that you have gotten, and put it into the `Token` field of `ChatBot.TelegramBridge` section (this section). + 1. Then launch the client and go to Telegram, find your newly created bot by searching for it with its username, and open a DM with it. + 1. Click on `Start` button and type and send the following command `.chatid` to obtain the chat id. + 1. Copy the chat id number (eg. `2627844670`) and paste it in the `ChannelId` field and add it to the `Authorized_Chat_Ids` field (in this section) (an id in "Authorized_Chat_Ids" field is a number/long, not a string!), then save the file. + Now you can use the bot using it's DM. -

Danger

+

Danger

- **Do not share your API key with anyone else as it will give them the control over your bot. Save it securely.** + **Do not share your API key with anyone else as it will give them the control over your bot. Save it securely.** -
+
-

Danger

+

Danger

- **If you do not add the id of your chat DM with the bot to the "Authorized_Chat_Ids" field, ayone who finds your bot via search will be able to execute commands and send messages!** + **If you do not add the id of your chat DM with the bot to the "Authorized_Chat_Ids" field, ayone who finds your bot via search will be able to execute commands and send messages!** -
+
-

Danger

+

Danger

- **An id pasted in to the "Authorized_Chat_Ids" should be a number/long, not a string!** + **An id pasted in to the "Authorized_Chat_Ids" should be a number/long, not a string!** -
+
-- **Settings:** +- **Settings:** - **Section:** **`ChatBot.TelegramBridge`** + **Section:** **`ChatBot.TelegramBridge`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** + - **Description:** - This setting specifies if the Telegram Bridge Chat Bot is enabled. + This setting specifies if the Telegram Bridge Chat Bot is enabled. - - **Available values:** `true` and `false`. + - **Available values:** `true` and `false`. - - **Type:** `boolean` + - **Type:** `boolean` - - **Default:** `false` + - **Default:** `false` - #### `Token` + #### `Token` - - **Description:** + - **Description:** - Your Telegram Bot token. + Your Telegram Bot token. - - **Type:** `string` + - **Type:** `string` - - **Default:** empty + - **Default:** empty - #### `ChannelId` + #### `ChannelId` - - **Description:** + - **Description:** - An ID of a channel where you want to interact with the MCC using the bot. + An ID of a channel where you want to interact with the MCC using the bot. - - **Type:** `string` + - **Type:** `string` - - **Default:** empty + - **Default:** empty - #### `Authorized_Chat_Ids` + #### `Authorized_Chat_Ids` - - **Description:** + - **Description:** - A list of Chat IDs that are allowed to send messages and execute commands. - To get an id of your chat DM with the bot use `.chatid` bot command in Telegram. + A list of Chat IDs that are allowed to send messages and execute commands. + To get an id of your chat DM with the bot use `.chatid` bot command in Telegram. - - **Type:** `array of strings` + - **Type:** `array of strings` - - **Default:** empty + - **Default:** empty - #### `Message_Send_Timeout` + #### `Message_Send_Timeout` - - **Description:** + - **Description:** - How long to wait (in seconds) if a message can not be sent to Telegram before canceling the task (minimum 1 second). + How long to wait (in seconds) if a message can not be sent to Telegram before canceling the task (minimum 1 second). - - **Type:** `integer` + - **Type:** `integer` - - **Default:** 3 + - **Default:** 3 - **Message Formats** + **Message Formats** - Words wrapped with `{` and `}` are going to be replaced during the code execution, do not change them! - For example, `{message}` is going to be replace with an actual message, `{username}` will be replaced with an username, `{timestamp}` with the current time. - For Telegram message formatting, check the [following](https://mccteam.github.io/r/tg-fmt.html). + Words wrapped with `{` and `}` are going to be replaced during the code execution, do not change them! + For example, `{message}` is going to be replace with an actual message, `{username}` will be replaced with an username, `{timestamp}` with the current time. + For Telegram message formatting, check the [following](https://mccteam.github.io/r/tg-fmt.html). - #### `PrivateMessageFormat` + #### `PrivateMessageFormat` - - **Description:** + - **Description:** - A format that is used to display a private chat message on the minecraft server, in a Telegram channel. + A format that is used to display a private chat message on the minecraft server, in a Telegram channel. - - **Type:** `string` + - **Type:** `string` - - **Default:** `*(Private Message)* {username}: {message}` + - **Default:** `*(Private Message)* {username}: {message}` - #### `PublicMessageFormat` + #### `PublicMessageFormat` - - **Description:** + - **Description:** - A format that is used to display a public chat message on the minecraft server, in a Telegram channel. + A format that is used to display a public chat message on the minecraft server, in a Telegram channel. - - **Type:** `string` + - **Type:** `string` - - **Default:** `{username}: {message}` + - **Default:** `{username}: {message}` - #### `TeleportRequestMessageFormat` + #### `TeleportRequestMessageFormat` - - **Description:** + - **Description:** - A format that is used to display a teleport request on the minecraft server, in a Telegram channel. + A format that is used to display a teleport request on the minecraft server, in a Telegram channel. - - **Type:** `string` + - **Type:** `string` - - **Default:** `A new Teleport Request from **{username}**!` - - -
+ - **Default:** `A new Teleport Request from **{username}**!` +
## Items Collector -- **Description:** +- **Description:** - Collect items on the ground using this Chat Bot. + Collect items on the ground using this Chat Bot. -- **Settings:** +- **Settings:** - **Section:** **`ChatBot.ItemsCollector`** + **Section:** **`ChatBot.ItemsCollector`** -
- All settings +
+ All settings - #### `Enabled` + #### `Enabled` - - **Description:** - - This setting specifies if the Items Collector chat bot is enabled. + - **Description:** - - **Available values:** `true` and `false`. + This setting specifies if the Items Collector chat bot is enabled. - - **Type:** `boolean` + - **Available values:** `true` and `false`. - - **Default:** `false` + - **Type:** `boolean` - #### `Collect_All_Item_Types` + - **Default:** `false` - - **Description:** + #### `Collect_All_Item_Types` - Specifies if the bot will collect all items, regardless of their type. - If you want to use the whitelisted item types, disable this by setting it to `false`. + - **Description:** - - **Available values:** `true` and `false`. + Specifies if the bot will collect all items, regardless of their type. + If you want to use the whitelisted item types, disable this by setting it to `false`. - - **Type:** `boolean` + - **Available values:** `true` and `false`. - - **Default:** `false` + - **Type:** `boolean` - #### `Items_Whitelist` + - **Default:** `false` - - **Description:** + #### `Items_Whitelist` - In this list you can specify which items the bot will collect. - To enable this, set the `Collect_All_Item_Types` to false. + - **Description:** -

Note

+ In this list you can specify which items the bot will collect. + To enable this, set the `Collect_All_Item_Types` to false. - **This does not prevent the bot from accidentally picking up other items, it only goes to positions where it finds the whitelisted items** +

Note

-
+ **This does not prevent the bot from accidentally picking up other items, it only goes to positions where it finds the whitelisted items** - - **Available values:** [Item Type List](https://raw.githubusercontent.com/MCCTeam/Minecraft-Console-Client/master/MinecraftClient/Inventory/ItemType.cs) +
- - **Type:** `array of strings with item names` + - **Available values:** [Item Type List](https://raw.githubusercontent.com/MCCTeam/Minecraft-Console-Client/master/MinecraftClient/Inventory/ItemType.cs) - - **Default:** `[ "Diamond", "NetheriteIngot" ]` + - **Type:** `array of strings with item names` - #### `Delay_Between_Tasks` + - **Default:** `[ "Diamond", "NetheriteIngot" ]` - - **Description:** + #### `Delay_Between_Tasks` - Delay in milliseconds between bot scanning items (Recommended: 300-500) + - **Description:** - - **Type:** `integer` + Delay in milliseconds between bot scanning items (Recommended: 300-500) - - **Default:** `300` + - **Type:** `integer` - #### `Collection_Radius` + - **Default:** `300` - - **Description:** + #### `Collection_Radius` - The radius of blocks in which bot will look for items to collect. + - **Description:** - - **Type:** `double` + The radius of blocks in which bot will look for items to collect. - - **Default:** `30.0` + - **Type:** `double` - #### `Always_Return_To_Start` + - **Default:** `30.0` - - **Description:** + #### `Always_Return_To_Start` - Specifies if the bot will return to it's starting position after there are no items to collect. + - **Description:** - - **Available values:** `true` and `false`. + Specifies if the bot will return to it's starting position after there are no items to collect. - - **Type:** `boolean` + - **Available values:** `true` and `false`. - - **Default:** `true` + - **Type:** `boolean` - #### `Prioritize_Clusters` + - **Default:** `true` - - **Description:** + #### `Prioritize_Clusters` - Specifies if the bot will go after clustered items instead for the closest ones. + - **Description:** - - **Available values:** `true` and `false`. + Specifies if the bot will go after clustered items instead for the closest ones. - - **Type:** `boolean` + - **Available values:** `true` and `false`. - - **Default:** `true` - - -
+ - **Type:** `boolean` + - **Default:** `true` +
diff --git a/docs/guide/configuration.md b/docs/guide/configuration.md index 222c43ea..527776a0 100644 --- a/docs/guide/configuration.md +++ b/docs/guide/configuration.md @@ -1,8 +1,8 @@ --- title: Configuration -redirectFrom: - - "/g/conf/index.html" - - "/g/conf.html" +redirectFrom: + - /g/conf/index.html + - /g/conf.html --- # Configuration @@ -13,13 +13,12 @@ By default, MCC stores its settings in `MinecraftClient.ini`, which is created t

Warning

-
## Notes -- Some less common settings are not repeated here. The generated config file contains inline descriptions for every setting. -- Bot-specific settings are documented in [Chat Bots](chat-bots.md). +- Some less common settings are not repeated here. The generated config file contains inline descriptions for every setting. +- Bot-specific settings are documented in [Chat Bots](chat-bots.md). ## Configuration File @@ -58,472 +57,471 @@ Coordinate = { x = 145, y = 64, z = 2045 } ### Main General section -- **Section header:** `Main.General` +- **Section header:** `Main.General`
Account, Server, and Authentication settings #### `Account` -- **Description:** +- **Description:** - This setting is where you provide your account login information. + This setting is where you provide your account login information. - For **Microsoft accounts**, set `Login` to your Microsoft email. You do not need to provide a password because MCC uses the OAuth 2.0 device code flow for authentication (you sign in through your browser, with full 2FA support). + For **Microsoft accounts**, set `Login` to your Microsoft email. You do not need to provide a password because MCC uses the OAuth 2.0 device code flow for authentication (you sign in through your browser, with full 2FA support). - For **offline accounts**, set `Login` to your desired in-game name and `Password` to `-`. + For **offline accounts**, set `Login` to your desired in-game name and `Password` to `-`. - For **Yggdrasil accounts**, set `Login` and `Password` to the credentials for your authlib server. + For **Yggdrasil accounts**, set `Login` and `Password` to the credentials for your authlib server. -- **Format:** +- **Format:** - `Account = { Login = "" }` + `Account = { Login = "" }` -- **Type:** `inline table` +- **Type:** `inline table` -- **Examples:** +- **Examples:** - Microsoft account (password not needed): + Microsoft account (password not needed): - ``` - Account = { Login = "player@example.com" } - ``` + ``` + Account = { Login = "player@example.com" } + ``` - Offline account: + Offline account: - ``` - Account = { Login = "Steve", Password = "-" } - ``` + ``` + Account = { Login = "Steve", Password = "-" } + ``` #### `Server` -- **Description:** +- **Description:** - This is the setting where you provide the address of the game server, "Host" can be filled in with domain name or IP address. (The "Port" field can be deleted, it will be resolved automatically) + This is the setting where you provide the address of the game server, "Host" can be filled in with domain name or IP address. (The "Port" field can be deleted, it will be resolved automatically) - Host can also fill in the nickname of the server in the "Server List" below. + Host can also fill in the nickname of the server in the "Server List" below. -- **Format:** `Server = { Host = "", Port = }` +- **Format:** `Server = { Host = "", Port = }` -- **Type:** `inline table` +- **Type:** `inline table` -- **Example:** +- **Example:** - ``` - Server = { Host = "mysupercoolserver.com" } - ``` + ``` + Server = { Host = "mysupercoolserver.com" } + ``` - ``` - Server = { Host = "192.168.1.27", Port = 12345 } - ``` + ``` + Server = { Host = "192.168.1.27", Port = 12345 } + ``` - ``` - Server = { Host = "ServerAlias1" } - ``` + ``` + Server = { Host = "ServerAlias1" } + ``` #### `AccountType` -- **Description:** +- **Description:** - This setting defines the account type: `mojang`, `microsoft`, or `yggdrasil`. + This setting defines the account type: `mojang`, `microsoft`, or `yggdrasil`. -

Tip

+

Tip

- **Use `microsoft` for normal Microsoft accounts. `yggdrasil` is for custom authlib/Yggdrasil servers.** + **Use `microsoft` for normal Microsoft accounts. `yggdrasil` is for custom authlib/Yggdrasil servers.** -
+
-- **Type:** `string` +- **Type:** `string` -- **Default:** `microsoft` +- **Default:** `microsoft` -- **Example:** +- **Example:** - ``` - AccountType = "microsoft" - ``` + ``` + AccountType = "microsoft" + ``` #### `Method` -- **Description:** +- **Description:** - This setting is where you define the way you will sign in with your Microsoft account, available options are `mcc` and `browser`. The `mcc` method uses the OAuth 2.0 device code flow: MCC will display a code and a URL, and you complete the sign-in (including 2FA) in your browser. The `browser` method opens a sign-in page in your browser and you paste the resulting code back into MCC. + This setting is where you define the way you will sign in with your Microsoft account, available options are `mcc` and `browser`. The `mcc` method uses the OAuth 2.0 device code flow: MCC will display a code and a URL, and you complete the sign-in (including 2FA) in your browser. The `browser` method opens a sign-in page in your browser and you paste the resulting code back into MCC. -- **Type:** `string` +- **Type:** `string` -- **Default:** `mcc` +- **Default:** `mcc` -- **Example:** +- **Example:** - ``` - Method = "mcc" - ``` + ``` + Method = "mcc" + ``` #### `AuthServer` -- **Description:** +- **Description:** - This subsection is used when `AccountType` is set to `yggdrasil`. It points MCC at the authlib/Yggdrasil server used for login, session checks, and profile key requests. + This subsection is used when `AccountType` is set to `yggdrasil`. It points MCC at the authlib/Yggdrasil server used for login, session checks, and profile key requests. - MCC now writes this as a dedicated TOML subsection instead of an inline table: + MCC now writes this as a dedicated TOML subsection instead of an inline table: - ```toml - [Main.General.AuthServer] - ``` + ```toml + [Main.General.AuthServer] + ``` - `Host` accepts either a plain host name or a `host:port` pair. If you include the port there, MCC updates `Port` to match. + `Host` accepts either a plain host name or a `host:port` pair. If you include the port there, MCC updates `Port` to match. - `AuthlibInjectorAPIPath` defaults to `/api/yggdrasil`. Change it if your authlib-injector server uses a different prefix, such as `/authlib-injector`. + `AuthlibInjectorAPIPath` defaults to `/api/yggdrasil`. Change it if your authlib-injector server uses a different prefix, such as `/authlib-injector`. - `UseHttps` defaults to `true`. Set it to `false` if your local or development auth server only exposes plain HTTP. + `UseHttps` defaults to `true`. Set it to `false` if your local or development auth server only exposes plain HTTP. -- **Type:** `section` +- **Type:** `section` -- **Default:** +- **Default:** - ```toml - [Main.General.AuthServer] - Port = 443 - AuthlibInjectorAPIPath = "/api/yggdrasil" - UseHttps = true - Host = "" - ``` + ```toml + [Main.General.AuthServer] + Port = 443 + AuthlibInjectorAPIPath = "/api/yggdrasil" + UseHttps = true + Host = "" + ``` -- **Example:** +- **Example:** - ``` - [Main.General.AuthServer] - Host = "auth.example.com" - Port = 443 - AuthlibInjectorAPIPath = "/api/yggdrasil" - UseHttps = true - ``` + ``` + [Main.General.AuthServer] + Host = "auth.example.com" + Port = 443 + AuthlibInjectorAPIPath = "/api/yggdrasil" + UseHttps = true + ``` - ``` - [Main.General.AuthServer] - Host = "127.0.0.1" - Port = 25585 - AuthlibInjectorAPIPath = "/authlib-injector" - UseHttps = false - ``` + ``` + [Main.General.AuthServer] + Host = "127.0.0.1" + Port = 25585 + AuthlibInjectorAPIPath = "/authlib-injector" + UseHttps = false + ``` #### `AuthUser` -- **Description:** +- **Description:** - This setting allows for Yggdrasil authlib multi-user selection. It selects which profile MCC should use when the authlib/Yggdrasil server returns multiple available profiles. Leave it empty to pick the profile interactively. + This setting allows for Yggdrasil authlib multi-user selection. It selects which profile MCC should use when the authlib/Yggdrasil server returns multiple available profiles. Leave it empty to pick the profile interactively. -- **Type:** `string` +- **Type:** `string` -- **Default:** `""` +- **Default:** `""` -- **Example:** +- **Example:** - ``` - AuthUser = "SomePlayer" - ``` + ``` + AuthUser = "SomePlayer" + ```
### Main Advanced section -- **Section header:** `Main.Advanced` +- **Section header:** `Main.Advanced`
Advanced settings (Language, Version, Features, and more) #### `Language` -- **Description:** +- **Description:** - This setting is where you define which language you want to use. + This setting is where you define which language you want to use. - When connecting to 1.6+ servers, you will need a translation file to display properly some chat messages.These files describe how some messages should be printed depending on your preferred language. + When connecting to 1.6+ servers, you will need a translation file to display properly some chat messages.These files describe how some messages should be printed depending on your preferred language. - The client will automatically load `en_GB.lang` from your Minecraft folder if Minecraft is installed on your computer, or download it from Mojang's servers. You may choose another language in the configuration file. + The client will automatically load `en_GB.lang` from your Minecraft folder if Minecraft is installed on your computer, or download it from Mojang's servers. You may choose another language in the configuration file. - To find your language code, check [this list](https://mccteam.github.io/r/l-code.html). + To find your language code, check [this list](https://mccteam.github.io/r/l-code.html). -- **Type:** `string` +- **Type:** `string` -- **Default:** `en_us` +- **Default:** `en_us` -- **Example:** +- **Example:** - ``` - Language = "en_us" - ``` + ``` + Language = "en_us" + ``` #### `EnableSentry` -- **Description:** +- **Description:** - Set this to `false` to opt out of Sentry error reporting. + Set this to `false` to opt out of Sentry error reporting. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `LoadMccTranslation` -- **Description:** +- **Description:** - Set this to `false` to keep MCC in English even when translated strings are available. + Set this to `false` to keep MCC in English even when translated strings are available. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `ConsoleTitle` -- **Description:** +- **Description:** - This setting is where you can change the title of the program window if you want to. You can use the variables in it. + This setting is where you can change the title of the program window if you want to. You can use the variables in it. -- **Type:** `string` +- **Type:** `string` -- **Default:** `"%username%@%serverip% - Minecraft Console Client"` +- **Default:** `"%username%@%serverip% - Minecraft Console Client"` -- **Example:** +- **Example:** - ``` - ConsoleTitle = "%username%@%serverip% - Minecraft Console Client" - ``` + ``` + ConsoleTitle = "%username%@%serverip% - Minecraft Console Client" + ``` #### `InternalCmdChar` -- **Description:** +- **Description:** - This setting is where you can change the prefix character of internal MCC commands. + This setting is where you can change the prefix character of internal MCC commands. - Available options: + Available options: - - `none` - - `slash` - - `backslash` + - `none` + - `slash` + - `backslash` -- **Type:** `string` +- **Type:** `string` -- **Default:** `slash` +- **Default:** `slash` -- **Example:** +- **Example:** - ``` - InternalCmdChar = "slash" - ``` + ``` + InternalCmdChar = "slash" + ``` #### `MessageCooldown` -- **Description:** +- **Description:** - This setting is where you can change the minimum delay in seconds between messages to avoid being kicked for spam. + This setting is where you can change the minimum delay in seconds between messages to avoid being kicked for spam. -- **Type:** `float` +- **Type:** `float` -- **Default:** `1.0` +- **Default:** `1.0` #### `MaxChatMessageLength` -- **Description:** +- **Description:** - Overrides the maximum chat message length. By default, MCC caps messages at 100 characters on Minecraft 1.10 and below, and 256 characters on 1.11 and above. Set to `0` to keep the default. + Overrides the maximum chat message length. By default, MCC caps messages at 100 characters on Minecraft 1.10 and below, and 256 characters on 1.11 and above. Set to `0` to keep the default. - Some servers (like Hypixel on 1.8) accept messages longer than the vanilla protocol default for that version. This setting lets you match whatever limit the server actually allows. + Some servers (like Hypixel on 1.8) accept messages longer than the vanilla protocol default for that version. This setting lets you match whatever limit the server actually allows. -

Warning

+

Warning

- **Setting this to a value the server doesn't support may get you kicked. Only change it if you know the server accepts longer messages than the version default.** + **Setting this to a value the server doesn't support may get you kicked. Only change it if you know the server accepts longer messages than the version default.** -
+
-- **Type:** `integer` +- **Type:** `integer` -- **Default:** `0` +- **Default:** `0` -- **Range:** `0` - `32767` +- **Range:** `0` - `32767` #### `BotOwners` -- **Description:** +- **Description:** - This setting is where you can set the owners of the bots/client which can be used by some plugins. The names are separated as strings within an array, separated by commas. + This setting is where you can set the owners of the bots/client which can be used by some plugins. The names are separated as strings within an array, separated by commas. -- **Format:** +- **Format:** - ``` - BotOwners = [ "", "", ... ] - ``` + ``` + BotOwners = [ "", "", ... ] + ``` -- **Type:** `array of strings` +- **Type:** `array of strings` -- **Default:** `[ "Player1", "Player2", ]` +- **Default:** `[ "Player1", "Player2", ]` -- **Example:** +- **Example:** - ``` - BotOwners = [ "milutinke", "bradbyte", "BruceChen", ] - ``` + ``` + BotOwners = [ "milutinke", "bradbyte", "BruceChen", ] + ``` -

Warning

+

Warning

- **Admins can impersonate players on versions older than 1.19** - -
+ **Admins can impersonate players on versions older than 1.19** +
#### `MinecraftVersion` -- **Description:** +- **Description:** - This setting is where you can set the version you are playing on. + This setting is where you can set the version you are playing on. -- **Format:** `MinecraftVersion = ""` +- **Format:** `MinecraftVersion = ""` -- **Type:** `string` +- **Type:** `string` -- **Version format:** `1.X.X` +- **Version format:** `1.X.X` -- **Type:** `string` +- **Type:** `string` -- **Default:** `auto` +- **Default:** `auto` -- **Example:** +- **Example:** - ``` - MinecraftVersion = "1.18.2" - ``` + ``` + MinecraftVersion = "1.18.2" + ``` -

Tip

+

Tip

- **Current code support is `1.4.6` through `26.1`.** + **Current code support is `1.4.6` through `26.1`.** -
+
#### `EnableForge` -- **Description:** +- **Description:** - This setting is where you can define if you're playing on a forge server. + This setting is where you can define if you're playing on a forge server. -- **Type:** `string` +- **Type:** `string` -- **Available options:** +- **Available options:** - - `auto` - - `no` - - `force` + - `auto` + - `no` + - `force` -- **Default:** `no` +- **Default:** `no` -

Tip

+

Tip

- **Force-enabling only works for MC 1.13 +** + **Force-enabling only works for MC 1.13 +** -
+
#### `BrandInfo` -- **Description:** +- **Description:** - This setting is where you can change how MCC identifies itself to the server. It can be whatever you like, example: `vanilla`, `mcc`, `empty`. + This setting is where you can change how MCC identifies itself to the server. It can be whatever you like, example: `vanilla`, `mcc`, `empty`. -- **Type:** `string` +- **Type:** `string` -- **Default:** `mcc` +- **Default:** `mcc` -

Tip

+

Tip

- **For playing on Hypixel you need to use `vanilla`** + **For playing on Hypixel you need to use `vanilla`** -
+
#### `ChatbotLogFile` -- **Description:** +- **Description:** - This setting is where you can set the path to the file which will contain the logs, leave empty for no log file. + This setting is where you can set the path to the file which will contain the logs, leave empty for no log file. -- **Type:** `string` +- **Type:** `string` -- **Default:** Empty +- **Default:** Empty -- **Example:** +- **Example:** - ``` - ChatbotLogFile = "my-log.txt" - ``` + ``` + ChatbotLogFile = "my-log.txt" + ``` #### `PrivateMsgsCmdName` -- **Description:** +- **Description:** - The name of the command which is used for remote control of the bot. + The name of the command which is used for remote control of the bot. -- **Type:** `string` +- **Type:** `string` -- **Default:** `tell` +- **Default:** `tell` #### `ShowSystemMessages` -- **Description:** +- **Description:** - This setting is where you can define if you want to see the system messages (example command block outputs) if you're an OP. + This setting is where you can define if you want to see the system messages (example command block outputs) if you're an OP. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `ShowXPBarMessages` -- **Description:** +- **Description:** - This setting is where you can define if you want to see the Boss XP Bar messages. + This setting is where you can define if you want to see the Boss XP Bar messages. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` - > **Note: Can create a spam if there is a bunch of withers** + > **Note: Can create a spam if there is a bunch of withers** #### `ShowChatLinks` -- **Description:** +- **Description:** - This setting is where you can define if you want to decode links embedded in chat messages and show them in console. + This setting is where you can define if you want to decode links embedded in chat messages and show them in console. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `ShowInventoryLayout` -- **Description:** +- **Description:** - This setting is where you can define if you want to have the MCC show you the inventory in a form of an ASCII art when using the `/inventory` internal command. + This setting is where you can define if you want to have the MCC show you the inventory in a form of an ASCII art when using the `/inventory` internal command. - How it looks like: + How it looks like: - ![ASCII Art here](/images/guide/PlayerInventory.png "ASCII Art here") + ![ASCII Art here](/images/guide/PlayerInventory.png "ASCII Art here") -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `TerrainAndMovements` -- **Description:** +- **Description:** - This setting is where you can set if you want to enable terrain movement, so you can use command like `/move` and some bots. + This setting is where you can set if you want to enable terrain movement, so you can use command like `/move` and some bots. -

Warning

+

Warning

- **This feature is currently not supported in `1.4.6 - 1.6`.** + **This feature is currently not supported in `1.4.6 - 1.6`.** -
+
-- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false`

Tip

@@ -533,191 +531,191 @@ Coordinate = { x = 145, y = 64, z = 2045 } #### `InventoryHandling` -- **Description:** +- **Description:** - This setting is where you can set if you want to enable inventory handling using the `/inventory` command. + This setting is where you can set if you want to enable inventory handling using the `/inventory` command. -

Warning

+

Warning

- **This feature is currently not supported in `1.4.6 - 1.9`. But we are working on getting it supported in 1.8 and 1.9.** + **This feature is currently not supported in `1.4.6 - 1.9`. But we are working on getting it supported in 1.8 and 1.9.** -
+
-- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `EntityHandling` -- **Description:** +- **Description:** - This setting is where you can set if you want to enable interactions with entities such as players, mobs, minecarts, etc.. + This setting is where you can set if you want to enable interactions with entities such as players, mobs, minecarts, etc.. -

Warning

+

Warning

- **This feature is currently not supported in `1.4.6 - 1.7`.** + **This feature is currently not supported in `1.4.6 - 1.7`.** -
+
-- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` -

Tip

+

Tip

- **Sometimes the latest versions might not support this straight away, since Mojang often makes changes to this.** + **Sometimes the latest versions might not support this straight away, since Mojang often makes changes to this.** -
+
#### `SessionCache` -- **Description:** +- **Description:** - This setting is where you can define is you want your session info to be stored on the disk or in memory, or not to be stored (this will make you login every time which will add some time to the process). + This setting is where you can define is you want your session info to be stored on the disk or in memory, or not to be stored (this will make you login every time which will add some time to the process). - You can disable this by using `none`. + You can disable this by using `none`. - The `disk` option will save your login authorization token on the disk, but this can be a bit of a security risk if someone else has access to your folder where you have MCC installed. + The `disk` option will save your login authorization token on the disk, but this can be a bit of a security risk if someone else has access to your folder where you have MCC installed. - The `memory` will last until you close down the program. + The `memory` will last until you close down the program. -- **Type:** `string` +- **Type:** `string` -- **Default:** `disk` +- **Default:** `disk` #### `ProfileKeyCache` -- **Description:** +- **Description:** - Same as `SessionCache` but for your profile keys which are used for chat signing and validation. + Same as `SessionCache` but for your profile keys which are used for chat signing and validation. -- **Type:** `string` +- **Type:** `string` -- **Default:** `disk` +- **Default:** `disk` #### `ResolveSrvRecords` -- **Description:** +- **Description:** - Use `no`, `fast` (5s timeout), or `yes`. + Use `no`, `fast` (5s timeout), or `yes`. - Required for joining some servers. + Required for joining some servers. -- **Type:** `string` +- **Type:** `string` -- **Default:** `fast` +- **Default:** `fast` #### `PlayerHeadAsIcon` -- **Description:** +- **Description:** - This setting allows you to set the icon of the program to be the head of your in-game skin. + This setting allows you to set the icon of the program to be the head of your in-game skin. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` -

Tip

+

Tip

- **Only works on Windows XP-8 or Windows 10 with old console** + **Only works on Windows XP-8 or Windows 10 with old console** -
+
#### `ExitOnFailure` -- **Description:** +- **Description:** - This setting allows you to define if your want to disable pauses on error, for using MCC in non-interactive scripts + This setting allows you to define if your want to disable pauses on error, for using MCC in non-interactive scripts -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `CacheScript` -- **Description:** +- **Description:** - This setting allows you to define if your want to have MCC cache compiled scripts for faster load on low-end devices. + This setting allows you to define if your want to have MCC cache compiled scripts for faster load on low-end devices. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `Timestamps` -- **Description:** +- **Description:** - This setting allows you to define if your want to have MCC prepend timestamps to chat messages. + This setting allows you to define if your want to have MCC prepend timestamps to chat messages. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `AutoRespawn` -- **Description:** +- **Description:** - This setting allows you to define if your want to auto respawn if you die. + This setting allows you to define if your want to auto respawn if you die. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` -

Tip

+

Tip

- **Make sure the spawn point is safe** + **Make sure the spawn point is safe** -
+
#### `MinecraftRealms` -- **Description:** +- **Description:** - This setting allows you to define if your want to enable support for joining Minecraft Realms. + This setting allows you to define if your want to enable support for joining Minecraft Realms. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `MoveHeadWhileWalking` -- **Description:** +- **Description:** - This setting allows you to define if your want to enable head movement while walking to avoid anti-cheat triggers + This setting allows you to define if your want to enable head movement while walking to avoid anti-cheat triggers -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `TcpTimeout` -- **Description:** +- **Description:** - This setting allows you to define a custom timeout period in seconds. Use only if you know what you're doing. + This setting allows you to define a custom timeout period in seconds. Use only if you know what you're doing. -- **Type:** `integer` +- **Type:** `integer` -- **Default:** `30` +- **Default:** `30` #### `EnableEmoji` -- **Description:** +- **Description:** - This setting allows you to disable emojis in the [`chunk`](usage.md#chunk) command. + This setting allows you to disable emojis in the [`chunk`](usage.md#chunk) command. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `MovementSpeed` -- **Description:** +- **Description:** - This setting allows you to change the movement speed of the bot. + This setting allows you to change the movement speed of the bot. -- **Type:** `integer` +- **Type:** `integer` -- **Default:** `2` +- **Default:** `2`

Warning

@@ -727,862 +725,865 @@ Coordinate = { x = 145, y = 64, z = 2045 } #### `IgnoreInvalidPlayerName` -- **Description:** +- **Description:** - Minecraft player name can only consist of English letters, numbers, and underscore symbols. Other name will be considered as invalid and ignored by default. + Minecraft player name can only consist of English letters, numbers, and underscore symbols. Other name will be considered as invalid and ignored by default. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true`
### Account List section -- **Section header:** `Main.Advanced.AccountList` +- **Section header:** `Main.Advanced.AccountList` -- **Description:** +- **Description:** - This section allows you to add multiple accounts so you can switch easily between them on the fly. + This section allows you to add multiple accounts so you can switch easily between them on the fly. -- **Usage examples:** +- **Usage examples:** - `/connect Player1` + `/connect Player1` -- **Type:** `array of inline tables` +- **Type:** `array of inline tables` -- **Format:** +- **Format:** - ```toml - = { Login = "", Password = "" } - ``` + ```toml + = { Login = "", Password = "" } + ``` -- **Examples:** +- **Examples:** - ```toml - Player1 = { Login = "playerone@email.com", Password = "thepassword" } - ``` + ```toml + Player1 = { Login = "playerone@email.com", Password = "thepassword" } + ``` ### Server List section -- **Section header:** `Main.Advanced.ServerList` +- **Section header:** `Main.Advanced.ServerList` -- **Description:** +- **Description:** - This section allows you to add multiple server aliases which enables fast and easy switching between servers. Aliases cannot contain dots or spaces, and the name "localhost" cannot be used as an alias. + This section allows you to add multiple server aliases which enables fast and easy switching between servers. Aliases cannot contain dots or spaces, and the name "localhost" cannot be used as an alias. -- **Usage examples:** +- **Usage examples:** - `/connect Server2` + `/connect Server2` -- **Type:** `array of inline tables` +- **Type:** `array of inline tables` -- **Format:** +- **Format:** - ```toml - = { Host = "", Port = } - ``` + ```toml + = { Host = "", Port = } + ``` -- **Examples:** +- **Examples:** - ```toml - ServerAlias1 = { Host = "mc.awesomeserver.com" } - ServerAlias2 = { Host = "192.168.1.27", Port = 12345 } - ``` + ```toml + ServerAlias1 = { Host = "mc.awesomeserver.com" } + ServerAlias2 = { Host = "192.168.1.27", Port = 12345 } + ``` ### Signature section -- **Section header:** `Signature` +- **Section header:** `Signature` -- **Description:** +- **Description:** - Affects only Minecraft 1.19+. + Affects only Minecraft 1.19+. - 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.
Chat signing and verification settings #### `LoginWithSecureProfile` -- **Description:** +- **Description:** - Microsoft accounts only. If disabled, will not be able to sign chat and join servers configured with `enforce-secure-profile=true` + Microsoft accounts only. If disabled, will not be able to sign chat and join servers configured with `enforce-secure-profile=true` -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `SignChat` -- **Description:** +- **Description:** - Whether to sign the chat sent from the MCC. + Whether to sign the chat sent from the MCC. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `SignMessageInCommand` -- **Description:** +- **Description:** - Whether to sign the messages contained in the commands sent by the MCC. + Whether to sign the messages contained in the commands sent by the MCC. - For example, the message in `/msg` and `/me` + For example, the message in `/msg` and `/me` -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `MarkLegallySignedMsg` -- **Description:** +- **Description:** - Use green color block to mark chat with legitimate signatures. + Use green color block to mark chat with legitimate signatures. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `MarkModifiedMsg` -- **Description:** +- **Description:** - Use yellow color block to mark chat that have been modified by the server. + Use yellow color block to mark chat that have been modified by the server. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `MarkIllegallySignedMsg` -- **Description:** +- **Description:** - Use red color block to mark chat without legitimate signature. + Use red color block to mark chat without legitimate signature. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `MarkSystemMessage` -- **Description:** +- **Description:** - Use gray color block to mark system message (always without signature). + Use gray color block to mark system message (always without signature). -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `ShowModifiedChat` -- **Description:** +- **Description:** - Set to true to display messages modified by the server, false to display the original signed messages. + Set to true to display messages modified by the server, false to display the original signed messages. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `ShowIllegalSignedChat` -- **Description:** +- **Description:** - Whether to display chat and messages in commands without legal signature. + Whether to display chat and messages in commands without legal signature. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true`
### App Vars values section -- **Section header:** `AppVar.VarStirng` +- **Section header:** `AppVar.VarStirng`
Logging and filtering settings #### `DebugMessages` -- **Description:** +- **Description:** - This setting allows you to define if your want to see debug messages while the client is running, this is useful when there is a bug and you want to report a problem, or if you're developing a script/bot and you want to debug it. + This setting allows you to define if your want to see debug messages while the client is running, this is useful when there is a bug and you want to report a problem, or if you're developing a script/bot and you want to debug it. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `ChatMessages` -- **Description:** +- **Description:** - This setting allows you to define if your want to see chat messages. + This setting allows you to define if your want to see chat messages. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `InfoMessages` -- **Description:** +- **Description:** - This setting allows you to define if your want to see info messages. + This setting allows you to define if your want to see info messages. - Most of the messages from MCC. + Most of the messages from MCC. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `WarningMessages` -- **Description:** +- **Description:** - This setting allows you to define if your want to see warning messages. + This setting allows you to define if your want to see warning messages. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `ErrorMessages` -- **Description:** +- **Description:** - This setting allows you to define if your want to see error messages. + This setting allows you to define if your want to see error messages. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `ChatFilterRegex` -- **Description:** +- **Description:** - This setting allows you to define if your want to filter chat messages being logged using a Regex expression. + This setting allows you to define if your want to filter chat messages being logged using a Regex expression. - More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). + More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). -- **Type:** `string` +- **Type:** `string` -- **Default:** `.*` +- **Default:** `.*` -

Tip

+

Tip

- **Not filtering anything by default** + **Not filtering anything by default** -
+
#### `DebugFilterRegex` -- **Description:** +- **Description:** - This setting allows you to define if your want to filter debug messages being logged using a Regex expression. + This setting allows you to define if your want to filter debug messages being logged using a Regex expression. - More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). + More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). -- **Type:** `string` +- **Type:** `string` -- **Default:** `.*` +- **Default:** `.*` -

Tip

+

Tip

- **Not filtering anything by default** + **Not filtering anything by default** -
+
#### `FilterMode` -- **Description:** +- **Description:** - Can be `disable`, `blacklist` or `whitelist` + Can be `disable`, `blacklist` or `whitelist` - "disable" will disable the filter, `blacklist` hides the messages, while the `whitelist` shows the messages that match the Regex expression that you've defined. + "disable" will disable the filter, `blacklist` hides the messages, while the `whitelist` shows the messages that match the Regex expression that you've defined. -- **Type:** `string` +- **Type:** `string` -- **Default:** `disable` +- **Default:** `disable` #### `LogToFile` -- **Description:** +- **Description:** - This setting allows you to define if your want to log messages to a file. + This setting allows you to define if your want to log messages to a file. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `LogFile` -- **Description:** +- **Description:** - This setting allows you to define a path to a file where you want to log messages if you have enabled logging to a file with `LogToFile = true`. + This setting allows you to define a path to a file where you want to log messages if you have enabled logging to a file with `LogToFile = true`. -- **Type:** `string` +- **Type:** `string` -- **Default:** `console-log.txt` +- **Default:** `console-log.txt` -

Tip

+

Tip

- **%username% and %serverip% will be substituted with your username and the IP address of the server you are connected to. So you can use something like: `console-log-%username%-%serverip%.txt`** + **%username% and %serverip% will be substituted with your username and the IP address of the server you are connected to. So you can use something like: `console-log-%username%-%serverip%.txt`** -
+
#### `PrependTimestamp` -- **Description:** +- **Description:** - This setting allows you to define if your want prepend timestamps to messages that are written to the log file. + This setting allows you to define if your want prepend timestamps to messages that are written to the log file. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `SaveColorCodes` -- **Description:** +- **Description:** - This setting allows you to define if your want keep the server color codes in the logged messages. + This setting allows you to define if your want keep the server color codes in the logged messages. - Example of a color coded message: `§bsome message` + Example of a color coded message: `§bsome message` -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false`
## App Vars section -- **Section header:** `AppVar` +- **Section header:** `AppVar` -- **Description:** +- **Description:** - This section allows you to define your own custom settings/variables which you can use in scripts, bots or other setting fields. + This section allows you to define your own custom settings/variables which you can use in scripts, bots or other setting fields. - To define a variable/setting, simply make a new line with the following format under the `[AppVar.VarStirng]` section: + To define a variable/setting, simply make a new line with the following format under the `[AppVar.VarStirng]` section: -

Tip

+

Tip

- **`%username%`, `%login%`, `%serverip%`, `%serverport%`, `%datetime%`, `%players%` are reserved read-only variables** + **`%username%`, `%login%`, `%serverip%`, `%serverport%`, `%datetime%`, `%players%` are reserved read-only variables** -
+
-- **Section header:** `AppVar.VarStirng` +- **Section header:** `AppVar.VarStirng` -- **Examples:** +- **Examples:** - ``` - your_var = "your_value" - "your var 2" = "your value 2" - ``` + ``` + your_var = "your_value" + "your var 2" = "your value 2" + ``` ## Console section -- **Section header:** `Console` +- **Section header:** `Console` -- **Description:** +- **Description:** - Console-related settings for input handling and command suggestions. + Console-related settings for input handling and command suggestions. ### Console General section -- **Section header:** `Console.General` +- **Section header:** `Console.General`
Console display settings #### `ConsoleColorMode` -- **Description:** +- **Description:** - Use `disable`, `legacy_4bit`, `vt100_4bit`, `vt100_8bit`, or `vt100_24bit`. + Use `disable`, `legacy_4bit`, `vt100_4bit`, `vt100_8bit`, or `vt100_24bit`. - If the terminal shows garbled escape sequences like `←[0m`, try `legacy_4bit` or disable color output. + If the terminal shows garbled escape sequences like `←[0m`, try `legacy_4bit` or disable color output. -- **Type:** `string` +- **Type:** `string` -- **Default:** `vt100_24bit` +- **Default:** `vt100_24bit` #### `Display_Input` -- **Description:** +- **Description:** - Set this to `false` if you do not want MCC to echo the current input line while typing. + Set this to `false` if you do not want MCC to echo the current input line while typing. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `History_Input_Records` -- **Description:** +- **Description:** - Maximum number of remembered console input lines. + Maximum number of remembered console input lines. -- **Type:** `integer` +- **Type:** `integer` -- **Default:** `32` +- **Default:** `32`
### Console CommandSuggestion section -- **Section header:** `Console.CommandSuggestion` +- **Section header:** `Console.CommandSuggestion` -- **Description:** +- **Description:** - Command completion suggestions in the console. + Command completion suggestions in the console.
Command suggestion settings #### `Enable` -- **Description:** +- **Description:** - Set this to `false` to disable command completion suggestions. + Set this to `false` to disable command completion suggestions. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `Enable_Color` -- **Description:** +- **Description:** - Enables colored suggestions when the terminal color mode supports it. + Enables colored suggestions when the terminal color mode supports it. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `Use_Basic_Arrow` -- **Description:** +- **Description:** - Use this if the suggestion arrows are not displayed correctly in your terminal. + Use this if the suggestion arrows are not displayed correctly in your terminal. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `Max_Suggestion_Width` -- **Description:** +- **Description:** - Maximum width of the suggestion popup. + Maximum width of the suggestion popup. -- **Type:** `integer` +- **Type:** `integer` -- **Default:** `30` +- **Default:** `30` #### `Max_Displayed_Suggestions` -- **Description:** +- **Description:** - Maximum number of suggestions shown at once. + Maximum number of suggestions shown at once. -- **Type:** `integer` +- **Type:** `integer` -- **Default:** `6` +- **Default:** `6` #### Color fields -- **Description:** +- **Description:** - The suggestion text, tooltip, and arrow colors are stored as hex color strings such as `#f8fafc`. + The suggestion text, tooltip, and arrow colors are stored as hex color strings such as `#f8fafc`. - 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.
## Proxy section -- **Section header:** `Proxy` +- **Section header:** `Proxy` -- **Description:** +- **Description:** - Connect to a server via a proxy instead of connecting directly. + Connect to a server via a proxy instead of connecting directly.
Proxy settings #### `Enabled_Login` -- **Description:** +- **Description:** - If Mojang session services or Microsoft login services are blocked on your network or your ip is blacklisted or rate limited by Microsoft, set the value to `true`. + If Mojang session services or Microsoft login services are blocked on your network or your ip is blacklisted or rate limited by Microsoft, set the value to `true`. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `Enabled_Update` -- **Description:** +- **Description:** - Use the proxy when MCC checks for updates. + Use the proxy when MCC checks for updates. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `Enabled_Ingame` -- **Description:** +- **Description:** - Whether to connect to the game server through a proxy. + Whether to connect to the game server through a proxy. - If connecting to a port 25565 (Minecraft) is blocked on your network, set the value to `true` to login and connect using the proxy. + If connecting to a port 25565 (Minecraft) is blocked on your network, set the value to `true` to login and connect using the proxy. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` -

Warning

+

Warning

- **Make sure your server rules allow Proxies or VPNs before setting the setting to `true`, or you may face consequences!** + **Make sure your server rules allow Proxies or VPNs before setting the setting to `true`, or you may face consequences!** -
+
#### `Server` -- **Description:** +- **Description:** - The proxy server IP and port. + The proxy server IP and port. - Proxy server must allow HTTPS for login, and non-443 ports for playing. + Proxy server must allow HTTPS for login, and non-443 ports for playing. -- **Format:** +- **Format:** - ``` - Server = { Host = "", Port = } - ``` + ``` + Server = { Host = "", Port = } + ``` -- **Default:** `{ Host = "0.0.0.0", Port = 8080 }` +- **Default:** `{ Host = "0.0.0.0", Port = 8080 }` #### `Proxy_Type` -- **Description:** +- **Description:** - The type of your proxy. + The type of your proxy. - Available options: + Available options: - - `HTTP` - - `SOCKS4` - - `SOCKS4a` - - `SOCKS5` + - `HTTP` + - `SOCKS4` + - `SOCKS4a` + - `SOCKS5` -- **Type:** `string` +- **Type:** `string` -- **Default:** `HTTP` +- **Default:** `HTTP` #### `Username` -- **Description:** +- **Description:** - The proxy account username. + The proxy account username. - Only needed for password protected proxies. + Only needed for password protected proxies. -- **Default:** `` `` +- **Default:** ` ` #### `Password` -- **Description:** +- **Description:** - The proxy account password. + The proxy account password. - Only needed for password protected proxies. + Only needed for password protected proxies. -- **Default:** `` `` +- **Default:** ` `
## MCSettings section -- **Section header:** `MCSettings` +- **Section header:** `MCSettings` -- **Description:** +- **Description:** - Client settings related to language, render distance, difficulty, chat and skins. + Client settings related to language, render distance, difficulty, chat and skins.
Game client settings #### `Enabled` -- **Description:** +- **Description:** - This setting allows you to specify if you want to use settings from this section. + This setting allows you to specify if you want to use settings from this section. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `Locale` -- **Description:** +- **Description:** - Use any language implemented in Minecraft + Use any language implemented in Minecraft -- **Type:** `string` +- **Type:** `string` -- **Default:** `en_US` +- **Default:** `en_US` #### `RenderDistance` -- **Description:** +- **Description:** - Render distance in chunks: `0 - 255` + Render distance in chunks: `0 - 255` -- **Type:** `integer` +- **Type:** `integer` -- **Default:** `8` +- **Default:** `8` #### `Difficulty` -- **Description:** +- **Description:** - Available options: + Available options: - - `peaceful` - - `easy` - - `normal` - - `difficult` + - `peaceful` + - `easy` + - `normal` + - `difficult` -- **Type:** `string` +- **Type:** `string` -- **Default:** `peaceful` +- **Default:** `peaceful` #### `ChatMode` -- **Description:** +- **Description:** - This setting allows you to effectively mute yourself. + This setting allows you to effectively mute yourself. - Available options: + Available options: - - `enabled` (You can chat) - - `commands` (You can only do commands) - - `disabled` + - `enabled` (You can chat) + - `commands` (You can only do commands) + - `disabled` -- **Type:** `string` +- **Type:** `string` -- **Default:** `enabled` +- **Default:** `enabled` #### `ChatColors` -- **Description:** +- **Description:** - This setting allows you to disable chat colors. + This setting allows you to disable chat colors. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `MainHand` -- **Description:** +- **Description:** - This setting allows you to specify your main hand. + This setting allows you to specify your main hand. -- **Available values:** `right` and `left` +- **Available values:** `right` and `left` -- **Type:** `string` +- **Type:** `string` -- **Default:** `left` +- **Default:** `left`
## MCSettings Skin section -- **Section header:** `MCSettings.Skin` +- **Section header:** `MCSettings.Skin` -- **Description:** +- **Description:** - Skin options. + Skin options.
Skin visibility settings #### `Cape` -- **Description:** +- **Description:** - This setting allows you to specify if you want to have your skin cape shown. + This setting allows you to specify if you want to have your skin cape shown. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `Hat` -- **Description:** +- **Description:** - This setting allows you to specify if you want to have your skin hat shown. + This setting allows you to specify if you want to have your skin hat shown. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `Jacket` -- **Description:** +- **Description:** - This setting allows you to specify if you want to have your skin jacket shown. + This setting allows you to specify if you want to have your skin jacket shown. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `Sleeve_Left` -- **Description:** +- **Description:** - This setting allows you to specify if you want to have your left sleeve shown. + This setting allows you to specify if you want to have your left sleeve shown. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `Sleeve_Right` -- **Description:** +- **Description:** - This setting allows you to specify if you want to have your right sleeve shown. + This setting allows you to specify if you want to have your right sleeve shown. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `Pants_Left` -- **Description:** +- **Description:** - This setting allows you to specify if you want to have your left part of the pants shown. + This setting allows you to specify if you want to have your left part of the pants shown. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `Pants_Right` -- **Description:** +- **Description:** - This setting allows you to specify if you want to have your right part of the pants shown. + This setting allows you to specify if you want to have your right part of the pants shown. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false`
## Chat Format section -- **Section header:** `ChatFormat` +- **Section header:** `ChatFormat` -- **Description:** +- **Description:** - The MCC does it best to detect chat messages, but some server have unusual chat formats. + The MCC does it best to detect chat messages, but some server have unusual chat formats. - When this happens, you'll need to configure the chat format yourself using settings from this section. + When this happens, you'll need to configure the chat format yourself using settings from this section. - The MCC uses Regular Expressions (Regex) to detect the chat formatting, in case that you're not familiar with Regex you can use the following resources to learn it and test it out: + The MCC uses Regular Expressions (Regex) to detect the chat formatting, in case that you're not familiar with Regex you can use the following resources to learn it and test it out: - - Crash courses: - - [Regex video tutorial by Web Dev Simplified](https://www.youtube.com/watch?v=rhzKDrUiJVk) - - [Regex on paper by Crack Concepts](https://www.youtube.com/watch?v=9RksQ5YT7FM) - - In-depth tutorials: + - Crash courses: - - [Quite a long and detailed tutorial by Svetlin Nakov](https://www.youtube.com/watch?v=DS9IO0W7-0Q) - - [Microsoft Documentation on Regex](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference) + - [Regex video tutorial by Web Dev Simplified](https://www.youtube.com/watch?v=rhzKDrUiJVk) + - [Regex on paper by Crack Concepts](https://www.youtube.com/watch?v=9RksQ5YT7FM) - - Testing Regex expressions online: - - [https://regex101.com/](https://regex101.com/) - - [https://regexr.com/](https://regexr.com/) + - In-depth tutorials: + + - [Quite a long and detailed tutorial by Svetlin Nakov](https://www.youtube.com/watch?v=DS9IO0W7-0Q) + - [Microsoft Documentation on Regex](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference) + + - Testing Regex expressions online: + + - [https://regex101.com/](https://regex101.com/) + - [https://regexr.com/](https://regexr.com/)
Chat format settings #### `Builtins` -- **Description:** +- **Description:** - This setting allows you to define if your want use the default chat formats. + This setting allows you to define if your want use the default chat formats. - Set to `false` to avoid conflicts with custom formats. + Set to `false` to avoid conflicts with custom formats. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `true` +- **Default:** `true` #### `UserDefined` -- **Description:** +- **Description:** - This setting allows you to define if your want to use the custom chat formats defined bellow using Regex. + This setting allows you to define if your want to use the custom chat formats defined bellow using Regex. - Set to `true` to use the custom formats defined in `Public`, `Private` and `TeleportRequest`. + Set to `true` to use the custom formats defined in `Public`, `Private` and `TeleportRequest`. -- **Type:** `boolean` +- **Type:** `boolean` -- **Default:** `false` +- **Default:** `false` #### `Public` -- **Description:** +- **Description:** - This setting allows you to specify a custom chat message format using Regex (Regular expressions). + This setting allows you to specify a custom chat message format using Regex (Regular expressions). - More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). + More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). - Only works when `Builtins` is set to `false`. + Only works when `Builtins` is set to `false`. -- **Type:** `string` +- **Type:** `string` -- **Default:** `Public = "^<([a-zA-Z0-9_]+)> (.+)$"` +- **Default:** `Public = "^<([a-zA-Z0-9_]+)> (.+)$"` #### `Private` -- **Description:** +- **Description:** - This setting allows you to specify a custom chat message format for private messages using Regex (Regular expressions). + This setting allows you to specify a custom chat message format for private messages using Regex (Regular expressions). - More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). + More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). - Only works when `Builtins` is set to `false`. + Only works when `Builtins` is set to `false`. -- **Type:** `string` +- **Type:** `string` -- **Default:** `Private = "^([a-zA-Z0-9_]+) whispers to you: (.+)$"` +- **Default:** `Private = "^([a-zA-Z0-9_]+) whispers to you: (.+)$"` #### `TeleportRequest` -- **Description:** +- **Description:** - This setting allows you to specify a custom chat message format for a Teleport request using Regex (Regular expressions). + This setting allows you to specify a custom chat message format for a Teleport request using Regex (Regular expressions). - More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). + More on Regex [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference). - Only works when `Builtins` is set to `false`. + Only works when `Builtins` is set to `false`. -- **Type:** `string` +- **Type:** `string` -- **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)\.$'`
## Chat Bot section -- **Section header:** `ChatBot` +- **Section header:** `ChatBot` -- **Description:** +- **Description:** - This top-level section groups the built-in bot configs that ship with MCC. + This top-level section groups the built-in bot configs that ship with MCC. - The detailed options for each bot are documented in [Chat Bots](chat-bots.md), so this page only covers the shared runtime and client settings. + The detailed options for each bot are documented in [Chat Bots](chat-bots.md), so this page only covers the shared runtime and client settings. diff --git a/docs/guide/contibuting.md b/docs/guide/contibuting.md index f1c8b597..4aa23c70 100644 --- a/docs/guide/contibuting.md +++ b/docs/guide/contibuting.md @@ -12,9 +12,9 @@ You can also use the guide in the [GitHub repository wiki](https://github.com/MC For now, the project has three main contribution paths: -- code and bot work in the main MCC client -- documentation updates in `docs/` -- translations through Crowdin +- code and bot work in the main MCC client +- documentation updates in `docs/` +- translations through Crowdin ## Translations diff --git a/docs/guide/creating-bots.md b/docs/guide/creating-bots.md index a44416e7..a7f27188 100644 --- a/docs/guide/creating-bots.md +++ b/docs/guide/creating-bots.md @@ -4,12 +4,12 @@ title: Creating Chat Bots # Creating Chat Bots -- [Notes](#notes) -- [Requirements](#requirements) -- [Quick Introduction](#quick-introduction) -- [Examples](#examples) -- [AI-Assisted Bot Authoring](#ai-assisted-bot-authoring) -- [C# API](#c#-api) +- [Notes](#notes) +- [Requirements](#requirements) +- [Quick Introduction](#quick-introduction) +- [Examples](#examples) +- [AI-Assisted Bot Authoring](#ai-assisted-bot-authoring) +- [C# API](#c#-api) ## Notes @@ -23,19 +23,19 @@ title: Creating Chat Bots ## Requirements -- A basic knowledge of C# programming language -- A text editor +- A basic knowledge of C# programming language +- A text editor If you're not familiar with the C# programming language, we suggest taking a look at the following resources: Crash courses: -- [C# Crash Course playlist by Teddy Smit](https://www.youtube.com/watch?v=67oWw9TanOk&list=PL82C6-O4XrHfoN_Y4MwGvJz5BntiL0z0D) +- [C# Crash Course playlist by Teddy Smit](https://www.youtube.com/watch?v=67oWw9TanOk&list=PL82C6-O4XrHfoN_Y4MwGvJz5BntiL0z0D) More in-depth: -- [Learn C# YouTube Playlist by Microsoft](https://www.youtube.com/playlist?list=PLdo4fOcmZ0oVxKLQCHpiUWun7vlJJvUiN) -- [Getting started with C# (an index of tutorials and documentation) by Microsoft](https://learn.microsoft.com/en-us/dotnet/csharp/) +- [Learn C# YouTube Playlist by Microsoft](https://www.youtube.com/playlist?list=PLdo4fOcmZ0oVxKLQCHpiUWun7vlJJvUiN) +- [Getting started with C# (an index of tutorials and documentation) by Microsoft](https://learn.microsoft.com/en-us/dotnet/csharp/) ## Quick Introduction @@ -192,24 +192,24 @@ If you are using an AI coding agent on this repository, use the `mcc-chatbot-aut Skill links: -- [Browse the skill on GitHub](https://github.com/MCCTeam/Minecraft-Console-Client/tree/master/.skills/mcc-chatbot-authoring) -- [Download the skill directory](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2FMCCTeam%2FMinecraft-Console-Client%2Ftree%2Fmaster%2F.skills%2Fmcc-chatbot-authoring) +- [Browse the skill on GitHub](https://github.com/MCCTeam/Minecraft-Console-Client/tree/master/.skills/mcc-chatbot-authoring) +- [Download the skill directory](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2FMCCTeam%2FMinecraft-Console-Client%2Ftree%2Fmaster%2F.skills%2Fmcc-chatbot-authoring) This skill is meant for: -- standalone `/script` bots -- built-in MCC chat bots -- bot repairs and ports -- event handlers, movement logic, inventory logic, and plugin-channel work +- standalone `/script` bots +- built-in MCC chat bots +- bot repairs and ports +- event handlers, movement logic, inventory logic, and plugin-channel work Its default behavior is important: if you ask for "a bot" without saying otherwise, it should prefer a standalone `//MCCScript` bot loaded with `/script`. It should only choose a built-in bot when you explicitly ask for repo wiring, automatic config loading, or a compiled MCC bot. The skill also follows MCC-specific rules, for example: -- do not send chat from `Initialize()` -- use `AfterGameJoined()` for chat or commands after login -- normalize chat with `GetVerbatim(text)` before `IsChatMessage(...)` or `IsPrivateMessage(...)` -- fully clean up commands, timers, plugin channels, and movement locks +- do not send chat from `Initialize()` +- use `AfterGameJoined()` for chat or commands after login +- normalize chat with `GetVerbatim(text)` before `IsChatMessage(...)` or `IsPrivateMessage(...)` +- fully clean up commands, timers, plugin channels, and movement locks ### Example prompts diff --git a/docs/guide/creating-text-script.md b/docs/guide/creating-text-script.md index ff07b67d..25140f9d 100644 --- a/docs/guide/creating-text-script.md +++ b/docs/guide/creating-text-script.md @@ -11,6 +11,7 @@ Application variables defined with the `set` command or in the `[AppVars]` confi ## Example `sample-script.txt`: Send a hello message, wait 60 seconds and disconnect from server. + ``` # This is a sample script for Minecraft Console Client # Any line beginning with "#" is ignored and treated as a comment. diff --git a/docs/guide/installation.md b/docs/guide/installation.md index 5e29fa9e..72d024d1 100644 --- a/docs/guide/installation.md +++ b/docs/guide/installation.md @@ -4,19 +4,19 @@ title: Installation # Installation -- [YouTube Tutorials](#youtube-tutorials) -- [Download a compiled binary](#download-a-compiled-binary) -- [Building from the source code](#building-from-the-source-code) -- [Run using Docker](#using-docker) -- [Run on Android](#run-on-android) -- [Run MCC 24/7 on a VPS](#run-on-a-vps) +- [YouTube Tutorials](#youtube-tutorials) +- [Download a compiled binary](#download-a-compiled-binary) +- [Building from the source code](#building-from-the-source-code) +- [Run using Docker](#using-docker) +- [Run on Android](#run-on-android) +- [Run MCC 24/7 on a VPS](#run-on-a-vps) ## YouTube Tutorials If you're not the kind of person that likes textual tutorials, our community has made video tutorials available on YouTube. -- [Installation on Windows by Daenges](https://www.youtube.com/watch?v=BkCqOCa2uQw) -- [Installation on Windows + Auto AFK and More by Dexter113](https://www.youtube.com/watch?v=FxJ0KFIHDrY) +- [Installation on Windows by Daenges](https://www.youtube.com/watch?v=BkCqOCa2uQw) +- [Installation on Windows + Auto AFK and More by Dexter113](https://www.youtube.com/watch?v=FxJ0KFIHDrY) ## Download a compiled binary @@ -24,7 +24,7 @@ You can download a compiled binary of the latest build from the [GitHub Releases ## Building from the source code -We recommend you to download our precompiled binary file from [GitHub](https://github.com/MCCTeam/Minecraft-Console-Client/releases). +We recommend you to download our precompiled binary file from [GitHub](https://github.com/MCCTeam/Minecraft-Console-Client/releases). However, if you want to build the program from source code, please follow the guide. @@ -35,8 +35,8 @@ However, if you want to build the program from source code, please follow the gu Requirements: -- [Git](https://www.git-scm.com/) -- [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download) or [Visual Studio](https://visualstudio.microsoft.com/) configured for C# app development +- [Git](https://www.git-scm.com/) +- [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download) or [Visual Studio](https://visualstudio.microsoft.com/) configured for C# app development ::: tip If you want to modify the code and you are new to C# or programming in general, the tutorials listed in [Creating Bots](creating-bots.md#requirements) are a good starting point. @@ -47,9 +47,9 @@ If you want to modify the code and you are new to C# or programming in general, Install [Git](https://www.git-scm.com/) 1. Make a new folder where you want to keep the source code -2. Then open it up, hold `SHIFT` and do a `right-click` on the empty white space in the folder -3. Click on `Git Bash Here` in the context menu -4. Clone the [GitHub repository](https://github.com/MCCTeam/Minecraft-Console-Client) by running: +1. Then open it up, hold `SHIFT` and do a `right-click` on the empty white space in the folder +1. Click on `Git Bash Here` in the context menu +1. Clone the [GitHub repository](https://github.com/MCCTeam/Minecraft-Console-Client) by running: ```bash git clone https://github.com/MCCTeam/Minecraft-Console-Client.git --recursive @@ -62,41 +62,41 @@ git submodule update --init --recursive ``` 5. Once the repository has been cloned, you can close the `Git Bash` terminal emulator -6. Open up the new cloned folder +1. Open up the new cloned folder #### Download translation resources (optional) 1. Visit [MCC project's homepage on Crowdin](https://crowdin.com/project/minecraft-console-client). -2. You will need to log in to your Crowdin account in order to download. -3. Click on the language you want to download the translation for. -4. Find `MinecraftClient` -> `Resources` -> `Translations` -> `MCC in-app text` -5. Click the button `•••` at the end of the line. -6. Click Download and save the file to folder `/MinecraftClient/Resources/Translations/`. -7. Find `MinecraftClient` -> `Resources` -> `ConfigComments` -> `Comments in the settings file` -8. Click the button `•••` at the end of the line. -9. Click Download and save the file to folder `/MinecraftClient/Resources/ConfigComments/`. -10. Find `MinecraftClient` -> `Resources` -> `AsciiArt` -> `ASCII Arts (Please use fixed-width fonts for editing)` -11. Click the button `•••` at the end of the line. -12. Click Download and save the file to folder `/MinecraftClient/Resources/AsciiArt/`. -13. If you need to download a translation in another language, go to step 3 to continue. +1. You will need to log in to your Crowdin account in order to download. +1. Click on the language you want to download the translation for. +1. Find `MinecraftClient` -> `Resources` -> `Translations` -> `MCC in-app text` +1. Click the button `•••` at the end of the line. +1. Click Download and save the file to folder `/MinecraftClient/Resources/Translations/`. +1. Find `MinecraftClient` -> `Resources` -> `ConfigComments` -> `Comments in the settings file` +1. Click the button `•••` at the end of the line. +1. Click Download and save the file to folder `/MinecraftClient/Resources/ConfigComments/`. +1. Find `MinecraftClient` -> `Resources` -> `AsciiArt` -> `ASCII Arts (Please use fixed-width fonts for editing)` +1. Click the button `•••` at the end of the line. +1. Click Download and save the file to folder `/MinecraftClient/Resources/AsciiArt/`. +1. If you need to download a translation in another language, go to step 3 to continue. #### Building using the Visual Studio 1. Open up the `MinecraftClient.sln` via Visual Studio -2. Right click on `MinecraftClient` solution in the `Solution Explorer` -3. Click on `Properties` -4. Open up the `Build` tab and select configuration `Release` -5. Press `CTRL + S` and close the file -6. Right click on `MinecraftClient` solution in the `Solution Explorer` -7. Click `Build` +1. Right click on `MinecraftClient` solution in the `Solution Explorer` +1. Click on `Properties` +1. Open up the `Build` tab and select configuration `Release` +1. Press `CTRL + S` and close the file +1. Right click on `MinecraftClient` solution in the `Solution Explorer` +1. Click `Build` If the build succeeds, the published binary `MinecraftClient.exe` will be in `MinecraftClient/bin/Release/net10.0/win-x64/publish/`. #### Building using .NET manually without Visual Studio 1. Open the `Minecraft-Console-Client` folder you've cloned or downloaded -2. Open the PowerShell (`Right-Click` on the whitespace and click `Open PowerShell`, or in Windows Explorer: `File -> Open PowerShell`) -3. Install the .NET 10 SDK if you do not already have it. The easiest current option on Windows is: +1. Open the PowerShell (`Right-Click` on the whitespace and click `Open PowerShell`, or in Windows Explorer: `File -> Open PowerShell`) +1. Install the .NET 10 SDK if you do not already have it. The easiest current option on Windows is: ```powershell winget install Microsoft.DotNet.SDK.10 @@ -131,82 +131,84 @@ If the publish step succeeds, the published binary `MinecraftClient.exe` will be

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`)** +**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`)**
Requirements: -- Git +- Git - - Linux: + - Linux: - - [Install Git on macOS](https://git-scm.com/download/mac) + - [Install Git on macOS](https://git-scm.com/download/mac) -- .NET 10 SDK +- .NET 10 SDK - - [Install .NET on Linux](https://learn.microsoft.com/en-us/dotnet/core/install/linux) - - [Install .NET on Ubuntu](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install) - - [Install .NET on macOS](https://learn.microsoft.com/en-us/dotnet/core/install/macos) + - [Install .NET on Linux](https://learn.microsoft.com/en-us/dotnet/core/install/linux) + - [Install .NET on Ubuntu](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install) + - [Install .NET on macOS](https://learn.microsoft.com/en-us/dotnet/core/install/macos) #### Cloning using Git 1. Open up a terminal emulator and navigate to the folder where you will store the MCC -2. Recursively clone the [GitHub repository](https://github.com/MCCTeam/Minecraft-Console-Client) by running: +1. Recursively clone the [GitHub repository](https://github.com/MCCTeam/Minecraft-Console-Client) by running: ```bash git clone https://github.com/MCCTeam/Minecraft-Console-Client.git --recursive ``` 3. Go to the folder you've cloned (should be `Minecraft-Console-Client`) -4. Install the .NET 10 SDK. - - On Ubuntu 24.04 LTS, use the built-in Ubuntu package feeds: +1. Install the .NET 10 SDK. - ```bash - sudo apt-get update && \ - sudo apt-get install -y dotnet-sdk-10.0 - ``` + - On Ubuntu 24.04 LTS, use the built-in Ubuntu package feeds: - - On macOS, the normal path is to use the official installer from the [.NET download page](https://dotnet.microsoft.com/en-us/download). Pick `Arm64` for Apple Silicon and `x64` for Intel Macs. + ```bash + sudo apt-get update && \ + sudo apt-get install -y dotnet-sdk-10.0 + ``` -5. If you want to download translation resources, please check out [Download translation resources](#download-translation-resources-optional) -6. Run the following command for a normal local build: + - On macOS, the normal path is to use the official installer from the [.NET download page](https://dotnet.microsoft.com/en-us/download). Pick `Arm64` for Apple Silicon and `x64` for Intel Macs. - ```bash - dotnet build MinecraftClient.sln -c Release - ``` +1. If you want to download translation resources, please check out [Download translation resources](#download-translation-resources-optional) -7. Run the following command if you want a release-like published binary that matches the repo's CI workflow: +1. Run the following command for a normal local build: - - On Linux: + ```bash + dotnet build MinecraftClient.sln -c Release + ``` - ```bash - dotnet publish MinecraftClient.sln -f net10.0 -r linux-x64 --self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=Embedded - ``` +1. Run the following command if you want a release-like published binary that matches the repo's CI workflow: -

Tip

+ - On Linux: - **If you are using Linux on ARM, 32-bit, RHEL-based distributions, or Musl, [pick the appropriate RID](https://learn.microsoft.com/en-us/dotnet/core/rid-catalog#linux-rids) for your platform and replace `-r linux-x64` with it, for example `-r linux-arm64`.** + ```bash + dotnet publish MinecraftClient.sln -f net10.0 -r linux-x64 --self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=Embedded + ``` -
+

Tip

- - On macOS: + **If you are using Linux on ARM, 32-bit, RHEL-based distributions, or Musl, [pick the appropriate RID](https://learn.microsoft.com/en-us/dotnet/core/rid-catalog#linux-rids) for your platform and replace `-r linux-x64` with it, for example `-r linux-arm64`.** - ```bash - dotnet publish MinecraftClient.sln -f net10.0 -r osx-x64 --self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=Embedded - ``` +
-

Tip

+ - On macOS: - **If you are not using an Intel Mac, [pick the appropriate RID](https://learn.microsoft.com/en-us/dotnet/core/rid-catalog#macos-rids) for your processor and replace `-r osx-x64` with it, for example `-r osx-arm64`.** + ```bash + dotnet publish MinecraftClient.sln -f net10.0 -r osx-x64 --self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=Embedded + ``` -
+

Tip

+ + **If you are not using an Intel Mac, [pick the appropriate RID](https://learn.microsoft.com/en-us/dotnet/core/rid-catalog#macos-rids) for your processor and replace `-r osx-x64` with it, for example `-r osx-arm64`.** + +
If the build has succeeded, the compiled binary `MinecraftClient` will be in: -- Linux: `MinecraftClient/bin/Release/net10.0/linux-x64/publish/` -- macOS: `MinecraftClient/bin/Release/net10.0/osx-x64/publish/` +- Linux: `MinecraftClient/bin/Release/net10.0/linux-x64/publish/` +- macOS: `MinecraftClient/bin/Release/net10.0/osx-x64/publish/` You can verify the SDK installation with: @@ -223,8 +225,8 @@ dotnet --info Requirements: -- Git -- Docker +- Git +- Docker

Tip

@@ -245,7 +247,7 @@ git clone https://github.com/MCCTeam/Minecraft-Console-Client.git --recursive ``` 2. Navigate to `Minecraft-Console-Client/Docker` -3. Build the image using the following command +1. Build the image using the following command ```bash docker build -t minecraft-console-client:latest . @@ -368,8 +370,8 @@ We use `proot-distro`, an official Termux utility, to install Ubuntu. It will in Open Termux and run the following commands one at a time, in order: 1. `pkg update` -2. `pkg upgrade` -3. `pkg install proot-distro` +1. `pkg upgrade` +1. `pkg install proot-distro`

Tip

@@ -506,10 +508,10 @@ For downloading files, you can use the `wget` file we have installed, simply run Also, here are some linux tutorials for people who are new to it: -- [Linux Terminal Introduction by ExplainingComputers](https://www.youtube.com/watch?v=SkB-eRCzWIU) -- [Linux Crash Course - nano (command-line text editor) by Learn Linux TV](https://www.youtube.com/watch?v=DLeATFgGM-A) -- [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 Terminal Introduction by ExplainingComputers](https://www.youtube.com/watch?v=SkB-eRCzWIU) +- [Linux Crash Course - nano (command-line text editor) by Learn Linux TV](https://www.youtube.com/watch?v=DLeATFgGM-A) +- [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) @@ -523,14 +525,14 @@ Also, here are some linux tutorials for people who are new to it: The **Minecraft Console Client** can be run on a VPS 24 hours, 7 days a week. -- [What is a VPS?](#what-is-a-vps) -- [Prerequisites](#prerequisites) -- [Where to get a VPS](#where-to-get-a-vps) -- [Initial Amazon VPS setup](#initial-amazon-vps-setup) -- [Initial VPS setup](#initial-vps-setup) -- [Creating a new user account](#creating-a-new-user) -- [Installing .NET Core 6](#installing-net-core-6) -- [Installing the Minecraft Console Client](#installing-mcc-on-a-vps) +- [What is a VPS?](#what-is-a-vps) +- [Prerequisites](#prerequisites) +- [Where to get a VPS](#where-to-get-a-vps) +- [Initial Amazon VPS setup](#initial-amazon-vps-setup) +- [Initial VPS setup](#initial-vps-setup) +- [Creating a new user account](#creating-a-new-user) +- [Installing .NET Core 6](#installing-net-core-6) +- [Installing the Minecraft Console Client](#installing-mcc-on-a-vps) ### What is a VPS? @@ -544,29 +546,29 @@ Here is a [YouTube video](https://youtu.be/42fwh_1KP_o) that explains it in more 1. Git Bash (if you are on Windows) - Download and install [Git Bash](https://git-scm.com/downloads). + Download and install [Git Bash](https://git-scm.com/downloads). -

Tip

+

Tip

- **Make sure to allow the installation to add it to the context menu** + **Make sure to allow the installation to add it to the context menu** -
+
-2. `ssh` and `ssh-keygen` commands (on Windows they are available with Git Bash; on macOS and Linux they should be available by default. If not, install them first.) +1. `ssh` and `ssh-keygen` commands (on Windows they are available with Git Bash; on macOS and Linux they should be available by default. If not, install them first.) -3. Basic knowledge of Linux shell commands, terminal emulator usage, SSH and Nano editor. +1. Basic knowledge of Linux shell commands, terminal emulator usage, SSH and Nano editor. - If you already know this, feel free to skip. + If you already know this, feel free to skip. - if you get stuck, watch those tutorials. + if you get stuck, watch those tutorials. - If you're new to this, you can learn about it here: + If you're new to this, you can learn about it here: - - [What is Linux? by Bennett Bytes](https://www.youtube.com/watch?v=JsWQUOEL0N8) - - [Linux Terminal Introduction by ExplainingComputers](https://www.youtube.com/watch?v=SkB-eRCzWIU) - - [Linux Crash Course - nano (command-line text editor) by Learn Linux TV](https://www.youtube.com/watch?v=DLeATFgGM-A) - - [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) + - [What is Linux? by Bennett Bytes](https://www.youtube.com/watch?v=JsWQUOEL0N8) + - [Linux Terminal Introduction by ExplainingComputers](https://www.youtube.com/watch?v=SkB-eRCzWIU) + - [Linux Crash Course - nano (command-line text editor) by Learn Linux TV](https://www.youtube.com/watch?v=DLeATFgGM-A) + - [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) ### Where to get a VPS @@ -575,8 +577,8 @@ Here is a [YouTube video](https://youtu.be/42fwh_1KP_o) that explains it in more You have 2 options: -- [Buying a VPS](#buying-a-vps) -- [Getting an AWS EC2 VPS for free (12 months free trial)](#aws-ec2-vps) +- [Buying a VPS](#buying-a-vps) +- [Getting an AWS EC2 VPS for free (12 months free trial)](#aws-ec2-vps) #### Buying a VPS @@ -596,33 +598,33 @@ The MCC is not expensive to run, so it can run on basically any hardware, you do Some of the reliable and cheap hosting providers (sorted for price/performance): -- [E-Trail](https://e-trail.net/vps) +- [E-Trail](https://e-trail.net/vps) - **Minimum price**: `2.50 EUR / month` + **Minimum price**: `2.50 EUR / month` -

Tip

+

Tip

- **If Ubuntu 24.04 LTS is not in the dropdown when ordering, you may need to reinstall later or ask support to do it.** + **If Ubuntu 24.04 LTS is not in the dropdown when ordering, you may need to reinstall later or ask support to do it.** -
+
-- [OVH Cloud](https://www.ovhcloud.com/de/vps/) +- [OVH Cloud](https://www.ovhcloud.com/de/vps/) - **Minimum price**: `3.57 EUR / month` + **Minimum price**: `3.57 EUR / month` -- [Hetzner Cloud](https://www.hetzner.com/cloud) +- [Hetzner Cloud](https://www.hetzner.com/cloud) - **Minimum price**: `4.51 EUR / month` + **Minimum price**: `4.51 EUR / month` -- [Digital Ocean](https://www.digitalocean.com/pricing/droplets) +- [Digital Ocean](https://www.digitalocean.com/pricing/droplets) - **Minimum price**: `4 EUR / month` + **Minimum price**: `4 EUR / month` -- [Contabo](https://contabo.com/en/vps/) +- [Contabo](https://contabo.com/en/vps/) - **Minimum price**: `7 EUR / month` + **Minimum price**: `7 EUR / month` - **More serious VPS able to host multiple applications, 4 CPU cores and 8 GB of RAM, 200 GB SSD** + **More serious VPS able to host multiple applications, 4 CPU cores and 8 GB of RAM, 200 GB SSD** You also may want to search for better deals. @@ -707,9 +709,9 @@ For the **Key pair (login)** click on **Create new key pair** and name it `VpsRo For the **Network settings** check the following checkboxes on: -- `Allow SSH traffic from` (Anywhere) -- `Allow HTTPs traffic from the internet` -- `Allow HTTP traffic from the internet` +- `Allow SSH traffic from` (Anywhere) +- `Allow HTTPs traffic from the internet` +- `Allow HTTP traffic from the internet`

Tip

@@ -951,9 +953,9 @@ Then find the `#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2` l Additionally for better security you can do the following: -- Set `PermitRootLogin` to `yes` -- Change the `Port` to some number of your choice (22-65000) (Make sure it's at least 2 digits and avoid common ports used by other apps like: 21, 80, 35, 8080, 3000, etc...) -- Uncomment `#PasswordAuthentication yes` by removing the `#` in front and set it to `yes` (This will disable password login, you will be able to login with SSH keys only!) +- Set `PermitRootLogin` to `yes` +- Change the `Port` to some number of your choice (22-65000) (Make sure it's at least 2 digits and avoid common ports used by other apps like: 21, 80, 35, 8080, 3000, etc...) +- Uncomment `#PasswordAuthentication yes` by removing the `#` in front and set it to `yes` (This will disable password login, you will be able to login with SSH keys only!) Save the file with `CTRL + O`, hit Enter, close it with `CTRL + X`. @@ -1087,9 +1089,9 @@ sudo apt install screen -y Now you can install the MCC: -- [Download a compiled binary](#download-a-compiled-binary) -- [Building from the source code](#building-from-the-source-code) -- [Run using Docker](#using-docker) (Doesn't require the `screen` command) +- [Download a compiled binary](#download-a-compiled-binary) +- [Building from the source code](#building-from-the-source-code) +- [Run using Docker](#using-docker) (Doesn't require the `screen` command) How to use the `screen` command? diff --git a/docs/guide/usage.md b/docs/guide/usage.md index 8c1d4077..e57a23e1 100644 --- a/docs/guide/usage.md +++ b/docs/guide/usage.md @@ -6,15 +6,15 @@ title: Usage How to run the program: -- [Running on Windows](#windows) -- [Running on Linux, macOS](#linux-macos) -- [Running using Docker](#docker) +- [Running on Windows](#windows) +- [Running on Linux, macOS](#linux-macos) +- [Running using Docker](#docker) Using the command line parameters: -- [Examples](#quick-usage-of-mcc-with-examples) -- [Command line parameters](#command-line-parameters) -- [Internal commands](#internal-commands) +- [Examples](#quick-usage-of-mcc-with-examples) +- [Command line parameters](#command-line-parameters) +- [Internal commands](#internal-commands) ## Windows @@ -66,18 +66,17 @@ See [Run using Docker](./installation.md#using-docker)
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. Command line parameters are written after the name of the program, they're separated by spaces and they can have a few different formats, examples: -- `someparameter` -- `-some-parameter` -- `--some-other-parameter` -- `--some-setting="some value"` -- `-a=5` +- `someparameter` +- `-some-parameter` +- `--some-other-parameter` +- `--some-setting="some value"` +- `-a=5` Parameters with a single dash (`-`) are usually used for a single letter (short-hand) parameters, while the ones with a double dash (`--`) are being used for parameters with a longer/full name. @@ -147,9 +146,9 @@ MinecraftClient.exe CustomSettingsFile.ini --language=zh You can mix and match arguments by following these rules: -- First positional argument may be either the login or a settings file -- Other positional arguments are read in order: login, password, server, command -- Arguments starting with `--` can be in any order and position +- First positional argument may be either the login or a settings file +- Other positional arguments are read in order: login, password, server, command +- Arguments starting with `--` can be in any order and position Examples and further explanations: @@ -157,39 +156,39 @@ Examples and further explanations: MinecraftClient.exe ``` -- This will automatically connect you to the chosen server. -- You may omit password and/or server to specify e.g. only the login -- For Microsoft accounts, password is not required (device code flow is used). Use `""` as a placeholder if you need to specify a server. -- To specify offline mode with no password, use `-` as password. +- This will automatically connect you to the chosen server. +- You may omit password and/or server to specify e.g. only the login +- For Microsoft accounts, password is not required (device code flow is used). Use `""` as a placeholder if you need to specify a server. +- To specify offline mode with no password, use `-` as password. ```bash MinecraftClient.exe "/mycommand" ``` -- This will automatically send `/mycommand` to the server and close. -- To send several commands or stay connected, use the `ScriptScheduler` bot instead. +- This will automatically send `/mycommand` to the server and close. +- To send several commands or stay connected, use the `ScriptScheduler` bot instead. ```bash MinecraftClient.exe ``` -- This will load the specified configuration file -- If the file contains login / server ip, it will automatically connect. -- For Microsoft accounts, authentication happens through the device code flow (no password needed in the file). +- This will load the specified configuration file +- If the file contains login / server ip, it will automatically connect. +- For Microsoft accounts, authentication happens through the device code flow (no password needed in the file). ```bash MinecraftClient.exe --setting=value [--other settings] ``` -- Specify settings on the command-line, see possible value in the configuration file -- Use `--section.setting=value` for settings outside the `[Main]` section -- Example: `--antiafk.enabled=true` for enabling the `AntiAFK` bot +- Specify settings on the command-line, see possible value in the configuration file +- Use `--section.setting=value` for settings outside the `[Main]` section +- Example: `--antiafk.enabled=true` for enabling the `AntiAFK` bot ```bash MinecraftClient.exe [--other settings] ``` -- Load the specified configuration file and override some settings from the file +- Load the specified configuration file and override some settings from the file ## Internal Commands @@ -208,1168 +207,1100 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
animation +- **Description:** -- **Description:** + Swing your main or off hand. - Swing your main or off hand. +- **Usage:** -- **Usage:** - - ``` - /animation - ``` + ``` + /animation + ```
-
bed +- **Description:** -- **Description:** + Allows you to make the bot sleep easily, all about sleeping in one command. - Allows you to make the bot sleep easily, all about sleeping in one command. +- **Usage:** -- **Usage:** + Basic usage: `bed leave|sleep |sleep ` - Basic usage: `bed leave|sleep |sleep ` +- **Examples:** -- **Examples:** + Leave a bed: - Leave a bed: + ``` + /bed leave + ``` - ``` - /bed leave - ``` + Sleep in a bed on 124 84 76: - Sleep in a bed on 124 84 76: + ``` + /bed sleep 124 84 76 + ``` - ``` - /bed sleep 124 84 76 - ``` + Sleep in a bed using relative coordinates: - Sleep in a bed using relative coordinates: + ``` + /bed sleep ~ ~ ~-2 + ``` - ``` - /bed sleep ~ ~ ~-2 - ``` + Automatically find a bed in radius of 50 blocks and sleep in it: - Automatically find a bed in radius of 50 blocks and sleep in it: - - ``` - /bed sleep 50 - ``` + ``` + /bed sleep 50 + ```
-
blockinfo -

Tip

**You need to have [Terrain And Movements](configuration.md#terrainandmovements) enabled in order for this to work.**
-- **Description:** +- **Description:** - Reports the block type at the given position. + Reports the block type at the given position. - If you use the `-s` option, it also reports the surrounding block types. + If you use the `-s` option, it also reports the surrounding block types. -- **Usage:** +- **Usage:** - Basic usage: + Basic usage: - ``` - /blockinfo [-s] - ``` + ``` + /blockinfo [-s] + ```
-
bots +- **Description:** -- **Description:** + Allows you to list and unload a specific bot or all bots. - Allows you to list and unload a specific bot or all bots. + Useful when debugging and developing scripts. - Useful when debugging and developing scripts. +- **Usage:** -- **Usage:** + ``` + /bots > + ``` - ``` - /bots > - ``` +- **Examples:** -- **Examples:** + Unload a bot called CustomScript - Unload a bot called CustomScript + ``` + /bots unload CustomScript + ``` - ``` - /bots unload CustomScript - ``` + Unload all bots - Unload all bots - - ``` - /bots unload all - ``` + ``` + /bots unload all + ```
-
changeslot +- **Description:** -- **Description:** + Change your selected slot in the hotbar. - Change your selected slot in the hotbar. +

Tip

-

Tip

+ **You need to have [Inventory Handling](configuration.md#inventoryhandling) enabled in order for this to work.** - **You need to have [Inventory Handling](configuration.md#inventoryhandling) enabled in order for this to work.** +
-
+- **Usage:** -- **Usage:** - - ``` - /changeslot <1-9> - ``` + ``` + /changeslot <1-9> + ```
-
chunk +- **Description:** -- **Description:** + Displays the chunk loading status in a nice way. - Displays the chunk loading status in a nice way. +

Warning

-

Warning

+ **To use this feature you need to enable the [Terrain and Movements](configuration.md#terrainandmovements)** - **To use this feature you need to enable the [Terrain and Movements](configuration.md#terrainandmovements)** +
-
+

Tip

-

Tip

+ **You need a terminal with emoji support, like Powershell 7, Windows Terminal or Alacritty, if you do not want emoji support and want to use cmd or powershell 5, disable emojis with: [`enableemoji`](configuration.md#enableemoji)** - **You need a terminal with emoji support, like Powershell 7, Windows Terminal or Alacritty, if you do not want emoji support and want to use cmd or powershell 5, disable emojis with: [`enableemoji`](configuration.md#enableemoji)** +
-
+- **Usage:** -- **Usage:** + ``` + /chunk status [chunkX chunkZ|locationX locationY locationZ] + ``` - ``` - /chunk status [chunkX chunkZ|locationX locationY locationZ] - ``` + How it looks: - How it looks: - - ![Chunk status](/images/guide/ChunkStatus.png) + ![Chunk status](/images/guide/ChunkStatus.png)
-
dig +- **Description:** -- **Description:** + Dig a block on a specific coordinate. - Dig a block on a specific coordinate. +- **Usage:** -- **Usage:** + ``` + /dig + ``` - ``` - /dig - ``` +- **Example:** -- **Example:** + ``` + /dig 127 63 12 + ``` - ``` - /dig 127 63 12 - ``` + Using relative coordinates: - Using relative coordinates: - - ``` - /dig ~ ~-1 ~2 - ``` + ``` + /dig ~ ~-1 ~2 + ```
-
dropitem +- **Description:** -- **Description:** + Drop all items of a specific type from your inventory. - Drop all items of a specific type from your inventory. +

Tip

-

Tip

+ **You need to have [Inventory Handling](configuration.md#inventoryhandling) enabled in order for this to work.** - **You need to have [Inventory Handling](configuration.md#inventoryhandling) enabled in order for this to work.** +
-
+- **Usage:** -- **Usage:** + ``` + /dropitem + ``` - ``` - /dropitem - ``` +

Tip

-

Tip

+ **All item types can be found [here](https://mccteam.github.io/r/item/#L12).** - **All item types can be found [here](https://mccteam.github.io/r/item/#L12).** +
-
+- **Example:** -- **Example:** - - ``` - /dropitem diamond - ``` + ``` + /dropitem diamond + ```
-
enchant -

Tip

**You need to have [Inventory Handling](configuration.md#inventoryhandling) enabled in order for this to work.**
-- **Description:** +- **Description:** - Allows you to enchant items in an enchanting table. + Allows you to enchant items in an enchanting table. - You need to first open an enchanting table and then place and item that you want to enchant and lapis in the enchanting table, and then you can execute the command. + You need to first open an enchanting table and then place and item that you want to enchant and lapis in the enchanting table, and then you can execute the command. - To open an enchanting table you can use the [`useblock`](#useblock) command. + To open an enchanting table you can use the [`useblock`](#useblock) command. -- **Usage:** +- **Usage:** - Basic usage: + Basic usage: - ``` - /enchant - ``` + ``` + /enchant + ```
-
entity +- **Description:** -- **Description:** + Attack an entity, use an entity or get a list of entities around you. - Attack an entity, use an entity or get a list of entities around you. +

Tip

-

Tip

+ **You need to have [Inventory Handling](configuration.md#inventoryhandling) and [Entity Handling](configuration.md#entityhandling) enabled in order for this to work.** - **You need to have [Inventory Handling](configuration.md#inventoryhandling) and [Entity Handling](configuration.md#entityhandling) enabled in order for this to work.** +
-
+- **Usage:** -- **Usage:** + Basic usage: - Basic usage: + ``` + /entity + ``` - ``` - /entity - ``` + Get a list of entities around you: - Get a list of entities around you: + ``` + /entity + ``` - ``` - /entity - ``` +

Tip

-

Tip

+ **All entity types can be found [here](https://mccteam.github.io/r/entity/#L15).** - **All entity types can be found [here](https://mccteam.github.io/r/entity/#L15).** +
-
+- **Examples:** -- **Examples:** + Attack a Zombie: - Attack a Zombie: - - ``` - /entity Zombie attack - ``` + ``` + /entity Zombie attack + ```
-
execif +- **Description:** -- **Description:** + Allows you to execute a command if a specific condition is met. - Allows you to execute a command if a specific condition is met. + The condition is a C# expression and the local variables you set using [`set`](#set), [`setrnd`](#setrnd) or the configuration file can be used. - The condition is a C# expression and the local variables you set using [`set`](#set), [`setrnd`](#setrnd) or the configuration file can be used. + The condition is always returned as a boolean, so only comparison can be done, if needed cast the expression result to bool. - The condition is always returned as a boolean, so only comparison can be done, if needed cast the expression result to bool. + Also the instance of MCC is available with `MCC.`. - Also the instance of MCC is available with `MCC.`. +

Tip

-

Tip

+ **All local variables are treated as strings in the app, when comparing their values, you can use ` == ""`, or better use [`.Equals`](https://www.programiz.com/csharp-programming/library/string/equals) method** - **All local variables are treated as strings in the app, when comparing their values, you can use ` == ""`, or better use [`.Equals`](https://www.programiz.com/csharp-programming/library/string/equals) method** +
-
+- **Usage:** -- **Usage:** + Basic usage: `/execif ` - Basic usage: `/execif ` +- **Examples:** -- **Examples:** + Setting a variable and using it: - Setting a variable and using it: + ``` + /set test=Something + /execif 'test == "Something"' "send Success!" + ``` - ``` - /set test=Something - /execif 'test == "Something"' "send Success!" - ``` +

Tip

-

Tip

+ **You can use single quote (`'`) to wrap your expression if the expression contains double quote (`"`)** - **You can use single quote (`'`) to wrap your expression if the expression contains double quote (`"`)** + **Adding back-slash (`\`) before the double quote will also work (`/execif "test == \"Something\"" "send Success!"`)** - **Adding back-slash (`\`) before the double quote will also work (`/execif "test == \"Something\"" "send Success!"`)** +
-
+ ``` + /set test2=1 + /execif 'test2 == "1"' "send Success 2!" + ``` - ``` - /set test2=1 - /execif 'test2 == "1"' "send Success 2!" - ``` + Basic C# expression: - Basic C# expression: + ``` + /execif "1 + 2 + 3 == 6" "send Success!" + ``` - ``` - /execif "1 + 2 + 3 == 6" "send Success!" - ``` + Using MCC class: - Using MCC class: + ``` + /execif "MCC.GetHealth() == 20.0" "send Success!" + ``` - ``` - /execif "MCC.GetHealth() == 20.0" "send Success!" - ``` + Using in combination with [`execmulti`](#execmulti): - Using in combination with [`execmulti`](#execmulti): - - ``` - /execif "1 == 1" "execmulti send 1 -> send 2 -> send 3" - ``` + ``` + /execif "1 == 1" "execmulti send 1 -> send 2 -> send 3" + ```
-
execmulti +- **Description:** -- **Description:** + Allows you to execute multiple commands in succession on a single line, useful for debugging or when using [`execif`](#execif) - Allows you to execute multiple commands in succession on a single line, useful for debugging or when using [`execif`](#execif) + Commands are separated by `->` - Commands are separated by `->` +- **Usage:** -- **Usage:** + Basic usage: `execmulti -> -> -> ...` - Basic usage: `execmulti -> -> -> ...` +- **Examples:** -- **Examples:** - - ``` - /execmulti send 1 -> send 2 -> send 3 -> sneak - ``` + ``` + /execmulti send 1 -> send 2 -> send 3 -> sneak + ```
-
quit +- **Alias:** `exit` -- **Alias:** `exit` -- **Description:** +- **Description:** - Disconnect from the server and close the application + Disconnect from the server and close the application
-
reco +- **Description:** -- **Description:** + Disconnect and reconnect to the server - Disconnect and reconnect to the server +- **Usage:** -- **Usage:** + ``` + /reco [account] + ``` - ``` - /reco [account] - ``` +

Tip

-

Tip

+ **`[account]` is an account alias defined in accounts file, for more info check out [accountlist](configuration.html#accountlist)** - **`[account]` is an account alias defined in accounts file, for more info check out [accountlist](configuration.html#accountlist)** - -
+
-
reload +- **Description:** -- **Description:** + Reloads the active configuration file and chat bots. - Reloads the active configuration file and chat bots. +

Tip

-

Tip

+ **Some settings are not reloaded because they are used before client initialization. Settings passed on the command line also override file values.** - **Some settings are not reloaded because they are used before client initialization. Settings passed on the command line also override file values.** +
-
+- **Usage:** -- **Usage:** - - ``` - /reload - ``` + ``` + /reload + ```
-
connect +- **Description:** -- **Description:** + Go to the given server and resume the script - Go to the given server and resume the script +- **Usage:** -- **Usage:** + ``` + /connect [account] + ``` - ``` - /connect [account] - ``` +

Tip

-

Tip

+ **`` is either a server IP or a server alias defined in servers file, for more info check out [serverlist](configuration.html#serverlist)** - **`` is either a server IP or a server alias defined in servers file, for more info check out [serverlist](configuration.html#serverlist)** +
-
+

Tip

-

Tip

+ **`[account]` is an account alias defined in accounts file, for more info check out [accountlist](configuration.html#accountlist)** - **`[account]` is an account alias defined in accounts file, for more info check out [accountlist](configuration.html#accountlist)** - -
+
-
script +- **Description:** -- **Description:** + Run a script containing a list of commands - Run a script containing a list of commands +- **Usage:** -- **Usage:** - - ``` - /script