aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/src/mc_buf
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-04-28 19:51:31 -0500
committermat <github@matdoes.dev>2022-04-28 19:51:31 -0500
commitb6fb96429c4530530f46e5deb5998f2249e5124e (patch)
tree0fe8a5b2b5823f978d85438c633cbf80fa7ad82d /azalea-protocol/src/mc_buf
parent1ca9caee36fb84e4a34be4d6b11399fcea8e8389 (diff)
downloadazalea-drasl-b6fb96429c4530530f46e5deb5998f2249e5124e.tar.xz
chunk packets work
Diffstat (limited to 'azalea-protocol/src/mc_buf')
-rwxr-xr-xazalea-protocol/src/mc_buf/mod.rs14
-rwxr-xr-xazalea-protocol/src/mc_buf/read.rs2
2 files changed, 8 insertions, 8 deletions
diff --git a/azalea-protocol/src/mc_buf/mod.rs b/azalea-protocol/src/mc_buf/mod.rs
index b69e94c4..4048bae7 100755
--- a/azalea-protocol/src/mc_buf/mod.rs
+++ b/azalea-protocol/src/mc_buf/mod.rs
@@ -3,6 +3,7 @@
mod read;
mod write;
+use packet_macros::{McBufReadable, McBufWritable};
pub use read::{McBufReadable, McBufVarintReadable, Readable};
use std::ops::{Deref, Index};
pub use write::{McBufVarintWritable, McBufWritable, Writable};
@@ -31,17 +32,16 @@ impl From<Vec<u8>> for UnsizedByteArray {
}
}
-/** Represents Java's BitSet, a list of bits. */
+/// Represents Java's BitSet, a list of bits.
+#[derive(Debug, Clone, PartialEq, Eq, Hash, McBufReadable, McBufWritable)]
pub struct BitSet {
data: Vec<u64>,
}
-impl Index<usize> for BitSet {
- type Output = bool;
-
- fn index(&self, index: usize) -> &Self::Output {
- let result = (self.data[index / 64] & (1u64 << (index % 64))) != 0;
- &result
+// the Index trait requires us to return a reference, but we can't do that
+impl BitSet {
+ pub fn index(&self, index: usize) -> bool {
+ (self.data[index / 64] & (1u64 << (index % 64))) != 0
}
}
diff --git a/azalea-protocol/src/mc_buf/read.rs b/azalea-protocol/src/mc_buf/read.rs
index e90b4b10..3d1aa0b3 100755
--- a/azalea-protocol/src/mc_buf/read.rs
+++ b/azalea-protocol/src/mc_buf/read.rs
@@ -8,7 +8,7 @@ use serde::Deserialize;
use tokio::io::{AsyncRead, AsyncReadExt};
use uuid::Uuid;
-use super::{UnsizedByteArray, MAX_STRING_LENGTH};
+use super::{BitSet, UnsizedByteArray, MAX_STRING_LENGTH};
#[async_trait]
pub trait Readable {