Root

Struct Root 

Source
pub struct Root {
    pub arguments: Arguments,
    pub asset_index: AssetIndex,
    pub assets: String,
    pub downloads: HashMap<String, DownloadData>,
    pub id: String,
    pub java_version: JavaVersion,
    pub libraries: Box<[Library]>,
    pub inherits_from: Option<String>,
    pub main_class: String,
    pub version_type: String,
}
Expand description

This struct represent a .json file inside minecraft_root/versions/{version_name}/{version_name}.json

Careful: inherits_from indicates that it should inherit the values from other version. (The values must be added and not overwrite the current data)

This struct is also the repr of minecraft version from piston-meta.

This struct will be used when launching minecraft from the command line and/or when downloading a new minecraft profile from piston-meta.

§JSON EXAMPLE

An example of the outter JSON might looks like this:

{
    arguments: {…},
    assetIndex: {…},
    assets: "19",
    complianceLevel: 1,
    downloads: {…},
    id: "1.21.4",
    javaVersion: {…},
    libraries: […],
    logging: {…},
    mainClass: "net.minecraft.client.main.Main",
    minimumLauncherVersion: 21,
    type: "release"
}

The fields are renamed to snake_case and type -> version_type since type is a keyword.

§Downloading minecraft yay !

When using this struct to download a new minecraft version fields of insterest are:

  • asset_index
  • assets
  • libraries
  • downloads
  • java_version (In case Java is not installed)

You will find urls to file/files you need in order to run minecraft.

§Launching minecraft !

So in order to launch minecraft you will need to read a file from minecraft_root/versions/{version_name}/{version_name}.json

This file contains a JSON with this struct. You will need the following fields in order to launch minecraft:

  • arguments
  • assets
  • java_version (In case Java is not installed or you want the custom runtime)
  • libraries (you must add them to java path -cp)
  • main_class
  • logging (Not mandatory but usefull)

I KNOW TIME AND RELEASETIME FIELDS ARE MISSING, NEED THEM ? PR !!!!

Fields§

§arguments: Arguments§asset_index: AssetIndex§assets: String§downloads: HashMap<String, DownloadData>

.minecraft/versions/version/version.jar

§id: String

Actual version example: 1.21.7

§java_version: JavaVersion§libraries: Box<[Library]>§inherits_from: Option<String>§main_class: String§version_type: String

Implementations§

Trait Implementations§

Source§

impl Debug for Root

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Root

§

impl RefUnwindSafe for Root

§

impl Send for Root

§

impl Sync for Root

§

impl Unpin for Root

§

impl UnwindSafe for Root

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.