Struct ClientBuilder

Source
pub struct ClientBuilder<S, R>
where S: Default + Send + Sync + Clone + Component + 'static, R: Send + 'static, Self: Send,
{ /* private fields */ }
Expand description

A builder for creating new Clients. This is the recommended way of making Azalea bots.

ClientBuilder::new()
    .set_handler(handle)
    .start(Account::offline("bot"), "localhost")
    .await;

Implementations§

Source§

impl ClientBuilder<NoState, ()>

Source

pub fn new() -> Self

Start building a client that can join the world.

Source

pub fn new_without_plugins() -> Self

Self::new but without adding the plugins by default.

This is useful if you want to disable a default plugin. This also exists for swarms, see SwarmBuilder::new_without_plugins.

Note that you can also disable LogPlugin by disabling the log feature.

You must add DefaultPlugins and DefaultBotPlugins to this.

use azalea::app::PluginGroup;

let client_builder = ClientBuilder::new_without_plugins()
    .add_plugins(azalea::DefaultPlugins.build().disable::<azalea::chat_signing::ChatSigningPlugin>())
    .add_plugins(azalea::DefaultBotPlugins);
Source

pub fn set_handler<S, Fut, R>( self, handler: HandleFn<S, Fut>, ) -> ClientBuilder<S, R>
where S: Default + Send + Sync + Clone + Component + 'static, Fut: Future<Output = R> + Send + 'static, R: Send + 'static,

Set the function that’s called every time a bot receives an Event. This is the way to handle normal per-bot events.

Currently, you can have up to one client handler.

Note that if you’re creating clients directly from the ECS using StartJoinServerEvent and the client wasn’t already in the ECS, then the handler function won’t be called for that client. This shouldn’t be a concern for most bots, though.

client_builder.set_handler(handle);

async fn handle(mut bot: Client, event: Event, state: State) -> anyhow::Result<()> {
    Ok(())
}
Source§

impl<S, R> ClientBuilder<S, R>
where S: Default + Send + Sync + Clone + Component + 'static, R: Send + 'static,

Source

pub fn set_state(self, state: S) -> Self

Set the client state instead of initializing defaults.

Source

pub fn add_plugins<M>(self, plugins: impl Plugins<M>) -> Self

Add a group of plugins to the client.

See Self::new_without_plugins to learn how to disable default plugins.

Source

pub fn reconnect_after(self, delay: impl Into<Option<Duration>>) -> Self

Configures the auto-reconnection behavior for our bot.

If this is Some, then it’ll set the default reconnection delay for our bot (how long it’ll wait after being kicked before it tries rejoining). if it’s None, then auto-reconnecting will be disabled.

If this function isn’t called, then our client will reconnect after DEFAULT_RECONNECT_DELAY.

Source

pub async fn start( self, account: Account, address: impl TryInto<ServerAddress>, ) -> Result<!, StartError>

Build this ClientBuilder into an actual Client and join the given server. If the client can’t join, it’ll keep retrying forever until it can.

The address argument can be a &str, ServerAddress, or anything that implements TryInto<ServerAddress>.

§Errors

This will error if the given address is invalid or couldn’t be resolved to a Minecraft server.

Source

pub async fn start_with_opts( self, account: Account, address: impl TryInto<ServerAddress>, opts: JoinOpts, ) -> Result<!, StartError>

Do the same as Self::start, but allow passing in custom join options.

Trait Implementations§

Source§

impl Default for ClientBuilder<NoState, ()>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<S, R> !Freeze for ClientBuilder<S, R>

§

impl<S, R> !RefUnwindSafe for ClientBuilder<S, R>

§

impl<S, R> Send for ClientBuilder<S, R>

§

impl<S, R> !Sync for ClientBuilder<S, R>

§

impl<S, R> Unpin for ClientBuilder<S, R>
where S: Unpin,

§

impl<S, R> !UnwindSafe for ClientBuilder<S, R>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CompatExt for T

§

fn compat(self) -> Compat<T>

Applies the [Compat] adapter by value. Read more
§

fn compat_ref(&self) -> Compat<&T>

Applies the [Compat] adapter by shared reference. Read more
§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the [Compat] adapter by mutable reference. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSend for T
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromWorld for T
where T: Default,

§

fn from_world(_world: &mut World) -> T

Creates Self using default().

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ConditionalSend for T
where T: Send,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T