aboutsummaryrefslogtreecommitdiff
path: root/minecraft-protocol/src/packets
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2021-12-06 18:51:26 +0000
committermat <github@matdoes.dev>2021-12-06 18:51:26 +0000
commit544c8a33940572eb7ad36eeafa94f8a64a1e23bc (patch)
tree53dcb96d46256347ff86717e8d4ad864f82a1794 /minecraft-protocol/src/packets
parentc4e7873a5050dc94f9eeba7058ffad8f82d5c6f1 (diff)
downloadazalea-drasl-544c8a33940572eb7ad36eeafa94f8a64a1e23bc.tar.xz
ids are stored in packets themselves
Diffstat (limited to 'minecraft-protocol/src/packets')
-rw-r--r--minecraft-protocol/src/packets/client_intention_packet.rs7
-rw-r--r--minecraft-protocol/src/packets/mod.rs20
2 files changed, 14 insertions, 13 deletions
diff --git a/minecraft-protocol/src/packets/client_intention_packet.rs b/minecraft-protocol/src/packets/client_intention_packet.rs
index fdbd9468..a9a4d86a 100644
--- a/minecraft-protocol/src/packets/client_intention_packet.rs
+++ b/minecraft-protocol/src/packets/client_intention_packet.rs
@@ -1,16 +1,22 @@
+use std::hash::Hash;
+
use crate::friendly_byte_buf::FriendlyByteBuf;
use super::{ConnectionProtocol, Packet};
+#[derive(Hash)]
pub struct ClientIntentionPacket {
protocol_version: u32,
hostname: String,
port: u16,
+ /// 1 for status, 2 for login
intention: ConnectionProtocol,
}
// implement "Packet" for "ClientIntentionPacket"
impl Packet for ClientIntentionPacket {
+ const ID: u8 = 0x00;
+
// implement "from_reader" for "ClientIntentionPacket"
fn write(&self, buf: &mut FriendlyByteBuf) {
buf.write_varint(self.protocol_version);
@@ -19,3 +25,4 @@ impl Packet for ClientIntentionPacket {
buf.write_varint(self.intention.clone() as u32);
}
}
+
diff --git a/minecraft-protocol/src/packets/mod.rs b/minecraft-protocol/src/packets/mod.rs
index 530a1b4b..2ccdeb44 100644
--- a/minecraft-protocol/src/packets/mod.rs
+++ b/minecraft-protocol/src/packets/mod.rs
@@ -1,8 +1,10 @@
pub mod client_intention_packet;
+use std::collections::HashMap;
+
use crate::friendly_byte_buf::FriendlyByteBuf;
-#[derive(Debug, Clone, PartialEq)]
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ConnectionProtocol {
Handshaking = -1,
Play = 0,
@@ -11,17 +13,9 @@ pub enum ConnectionProtocol {
}
pub trait Packet {
+ /// The id of the packet, this is always a byte in vanilla.
+ /// This might be bigger than a u8 if using modpacks with lots of custom packets?
+ const ID: u8;
+
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