diff --git a/src/lib.rs b/src/lib.rs index 34eaa20..73377a4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -use serde::{Serialize,Deserialize}; +use serde::{Deserialize, Serialize}; use std::collections::HashMap; /// The root object. #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] @@ -12,107 +12,107 @@ pub struct Mcmeta { /// (optional) Section for specifying the overlays, which are sub-packs applied over the "normal" contents of a pack. pub overlays: Option, /// (optional) Only present in resource packs — Contains additional languages to add to the language menu. - pub language: Option> + pub language: Option>, +} +/// Holds the pack information. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaPack { + /// A raw JSON text that appears when hovering over the pack's name in the list given by the `/datapack list` command, or when viewing the pack in the Create World screen. + pub description: Vec, + /// Determines the version(s) of Minecraft that this pack is compatible with. + /// + /// See for a full list of pack format numbers. + pub pack_format: u8, + /// (optional) Describes a range for pack formats that this pack supports. + /// + /// The range has to include the value of [`McmetaPack::pack_format`]. + pub supported_formats: Option, +} +/// Determines the version(s) of Minecraft that this pack is compatible with. +/// +/// See for a full list of pack format numbers. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaPackDescription { + /// The text in the description. + pub text: String, + /// The colour of the text in the description. + pub color: Option, +} +/// (optional) Describes a range for pack formats that this pack supports. +/// +/// The range has to include the value of [`McmetaPack::pack_format`]. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaPackSupportedformats { + /// Minimum Pack format number + pub min_inclusive: u8, + /// Maximum pack format number + pub max_inclusive: u8, } - /// Holds the pack information. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaPack { - /// A raw JSON text that appears when hovering over the pack's name in the list given by the `/datapack list` command, or when viewing the pack in the Create World screen. - pub description: Vec, - /// Determines the version(s) of Minecraft that this pack is compatible with. - /// - /// See for a full list of pack format numbers. - pub pack_format: u8, - /// (optional) Describes a range for pack formats that this pack supports. - /// - /// The range has to include the value of [`McmetaPack::pack_format`]. - pub supported_formats: Option - } - /// Determines the version(s) of Minecraft that this pack is compatible with. - /// - /// See for a full list of pack format numbers. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaPackDescription { - /// The text in the description. - pub text: String, - /// The colour of the text in the description. - pub color: Option - } - /// (optional) Describes a range for pack formats that this pack supports. - /// - /// The range has to include the value of [`McmetaPack::pack_format`]. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaPackSupportedformats { - /// Minimum Pack format number - pub min_inclusive: u8, - /// Maximum pack format number - pub max_inclusive: u8 - } - // I don't what this looks like - /// (optional) Section for selecting experimental features. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaFeatures { - /// List of enabled feature flags. - /// - /// Each item in the Vec is a location of a feature flag. - pub enabled: Vec - } +// I don't what this looks like +/// (optional) Section for selecting experimental features. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaFeatures { + /// List of enabled feature flags. + /// + /// Each item in the Vec is a location of a feature flag. + pub enabled: Vec, +} - // I don't what this looks like - /// (optional) Section for filtering out files from packs applied below this one. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaFilter { - /// Vector of patterns. - /// - /// Any file that matches one of the patterns inside [`McmetaFilter::block`] is treated as if it was not present in the pack at all. - pub block: Vec - } - /// A pattern. - /// - /// Any file that matches one of the patterns inside here is treated as if it was not present in the pack at all. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaFilterBlock { - /// A regular expression for the namespace of files to be filtered out. If unspecified, it applies to every namespace. - pub namespace: String, - /// A regular expression for the paths of files to be filtered out. If unspecified, it applies to every file. - pub path: String - } +// I don't what this looks like +/// (optional) Section for filtering out files from packs applied below this one. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaFilter { + /// Vector of patterns. + /// + /// Any file that matches one of the patterns inside [`McmetaFilter::block`] is treated as if it was not present in the pack at all. + pub block: Vec, +} +/// A pattern. +/// +/// Any file that matches one of the patterns inside here is treated as if it was not present in the pack at all. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaFilterBlock { + /// A regular expression for the namespace of files to be filtered out. If unspecified, it applies to every namespace. + pub namespace: String, + /// A regular expression for the paths of files to be filtered out. If unspecified, it applies to every file. + pub path: String, +} - // I don't what this looks like - /// (optional) Section for specifying the overlays, which are sub-packs applied over the "normal" contents of a pack. - /// - /// Their directories have their own assets and data directories, and are placed in the pack's root directory. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaOverlays { - /// Vector of overlays. The order is important, as the first in the list is applied first. - pub entries: Vec - } - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - /// An overlay. - pub struct McmetaOverlaysEntries { - /// Describes a range for pack formats when this overlay should be active. - pub formats: McmetaOverlaysEntriesFormats, - /// The directory to overlay for the respective versions (allowed characters: a-z, 0-9, _ and -). In this directory, pack.mcmeta and pack.png are ignored. - pub directory: String - } - /// Describes a range for pack formats when this overlay should be active. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaOverlaysEntriesFormats { - /// Minimum Pack format number. - pub min_inclusive: u8, - /// Maximum Pack format number. - pub max_inclusive: u8 - } +// I don't what this looks like +/// (optional) Section for specifying the overlays, which are sub-packs applied over the "normal" contents of a pack. +/// +/// Their directories have their own assets and data directories, and are placed in the pack's root directory. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaOverlays { + /// Vector of overlays. The order is important, as the first in the list is applied first. + pub entries: Vec, +} +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +/// An overlay. +pub struct McmetaOverlaysEntries { + /// Describes a range for pack formats when this overlay should be active. + pub formats: McmetaOverlaysEntriesFormats, + /// The directory to overlay for the respective versions (allowed characters: a-z, 0-9, _ and -). In this directory, pack.mcmeta and pack.png are ignored. + pub directory: String, +} +/// Describes a range for pack formats when this overlay should be active. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaOverlaysEntriesFormats { + /// Minimum Pack format number. + pub min_inclusive: u8, + /// Maximum Pack format number. + pub max_inclusive: u8, +} - // I don't what this looks like - /// (optional) Only present in resource packs — Contains additional languages to add to the language menu. - #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] - pub struct McmetaLanguage { - /// The full name of the language - pub name: String, - /// The country or region name - pub region: String, - /// If true, the language reads right to left. - pub bidirectional: bool - } \ No newline at end of file +// I don't what this looks like +/// (optional) Only present in resource packs — Contains additional languages to add to the language menu. +#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] +pub struct McmetaLanguage { + /// The full name of the language + pub name: String, + /// The country or region name + pub region: String, + /// If true, the language reads right to left. + pub bidirectional: bool, +}