aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2021-12-10 02:06:33 +0000
committermat <github@matdoes.dev>2021-12-10 02:06:33 +0000
commitf64750afdd9b18379f706df66c32806b6d21bbe8 (patch)
tree1064901f29d95d7bb4ecfef37379900704489f6a
parent966471f740ea7cb19e7106000a9f3cf9d306fd32 (diff)
downloadazalea-drasl-f64750afdd9b18379f706df66c32806b6d21bbe8.tar.xz
commit files
-rw-r--r--minecraft-protocol/src/packets/game/mod.rs1
-rw-r--r--minecraft-protocol/src/packets/handshake/client_intention_packet.rs30
-rw-r--r--minecraft-protocol/src/packets/handshake/mod.rs1
-rw-r--r--minecraft-protocol/src/packets/login/mod.rs1
-rw-r--r--minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs28
-rw-r--r--minecraft-protocol/src/packets/status/mod.rs2
-rw-r--r--minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs18
7 files changed, 81 insertions, 0 deletions
diff --git a/minecraft-protocol/src/packets/game/mod.rs b/minecraft-protocol/src/packets/game/mod.rs
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/minecraft-protocol/src/packets/game/mod.rs
@@ -0,0 +1 @@
+
diff --git a/minecraft-protocol/src/packets/handshake/client_intention_packet.rs b/minecraft-protocol/src/packets/handshake/client_intention_packet.rs
new file mode 100644
index 00000000..7dd358eb
--- /dev/null
+++ b/minecraft-protocol/src/packets/handshake/client_intention_packet.rs
@@ -0,0 +1,30 @@
+use std::hash::Hash;
+
+use crate::{
+ mc_buf,
+ packets::{ConnectionProtocol, Packet, PacketTrait},
+};
+
+#[derive(Hash)]
+pub struct ClientIntentionPacket<'a> {
+ pub protocol_version: u32,
+ pub hostname: &'a String,
+ pub port: u16,
+ /// 1 for status, 2 for login
+ pub intention: ConnectionProtocol,
+}
+
+impl<'a> PacketTrait for ClientIntentionPacket<'a> {
+ fn get(&self) -> Packet {
+ Packet::ClientIntentionPacket(self)
+ }
+
+ fn write(&self, buf: &mut Vec<u8>) {
+ mc_buf::write_varint(buf, self.protocol_version as i32);
+ mc_buf::write_utf(buf, &self.hostname);
+ mc_buf::write_short(buf, self.port);
+ mc_buf::write_varint(buf, self.intention.clone() as i32);
+ }
+
+ fn parse<T: tokio::io::AsyncRead + std::marker::Unpin>(&self, buf: T) -> () {}
+}
diff --git a/minecraft-protocol/src/packets/handshake/mod.rs b/minecraft-protocol/src/packets/handshake/mod.rs
new file mode 100644
index 00000000..667b00f2
--- /dev/null
+++ b/minecraft-protocol/src/packets/handshake/mod.rs
@@ -0,0 +1 @@
+pub mod client_intention_packet;
diff --git a/minecraft-protocol/src/packets/login/mod.rs b/minecraft-protocol/src/packets/login/mod.rs
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/minecraft-protocol/src/packets/login/mod.rs
@@ -0,0 +1 @@
+
diff --git a/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs b/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs
new file mode 100644
index 00000000..ada86667
--- /dev/null
+++ b/minecraft-protocol/src/packets/status/clientbound_status_response_packet.rs
@@ -0,0 +1,28 @@
+use async_trait::async_trait;
+use std::hash::Hash;
+
+use crate::{
+ mc_buf,
+ packets::{Packet, PacketTrait},
+};
+
+#[derive(Hash)]
+pub struct ClientboundStatusRequestPacket {
+ status: String,
+}
+
+impl PacketTrait for ClientboundStatusRequestPacket {
+ fn get(&self) -> Packet {
+ Packet::ClientboundStatusRequestPacket(self)
+ }
+
+ fn write(&self, _buf: &mut Vec<u8>) {}
+
+ fn parse<T: tokio::io::AsyncRead + std::marker::Unpin>(
+ buf: &mut T,
+ ) -> Result<Packet<'_>, String> {
+ let status = mc_buf::read_utf(&mut buf).await?;
+ // this.status = GsonHelper.fromJson(GSON, friendlyByteBuf.readUtf(32767), ServerStatus.class);
+ Ok(ClientboundStatusRequestPacket { status }.get())
+ }
+}
diff --git a/minecraft-protocol/src/packets/status/mod.rs b/minecraft-protocol/src/packets/status/mod.rs
new file mode 100644
index 00000000..efc03631
--- /dev/null
+++ b/minecraft-protocol/src/packets/status/mod.rs
@@ -0,0 +1,2 @@
+pub mod clientbound_status_response_packet;
+pub mod serverbound_status_request_packet;
diff --git a/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs b/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs
new file mode 100644
index 00000000..f2e6fe9a
--- /dev/null
+++ b/minecraft-protocol/src/packets/status/serverbound_status_request_packet.rs
@@ -0,0 +1,18 @@
+use std::hash::Hash;
+
+use crate::{
+ mc_buf,
+ packets::{Packet, PacketTrait},
+};
+
+#[derive(Hash)]
+pub struct ServerboundStatusRequestPacket {}
+
+// implement "Packet" for "ClientIntentionPacket"
+impl PacketTrait for ServerboundStatusRequestPacket {
+ fn get(&self) -> Packet {
+ Packet::ServerboundStatusRequestPacket(self)
+ }
+ fn write(&self, _buf: &mut Vec<u8>) {}
+ fn parse<T: tokio::io::AsyncRead + std::marker::Unpin>(&self, buf: T) -> () {}
+}