diff --git a/LiteLoader/Header/MC/ModalFormRequestPacket.hpp b/LiteLoader/Header/MC/ModalFormRequestPacket.hpp index a85b0c4..4c4c5f3 100644 --- a/LiteLoader/Header/MC/ModalFormRequestPacket.hpp +++ b/LiteLoader/Header/MC/ModalFormRequestPacket.hpp @@ -11,7 +11,9 @@ class ModalFormRequestPacket : public Packet { #define AFTER_EXTRA - +public: + unsigned int mFormId; + std::string mFormJSON; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_MODALFORMREQUESTPACKET public: diff --git a/LiteLoader/Header/MC/ModalFormResponsePacket.hpp b/LiteLoader/Header/MC/ModalFormResponsePacket.hpp index 5ab8bff..61b3d72 100644 --- a/LiteLoader/Header/MC/ModalFormResponsePacket.hpp +++ b/LiteLoader/Header/MC/ModalFormResponsePacket.hpp @@ -11,7 +11,9 @@ class ModalFormResponsePacket : public Packet { #define AFTER_EXTRA - +public: + unsigned int mFormId; + std::string mJSONResponse;; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_MODALFORMRESPONSEPACKET public: diff --git a/LiteLoader/Kernel/EventAPI.cpp b/LiteLoader/Kernel/EventAPI.cpp index b83e466..f22e7b1 100644 --- a/LiteLoader/Kernel/EventAPI.cpp +++ b/LiteLoader/Kernel/EventAPI.cpp @@ -2133,26 +2133,21 @@ TInstanceHook(int, "?startSleepInBed@Player@@UEAA?AW4BedSleepingResult@@AEBVBloc #include "Impl/FormPacketHelper.h" #include +#include ////////////// FormResponsePacket ////////////// TClasslessInstanceHook(void, "?handle@?$PacketHandlerDispatcherInstance@VModalFormResponsePacket@@$0A@@@UEBAXAEBVNetworkIdentifier@@AEAVNetEventCallback@@AEAV?$shared_ptr@VPacket@@@std@@@Z", - NetworkIdentifier* id, ServerNetworkHandler* handler, void* pPacket) { - Packet* packet = *(Packet**)pPacket; + NetworkIdentifier* id, ServerNetworkHandler* handler, std::shared_ptr pPacket) { + Packet* packet = pPacket.get(); + ModalFormResponsePacket* mPacket = (ModalFormResponsePacket*)packet; ServerPlayer* sp = handler->getServerPlayer(*id, 0); if (sp) { string data; - auto formId = dAccess(packet, 48);//未验证 - - if (!dAccess(packet, 81)) {//未验证 - if (dAccess(packet, 72)) {//未验证 - auto json = dAccess(packet, 56);//未验证 - data = json.toStyledString(); - } - } - - if (data.empty()) { + auto formId = mPacket->mFormId; + if(!mPacket->mJSONResponse.empty()) + data = mPacket->mJSONResponse; + else data = "null"; - } if (data.back() == '\n') data.pop_back();