From d933ec77ace9006a62789647245a5679f92c437e Mon Sep 17 00:00:00 2001 From: p2r3 Date: Tue, 12 Aug 2025 04:04:41 +0300 Subject: [PATCH] sync hotbar slot on login --- main.c | 1 + src/packets.c | 11 +++++++++++ src/packets.h | 1 + 3 files changed, 13 insertions(+) diff --git a/main.c b/main.c index f8b6919..1cb2620 100644 --- a/main.c +++ b/main.c @@ -67,6 +67,7 @@ void handlePacket (int client_fd, int length, int packet_id) { for (uint8_t i = 0; i < 82; i += 2) { sc_setContainerSlot(client_fd, 0, serverSlotToClientSlot(i / 2), inventory[i + 1], inventory[i]); } + sc_setHeldItem(client_fd, *(inventory - 1)); sc_setDefaultSpawnPosition(client_fd, 8, 80, 8); sc_startWaitingForChunks(client_fd); diff --git a/src/packets.c b/src/packets.c index c948d73..26f80a0 100644 --- a/src/packets.c +++ b/src/packets.c @@ -545,6 +545,17 @@ int cs_setHeldItem (int client_fd) { return 0; } +// S->C Set Held Item (clientbound) +int sc_setHeldItem (int client_fd, uint8_t slot) { + + writeVarInt(client_fd, sizeVarInt(0x62) + 1); + writeVarInt(client_fd, 0x62); + + writeByte(client_fd, slot); + + return 0; +} + // S->C Registry Data (Multiple packets) int sc_registries (int client_fd) { diff --git a/src/packets.h b/src/packets.h index 8133a07..6534486 100644 --- a/src/packets.h +++ b/src/packets.h @@ -23,6 +23,7 @@ int sc_setCenterChunk (int client_fd, int x, int y); int sc_chunkDataAndUpdateLight (int client_fd, int _x, int _z); int sc_keepAlive (int client_fd); int sc_setContainerSlot (int client_fd, int container, uint16_t slot, uint8_t count, uint8_t item); +int sc_setHeldItem (int client_fd, uint8_t slot); int sc_registries(int client_fd); #endif