Skip to content

Commit 47c1b30

Browse files
committed
fix: fix Player's scoreboard API
1 parent 7253349 commit 47c1b30

File tree

4 files changed

+37
-18
lines changed

4 files changed

+37
-18
lines changed

src/legacy/api/PacketAPI.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,8 @@
22

33
#include "api/APIHelp.h"
44
#include "api/BaseAPI.h"
5-
#include "api/BlockAPI.h"
6-
#include "api/BlockEntityAPI.h"
7-
#include "api/ContainerAPI.h"
85
#include "api/EntityAPI.h"
96
#include "api/ItemAPI.h"
10-
#include "api/McAPI.h"
117
#include "api/NbtAPI.h"
128
#include "mc/deps/core/utility/BinaryStream.h"
139
#include "mc/network/MinecraftPackets.h"

src/legacy/api/PlayerAPI.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,17 @@
2828
#include "lse/api/MoreGlobal.h"
2929
#include "lse/api/NetworkPacket.h"
3030
#include "lse/api/PlayerHelper.h"
31+
#include "lse/api/ScoreboardHelper.h"
3132
#include "main/EconomicSystem.h"
3233
#include "main/SafeGuardRecord.h"
3334
#include "mc/certificates/WebToken.h"
3435
#include "mc/deps/core/math/Vec2.h"
35-
#include "mc/deps/core/string/HashedString.h"
3636
#include "mc/deps/core/utility/MCRESULT.h"
3737
#include "mc/entity/components/ActorRotationComponent.h"
3838
#include "mc/entity/components/InsideBlockComponent.h"
3939
#include "mc/entity/components/IsOnHotBlockFlagComponent.h"
4040
#include "mc/entity/components/TagsComponent.h"
4141
#include "mc/entity/utilities/ActorMobilityUtils.h"
42-
#include "mc/legacy/ActorRuntimeID.h"
4342
#include "mc/legacy/ActorUniqueID.h"
4443
#include "mc/nbt/CompoundTag.h"
4544
#include "mc/nbt/ListTag.h"
@@ -76,7 +75,6 @@
7675
#include "mc/world/actor/Actor.h"
7776
#include "mc/world/actor/ActorDamageByActorSource.h"
7877
#include "mc/world/actor/BuiltInActorComponents.h"
79-
#include "mc/world/actor/SynchedActorData.h"
8078
#include "mc/world/actor/SynchedActorDataEntityWrapper.h"
8179
#include "mc/world/actor/ai/util/BossBarColor.h"
8280
#include "mc/world/actor/ai/util/BossEventUpdateType.h"
@@ -91,7 +89,6 @@
9189
#include "mc/world/attribute/Attribute.h"
9290
#include "mc/world/attribute/AttributeInstance.h"
9391
#include "mc/world/attribute/AttributeModificationContext.h"
94-
#include "mc/world/attribute/MutableAttributeWithContext.h"
9592
#include "mc/world/attribute/SharedAttributes.h"
9693
#include "mc/world/effect/EffectDuration.h"
9794
#include "mc/world/effect/MobEffectInstance.h"
@@ -124,6 +121,7 @@
124121
#include <vector>
125122

126123
using lse::api::AttributeHelper;
124+
using lse::api::ScoreboardHelper;
127125
using lse::form::FormCancelReason;
128126

129127
//////////////////// Class Definition ////////////////////
@@ -502,8 +500,8 @@ Local<Value> McClass::getPlayerScore(const Arguments& args) {
502500
return Number::newNumber(0);
503501
}
504502
int64 uniqueId = serverIdTag->at("UniqueID");
505-
ScoreboardId sid = scoreboard.getScoreboardId(PlayerScoreboardId(uniqueId));
506-
if (!sid.isValid() || !objective->hasScore(sid)) {
503+
ScoreboardId sid = ScoreboardHelper::getId(scoreboard, PlayerScoreboardId(uniqueId));
504+
if (sid.mRawID == ScoreboardId::INVALID().mRawID || !objective->hasScore(sid)) {
507505
return Number::newNumber(0);
508506
}
509507
return Number::newNumber(objective->getPlayerScore(sid).mValue);
@@ -537,8 +535,8 @@ Local<Value> McClass::setPlayerScore(const Arguments& args) {
537535
return Boolean::newBoolean(false);
538536
}
539537
int64 uniqueId = serverIdTag->at("UniqueID");
540-
ScoreboardId sid = scoreboard.getScoreboardId(PlayerScoreboardId(uniqueId));
541-
if (!sid.isValid()) {
538+
ScoreboardId sid = ScoreboardHelper::getId(scoreboard, PlayerScoreboardId(uniqueId));
539+
if (sid.mRawID == ScoreboardId::INVALID().mRawID) {
542540
return Boolean::newBoolean(false);
543541
}
544542
bool isSuccess = false;
@@ -575,8 +573,8 @@ Local<Value> McClass::addPlayerScore(const Arguments& args) {
575573
return Boolean::newBoolean(false);
576574
}
577575
int64 uniqueId = serverIdTag->at("UniqueID");
578-
ScoreboardId sid = scoreboard.getScoreboardId(PlayerScoreboardId(uniqueId));
579-
if (!sid.isValid()) {
576+
ScoreboardId sid = ScoreboardHelper::getId(scoreboard, PlayerScoreboardId(uniqueId));
577+
if (sid.mRawID == ScoreboardId::INVALID().mRawID) {
580578
return Boolean::newBoolean(false);
581579
}
582580
bool isSuccess = false;
@@ -613,8 +611,8 @@ Local<Value> McClass::reducePlayerScore(const Arguments& args) {
613611
return Boolean::newBoolean(false);
614612
}
615613
int64 uniqueId = serverIdTag->at("UniqueID");
616-
ScoreboardId sid = scoreboard.getScoreboardId(PlayerScoreboardId(uniqueId));
617-
if (!sid.isValid()) {
614+
ScoreboardId sid = ScoreboardHelper::getId(scoreboard, PlayerScoreboardId(uniqueId));
615+
if (sid.mRawID == ScoreboardId::INVALID().mRawID) {
618616
return Boolean::newBoolean(false);
619617
}
620618
bool isSuccess = false;
@@ -655,8 +653,8 @@ Local<Value> McClass::deletePlayerScore(const Arguments& args) {
655653
return Boolean::newBoolean(false);
656654
}
657655
int64 uniqueId = serverIdTag->at("UniqueID");
658-
ScoreboardId sid = scoreboard.getScoreboardId(PlayerScoreboardId(uniqueId));
659-
if (!sid.isValid()) {
656+
ScoreboardId sid = ScoreboardHelper::getId(scoreboard, PlayerScoreboardId(uniqueId));
657+
if (sid.mRawID == ScoreboardId::INVALID().mRawID) {
660658
return Boolean::newBoolean(false);
661659
}
662660
scoreboard.resetPlayerScore(sid, *objective);

src/lse/api/ScoreboardHelper.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#include "lse/api/ScoreboardHelper.h"
2+
3+
#include "mc/world/scores/IdentityDictionary.h"
4+
5+
namespace lse::api {
6+
ScoreboardId ScoreboardHelper::getId(Scoreboard const& scoreboard, const PlayerScoreboardId& playerId) {
7+
auto dict = scoreboard.mIdentityDict->mPlayers;
8+
auto found = dict->find(playerId);
9+
if (found != dict->end()) {
10+
return found->second;
11+
} else {
12+
return ScoreboardId::INVALID();
13+
}
14+
}
15+
} // namespace lse::api

src/lse/api/ScoreboardHelper.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#include "mc/world/scores/PlayerScoreboardId.h"
2+
#include "mc/world/scores/Scoreboard.h"
3+
#include "mc/world/scores/ScoreboardId.h"
4+
5+
namespace lse::api {
6+
class ScoreboardHelper {
7+
public:
8+
static ScoreboardId getId(Scoreboard const& scoreboard, PlayerScoreboardId const& playerId);
9+
};
10+
} // namespace lse::api

0 commit comments

Comments
 (0)