use serde::{Deserialize, Serialize};
use std::fmt;
pub mod backup;
pub mod docker_compose;
pub const DEFAULT_MINECRAFT_PORT: u16 = 25565;
pub trait Server: fmt::Debug + Serialize + for<'de> Deserialize<'de> {
type SetupError;
type StartStopError;
fn setup() -> Result<Self, Self::SetupError>;
fn start(&self) -> Result<(), Self::StartStopError>;
fn stop(&self) -> Result<(), Self::StartStopError>;
fn status(&self) -> Result<(), !> {
todo!("Querying the server's status isn't yet implemented")
}
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, strum::Display)]
#[serde(rename_all = "lowercase")]
#[strum(serialize_all = "lowercase")]
pub enum Gamemode {
Survival,
Creative,
Hardcore,
Spectator,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, strum::Display)]
#[serde(rename_all = "lowercase")]
#[strum(serialize_all = "lowercase")]
pub enum Difficulty {
Peaceful,
Easy,
Medium,
Hard,
}