From 7fbdcc94ef3620dc7930d415c9f57ce03411293b Mon Sep 17 00:00:00 2001 From: Qiuzhizhe <42761326+quizhizhe@users.noreply.github.com> Date: Sun, 25 Sep 2022 01:17:11 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8DBDS=E5=86=85=E9=83=A8?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LiteLoader/Header/MC/Actor.hpp | 4 +- LiteLoader/Header/MC/Attribute.hpp | 4 + LiteLoader/Header/MC/AttributeInstance.hpp | 34 ++ LiteLoader/Header/MC/Automation.hpp | 3 + LiteLoader/Header/MC/BinaryStream.hpp | 7 + LiteLoader/Header/MC/Block.hpp | 1 + LiteLoader/Header/MC/HashedString.hpp | 4 + LiteLoader/Header/MC/IdentityDefinition.hpp | 10 +- LiteLoader/Header/MC/InventoryAction.hpp | 22 +- LiteLoader/Header/MC/MinecraftPackets.hpp | 8 +- LiteLoader/Header/MC/Objective.hpp | 5 + LiteLoader/Header/MC/Player.hpp | 15 +- LiteLoader/Header/MC/ReadOnlyBinaryStream.hpp | 18 + LiteLoader/Header/MC/ScorePacketInfo.hpp | 20 +- LiteLoader/Header/MC/ScoreboardId.hpp | 23 +- .../Header/MC/ScoreboardIdentityRef.hpp | 5 + LiteLoader/Header/MC/ServerNetworkHandler.hpp | 367 ++++++++++++++++++ LiteLoader/Header/MC/TextPacket.hpp | 4 +- LiteLoader/Kernel/EventAPI.cpp | 16 +- LiteLoader/Kernel/MC/ActorAPI.cpp | 20 +- LiteLoader/Kernel/MC/BlockAPI.cpp | 5 + LiteLoader/Kernel/MC/PlayerAPI.cpp | 92 +++-- LiteLoader/Kernel/Network/BinaryStreamAPI.cpp | 9 +- LiteLoader/Kernel/Network/PacketAPI.cpp | 214 +++++----- .../Network/ReadOnlyBinaryStreamAPI.cpp | 20 +- LiteLoader/Kernel/Scoreboard/ObjectiveAPI.cpp | 7 +- LiteLoader/Kernel/SimulatedPlayerAPI.cpp | 188 ++++----- 27 files changed, 856 insertions(+), 269 deletions(-) diff --git a/LiteLoader/Header/MC/Actor.hpp b/LiteLoader/Header/MC/Actor.hpp index d76c8a3..940a9f1 100644 --- a/LiteLoader/Header/MC/Actor.hpp +++ b/LiteLoader/Header/MC/Actor.hpp @@ -50,7 +50,7 @@ public: //LIAPI bool hurtEntity(float damage, ActorDamageCause damageCause = ActorDamageCause::ActorDamageCause_Override); //LIAPI bool teleport(Vec3 to, int dimID, float x, float y); //LIAPI bool teleport(Vec3 pos,int dimid); - //LIAPI ItemStack* getHandSlot(); + LIAPI ItemStack* getHandSlot(); LIAPI bool rename(const string& name); LIAPI std::unique_ptr getNbt(); LIAPI bool setNbt(CompoundTag* nbt); @@ -58,6 +58,8 @@ public: LIAPI bool addEffect(MobEffect::EffectType type, int tick, int level, bool ambient = false, bool showParticles = true, bool showAnimation = false); LIAPI float quickEvalMolangScript(const string& expression); //LIAPI Json::Value quickEvalMolangScriptAsJson(const string& expression); + LIAPI SimpleContainer & getHandContainer(); + LIAPI SimpleContainer & getArmorContainer(); inline Vec3 getPosition() { diff --git a/LiteLoader/Header/MC/Attribute.hpp b/LiteLoader/Header/MC/Attribute.hpp index ca7e1a8..41ba48e 100644 --- a/LiteLoader/Header/MC/Attribute.hpp +++ b/LiteLoader/Header/MC/Attribute.hpp @@ -10,6 +10,10 @@ class Attribute { #define AFTER_EXTRA +public: + inline class HashedString const & getName() const{ + return dAccess(this, 8); + } #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_ATTRIBUTE diff --git a/LiteLoader/Header/MC/AttributeInstance.hpp b/LiteLoader/Header/MC/AttributeInstance.hpp index ddfe200..72e8453 100644 --- a/LiteLoader/Header/MC/AttributeInstance.hpp +++ b/LiteLoader/Header/MC/AttributeInstance.hpp @@ -10,6 +10,40 @@ class AttributeInstance { #define AFTER_EXTRA +public: + inline float getMinValue()const{ + return dAccess(this, 31); + }; + inline float getMaxValue()const{ + return dAccess(this, 32); + }; + inline float getCurrentValue()const{ + return dAccess(this, 33); + }; + //maybe error + inline void setCurrentValue(float value)const{ + dAccess((void*)this)= value; + //AttributeInstance::resetToMaxValue Line11~Line28 + // if (this + 3) + // { + // auto p_mDirtyAttributes = dAccess *>(this, 65); + // ScoreInfo* value = dAccess(p_mDirtyAttributes, 8); + + // if ( dAccess(p_mDirtyAttributes, 16) == value ) + // { + // //std::vector::_Emplace_reallocate(p_mDirtyAttributes, value, &v5); + // p_mDirtyAttributes->emplace_back(value); + // } + // else + // { + // *v4 = v5; + // *(v3 + 8) += 16i64; + // } + // } + }; + inline float getDefaultValue(int a)const{ + return dAccess(this, 30); + }; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_ATTRIBUTEINSTANCE diff --git a/LiteLoader/Header/MC/Automation.hpp b/LiteLoader/Header/MC/Automation.hpp index e2aff46..df764c8 100644 --- a/LiteLoader/Header/MC/Automation.hpp +++ b/LiteLoader/Header/MC/Automation.hpp @@ -8,6 +8,9 @@ #undef BEFORE_EXTRA namespace Automation { + // Add Member There + class AutomationClient; + enum MessagePurpose; #define AFTER_EXTRA diff --git a/LiteLoader/Header/MC/BinaryStream.hpp b/LiteLoader/Header/MC/BinaryStream.hpp index af0818f..603f86f 100644 --- a/LiteLoader/Header/MC/BinaryStream.hpp +++ b/LiteLoader/Header/MC/BinaryStream.hpp @@ -27,6 +27,13 @@ public: LIAPI void writeUnsignedInt64(unsigned __int64 value); LIAPI void writeVarInt(int value); LIAPI void writeVarInt64(__int64 value); + + inline void writeType(class Vec3 const& vec3) + { + writeFloat(vec3.x); + writeFloat(vec3.y); + writeFloat(vec3.z); + } LIAPI void reserve(size_t size); LIAPI std::string& getRaw(); diff --git a/LiteLoader/Header/MC/Block.hpp b/LiteLoader/Header/MC/Block.hpp index 47b1d95..4dbc814 100644 --- a/LiteLoader/Header/MC/Block.hpp +++ b/LiteLoader/Header/MC/Block.hpp @@ -22,6 +22,7 @@ public: LIAPI unsigned short getTileData(); LIAPI std::unique_ptr getNbt(); LIAPI bool setNbt(CompoundTag* nbt); + LIAPI unsigned int const & getRuntimeId() const; inline bool operator==(class Block const& a2) const { __int64 v2; // r8 diff --git a/LiteLoader/Header/MC/HashedString.hpp b/LiteLoader/Header/MC/HashedString.hpp index f077b57..24ba0d1 100644 --- a/LiteLoader/Header/MC/HashedString.hpp +++ b/LiteLoader/Header/MC/HashedString.hpp @@ -10,6 +10,10 @@ class HashedString { #define AFTER_EXTRA +public: + inline std::string const & getString()const{ + return dAccess(this, 8); + }; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_HASHEDSTRING diff --git a/LiteLoader/Header/MC/IdentityDefinition.hpp b/LiteLoader/Header/MC/IdentityDefinition.hpp index 66a35d9..8543938 100644 --- a/LiteLoader/Header/MC/IdentityDefinition.hpp +++ b/LiteLoader/Header/MC/IdentityDefinition.hpp @@ -10,7 +10,15 @@ class IdentityDefinition { #define AFTER_EXTRA - +// Add Member There +public: +enum class Type : char +{ + Invalid = 0, + Player = 1, + Actor = 2, + Fake = 3 +}; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_IDENTITYDEFINITION public: diff --git a/LiteLoader/Header/MC/InventoryAction.hpp b/LiteLoader/Header/MC/InventoryAction.hpp index 6daf5ab..36f5fba 100644 --- a/LiteLoader/Header/MC/InventoryAction.hpp +++ b/LiteLoader/Header/MC/InventoryAction.hpp @@ -4,13 +4,33 @@ #include "../Global.h" #define BEFORE_EXTRA - +// Include Headers or Declare Types Here +#include "InventorySource.hpp" +#include "NetworkItemStackDescriptor.hpp" +#include "ItemStack.hpp" #undef BEFORE_EXTRA class InventoryAction { #define AFTER_EXTRA +// Add Member There +public: + InventorySource source; // 0 + uint32_t slot; // 12 + NetworkItemStackDescriptor fromDescriptor; // 16 + NetworkItemStackDescriptor toDescriptor; // 104 + ItemStack fromItem; // 192 + ItemStack toItem; // 352 +private: + inline void test() + { + static_assert(offsetof(InventoryAction, slot) == 12); + static_assert(offsetof(InventoryAction, fromDescriptor) == 16); + static_assert(offsetof(InventoryAction, toDescriptor) == 104); + static_assert(offsetof(InventoryAction, fromItem) == 192); + static_assert(offsetof(InventoryAction, toItem) == 352); + } #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_INVENTORYACTION public: diff --git a/LiteLoader/Header/MC/MinecraftPackets.hpp b/LiteLoader/Header/MC/MinecraftPackets.hpp index bf49a20..d1c6a23 100644 --- a/LiteLoader/Header/MC/MinecraftPackets.hpp +++ b/LiteLoader/Header/MC/MinecraftPackets.hpp @@ -10,7 +10,13 @@ class MinecraftPackets { #define AFTER_EXTRA - +// Add Member There +public: +//Warning temporary +static std::shared_ptr createPacket(int type) +{ + return createPacket((MinecraftPacketIds)type); +} #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_MINECRAFTPACKETS public: diff --git a/LiteLoader/Header/MC/Objective.hpp b/LiteLoader/Header/MC/Objective.hpp index 337a4f7..bce3f7b 100644 --- a/LiteLoader/Header/MC/Objective.hpp +++ b/LiteLoader/Header/MC/Objective.hpp @@ -10,7 +10,12 @@ class Objective { #define AFTER_EXTRA +// Add Member There +public: + std::string getName(); + LIAPI bool setDisplay(const std::string& slotName, ObjectiveSortOrder sort); + #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_OBJECTIVE public: diff --git a/LiteLoader/Header/MC/Player.hpp b/LiteLoader/Header/MC/Player.hpp index 79a68df..5789e2a 100644 --- a/LiteLoader/Header/MC/Player.hpp +++ b/LiteLoader/Header/MC/Player.hpp @@ -44,14 +44,19 @@ public: LIAPI string getServerAddress(); LIAPI NetworkIdentifier* getNetworkIdentifier(); LIAPI Certificate* getCertificate(); - LIAPI Container* getEnderChestContainer(); LIAPI std::pair getRespawnPosition(); LIAPI float getAvgPacketLoss(); LIAPI float getLastPacketLoss(); - LIAPI string getClientId(); + //LIAPI string getClientId(); LIAPI int getDeviceType(); LIAPI bool isOperator(); LIAPI bool isOP(); + LIAPI int getPlatform(); + LIAPI Container & getInventory(); + LIAPI BlockPos const & getSpawnPosition(); + LIAPI AutomaticID getSpawnDimension(); + LIAPI enum CommandPermissionLevel getPlayerPermissionLevel(); + LIAPI int getPlayerLevel(); LIAPI int getCurrentExperience(); LIAPI bool setCurrentExperience(int exp); @@ -129,7 +134,7 @@ public: LIAPI bool refreshAttributes(std::vector const& attributes); //LIAPI void addBossEvent(int64_t uid, string name, float percent, BossEventColour colour, int overlay = 0); LIAPI void removeBossEvent(int64_t uid); - LIAPI void updateBossEvent(int64_t uid, string name, float percent, BossEventColour colour, int overlay = 0); + //LIAPI void updateBossEvent(int64_t uid, string name, float percent, BossEventColour colour, int overlay = 0); LIAPI int getScore(const string& key); LIAPI bool setScore(const string& key, int value); @@ -152,7 +157,7 @@ public: //LIAPI bool sendAddEntityPacket(unsigned long long runtimeID, string entityType, Vec3 pos, Vec2 rotation, float headYaw, vector> dataItems = {}); LIAPI bool sendUpdateBlockPacket(BlockPos const& blockPos, unsigned int runtimeId, UpdateBlockFlags flag = UpdateBlockFlags::BlockUpdateAll, UpdateBlockLayer layer = UpdateBlockLayer::UpdateBlockDefault); LIAPI bool sendUpdateBlockPacket(BlockPos const& blockPos, const Block& block, UpdateBlockFlags flag = UpdateBlockFlags::BlockUpdateAll, UpdateBlockLayer layer = UpdateBlockLayer::UpdateBlockDefault); - //LIAPI bool sendTransferPacket(const string& address, short port) const; + LIAPI bool sendTransferPacket(const string& address, short port) const; LIAPI bool sendSetDisplayObjectivePacket(const string& title, const string& name, char sortOrder) const; LIAPI bool sendSetScorePacket(char type, const vector& data); //LIAPI bool sendBossEventPacket(BossEvent type, string name, float percent, BossEventColour colour, int overlay = 0); @@ -161,7 +166,7 @@ public: LIAPI bool sendTextTalkPacket(const string& msg, Player* target /* = nullptr*/); LIAPI bool sendRawFormPacket(unsigned formId, const string& data) const; - LIAPI bool sendToastPacket(string title, string msg); + //LIAPI bool sendToastPacket(string title, string msg); LIAPI static bool isValid(Player* player); diff --git a/LiteLoader/Header/MC/ReadOnlyBinaryStream.hpp b/LiteLoader/Header/MC/ReadOnlyBinaryStream.hpp index 25c5a10..5704de9 100644 --- a/LiteLoader/Header/MC/ReadOnlyBinaryStream.hpp +++ b/LiteLoader/Header/MC/ReadOnlyBinaryStream.hpp @@ -10,7 +10,25 @@ class ReadOnlyBinaryStream { #define AFTER_EXTRA +// Add Member There +public: + size_t readPointer{}; + bool unk; + std::string ownBuf, *pBuf; +public: + LIAPI std::string const& getData() const; + LIAPI size_t getLength() const; + LIAPI size_t getReadPointer() const; + LIAPI size_t getUnreadLength() const; + LIAPI void setReadPointer(std::size_t size); + + // inline void readType(mce::UUID& uuid) + // { + // dAccess(&uuid) = getUnsignedInt64(); + // dAccess(&uuid) = getUnsignedInt64(); + // } + LIAPI std::unique_ptr getCompoundTag(); #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_READONLYBINARYSTREAM public: diff --git a/LiteLoader/Header/MC/ScorePacketInfo.hpp b/LiteLoader/Header/MC/ScorePacketInfo.hpp index 22d3037..16a1b41 100644 --- a/LiteLoader/Header/MC/ScorePacketInfo.hpp +++ b/LiteLoader/Header/MC/ScorePacketInfo.hpp @@ -4,13 +4,31 @@ #include "../Global.h" #define BEFORE_EXTRA - +#include "ScoreboardId.hpp" +#include "IdentityDefinition.hpp" #undef BEFORE_EXTRA struct ScorePacketInfo { #define AFTER_EXTRA +public: +#define DISABLE_CONSTRUCTOR_PREVENTION_SCOREPACKETINFO + ScoreboardId sid; //0 + std::string obj_name; //16 + uint32_t score; //48 + IdentityDefinition::Type type; //52 + unsigned long long pid; //56 + ActorUniqueID aid; //64 + std::string fake_name; //72 + + ScorePacketInfo(ScoreboardId* s, string obj_name, IdentityDefinition::Type type, unsigned num, const string& fake) + : sid(*s) + , obj_name(obj_name) + , type(type) + , score(num) + , fake_name(fake) { + } #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_SCOREPACKETINFO public: diff --git a/LiteLoader/Header/MC/ScoreboardId.hpp b/LiteLoader/Header/MC/ScoreboardId.hpp index dd5e17d..7e8ea59 100644 --- a/LiteLoader/Header/MC/ScoreboardId.hpp +++ b/LiteLoader/Header/MC/ScoreboardId.hpp @@ -10,13 +10,30 @@ struct ScoreboardId { #define AFTER_EXTRA +// Add Member There +public: + __int64 id; + void* null; + ScoreboardId(){ + id = -1; + }; + + ScoreboardId(__int64 a1){ + id = a1; + }; + bool operator!=(ScoreboardId a1){ + return id != a1.id; + } + bool isValid(){ + return *this != ScoreboardId::INVALID; + } #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_SCOREBOARDID public: - struct ScoreboardId& operator=(struct ScoreboardId const &) = delete; - ScoreboardId(struct ScoreboardId const &) = delete; - ScoreboardId() = delete; + struct ScoreboardId& operator=(struct ScoreboardId const &); + // ScoreboardId(struct ScoreboardId const &)= delete; + // ScoreboardId()= delete; #endif public: #ifdef ENABLE_VIRTUAL_FAKESYMBOL_SCOREBOARDID diff --git a/LiteLoader/Header/MC/ScoreboardIdentityRef.hpp b/LiteLoader/Header/MC/ScoreboardIdentityRef.hpp index 671d8d7..89dc87d 100644 --- a/LiteLoader/Header/MC/ScoreboardIdentityRef.hpp +++ b/LiteLoader/Header/MC/ScoreboardIdentityRef.hpp @@ -10,6 +10,11 @@ class ScoreboardIdentityRef { #define AFTER_EXTRA +public: + enum IdentityDefinition::Type getIdentityType(){ + //ServerScoreboard::_unpackIdentityDefToScorePacket Line30~31 16+72 + return dAccess(this, 88); + }; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_SCOREBOARDIDENTITYREF diff --git a/LiteLoader/Header/MC/ServerNetworkHandler.hpp b/LiteLoader/Header/MC/ServerNetworkHandler.hpp index 2bee5bc..922f96f 100644 --- a/LiteLoader/Header/MC/ServerNetworkHandler.hpp +++ b/LiteLoader/Header/MC/ServerNetworkHandler.hpp @@ -6,12 +6,379 @@ #define BEFORE_EXTRA +enum SubClientId; + #undef BEFORE_EXTRA class ServerNetworkHandler { #define AFTER_EXTRA +// Add Member There + +public: + inline void onClientAuthenticated(class NetworkIdentifier const& a0, class Certificate const& a1) + { + return _onClientAuthenticated(a0, a1); + } + + inline class ServerPlayer* getServerPlayer(class NetworkIdentifier const& a0, char a1=0) { + return _getServerPlayer(a0, (SubClientId)a1); + } + + inline int getActiveAndInProgressPlayerCount(class mce::UUID a1) + { + return _getActiveAndInProgressPlayerCount(a1); + } + +inline void handle(class NetworkIdentifier const& a0, class CommandRequestPacket const& a1) { + void (ServerNetworkHandler::*rv)(class NetworkIdentifier const&, class CommandRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVCommandRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} + +inline void handle(class NetworkIdentifier const& a0, class TextPacket const& a1) { + void (ServerNetworkHandler::*rv)(class NetworkIdentifier const&, class TextPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVTextPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} + +inline void handle(class NetworkIdentifier const& a0, class ActorEventPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ActorEventPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVActorEventPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ActorPickRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ActorPickRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVActorPickRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class AdventureSettingsPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class AdventureSettingsPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVAdventureSettingsPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class AnimatePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class AnimatePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVAnimatePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class AnvilDamagePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class AnvilDamagePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVAnvilDamagePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class BlockPickRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class BlockPickRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVBlockPickRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class BookEditPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class BookEditPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVBookEditPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class BossEventPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class BossEventPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVBossEventPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ClientCacheBlobStatusPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ClientCacheBlobStatusPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVClientCacheBlobStatusPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ClientCacheStatusPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ClientCacheStatusPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVClientCacheStatusPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ClientToServerHandshakePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ClientToServerHandshakePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVClientToServerHandshakePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class CommandBlockUpdatePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class CommandBlockUpdatePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVCommandBlockUpdatePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ContainerClosePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ContainerClosePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVContainerClosePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class CraftingEventPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class CraftingEventPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVCraftingEventPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class DebugInfoPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class DebugInfoPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVDebugInfoPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class DisconnectPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class DisconnectPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVDisconnectPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class EmoteListPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class EmoteListPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVEmoteListPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class EmotePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class EmotePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVEmotePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class FilterTextPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class FilterTextPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVFilterTextPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class InteractPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class InteractPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVInteractPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class InventoryTransactionPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class InventoryTransactionPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVInventoryTransactionPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ItemFrameDropItemPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ItemFrameDropItemPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVItemFrameDropItemPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ItemStackRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ItemStackRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVItemStackRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class LabTablePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class LabTablePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVLabTablePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class LecternUpdatePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class LecternUpdatePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVLecternUpdatePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class LevelSoundEventPacketV2 const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class LevelSoundEventPacketV2 const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVLevelSoundEventPacketV2@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class LevelSoundEventPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class LevelSoundEventPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVLevelSoundEventPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class LevelSoundEventPacketV1 const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class LevelSoundEventPacketV1 const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVLevelSoundEventPacketV1@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class LoginPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class LoginPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVLoginPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class MapCreateLockedCopyPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class MapCreateLockedCopyPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVMapCreateLockedCopyPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class MapInfoRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class MapInfoRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVMapInfoRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class MobEquipmentPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class MobEquipmentPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVMobEquipmentPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class MoveActorAbsolutePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class MoveActorAbsolutePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVMoveActorAbsolutePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class MovePlayerPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class MovePlayerPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVMovePlayerPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class MultiplayerSettingsPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class MultiplayerSettingsPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVMultiplayerSettingsPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class NetworkStackLatencyPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class NetworkStackLatencyPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVNetworkStackLatencyPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class NpcRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class NpcRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVNpcRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PassengerJumpPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PassengerJumpPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPassengerJumpPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PlayerActionPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PlayerActionPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPlayerActionPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PlayerAuthInputPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PlayerAuthInputPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPlayerAuthInputPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PlayerHotbarPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PlayerHotbarPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPlayerHotbarPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PlayerInputPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PlayerInputPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPlayerInputPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PlayerSkinPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PlayerSkinPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPlayerSkinPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PositionTrackingDBClientRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PositionTrackingDBClientRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPositionTrackingDBClientRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class RequestChunkRadiusPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class RequestChunkRadiusPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVRequestChunkRadiusPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ResourcePackChunkRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ResourcePackChunkRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVResourcePackChunkRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class RespawnPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class RespawnPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVRespawnPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SetDefaultGameTypePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SetDefaultGameTypePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSetDefaultGameTypePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SetDifficultyPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SetDifficultyPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSetDifficultyPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SetLocalPlayerAsInitializedPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SetLocalPlayerAsInitializedPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSetLocalPlayerAsInitializedPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SetPlayerGameTypePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SetPlayerGameTypePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSetPlayerGameTypePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SettingsCommandPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SettingsCommandPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSettingsCommandPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ShowCreditsPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ShowCreditsPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVShowCreditsPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SimpleEventPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SimpleEventPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSimpleEventPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SpawnExperienceOrbPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SpawnExperienceOrbPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSpawnExperienceOrbPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class StructureBlockUpdatePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class StructureBlockUpdatePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVStructureBlockUpdatePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class StructureTemplateDataRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class StructureTemplateDataRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVStructureTemplateDataRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SubChunkRequestPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SubChunkRequestPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSubChunkRequestPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class SubClientLoginPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class SubClientLoginPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVSubClientLoginPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class TickSyncPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class TickSyncPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVTickSyncPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class UpdatePlayerGameTypePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class UpdatePlayerGameTypePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVUpdatePlayerGameTypePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class std::shared_ptr a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class std::shared_ptr); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@V?$shared_ptr@VBlockActorDataPacket@@@std@@@Z"); + return (this->*rv)(std::forward(a0), std::forward>(a1)); +} + +inline void handle(class NetworkIdentifier const& a0, class CreatePhotoPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class CreatePhotoPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVCreatePhotoPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class CompletedUsingItemPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class CompletedUsingItemPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVCompletedUsingItemPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PurchaseReceiptPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PurchaseReceiptPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPurchaseReceiptPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class ModalFormResponsePacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class ModalFormResponsePacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVModalFormResponsePacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} +inline void handle(class NetworkIdentifier const& a0, class PhotoTransferPacket const& a1) { + void (ServerNetworkHandler:: * rv)(class NetworkIdentifier const&, class PhotoTransferPacket const&); + *((void**)&rv) = dlsym("?handle@ServerNetworkHandler@@UEAAXAEBVNetworkIdentifier@@AEBVPhotoTransferPacket@@@Z"); + return (this->*rv)(std::forward(a0), std::forward(a1)); +} #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_SERVERNETWORKHANDLER public: diff --git a/LiteLoader/Header/MC/TextPacket.hpp b/LiteLoader/Header/MC/TextPacket.hpp index 66b165b..4c0657e 100644 --- a/LiteLoader/Header/MC/TextPacket.hpp +++ b/LiteLoader/Header/MC/TextPacket.hpp @@ -11,7 +11,9 @@ class TextPacket : public Packet { #define AFTER_EXTRA - +// Add Member There + char filler[168]; + #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_TEXTPACKET public: diff --git a/LiteLoader/Kernel/EventAPI.cpp b/LiteLoader/Kernel/EventAPI.cpp index 0802dd0..af88276 100644 --- a/LiteLoader/Kernel/EventAPI.cpp +++ b/LiteLoader/Kernel/EventAPI.cpp @@ -26,8 +26,8 @@ #include #include #include -#include -#include +// #include +// #include #include #include #include @@ -38,7 +38,7 @@ #include #include #include -#include +// #include #include #include #include @@ -51,14 +51,14 @@ #include #include #include -#include +// #include #include #include #include #include #include #include -#include +// #include #include #include @@ -1273,7 +1273,7 @@ TInstanceHook(void, "?onProjectileHit@Block@@QEBAXAEAVBlockSource@@AEBVBlockPos@ /////////////////// RedStoneUpdate /////////////////// -// 红石粉 +// 红石� TClasslessInstanceHook(void, "?onRedstoneUpdate@RedStoneWireBlock@@UEBAXAEAVBlockSource@@AEBVBlockPos@@H_N@Z", BlockSource* bs, BlockPos* bp, int level, bool isActive) { IF_LISTENED(RedStoneUpdateEvent) { @@ -1305,7 +1305,7 @@ TClasslessInstanceHook(void, "?onRedstoneUpdate@RedstoneTorchBlock@@UEBAXAEAVBlo IF_LISTENED_END(RedStoneUpdateEvent) return original(this, bs, bp, level, isActive); } -// 红石中继器 +// 红石中继� TClasslessInstanceHook(void, "?onRedstoneUpdate@DiodeBlock@@UEBAXAEAVBlockSource@@AEBVBlockPos@@H_N@Z", BlockSource* bs, BlockPos* bp, int level, bool isActive) { IF_LISTENED(RedStoneUpdateEvent) { @@ -1321,7 +1321,7 @@ TClasslessInstanceHook(void, "?onRedstoneUpdate@DiodeBlock@@UEBAXAEAVBlockSource IF_LISTENED_END(RedStoneUpdateEvent) return original(this, bs, bp, level, isActive); } -// 红石比较器 +// 红石比较� TClasslessInstanceHook(void, "?onRedstoneUpdate@ComparatorBlock@@UEBAXAEAVBlockSource@@AEBVBlockPos@@H_N@Z", BlockSource* bs, BlockPos* bp, int level, bool isActive) { IF_LISTENED(RedStoneUpdateEvent) { diff --git a/LiteLoader/Kernel/MC/ActorAPI.cpp b/LiteLoader/Kernel/MC/ActorAPI.cpp index dca16a5..4e2b4f2 100644 --- a/LiteLoader/Kernel/MC/ActorAPI.cpp +++ b/LiteLoader/Kernel/MC/ActorAPI.cpp @@ -111,11 +111,21 @@ ActorUniqueID Actor::getActorUniqueId() const { // return true; // } -// ItemStack* Actor::getHandSlot() { -// if (isPlayer()) -// return (ItemStack*)&((Player*)this)->getSelectedItem(); -// return (ItemStack*)&getHandContainer().getItem(0); -// } +SimpleContainer & Actor::getHandContainer(){ + //ScriptHandContainerComponent::hasComponent actor + return dAccess(this, 176); +} + +ItemStack* Actor::getHandSlot() { + if (isPlayer()) + return (ItemStack*)&((Player*)this)->getSelectedItem(); + return (ItemStack*)&getHandContainer().getItem(0); +} + +SimpleContainer & Actor::getArmorContainer(){ + // ItemStackNetManagerServer::_handleLegacyTransactionRequest Line46 + return dAccess(this, 1400); +} bool Actor::rename(const string& name) { setNameTag(name); diff --git a/LiteLoader/Kernel/MC/BlockAPI.cpp b/LiteLoader/Kernel/MC/BlockAPI.cpp index 5c7247f..fdb4030 100644 --- a/LiteLoader/Kernel/MC/BlockAPI.cpp +++ b/LiteLoader/Kernel/MC/BlockAPI.cpp @@ -59,4 +59,9 @@ std::unique_ptr Block::getNbt() { bool Block::setNbt(CompoundTag* nbt) { nbt->setBlock(this); return true; +} + +unsigned int const & Block::getRuntimeId() const{ + // Actor::_playFlySound Line7 + return dAccess(this, 12); } \ No newline at end of file diff --git a/LiteLoader/Kernel/MC/PlayerAPI.cpp b/LiteLoader/Kernel/MC/PlayerAPI.cpp index 76d811c..ef7c216 100644 --- a/LiteLoader/Kernel/MC/PlayerAPI.cpp +++ b/LiteLoader/Kernel/MC/PlayerAPI.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -95,6 +96,26 @@ string Player::getServerAddress() { return "unknown"; } +int Player::getPlatform(){ + //AddPlayerPacket::AddPlayerPacket Line59 + return dAccess(this, 256); +} + +Container & Player::getInventory(){ + //InventoryContainerModel::_getContainer 2928 + 176 + return dAccess(this, 3104); +} + +enum CommandPermissionLevel Player::getPlayerPermissionLevel(){ + //return dAccess(this, 2112); can do + return getCommandPermissionLevel(); +} + +int Player::getPlayerLevel(){ + auto& attr = getAttribute(Player::LEVEL); + return attr.getCurrentValue(); +} + string Player::getDeviceTypeName() { switch ((int)getPlatform()) { case -1: @@ -136,7 +157,7 @@ string Player::getDeviceTypeName() { bool Player::kick(const std::string& msg) { NetworkIdentifier* pNetworkIdentifier = getNetworkIdentifier(); - Global->disconnectClient(*pNetworkIdentifier, msg, 0); + Global->disconnectClient(*pNetworkIdentifier, 0, msg, 0); return true; } @@ -209,14 +230,24 @@ bool Player::runcmd(const string& cmd) { return sendCommandRequestPacket(cmd); } -Container* Player::getEnderChestContainer() { - return dAccess(this, 5440); // IDA Player::Player() 782 -} +// Container* Player::getEnderChestContainer() { +// return dAccess(this, 4032); // IDA Player::Player() Line239 +// } bool Player::transferServer(const string& address, unsigned short port) { return sendTransferPacket(address, port); } +BlockPos const & Player::getSpawnPosition(){ + //ServerNetworkHandler::_sendLevelData Line316 + return dAccess(this, 1797); +} + +AutomaticID Player::getSpawnDimension(){ + //ServerNetworkHandler::_sendLevelData Line310 + return dAccess>(this, 1800); +} + std::pair Player::getRespawnPosition() { BlockPos bp = getSpawnPosition(); int dimId = getSpawnDimension(); @@ -264,34 +295,29 @@ bool Player::refreshAttributes(std::vector const& attributes) } string Player::getUuid() { - auto ueic = getUserEntityIdentifierComponent(); - if (!ueic) - return ""; - return ueic->mUUID.asString(); + auto result = ExtendedCertificate::getIdentity(*getCertificate()); + return result.asString(); } string Player::getXuid() { - return "Unknow"; + return ExtendedCertificate::getXuid(*getCertificate()); } unsigned char Player::getClientSubId() { - auto ueic = getUserEntityIdentifierComponent(); - if (!ueic) - return -1; - return ueic->mClientSubId; + return -1; } float Player::getAvgPacketLoss() { - return Global->getNetworkHandler().getPeerForUser(*getNetworkIdentifier())->getNetworkStatus().mAveragePacketLoss; + return Global->getPeerForUser(*getNetworkIdentifier())->getNetworkStatus().mAveragePacketLoss; } float Player::getLastPacketLoss() { - return Global->getNetworkHandler().getPeerForUser(*getNetworkIdentifier())->getNetworkStatus().mCurrentPacketLoss; + return Global->getPeerForUser(*getNetworkIdentifier())->getNetworkStatus().mCurrentPacketLoss; } -string Player::getClientId() { - return Global->fetchConnectionRequest(*getNetworkIdentifier()).getDeviceId(); -} +// string Player::getClientId() { +// return Global->fetchConnectionRequest(*getNetworkIdentifier()).getDeviceId(); +// } int Player::getDeviceType() { return getPlatform(); @@ -459,10 +485,10 @@ void Player::removeBossEvent(int64_t uid) { sendNetworkPacket(*pkt); } -void Player::updateBossEvent(int64_t uid, string name, float percent, BossEventColour colour, int overlay) { - removeBossEvent(uid); - addBossEvent(uid, name, percent, colour, overlay); -} +// void Player::updateBossEvent(int64_t uid, string name, float percent, BossEventColour colour, int overlay) { +// removeBossEvent(uid); +// addBossEvent(uid, name, percent, colour, overlay); +// } ////////////////////////// Packet ////////////////////////// @@ -503,11 +529,11 @@ bool Player::sendTextPacket(string text, TextType Type) const { return true; } -bool Player::sendToastPacket(string title, string msg) { - ToastRequestPacket pkt = ToastRequestPacket(title, msg); - sendNetworkPacket(pkt); - return true; -} +// bool Player::sendToastPacket(string title, string msg) { +// ToastRequestPacket pkt = ToastRequestPacket(title, msg); +// sendNetworkPacket(pkt); +// return true; +// } bool Player::sendTitlePacket(string text, TitleType Type, int FadeInDuration, int RemainDuration, int FadeOutDuration) const { BinaryStream wp; @@ -630,11 +656,13 @@ bool Player::sendUpdateBlockPacket(BlockPos const& bpos, const Block& block, Upd return sendUpdateBlockPacket(bpos, block.getRuntimeId(), flag, layer); } -// bool Player::sendTransferPacket(const string& address, short port) const { -// TransferPacket transferPkt(address, port); -// sendNetworkPacket(transferPkt); -// return true; -// } +bool Player::sendTransferPacket(const string& address, short port) const { + auto packet = MinecraftPackets::createPacket(0x55); + dAccess(packet.get(), 36) = port; + dAccess(packet.get(), 40) = address; + sendNetworkPacket(*packet); + return true; +} bool Player::sendSetDisplayObjectivePacket(const string& title, const string& name, char sortOrder) const { SetDisplayObjectivePacket pkt = SetDisplayObjectivePacket("sidebar", name, title, "dummy", ObjectiveSortOrder(sortOrder)); diff --git a/LiteLoader/Kernel/Network/BinaryStreamAPI.cpp b/LiteLoader/Kernel/Network/BinaryStreamAPI.cpp index 5c3556b..26794ef 100644 --- a/LiteLoader/Kernel/Network/BinaryStreamAPI.cpp +++ b/LiteLoader/Kernel/Network/BinaryStreamAPI.cpp @@ -66,15 +66,18 @@ void BinaryStream::reserve(size_t size) { mBuffer->reserve(size); } std::string& BinaryStream::getRaw() { - return *dAccess(this); // BinaryStream::getAndReleaseData + return *dAccess(this); // BinaryStream::getAndReleaseData } struct IDataOutput{ void* pVT; BinaryStream* pBinaryStream; -}pVTVarIntDataOutput; +}; + void BinaryStream::writeCompoundTag(class CompoundTag const& tag) { - pVTVarIntDataOutput.pVT = nullptr; + //serialize::write in case 5 + IDataOutput pVTVarIntDataOutput; + pVTVarIntDataOutput.pVT = dlsym("??_7VarIntDataOutput@@6B@"); pVTVarIntDataOutput.pBinaryStream = this; NbtIo::write(&tag,pVTVarIntDataOutput); } \ No newline at end of file diff --git a/LiteLoader/Kernel/Network/PacketAPI.cpp b/LiteLoader/Kernel/Network/PacketAPI.cpp index c4f2a47..8929cef 100644 --- a/LiteLoader/Kernel/Network/PacketAPI.cpp +++ b/LiteLoader/Kernel/Network/PacketAPI.cpp @@ -30,7 +30,6 @@ extern Logger logger; #include #include #include -#include #include #include #include @@ -163,40 +162,41 @@ extern Logger logger; #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include #endif INCLUDE_ALL_PACKET @@ -207,9 +207,6 @@ extern Logger logger; Func(ShowProfilePacket); \ Func(SetDefaultGameTypePacket); \ Func(RemoveObjectivePacket); \ - Func(RemoveVolumeEntityPacket); \ - Func(SyncActorPropertyPacket); \ - Func(FilterTextPacket); \ Func(CodeBuilderPacket); \ Func(NetworkSettingsPacket); \ Func(MultiplayerSettingsPacket); \ @@ -225,7 +222,6 @@ extern Logger logger; Func(ServerToClientHandshakePacket); \ Func(SetTimePacket); \ Func(RemoveActorPacket); \ - Func(PassengerJumpPacket); \ Func(LevelSoundEventPacketV1); \ Func(SetCommandsEnabledPacket); \ Func(SetPlayerGameTypePacket); \ @@ -280,18 +276,6 @@ extern Logger logger; Func(ResourcePackChunkRequestPacket); \ Func(ResourcePackDataInfoPacket); \ Func(ScriptCustomEventPacket); \ - Func(CreatePhotoPacket); \ - Func(EduUriResourcePacket); \ - Func(NpcDialoguePacket); \ - Func(SimulationTypePacket); \ - Func(AddVolumeEntityPacket); \ - Func(AnimateEntityPacket); \ - Func(CameraShakePacket); \ - Func(CodeBuilderSourcePacket); \ - Func(ClientboundDebugRendererPacket); \ - Func(CorrectPlayerMovePredictionPacket); \ - Func(PlayerStartItemCooldownPacket); \ - Func(ScriptMessagePacket); \ Func(SetDisplayObjectivePacket); \ Func(SetScorePacket); \ Func(SetScoreboardIdentityPacket); \ @@ -313,10 +297,8 @@ extern Logger logger; Func(GameRulesChangedPacket); \ Func(ResourcePackStackPacket); \ Func(ResourcePacksInfoPacket); \ - Func(ItemComponentPacket); \ Func(SetSpawnPositionPacket); \ Func(StartGamePacket); \ - Func(PlayerFogPacket); \ Func(AddPlayerPacket); \ Func(LoginPacket); \ Func(BlockPickRequestPacket); \ @@ -352,7 +334,6 @@ extern Logger logger; Func(EventPacket); \ Func(SetHealthPacket); \ Func(MobEquipmentPacket); \ - Func(MotionPredictionHintsPacket); \ Func(AddItemActorPacket); \ Func(UpdateAttributesPacket); \ Func(InteractPacket); \ @@ -363,11 +344,8 @@ extern Logger logger; Func(InventoryTransactionPacket); \ Func(AddActorPacket); \ Func(MapInfoRequestPacket); \ - Func(UpdateSubChunkBlocksPacket); \ Func(SetActorMotionPacket); \ Func(LevelSoundEventPacket); \ - Func(SubChunkPacket); \ - Func(SubChunkRequestPacket); \ Func(ClientCacheMissResponsePacket); \ Func(ClientCacheBlobStatusPacket); \ Func(LevelChunkPacket); \ @@ -375,21 +353,43 @@ extern Logger logger; Func(UpdateBlockPacket); \ Func(MoveActorDeltaPacket); \ Func(MovePlayerPacket); \ - Func(PlayerAuthInputPacket); \ - Func(TickingAreasLoadStatusPacket); \ - Func(DimensionDataPacket); \ - Func(AgentActionEventPacket); \ - Func(ChangeMobPropertyPacket); \ - Func(ChangeMobPropertyPacket); \ - Func(LessonProgressPacket); \ - Func(RequestAbilityPacket); \ - Func(RequestPermissionsPacket); \ - Func(ToastRequestPacket); \ - Func(UpdateAbilitiesPacket); \ - Func(UpdateAdventureSettingsPacket); \ - Func(EditorNetworkPacket); \ - Func(DeathInfoPacket); \ - Func(FeatureRegistryPacket); + Func(PlayerAuthInputPacket); + // /*Func(TickingAreasLoadStatusPacket);*/ \ + // /*Func(DimensionDataPacket);*/ \ + // /*Func(AgentActionEventPacket);*/ \ + // /*Func(ChangeMobPropertyPacket);*/ \ + // /*Func(ChangeMobPropertyPacket);*/ \ + // /*Func(LessonProgressPacket);*/ \ + // /*Func(RequestAbilityPacket);*/ \ + // /*Func(RequestPermissionsPacket);*/ \ + // /*Func(ToastRequestPacket);*/ \ + // /*Func(UpdateAbilitiesPacket);*/ \ + // /*Func(UpdateAdventureSettingsPacket);*/ \ + // /*Func(EditorNetworkPacket);*/ \ + // /*Func(DeathInfoPacket);*/ \ + // /*Func(FeatureRegistryPacket);*/ \ + // /*Func(MotionPredictionHintsPacket);*/ \ + // /*Func(AnimateEntityPacket);*/ \ + // /*Func(CameraShakePacket);*/ \ + // /*Func(PlayerFogPacket);*/ \ + // /*Func(CorrectPlayerMovePredictionPacket);*/ \ + // /*Func(ItemComponentPacket);*/ \ + // /*Func(FilterTextPacket);*/ \ + // /*Func(ClientboundDebugRendererPacket);*/ \ + // /*Func(SyncActorPropertyPacket);*/ \ + // /*Func(SubChunkPacket);*/ \ + // /*Func(SubChunkRequestPacket);*/ \ + // /*Func(UpdateSubChunkBlocksPacket);*/ \ + // /*Func(CreatePhotoPacket);*/ \ + // /*Func(EduUriResourcePacket);*/ \ + // /*Func(NpcDialoguePacket);*/ \ + // /*Func(SimulationTypePacket);*/ \ + // /*Func(AddVolumeEntityPacket);*/ \ + // /*Func(CodeBuilderSourcePacket);*/ \ + // /*Func(PlayerStartItemCooldownPacket);*/ \ + // /*Func(ScriptMessagePacket);*/ \ + // /*Func(RemoveVolumeEntityPacket);*/ \ + // Func(PassengerJumpPacket); \ #define DeclearClass(packet) class packet; @@ -829,7 +829,7 @@ static_assert(sizeof(AddItemActorPacket) == 0xD8 || sizeof(AddItemActorPacket) = static_assert(sizeof(TakeItemActorPacket) == 0x40 || sizeof(TakeItemActorPacket) == 48, "size of TakeItemActorPacket should be 64 or 48(default)"); static_assert(sizeof(MoveActorAbsolutePacket) == 0x50 || sizeof(MoveActorAbsolutePacket) == 48, "size of MoveActorAbsolutePacket should be 80 or 48(default)"); static_assert(sizeof(MovePlayerPacket) == 0x70 || sizeof(MovePlayerPacket) == 48, "size of MovePlayerPacket should be 112 or 48(default)"); -static_assert(sizeof(PassengerJumpPacket) == 0x38 || sizeof(PassengerJumpPacket) == 48, "size of PassengerJumpPacket should be 56 or 48(default)"); +// static_assert(sizeof(PassengerJumpPacket) == 0x38 || sizeof(PassengerJumpPacket) == 48, "size of PassengerJumpPacket should be 56 or 48(default)"); static_assert(sizeof(UpdateBlockPacket) == 0x48 || sizeof(UpdateBlockPacket) == 48, "size of UpdateBlockPacket should be 72 or 48(default)"); static_assert(sizeof(AddPaintingPacket) == 0x70 || sizeof(AddPaintingPacket) == 48, "size of AddPaintingPacket should be 112 or 48(default)"); static_assert(sizeof(TickSyncPacket) == 0x40 || sizeof(TickSyncPacket) == 48, "size of TickSyncPacket should be 64 or 48(default)"); @@ -962,39 +962,39 @@ static_assert(sizeof(PositionTrackingDBServerBroadcastPacket) == 0x50 || sizeof( static_assert(sizeof(PositionTrackingDBClientRequestPacket) == 0x38 || sizeof(PositionTrackingDBClientRequestPacket) == 48, "size of PositionTrackingDBClientRequestPacket should be 56 or 48(default)"); static_assert(sizeof(DebugInfoPacket) == 0x58 || sizeof(DebugInfoPacket) == 48, "size of DebugInfoPacket should be 88 or 48(default)"); static_assert(sizeof(PacketViolationWarningPacket) == 0x60 || sizeof(PacketViolationWarningPacket) == 48, "size of PacketViolationWarningPacket should be 96 or 48(default)"); -static_assert(sizeof(MotionPredictionHintsPacket) == 0x48 || sizeof(MotionPredictionHintsPacket) == 48, "size of MotionPredictionHintsPacket should be 72 or 48(default)"); -static_assert(sizeof(AnimateEntityPacket) == 0xD8 || sizeof(AnimateEntityPacket) == 48, "size of AnimateEntityPacket should be 216 or 48(default)"); -static_assert(sizeof(CameraShakePacket) == 0x40 || sizeof(CameraShakePacket) == 48, "size of CameraShakePacket should be 64 or 48(default)"); -static_assert(sizeof(PlayerFogPacket) == 0x48 || sizeof(PlayerFogPacket) == 48, "size of PlayerFogPacket should be 72 or 48(default)"); -static_assert(sizeof(CorrectPlayerMovePredictionPacket) == 0x58 || sizeof(CorrectPlayerMovePredictionPacket) == 48, "size of CorrectPlayerMovePredictionPacket should be 88 or 48(default)"); -static_assert(sizeof(ItemComponentPacket) == 0x48 || sizeof(ItemComponentPacket) == 48, "size of ItemComponentPacket should be 72 or 48(default)"); -static_assert(sizeof(FilterTextPacket) == 0x58 || sizeof(FilterTextPacket) == 48, "size of FilterTextPacket should be 88 or 48(default)"); -static_assert(sizeof(ClientboundDebugRendererPacket) == 0x88 || sizeof(ClientboundDebugRendererPacket) == 48, "size of ClientboundDebugRendererPacket should be 136 or 48(default)"); -static_assert(sizeof(SyncActorPropertyPacket) == 0x48 || sizeof(SyncActorPropertyPacket) == 48, "size of SyncActorPropertyPacket should be 72 or 48(default)"); -static_assert(sizeof(AddVolumeEntityPacket) == 0x120 || sizeof(AddVolumeEntityPacket) == 48, "size of AddVolumeEntityPacket should be 288 or 48(default)"); -static_assert(sizeof(RemoveVolumeEntityPacket) == 0x40 || sizeof(RemoveVolumeEntityPacket) == 48, "size of RemoveVolumeEntityPacket should be 64 or 48(default)"); -static_assert(sizeof(SimulationTypePacket) == 0x38 || sizeof(SimulationTypePacket) == 48, "size of SimulationTypePacket should be 56 or 48(default)"); -static_assert(sizeof(NpcDialoguePacket) == 0xC0 || sizeof(NpcDialoguePacket) == 48, "size of NpcDialoguePacket should be 192 or 48(default)"); -static_assert(sizeof(EduUriResourcePacket) == 0x70 || sizeof(EduUriResourcePacket) == 48, "size of EduUriResourcePacket should be 112 or 48(default)"); -static_assert(sizeof(CreatePhotoPacket) == 0x78 || sizeof(CreatePhotoPacket) == 48, "size of CreatePhotoPacket should be 120 or 48(default)"); -static_assert(sizeof(UpdateSubChunkBlocksPacket) == 0x70 || sizeof(UpdateSubChunkBlocksPacket) == 48, "size of UpdateSubChunkBlocksPacket should be 112 or 48(default)"); -static_assert(sizeof(SubChunkPacket) == 0x60 || sizeof(SubChunkPacket) == 48, "size of SubChunkPacket should be 96 or 48(default)"); -static_assert(sizeof(SubChunkRequestPacket) == 0x80 || sizeof(SubChunkRequestPacket) == 48, "size of SubChunkRequestPacket should be 128 or 48(default)"); -static_assert(sizeof(PlayerStartItemCooldownPacket) == 0x58 || sizeof(PlayerStartItemCooldownPacket) == 48, "size of PlayerStartItemCooldownPacket should be 88 or 48(default)"); -static_assert(sizeof(ScriptMessagePacket) == 0x70 || sizeof(ScriptMessagePacket) == 48, "size of ScriptMessagePacket should be 112 or 48(default)"); -static_assert(sizeof(CodeBuilderSourcePacket) == 0x58 || sizeof(CodeBuilderSourcePacket) == 48, "size of CodeBuilderSourcePacket should be 88 or 48(default)"); -static_assert(sizeof(TickingAreasLoadStatusPacket) == 0x38 || sizeof(TickingAreasLoadStatusPacket) == 48, "size of TickingAreasLoadStatusPacket should be 56 or 48(default)"); -static_assert(sizeof(DimensionDataPacket) == 0x40 || sizeof(DimensionDataPacket) == 48, "size of DimensionDataPacket should be 64 or 48(default)"); -static_assert(sizeof(AgentActionEventPacket) == 0x68 || sizeof(AgentActionEventPacket) == 48, "size of AgentActionEventPacket should be 104 or 48(default)"); -static_assert(sizeof(ChangeMobPropertyPacket) == 0x88 || sizeof(ChangeMobPropertyPacket) == 48, "size of ChangeMobPropertyPacket should be 136 or 48(default)"); -static_assert(sizeof(LessonProgressPacket) == 0x58 || sizeof(LessonProgressPacket) == 48, "size of LessonProgressPacket should be 88 or 48(default)"); -static_assert(sizeof(RequestAbilityPacket) == 0x40 || sizeof(RequestAbilityPacket) == 48, "size of RequestAbilityPacket should be 64 or 48(default)"); -static_assert(sizeof(RequestPermissionsPacket) == 0x40 || sizeof(RequestPermissionsPacket) == 48, "size of RequestPermissionsPacket should be 64 or 48(default)"); -static_assert(sizeof(ToastRequestPacket) == 0x70 || sizeof(ToastRequestPacket) == 48, "size of ToastRequestPacket should be 112 or 48(default)"); -static_assert(sizeof(UpdateAbilitiesPacket) == 0x58 || sizeof(UpdateAbilitiesPacket) == 48, "size of UpdateAbilitiesPacket should be 88 or 48(default)"); -static_assert(sizeof(UpdateAdventureSettingsPacket) == 0x38 || sizeof(UpdateAdventureSettingsPacket) == 48, "size of UpdateAdventureSettingsPacket should be 56 or 48(default)"); -static_assert(sizeof(DeathInfoPacket) == 0x68 || sizeof(DeathInfoPacket) == 48, "size of DeathInfoPacket should be 104 or 48(default)"); -static_assert(sizeof(EditorNetworkPacket) == 0x48 || sizeof(EditorNetworkPacket) == 48, "size of EditorNetworkPacket should be 72 or 48(default)"); -static_assert(sizeof(FeatureRegistryPacket) == 0x48 || sizeof(FeatureRegistryPacket) == 48, "size of FeatureRegistryPacket should be 72 or 48(default)"); +// static_assert(sizeof(MotionPredictionHintsPacket) == 0x48 || sizeof(MotionPredictionHintsPacket) == 48, "size of MotionPredictionHintsPacket should be 72 or 48(default)"); +// static_assert(sizeof(AnimateEntityPacket) == 0xD8 || sizeof(AnimateEntityPacket) == 48, "size of AnimateEntityPacket should be 216 or 48(default)"); +// static_assert(sizeof(CameraShakePacket) == 0x40 || sizeof(CameraShakePacket) == 48, "size of CameraShakePacket should be 64 or 48(default)"); +// static_assert(sizeof(PlayerFogPacket) == 0x48 || sizeof(PlayerFogPacket) == 48, "size of PlayerFogPacket should be 72 or 48(default)"); +// static_assert(sizeof(CorrectPlayerMovePredictionPacket) == 0x58 || sizeof(CorrectPlayerMovePredictionPacket) == 48, "size of CorrectPlayerMovePredictionPacket should be 88 or 48(default)"); +// static_assert(sizeof(ItemComponentPacket) == 0x48 || sizeof(ItemComponentPacket) == 48, "size of ItemComponentPacket should be 72 or 48(default)"); +// static_assert(sizeof(FilterTextPacket) == 0x58 || sizeof(FilterTextPacket) == 48, "size of FilterTextPacket should be 88 or 48(default)"); +// static_assert(sizeof(ClientboundDebugRendererPacket) == 0x88 || sizeof(ClientboundDebugRendererPacket) == 48, "size of ClientboundDebugRendererPacket should be 136 or 48(default)"); +// static_assert(sizeof(SyncActorPropertyPacket) == 0x48 || sizeof(SyncActorPropertyPacket) == 48, "size of SyncActorPropertyPacket should be 72 or 48(default)"); +// static_assert(sizeof(AddVolumeEntityPacket) == 0x120 || sizeof(AddVolumeEntityPacket) == 48, "size of AddVolumeEntityPacket should be 288 or 48(default)"); +// static_assert(sizeof(RemoveVolumeEntityPacket) == 0x40 || sizeof(RemoveVolumeEntityPacket) == 48, "size of RemoveVolumeEntityPacket should be 64 or 48(default)"); +// static_assert(sizeof(SimulationTypePacket) == 0x38 || sizeof(SimulationTypePacket) == 48, "size of SimulationTypePacket should be 56 or 48(default)"); +// static_assert(sizeof(NpcDialoguePacket) == 0xC0 || sizeof(NpcDialoguePacket) == 48, "size of NpcDialoguePacket should be 192 or 48(default)"); +// static_assert(sizeof(EduUriResourcePacket) == 0x70 || sizeof(EduUriResourcePacket) == 48, "size of EduUriResourcePacket should be 112 or 48(default)"); +// static_assert(sizeof(CreatePhotoPacket) == 0x78 || sizeof(CreatePhotoPacket) == 48, "size of CreatePhotoPacket should be 120 or 48(default)"); +// static_assert(sizeof(UpdateSubChunkBlocksPacket) == 0x70 || sizeof(UpdateSubChunkBlocksPacket) == 48, "size of UpdateSubChunkBlocksPacket should be 112 or 48(default)"); +// static_assert(sizeof(SubChunkPacket) == 0x60 || sizeof(SubChunkPacket) == 48, "size of SubChunkPacket should be 96 or 48(default)"); +// static_assert(sizeof(SubChunkRequestPacket) == 0x80 || sizeof(SubChunkRequestPacket) == 48, "size of SubChunkRequestPacket should be 128 or 48(default)"); +// static_assert(sizeof(PlayerStartItemCooldownPacket) == 0x58 || sizeof(PlayerStartItemCooldownPacket) == 48, "size of PlayerStartItemCooldownPacket should be 88 or 48(default)"); +// static_assert(sizeof(ScriptMessagePacket) == 0x70 || sizeof(ScriptMessagePacket) == 48, "size of ScriptMessagePacket should be 112 or 48(default)"); +// static_assert(sizeof(CodeBuilderSourcePacket) == 0x58 || sizeof(CodeBuilderSourcePacket) == 48, "size of CodeBuilderSourcePacket should be 88 or 48(default)"); +// static_assert(sizeof(TickingAreasLoadStatusPacket) == 0x38 || sizeof(TickingAreasLoadStatusPacket) == 48, "size of TickingAreasLoadStatusPacket should be 56 or 48(default)"); +// static_assert(sizeof(DimensionDataPacket) == 0x40 || sizeof(DimensionDataPacket) == 48, "size of DimensionDataPacket should be 64 or 48(default)"); +// static_assert(sizeof(AgentActionEventPacket) == 0x68 || sizeof(AgentActionEventPacket) == 48, "size of AgentActionEventPacket should be 104 or 48(default)"); +// static_assert(sizeof(ChangeMobPropertyPacket) == 0x88 || sizeof(ChangeMobPropertyPacket) == 48, "size of ChangeMobPropertyPacket should be 136 or 48(default)"); +// static_assert(sizeof(LessonProgressPacket) == 0x58 || sizeof(LessonProgressPacket) == 48, "size of LessonProgressPacket should be 88 or 48(default)"); +// static_assert(sizeof(RequestAbilityPacket) == 0x40 || sizeof(RequestAbilityPacket) == 48, "size of RequestAbilityPacket should be 64 or 48(default)"); +// static_assert(sizeof(RequestPermissionsPacket) == 0x40 || sizeof(RequestPermissionsPacket) == 48, "size of RequestPermissionsPacket should be 64 or 48(default)"); +// static_assert(sizeof(ToastRequestPacket) == 0x70 || sizeof(ToastRequestPacket) == 48, "size of ToastRequestPacket should be 112 or 48(default)"); +// static_assert(sizeof(UpdateAbilitiesPacket) == 0x58 || sizeof(UpdateAbilitiesPacket) == 48, "size of UpdateAbilitiesPacket should be 88 or 48(default)"); +// static_assert(sizeof(UpdateAdventureSettingsPacket) == 0x38 || sizeof(UpdateAdventureSettingsPacket) == 48, "size of UpdateAdventureSettingsPacket should be 56 or 48(default)"); +// static_assert(sizeof(DeathInfoPacket) == 0x68 || sizeof(DeathInfoPacket) == 48, "size of DeathInfoPacket should be 104 or 48(default)"); +// static_assert(sizeof(EditorNetworkPacket) == 0x48 || sizeof(EditorNetworkPacket) == 48, "size of EditorNetworkPacket should be 72 or 48(default)"); +// static_assert(sizeof(FeatureRegistryPacket) == 0x48 || sizeof(FeatureRegistryPacket) == 48, "size of FeatureRegistryPacket should be 72 or 48(default)"); #endif // SIZE_STATIC_ASSERT_IF_DEFINE diff --git a/LiteLoader/Kernel/Network/ReadOnlyBinaryStreamAPI.cpp b/LiteLoader/Kernel/Network/ReadOnlyBinaryStreamAPI.cpp index 61dd233..a9ed66d 100644 --- a/LiteLoader/Kernel/Network/ReadOnlyBinaryStreamAPI.cpp +++ b/LiteLoader/Kernel/Network/ReadOnlyBinaryStreamAPI.cpp @@ -1,5 +1,6 @@ #include #include +#include std::string const& ReadOnlyBinaryStream::getData() const { return *pBuf; @@ -25,12 +26,21 @@ void ReadOnlyBinaryStream::setReadPointer(std::size_t size) { readPointer = len; } +struct IDataInput{ + void* pVT; + ReadOnlyBinaryStream* pReadOnlyBinaryStream; +}; + std::unique_ptr ReadOnlyBinaryStream::getCompoundTag() { - auto tag = CompoundTag::create(); - class CompoundTag& (*rv)(class CompoundTag&, class ReadOnlyBinaryStream&); - *((void**)&rv) = dlsym("?read@?$serialize@VCompoundTag@@@@SA?AVCompoundTag@@AEAVReadOnlyBinaryStream@@@Z"); - (*rv)(*tag, *this); - return std::move(tag); + // auto tag = CompoundTag::create(); + // class CompoundTag& (*rv)(class CompoundTag&, class ReadOnlyBinaryStream&); + // *((void**)&rv) = dlsym("?read@?$serialize@VCompoundTag@@@@SA?AVCompoundTag@@AEAVReadOnlyBinaryStream@@@Z"); + // (*rv)(*tag, *this); + IDataInput pVTVarIntDataInput; + pVTVarIntDataInput.pVT = dlsym("??_7VarIntDataInput@@6B@"); + pVTVarIntDataInput.pReadOnlyBinaryStream = this; + return std::move(NbtIo::read(pVTVarIntDataInput)); + } // static_assert(offsetof(ReadOnlyBinaryStream, pBuf) == 56); \ No newline at end of file diff --git a/LiteLoader/Kernel/Scoreboard/ObjectiveAPI.cpp b/LiteLoader/Kernel/Scoreboard/ObjectiveAPI.cpp index 381dd34..d379741 100644 --- a/LiteLoader/Kernel/Scoreboard/ObjectiveAPI.cpp +++ b/LiteLoader/Kernel/Scoreboard/ObjectiveAPI.cpp @@ -24,4 +24,9 @@ bool Objective::setDisplay(const std::string& slotName, ObjectiveSortOrder sort) return true; } return false; -} \ No newline at end of file +} + +std::string Objective::getName(){ + //ScoreboardCommand::applyPlayerOperation Line186 + return dAccess(this, 64); +}; \ No newline at end of file diff --git a/LiteLoader/Kernel/SimulatedPlayerAPI.cpp b/LiteLoader/Kernel/SimulatedPlayerAPI.cpp index 0a547f8..09e48bf 100644 --- a/LiteLoader/Kernel/SimulatedPlayerAPI.cpp +++ b/LiteLoader/Kernel/SimulatedPlayerAPI.cpp @@ -1,110 +1,110 @@ -#include -#include -#include -#include -#include -#include -#include -#include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include -// static_assert(sizeof(ScriptNavigationResult) == 32); +// // static_assert(sizeof(ScriptNavigationResult) == 32); -// For compatibility -bool SimulatedPlayer::simulateDestory() { - return SimulatedPlayer::simulateDestroy(); -} +// // For compatibility +// bool SimulatedPlayer::simulateDestory() { +// return SimulatedPlayer::simulateDestroy(); +// } -bool SimulatedPlayer::simulateDestroy() { - FaceID face = FaceID::Unknown; - auto blockIns = getBlockFromViewVector(face); - if (blockIns.isNull()) - return false; - return simulateDestroyBlock(blockIns.getPosition(), (ScriptModuleMinecraft::ScriptFacing)face); -} +// bool SimulatedPlayer::simulateDestroy() { +// FaceID face = FaceID::Unknown; +// auto blockIns = getBlockFromViewVector(face); +// if (blockIns.isNull()) +// return false; +// return simulateDestroyBlock(blockIns.getPosition(), (ScriptModuleMinecraft::ScriptFacing)face); +// } -bool SimulatedPlayer::simulateUseItem() { - auto slot = getSelectedItemSlot(); - return simulateUseItemInSlot(slot); -} +// bool SimulatedPlayer::simulateUseItem() { +// auto slot = getSelectedItemSlot(); +// return simulateUseItemInSlot(slot); +// } -bool SimulatedPlayer::simulateSneak() { - setSneaking(true); - return isSneaking(); -} +// bool SimulatedPlayer::simulateSneak() { +// setSneaking(true); +// return isSneaking(); +// } -bool SimulatedPlayer::simulateStopSneaking() { - setSneaking(false); - return !isSneaking(); -} +// bool SimulatedPlayer::simulateStopSneaking() { +// setSneaking(false); +// return !isSneaking(); +// } -template <> -class OwnerPtrT { - char filler[24]; +// template <> +// class OwnerPtrT { +// char filler[24]; -public: - MCAPI ~OwnerPtrT(); +// public: +// MCAPI ~OwnerPtrT(); - inline OwnerPtrT(OwnerPtrT&& right) noexcept { - void (OwnerPtrT::*rv)(OwnerPtrT && right); - *((void**)&rv) = dlsym("??0OwnerStorageEntity@@IEAA@$$QEAV0@@Z"); - (this->*rv)(std::move(right)); - } - inline OwnerPtrT& operator=(OwnerPtrT&& right) noexcept { - void (OwnerPtrT::*rv)(OwnerPtrT && right); - *((void**)&rv) = dlsym("??4OwnerStorageEntity@@IEAAAEAV0@$$QEAV0@@Z"); - (this->*rv)(std::move(right)); - } +// inline OwnerPtrT(OwnerPtrT&& right) noexcept { +// void (OwnerPtrT::*rv)(OwnerPtrT && right); +// *((void**)&rv) = dlsym("??0OwnerStorageEntity@@IEAA@$$QEAV0@@Z"); +// (this->*rv)(std::move(right)); +// } +// inline OwnerPtrT& operator=(OwnerPtrT&& right) noexcept { +// void (OwnerPtrT::*rv)(OwnerPtrT && right); +// *((void**)&rv) = dlsym("??4OwnerStorageEntity@@IEAAAEAV0@$$QEAV0@@Z"); +// (this->*rv)(std::move(right)); +// } - inline SimulatedPlayer* tryGetSimulatedPlayer(bool b = false) { - auto& context = dAccess(this).getStackRef(); - return SimulatedPlayer::tryGetFromEntity(context, b); - } +// inline SimulatedPlayer* tryGetSimulatedPlayer(bool b = false) { +// auto& context = dAccess(this).getStackRef(); +// return SimulatedPlayer::tryGetFromEntity(context, b); +// } - inline bool hasValue() const { - if (!this) - return false; - return dAccess(this); - } - // inline bool isValid() -}; +// inline bool hasValue() const { +// if (!this) +// return false; +// return dAccess(this); +// } +// // inline bool isValid() +// }; -class SimulatedPlayer* SimulatedPlayer::create(std::string const& name, class BlockPos const& position, class AutomaticID dimensionId) { - // auto handler = Global->getServerNetworkHandler(); - // return create(name, position, dimensionId, Global->getServerNetworkHandler()); - OwnerPtrT ownerPtr = Global->createSimulatedPlayer(name, dimensionId, ""); - auto player = ownerPtr.tryGetSimulatedPlayer(); +// class SimulatedPlayer* SimulatedPlayer::create(std::string const& name, class BlockPos const& position, class AutomaticID dimensionId) { +// // auto handler = Global->getServerNetworkHandler(); +// // return create(name, position, dimensionId, Global->getServerNetworkHandler()); +// OwnerPtrT ownerPtr = Global->createSimulatedPlayer(name, dimensionId, ""); +// auto player = ownerPtr.tryGetSimulatedPlayer(); - if (player /* && player->isSimulatedPlayer() */) { - player->postLoad(/* isNewPlayer */ true); - Level& level = player->getLevel(); - level.addUser(std::move(ownerPtr)); - auto pos = position.bottomCenter(); - pos.y = pos.y + 1.62001f; - player->setPos(pos); - player->setRespawnReady(pos); - player->setSpawnBlockRespawnPosition(position, dimensionId); - player->setLocalPlayerAsInitialized(); - player->doInitialSpawn(); - } - return player; -} +// if (player /* && player->isSimulatedPlayer() */) { +// player->postLoad(/* isNewPlayer */ true); +// Level& level = player->getLevel(); +// level.addUser(std::move(ownerPtr)); +// auto pos = position.bottomCenter(); +// pos.y = pos.y + 1.62001f; +// player->setPos(pos); +// player->setRespawnReady(pos); +// player->setSpawnBlockRespawnPosition(position, dimensionId); +// player->setLocalPlayerAsInitialized(); +// player->doInitialSpawn(); +// } +// return player; +// } -class SimulatedPlayer* SimulatedPlayer::create(std::string const& name, class AutomaticID dimensionId) { - OwnerPtrT ownerPtr = Global->createSimulatedPlayer(name, dimensionId, ""); - auto player = ownerPtr.tryGetSimulatedPlayer(); +// class SimulatedPlayer* SimulatedPlayer::create(std::string const& name, class AutomaticID dimensionId) { +// OwnerPtrT ownerPtr = Global->createSimulatedPlayer(name, dimensionId, ""); +// auto player = ownerPtr.tryGetSimulatedPlayer(); - if (player /* && player->isSimulatedPlayer() */) { - player->postLoad(/* isNewPlayer */ true); - Level& level = player->getLevel(); - level.addUser(std::move(ownerPtr)); - // auto pos = bpos.bottomCenter(); - // pos.y = pos.y + 1.62001; - // player->setPos(pos); - // player->setRespawnReady(pos); - // player->setSpawnBlockRespawnPosition(bpos, dimId); - player->setLocalPlayerAsInitialized(); - player->doInitialSpawn(); - } - return player; -} +// if (player /* && player->isSimulatedPlayer() */) { +// player->postLoad(/* isNewPlayer */ true); +// Level& level = player->getLevel(); +// level.addUser(std::move(ownerPtr)); +// // auto pos = bpos.bottomCenter(); +// // pos.y = pos.y + 1.62001; +// // player->setPos(pos); +// // player->setRespawnReady(pos); +// // player->setSpawnBlockRespawnPosition(bpos, dimId); +// player->setLocalPlayerAsInitialized(); +// player->doInitialSpawn(); +// } +// return player; +// }