Plugin Catalogue

The official MCDR plugin catalogue is the master branch of repository Users can browse plugins here and developers can submit their plugins to the catalogue

The catalogue is updated once files change, and every 1 hour via github action

File structures

Plugin information is stored in the plugins/ directory in the repository. Each plugin has its own sub-directory named by its plugin id inside the plugins/ directory

 ├─ my_plugin
 │   └─ plugin_info.json
 └─ another_plugin
     ├─ plugin_info.json
     └─ some_other_files.txt

Plugin Info

plugin_info.json contains the basic information of your plugin


The id of your plugin. It needs to be the same with the name of the directory the plugin_info.json is in

Type: str


Optional field, default: []

A list contains the authors of the plugin. Elements in the list can be a single str representing the name of the author, or a dict contains the author name and the url link of the author


"authors": [
    "That person",
        "name": "AnotherOne",
        "link": ""
        "name": "MyFriend",
        "link": ""

Type: List[str or dict]


The url of the github repository of your plugin

Type: str


The branch of the git repository where your plugin is in

Type: str


Optional field, default: []

A list of id of Label of your plugin. Choose them wisely

Type: List[str]


Optional field, default: {}

Introduction is a paragraph written in markdown syntax. It will be shown to user when they are browsing your plugin. Comparing to readme or document, introduction focuses more on showing the features of the plugin to attract new users

For the introduction field, it’s a mapping maps Language into a file path

The key is the language

The value is the file path of the introduction file in your plugin repository. Field related_path is considered during the calculation of the real url

Example with the same file structure in related_path:

"introduction": {
    "en_us": "doc/",
    "zh_cn": "doc/"

Alternatively you can don’t declare this field but put your introduction file inside the same directory where plugin_info.json is

It’s named by for default language en_us and named by e.g. for other language

 └─ my_plugin
     ├─ plugin_info.json

Type: Dict[str, str]


Label describes what your plugin does. A plugin can have multiple labels

All current available labels are shown in the following table

Label id

Label name




Show or get information for users



A tool, or a game helper



Manages files or other stuffs of the server



Works as a API or a library which provides common functionalities to other plugins


Plugin catalogue supports multiple language for users in different countries

  • English (en_us)

  • Simplified Chinese (zh_cn)

The default and fallback language is en_us


Plugin catalogue will automatically detect the releases in your plugin repository and extract the plugin download url in the assets, as long as the release follows the following restrictions:

  • Pre-release: It should not be a pre-release

  • Release tag name: the same as the version of the released plugin, can be in one of the following format











  • Assets: contains 1 asset with .mcdr or .pyz file extension name. Other assets will be ignored

    Which also means only Packed Plugin is supported

Submit Plugin

If you want to submit your plugin, create the directory of your plugin inside the plugins/ directory with necessary files, and make a pull request

It’s recommended to leave your github link in the authors field so repository maintainers can simply tell if you are the owner of the plugin

All changes files should only be inside the sub-directory named by your plugin id in the plugins/ folder