From 8d5a52b905ff039d67611d47822026375e08362d Mon Sep 17 00:00:00 2001 From: Tsubasa6848 Date: Sun, 3 Mar 2024 02:24:35 +0800 Subject: [PATCH 1/3] update sdk --- SDK-GMLIB | 2 +- src/PlaceholderApi.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SDK-GMLIB b/SDK-GMLIB index fa3ec71..2bb9134 160000 --- a/SDK-GMLIB +++ b/SDK-GMLIB @@ -1 +1 @@ -Subproject commit fa3ec71bdcb9a23d90544e858d4d2db60ad2fd74 +Subproject commit 2bb91343e1885f21937705b8fcce304b94bc40ba diff --git a/src/PlaceholderApi.cpp b/src/PlaceholderApi.cpp index bea552f..6e8a3a7 100644 --- a/src/PlaceholderApi.cpp +++ b/src/PlaceholderApi.cpp @@ -108,7 +108,7 @@ std::string registerStaticPlaceholder( } std::string translateString(std::string const& str, std::string const& xuid) { - return GMLIB::Server::PlaceholderAPI::translate(str, ll::service::bedrock::getLevel()->getPlayerByXuid(xuid)); + return GMLIB::Server::PlaceholderAPI::translateString(str, ll::service::bedrock::getLevel()->getPlayerByXuid(xuid)); } bool unRegisterPlaceholder(std::string const& str) { return GMLIB::Server::PlaceholderAPI::unRegisterPlaceholder(str); } From fab1ec31fc6d50ac2c1e18b98fb7fda4f6d816d1 Mon Sep 17 00:00:00 2001 From: Tsubasa6848 Date: Sun, 3 Mar 2024 02:52:16 +0800 Subject: [PATCH 2/3] fix: fix PlaceholderAPI --- lib/BEPlaceholderAPI-JS.js | 48 ++++++++------ src/PlaceholderApi.cpp | 130 ++++++++++++++----------------------- 2 files changed, 75 insertions(+), 103 deletions(-) diff --git a/lib/BEPlaceholderAPI-JS.js b/lib/BEPlaceholderAPI-JS.js index 91814db..45284e6 100644 --- a/lib/BEPlaceholderAPI-JS.js +++ b/lib/BEPlaceholderAPI-JS.js @@ -1,11 +1,14 @@ -const PAPIgetValueAPI = ll.import("BEPlaceholderAPI", "GetValue") -const PAPIgetValueByPlayerAPI = ll.import("BEPlaceholderAPI", "GetValueWithPlayer") -const PAPIregisterPlayerPlaceholderAPI = ll.import("BEPlaceholderAPI", "registerPlayerPlaceholder") -const PAPIregisterServerPlaceholderAPI = ll.import("BEPlaceholderAPI", "registerServerPlaceholder") -const PAPIregisterStaticPlaceholderAPI = ll.import("BEPlaceholderAPI", "registerStaticPlaceholder") -const PAPItranslateStringAPI = ll.import("BEPlaceholderAPI", "translateString") -const PAPIunRegisterPlaceholderAPI = ll.import("BEPlaceholderAPI", "unRegisterPlaceholder") -const PAPIgetAllPAPI = ll.import("BEPlaceholderAPI", "getAllPAPI") +const PlaceholderAPI = { + getValueAPI: ll.import("BEPlaceholderAPI", "GetValue"), + getValueByPlayerAPI: ll.import("BEPlaceholderAPI", "GetValueWithPlayer"), + registerPlayerPlaceholderAPI: ll.import("BEPlaceholderAPI", "registerPlayerPlaceholder"), + registerServerPlaceholderAPI: ll.import("BEPlaceholderAPI", "registerServerPlaceholder"), + registerStaticPlaceholderAPI: ll.import("BEPlaceholderAPI", "registerStaticPlaceholder"), + translateStringAPI: ll.import("BEPlaceholderAPI", "translateString"), + translateStringWithPlayerAPI: ll.import("BEPlaceholderAPI", "translateStringWithPlayer"), + unRegisterPlaceholderAPI: ll.import("BEPlaceholderAPI", "unRegisterPlaceholder"), + getAllPAPI: ll.import("BEPlaceholderAPI", "getAllPAPI") +} Function.prototype.getName = function () { return this.name || this.toString().match(/function\s*([^(]*)\(/)[1] @@ -17,38 +20,41 @@ class PAPI { } static registerPlayerPlaceholder(func, PluginName, PAPIName) { - ll.export(func, PluginName, func.getName()) - PAPIregisterPlayerPlaceholderAPI(PluginName, func.getName(), PAPIName) + ll.export(func, PluginName, func.getName()); + PlaceholderAPI.registerPlayerPlaceholderAPI(PluginName, func.getName(), PAPIName); } static registerServerPlaceholder(func, PluginName, PAPIName) { - ll.export(func, PluginName, func.getName()) - PAPIregisterServerPlaceholderAPI(PluginName, func.getName(), PAPIName) + ll.export(func, PluginName, func.getName()); + PlaceholderAPI.registerServerPlaceholderAPI(PluginName, func.getName(), PAPIName); } static registerStaticPlaceholder(func, PluginName, PAPIName, UpdateInterval = 50) { - ll.export(func, PluginName, func.getName()) - PAPIregisterStaticPlaceholderAPI(PluginName, func.getName(), PAPIName, UpdateInterval) + ll.export(func, PluginName, func.getName()); + PlaceholderAPI.registerStaticPlaceholderAPI(PluginName, func.getName(), PAPIName, UpdateInterval); } static getValue(key) { - return PAPIgetValueAPI(key) + return PlaceholderAPI.getValueAPI(key); } - static getValueByPlayer(key, xuid) { - return PAPIgetValueByPlayerAPI(key, xuid) + static getValueByPlayer(key, pl) { + return PlaceholderAPI.getValueByPlayerAPI(key, pl); } - static translateString(str, xuid = "") { - return PAPItranslateStringAPI(str, xuid) + static translateString(str, pl = null) { + if (pl) { + return PlaceholderAPI.translateStringWithPlayerAPI(str, pl); + } + return PlaceholderAPI.translateStringAPI(str); } static unRegisterPlaceholder(str) { - return PAPIunRegisterPlaceholderAPI(str) + return PlaceholderAPI.unRegisterPlaceholderAPI(str); } static getAllPAPI() { - return PAPIgetAllPAPI(); + return PlaceholderAPI.getAllPAPI(); } } diff --git a/src/PlaceholderApi.cpp b/src/PlaceholderApi.cpp index 6e8a3a7..79b418a 100644 --- a/src/PlaceholderApi.cpp +++ b/src/PlaceholderApi.cpp @@ -3,114 +3,79 @@ namespace PAPIRemoteCall { -std::string removeBrackets(std::string a1) { - a1.erase(a1.find_last_not_of("%") + 1); - return a1; -} - -bool isParameters(std::string str) { - std::regex reg("[<]([^<>]+)[>]"); - return std::regex_search(removeBrackets(str), reg); -} - std::string GetValue(std::string const& from) { return GMLIB::Server::PlaceholderAPI::getValue(from); } std::string GetValueWithPlayer(std::string const& a1, std::string const& a2) { return GMLIB::Server::PlaceholderAPI::getValue(a1, ll::service::bedrock::getLevel()->getPlayer(a2)); } -std::string -registerPlayerPlaceholder(std::string const& PluginName, std::string const& FuncName, std::string const& PAPIName) { +bool registerPlayerPlaceholder( + std::string const& PluginName, + std::string const& FuncName, + std::string const& PAPIName +) { if (RemoteCall::hasFunc(PluginName, FuncName)) { - if (isParameters(PAPIName)) { - auto Call = - RemoteCall::importAs)>( - PluginName, - FuncName - ); - GMLIB::Server::PlaceholderAPI::registerPlayerPlaceholder( - PAPIName, - [Call](Player* sp, std::unordered_map map) { - return Call(sp->getXuid(), map); - }, - PluginName - ); - } else { - auto Call = RemoteCall::importAs(PluginName, FuncName); - GMLIB::Server::PlaceholderAPI::registerPlayerPlaceholder( - PAPIName, - [Call](Player* sp) { return Call(sp->getXuid()); }, - PluginName - ); - } - } else { - // logger.error("Function no find({}:{})", PluginName, FuncName); - return "Function no find"; + auto Call = RemoteCall::importAs(PluginName, FuncName); + GMLIB::Server::PlaceholderAPI::registerPlayerPlaceholder( + PAPIName, + [Call](Player* sp) { return Call(sp); }, + PluginName + ); + return true; } - return "Register Success"; + return false; } -std::string -registerServerPlaceholder(std::string const& PluginName, std::string const& FuncName, std::string const& PAPIName) { +bool registerServerPlaceholder( + std::string const& PluginName, + std::string const& FuncName, + std::string const& PAPIName +) { if (RemoteCall::hasFunc(PluginName, FuncName)) { - if (isParameters(PAPIName)) { - auto Call = - RemoteCall::importAs)>(PluginName, FuncName); - GMLIB::Server::PlaceholderAPI::registerServerPlaceholder( - PAPIName, - [Call](std::unordered_map map) { return Call(map); }, - PluginName - ); - } else { - auto Call = RemoteCall::importAs(PluginName, FuncName); - GMLIB::Server::PlaceholderAPI::registerServerPlaceholder( - PAPIName, - [Call]() { return Call(); }, - PluginName - ); - } - } else { - // logger.error("Function no find({}:{})", PluginName, FuncName); - return "Function no find"; + auto Call = RemoteCall::importAs(PluginName, FuncName); + GMLIB::Server::PlaceholderAPI::registerServerPlaceholder( + PAPIName, + [Call]() { return Call(); }, + PluginName + ); + return true; } - return "Register Success"; + return false; } -std::string registerStaticPlaceholder( +bool registerStaticPlaceholder( std::string const& PluginName, std::string const& FuncName, std::string const& PAPIName, int num ) { if (RemoteCall::hasFunc(PluginName, FuncName)) { - if (isParameters(PAPIName)) { - auto Call = RemoteCall::importAs(PluginName, FuncName); - if (num == -1) { - GMLIB::Server::PlaceholderAPI::registerStaticPlaceholder( - PAPIName, - [Call] { return Call(); }, - PluginName - ); - } else { - GMLIB::Server::PlaceholderAPI::registerStaticPlaceholder( - PAPIName, - num, - [Call] { return Call(); }, - PluginName - ); - } + auto Call = RemoteCall::importAs(PluginName, FuncName); + if (num == -1) { + GMLIB::Server::PlaceholderAPI::registerStaticPlaceholder( + PAPIName, + [Call] { return Call(); }, + PluginName + ); + } else { + GMLIB::Server::PlaceholderAPI::registerStaticPlaceholder( + PAPIName, + num, + [Call] { return Call(); }, + PluginName + ); } - } else { - // logger.error("Function no find({}:{})", PluginName, FuncName); - return "Function no find"; + return true; } - return "Register Success"; + return false; } -std::string translateString(std::string const& str, std::string const& xuid) { - return GMLIB::Server::PlaceholderAPI::translateString(str, ll::service::bedrock::getLevel()->getPlayerByXuid(xuid)); +std::string translateStringWithPlayer(std::string const& str, Player* pl) { + return GMLIB::Server::PlaceholderAPI::translateString(str, pl); } +std::string translateString(std::string const& str) { return GMLIB::Server::PlaceholderAPI::translateString(str); } + bool unRegisterPlaceholder(std::string const& str) { return GMLIB::Server::PlaceholderAPI::unRegisterPlaceholder(str); } std::vector getAllPAPI() { return GMLIB::Server::PlaceholderAPI::getAllPAPI(); } @@ -127,6 +92,7 @@ void ExportPAPI() { EXPORTAPI(PAPIRemoteCall::GetValue); EXPORTAPI(PAPIRemoteCall::GetValueWithPlayer); EXPORTAPI(PAPIRemoteCall::translateString); + EXPORTAPI(PAPIRemoteCall::translateStringWithPlayer); EXPORTAPI(PAPIRemoteCall::unRegisterPlaceholder); EXPORTAPI(PAPIRemoteCall::getAllPAPI); } \ No newline at end of file From 31354c1f5062e8eb1c1b2ffe223fddb5260f2047 Mon Sep 17 00:00:00 2001 From: Tsubasa6848 Date: Sun, 3 Mar 2024 02:56:44 +0800 Subject: [PATCH 3/3] chore: update version --- src/Global.h | 3 ++- tooth.json | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Global.h b/src/Global.h index b822874..c1fa162 100644 --- a/src/Global.h +++ b/src/Global.h @@ -1,9 +1,10 @@ #pragma once #include + #include #define PLUGIN_NAME "GMLIB-LRCA" -#define LIB_VERSION SemVersion(0, 9, 0, "", "") +#define LIB_VERSION SemVersion(0, 9, 1, "", "") extern ll::Logger logger; diff --git a/tooth.json b/tooth.json index 11fa278..454d9bb 100644 --- a/tooth.json +++ b/tooth.json @@ -1,7 +1,7 @@ { "format_version": 2, "tooth": "github.com/GroupMountain/GMLIB-LegacyRemoteCallApi", - "version": "0.9.0", + "version": "0.9.1", "info": { "name": "GMLIB-LegacyRemoteCallApi", "description": "Legacy RemoteCall API for GMLIB", @@ -14,9 +14,9 @@ "library" ] }, - "asset_url": "https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi/releases/download/v0.9.0/GMLIB-LegacyRemoteCallApi-windows-x64.zip", + "asset_url": "https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi/releases/download/v0.9.1/GMLIB-LegacyRemoteCallApi-windows-x64.zip", "dependencies": { - "github.com/GroupMountain/GMLIB": ">=0.9.0" + "github.com/GroupMountain/GMLIB": ">=0.9.2" }, "files": { "place": [