neoLegacy/Minecraft.World/CustomPayloadPacket.h
DrPerkyLegit b67cbb85f3
Some checks are pending
Sync branches with main / sync (push) Waiting to run
feat: multiplayer feat/less hardcoded lists (#89)
* CustomPayloadPacket Changes

commented all code for old equip packets
cleaned up custom payload key creation
added 2 new payload packet definitions for upcoming changes

* server sided recipe list

* code cleanup for recipes

* add dtor for recipe classes to fix memory leak

* forgot this part to the dtor commit

* dtor changes tested and fixed

* server side creative menu list
2026-05-22 18:39:27 +03:00

62 lines
2.3 KiB
C++

#pragma once
using namespace std;
#include "Packet.h"
#define CreatePayloadKey(identifier, action) identifier L"|" action
#define CreateVanillaPayloadKey(action) CreatePayloadKey(L"MC", action)
class CustomPayloadPacket : public Packet, public enable_shared_from_this<CustomPayloadPacket>
{
public:
// Mojang-defined custom packets
static const wstring CUSTOM_BOOK_PACKET;
static const wstring CUSTOM_BOOK_SIGN_PACKET;
static const wstring TEXTURE_PACK_PACKET;
static const wstring TRADER_LIST_PACKET;
static const wstring TRADER_SELECTION_PACKET;
static const wstring SET_ADVENTURE_COMMAND_PACKET;
static const wstring SET_BEACON_PACKET;
static const wstring SET_ITEM_NAME_PACKET;
// neoLegacy-defined custom packets
static const wstring UPDATE_RECIPE_REGISTRY;
static const wstring UPDATE_CREATIVE_REGISTRY;
// Security: stream cipher handshake channels
static const wstring CIPHER_KEY_CHANNEL; // server->client: carries 32-byte key (16 AES key + 16 IV)
static const wstring CIPHER_ACK_CHANNEL; // client->server: ack (empty payload)
static const wstring CIPHER_ON_CHANNEL; // server->client: activation signal (empty payload)
// Security: identity token channels
static const wstring IDENTITY_TOKEN_ISSUE; // server->client: issue new 32-byte token
static const wstring IDENTITY_TOKEN_CHALLENGE; // server->client: request stored token
static const wstring IDENTITY_TOKEN_RESPONSE; // client->server: present stored token
// Fork extensions: server capability and player lifecycle
static const wstring FORK_HELLO_CHANNEL; // server->client: identifies fork server (empty payload)
static const wstring FORK_PLAYER_LEAVE_CHANNEL; // server->client: player disconnected (payload: UTF gamertag)
// Fixes for MP related crashes
//static const wstring QUICK_EQUIP_PACKET;
//static const wstring QUICK_EQUIP_SERVER_PACKET;
static const wstring ENCHANTMENT_LIST_PACKET;
wstring identifier;
int length;
byteArray data;
CustomPayloadPacket();
CustomPayloadPacket(const wstring &identifier, byteArray data);
virtual void read(DataInputStream *dis);
virtual void write(DataOutputStream *dos);
virtual void handle(PacketListener *listener);
virtual int getEstimatedSize();
public:
static shared_ptr<Packet> create() { return std::make_shared<CustomPayloadPacket>(); }
virtual int getId() { return 250; }
};