{"id":19819884,"url":"https://github.com/pmmppluginsrepository/minigameapi","last_synced_at":"2025-05-01T11:33:19.771Z","repository":{"id":257817225,"uuid":"495388645","full_name":"PMMPPluginsRepository/MiniGameAPI","owner":"PMMPPluginsRepository","description":"A library that makes it easy to create minigame plugins","archived":false,"fork":false,"pushed_at":"2022-07-31T10:46:08.000Z","size":21,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-09T23:04:15.614Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PMMPPluginsRepository.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-23T11:50:21.000Z","updated_at":"2024-09-28T03:25:19.000Z","dependencies_parsed_at":"2024-10-09T23:04:17.143Z","dependency_job_id":"9bf0c33f-71bc-455f-9bc9-ab8101637356","html_url":"https://github.com/PMMPPluginsRepository/MiniGameAPI","commit_stats":null,"previous_names":["pmmppluginsrepository/minigameapi"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMMPPluginsRepository%2FMiniGameAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMMPPluginsRepository%2FMiniGameAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMMPPluginsRepository%2FMiniGameAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PMMPPluginsRepository%2FMiniGameAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PMMPPluginsRepository","download_url":"https://codeload.github.com/PMMPPluginsRepository/MiniGameAPI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224254199,"owners_count":17281128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T10:20:26.687Z","updated_at":"2024-11-12T10:20:29.437Z","avatar_url":"https://github.com/PMMPPluginsRepository.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MiniGameAPI\nA library that makes it easy to create minigame plugins\n\n## Usage\nMiniGameAPI makes developing minigames a little easier.\n\n**NOTE**: To use the MiniGameAPI library, you need to register a plugin with MiniGameHandler.\n```php\nuse skh6075\\api\\minigame\\MiniGameHandler;\n\nprotected function onEnable(): void{\n    if(!MiniGameHandler::isRegistered()){\n        MiniGameHandler::register($this);\n    }\n}\n```\n\n## Create a minigame room\n```php\nuse skh6075\\api\\minigame\\game\\GameRoom;\nuse skh6075\\api\\minigame\\session\\MiniGamePlayerSessionStorage;\n\nfinal class SkyWarsGameRoom extends GameRoom{\n\n    /** @override */\n    public function start() : void{\n        //your code\n    }\n    \n    /**\n     * Manage sessions for minigame\n     *\n     * @return MiniGamePlayerSessionStorage\n     */\n    public function session() : MiniGamePlayerSessionStorage{\n        return MiniGamePlayerSessionStorage::create();\n    }\n}\n```\n```MiniGameSessionStorage``` is a minigame player session.\nThis is a session where you can manage data deletion and player options when the player client connection is terminated.\n\n### Create a minigame team\n```php\nuse skh6075\\api\\minigame\\team\\Team;\nuse skh6075\\api\\minigame\\team\\TeamManager;\n\nclass RedTeam extends Team{\n    public function __construct() {\n        parent::__construct(\"red\");\n    }\n}\nclass BlueTeam extends Team{\n    public function __construct() {\n        parent::__construct(\"blue\");\n    }\n}\n\n$teamManager = new TeamManager(\n    new RedTeam(),\n    new BlueTeam()\n);\n```\nIf the game requires team roles, override the ```Team``` class and put it in the ```TeamManager``` and put it in the minigame class.\n\n### MiniGame World Auto Generate/Restore\n```php\nuse skh6075\\api\\minigame\\generator\\MapGenerator;\n\n$mapGenerator = new MapGenerator([\n    \"skywars\" =\u003e \"worlds/skywars.zip\",\n    \"lobby\" =\u003e \"worlds/skywars_lobby.zip\";\n]);\n```\nIt automatically sets up and cleans the game map.\n\n## Register a GameRoom\n```php\nuse skh6075\\api\\minigame\\game\\GameRoom;\n\n/**\n * @phpstan-var array\u003cint, GameRoom\u003e\n * @var GameRoom[]\n */\nprivate array $rooms = [];\n\npublic function createGameRoom(int $roomId): void{\n    $room = new SkyWarsGameRoom(\n        name: \"SkyWars{$roomId}\",\n        mapGenerator: $mapGenerator,\n        taskHandler: null,\n        minPlayerCount: 4,\n        maxPlayerCount: 8,\n        teamManager: $teamManager\n    );\n    $this-\u003erooms[$roomId] = $room;\n}\n```\n\n## GameRoom TaskHandler\nImplement the task in the game room.\n```php\nuse skh6075\\api\\minigame\\task\\GameRoomWaitingTask;\n\nclass SkyWarsWaitingTask extends GameRoomWaitingTask{\n\n    /**\n     * Method for showing game room information to game participants in a popup\n     *\n     * @return string\n     */\n    public function getRoomInformationMessage(): string{\n        return \"Waiting Player: {$this-\u003eroom-\u003egetParticipants()} / {$this-\u003eroom-\u003egetMaxPlayerCount()}\";\n    }\n\n    /**\n     * Send one message when game start countdown starts\n     * handle the message\n     *\n     * @return string\n     */\n    public function getRoomGameStartQueueMessage(): string{\n         return \"The game starts in %s seconds\";\n    }\n\n    /**\n     * Message to be sent when the game starts\n     *\n     * @return string\n     */\n    public function getRoomGameStartMessage(): string{\n        return \"starting Game\";\n    }\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmmppluginsrepository%2Fminigameapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmmppluginsrepository%2Fminigameapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmmppluginsrepository%2Fminigameapi/lists"}