11#include " PlayerHelper.h"
22
3+ #include " AttributeHelper.h"
34#include " mc/world/actor/player/Player.h"
45#include " mc/world/attribute/AttributeInstance.h"
6+ #include " mc/world/attribute/AttributeModificationContext.h"
7+ #include " mc/world/attribute/MutableAttributeWithContext.h"
58
69namespace lse ::api {
7- unsigned int PlayerHelper::getXpEarnedAtCurrentLevel (Player* player) {
10+
11+ unsigned int PlayerHelper::getPreviousLevelRequirement (Player* player) {
812 int prevLevelReq = player->mPreviousLevelRequirement ;
913 if (player->mPlayerLevelChanged ) {
1014 int curLvl = player->getAttribute (Player::LEVEL ()).mCurrentValue ;
@@ -13,7 +17,20 @@ unsigned int PlayerHelper::getXpEarnedAtCurrentLevel(Player* player) {
1317 player->mPlayerLevelChanged = false ;
1418 player->mPreviousLevelRequirement = prevLevelReq;
1519 }
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 ());
1726 return (unsigned int )roundf (attribute.mCurrentValue * (float )prevLevelReq);
1827}
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+
1936} // namespace lse::api
0 commit comments