From c0d30ebeb1a887b655f2d24b7f94f47745a7932e Mon Sep 17 00:00:00 2001 From: E x o t i c Date: Mon, 9 Mar 2026 06:14:17 -0400 Subject: [PATCH] Add crafting grid packet --- Minecraft.Client/PlayerConnection.cpp | 11 +++++ Minecraft.Client/PlayerConnection.h | 1 + Minecraft.World/CraftItemGridPacket.cpp | 54 +++++++++++++++++++++++++ Minecraft.World/CraftItemGridPacket.h | 27 +++++++++++++ Minecraft.World/PacketListener.cpp | 5 +++ Minecraft.World/PacketListener.h | 2 + 6 files changed, 100 insertions(+) create mode 100644 Minecraft.World/CraftItemGridPacket.cpp create mode 100644 Minecraft.World/CraftItemGridPacket.h diff --git a/Minecraft.Client/PlayerConnection.cpp b/Minecraft.Client/PlayerConnection.cpp index 8e056cd81..fbcac4df7 100644 --- a/Minecraft.Client/PlayerConnection.cpp +++ b/Minecraft.Client/PlayerConnection.cpp @@ -1711,6 +1711,17 @@ void PlayerConnection::handleCraftItem(shared_ptr packet) } +void PlayerConnection::handleCraftItemGrid(shared_ptr packet) +{ + short uid = packet->uid; + int recipe = packet->recipe; + bool is2x2 = packet->is2x2; + for(int i = 0; i < 9; i++) + { + int itemId = packet->gridData[i]; + } +} + void PlayerConnection::handleTradeItem(shared_ptr packet) { if (player->containerMenu->containerId == packet->containerId) diff --git a/Minecraft.Client/PlayerConnection.h b/Minecraft.Client/PlayerConnection.h index ff6093a34..fae9bf969 100644 --- a/Minecraft.Client/PlayerConnection.h +++ b/Minecraft.Client/PlayerConnection.h @@ -98,6 +98,7 @@ public: // 4J Added virtual void handleCraftItem(shared_ptr packet); + virtual void handleCraftItemGrid(shared_ptr packet); virtual void handleTradeItem(shared_ptr packet); virtual void handleDebugOptions(shared_ptr packet); virtual void handleTexture(shared_ptr packet); diff --git a/Minecraft.World/CraftItemGridPacket.cpp b/Minecraft.World/CraftItemGridPacket.cpp new file mode 100644 index 000000000..fb989b418 --- /dev/null +++ b/Minecraft.World/CraftItemGridPacket.cpp @@ -0,0 +1,54 @@ +#include "stdafx.h" +#include +#include "InputOutputStream.h" +#include "net.minecraft.world.item.h" +#include "PacketListener.h" +#include "CraftItemGridPacket.h" + + + +CraftItemGridPacket::~CraftItemGridPacket() +{ +} + +CraftItemGridPacket::CraftItemGridPacket() +{ + recipe = -1; + uid = 0; + is2x2 = false; + for(int i = 0; i < 9; i++) gridData[i] = -1; +} + +CraftItemGridPacket::CraftItemGridPacket(int recipe, short uid, bool is2x2, int gridData[9]) +{ + this->recipe = recipe; + this->uid = uid; + this->is2x2 = is2x2; + for(int i = 0; i < 9; i++) this->gridData[i] = gridData[i]; +} + +void CraftItemGridPacket::handle(PacketListener *listener) +{ + listener->handleCraftItemGrid(shared_from_this()); +} + +void CraftItemGridPacket::read(DataInputStream *dis) +{ + uid = dis->readShort(); + recipe = dis->readInt(); + is2x2 = dis->readBoolean(); + for(int i = 0; i < 9; i++) gridData[i] = dis->readInt(); +} + +void CraftItemGridPacket::write(DataOutputStream *dos) +{ + dos->writeShort(uid); + dos->writeInt(recipe); + dos->writeBoolean(is2x2); + for(int i = 0; i < 9; i++) dos->writeInt(gridData[i]); +} + +int CraftItemGridPacket::getEstimatedSize() +{ + return 2 + 4 + 1 + (9 * 4); +} diff --git a/Minecraft.World/CraftItemGridPacket.h b/Minecraft.World/CraftItemGridPacket.h new file mode 100644 index 000000000..e24e41188 --- /dev/null +++ b/Minecraft.World/CraftItemGridPacket.h @@ -0,0 +1,27 @@ +#pragma once + +using namespace std; + +#include "Packet.h" + +class CraftItemGridPacket : public Packet, public enable_shared_from_this +{ +public: + int recipe; + short uid; + bool is2x2; + int gridData[9]; + + CraftItemGridPacket(); + ~CraftItemGridPacket(); + CraftItemGridPacket(int recipe, short uid, bool is2x2, int gridData[9]); + + virtual void handle(PacketListener *listener); + virtual void read(DataInputStream *dis); + virtual void write(DataOutputStream *dos); + virtual int getEstimatedSize(); + +public: + static shared_ptr create() { return std::make_shared(); } + virtual int getId() { return 169; } +}; diff --git a/Minecraft.World/PacketListener.cpp b/Minecraft.World/PacketListener.cpp index 09fbb0525..0c2b4c01c 100644 --- a/Minecraft.World/PacketListener.cpp +++ b/Minecraft.World/PacketListener.cpp @@ -437,6 +437,11 @@ void PacketListener::handleCraftItem(shared_ptr packet) onUnhandledPacket( (shared_ptr ) packet); } +void PacketListener::handleCraftItemGrid(shared_ptr packet) +{ + onUnhandledPacket( (shared_ptr ) packet); +} + void PacketListener::handleTradeItem(shared_ptr packet) { onUnhandledPacket( (shared_ptr ) packet); diff --git a/Minecraft.World/PacketListener.h b/Minecraft.World/PacketListener.h index f63b6bc7f..2d337bd88 100644 --- a/Minecraft.World/PacketListener.h +++ b/Minecraft.World/PacketListener.h @@ -97,6 +97,7 @@ class TileEditorOpenPacket; // 4J Added class CraftItemPacket; +class CraftItemGridPacket; class TradeItemPacket; class DebugOptionsPacket; class ServerSettingsChangedPacket; @@ -214,6 +215,7 @@ public: // 4J Added virtual void handleCraftItem(shared_ptr packet); + virtual void handleCraftItemGrid(shared_ptr packet); virtual void handleTradeItem(shared_ptr packet); virtual void handleDebugOptions(shared_ptr packet); virtual void handleServerSettingsChanged(shared_ptr packet);