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
impl Account
sourcepub fn offline(username: &str) -> Account
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.
sourcepub async fn microsoft(email: &str) -> Result<Account, AuthError>
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.
sourcepub async fn with_microsoft_access_token(
msa: ExpiringValue<AccessTokenResponse>
) -> Result<Account, AuthError>
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?;
sourcepub async fn refresh(&self) -> Result<(), AuthError>
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.
sourcepub fn uuid_or_offline(&self) -> Uuid
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
impl Account
sourcepub async fn request_certs(&mut self) -> Result<(), RequestCertError>
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 Component for Account
impl Component for Account
§type Storage = TableStorage
type Storage = TableStorage
TableStorage
or SparseStorage
.Auto Trait Implementations§
impl Freeze for Account
impl !RefUnwindSafe for Account
impl Send for Account
impl Sync for Account
impl Unpin for Account
impl !UnwindSafe for Account
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
source§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§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>
. 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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
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.source§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.