Skip to content

Commit bd5ede5

Browse files
committed
feat: add new PlayerInfo API
1 parent b6258ef commit bd5ede5

File tree

4 files changed

+156
-6
lines changed

4 files changed

+156
-6
lines changed

docs/apis/DataAPI/PlayerData.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ When a player enters the server for the first time, his name and XUID are automa
6666

6767
- Parameters:
6868
- xuid: `String`
69-
Player's XUID to query.
69+
The xuid of the player to query.
7070
- Return value: Player's name.
7171
- Return value type: `String`
7272
- If the return value is `Null`, it means the query failed.
@@ -105,3 +105,38 @@ When a player enters the server for the first time, his name and XUID are automa
105105
- `uuid`: Player's UUID.
106106

107107
Tip: The player name stored in the XUID database is named corresponding to the player object. `realName` field.
108+
109+
!!! tip
110+
APIs below are added in LSE 0.8.13, using these API will make plugin not compitable with older version.
111+
#### Query player information by XUID
112+
113+
`data.fromXuid(xuid)`
114+
115+
- Parameters:
116+
- xuid: `String`
117+
The XUID of the player to query.
118+
- Return value: Player information entry, example: `{xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}`
119+
- Return value type: `Object`
120+
- If the return value is `Null`, it means the query failed.
121+
122+
#### Query player information by UUID
123+
124+
`data.fromUuid(uuid)`
125+
126+
- Parameters:
127+
- uuid: `String`
128+
The UUID of the player to query.
129+
- Return value: Player information entry, example: `{xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}`
130+
- Return value type: `Object`
131+
- If the return value is `Null`, it means the query failed.
132+
133+
#### Query player information by name
134+
135+
`data.fromName(name)`
136+
137+
- Parameters:
138+
- name: `String`
139+
The name of the player to query.
140+
- Return value: Player information entry, example: `{xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}`
141+
- Return value type: `Object`
142+
- If the return value is `Null`, it means the query failed.

docs/apis/DataAPI/PlayerData.zh.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,38 @@ XUID数据库让你可以即使在玩家离线的时候,也可以查询玩家
105105
- `uuid`: 玩家UUID
106106

107107
提示:XUID数据库中储存的玩家名为玩家对象对应的`realName`字段
108+
109+
!!! tip
110+
以下API均为LSE 0.8.13新API,使用以下API将导致插件无法兼容旧版
111+
#### 根据XUID查询玩家信息
112+
113+
`data.fromXuid(xuid)`
114+
115+
- 参数:
116+
- xuid: `String`
117+
要查询玩家的XUID
118+
- 返回值: 玩家信息条目,例如 `{xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}`
119+
- 返回值类型: `Object`
120+
- 如果返回值为`Null`,则代表查询失败
121+
122+
#### 根据UUID查询玩家信息
123+
124+
`data.fromUuid(uuid)`
125+
126+
- 参数:
127+
- uuid: `String`
128+
要查询玩家的UUID
129+
- 返回值: 玩家信息条目,例如 `{xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}`
130+
- 返回值类型: `Object`
131+
- 如果返回值为`Null`,则代表查询失败
132+
133+
#### 根据名字查询玩家信息
134+
135+
`data.fromName(name)`
136+
137+
- 参数:
138+
- name: `String`
139+
要查询玩家的名字
140+
- 返回值: 玩家信息条目,例如 `{xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}`
141+
- 返回值类型: `Object`
142+
- 如果返回值为`Null`,则代表查询失败

src/legacy/api/DataAPI.cpp

Lines changed: 81 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ ClassDefine<void> DataClassBuilder = defineClass("data")
2727
.function("xuid2uuid", &DataClass::xuid2uuid)
2828
.function("name2uuid", &DataClass::name2uuid)
2929
.function("getAllPlayerInfo", &DataClass::getAllPlayerInfo)
30+
.function("fromUuid", &DataClass::fromUuid)
31+
.function("fromXuid", &DataClass::fromXuid)
32+
.function("fromName", &DataClass::fromName)
3033
.function("parseJson", &DataClass::parseJson)
3134
.function("toJson", &DataClass::toJson)
3235
.function("toMD5", &DataClass::toMD5)
@@ -701,7 +704,11 @@ Local<Value> DataClass::xuid2name(const Arguments& args) {
701704

702705
try {
703706
auto playerInfo = ll::service::PlayerInfo::getInstance().fromXuid(args[0].asString().toString());
704-
return String::newString(playerInfo ? playerInfo->name : std::string());
707+
if (playerInfo) {
708+
return String::newString(playerInfo->name);
709+
} else {
710+
return {};
711+
}
705712
}
706713
CATCH("Fail in XuidToName!");
707714
}
@@ -712,7 +719,11 @@ Local<Value> DataClass::name2xuid(const Arguments& args) {
712719

713720
try {
714721
auto playerInfo = ll::service::PlayerInfo::getInstance().fromName(args[0].asString().toString());
715-
return String::newString(playerInfo ? playerInfo->xuid : std::string());
722+
if (playerInfo) {
723+
return String::newString(playerInfo->xuid);
724+
} else {
725+
return {};
726+
}
716727
}
717728
CATCH("Fail in NameToXuid!");
718729
}
@@ -723,7 +734,11 @@ Local<Value> DataClass::name2uuid(const Arguments& args) {
723734

724735
try {
725736
auto playerInfo = ll::service::PlayerInfo::getInstance().fromName(args[0].asString().toString());
726-
return String::newString(playerInfo ? playerInfo->uuid.asString() : std::string());
737+
if (playerInfo) {
738+
return String::newString(playerInfo->uuid.asString());
739+
} else {
740+
return {};
741+
}
727742
}
728743
CATCH("Fail in NameToUuid!");
729744
}
@@ -734,12 +749,15 @@ Local<Value> DataClass::xuid2uuid(const Arguments& args) {
734749

735750
try {
736751
auto playerInfo = ll::service::PlayerInfo::getInstance().fromXuid(args[0].asString().toString());
737-
return String::newString(playerInfo ? playerInfo->uuid.asString() : std::string());
752+
if (playerInfo) {
753+
return String::newString(playerInfo->uuid.asString());
754+
} else {
755+
return {};
756+
}
738757
}
739758
CATCH("Fail in XuidToUuid!");
740759
}
741760

742-
// Unsupported
743761
Local<Value> DataClass::getAllPlayerInfo(const Arguments& args) {
744762
CHECK_ARGS_COUNT(args, 0);
745763

@@ -763,6 +781,64 @@ Local<Value> DataClass::getAllPlayerInfo(const Arguments& args) {
763781
CATCH("Fail in getAllPlayerInfo!");
764782
}
765783

784+
// New API for LSE
785+
Local<Value> DataClass::fromUuid(const Arguments& args) {
786+
CHECK_ARGS_COUNT(args, 1);
787+
CHECK_ARG_TYPE(args[0], ValueKind::kString);
788+
789+
try {
790+
auto playerInfo = ll::service::PlayerInfo::getInstance().fromUuid(args[0].asString().toString());
791+
if (playerInfo) {
792+
auto object = Object::newObject();
793+
object.set("xuid", playerInfo->xuid);
794+
object.set("name", playerInfo->name);
795+
object.set("uuid", playerInfo->uuid.asString());
796+
return object;
797+
} else {
798+
return {};
799+
}
800+
}
801+
CATCH("Fail in NameToUuid!");
802+
}
803+
804+
Local<Value> DataClass::fromXuid(const Arguments& args) {
805+
CHECK_ARGS_COUNT(args, 1);
806+
CHECK_ARG_TYPE(args[0], ValueKind::kString);
807+
808+
try {
809+
auto playerInfo = ll::service::PlayerInfo::getInstance().fromXuid(args[0].asString().toString());
810+
if (playerInfo) {
811+
auto object = Object::newObject();
812+
object.set("xuid", playerInfo->xuid);
813+
object.set("name", playerInfo->name);
814+
object.set("uuid", playerInfo->uuid.asString());
815+
return object;
816+
} else {
817+
return {};
818+
}
819+
}
820+
CATCH("Fail in NameToUuid!");
821+
}
822+
823+
Local<Value> DataClass::fromName(const Arguments& args) {
824+
CHECK_ARGS_COUNT(args, 1);
825+
CHECK_ARG_TYPE(args[0], ValueKind::kString);
826+
827+
try {
828+
auto playerInfo = ll::service::PlayerInfo::getInstance().fromName(args[0].asString().toString());
829+
if (playerInfo) {
830+
auto object = Object::newObject();
831+
object.set("xuid", playerInfo->xuid);
832+
object.set("name", playerInfo->name);
833+
object.set("uuid", playerInfo->uuid.asString());
834+
return object;
835+
} else {
836+
return {};
837+
}
838+
}
839+
CATCH("Fail in NameToUuid!");
840+
}
841+
766842
Local<Value> DataClass::toJson(const Arguments& args) {
767843
CHECK_ARGS_COUNT(args, 1);
768844
if (args.size() >= 2) CHECK_ARG_TYPE(args[1], ValueKind::kNumber);

src/legacy/api/DataAPI.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ class DataClass {
1515
static Local<Value> xuid2uuid(const Arguments& args);
1616
static Local<Value> name2uuid(const Arguments& args);
1717
static Local<Value> getAllPlayerInfo(const Arguments& args);
18+
// New API for LSE
19+
static Local<Value> fromUuid(const Arguments& args);
20+
static Local<Value> fromXuid(const Arguments& args);
21+
static Local<Value> fromName(const Arguments& args);
1822

1923
static Local<Value> parseJson(const Arguments& args);
2024
static Local<Value> toJson(const Arguments& args);

0 commit comments

Comments
 (0)