API Packages for Plugins

When your plugin needs to import something from MCDR, rather than directly import the package you want, you can import the packages in mcdreforged.api

mcdreforged.api is the package for plugin developers to import. By only importing from the api package, the import of the target class in the plugin can be decoupled from the actual location of the target class. If MCDR refactors the target class and moves its location in the future, only importing from the api package can keep your plugin unaffected


Module path: mcdreforged.api.all

from mcdreforged.api.all import *

This is the simplest way to import everything you want for plugin development. It’s a life saver for lazy man

You can also use the following way as an approach with more security since it doesn’t use *

import mcdreforged.api.all as mcdr

# access stuffs with mcdr.Something

Continue reading to see what it will actually import


Module path: mcdreforged.api.command

command package contains the necessities for building a command tree or create your own command, including command tree node classes, command exceptions and some command utils

For example, if you want the class Literal and IllegalArgument for building your command tree on_error exception handling, you can do it like this

from mcdreforged.api.command import Literal, IllegalArgument

Of course if you are lazy enough you can just

from mcdreforged.api.command import *

Class references: Command Stuffs


Module path: mcdreforged.api.decorator

decorator package contains some useful function decorators for plugin development

Class references: Decorators


Module path: mcdreforged.api.event

event package contains the classes for creating custom events, and classes of MCDR built-in events

You might already read the dispatch_event() method in ServerInterface class. It only accepts a PluginEvent instance as its first parameter. So if you want to dispatch your custom event, create a LiteralEvent for simpleness or a custom event class inherited from PluginEvent


Module path: mcdreforged.api.exception

There some custom exceptions that is used in MCDR runtime e.g. ServerInterface methods. Here comes the way to import them


Module path: mcdreforged.api.rcon

Package rcon contains a single class RconConnection. It’s is a simply rcon client for connect to any Minecraft servers that supports rcon protocol

Class references: Rcon


Module path: mcdreforged.api.rtext

Recommend to read the page Raw JSON text format in Minecraft Wiki first

This is an advanced text component library for Minecraft

Inspired by the MCD stext API made by Pandaria98

Class references: RText


Module path: mcdreforged.api.types

Who doesn’t want a complete type checking to help you reduce silly mistakes etc. when coding your plugin? If you want to add type hints to the server interface or command source parameter, here’s the package for you to import those Usually-used classes

from mcdreforged.api.types import PluginServerInterface, Info

def on_info(server: PluginServerInterface, info: Info):
    # Now auto completion for server and info parameters should be available for IDE


Some useful kits

Module path: mcdreforged.api.utils

Class references: Utilities