Skip to content

Overview

pluggy is a single-binary toolchain for Minecraft plugin development. Scaffold a project, install dependencies from Modrinth, Maven, local jars, or sibling workspaces, build a real plugin jar, and boot a live Paper, Spigot, Velocity, or Sponge server that rebuilds when you save.

No global JVM toolchain, no Gradle wrapper, no pom.xml. One project.json per project.

Start here

If you have never used pluggy before, read these in order. The first page is enough to get a plugin running.

  • Getting started: install, scaffold, build, and run a dev server. Eight minutes from zero to a live server.
  • Glossary: plain-English definitions for every term in these docs. Bookmark it.
  • project.json reference: every field, every form, and the validation rules.
  • Dependency sources: the Modrinth, Maven, file, and workspace grammar.

Commands

Every subcommand, with its flags, JSON envelope, and sample output.

CommandSummary
initScaffold a new project in an empty directory.
installAdd a dependency or refresh the lockfile.
removeDrop a dependency and (optionally) its cached jar.
infoInspect a Modrinth, Maven, file, or workspace source.
searchSearch Modrinth by keyword.
listPrint declared deps, resolved versions, and registries.
whyTrace which top-level dep pulled in a transitive.
outdatedList locked deps with a newer upstream version.
auditVerify cached jars against the lockfile hashes.
buildCompile, copy resources, write the descriptor, jar.
testCompile and run JUnit Platform tests under test/.
docsGenerate Javadoc HTML against the resolved classpath.
devBoot a live server with the plugin and its runtime deps.
sdkManage the JDKs pluggy provisions for builds.
cacheInspect and prune the download cache.
doctorCheck the environment and every workspace.
upgradeReplace the running binary with the latest release.
completionsPrint a shell completion script.

Deeper topics

These pages explain how pluggy works once you’ve outgrown the tutorial. They assume you’ve shipped at least one plugin.

  • Build pipeline: what happens between pluggy build and the output jar. Maven dependency resolution, SNAPSHOT handling, classpath construction, descriptor generation.
  • Dev server: the dev/ staging directory, runtime vs compile-time plugin detection, EULA handling, --reload vs restart, shutdown semantics.
  • Workspaces: monorepo layout, inheritance rules, the workspace: source kind, topological build order.
  • IDE integration: what ide: "vscode" | "eclipse" | "intellij" writes and where.
  • Cross-platform notes: install paths, cache paths, line endings, signal handling.
  • Troubleshooting: common failures, the error messages the code actually prints, and what to do about them.

Recipes

Task-oriented walkthroughs for situations that come up often. Each recipe stands alone; pick the one that matches what you’re trying to do.

Reading these docs

Path examples use POSIX form (~/Library/Caches/pluggy/...). When the Windows path differs in a way that matters, the difference is called out inline.

pluggy reads one file (project.json) and writes one lockfile (pluggy.lock). Everything else, the cache, the build staging directory, the dev/ server directory, is derived from those two.

If a term feels unfamiliar, check the glossary first.