aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoey Sacchini <joey@sacchini.net>2020-10-02 12:46:46 -0400
committerJoey Sacchini <joey@sacchini.net>2020-10-02 12:46:46 -0400
commit9b9aa681d3bcf41a22291dff5d243b5fbb108339 (patch)
tree08ee19d486f2b444ac25b462c01ce32679dc0c15 /src
parentb3e6c71ddcd554e0ef350b93feda8a8eb0de76ab (diff)
downloadmcproto-rs-9b9aa681d3bcf41a22291dff5d243b5fbb108339.tar.gz
mcproto-rs-9b9aa681d3bcf41a22291dff5d243b5fbb108339.tar.bz2
mcproto-rs-9b9aa681d3bcf41a22291dff5d243b5fbb108339.zip
fix random generation and make raw packet accept a borrowed slice
Diffstat (limited to 'src')
-rw-r--r--src/nbt.rs7
-rw-r--r--src/protocol.rs8
-rw-r--r--src/test_macros.rs4
-rw-r--r--src/v1_15_2.rs4
4 files changed, 13 insertions, 10 deletions
diff --git a/src/nbt.rs b/src/nbt.rs
index 80c0977..528ce78 100644
--- a/src/nbt.rs
+++ b/src/nbt.rs
@@ -30,8 +30,11 @@ impl NamedTag {
impl TestRandom for NamedTag {
fn test_gen_random() -> Self {
Self {
- name: String::test_gen_random(),
- payload: Tag::test_gen_random(),
+ name: "".to_owned(),
+ payload: Tag::Compound(vec!(Self{
+ name: String::test_gen_random(),
+ payload: Tag::test_gen_random(),
+ })),
}
}
}
diff --git a/src/protocol.rs b/src/protocol.rs
index d3a9af0..98b9740 100644
--- a/src/protocol.rs
+++ b/src/protocol.rs
@@ -30,7 +30,7 @@ impl<T: Clone + fmt::Debug + PartialEq + Serialize> PacketIdentifier for T {}
pub trait Packet<I: PacketIdentifier>: Serialize {
fn id(&self) -> I;
- fn mc_deserialize(raw: RawPacket<I>) -> Result<Self, PacketErr>;
+ fn mc_deserialize(raw: RawPacket<'_, I>) -> Result<Self, PacketErr>;
}
pub enum PacketErr {
@@ -57,9 +57,9 @@ impl fmt::Debug for PacketErr {
impl std::error::Error for PacketErr {}
#[derive(Debug, Clone, PartialEq)]
-pub struct RawPacket<I> {
+pub struct RawPacket<'a, I> {
pub id: I,
- pub data: Vec<u8>,
+ pub data: &'a[u8],
}
pub trait ProtocolType: Serialize + Deserialize {}
@@ -200,7 +200,7 @@ macro_rules! define_protocol {
use crate::Deserialize;
let id = raw.id;
- let data = raw.data.as_slice();
+ let data = raw.data;
match (id.id, id.state, id.direction) {
$(($id, $state, $direction) => Ok($nam($body::mc_deserialize(data).map_err(DeserializeFailed)?.value))),*,
diff --git a/src/test_macros.rs b/src/test_macros.rs
index d8fc76b..a530c3e 100644
--- a/src/test_macros.rs
+++ b/src/test_macros.rs
@@ -13,7 +13,7 @@ macro_rules! packet_test_cases {
let raw_packet = RawPacket {
id: packet.id(),
- data: bytes,
+ data: bytes.as_slice(),
};
let deserialized =
@@ -52,7 +52,7 @@ macro_rules! packet_test_cases {
b.bytes = bytes.len() as u64;
let raw_packet = RawPacket {
id: packet.id(),
- data: bytes,
+ data: bytes.as_slice(),
};
b.iter(|| {
$pnam::mc_deserialize(raw_packet.clone()).expect("deserialize succeeds");
diff --git a/src/v1_15_2.rs b/src/v1_15_2.rs
index df31dab..8c6246b 100644
--- a/src/v1_15_2.rs
+++ b/src/v1_15_2.rs
@@ -1053,8 +1053,8 @@ impl Deserialize for BlockChangeHorizontalPosition {
impl TestRandom for BlockChangeHorizontalPosition {
fn test_gen_random() -> Self {
BlockChangeHorizontalPosition {
- rel_x: rand::random(),
- rel_z: rand::random(),
+ rel_x: rand::random::<u8>() % 16,
+ rel_z: rand::random::<u8>() % 16,
}
}
}