3 #[mt_derive(to = "clt", repr = "u8", enumset)]
4 pub enum MapBlockFlag {
11 pub const ALWAYS_LIT_FROM: u16 = 0xf000;
13 pub const CONTENT_UNKNOWN: u16 = 125;
14 pub const CONTENT_AIR: u16 = 126;
15 pub const CONTENT_IGNORE: u16 = 127;
17 #[mt_derive(to = "clt")]
18 pub struct NodeMetaField {
24 #[mt_derive(to = "clt")]
27 fields: HashMap<String, NodeMetaField>,
32 pub struct NodeMetasLen;
34 #[cfg(any(feature = "client", feature = "server"))]
35 impl MtCfg for NodeMetasLen {
36 type Len = <DefCfg as MtCfg>::Len;
37 type Inner = <DefCfg as MtCfg>::Inner;
41 writer: &mut impl std::io::Write,
42 ) -> Result<(), mt_ser::SerializeError> {
44 0u8.mt_serialize::<DefCfg>(writer)
46 2u8.mt_serialize::<DefCfg>(writer)?;
47 DefCfg::write_len(len, writer)
51 fn read_len(reader: &mut impl std::io::Read) -> Result<Self::Len, mt_ser::DeserializeError> {
52 match u8::mt_deserialize::<DefCfg>(reader)? {
54 2 => DefCfg::read_len(reader),
55 x => Err(mt_ser::DeserializeError::InvalidEnum(
63 #[mt_derive(to = "clt")]
65 pub flags: EnumSet<MapBlockFlag>,
67 #[mt(const_before = "2u8")] // param0 size
68 #[mt(const_before = "2u8")] // param1 size + param2 size
69 #[serde(with = "serde_arrays")]
70 pub param_0: [u16; 4096],
71 #[serde(with = "serde_arrays")]
72 pub param_1: [u8; 4096],
73 #[serde(with = "serde_arrays")]
74 pub param_2: [u8; 4096],
75 #[mt(len = "NodeMetasLen")]
76 pub metas: HashMap<u16, NodeMeta>,