pub struct ClientBuilder<S, R>{ /* private fields */ }
Expand description
A builder for creating new Client
s. 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, ()>
impl ClientBuilder<NoState, ()>
Sourcepub fn new_without_plugins() -> Self
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);
Sourcepub fn set_handler<S, Fut, R>(
self,
handler: HandleFn<S, Fut>,
) -> ClientBuilder<S, R>
pub fn set_handler<S, Fut, R>( self, handler: HandleFn<S, Fut>, ) -> ClientBuilder<S, R>
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>
impl<S, R> ClientBuilder<S, R>
Sourcepub fn set_state(self, state: S) -> Self
pub fn set_state(self, state: S) -> Self
Set the client state instead of initializing defaults.
Sourcepub fn add_plugins<M>(self, plugins: impl Plugins<M>) -> Self
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.
Sourcepub fn reconnect_after(self, delay: impl Into<Option<Duration>>) -> Self
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
.
Sourcepub async fn start(
self,
account: Account,
address: impl TryInto<ServerAddress>,
) -> Result<!, StartError>
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.
Sourcepub async fn start_with_opts(
self,
account: Account,
address: impl TryInto<ServerAddress>,
opts: JoinOpts,
) -> Result<!, StartError>
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§
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSend for T
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.