array( "name" => "Taking Inventory", "requires" => [], ),*/ "mineWood" => [ "name" => "Getting Wood", "requires" => [ //"openInventory", ] ], "buildWorkBench" => [ "name" => "Benchmarking", "requires" => [ "mineWood" ] ], "buildPickaxe" => [ "name" => "Time to Mine!", "requires" => [ "buildWorkBench" ] ], "buildFurnace" => [ "name" => "Hot Topic", "requires" => [ "buildPickaxe" ] ], "acquireIron" => [ "name" => "Acquire hardware", "requires" => [ "buildFurnace" ] ], "buildHoe" => [ "name" => "Time to Farm!", "requires" => [ "buildWorkBench" ] ], "makeBread" => [ "name" => "Bake Bread", "requires" => [ "buildHoe" ] ], "bakeCake" => [ "name" => "The Lie", "requires" => [ "buildHoe" ] ], "buildBetterPickaxe" => [ "name" => "Getting an Upgrade", "requires" => [ "buildPickaxe" ] ], "buildSword" => [ "name" => "Time to Strike!", "requires" => [ "buildWorkBench" ] ], "diamonds" => [ "name" => "DIAMONDS!", "requires" => [ "acquireIron" ] ] ]; /** * @param Player $player * @param string $achievementId * * @return bool */ public static function broadcast(Player $player, string $achievementId) : bool{ if(isset(Achievement::$list[$achievementId])){ $translation = new TranslationContainer("chat.type.achievement", [$player->getDisplayName(), TextFormat::GREEN . Achievement::$list[$achievementId]["name"] . TextFormat::RESET]); if(Server::getInstance()->getConfigBool("announce-player-achievements", true)){ Server::getInstance()->broadcastMessage($translation); }else{ $player->sendMessage($translation); } return true; } return false; } /** * @param string $achievementId * @param string $achievementName * @param array $requires * * @return bool */ public static function add(string $achievementId, string $achievementName, array $requires = []) : bool{ if(!isset(Achievement::$list[$achievementId])){ Achievement::$list[$achievementId] = [ "name" => $achievementName, "requires" => $requires ]; return true; } return false; } }