#![allow(
unused_imports,
unused_variables,
unused_mut,
unused_parens,
unused_braces,
clippy::all,
clippy::pedantic,
non_camel_case_types,
non_snake_case
)]
use crate::codec::{Decode, DecodeResult, Encode, EncodeResult, McWrite, Reader, decode_exact};
use crate::error::{DecodeError, EncodeError};
use crate::nbt::RawNbt;
use crate::packet::{Direction, PacketSet, RawPacket, State};
#[cfg(feature = "testgen")]
use crate::testgen::{Gen, Generate};
use crate::types::{BlockPos, ByteString, PositionLayout, Uuid};
use crate::v1_8::types;
use bytes::{BufMut, Bytes, BytesMut};
pub mod id {
pub const SERVER_INFO: i32 = 0x00;
pub const PING: i32 = 0x01;
}
#[derive(Debug, Clone, PartialEq)]
pub struct ServerInfo {
pub response: ByteString,
}
impl crate::packet::Packet for ServerInfo {
const ID: i32 = id::SERVER_INFO;
const NAME: &'static str = "server_info";
const STATE: State = State::Status;
const DIRECTION: Direction = Direction::Clientbound;
}
impl Decode for ServerInfo {
fn decode(r: &mut Reader<'_>) -> DecodeResult<Self> {
Ok({
let v11 = r.read_string()?;
ServerInfo { response: v11 }
})
}
}
impl Encode for ServerInfo {
fn encode(&self, w: &mut BytesMut) -> EncodeResult {
w.put_string(&(*self).response)?;
Ok(())
}
}
#[cfg(feature = "testgen")]
impl Generate for ServerInfo {
fn generate(g: &mut Gen) -> Self {
{
let v12 = g.string();
ServerInfo { response: v12 }
}
}
}
impl From<ServerInfo> for ClientboundStatusPacket {
fn from(p: ServerInfo) -> Self {
Self::ServerInfo(p)
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct Ping {
pub time: i64,
}
impl crate::packet::Packet for Ping {
const ID: i32 = id::PING;
const NAME: &'static str = "ping";
const STATE: State = State::Status;
const DIRECTION: Direction = Direction::Clientbound;
}
impl Decode for Ping {
fn decode(r: &mut Reader<'_>) -> DecodeResult<Self> {
Ok({
let v13 = r.read_i64()?;
Ping { time: v13 }
})
}
}
impl Encode for Ping {
fn encode(&self, w: &mut BytesMut) -> EncodeResult {
w.put_i64((*self).time);
Ok(())
}
}
#[cfg(feature = "testgen")]
impl Generate for Ping {
fn generate(g: &mut Gen) -> Self {
{
let v14 = g.i64();
Ping { time: v14 }
}
}
}
impl From<Ping> for ClientboundStatusPacket {
fn from(p: Ping) -> Self {
Self::Ping(p)
}
}
#[derive(Debug, Clone, PartialEq)]
pub enum ClientboundStatusPacket {
ServerInfo(ServerInfo),
Ping(Ping),
}
impl PacketSet for ClientboundStatusPacket {
const STATE: State = State::Status;
const DIRECTION: Direction = Direction::Clientbound;
fn decode_raw(raw: &RawPacket) -> DecodeResult<Self> {
match raw.id {
id::SERVER_INFO => decode_exact(&raw.body).map(Self::ServerInfo),
id::PING => decode_exact(&raw.body).map(Self::Ping),
other => Err(DecodeError::UnknownPacketId(other)),
}
}
fn id(&self) -> i32 {
match *self {
Self::ServerInfo(_) => id::SERVER_INFO,
Self::Ping(_) => id::PING,
}
}
fn name(&self) -> &'static str {
match *self {
Self::ServerInfo(_) => "server_info",
Self::Ping(_) => "ping",
}
}
fn encode_body(&self, w: &mut BytesMut) -> EncodeResult {
match *self {
Self::ServerInfo(ref p) => p.encode(w),
Self::Ping(ref p) => p.encode(w),
}
}
fn name_of(id: i32) -> Option<&'static str> {
match id {
id::SERVER_INFO => Some("server_info"),
id::PING => Some("ping"),
_ => None,
}
}
}
impl ClientboundStatusPacket {
pub const IDS: &'static [i32] = &[id::SERVER_INFO, id::PING];
#[cfg(feature = "testgen")]
pub fn generate_by_id(id: i32, g: &mut Gen) -> Option<Self> {
match id {
id::SERVER_INFO => Some(Self::ServerInfo(<ServerInfo as Generate>::generate(g))),
id::PING => Some(Self::Ping(<Ping as Generate>::generate(g))),
_ => None,
}
}
}