From 64f7a78329b60b39b1155c5fc55d722aef794482 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Sun, 24 Nov 2013 12:18:50 +0100 Subject: [PATCH] Added achievement.grant and achievement.broadcast handlers for more customization --- src/API/AchievementAPI.php | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/API/AchievementAPI.php b/src/API/AchievementAPI.php index d2a56c323..f8b047965 100644 --- a/src/API/AchievementAPI.php +++ b/src/API/AchievementAPI.php @@ -98,11 +98,18 @@ class AchievementAPI{ } public static function broadcastAchievement(Player $player, $achievementId){ - if(ServerAPI::request()->api->getProperty("announce-player-achievements") == true){ - ServerAPI::request()->api->chat->broadcast($player->username." has just earned the achievement ".self::$achievements[$achievementId]["name"]); - }else{ - $player->sendChat("You have just earned the achievement ".self::$achievements[$achievementId]["name"]); + if(isset(self::$achievements[$achievementId])){ + $result = ServerAPI::request()->api->dhandle("achievement.broadcast", array("player" => $player, "achievementId" => $achievementId)); + if($result !== false and $result !== true){ + if(ServerAPI::request()->api->getProperty("announce-player-achievements") == true){ + ServerAPI::request()->api->chat->broadcast($player->username." has just earned the achievement ".self::$achievements[$achievementId]["name"]); + }else{ + $player->sendChat("You have just earned the achievement ".self::$achievements[$achievementId]["name"]); + } + } + return true; } + return false; } public static function addAchievement($achievementId, $achievementName, array $requires = array()){ @@ -135,9 +142,13 @@ class AchievementAPI{ return false; } } - $player->achievements[$achievementId] = true; - self::broadcastAchievement($player, $achievementId); - return true; + if(ServerAPI::request()->api->dhandle("achievement.grant", array("player" => $player, "achievementId" => $achievementId)) !== false){ + $player->achievements[$achievementId] = true; + self::broadcastAchievement($player, $achievementId); + return true; + }else{ + return false; + } } return false; }