From 3095dfb0d746c6f7a2af6985067222cd8502bc24 Mon Sep 17 00:00:00 2001 From: engsr6982 <109733049+engsr6982@users.noreply.github.com> Date: Mon, 19 Feb 2024 08:04:59 +0800 Subject: [PATCH] fix: fix player score API (#36) --- src/legacy/api/PlayerAPI.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/legacy/api/PlayerAPI.cpp b/src/legacy/api/PlayerAPI.cpp index 4fc7ea80..f86532f5 100644 --- a/src/legacy/api/PlayerAPI.cpp +++ b/src/legacy/api/PlayerAPI.cpp @@ -1930,7 +1930,7 @@ Local PlayerClass::getScore(const Arguments& args) { if (!obj) { throw std::invalid_argument("Objective " + args[0].asString().toString() + " not found"); } - const ScoreboardId& id = scoreboard.getScoreboardId(player->getOrCreateUniqueID()); + const ScoreboardId& id = scoreboard.getScoreboardId(*player); if (!id.isValid()) { scoreboard.createScoreboardId(*player); } @@ -1951,9 +1951,13 @@ Local PlayerClass::setScore(const Arguments& args) { Scoreboard& scoreboard = ll::service::getLevel()->getScoreboard(); Objective* obj = scoreboard.getObjective(args[0].asString().toString()); if (!obj) { - return Boolean::newBoolean(false); + obj = scoreboard.addObjective( + args[0].asString().toString(), + args[0].asString().toString(), + scoreboard.getDefaultCriteria() + ); } - const ScoreboardId& id = scoreboard.getScoreboardId(player->getOrCreateUniqueID()); + const ScoreboardId& id = scoreboard.getScoreboardId(*player); if (!id.isValid()) { scoreboard.createScoreboardId(*player); } @@ -1978,7 +1982,7 @@ Local PlayerClass::addScore(const Arguments& args) { if (!obj) { return Boolean::newBoolean(false); } - const ScoreboardId& id = scoreboard.getScoreboardId(player->getOrCreateUniqueID()); + const ScoreboardId& id = scoreboard.getScoreboardId(*player); if (!id.isValid()) { scoreboard.createScoreboardId(*player); } @@ -2003,7 +2007,7 @@ Local PlayerClass::reduceScore(const Arguments& args) { if (!obj) { return Boolean::newBoolean(false); } - const ScoreboardId& id = scoreboard.getScoreboardId(player->getOrCreateUniqueID()); + const ScoreboardId& id = scoreboard.getScoreboardId(*player); if (!id.isValid()) { scoreboard.createScoreboardId(*player); } @@ -2028,7 +2032,7 @@ Local PlayerClass::deleteScore(const Arguments& args) { if (!obj) { return Boolean::newBoolean(false); } - const ScoreboardId& id = scoreboard.getScoreboardId(player->getOrCreateUniqueID()); + const ScoreboardId& id = scoreboard.getScoreboardId(*player); if (!id.isValid()) { return Boolean::newBoolean(true); }