59 $player = $this->fetchPermittedPlayerTarget($commandLabel, $sender, $args[1] ??
null, DefaultPermissionNames::COMMAND_XP_SELF, DefaultPermissionNames::COMMAND_XP_OTHER);
64 $xpManager = $player->getXpManager();
65 if(str_ends_with($args[0],
"L")){
66 $xpLevelAttr = $player->getAttributeMap()->get(Attribute::EXPERIENCE_LEVEL) ??
throw new AssumptionFailedError();
67 $maxXpLevel = (int) $xpLevelAttr->getMaxValue();
68 $currentXpLevel = $xpManager->getXpLevel();
69 $xpLevels = $this->getInteger($sender, substr($args[0], 0, -1), -$currentXpLevel, $maxXpLevel - $currentXpLevel);
71 $xpManager->addXpLevels($xpLevels,
false);
72 $sender->sendMessage(KnownTranslationFactory::commands_xp_success_levels((
string) $xpLevels, $player->getName()));
74 $xpLevels = abs($xpLevels);
75 $xpManager->subtractXpLevels($xpLevels);
76 $sender->sendMessage(KnownTranslationFactory::commands_xp_success_negative_levels((
string) $xpLevels, $player->getName()));
79 $xp = $this->getInteger($sender, $args[0], max: Limits::INT32_MAX);
81 $sender->sendMessage(KnownTranslationFactory::commands_xp_failure_widthdrawXp()->prefix(TextFormat::RED));
83 $xpManager->addXp($xp,
false);
84 $sender->sendMessage(KnownTranslationFactory::commands_xp_success((
string) $xp, $player->getName()));