aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xazalea-client/src/connect.rs2
-rwxr-xr-xazalea-protocol/README.md2
-rwxr-xr-xazalea-protocol/src/lib.rs2
-rwxr-xr-xazalea-protocol/src/mc_buf/read.rs12
-rwxr-xr-xazalea-protocol/src/mc_buf/write.rs8
-rwxr-xr-xazalea-protocol/src/read.rs4
-rw-r--r--bot/src/main.rs2
7 files changed, 28 insertions, 4 deletions
diff --git a/azalea-client/src/connect.rs b/azalea-client/src/connect.rs
index bf8692bd..2aa25f2d 100755
--- a/azalea-client/src/connect.rs
+++ b/azalea-client/src/connect.rs
@@ -215,7 +215,7 @@ impl Client {
println!("Got chunk cache center packet {:?}", p);
}
GamePacket::ClientboundLevelChunkWithLightPacket(p) => {
- println!("Got chunk with light packet");
+ println!("Got chunk with light packet {} {}", p.x, p.z);
}
GamePacket::ClientboundLightUpdatePacket(p) => {
println!("Got light update packet {:?}", p);
diff --git a/azalea-protocol/README.md b/azalea-protocol/README.md
index 69b28bef..99b8b8d2 100755
--- a/azalea-protocol/README.md
+++ b/azalea-protocol/README.md
@@ -5,3 +5,5 @@ Sent and receive Minecraft packets. You should probably use `azalea` or `azalea-
The goal is to **only** support the latest Minecraft version in order to ease development.
This is not yet complete, search for `TODO` in the code for things that need to be done.
+
+Unfortunately, compiling the crate requires Rust nightly because specialization is not stable yet.
diff --git a/azalea-protocol/src/lib.rs b/azalea-protocol/src/lib.rs
index 684add45..3573894c 100755
--- a/azalea-protocol/src/lib.rs
+++ b/azalea-protocol/src/lib.rs
@@ -1,5 +1,7 @@
//! This lib is responsible for parsing Minecraft packets.
+#![feature(min_specialization)]
+
use std::net::IpAddr;
use std::str::FromStr;
diff --git a/azalea-protocol/src/mc_buf/read.rs b/azalea-protocol/src/mc_buf/read.rs
index 3d1aa0b3..a0e3e79f 100755
--- a/azalea-protocol/src/mc_buf/read.rs
+++ b/azalea-protocol/src/mc_buf/read.rs
@@ -272,7 +272,7 @@ impl McBufReadable for UnsizedByteArray {
#[async_trait]
impl<T: McBufReadable + Send> McBufReadable for Vec<T> {
- async fn read_into<R>(buf: &mut R) -> Result<Self, String>
+ default async fn read_into<R>(buf: &mut R) -> Result<Self, String>
where
R: AsyncRead + std::marker::Unpin + std::marker::Send,
{
@@ -285,6 +285,16 @@ impl<T: McBufReadable + Send> McBufReadable for Vec<T> {
}
}
+#[async_trait]
+impl McBufReadable for Vec<u8> {
+ async fn read_into<R>(buf: &mut R) -> Result<Self, String>
+ where
+ R: AsyncRead + std::marker::Unpin + std::marker::Send,
+ {
+ buf.read_byte_array().await
+ }
+}
+
// string
#[async_trait]
impl McBufReadable for String {
diff --git a/azalea-protocol/src/mc_buf/write.rs b/azalea-protocol/src/mc_buf/write.rs
index bd5e3f52..4c7ac60c 100755
--- a/azalea-protocol/src/mc_buf/write.rs
+++ b/azalea-protocol/src/mc_buf/write.rs
@@ -212,11 +212,17 @@ impl McBufWritable for UnsizedByteArray {
// TODO: use specialization when that gets stabilized into rust
// to optimize for Vec<u8> byte arrays
impl<T: McBufWritable> McBufWritable for Vec<T> {
- fn write_into(&self, buf: &mut Vec<u8>) -> Result<(), std::io::Error> {
+ default fn write_into(&self, buf: &mut Vec<u8>) -> Result<(), std::io::Error> {
buf.write_list(self, |buf, i| T::write_into(i, buf))
}
}
+impl McBufWritable for Vec<u8> {
+ fn write_into(&self, buf: &mut Vec<u8>) -> Result<(), std::io::Error> {
+ buf.write_byte_array(self)
+ }
+}
+
// string
impl McBufWritable for String {
fn write_into(&self, buf: &mut Vec<u8>) -> Result<(), std::io::Error> {
diff --git a/azalea-protocol/src/read.rs b/azalea-protocol/src/read.rs
index 88fe95cf..4f8b52af 100755
--- a/azalea-protocol/src/read.rs
+++ b/azalea-protocol/src/read.rs
@@ -149,7 +149,11 @@ where
if let Some(compression_threshold) = compression_threshold {
buf = compression_decoder(&mut buf.as_slice(), compression_threshold).await?;
}
+
+ let start_time = std::time::Instant::now();
+ println!("decoding packet");
let packet = packet_decoder(&mut buf.as_slice(), flow).await?;
+ println!("decoded packet in {}ms", start_time.elapsed().as_millis());
Ok(packet)
}
diff --git a/bot/src/main.rs b/bot/src/main.rs
index 3daaa160..89c23a6f 100644
--- a/bot/src/main.rs
+++ b/bot/src/main.rs
@@ -5,7 +5,7 @@ async fn main() {
println!("Hello, world!");
// let address = "95.111.249.143:10000";
- let address = "localhost:50332";
+ let address = "localhost:58422";
// let response = azalea_client::ping::ping_server(&address.try_into().unwrap())
// .await
// .unwrap();