200 lines
9.5 KiB
Rust
200 lines
9.5 KiB
Rust
use quote::{ToTokens, format_ident, quote};
|
|
use syn::Ident;
|
|
|
|
/// Represents a specific version of the Minecraft Java Edition protocol.
|
|
/// from pumpkin_util::version::JavaMinecraftVersion
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
|
#[allow(non_camel_case_types)]
|
|
#[allow(dead_code)]
|
|
pub enum JavaMinecraftVersion {
|
|
/// 1.7.2: The Update That Changed The World
|
|
V_1_7_2,
|
|
V_1_7_6,
|
|
/// 1.8: The Bountiful Update
|
|
V_1_8,
|
|
/// 1.9: The Combat Update
|
|
V_1_9,
|
|
V_1_9_1,
|
|
V_1_9_2,
|
|
V_1_9_3,
|
|
/// 1.10: The Frostburn Update
|
|
V_1_10,
|
|
/// 1.11: The Exploration Update
|
|
V_1_11,
|
|
V_1_11_1,
|
|
/// 1.12: The World of Color Update
|
|
V_1_12,
|
|
V_1_12_1,
|
|
V_1_12_2,
|
|
/// 1.13: Update Aquatic
|
|
V_1_13,
|
|
V_1_13_1,
|
|
V_1_13_2,
|
|
/// 1.14: Village & Pillage
|
|
V_1_14,
|
|
V_1_14_1,
|
|
V_1_14_2,
|
|
V_1_14_3,
|
|
V_1_14_4,
|
|
/// 1.15: Buzzy Bees
|
|
V_1_15,
|
|
V_1_15_1,
|
|
V_1_15_2,
|
|
/// 1.16: Nether Update
|
|
V_1_16,
|
|
V_1_16_1,
|
|
V_1_16_2,
|
|
V_1_16_3,
|
|
V_1_16_4,
|
|
/// 1.17: Caves & Cliffs: Part I
|
|
V_1_17,
|
|
V_1_17_1,
|
|
/// 1.18: Caves & Cliffs: Part II
|
|
V_1_18,
|
|
V_1_18_2,
|
|
/// 1.19: The Wild Update
|
|
V_1_19,
|
|
V_1_19_1,
|
|
V_1_19_3,
|
|
V_1_19_4,
|
|
/// 1.20: Trails & Tales
|
|
V_1_20,
|
|
V_1_20_2,
|
|
V_1_20_3,
|
|
/// 1.20.5: Armored Paws
|
|
V_1_20_5,
|
|
/// 1.21: Tricky Trials
|
|
V_1_21,
|
|
V_1_21_2,
|
|
V_1_21_4,
|
|
/// 1.21.5: Bundles of Bravery
|
|
V_1_21_5,
|
|
V_1_21_6,
|
|
V_1_21_7,
|
|
V_1_21_9,
|
|
V_1_21_11,
|
|
V_26_1,
|
|
V_26_2,
|
|
}
|
|
|
|
impl JavaMinecraftVersion {
|
|
/// Converts this version to a snake_case `Ident` suitable for use as a struct field name.
|
|
///
|
|
/// # Returns
|
|
/// A `syn::Ident` like `v1_21_4` for `JavaMinecraftVersion::V_1_21_4`.
|
|
pub fn to_field_ident(self) -> Ident {
|
|
match self {
|
|
Self::V_1_7_2 => format_ident!("v1_7_2"),
|
|
Self::V_1_7_6 => format_ident!("v1_7_6"),
|
|
Self::V_1_8 => format_ident!("v1_8"),
|
|
Self::V_1_9 => format_ident!("v1_9"),
|
|
Self::V_1_9_1 => format_ident!("v1_9_1"),
|
|
Self::V_1_9_2 => format_ident!("v1_9_2"),
|
|
Self::V_1_9_3 => format_ident!("v1_9_3"),
|
|
Self::V_1_10 => format_ident!("v1_10"),
|
|
Self::V_1_11 => format_ident!("v1_11"),
|
|
Self::V_1_11_1 => format_ident!("v1_11_1"),
|
|
Self::V_1_12 => format_ident!("v1_12"),
|
|
Self::V_1_12_1 => format_ident!("v1_12_1"),
|
|
Self::V_1_12_2 => format_ident!("v1_12_2"),
|
|
Self::V_1_13 => format_ident!("v1_13"),
|
|
Self::V_1_13_1 => format_ident!("v1_13_1"),
|
|
Self::V_1_13_2 => format_ident!("v1_13_2"),
|
|
Self::V_1_14 => format_ident!("v1_14"),
|
|
Self::V_1_14_1 => format_ident!("v1_14_1"),
|
|
Self::V_1_14_2 => format_ident!("v1_14_2"),
|
|
Self::V_1_14_3 => format_ident!("v1_14_3"),
|
|
Self::V_1_14_4 => format_ident!("v1_14_4"),
|
|
Self::V_1_15 => format_ident!("v1_15"),
|
|
Self::V_1_15_1 => format_ident!("v1_15_1"),
|
|
Self::V_1_15_2 => format_ident!("v1_15_2"),
|
|
Self::V_1_16 => format_ident!("v1_16"),
|
|
Self::V_1_16_1 => format_ident!("v1_16_1"),
|
|
Self::V_1_16_2 => format_ident!("v1_16_2"),
|
|
Self::V_1_16_3 => format_ident!("v1_16_3"),
|
|
Self::V_1_16_4 => format_ident!("v1_16_4"),
|
|
Self::V_1_17 => format_ident!("v1_17"),
|
|
Self::V_1_17_1 => format_ident!("v1_17_1"),
|
|
Self::V_1_18 => format_ident!("v1_18"),
|
|
Self::V_1_18_2 => format_ident!("v1_18_2"),
|
|
Self::V_1_19 => format_ident!("v1_19"),
|
|
Self::V_1_19_1 => format_ident!("v1_19_1"),
|
|
Self::V_1_19_3 => format_ident!("v1_19_3"),
|
|
Self::V_1_19_4 => format_ident!("v1_19_4"),
|
|
Self::V_1_20 => format_ident!("v1_20"),
|
|
Self::V_1_20_2 => format_ident!("v1_20_2"),
|
|
Self::V_1_20_3 => format_ident!("v1_20_3"),
|
|
Self::V_1_20_5 => format_ident!("v1_20_5"),
|
|
Self::V_1_21 => format_ident!("v1_21"),
|
|
Self::V_1_21_2 => format_ident!("v1_21_2"),
|
|
Self::V_1_21_4 => format_ident!("v1_21_4"),
|
|
Self::V_1_21_5 => format_ident!("v1_21_5"),
|
|
Self::V_1_21_6 => format_ident!("v1_21_6"),
|
|
Self::V_1_21_7 => format_ident!("v1_21_7"),
|
|
Self::V_1_21_9 => format_ident!("v1_21_9"),
|
|
Self::V_1_21_11 => format_ident!("v1_21_11"),
|
|
Self::V_26_1 => format_ident!("v26_1"),
|
|
Self::V_26_2 => format_ident!("v26_2"),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ToTokens for JavaMinecraftVersion {
|
|
/// Emits a fully-qualified `pumpkin_util::version::JavaMinecraftVersion::V_x_y_z` token stream.
|
|
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
|
|
tokens.extend(match self {
|
|
Self::V_1_7_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_7_2 },
|
|
Self::V_1_7_6 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_7_6 },
|
|
Self::V_1_8 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_8 },
|
|
Self::V_1_9 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_9 },
|
|
Self::V_1_9_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_9_1 },
|
|
Self::V_1_9_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_9_2 },
|
|
Self::V_1_9_3 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_9_3 },
|
|
Self::V_1_10 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_10 },
|
|
Self::V_1_11 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_11 },
|
|
Self::V_1_11_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_11_1 },
|
|
Self::V_1_12 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_12 },
|
|
Self::V_1_12_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_12_1 },
|
|
Self::V_1_12_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_12_2 },
|
|
Self::V_1_13 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_13 },
|
|
Self::V_1_13_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_13_1 },
|
|
Self::V_1_13_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_13_2 },
|
|
Self::V_1_14 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_14 },
|
|
Self::V_1_14_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_14_1 },
|
|
Self::V_1_14_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_14_2 },
|
|
Self::V_1_14_3 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_14_3 },
|
|
Self::V_1_14_4 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_14_4 },
|
|
Self::V_1_15 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_15 },
|
|
Self::V_1_15_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_15_1 },
|
|
Self::V_1_15_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_15_2 },
|
|
Self::V_1_16 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_16 },
|
|
Self::V_1_16_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_16_1 },
|
|
Self::V_1_16_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_16_2 },
|
|
Self::V_1_16_3 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_16_3 },
|
|
Self::V_1_16_4 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_16_4 },
|
|
Self::V_1_17 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_17 },
|
|
Self::V_1_17_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_17_1 },
|
|
Self::V_1_18 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_18 },
|
|
Self::V_1_18_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_18_2 },
|
|
Self::V_1_19 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_19 },
|
|
Self::V_1_19_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_19_1 },
|
|
Self::V_1_19_3 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_19_3 },
|
|
Self::V_1_19_4 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_19_4 },
|
|
Self::V_1_20 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_20 },
|
|
Self::V_1_20_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_20_2 },
|
|
Self::V_1_20_3 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_20_3 },
|
|
Self::V_1_20_5 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_20_5 },
|
|
Self::V_1_21 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_21 },
|
|
Self::V_1_21_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_21_2 },
|
|
Self::V_1_21_4 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_21_4 },
|
|
Self::V_1_21_5 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_21_5 },
|
|
Self::V_1_21_6 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_21_6 },
|
|
Self::V_1_21_7 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_21_7 },
|
|
Self::V_1_21_9 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_21_9 },
|
|
Self::V_1_21_11 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_1_21_11 },
|
|
Self::V_26_1 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_26_1 },
|
|
Self::V_26_2 => quote! { pumpkin_util::version::JavaMinecraftVersion::V_26_2 },
|
|
});
|
|
}
|
|
}
|