-
Notifications
You must be signed in to change notification settings - Fork 0
Home
The version-specific half of KamiCommon, published to
repo.luxiouslabs.net as com.kamikazejam.kamicommon:spigot-nms. It carries an implementation of
every version-sensitive capability for every supported Minecraft release and picks one at runtime
from the version the running server reports.
This wiki is for contributors: somebody adding a Minecraft version, adding a capability, or trying to work out why the repository is shaped the way it is.
Anything a caller can see is documented there, not here.
- NmsAPI, the static facade
- Adventure and Server Versions
- Text and Components
- Java Versions
Two wikis describing the same API is how they end up disagreeing. If a change is visible from
NmsAPI, it belongs in that wiki as well as in the code.
| Page | What it answers |
|---|---|
| Dispatch | How a server version becomes an implementation, and why the ladder is the only authority on version coverage |
| Modules and Java Floors | Why the version modules target different JVMs, and how to read a failure that names one |
| The Relocated Adventure | Why a copy of Adventure ships as a jar inside the jar, and why nothing outside can reach it |
| The v_latest Canary | Why a module exists that most ladders never dispatch to, and what deleting it would cost |
| What The Checks Cover | What each verify-* task asserts, and the line between packaging and behaviour |
| Adding a Minecraft Version | The walkthrough, in order, and how to tell whether it worked |
Floors, version ranges, module inventories and dependency pins move. They are not repeated here or on any other page, because a page that lists thirty numbers is wrong within two releases and everything else on it becomes suspect. The files that hold them:
| What | Where |
|---|---|
| The Java floor of every version module | gradle/module-floors.properties |
| The module list | settings.gradle.kts |
| Which modules ship reobfuscated and which ship plain |
plainVersions and reobfVersions in core/build.gradle.kts
|
| The published version, the newest Paper dev bundle, and the shared dependency pins | build.gradle.kts |
| Which module serves a given Minecraft version, per capability | the ladders, described in Dispatch |
The source is heavily commented, and the comments carry the reasoning behind decisions that look arbitrary from outside. Prefer them to inference.
Use sh gradlew. The wrapper script is tracked mode 644, so ./gradlew fails.
gradle build runs every verification task. Continuous integration builds twice, once with
MC_SERVER_NEWEST_API=false and once with true, which swaps the generic server API that :api
and :core compile against between the oldest supported release and the newest Paper. Both must
pass.
Behaviour is not checked by the build. See What The Checks Cover for what is checked where.