/** * @param string $achievementId * * @return bool */ public function awardAchievement($achievementId) { if (isset(Achievement::$list[$achievementId]) and !$this->hasAchievement($achievementId)) { foreach (Achievement::$list[$achievementId]["requires"] as $requerimentId) { if (!$this->hasAchievement($requerimentId)) { 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; }