diff --git a/LiteLoader/Header/MC/Level.hpp b/LiteLoader/Header/MC/Level.hpp index d27abc1..9b86204 100644 --- a/LiteLoader/Header/MC/Level.hpp +++ b/LiteLoader/Header/MC/Level.hpp @@ -41,6 +41,7 @@ public: LIAPI static std::vector getAllPlayers(); LIAPI Player* getPlayer(const string& info); // name or xuid LIAPI Player* getPlayer(ActorUniqueID id); // UniqueID + LIAPI Player* getPlayer(const mce::UUID& uuid)const; //原生函数Level::getPlayer(mce::UUID) LIAPI static Actor* getEntity(ActorUniqueID id); LIAPI static std::vector getAllEntities(int dimId); LIAPI static std::vector getAllEntities(); diff --git a/LiteLoader/Kernel/MC/LevelAPI.cpp b/LiteLoader/Kernel/MC/LevelAPI.cpp index 9dcfb99..22c1826 100644 --- a/LiteLoader/Kernel/MC/LevelAPI.cpp +++ b/LiteLoader/Kernel/MC/LevelAPI.cpp @@ -294,7 +294,7 @@ Player* Level::getPlayer(const string& info) { Player* Level::getPlayer(ActorUniqueID id) { // 裂开,这个符号也没有 - //根据伪代码重新写实现 + // 根据伪代码重新写实现 Actor* actor = Level::fetchEntity(id,0); if(actor && actor->hasCategory((ActorCategory)1)) return (Player*)actor; @@ -303,6 +303,17 @@ Player* Level::getPlayer(ActorUniqueID id) { //return SymCall("?getPlayer@Level@@UEBAPEAVPlayer@@UActorUniqueID@@@Z", Player*, Level*, ActorUniqueID)(Global, id); } +Player* Level::getPlayer(const mce::UUID& uuid) const{ + // 根据函数 + // std::_Func_impl_no_alloc__lambda_71cde901375eb38deb56f48a96514d77__bool_Player_const___::_Do_call + Player* findPlayer = this->findPlayer([&](const Player& pl)->bool { + if (pl.getClientUUID() == uuid) + return true; + return false; + }); + return findPlayer; +} + Actor* Level::spawnMob(Vec3 pos, int dimId, std::string name) { Spawner* sp = &Global->getSpawner();