PaperMake – Minecraft plugin development tool

Logo
Open issues Gradle plugin CodeFactor Discord

Features

  • Development server with IDE integration ✅
  • Gradle Shadow plugin compatibility ✅
  • In-game plugin auto-reload on gradle “build” and “shadowJar” tasks ✅
  • Working breakpoints in your plugin code and libraries ✅
  • Development server console right in IDE ✅
  • Useful in-game commands ✅

Installation

To install PaperMake, add this on top of your build.gradle file, to the end of plugins { } block:

plugins {
    id 'com.rikonardo.papermake' version '1.0.3'
}

Kotlin DSL

Add this on top of your build.gradle.kts file, to the end of plugins { } block:

plugins {
    id("com.rikonardo.papermake") version "1.0.3"
}

Notice

PaperMake should always be specified after java/kotlin and shadow (if you are using it) plugins. Here is an example of correct plugins order:

plugins {
    id 'java'
    id 'com.github.johnrengelman.shadow' version '...'
    id 'com.rikonardo.papermake' version '...'
}

Usage

Run devServer task (from papermake category) to start development server.

You can use next optional properties to configure environment:

Property Description
pmake.version Minecraft version of development server. Can be any version, which has available paper release. By default, PaperMake wold use latest release.
pmake.port Port for development server. Default port: 25565. Note, that if port unavailable, PaperMake would try to use port, incremented by 1 (e.g. 25566).
pmake.dir Path to the directory where dev server will be launched, can be relative to project directory. By default, server runs in build/papermake/run.
pmake.server Path to custom server jar, can be relative to run directory. If specified, pmake.version property will be ignored.
pmake.gui When true, removes default “-nogui” server arg that prevents server gui window from appearing.
pmake.args Additional arguments for development server. Fore example, -o=false will disable online-mode.

Properties are specified with -P prefix. Here’s an example:

./gradlew devServer -Ppmake.version=1.16.4 -Ppmake.port=25575 -Ppmake.args="-o=false -s=100"

You can also use this properties in IDE. For example in IntelliJ IDEA, you can specify them in “Edit Run/Debug Configurations” dialog in “Run” field after devServer task name.

When development server is running, you can use build or shadowJar (when using shadow plugin) tasks to build and automatically reload your plugin.

In-game commands

PaperMake provides some useful in-game commands to simplify development.

Command Description
/pmake Show help message.
/pmake info Display development environment information.
/pmake reload Reload developed plugin without rebuilding it.
/pmake console <command> Run command as console without leaving game.
/pmake plugin load <plugin jar name> Load external plugin from “plugins” directory in runtime.
/pmake plugin unload <plugin name> Unload external plugin completely (with class unloading).
/pmake plugin enable <plugin name> Enable disabled plugin.
/pmake plugin disable <plugin name> Disable plugin without unloading.
/pmake plugin reload <plugin name> Reload plugin without unloading, just disable and enable.

Additional server configuration

You can go into server directory (build/papermake/run by default) and edit server configuration files.

Installing other Minecraft plugins

Additional Minecraft plugins can be placed into plugins folder inside of server directory (build/papermake/run by default). You can use /pmake plugin load in-game command to load them without restarting development server. They will load as usual and PaperMake will not reload them when reloading your plugin.

GitHub

View Github