{"id":122551,"date":"2026-06-07T07:55:38","date_gmt":"2026-06-07T04:55:38","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/"},"modified":"2026-06-07T07:55:38","modified_gmt":"2026-06-07T04:55:38","slug":"player-roles","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/","title":{"rendered":"Player Roles"},"content":{"rendered":"<p># Player Roles for Fabric<br \/>\nThis is a simple implementation allowing for custom permissions to be assigned to players via Discord-like &#8220;roles&#8221;.<br \/>\nRoles and their permissions are defined within a JSON file, which can be easily modified and reloaded at runtime for rapid iteration.<\/p>\n<p>The roles.json file is located in the config directory (`<root>\/config\/roles.json`). An example configuration may look like:<br \/>\n&#8220;`json<br \/>\n{<br \/>\n  &#8220;admin&#8221;: {<br \/>\n    &#8220;level&#8221;: 100,<br \/>\n    &#8220;overrides&#8221;: {<br \/>\n      &#8220;name_decoration&#8221;: {<br \/>\n        &#8220;style&#8221;: [&#8220;red&#8221;, &#8220;bold&#8221;],<br \/>\n        &#8220;suffix&#8221;: {&#8220;text&#8221;: &#8220;*&#8221;}<br \/>\n      },<br \/>\n      &#8220;permission_level&#8221;: 4,<br \/>\n      &#8220;command_feedback&#8221;: true,<br \/>\n      &#8220;commands&#8221;: {<br \/>\n        &#8220;.*&#8221;: &#8220;allow&#8221;<br \/>\n      }<br \/>\n    }<br \/>\n  },<br \/>\n  &#8220;spectator&#8221;: {<br \/>\n    &#8220;level&#8221;: 10,<br \/>\n    &#8220;overrides&#8221;: {<br \/>\n      &#8220;commands&#8221;: {<br \/>\n        &#8220;gamemode (spectator|adventure)&#8221;: &#8220;allow&#8221;<br \/>\n      }<br \/>\n    }<br \/>\n  },<br \/>\n  &#8220;mute&#8221;: {<br \/>\n    &#8220;level&#8221;: 1,<br \/>\n    &#8220;overrides&#8221;: {<br \/>\n      &#8220;mute&#8221;: true<br \/>\n    }<br \/>\n  },<br \/>\n  &#8220;everyone&#8221;: {<br \/>\n    &#8220;overrides&#8221;: {<br \/>\n      &#8220;commands&#8221;: {<br \/>\n        &#8220;help&#8221;: &#8220;allow&#8221;,<br \/>\n        &#8220;.*&#8221;: &#8220;deny&#8221;<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>But what&#8217;s going on here? This JSON file is declaring three roles: `admin`, `spectator` and `everyone`.<\/p>\n<p>`everyone` is the default role: every player will have this role, and it cannot be removed.<br \/>\nThe other roles that are specified function as overrides on top of the `everyone` role.<\/p>\n<p>### Overrides<br \/>\nWithin each role declaration, we list a set of overrides. Overrides are the generic system that this mod uses to change game behavior based on roles.<br \/>\nCurrently, the supported override types are `commands`, `name_decoration`, `chat_type`, `mute`, `command_feedback`, `permission_level` and `entity_selectors`.<\/p>\n<p>It is important to consider how overrides are applied when multiple roles target the same things. Conflicts like this are resolved by always choosing the role with the highest level.<br \/>\nSo, in the case of the example: although `everyone` declares every command except `help` to be disallowed, because `admin` and `spectator` have higher levels, they will override this behaviour.<\/p>\n<p>#### Commands<br \/>\nThe `commands` override is used to manipulate the commands that a player is able to use.<br \/>\nEach override entry specifies a regular expression pattern to match, and then a strategy for how to respond when the mod encounters that pattern.<\/p>\n<p>For example, the pattern `.*` matches every possible command, while `gamemode (spectator|adventure)` would match the gamemode command only with spectator and adventure mode.<br \/>\nThe strategies that can then be used alongside these patterns are `allow` and `deny`:<br \/>\n`allow` will make sure that the player is allowed to use this command, while `deny` will prevent the player from using this command.<\/p>\n<p>For example:<br \/>\n&#8220;`json<br \/>\n&#8220;commands&#8221;: {<br \/>\n  &#8220;gamemode (spectator|adventure)&#8221;: &#8220;allow&#8221;<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>The commands override can additionally make use of the `hidden` rule result, which will allow the command to be used,<br \/>\nwhile hiding it from command suggestions.<\/p>\n<p>#### Name Decoration<br \/>\nThe `name_decoration` override modifies how the names of players with a role are displayed. This can be used to override name colors as well as prepend or append text.<br \/>\nThis has lower priority than scoreboard team colors.<\/p>\n<p>Name decoration might be declared like:<br \/>\n&#8220;`json<br \/>\n&#8220;name_decoration&#8221;: {<br \/>\n  &#8220;prefix&#8221;: {&#8220;text&#8221;: &#8220;[Prefix] &#8220;, &#8220;color&#8221;: &#8220;green&#8221;},<br \/>\n  &#8220;suffix&#8221;: {&#8220;text&#8221;: &#8220;-Suffix&#8221;},<br \/>\n  &#8220;style&#8221;: [&#8220;#ff0000&#8221;, &#8220;bold&#8221;, &#8220;underline&#8221;],<br \/>\n  &#8220;contexts&#8221;: [&#8220;chat&#8221;, &#8220;tab_list&#8221;]<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>Three fields can be optionally declared:<br \/>\n &#8211; `style`: accepts a list of text formatting types or hex colors<br \/>\n &#8211; `prefix`: accepts a text component that is prepended before the name<br \/>\n &#8211; `suffix`: accepts a text component that is appended after the name<br \/>\n &#8211; `contexts`: accepts a set of possible contexts defining where this decoration should be applied<br \/>\n   &#8211; Accepts: `chat` and `tab_list`<br \/>\n   &#8211; Default: applies to all possible contexts<\/p>\n<p>#### Chat Types<br \/>\nThe `chat_type` override allows the chat message decorations to be replaced for all players with a role.<br \/>\nThis integrates with the Vanilla `minecraft:chat_type` registry, which can be altered with a datapack.<\/p>\n<p>The `chat_type` override declares simply the `chat_type` that should be used:<br \/>\n&#8220;`json<br \/>\n&#8220;chat_type&#8221;: &#8220;minecraft:say_command&#8221;<br \/>\n&#8220;`<\/p>\n<p>This example will replace all messages for players with a given role to apply the `say_command` style.<\/p>\n<p>It is important to note that Vanilla chat type registry is loaded from the datapack on server start, and cannot be hot-reloaded like the player roles config.<\/p>\n<p>##### Declaring custom chat types<br \/>\nCustom chat types can be declared with a custom datapack in `data\/<namespace>\/chat_type\/<name>`. <\/p>\n<p>For example, we might declare a `data\/mydatapack\/chat_type\/admin.json`:<br \/>\n&#8220;`json<br \/>\n{<br \/>\n  &#8220;chat&#8221;: {<br \/>\n    &#8220;decoration&#8221;: {<br \/>\n      &#8220;parameters&#8221;: [&#8220;sender&#8221;, &#8220;content&#8221;],<br \/>\n      &#8220;style&#8221;: {},<br \/>\n      &#8220;translation_key&#8221;: &#8220;%s: %s <- an admin said this!\"\n    }\n  },\n  \"narration\": {\n    \"decoration\": {\n      \"parameters\": [\"sender\", \"content\"],\n      \"style\": {},\n      \"translation_key\": \"chat.type.text.narrate\"\n    },\n    \"priority\": \"chat\"\n  }\n}\n```\n\nWhich can be then referenced in an override like:\n```json\n\"chat_type\": \"mydatapack:admin\"\n```\n\n#### Permission Level\nThe `permission_level` override sets the vanilla permission level for assigned players. \nThis is useful for interacting with other mods, as well as with vanilla features that aren't supported by this mod.\n\nPermission level is declared like:\n```json\n\"permission_level\": 4\n```\n\n#### Mute\nThe `mute` override functions very simply by preventing assigned players from typing in chat.\n\nMute is declared like:\n```json\n\"mute\": true\n```\n\n#### Command Feedback\nBy default, all operators receive global feedback when another player runs a command. \nThe `command_feedback` override allows specific roles to receive this same kind of feedback.\n\nCommand feedback is declared like:\n```json\n\"command_feedback\": true\n```\n\n#### Entity Selectors\nNormally, only command sources with a permission level of two or higher can use entity selectors.\nThe `entity_selectors` override allows specific roles to use entity selectors.\n\nEntity selectors can be allowed like:\n```json\n\"entity_selectors\": true\n```\n\n### Other configuration\nRoles can additionally be applied to command blocks or function executors through the configuration file.\nFor example:\n```json\n{\n  \"commands\": {\n    \"apply\": {\n      \"command_block\": true,\n      \"function\": true\n    },\n    \"overrides\": {\n    }\n  }\n}\n```\n\nIt may also be useful for a role to inherit the overrides from another role.\nThis can be done with the `includes` declaration by referencing other roles with a lower level.\nFor example:\n```json\n{\n  \"foo\": {\n    \"includes\": [\"bar\"],\n    \"overrides\": {\n      \"commands\": {\n        \".*\": \"allow\"\n      }\n    }\n  },\n  \"bar\": {\n    \"overrides\": {\n      \"name_decoration\": {\n        \"style\": \"red\"\n      }\n    }\n  }\n}\n```\n\nWith this configuration, the `foo` role will inherit the red `name_decoration`.\n\n### Applying roles in-game\nOnce you've made modifications to the `roles.json` file, you can reload it by using the `\/role reload`.\n\nAll role management goes through this `role` command via various subcommands. For example:\n\n- `role assign Gegy admin`: assigns the `admin` role to `Gegy`\n- `role remove Gegy admin`: removes the `admin` role from `Gegy`\n- `role list Gegy`: lists all the roles that have been applied to `Gegy`\n- `role reload`: reloads the `roles.json` configuration file\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Role &#038; permission management for Fabric servers<\/p>\n","protected":false},"featured_media":122552,"template":"","meta":{"_minecraft_slug":"player-roles","_minecraft_project_id":"Rt1mrUHm","_minecraft_author":"Patbox","_minecraft_license":"MIT","_minecraft_downloads":35985,"_minecraft_follows":126,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"player-roles.zip","_minecraft_size_bytes":5066932,"_minecraft_version_count":51,"_minecraft_updated_at":"2026-05-16T14:02:08.884018Z","_minecraft_date_created":"2020-12-17T08:24:57.800588Z","_minecraft_date_modified":"2026-03-31T20:25:40.130154Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/player-roles","_minecraft_icon_attachment_id":122552,"_minecraft_imported_at":"2026-06-07T04:55:39+00:00","_minecraft_import_hash":"46bde16a15a3076e0ea9b996f2d1daa2","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[97,126,92],"mod_loader":[99],"minecraft_version":[47,48,49,50,51,52,54,55,57,677,58,59,36,60,94,102,62,37,40,41,73,74,38,78,79,80,81,82,83,167,163],"class_list":["post-122551","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-fabric","mod_category-management","mod_category-utility","mod_loader-fabric","minecraft_version-1-16-4","minecraft_version-1-16-5","minecraft_version-1-17","minecraft_version-1-17-1","minecraft_version-1-18","minecraft_version-1-18-1","minecraft_version-1-19","minecraft_version-1-19-1","minecraft_version-1-19-3","minecraft_version-1-19-3-rc1","minecraft_version-1-19-4","minecraft_version-1-20","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-4","minecraft_version-1-20-6","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","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>Player Roles - 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\/player-roles\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Player Roles - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Role &amp; permission management for Fabric servers\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\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\\\/player-roles\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-roles\\\/\",\"name\":\"Player Roles - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-roles\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-roles\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/player-roles-icon-icon.png\",\"datePublished\":\"2026-06-07T04:55:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-roles\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-roles\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-roles\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/player-roles-icon-icon.png\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/player-roles-icon-icon.png\",\"width\":400,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/player-roles\\\/#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\":\"Player Roles\"}]},{\"@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":"Player Roles - 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\/player-roles\/","og_locale":"en_US","og_type":"article","og_title":"Player Roles - Minecraft","og_description":"Role & permission management for Fabric servers","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/","og_site_name":"Minecraft","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\/player-roles\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/","name":"Player Roles - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/player-roles-icon-icon.png","datePublished":"2026-06-07T04:55:38+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/player-roles-icon-icon.png","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/player-roles-icon-icon.png","width":400,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/player-roles\/#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":"Player Roles"}]},{"@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\/122551","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\/122552"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=122551"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=122551"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=122551"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=122551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}