{"id":126235,"date":"2026-06-07T13:04:54","date_gmt":"2026-06-07T10:04:54","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/"},"modified":"2026-06-07T13:04:54","modified_gmt":"2026-06-07T10:04:54","slug":"puppet-players","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/","title":{"rendered":"PuppetPlayers"},"content":{"rendered":"<p><\/p>\n<div align=\"center\">\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/github.com\/senseiwells\/PuppetPlayers\/blob\/1.21.5\/src\/main\/resources\/assets\/puppet-players\/icon.png?raw=true\" alt=\"Logo\" width=\"80\" height=\"80\"><\/p>\n<h3 align=\"center\">Puppet Players<\/h3>\n<p align=\"center\">\nA fabric mod for fake &#8216;puppet&#8217; players in Minecraft\n<\/p>\n<\/div>\n<p>## About The Project<\/p>\n<p>Modern, simple implementation of the fake players implemented originally in Carpet Mod.<\/p>\n<p>There are some fundamental differences to how these fake players are implemented in comparison to the original implementation in Carpet Mod.<\/p>\n<p>This mod can be used alongside Carpet Mod, carpet&#8217;s fake player actions will work on these puppet players; however, it&#8217;s recommended to use the provided actions instead.<\/p>\n<p>The aim of this mod is to keep the behaviour of the puppet players as accurate as possible to a real player:<\/p>\n<p>&#8211; All the player ticking is done in the correct tick phase.<br \/>\n&#8211; The client code for player actions is simulated on the server.<br \/>\n&#8211; Puppet players send packets to interact with the server, like a real player.<br \/>\n&#8211; Maintaining compatibility with all mods.<\/p>\n<p>## Usage<\/p>\n<p>After installing the mod the `\/puppet` command should become available to operators.<br \/>\nThe `\/puppet` command can also be made available to all players by changing the config,<br \/>\nsee [the config section](#config) for more details.<\/p>\n<p>We can make a puppet player join the world using one of the following commands:<br \/>\n&#8220;`mcfunction<br \/>\n\/puppet <username> join<br \/>\n\/puppet <username> spawn<br \/>\n\/puppet <username> spawn at <position> facing <rotation> in <dimension> in <gamemode><br \/>\n\/puppet <username> shadow<br \/>\n&#8220;`<br \/>\n&#8211; The `join` subcommand spawns the specified puppet at its previous log-off position, this essentially simulates<br \/>\nas if the player were joining the server themselves.<br \/>\n&#8211; The `spawn` subcommand spawns the specified puppet at either a specified position or the position of the<br \/>\ncommand executor if the position is not specified.<br \/>\n&#8211; The `shadow` subcommand makes a puppet player join in the place of a currently online player.<\/p>\n<p>Once a player has joined the world, we can make the player leave by running the following command:<br \/>\n&#8220;`<br \/>\n\/puppet <player> leave<br \/>\n&#8220;`<\/p>\n<p>### Actions<\/p>\n<p>Puppet players are able to run actions mimicking real player behaviour.<\/p>\n<p>Here is a list of all available actions:<\/p>\n<p>| Action                          | Description                                          | Arguments                                                                 | Works stand-alone |<br \/>\n|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| `&#8221;minecraft:attack&#8221;`            | Makes the player attack (left click).                | `<once|hold|release>`                                                   | Yes               |<br \/>\n| `&#8221;minecraft:delay&#8221;`             | Adds a delay between chained actions.                | `<delay>`                                                                 | No                |<br \/>\n| `&#8221;minecraft:drop&#8221;`              | Makes the player drop their selected item.           | `<entire_stack>`                                                          | Yes               |<br \/>\n| `&#8221;minecraft:interrupt_move_to&#8221;` | Interrupts the players current pathfinding.          | None                                                                      | Yes               |<br \/>\n| `&#8221;minecraft:jump&#8221;`              | Makes the player jump.                               | `<once|hold|release>`                                                   | Yes               |<br \/>\n| `&#8221;minecraft:look&#8221;`              | Makes the player look in a direction.                | `<rotation>`                                                              | Yes               |<br \/>\n| `&#8221;minecraft:move_to&#8221;`           | Makes the player pathfind to a position or entity.   | `position <pos> <sprint?> <jump?>` or `entity <entity> <sprint?> <jump?>` | Yes               |<br \/>\n| `&#8221;minecraft:offhand&#8221;`           | Makes the player swap their item with their offhand. | None                                                                      | Yes               |<br \/>\n| `&#8221;minecraft:sneak&#8221;`             | Makes the player sneak.                              | `<sneaking>`                                                              | Yes               |<br \/>\n| `&#8221;minecraft:sprint&#8221;`            | Makes the player sprint.                             | `<sprinting>`                                                             | Yes               |<br \/>\n| `&#8221;minecraft:swap_slot&#8221;`         | Makes the player swap to a slot.                     | `<slot>`                                                                  | Yes               |<br \/>\n| `&#8221;minecraft:use&#8221;`               | Makes the player use (right click).                  | `<once|hold|release>`                                                   | Yes               |<\/p>\n<p>To run an action, we can run it stand-alone with the following command:<br \/>\n&#8220;`mcfunction<br \/>\n\/puppet <player> actions run <action> &#8230;<br \/>\n&#8220;`<br \/>\nThis makes the player run the action immediately.<\/p>\n<p>For example, to make a player hold attack, you would run:<br \/>\n&#8220;`mcfunction<br \/>\n\/puppet <player> actions run minecraft:attack hold<br \/>\n&#8220;`<\/p>\n<p>We can also chain multiple actions together by running the following command:<br \/>\n&#8220;`mcfunction<br \/>\n\/puppet <player> actions chain add <action> &#8230;<br \/>\n&#8220;`<br \/>\nOnce you&#8217;ve added actions to the chain, we can also run the following commands to<br \/>\ncontrol the chained behaviour:<br \/>\n&#8220;`mcfunction<br \/>\n\/puppet <player> actions chain loop <true|false> # Whether to infinitely loop the chained actions<br \/>\n\/puppet <player> actions chain pause # Pause execution of the chained actions<br \/>\n\/puppet <player> actions chain resume # Resume execution of the chained actions<br \/>\n\/puppet <player> actions chain restart # Restart execution of the chained actions (from the first action)<br \/>\n\/puppet <player> actions chain stop # Stops execution of the chained actions (and clears all actions)<br \/>\n&#8220;`<\/p>\n<p>For example, to make a player hold attack for 5 seconds, then let go for 2 seconds, then repeat we would run:<br \/>\n&#8220;`mcfunction<br \/>\n\/puppet <player> actions chain add minecraft:attack hold<br \/>\n\/puppet <player> actions chain add minecraft:delay 5s<br \/>\n\/puppet <player> actions chain add minecraft:attack release<br \/>\n\/puppet <player> actions chain add minecraft:delay 2s<br \/>\n\/puppet <player> actions chain loop true<br \/>\n&#8220;`<\/p>\n<p>### Config<\/p>\n<p>The config is located in `.\/config\/puppet-player-config.json` and by default should look like this:<\/p>\n<p>&#8220;`json<br \/>\n{<br \/>\n  &#8220;reload_puppet_players&#8221;: true,<br \/>\n  &#8220;operator_required_for_puppets&#8221;: true<br \/>\n}<br \/>\n&#8220;`<br \/>\n&#8211; `&#8221;reload_puppet_players&#8221;` &#8211; Whether to respawn puppets if the server stopped with them last online<br \/>\n&#8211; `&#8221;operator_required_for_puppets&#8221;` &#8211; Whether players need operator permissions to run the `\/puppet` command<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Simple implementation for fake &#8216;puppet&#8217; players<\/p>\n","protected":false},"featured_media":126236,"template":"","meta":{"_minecraft_slug":"puppet-players","_minecraft_project_id":"8fH4Iml8","_minecraft_author":"senseiwells","_minecraft_license":"MIT","_minecraft_downloads":5432,"_minecraft_follows":23,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"puppet-players.zip","_minecraft_size_bytes":20543088,"_minecraft_version_count":17,"_minecraft_updated_at":"2026-05-16T17:16:12.856304Z","_minecraft_date_created":"2025-06-03T06:09:18.902201Z","_minecraft_date_modified":"2026-05-13T17:51:25.833894Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/puppet-players","_minecraft_icon_attachment_id":126236,"_minecraft_imported_at":"2026-06-07T10:04:54+00:00","_minecraft_import_hash":"825b149c2a436308b436d655b0820111","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[97,89,92],"mod_loader":[99],"minecraft_version":[40,41,78,79,80,81,82,83,167,163],"class_list":["post-126235","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-fabric","mod_category-game-mechanics","mod_category-utility","mod_loader-fabric","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9","minecraft_version-26-1","minecraft_version-26-1-1","minecraft_version-26-1-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PuppetPlayers - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PuppetPlayers - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Simple implementation for fake &#039;puppet&#039; players\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.com\/senseiwells\/PuppetPlayers\/blob\/1.21.5\/src\/main\/resources\/assets\/puppet-players\/icon.png?raw=true\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/puppet-players\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/puppet-players\\\/\",\"name\":\"PuppetPlayers - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/puppet-players\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/puppet-players\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/puppet-players-icon-c35f2bff92dbedfb39fff099694c73800cdf9588_96.webp\",\"datePublished\":\"2026-06-07T10:04:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/puppet-players\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/puppet-players\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/puppet-players\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/puppet-players-icon-c35f2bff92dbedfb39fff099694c73800cdf9588_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/puppet-players-icon-c35f2bff92dbedfb39fff099694c73800cdf9588_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/puppet-players\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PuppetPlayers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PuppetPlayers - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/","og_locale":"en_US","og_type":"article","og_title":"PuppetPlayers - Minecraft","og_description":"Simple implementation for fake 'puppet' players","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/","og_site_name":"Minecraft","og_image":[{"url":"https:\/\/github.com\/senseiwells\/PuppetPlayers\/blob\/1.21.5\/src\/main\/resources\/assets\/puppet-players\/icon.png?raw=true","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/","name":"PuppetPlayers - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/puppet-players-icon-c35f2bff92dbedfb39fff099694c73800cdf9588_96.webp","datePublished":"2026-06-07T10:04:54+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/puppet-players-icon-c35f2bff92dbedfb39fff099694c73800cdf9588_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/puppet-players-icon-c35f2bff92dbedfb39fff099694c73800cdf9588_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/puppet-players\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"PuppetPlayers"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/126235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/126236"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=126235"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=126235"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=126235"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=126235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}