https://github.com/shaybox/shaysbot
My personal Minecraft bot using Azalea
https://github.com/shaybox/shaysbot
azalea azalea-plugin azalealibrary minecraft minecraft-bot minecraft-bots
Last synced: 10 months ago
JSON representation
My personal Minecraft bot using Azalea
- Host: GitHub
- URL: https://github.com/shaybox/shaysbot
- Owner: ShayBox
- License: mit
- Created: 2023-01-12T01:36:19.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-10-29T11:11:02.000Z (about 1 year ago)
- Last Synced: 2024-10-29T13:11:46.688Z (about 1 year ago)
- Topics: azalea, azalea-plugin, azalealibrary, minecraft, minecraft-bot, minecraft-bots
- Language: Rust
- Homepage:
- Size: 134 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](#installation-methods) 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](src/settings/global.rs) and [local](src/settings/local.rs) 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](.github/workflows/release.yml) using the [**Debug**](#cargo-profiles) 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 git@github.com: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**](src/commands/join.rs) - Connect an account to the server by enabling `AutoReconnect`
- [**Leave**](src/commands/leave.rs) - Disconnect an account from the server and disable `AutoReconnect`
- [**Pearl**](src/commands/pearl.rs) - Automatically pull the closest stasis chamber at a `location`
- [**Playtime**](src/commands/playtime.rs) - Fetch a players play time using `2b2t.vc`
- [**Seen**](src/commands/seen.rs) - Fetch a players first and last seen time using `2b2t.vc`
- [**Whitelist**](src/commands/whitelist.rs) - Add or remove players from the whitelist or link their Discord
### Modules
- [**AntiAfk**](src/modules/anti_afk.rs) - Automatically swing arm to avoid being kicked
- [**AutoEat**](src/modules/auto_eat.rs) - Automatically eat food to avoid starving to death
- [**AutoKill**](src/modules/auto_kill.rs) - Automatically swap and attack nearby monsters
- [**AutoLeave**](src/modules/auto_leave.rs) - Automatically leave the server when in danger
- [**AutoLook**](src/modules/auto_look.rs) - Automatically look at the closest player in range
- [**AutoPearl**](src/modules/auto_pearl.rs) - Automatically goto and pull player stasis chambers
- [**AutoTotem**](src/modules/auto_totem.rs) - Automatically equip totems of undying to avoid dying
- [**AutoWhitelist**](src/modules/auto_whitelist.rs) - Automatically whitelist players that enter range
- [**DiscordLogger**](src/modules/discord_logger.rs) - Log events such as `Visual Range` to Discord
### Parsers
- [**Discord**](src/parsers/discord.rs) - Discord chat command parsing integration
- [**HttpApi**](src/parsers/http_api.rs) - Local HTTP API command parsing integration
- [**Minecraft**](src/parsers/minecraft.rs) - Minecraft chat command parsing integration
### Settings
- [**GlobalSettings**](src/settings/global.rs) - Global Swarm Settings that apply to every account
- [**LocalSettings**](src/settings/local.rs) - Local Account Settings that apply per-account
- [**StasisChambers**](src/settings/stasis.rs) - Global Stasis Chambers
### Trackers
- [**BlockStates**](src/trackers/block_state.rs) - Tracks block states for trapdoor closes
- [**EnderPearls**](src/trackers/ender_pearl.rs) - Tracks ender pearls for new chambers
- [**GameTicks**](src/trackers/game_tick.rs) - Tracks game ticks for counting intervals
- [**PlayerProfiles**](src/trackers/player_profile.rs) - Tracks player profiles for visual range
[Azalea]: https://github.com/azalea-rs/azalea
[ChatGPT]: https://chatgpt.com
[Deepseek]: https://chat.deepseek.com
[Google]: https://google.com
[Latest]: https://github.com/shaybox/shaysbot/releases/latest
[No Chat Reports]: https://github.com/Aizistral-Studios/No-Chat-Reports
[Releases]: https://github.com/shaybox/shaysbot/releases
[Rustup]: https://rustup.rs
[Visual Studio]: https://visualstudio.microsoft.com
[ZenithProxy]: https://github.com/rfresh2/ZenithProxy