pub struct VersionList {
pub latest: LatestInfo,
pub versions: Vec<VersionInfo>,
}Expand description
The version list of Minecraft.
Fields§
§latest: LatestInfo§versions: Vec<VersionInfo>Implementations§
Source§impl VersionList
impl VersionList
Sourcepub async fn get_list() -> Result<VersionList>
pub async fn get_list() -> Result<VersionList>
Gets the VersionList.
Examples found in repository?
examples/minecraft.rs (line 32)
31async fn real_main() -> Result<()> {
32 let vers = VersionList::get_list().await?;
33 let launcher = {
34 let mut launcher = LauncherContext::new(Path::new("./test"), StdioUserInterface).await?;
35 launcher.bmclapi_mirror = Some("bmclapi2.bangbang93.com".into());
36 launcher
37 };
38 let (tx, mut rx) = mpsc::unbounded_channel();
39 let message_handler = async move {
40 let mut count = 0;
41 while let Some(next) = rx.recv().await {
42 handle_msg(next, &mut count).await;
43 }
44 };
45 let mc = vers.find_by_id("1.20.6").unwrap().install(&launcher, "1.20.6", tx);
46 let mc = tokio::join!(message_handler, mc).1?;
47 let account = &mut *launcher.account_types["offline"].new();
48 account.login(&launcher).await?;
49 if let Some(c) = &mc.extra_data.before_command {
50 let command: Vec<&str> = c.split(" ").collect();
51 Command::new(command[0])
52 .args(&command[1..])
53 .stdout(Stdio::inherit())
54 .stderr(Stdio::inherit())
55 .stdin(Stdio::null())
56 .current_dir(mc.get_cwd())
57 .spawn()?.wait().await?;
58 }
59 let (tx, mut rx) = mpsc::unbounded_channel();
60 let msg_handler = async move {
61 let mut count = 0;
62 while let Some(next) = rx.recv().await {
63 handle_msg(next, &mut count).await;
64 }
65 };
66 let args = mc.launch_args(account, tx);
67 let args = tokio::join!(msg_handler, args).1?;
68 Command::new(mc.extra_data.with_java.as_ref().map_or("java", String::as_str))
69 .args(args)
70 .stdout(Stdio::inherit())
71 .stderr(Stdio::inherit())
72 .stdin(Stdio::null())
73 .current_dir(mc.get_cwd())
74 .spawn()?.wait().await?;
75 Ok(())
76}Sourcepub fn find_by_id(&self, id: &str) -> Option<&VersionInfo>
pub fn find_by_id(&self, id: &str) -> Option<&VersionInfo>
Find a version by id in the VersionList.
Examples found in repository?
examples/minecraft.rs (line 45)
31async fn real_main() -> Result<()> {
32 let vers = VersionList::get_list().await?;
33 let launcher = {
34 let mut launcher = LauncherContext::new(Path::new("./test"), StdioUserInterface).await?;
35 launcher.bmclapi_mirror = Some("bmclapi2.bangbang93.com".into());
36 launcher
37 };
38 let (tx, mut rx) = mpsc::unbounded_channel();
39 let message_handler = async move {
40 let mut count = 0;
41 while let Some(next) = rx.recv().await {
42 handle_msg(next, &mut count).await;
43 }
44 };
45 let mc = vers.find_by_id("1.20.6").unwrap().install(&launcher, "1.20.6", tx);
46 let mc = tokio::join!(message_handler, mc).1?;
47 let account = &mut *launcher.account_types["offline"].new();
48 account.login(&launcher).await?;
49 if let Some(c) = &mc.extra_data.before_command {
50 let command: Vec<&str> = c.split(" ").collect();
51 Command::new(command[0])
52 .args(&command[1..])
53 .stdout(Stdio::inherit())
54 .stderr(Stdio::inherit())
55 .stdin(Stdio::null())
56 .current_dir(mc.get_cwd())
57 .spawn()?.wait().await?;
58 }
59 let (tx, mut rx) = mpsc::unbounded_channel();
60 let msg_handler = async move {
61 let mut count = 0;
62 while let Some(next) = rx.recv().await {
63 handle_msg(next, &mut count).await;
64 }
65 };
66 let args = mc.launch_args(account, tx);
67 let args = tokio::join!(msg_handler, args).1?;
68 Command::new(mc.extra_data.with_java.as_ref().map_or("java", String::as_str))
69 .args(args)
70 .stdout(Stdio::inherit())
71 .stderr(Stdio::inherit())
72 .stdin(Stdio::null())
73 .current_dir(mc.get_cwd())
74 .spawn()?.wait().await?;
75 Ok(())
76}Sourcepub fn get_latest_release(&self) -> Option<&VersionInfo>
pub fn get_latest_release(&self) -> Option<&VersionInfo>
Get the latest release in the VersionList.
Sourcepub fn get_latest_snapshot(&self) -> Option<&VersionInfo>
pub fn get_latest_snapshot(&self) -> Option<&VersionInfo>
Get the latest snapshot in the VersionList.
Trait Implementations§
Source§impl Clone for VersionList
impl Clone for VersionList
Source§fn clone(&self) -> VersionList
fn clone(&self) -> VersionList
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for VersionList
impl Debug for VersionList
Source§impl<'de> Deserialize<'de> for VersionList
impl<'de> Deserialize<'de> for VersionList
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for VersionList
impl RefUnwindSafe for VersionList
impl Send for VersionList
impl Sync for VersionList
impl Unpin for VersionList
impl UnwindSafe for VersionList
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more