This project is a maven plugin which helps you during Minecraft server plugin development. It can create and start a minecraft server with your plugin.
You can use this plugin with maven commands or by adding it to your project.
The plugin proposes 4 maven goals, they are used as follows:
- To install the server:
mvn fr.lehtto.maven.plugins:servermc-maven-plugin:VERSION:install - To copy your plugin into sever files:
mvn fr.lehtto.maven.plugins:servermc-maven-plugin:VERSION:copy-plugins - To start the server:
mvn fr.lehtto.maven.plugins:servermc-maven-plugin:VERSION:start - To clean the server directory (delete it):
mvn fr.lehtto.maven.plugins:servermc-maven-plugin:VERSION:clean
It is possible to shorten the command by adding
fr.lehtto.maven.pluginsto your plugin groups configuration. In the maven settings.xml:<pluginGroups> <pluginGroup>fr.lehtto.maven.plugins</pluginGroup> ... </pluginGroups>Now the command is
mvn servermc:GOAL(maven will use the latest available version automatically)
You can configure your project to use this plugin by updating the pom.xml
<build>
<plugins>
<plugin>
<groupId>fr.lehtto.maven.plugins</groupId>
<artifactId>servermc-maven-plugin</artifactId>
<version>VERSION</version>
<configuration>
....
</configuration>
</plugin>
</plugins>
</build>Currently, the plugin supports only PaperMC server.
This goal's purpose is to prepare the server to be run. Following actions are performed sequentially:
- Checks the EULA agreement
- Creates server directory, if it doesn't exist
- Retrieves the server JAR, if it doesn't exist (or if it has to be overridden), and check its checksum
- Creates
server.propertieswith specified properties, if it doesn't exist (or if it has to be overridden)
The goal behavior can be fine-tune with following configurations:
| parameter | type | optional | default value | description |
|---|---|---|---|---|
| serverDirectory | directory path | yes | target/server | The directory where the server is installed and ran |
| mcVersion | string | no | Version of Minecraft | |
| eula | boolean | no | Agreement of Minecraft EULA | |
| baseUrl | URL | yes | https://api.papermc.io/v2/minecraft/paper |
The base URL of API used to fetch server JAR |
| overrideJar | boolean | yes | true | Download and replace the server JAR file even if it exists |
| overrideProperties | boolean | yes | true | Clear the server.properties and override it with the provided properties |
| buildNumber | int | yes | computed | The server JAR's build number to use |
| properties | map<string, string> | yes | The map of properties used to initialize the server.properties |
This goal's purpose is to copy the minecraft plugin you are working on in the server plugins folder. It can also copy additional plugins.
The goal behavior can be fine-tune with following configurations:
| parameter | type | optional | default value | description |
|---|---|---|---|---|
| serverDirectory | directory path | yes | target/server | The directory where the server is installed and ran |
| skipAdditionalPlugins | boolean | yes | false | Should the additional plugins copy skipped |
| additionalPlugins | list | yes | The list of additional plugins to copy |
To specify additional plugins to copy you can:
- Use a file path (not recommended):
<configuration>
<additionalPlugins>
<plugin>
<name>PLUGIN NAME</name>
<file>FILE PATH (ABSOLUTE OR RELATIVE)</file>
</plugin>
</additionalPlugins>
</configuration>- Use a URL to download from:
<configuration>
<additionalPlugins>
<plugin>
<name>PLUGIN NAME</name>
<url>URL</url>
<sha256>SHA256 CHECKSUM (OPTIONAL)</sha256>
<md5>MD5 CHECKSUM (OPTIONAL)</md5>
</plugin>
</additionalPlugins>
</configuration>- Specify a maven dependency artifact to copy:
<configuration>
<additionalPlugins>
<plugin>
<name>PLUGIN NAME</name>
<groupId>DEPENDENCY GROUP ID</groupId>
<artifactId>DEPENDENCY ARTIFACT ID</artifactId>
</plugin>
</additionalPlugins>
</configuration>This goal's purpose is to start the minecraft server
The goal behavior can be fine-tuned with following configurations:
| parameter | type | optional | default value | description |
|---|---|---|---|---|
| debugPort | int | yes | 5005 | The port to use for remote debugger |
| remoteDebug | boolean | yes | false | Prepare the sever to attach a remote debug |
| serverDirectory | directory path | yes | target/server | The directory where the server is installed and ran |
| minimumAllocationPoolSize | int | yes | 1 | Minimum size (in Go) of the memory allocation pool |
| maximumAllocationPoolSize | int | yes | 2 | Maximum size (in Go) of the memory allocation pool |
This goal's purpose is to clean the server folder,
The goal behavior can be fine-tuned with following configurations:
| parameter | type | optional | default value | description |
|---|---|---|---|---|
| serverDirectory | directory path | yes | target/server | The directory where the server is installed and ran |
| ignoreWorlds | boolean | yes | false | whether the world folders should be kept |
- Adds support for other Minecraft server (e.g. spigot)
- Adds configurations to clean goal to filter what is deleted
Allows debugging of developed plugin