#[cfg(feature = "backup")]
mod backup;
#[cfg(not(feature = "fabric"))]
mod install;
#[cfg(not(feature = "fabric"))]
mod launch;
mod paths;
mod remove;
mod version_data;
#[cfg(feature = "log-files")]
mod log_files;
#[cfg(feature = "resourcepacks")]
mod resourcepacks;
#[cfg(feature = "save-games")]
mod save_games;
#[cfg(feature = "screenshots")]
mod screenshots;
#[cfg(feature = "servers")]
mod servers;
#[cfg(feature = "fabric")]
mod fabric;
#[cfg(feature = "loader-mods")]
mod loader_mods;
#[cfg(feature = "shaderpacks")]
mod shaderpacks;
use derive_builder::Builder;
use std::path::PathBuf;
use time::OffsetDateTime;
use uuid::Uuid;
#[derive(serde::Deserialize, serde::Serialize, Builder, Clone, Debug)]
pub struct Instance {
#[builder(default = "Uuid::new_v4()")]
pub uuid: Uuid,
#[builder(setter(into))]
pub name: String,
#[builder(setter(into, strip_option), default)]
pub description: Option<String>,
#[builder(setter(into))]
pub version: String,
#[builder(setter(into))]
pub instance_path: PathBuf,
#[builder(setter(into))]
pub libraries_path: PathBuf,
#[builder(setter(into))]
pub assets_path: PathBuf,
#[builder(default)]
pub fullscreen: bool,
#[builder(default)]
pub enable_custom_window_size: bool,
#[builder(default = "1280")]
pub custom_width: u32,
#[builder(default = "720")]
pub custom_height: u32,
#[builder(default)]
pub enable_custom_memory: bool,
#[builder(default = "1024")]
pub custom_min_memory: u32,
#[builder(default = "2048")]
pub custom_max_memory: u32,
#[builder(setter(into, strip_option), default)]
pub custom_java_executable: Option<String>,
#[builder(setter(into, strip_option), default)]
pub custom_jvm_arguments: Option<String>,
#[builder(default)]
pub environment_variables: Vec<(String, Option<String>)>,
#[builder(default)]
pub installed: bool,
#[builder(default = "OffsetDateTime::now_utc()")]
#[cfg_attr(feature = "serde", serde(with = "time::serde::rfc3339"))]
pub created: OffsetDateTime,
#[cfg_attr(doc_cfg, doc(cfg(feature = "fabric")))]
#[cfg(feature = "fabric")]
#[builder(default)]
#[cfg_attr(feature = "serde", serde(default))]
pub fabric_version: Option<String>,
}