public function awardAchievement($achievementId)
{
if (isset(Achievement::$list[$achievementId]) and !$this->hasAchievement($achievementId)) {
foreach (Achievement::$list[$achievementId]["requires"] as $requirementId) {
if (!$this->hasAchievement($requirementId)) {
return false;
}
}
$this->server->getPluginManager()->callEvent($ev = new PlayerAchievementAwardedEvent($this, $achievementId));
if (!$ev->isCancelled()) {
$this->achievements[$achievementId] = true;
Achievement::broadcast($this, $achievementId);
return true;
} else {
return false;
}
}
return false;
}