- This is a Gradle Kotlin DSL Java plugin project for Bukkit/Paper; there is no Maven
pom.xmldespite.github/workflows/copilot-setup-steps.ymlrunningmvn. - Runtime entrypoint is
src/main/resources/plugin.yml->io.github.thebusybiscuit.slimefun4.implementation.Slimefun. - The root Gradle project is named
Slimefun;buildproduces the shaded plugin jar viashadowJar, and the plainjartask is disabled. - Main namespaces are mixed intentionally: upstream/core code under
io.github.thebusybiscuit.slimefun4.*, fork-specific code undercity.norain.slimefun4.*, and storage/chat migration glue undercom.xzavier0722.*.
- Windows:
./gradlew.bat build; Unix/CI:./gradlew build --no-daemon. - Format check:
./gradlew spotlessCheck --no-daemon. - Apply formatting only when intended:
./gradlew spotlessApply --no-daemon. - Run tests:
./gradlew test --no-daemon. - Run one JUnit test class:
./gradlew test --tests io.github.thebusybiscuit.slimefun4.utils.TestMinecraftVersion --no-daemon. - CI PR order is
spotlessCheckthenbuild -PprojectVersion="Preview Build #<pr>-<shortsha>", followed by e2e server startup tests.
- Java 21 is authoritative: Gradle toolchain and
options.releaseare both set to 21; CI defaults to Java 21. - Version defaults to
DEV-SNAPSHOT; pass-PprojectVersion=...when the jar/plugin version must be specific. processResourcesexpands${version}inplugin.ymland depends on generatedgit.properties;sourcesJaralso depends ongenerateGitProperties.- Shading relocates Dough, PaperLib, Unirest, Commons Lang, and GuizhanLib into
io.github.thebusybiscuit.slimefun4.libraries.*; do not change relocations casually. - Many server/integration dependencies are
compileOnlybecause they are soft dependencies loaded by the server (PlaceholderAPI,WorldEdit,ClearLag,mcMMO,ItemsAdder,Vault,Orebfuscator). - Publishing needs
MAVEN_ACCOUNTandMAVEN_PASSWORD; snapshots/releases go tohttps://maven.norain.city/based on whether the version containsSNAPSHOT.
- Java formatting is Spotless with Palantir Java Format
2.90.0, plus unused-import removal and annotation formatting. .editorconfigenforces LF, UTF-8, Java 4-space indents, 120-column max, and single-class imports.- Existing unit tests are sparse; e2e coverage in CI downloads Paper versions
1.17.1,1.18.2,1.19.4,1.20.6,1.21.4,1.21.8, andlatest, then boots the built plugin with an externalSlimefun-e2e-testerjar.
- README support/version text may lag executable config; trust
build.gradle.kts,gradle/libs.versions.toml, and CI over prose when they conflict. - This fork contains Chinese logs/comments/docs; do not translate user-facing text unless the task asks for localization changes.
src/main/resources/plugin.ymlstill declaresapi-version: '1.16'while compiling against Paper API1.21.11-R0.1-SNAPSHOT; do not “modernize” it without verifying compatibility intent.