{"id":15142969,"url":"https://github.com/muqsit/fakeplayer","last_synced_at":"2025-04-07T11:05:55.247Z","repository":{"id":37975278,"uuid":"253969443","full_name":"Muqsit/FakePlayer","owner":"Muqsit","description":"Test your PocketMine-MP server by having (real-looking) fake players assist you.","archived":false,"fork":false,"pushed_at":"2024-11-21T02:54:52.000Z","size":70,"stargazers_count":60,"open_issues_count":10,"forks_count":22,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-07T11:05:41.504Z","etag":null,"topics":["api-4","dev","fake","player","plugin","pmmp","pocketmine-mp"],"latest_commit_sha":null,"homepage":"https://poggit.pmmp.io/ci/Muqsit/FakePlayer","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/Muqsit.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":"2020-04-08T02:52:37.000Z","updated_at":"2025-03-24T17:36:21.000Z","dependencies_parsed_at":"2024-01-27T15:47:29.663Z","dependency_job_id":"ba0cdd8f-acad-492d-bf75-b39609699a43","html_url":"https://github.com/Muqsit/FakePlayer","commit_stats":{"total_commits":78,"total_committers":11,"mean_commits":7.090909090909091,"dds":0.2564102564102564,"last_synced_commit":"cdc5c31bbcd756647965642919c7ac1c2f61d896"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muqsit%2FFakePlayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muqsit%2FFakePlayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muqsit%2FFakePlayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muqsit%2FFakePlayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Muqsit","download_url":"https://codeload.github.com/Muqsit/FakePlayer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640462,"owners_count":20971557,"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":["api-4","dev","fake","player","plugin","pmmp","pocketmine-mp"],"created_at":"2024-09-26T10:00:59.985Z","updated_at":"2025-04-07T11:05:55.228Z","avatar_url":"https://github.com/Muqsit.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FakePlayer\n\n## What does this plugin do?\nSimilar to [Specter](https://github.com/falkirks/Specter), this plugin spawns players to debug stuff on your server. However, this plugin strictly supports API version 4.0.0.\n\n## Usage\n**Who the heck is BoxierChimera37?**\u003cbr\u003eMy alt xbox live account.\n\nWhen you first run this plugin, BoxierChimera37 will join the server. You can edit the `players.json` file to add as many players as you wish.\nDoes this fake your server player count? Yes, but that's not the point of this plugin.\u003cbr\u003e\n`players.json` structure:\n```jsonc\n{\n\t\"uuid-v4-string\": {\n\t\t\"xuid\": \"required\",\n\t\t\"gamertag\": \"required\",\n\t\t\"extra_data\": {} // this field is OPTIONAL\n\t\t\"behaviours\": [] // this field is OPTIONAL\n\t}\n}\n```\n\nOnce a fake player joins, you can chat or run commands on their behalf using:\u003cbr\u003e\n`/fp \u003cplayer\u003e chat hello wurld!`\u003cbr\u003e\n`/fp \u003cplayer\u003e chat /help 4`\n\n## API Documentation\n### Adding a fake player\n```php\nLoader::addPlayer(FakePlayerInfo $info) : Promise;\n```\nFake players can be spawned in during runtime using `Loader::addPlayer()`. `FakePlayerInfo` consists of player identity and miscellaneous data and can be built easily using `FakePlayerInfoBuilder`.\n```php\n/** @var Loader $plugin */\n$plugin = Server::getInstance()-\u003egetPluginManager()-\u003egetPlugin(\"FakePlayer\");\n$plugin-\u003eaddPlayer(FakePlayerInfoBuilder::create()\n\t-\u003esetUsername(\"BlahCoast30765\")\n\t-\u003esetXuid(\"2535431208141398\")\n\t-\u003esetUuid(\"815e76d4-6248-3c27-9dc5-e49230a5dec4\")\n\t-\u003esetSkin(/* some skin */) // optional ;), defaults to a white skin\n\t// ...\n-\u003ebuild());\n\n// To obtain a Player instance after adding a player\n$plugin-\u003eaddPlayer(...)-\u003eonCompletion(\n\tfunction(Player $player) : void{\n\t\techo \"Added player \", $player-\u003egetName(), \" successfully\";\n\t},\n\tfunction() : void{\n\t\t// adding player failed\n\t}\n);\n```\n\n### Test for fake player\n```php\n/**\n * @param Player $player\n */\nLoader::isFakePlayer(Player $player) : bool;\n```\n\n### Removing a fake player\n```php\n/**\n * NOTE: $player MUST be a fake player, or else an InvalidArgumentException will\n * be thrown.\n * @param Player $player\n */\nLoader::removePlayer(Player $player) : void;\n```\n\n### Listeners\n#### Registering/Unregistering a fake player listener\n```php\nLoader::registerListener(FakePlayerListener $listener) : void;\nLoader::unregisterListener(FakePlayerListener $listener) : void;\n```\nExample:\n```php\nLoader::registerListener(new ClosureFakePlayerListener(\n\tfunction(Player $player) : void{\n\t\tServer::getInstance()-\u003ebroadcastMessage(\"Fake player joined: \" . $player-\u003egetName());\n\t},\n\tfunction(Player $player) : void{\n\t\tServer::getInstance()-\u003ebroadcastMessage(\"Fake player is kil: \" . $player-\u003egetName());\n\t}\n));\n```\n\n#### Listening to packets sent\nEach fake player holds a `FakePlayerNetworkSession` that you can register packet listeners to.\n```php\n/** @var Player $fake_player */\n/** @var FakePlayerNetworkSession $session */\n$session = $fake_player-\u003egetNetworkSession();\n```\n\nThere are two kinds of packet listeners you can register:\n1. A catch-all packet listener that is notified for every packet sent.\n2. A specific packet listener\n\n##### Registering a catch-all packet listener\n```php\n$session-\u003eregisterPacketListener(new ClosureFakePlayerPacketListener(\n\tfunction(ClientboundPacket $packet, NetworkSession $session) : void{\n\t\t// do something\n\t}\n));\n```\n\n##### Registering a specific packet listener\n```php\n$session-\u003eregisterSpecificPacketListener(TextPacket::class, new ClosureFakePlayerPacketListener(\n\tfunction(ClientboundPacket $packet, NetworkSession $session) : void{\n\t\t/** @var TextPacket $packet */\n\t\tServer::getInstance()-\u003ebroadcastMessage($session-\u003egetPlayer()-\u003egetName() . \" was sent text: \" . $packet-\u003emessage);\n\t}\n));\n```\n\n### Fake Player Behaviours\nBehaviours are basically a way you can do anything you like on a fake player every tick.\nBy default, there's a `fakeplayer:pvp` behaviour which makes the fake player fight all living entities except non-survival mode players.\nYou can add multiple behaviours to a fake player. Make sure to register your custom behaviours during `PluginBase::onEnable()`.\u003cbr\u003e\nTo register a fake player behaviour:\n```php\nFakePlayerBehaviourManager::register(\"myplugin:cool_ai\", MyCoolAIThatImplementsFakePlayerBehaviour::class);\n```\nTo add a behaviour to a player, pass it during `Loader::addPlayer()` OR specify it in the `players.json` file.\n\n### Frequently Asked Questions\nQ. Does this work with encryption enabled?\u003cbr\u003e\nA. Yes\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuqsit%2Ffakeplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuqsit%2Ffakeplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuqsit%2Ffakeplayer/lists"}