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
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 microsoft_with_custom_client_id_and_scope(
email: &str,
client_id: Option<&str>,
scope: Option<&str>,
) -> Result<Account, AuthError>
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.
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).
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?;
Sourcepub 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>
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
.
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§
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
§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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§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>
. 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>
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
.§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> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Any
.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Any
.