From 21dcfb7c7ceeb98f9a9b56ba38c157fc2e6c0ad4 Mon Sep 17 00:00:00 2001 From: AconiteGodOfSWG Date: Mon, 15 Feb 2021 04:09:10 -0500 Subject: [PATCH] Add JNI Method for getting account username --- .../src/shared/ScriptMethodsPlayerAccount.cpp | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/engine/server/library/serverScript/src/shared/ScriptMethodsPlayerAccount.cpp b/engine/server/library/serverScript/src/shared/ScriptMethodsPlayerAccount.cpp index b7d49e7d..48fa7ad1 100755 --- a/engine/server/library/serverScript/src/shared/ScriptMethodsPlayerAccount.cpp +++ b/engine/server/library/serverScript/src/shared/ScriptMethodsPlayerAccount.cpp @@ -76,6 +76,7 @@ namespace ScriptMethodsPlayerAccountNamespace void JNICALL renameCharacterReleaseNameReservation(JNIEnv *env, jobject self, jlong player); void JNICALL renameCharacter(JNIEnv *env, jobject self, jlong player, jstring newName); jint JNICALL getPlayerStationId(JNIEnv *env, jobject self, jlong player); + jstring JNICALL getPlayerUsername(JNIEnv *env, jobject self, jlong player); } //======================================================================== @@ -111,6 +112,7 @@ const JNINativeMethod NATIVES[] = { JF("_renameCharacterReleaseNameReservation", "(J)V", renameCharacterReleaseNameReservation), JF("_renameCharacter", "(JLjava/lang/String;)V", renameCharacter), JF("_getPlayerStationId", "(J)I", getPlayerStationId), + JF("_getPlayerUsernameDoNotUse", "(J)Ljava/lang/String;", getPlayerUsername), }; return JavaLibrary::registerNatives(NATIVES, sizeof(NATIVES)/sizeof(NATIVES[0])); @@ -974,4 +976,40 @@ jint JNICALL ScriptMethodsPlayerAccountNamespace::getPlayerStationId(JNIEnv *env return NameManager::getInstance().getPlayerStationId(NetworkId(static_cast(player))); } +// ---------------------------------------------------------------------- + +/** + * Get the account username of a player. + * Note: The player must be online to use this. + * See base_class.java implementation for more info. + * + * @param player the object id of the player + * @return string of the player's account username + */ +jstring JNICALL ScriptMethodsPlayerAccountNamespace::getPlayerUsername(JNIEnv *env, jobject self, jlong player) { + UNREF(self); + NOT_NULL(env); + + CreatureObject const * creatureObject = nullptr; + if (!JavaLibrary::getObject(player, creatureObject) || !creatureObject) + { + DEBUG_WARNING(true, ("JavaLibrary::getPlayerUsername: bad CreatureObject")); + return nullptr; + } + + if(creatureObject) + { + const Client * playerClient = creatureObject->getClient(); + if(playerClient) + { + return JavaString(playerClient->getAccountName()).getReturnValue(); + } + else { + DEBUG_WARNING(true, ("JavaLibrary::getPlayerUsername: bad playerClient")); + return nullptr; + } + } + +} + // ======================================================================