2.3 KiB
This guide will help you through creating a plugin for Dragonroll
Downloading the example plugin
The quickest way to start a plugin is starting from the example plugin template that you can find in this repository. Every Dragonroll plugin has the following file structure:
/your-plugin/
├── plugin.json
├── client
│ └── main.js
│ └── ...
├── backend
│ └── main.js
│ └── ...
├── locales
│ └── en-US.json
│ └── ...
└── public
└── icon.png
└── ...
- The
plugin.json
contains basic information about your plugin, and also the entrypoints that Dragonroll will use to load and initialize the plugin - The
client
folder contains all the code of your plugin that is relative to the client - The
backend
folder contains all the code that is relative to the server - The
locales
folder contains the translation files for your plugin - The
public
folder contains all the media that will be publicly available for your plugin client
The plugin.json file
Your plugin.json
file defines important information about your plugin, like its name, package, authors, entrypoints, and other information
Important: The package
field must be identical to the name of the folder containing your entire plugin
plugin.json
{ "package": "your-plugin", "name": "My custom plugin", "description": "This is my first custom plugin", "authors": [ { "name": "Aran Roig" } ], "version": "1.0", "client": { "entrypoint": "main.js" }, "backend": { "entrypoint": "main.js" } }
Entrypoints
When Dragonroll registers a plugin, it calls the Main
method of the file specified in the entrypoint field inside the plugin.json
, so if you don't export a function with that name your plugin won't load. Dragonroll passes its entire API through the main method
client/main.js
andbackend/main.js
function Main(Api){ console.log("Hello World!"); } export { Main };
In the client entrypoint, the Api
variable will be a ClientApi
object. In the backend entrypoint, the Api
will be instead a BackendApi
object.