azalea::prelude

Struct Account

Source
pub struct Account {
    pub username: String,
    pub access_token: Option<Arc<Mutex<RawMutex, String>>>,
    pub uuid: Option<Uuid>,
    pub account_opts: AccountOpts,
    pub certs: Option<Certificates>,
}
Expand description

Something that can join Minecraft servers.

To join a server using this account, use Client::join or azalea::ClientBuilder.

Note that this is also a component that our clients have.

§Examples

use azalea_client::Account;

let account = Account::microsoft("[email protected]").await;
// or Account::offline("example");

Fields§

§username: String

The Minecraft username of the account.

§access_token: Option<Arc<Mutex<RawMutex, String>>>

The access token for authentication. You can obtain one of these manually from azalea-auth.

This is an Arc<Mutex> so it can be modified by Self::refresh.

§uuid: Option<Uuid>

Only required for online-mode accounts.

§account_opts: AccountOpts

The parameters (i.e. email) that were passed for creating this Account. This is used for automatic reauthentication when we get “Invalid Session” errors. If you don’t need that feature (like in offline mode), then you can set this to AuthOpts::default().

§certs: Option<Certificates>

The certificates used for chat signing.

This is set when you call Self::request_certs, but you only need to if the servers you’re joining require it.

Implementations§

Source§

impl Account

Source

pub fn offline(username: &str) -> Account

An offline account does not authenticate with Microsoft’s servers, and as such can only join offline mode servers. This is useful for testing in LAN worlds.

Source

pub async fn microsoft(email: &str) -> Result<Account, AuthError>

This will create an online-mode account by authenticating with Microsoft’s servers. Note that the email given is actually only used as a key for the cache, but it’s recommended to use the real email to avoid confusion.

Source

pub async fn microsoft_with_custom_client_id_and_scope( email: &str, client_id: Option<&str>, scope: Option<&str>, ) -> Result<Account, AuthError>

Similar to Account::microsoft but you can use your own client_id and scope.

Pass None if you want to use default ones.

Source

pub async fn with_microsoft_access_token( msa: ExpiringValue<AccessTokenResponse>, ) -> Result<Account, AuthError>

This will create an online-mode account through azalea_auth::get_minecraft_token so you can have more control over the authentication process (like doing your own caching or displaying the Microsoft user code to the user in a different way).

This will refresh the given token if it’s expired.

let client = reqwest::Client::new();

let res = azalea_auth::get_ms_link_code(&client, None, None).await?;
// Or, `azalea_auth::get_ms_link_code(&client, Some(client_id), None).await?`
// if you want to use your own client_id
println!(
    "Go to {} and enter the code {}",
    res.verification_uri, res.user_code
);
let msa = azalea_auth::get_ms_auth_token(&client, res, None).await?;
Account::with_microsoft_access_token(msa).await?;
Source

pub async fn with_microsoft_access_token_and_custom_client_id_and_scope( msa: ExpiringValue<AccessTokenResponse>, client_id: Option<&str>, scope: Option<&str>, ) -> Result<Account, AuthError>

Similar to Account::with_microsoft_access_token but you can use custom client_id and scope.

Source

pub async fn refresh(&self) -> Result<(), AuthError>

Refresh the access_token for this account to be valid again.

This requires the auth_opts field to be set correctly (which is done by default if you used the constructor functions). Note that if the Account is offline-mode then this function won’t do anything.

Source

pub fn uuid_or_offline(&self) -> Uuid

Get the UUID of this account. This will generate an offline-mode UUID by making a hash with the username if the uuid field is None.

Source§

impl Account

Source

pub async fn request_certs(&mut self) -> Result<(), RequestCertError>

Request the certificates used for chat signing and set it in Self::certs.

Trait Implementations§

Source§

impl Clone for Account

Source§

fn clone(&self) -> Account

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Component for Account
where Account: Send + Sync + 'static,

Source§

type Storage = TableStorage

A marker type indicating the storage type used for this component. This must be either [TableStorage] or [SparseStorage].
Source§

impl Debug for Account

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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
§

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

§

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

§

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

§

fn type_name(&self) -> &'static str

Gets the type name of self
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<C> Bundle for C
where C: Component,

§

fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId), )

§

unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
where F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a>,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

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

§

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

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

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

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

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

Convert &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)

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

impl<T> Downcast for T
where T: AsAny + ?Sized,

§

fn is<T>(&self) -> bool
where T: AsAny,

Returns true if the boxed type is the same as T. Read more
§

fn downcast_ref<T>(&self) -> Option<&T>
where T: AsAny,

Forward to the method defined on the type Any.
§

fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: AsAny,

Forward to the method defined on the type Any.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<C> DynamicBundle for C
where C: Component,

§

fn get_components(self, func: &mut impl FnMut(StorageType, OwningPtr<'_>))

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<T> TypeData for T
where T: 'static + Send + Sync + Clone,

§

fn clone_type_data(&self) -> Box<dyn TypeData>

§

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