SingularityPlugin is the starter template of the Singularity Project — a minimal PaperMC plugin showing how to consume SingularityLib. It's the "hello world" skeleton new plugin devs copy.
| Repo | Role |
|---|---|
SingularityLib |
Core framework library (dependency) |
| SingularityPlugin (this repo) | Template plugin extending CorePlugin |
Singularity-DevTool |
In-game debug tool (also built on the lib) |
mvn clean package # shaded jar into target/- Requires JDK 25, targets Paper 26.2+ (
paper-api [26.2.build,), provided scope). - Depends on
io.github.pinont:singularitylib:${singularity.version}— releases from Maven Central, snapshots from maven.pinont.me. - At runtime, expects the SingularityLib jar installed as a separate server plugin:
paper-plugin.ymldeclares it as a required server dependency withload: BEFOREandjoin-classpath: trueso the template can see lib classes without shading them.
Tiny repo:
src/main/java/com/example/SingularityPlugin.java— extendsCorePlugin; emptyonPluginStart()/onPluginStop()overrides. That's the whole source.src/main/resources/paper-plugin.yml— plugin metadata + SingularityLib dependency wiring.
There is no test suite, no CI workflow file, and no additional resources (no config.yml).
The template only exercises:
CorePluginas base class withonPluginStart/onPluginStoplifecycle overridespaper-plugin.ymlserver-dependency declaration (join-classpath: true)
So the template breaks only if CorePlugin's class name/package or lifecycle method signatures change. Any broader lib API change won't affect this repo directly.
- Package
com.example— placeholder; should become something likeme.pinont.singularitytemplateif this ships publicly. plugin.yml-style version string1.0-SNAPSHOThardcoded inpaper-plugin.ymlwhile pom is also1.0-SNAPSHOT— consider resource filtering to keep in sync (lib already does this pattern).- Empty lifecycle methods mean a fresh build produces a plugin that does nothing visible — fine for a template, but consider adding commented example code (a command, a menu) to demonstrate the lib.
- No README instructions about needing SingularityLib installed on the server first (README only covers building).
- Keep this repo minimal — it's a template. Don't add real features here; prototype them in DevTool or the lib.
- If you change how SingularityLib is consumed (shaded vs join-classpath), update both
pom.xmlandpaper-plugin.ymlconsistently and re-test on a live Paper 1.21+ server. - When the lib rework lands LTS/rolling versions, this template should pin to the newest LTS line and document that choice in the README.