diff --git a/README.md b/README.md index cf84e8c..efec1e6 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ let mut server = ServerContext::new(config); // Добавляем дефолтную обработку режима Play server.add_packet_handler(Box::new(PlayHandler)); -server.add_packet_handler(Box::new(PlayListener)); +server.add_listener(Box::new(PlayListener)); server.add_listener(Box::new(ExampleListener)); // Добавляем пример листенера server.add_packet_handler(Box::new(ExamplePacketHandler)); // Добавляем пример пакет хандлера diff --git a/src/data/text_component.rs b/src/data/component.rs similarity index 100% rename from src/data/text_component.rs rename to src/data/component.rs diff --git a/src/data/mod.rs b/src/data/mod.rs index 47ea8f6..a2387bf 100644 --- a/src/data/mod.rs +++ b/src/data/mod.rs @@ -5,7 +5,7 @@ use rust_mc_proto::{DataReader, DataWriter, Packet}; use super::ServerError; -pub mod text_component; +pub mod component; // Трейт для чтения NBT-совместимых приколов pub trait ReadWriteNBT: DataReader + DataWriter { diff --git a/src/main.rs b/src/main.rs index efd7c21..0122fe2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,7 +6,7 @@ use rust_mc_serv::{ ServerError, config::Config, context::ServerContext, - data::text_component::TextComponent, + data::component::TextComponent, event::{Listener, PacketHandler}, play::{PlayHandler, PlayListener}, player::context::ClientContext, @@ -156,7 +156,7 @@ fn main() { // Добавляем дефолтную обработку режима Play server.add_packet_handler(Box::new(PlayHandler)); - server.add_packet_handler(Box::new(PlayListener)); + server.add_listener(Box::new(PlayListener)); server.add_listener(Box::new(ExampleListener)); // Добавляем пример листенера server.add_packet_handler(Box::new(ExamplePacketHandler)); // Добавляем пример пакет хандлера diff --git a/src/play/helper.rs b/src/play/helper.rs index 29af870..e3d73b1 100644 --- a/src/play/helper.rs +++ b/src/play/helper.rs @@ -7,7 +7,7 @@ use rust_mc_proto::{DataReader, DataWriter, Packet}; use crate::{ ServerError, - data::{ReadWriteNBT, text_component::TextComponent}, + data::{ReadWriteNBT, component::TextComponent}, player::context::ClientContext, protocol::packet_id::{clientbound, serverbound}, }; diff --git a/src/play/mod.rs b/src/play/mod.rs index 465cbed..ea9ec87 100644 --- a/src/play/mod.rs +++ b/src/play/mod.rs @@ -12,8 +12,7 @@ use uuid::Uuid; use crate::event::Listener; use crate::player::context::EntityInfo; use crate::{ - ServerError, data::text_component::TextComponent, event::PacketHandler, - player::context::ClientContext, + ServerError, data::component::TextComponent, event::PacketHandler, player::context::ClientContext, }; use crate::protocol::{ConnectionState, packet_id::*}; @@ -325,9 +324,19 @@ pub fn handle_play_state( serverbound::play::SET_PLAYER_POSITION_AND_ROTATION, serverbound::play::SET_PLAYER_ROTATION, serverbound::play::CHAT_MESSAGE, + serverbound::play::CLICK_CONTAINER, ])?; match packet.id() { + serverbound::play::CLICK_CONTAINER => { + let window_id = packet.read_varint()?; + let state_id = packet.read_varint()?; + let slot = packet.read_short()?; + let button = packet.read_byte()?; + let mode = packet.read_varint()?; + + send_rainbow_message(&client, format!("index clicked: {slot}"))?; + } serverbound::play::CHAT_MESSAGE => { let message_text = packet.read_string()?; // skip remaining data coz they suck diff --git a/src/player/helper.rs b/src/player/helper.rs index afbafd4..8cdff2e 100644 --- a/src/player/helper.rs +++ b/src/player/helper.rs @@ -8,7 +8,7 @@ use rust_mc_proto::{DataReader, DataWriter, Packet}; use crate::{ ServerError, - data::{ReadWriteNBT, text_component::TextComponent}, + data::{ReadWriteNBT, component::TextComponent}, protocol::{ packet_id::{clientbound, serverbound}, *,