Struct azalea::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("example@example.com").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 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).

Note that this will not refresh the token when it expires.

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

let res = azalea_auth::get_ms_link_code(&client).await?;
println!(
    "Go to {} and enter the code {}",
    res.verification_uri, res.user_code
);
let msa = azalea_auth::get_ms_auth_token(&client, res).await?;
Account::with_microsoft_access_token(msa).await?;
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,

§

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
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
source§

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

source§

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

source§

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> Downcast for T
where T: Any,

source§

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.
source§

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.
source§

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.
source§

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.
source§

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

source§

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.
source§

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

source§

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.

source§

impl<T> Instrument for T

source§

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

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

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

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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>,

§

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.
source§

impl<T> TypeData for T
where T: 'static + Send + Sync + Clone,

source§

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

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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