Expand description
Azalea is a framework for creating Minecraft bots.
Internally, it’s just a wrapper over azalea_client
, adding useful
functions for making bots. Because of this, lots of the documentation will
refer to azalea_client
. You can just replace these with azalea
in your
code, since everything from azalea_client is re-exported in azalea.
Installation
First, install Rust nightly with rustup install nightly
and rustup default nightly
.
Then, add one of the following lines to your Cargo.toml:
Latest bleeding-edge version:
azalea = { git="https://github.com/mat-1/Cargo.toml" }
Latest “stable” release:
azalea = "0.5.0"
Optimization
For faster compile times, make a .cargo/config.toml
file in your project
and copy
this file
into it.
For faster performance in debug mode, add
[profile.dev]
opt-level = 1
[profile.dev.package."*"]
opt-level = 3
to your Cargo.toml. You may have to install the LLD linker.
Examples
//! A bot that logs chat messages sent in the server to the console.
use azalea::prelude::*;
use parking_lot::Mutex;
use std::sync::Arc;
#[tokio::main]
async fn main() {
let account = Account::offline("bot");
// or Account::microsoft("example@example.com").await.unwrap();
azalea::start(azalea::Options {
account,
address: "localhost",
state: State::default(),
plugins: plugins![],
handle,
})
.await
.unwrap();
}
#[derive(Default, Clone)]
pub struct State {}
async fn handle(bot: Client, event: Event, state: State) -> anyhow::Result<()> {
match event {
Event::Chat(m) => {
println!("{}", m.message().to_ansi());
}
_ => {}
}
Ok(())
}
Modules
Macros
SwarmPlugins
struct from a list of
objects that implement SwarmPlugin
.Structs
azalea::start
.PluginStates
object to get a fresh new state based on this
plugin.azalea::start_swarm
.SwarmPlugin
trait objects. The client stores
this so we can keep the state for our Swarm
plugins.Enums
WalkDirection
.Traits
PluginState
keeps the current state of a plugin for a client. All the
fields must be atomic. Unique PluginState
s are built from Plugin
s.SwarmPluginState
),
listen to SwarmEvent
s, and add new functions to Swarm
.SwarmPluginState
keeps the current state of a plugin for a client. All
the fields must be atomic. Unique SwarmPluginState
s are built from
SwarmPlugin
s.Functions
Swarm
.