Plugin Catalogue

The official MCDR plugin catalogue is the master branch of repository https://github.com/MCDReforged/PluginCatalogue. Users can browse plugins here and developers can submit their plugins to the catalogue

The catalogue is updated once files change, and twice per 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

plugins/
 ├─ 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

id

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

authors

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

Example:

"authors": [
    "Someone",
    "That person",
    {
        "name": "AnotherOne",
        "link": "https://github.com/AnotherOne"
    },
    {
        "name": "MyFriend",
        "link": "https://www.myfriend.com"
    }
]

Type: List[str or dict]

repository

The url of the github repository of your plugin

Type: str

branch

The branch of the git repository where your plugin is in

Type: str

labels

Optional field, default: []

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

Type: List[str]

introduction

Introduction is a paragraph written in markdown syntax, showing the features of the plugin to attract new users. It will be shown to user when they are browsing your plugin

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/introduction.md",
    "zh_cn": "doc/introduction-zh_cn.md"
}

Tip

A commonly-used and recommended practice is to link the introduction document to the README files in your repository

"introduction": {
    "en_us": "README.md",
    "zh_cn": "README_CN.md"
}

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 introduction.md for default language en_us and named by e.g. introduction-zh_cn.md for other language

plugins/
 └─ my_plugin
     ├─ plugin_info.json
     ├─ introduction.md
     └─ introduction-zh_cn.md

You should provide the introduction at least in one language

Type: Dict[str, str]

Label

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

Description

information

Information

Collects and displays information for users

tool

Tool

A useful tool, or a game helper

management

Management

Manages files or other stuffs on the server

api

API

Functions as an API or library that provides common functionalities to other plugins

handler

Handler

Provides a custom server handler

Language

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

Release

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

Format

Example

<version>

1.2.3

v<version>

v1.2.3

<plugin_id>-<version>

my_plugin-1.2.3

<plugin_id>-v<version>

my_plugin-v1.2.3

  • 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

It’s encouraged to read the Contributing Guidelines before submitting your plugin

If you want to submit your plugin:

  1. Fork the catalogue repo

  2. Create a directory for your plugin within the plugins/ folder, including all the necessary files

  3. Create 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