Repository navigation
Support Paper 26.x - #71
Conversation
Always generate plugin.yml into the build directory and use plugin.yml from resources only as defaults. Previously, the source plugin.yml was overwritten and other resources were deleted, and values from the previously generated plugin.yml took precedence over the new ones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Paper version and Java handling src/main/kotlin/plugin/util/MinecraftVersion.kt, src/main/kotlin/dependencies/Dependencies.kt, src/main/kotlin/server/DevServerFeature.kt, src/test/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePluginSpec.groovy, src/test/groovy/ru/endlesscode/bukkitgradle/server/task/RunServerSpec.groovy, README.md, CHANGELOG.md, src/main/kotlin/server/task/CreateIdeaGradleRunConfiguration.kt, src/main/kotlin/server/task/PrepareServer.kt |
Version parsing accepts a numeric major and minor with an optional patch. For Paper 26.1+, dependency resolution uses the .+ version format and the minimum Java version is 25. The dev server uses the greater of the resolved minimum and configured toolchain versions. Tests and documentation cover the updated versions and server selection. |
Generated plugin.yml resources
| Layer / File(s) | Summary |
|---|---|
Generated plugin.yml resources src/main/kotlin/plugin/PluginYamlFeature.kt, src/main/kotlin/plugin/task/ParsePluginYaml.kt, src/test/groovy/ru/endlesscode/bukkitgradle/PluginSpecification.groovy, src/test/groovy/ru/endlesscode/bukkitgradle/plugin/task/GeneratePluginYamlSpec.groovy, CHANGELOG.md |
The feature passes a discovered source plugin.yml to the parse task and adjusts resource exclusions based on whether generation is enabled. Generated output is tested separately from source resources, including resource processing and changed configuration. |
Gradle wrapper and build setup
| Layer / File(s) | Summary |
|---|---|
Gradle wrapper and build setup .gitignore, gradle/wrapper/gradle-wrapper.properties, gradlew, gradlew.bat, build.gradle.kts, gradle.properties, src/main/kotlin/extensions/Provider.kt, README.md, CHANGELOG.md |
The documented Gradle minimum changes to 9.7, and the wrapper uses Gradle 9.8.2. The wrapper scripts launch the wrapper JAR with -jar. Build dependencies and project version are updated, and .kotlin/ is ignored. |
Estimated code review effort: 3 (Moderate) | ~25 minutes
Change: Feature
Sequence Diagram(s)
sequenceDiagram
participant PluginYamlFeature
participant SourceResources
participant ParsePluginYaml
participant ResourceFactory
participant ProcessResources
PluginYamlFeature->>SourceResources: Find source plugin.yml outside build directories
PluginYamlFeature->>ParsePluginYaml: Pass source plugin.yml provider
ParsePluginYaml->>ResourceFactory: Provide parsed source values when a source file exists
ResourceFactory->>ProcessResources: Generate plugin.yml in generated resources
SourceResources->>ProcessResources: Exclude source plugin.yml when generation is enabled
Possibly related PRs
- EndlessCodeGroup/BukkitGradle#66: Introduced the resource-factory generation flow that this change updates.
- EndlessCodeGroup/BukkitGradle#68: Changed API-version handling and dev-server defaults that this update extends for Paper 26.x.
- EndlessCodeGroup/BukkitGradle#63: Introduced the run-paper server implementation updated here.
Merge Risk: 
Minimal · up to 96b80
-
No actionable merge-blocking issue remains. The launcher dependency receives its version transitively, so that declaration does not prevent merging after normal checks.
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passedFull details: Docstring Coverage
-
Explanation
Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 4 functions across 9 files. (11 skipped: 11 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches
-
Generate docstrings
-
- Commit to this branch
- Create a new PR
Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
A rabbit checks the build at dawn,
Paper versions hop along.
A fresh plugin.yml finds its place,
The wrapper runs at a newer pace.
Java twenty-five joins the scene,
And carrots mark the changelog green.
CodeRabbit Verify
- Run CodeRabbit Verify to test the changes in this pull request.
Adds Paper 26.x support so plugins can compile against
paper-api26.x and run a 26.x dev server.Changes
paperApiresolves"$apiVersion.+"for 26.1+, because Paper publishespaper-apias<version>.build.<number>-<channel>. For example,26.1.2resolves to26.1.2.build.74-stable. Spigot and older versions keep-R0.1-SNAPSHOT.MinecraftVersion.parseignores version suffixes, so explicit versions like26.3-pre-2.build.0-alphano longer fail.bukkit.apiVersionmust be a version Paper actually published. Paper skipped 26.1, so use26.1.2.@DisableCachingByDefaulton tasks.plugin.ymlis always generated intobuild/, andplugin.ymlfrom resources is used only as defaults. Previously, an existingplugin.ymlwas overwritten and other files insrc/main/resourceswere deleted. Values from the previously generatedplugin.ymlalso took precedence over build configuration changes.Verification
./gradlew checkpasses.apiVersion = "26.1.2": resolvedpaper-api26.1.2.build.74-stable, downloaded Paper 26.1.2, ran it on Java 25, and the plugin was enabled.apiVersion = "1.21.11": Paper 1.21.11 ran on Java 21, and the plugin was enabled.Checklist:
🤖 Generated with Claude Code