aboutsummaryrefslogtreecommitdiff
path: root/minecraft-protocol/src/packets
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2021-12-06 00:28:40 -0600
committermat <github@matdoes.dev>2021-12-06 00:28:40 -0600
commit5029a09963b5753c1f9b7f777f28e1c0951343e7 (patch)
tree2e0e37029bf031adc3e28713828e7d4be7336ccb /minecraft-protocol/src/packets
downloadazalea-drasl-5029a09963b5753c1f9b7f777f28e1c0951343e7.tar.xz
Initial commit
Diffstat (limited to 'minecraft-protocol/src/packets')
-rw-r--r--minecraft-protocol/src/packets/client_intention_packet.rs21
-rw-r--r--minecraft-protocol/src/packets/mod.rs27
2 files changed, 48 insertions, 0 deletions
diff --git a/minecraft-protocol/src/packets/client_intention_packet.rs b/minecraft-protocol/src/packets/client_intention_packet.rs
new file mode 100644
index 00000000..fdbd9468
--- /dev/null
+++ b/minecraft-protocol/src/packets/client_intention_packet.rs
@@ -0,0 +1,21 @@
+use crate::friendly_byte_buf::FriendlyByteBuf;
+
+use super::{ConnectionProtocol, Packet};
+
+pub struct ClientIntentionPacket {
+ protocol_version: u32,
+ hostname: String,
+ port: u16,
+ intention: ConnectionProtocol,
+}
+
+// implement "Packet" for "ClientIntentionPacket"
+impl Packet for ClientIntentionPacket {
+ // implement "from_reader" for "ClientIntentionPacket"
+ fn write(&self, buf: &mut FriendlyByteBuf) {
+ buf.write_varint(self.protocol_version);
+ buf.write_utf(&self.hostname);
+ buf.write_short(self.port);
+ buf.write_varint(self.intention.clone() as u32);
+ }
+}
diff --git a/minecraft-protocol/src/packets/mod.rs b/minecraft-protocol/src/packets/mod.rs
new file mode 100644
index 00000000..530a1b4b
--- /dev/null
+++ b/minecraft-protocol/src/packets/mod.rs
@@ -0,0 +1,27 @@
+pub mod client_intention_packet;
+
+use crate::friendly_byte_buf::FriendlyByteBuf;
+
+#[derive(Debug, Clone, PartialEq)]
+pub enum ConnectionProtocol {
+ Handshaking = -1,
+ Play = 0,
+ Status = 1,
+ Login = 2,
+}
+
+pub trait Packet {
+ fn write(&self, friendly_byte_buf: &mut FriendlyByteBuf) -> ();
+}
+
+struct PacketSet<'a> {
+ pub packets: Vec<&'a dyn Packet>,
+}
+
+impl<'a> PacketSet<'a> {
+ fn add_packet(&mut self, packet: &'a dyn Packet) {
+ self.packets.push(packet);
+ }
+}
+
+// PacketSet