mcproto-derive 0.5.0

Derive macros for Minecraft protocol types.
Documentation

mcproto-derive

Derive macros for mcproto-types.

ProtocolEnum

ProtocolEnum derives a numeric Minecraft protocol enum codec for a fieldless Rust enum:

use mcproto_types::{ProtocolEnum, TypeCodec, basic::VarInt};

#[derive(Debug, Clone, Copy, PartialEq, Eq, ProtocolEnum)]
#[protocol_enum(repr = VarInt)]
enum GameMode {
    Survival = 0,
    Creative = 1,
}

let mut encoded = Vec::new();
GameMode::Creative.encode(&mut encoded)?;
assert_eq!(encoded, [0x01]);
# Ok::<(), mcproto_codec::error::CodecError>(())

TypeStructCodec

TypeStructCodec derives a sequential [TypeCodec] implementation for named, tuple, unit, and generic structs. Fields are encoded in declaration order and must implement TypeCodec.

use mcproto_types::{TypeStructCodec, VarInt};

#[derive(TypeStructCodec)]
#[type_struct_codec(kind = TypeStruct)]
struct Pair {
    first: VarInt,
    second: VarInt,
}