Skip to content

Minecraft Pearl Statis Bot written in Rust using Azalea

License

Notifications You must be signed in to change notification settings

ShayBox/ShaysBot

Repository files navigation

ShaysBot

My personal Minecraft bot written in Rust built with Azalea.
Primarily designed to be a pearl bot, allowing for quick travel to different locations with multiple accounts.
Also featuring a Discord bot, an HTTP API for local integrations, and support for No Chat Reports encryption.

How to use

Choose your preferred Installation Method below, then run the bot once to create files.
Open the global-settings.toml file and change the server_address to your desired server.
Rename the ExampleBot*.toml in local-settings to your desired accounts Minecraft Username,
Then open the local settings file and change the auth_mode to online.

You can check the global and local source files for documentation.

ZenithProxy

You can optionally use ZenithProxy between my bot and your desired server,
This can be useful if you want to keep your place in queue with non-priority accounts.
Add server_address = "127.0.0.1:ZENITH PORT HERE" to the top of your local settings file.
Note: This is intended for proxies only, do not use it to connect accounts to different servers.

Verbose Output

To enable debug logging you must set the environment variable:
RUST_LOG=shaysbot=debug,info (error, warn, info, debug, trace)
The first is the log level of the bot, the second is of dependencies.

Installation Methods

Binaries: Latest | Releases

Compiled with GitHub Actions using the Debug profile.

Install or Develop Locally

Prerequisites:

  • 2GIB of RAM/SWAP
  • LLVM (Clang/LLD)
    • Windows: winget install -e --id LLVM.LLVM or Visual Studio
    • ArchLinux: sudo pacman -S base-devel clang lld
    • Debian/Ubuntu: sudo apt install build-essential clang lld
    • Fedora: sudo dnf install clang lld
    • Other: Ask Google, ChatGPT, or Deepseek
  • Rust (Cargo/Rustup)
    • Windows: winget install -e --id Rustlang.Rustup
    • ArchLinux: sudo pacman -S rustup
    • Debian 13+: sudo apt install rustup
    • Ubuntu 24.04+: sudo apt/snap install rustup
    • Other: Rustup

Troubleshooting:

  • No space left on device - Your /tmp directory is too small or full
    • sudo mount -o remount,size=1G /tmp && rm -rf /tmp/cargo-install*

Install (Recommended) - Compiled Locally

  1. rustup toolchain install nightly
  2. cargo +nightly install --git https://github.com/ShayBox/ShaysBot
  3. mkdir pearl-bot
  4. shaysbot

Build (Development) - You should know Rust!

  1. git clone [email protected]:ShayBox/ShaysBot.git
  2. cd ShaysBot
  3. Run: cargo run
  4. Build: cargo build (target/debug/shaysbot)
  5. Install: cargo install --path . (shaysbot)

Cargo Profiles

Run and Build use Debug while Install uses Release.
You can manually override with either: --debug or --release

Debug includes debug symbols which makes it easier to debug and decompile.
Release has more optimizations, runs faster, and uses less disk space.

Debug: Settings are relative to the binary executable directory.
Release: Settings are relative to the current working directory.

Features

Commands

  • Join - Connect an account to the server by enabling AutoReconnect
  • Leave - Disconnect an account from the server and disable AutoReconnect
  • Pearl - Automatically pull the closest stasis chamber at a location
  • Playtime - Fetch a players play time using 2b2t.vc
  • Seen - Fetch a players first and last seen time using 2b2t.vc
  • Whitelist - Add or remove players from the whitelist or link their Discord

Modules

  • AntiAfk - Automatically swing arm to avoid being kicked
  • AutoEat - Automatically eat food to avoid starving to death
  • AutoKill - Automatically swap and attack nearby monsters
  • AutoLeave - Automatically leave the server when in danger
  • AutoLook - Automatically look at the closest player in range
  • AutoPearl - Automatically goto and pull player stasis chambers
  • AutoTotem - Automatically equip totems of undying to avoid dying
  • AutoWhitelist - Automatically whitelist players that enter range
  • DiscordLogger - Log events such as Visual Range to Discord

Parsers

  • Discord - Discord chat command parsing integration
  • HttpApi - Local HTTP API command parsing integration
  • Minecraft - Minecraft chat command parsing integration

Settings

Trackers