Launcher for the Paper Minecraft server
Java
Switch branches/tags
Nothing to show
Clone or download
DemonWav Undo placing cached jar with Paperclip
This is no longer needed, as both Java 8 and Java 9 implementations
handle adding classpath entries properly, without requiring on fragile
jar manifest entries. While it is not needed anymore, keeping the cache
directory with the Paperclip jar could cause several issues, especially:

 * In cases where the user does not have write access to the Paperclip
   jar itself, such as a hosted server.

 * In cases where a user is starting up multiple Paperclip servers on
   the same machine using the same Paperclip jar at the same time.

I don't imagine the second point to actually be a common problem, but it
is technically an issue.
Latest commit d0395f6 Sep 28, 2017

readme.md

Paperclip

A binary patch distribution system for Paper

It uses a Maven plugin to generate a bsdiff patch between the vanilla server and the modified jar. Then it generates a launcher jar, with the patch and info inside of it. The launcher downloads the Mojang jar, verifies it, and applies the patch. Finally, it wraps the patched jar in its own class loader, and runs the main class.

This avoids the legal problems of the GPL's linking clause.

The patching overhead is avoided if a valid patched jar is found in the cache directory. It checks via sha256 so any modification to those jars (or updated launcher) will cause a repatch.

Building

Copy the vanilla Minecraft jar the build is based off of and the Paper jar into the root directory of this project. Either name them according to the settings in the pom.xml, or modify it to match the names of the jar. To create the launcher for this build, run this command:

mvn clean package