Skip to content

Commit 4fa53a4

Browse files
committed
fix: fix Player::langCode #66
refactor: add pointer check for setMovementSpeed
1 parent 7aaa611 commit 4fa53a4

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

src/legacy/api/EntityAPI.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,10 +1160,12 @@ Local<Value> EntityClass::setMovementSpeed(const Arguments& args) {
11601160
if (!entity) return Local<Value>();
11611161

11621162
AttributeInstance* movementSpeedAttribute = entity->getMutableAttribute(SharedAttributes::MOVEMENT_SPEED);
1163+
if (movementSpeedAttribute) {
1164+
movementSpeedAttribute->setCurrentValue(args[0].asNumber().toFloat());
1165+
return Boolean::newBoolean(true);
1166+
}
11631167

1164-
movementSpeedAttribute->setCurrentValue(args[0].asNumber().toFloat());
1165-
1166-
return Boolean::newBoolean(true);
1168+
return Boolean::newBoolean(false);
11671169
}
11681170
CATCH("Fail in setMovementSpeed!");
11691171
}

src/legacy/api/PlayerAPI.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,18 +1016,11 @@ Local<Value> PlayerClass::getUniqueID() {
10161016

10171017
Local<Value> PlayerClass::getLangCode() {
10181018
try {
1019-
std::string result = "unknown";
1020-
auto map = ll::service::getServerNetworkHandler()
1021-
->fetchConnectionRequest(get()->getNetworkIdentifier())
1022-
.mRawToken.get()
1023-
->mDataInfo.value_.map_;
1024-
for (auto& iter : *map) {
1025-
string s(iter.first.c_str());
1026-
if (s.find("LanguageCode") != std::string::npos) {
1027-
result = iter.second.value_.string_;
1028-
}
1029-
}
1030-
return String::newString(result);
1019+
Json::Value& requestJson = ll::service::getServerNetworkHandler()
1020+
->fetchConnectionRequest(get()->getNetworkIdentifier())
1021+
.mRawToken->mDataInfo;
1022+
1023+
return String::newString(requestJson.get("LanguageCode", "unknown").asString("unknown"));
10311024
}
10321025
CATCH("Fail in getLangCode!");
10331026
}
@@ -2633,10 +2626,18 @@ Local<Value> PlayerClass::setMovementSpeed(const Arguments& args) {
26332626
if (!player) return Local<Value>();
26342627

26352628
AttributeInstance* movementSpeedAttribute = player->getMutableAttribute(SharedAttributes::MOVEMENT_SPEED);
2636-
2637-
movementSpeedAttribute->setCurrentValue(args[0].asNumber().toFloat());
2638-
2639-
return Boolean::newBoolean(true);
2629+
if (movementSpeedAttribute) {
2630+
movementSpeedAttribute->setCurrentValue(args[0].asNumber().toFloat());
2631+
return Boolean::newBoolean(true);
2632+
} else {
2633+
player->_registerPlayerAttributes();
2634+
movementSpeedAttribute = player->getMutableAttribute(SharedAttributes::MOVEMENT_SPEED); // Check again
2635+
if (movementSpeedAttribute) {
2636+
movementSpeedAttribute->setCurrentValue(args[0].asNumber().toFloat());
2637+
return Boolean::newBoolean(true);
2638+
}
2639+
}
2640+
return Boolean::newBoolean(false);
26402641
}
26412642
CATCH("Fail in setMovementSpeed!");
26422643
}

0 commit comments

Comments
 (0)