.. plugins: Plugins ======= **PocketMine is extendable!** Plugins are available on the `PocketMine website `_ or you can make your own plugin. Below is an skeleton with the minimal needed directories, files and content. Basic plugin structure ---------------------- .. contents:: :local: :depth: 2 Directories +++++++++++ Make sure your base structure looks like this .. code-block:: sh Example ├── plugin.yml └── src └── Example └── Main.php 2 directories, 2 files plugin.yml ++++++++++ This file is required in a plugin. It contains the information used by PocketMine-MP to load this plugin. It's in YAML format (you will use this format for plugin configurations). It has four required fields: name, version, api and main. Each one of these fields (and all the optional ones) are described on the plugin.yml page. Be sure that it is named exactly plugin.yml. ======= ==================================================================================== field data ======= ==================================================================================== name The name for your plugin main The namespace and classname pointing to your main plugin class. It is case sensitive version The version string of your plugin api Minimal PocketMine-MP API version required for your plugin ======= ==================================================================================== .. code-block:: yaml name: Example main: Example\Main version: 1.0.0 api: [1.0.0] Main.php ++++++++ Now, create the main class file, that will include the PluginBase Class that starts the plugin. You can name it whatever you want, but a common way to name it is like the plugin name or Main. .. code-block:: php getLogger()->info("onLoad() has been called!"); } public function onEnable(){ $this->getLogger()->info("onEnable() has been called!"); } public function onDisable(){ $this->getLogger()->info("onDisable() has been called!"); } }