1
1
#include " PlayerHelper.h"
2
2
3
+ #include " AttributeHelper.h"
3
4
#include " mc/world/actor/player/Player.h"
4
5
#include " mc/world/attribute/AttributeInstance.h"
6
+ #include " mc/world/attribute/AttributeModificationContext.h"
7
+ #include " mc/world/attribute/MutableAttributeWithContext.h"
5
8
6
9
namespace lse ::api {
7
- unsigned int PlayerHelper::getXpEarnedAtCurrentLevel (Player* player) {
10
+
11
+ unsigned int PlayerHelper::getPreviousLevelRequirement (Player* player) {
8
12
int prevLevelReq = player->mPreviousLevelRequirement ;
9
13
if (player->mPlayerLevelChanged ) {
10
14
int curLvl = player->getAttribute (Player::LEVEL ()).mCurrentValue ;
@@ -13,7 +17,20 @@ unsigned int PlayerHelper::getXpEarnedAtCurrentLevel(Player* player) {
13
17
player->mPlayerLevelChanged = false ;
14
18
player->mPreviousLevelRequirement = prevLevelReq;
15
19
}
16
- auto & attribute = player->getAttribute (Player::EXPERIENCE ());
20
+ return prevLevelReq;
21
+ }
22
+
23
+ unsigned int PlayerHelper::getXpEarnedAtCurrentLevel (Player* player) {
24
+ unsigned int prevLevelReq = PlayerHelper::getPreviousLevelRequirement (player);
25
+ auto & attribute = player->getAttribute (Player::EXPERIENCE ());
17
26
return (unsigned int )roundf (attribute.mCurrentValue * (float )prevLevelReq);
18
27
}
28
+
29
+ bool PlayerHelper::setXpEarnedAtCurrentLevel (Player* player, unsigned int xp) {
30
+ unsigned int prevLevelReq = PlayerHelper::getPreviousLevelRequirement (player);
31
+ auto attribute = player->getMutableAttribute (Player::EXPERIENCE ());
32
+ AttributeHelper::setCurrentValue (attribute, (float )xp / (float )prevLevelReq);
33
+ return true ;
34
+ }
35
+
19
36
} // namespace lse::api
0 commit comments