From 54096c84cae5911c2d72990a618f1cf2ee384d3e Mon Sep 17 00:00:00 2001 From: n15421 <119112174+n15421@users.noreply.github.com> Date: Mon, 2 Jun 2025 21:42:53 +0800 Subject: [PATCH] feat: adapt to gmlib 1.2.0-rc.1 --- manifest.json | 2 +- src/CompatibilityApi.cpp | 37 +++++++++++++++++-------------------- tooth.json | 6 +++--- xmake.lua | 6 +++--- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/manifest.json b/manifest.json index ae391a8..e1798b3 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "${pluginName}", "entry": "${pluginFile}", - "version": "1.0.1", + "version": "1.1.1", "author": "GroupMountain", "type": "native", "passive": true, diff --git a/src/CompatibilityApi.cpp b/src/CompatibilityApi.cpp index cb19b3b..42aae93 100644 --- a/src/CompatibilityApi.cpp +++ b/src/CompatibilityApi.cpp @@ -1,4 +1,5 @@ #include "Global.h" +#include "mc/platform/UUID.h" #include ActorUniqueID parseScriptUniqueID(std::string const& uniqueId) { @@ -35,7 +36,7 @@ void Export_Compatibility_API() { return result; }); RemoteCall::exportAs("GMLIB_API", "getPlayerNbt", [](std::string const& uuid) -> std::unique_ptr { - if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) { + if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) { return std::make_unique(*player->getNbt()); } return nullptr; @@ -44,7 +45,7 @@ void Export_Compatibility_API() { "GMLIB_API", "setPlayerNbt", [](std::string const& uuid, CompoundTag* nbt, bool forceCreate) -> bool { - if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) return player->setNbt(*nbt); + if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) return player->setNbt(*nbt); return forceCreate ? OfflinePlayer::createNewPlayerNbt(mce::UUID::fromString(uuid), *nbt).has_value() : false; } @@ -53,7 +54,7 @@ void Export_Compatibility_API() { "GMLIB_API", "setPlayerNbtTags", [](std::string const& uuid, CompoundTag* nbt, std::vector tags) -> bool { - if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) { + if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) { auto nbt2 = *player->getNbt(); GMCompoundTag::writeNbtTags(nbt2, *nbt, tags); return player->setNbt(nbt2); @@ -200,7 +201,7 @@ void Export_Compatibility_API() { } }); RemoteCall::exportAs("GMLIB_API", "getPlayerPosition", [](std::string const& uuid) -> std::pair { - if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) { + if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) { if (auto pos = player->getPlayerPosition()) { return *pos; } @@ -214,7 +215,7 @@ void Export_Compatibility_API() { "GMLIB_API", "setPlayerPosition", [](std::string const& uuid, std::pair pos) -> bool { - if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) { + if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) { return player->setPosition(pos.first, pos.second); } return false; @@ -475,33 +476,29 @@ void Export_Compatibility_API() { } ); RemoteCall::exportAs("GMLIB_API", "getXuidByUuid", [](std::string const& uuid) -> std::string { - return UserCache::getXuidByUuid(mce::UUID::fromString(uuid)).value_or(""); + return UserCache::getInstance()->from(mce::UUID::fromString(uuid))->mXuid; }); RemoteCall::exportAs("GMLIB_API", "getXuidByName", [](std::string const& name) -> std::string { - return UserCache::getXuidByName(name).value_or(""); + return UserCache::getInstance()->from(name)->mXuid; }); RemoteCall::exportAs("GMLIB_API", "getNameByUuid", [](std::string const& uuid) -> std::string { - return UserCache::getNameByUuid(mce::UUID::fromString(uuid)).value_or(""); + return UserCache::getInstance()->from(mce::UUID::fromString(uuid))->mName; }); RemoteCall::exportAs("GMLIB_API", "getNameByXuid", [](std::string const& xuid) -> std::string { - return UserCache::getNameByXuid(xuid).value_or(""); + return UserCache::getInstance()->from(xuid, UserCache::QueryType::Xuid)->mName; }); RemoteCall::exportAs("GMLIB_API", "getUuidByXuid", [](std::string const& xuid) -> std::string { - return UserCache::getUuidByXuid(xuid).transform( - [](mce::UUID&& uuid) -> std::string { return uuid.asString(); } - ).value_or(""); + return UserCache::getInstance()->from(xuid, UserCache::QueryType::Xuid)->mUuid.asString(); }); RemoteCall::exportAs("GMLIB_API", "getUuidByName", [](std::string const& name) -> std::string { - return UserCache::getUuidByName(name).transform( - [](mce::UUID&& uuid) -> std::string { return uuid.asString(); } - ).value_or(""); + return UserCache::getInstance()->from(name)->mUuid.asString(); }); RemoteCall::exportAs( "GMLIB_API", "getAllPlayerInfo", []() -> std::vector> { std::vector> result; - for (auto entry : UserCache::entries()) { + for (auto entry : UserCache::getInstance()->entries()) { result.push_back({ {"Name", entry.mName }, {"Xuid", entry.mXuid }, @@ -612,21 +609,21 @@ void Export_Compatibility_API() { result.push_back({ {"Name", gameRule.mName }, {"Type", "Bool" }, - {"Value", std::to_string(gameRule.mValue->mUnk29fff1.as())} + {"Value", std::to_string(gameRule.mValue->boolVal)} }); break; case GameRule::Type::Float: result.push_back({ {"Name", gameRule.mName }, {"Type", "Float" }, - {"Value", std::to_string(gameRule.mValue->mUnk768db5.as())} + {"Value", std::to_string(gameRule.mValue->floatVal)} }); break; case GameRule::Type::Int: result.push_back({ {"Name", gameRule.mName }, {"Type", "Int" }, - {"Value", std::to_string(gameRule.mValue->mUnk2ab4f3.as())} + {"Value", std::to_string(gameRule.mValue->intVal)} }); break; case GameRule::Type::Invalid: @@ -804,7 +801,7 @@ void Export_Compatibility_API() { return magic_enum::enum_name(container->mContainerType).data(); }); RemoteCall::exportAs("GMLIB_API", "hasPlayerNbt", [](std::string const& uuid) -> bool { - return OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid)) + return OfflinePlayer::fromUuid(mce::UUID::fromString(uuid)) .transform([&](auto&& player) -> bool { return player.hasNbt(); }) .value_or(false); }); diff --git a/tooth.json b/tooth.json index 5ec65b2..7e1e30d 100644 --- a/tooth.json +++ b/tooth.json @@ -2,7 +2,7 @@ "format_version": 3, "format_uuid": "289f771f-2c9a-4d73-9f3f-8492495a924d", "tooth": "github.com/GroupMountain/GMLIB-LegacyRemoteCallApi", - "version": "1.0.1", + "version": "1.1.1", "info": { "name": "GMLIB-LegacyRemoteCallApi", "description": "Legacy RemoteCall API for GMLIB", @@ -20,8 +20,8 @@ "platform": "win-x64", "dependencies": { "github.com/LiteLDev/LeviLamina": ">=1.1.1", - "github.com/GroupMountain/GMLIB-Release": ">=1.0.0", - "github.com/MiracleForest/iListenAttentively-Release": ">=0.4.1" + "github.com/GroupMountain/GMLIB-Release": ">=1.2.0-rc.1", + "github.com/MiracleForest/iListenAttentively-Release": ">=0.5.0-rc.1" }, "assets": [ { diff --git a/xmake.lua b/xmake.lua index 7be90b2..ee1cdfa 100644 --- a/xmake.lua +++ b/xmake.lua @@ -8,11 +8,11 @@ if not has_config("vs_runtime") then set_runtimes("MD") end -add_requires("levilamina 1.1.1", {configs = {target_type = "server"}}) +add_requires("levilamina 1.2.0", {configs = {target_type = "server"}}) add_requires("legacyremotecall") add_requires("levibuildscript") -add_requires("ilistenattentively") -add_requires("gmlib") +add_requires("ilistenattentively 0.5.0-rc.1") +add_requires("gmlib 1.2.0-rc.1") target("GMLIB-LegacyRemoteCallApi") add_cxflags(