Repository navigation
chore: move trunk to main and merge upstream history - #35
Merged
Merged
Conversation
Removes the NmsManager checks for goPaint tool interaction Fixes the error on 1.20.5/6 servers
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
fix: skulls after 1.20.5
Refactor createHead method to use PlayerProfile and PlayerTextures for player head creation.
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…iax-Development#138) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ent#154) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…pment#155) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
… quality (#34) * feat!: support Minecraft 26.1 and 26.2 on Java 25 Compile against Paper API 26.2 and FastAsyncWorldEdit 2.16.1 with Gradle 9.8 and Java 25. Versions move into one catalog, shadow/plugin-yml/run-paper/hangar/spotless use their current coordinates, and build-logic, ServerLib, paperlib and EldoNexus publishing are dropped. Translations use MiniMessageTranslationStore because Adventure removed TranslationRegistry; extra language files in lang/ now fall back to the bundled English bundle. run-<version> tasks start Paper with FastAsyncWorldEdit installed. BREAKING CHANGE: requires Paper 26.1.1 or newer and Java 25. Servers on 1.21 stay on 1.1.x. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * test: add unit tests for brushes, curves and translations JUnit 6, AssertJ and Mockito with JaCoCo reports. Covers brush cycling and lookup, the Paint Brush curve and translation key completeness. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * ci: adopt release please, commit linting and security scans Mirror the AntiRedstoneClock-Remastered pipeline: pr-lint, multi-OS PR builds on Java 25, Release Please on main with a Trivy gate before Hangar/Modrinth publishing and an SBOM upload, weekly Trivy scan, shared Renovate presets and new issue forms. Snapshot publishing on every push and release-drafter are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * docs: restructure documentation along diataxis Tutorial, how-to guides, reference pages for brushes, commands, permissions, configuration and supported versions, background pages and developer guides, published through GitBook. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * docs: add openspec with the modernisation roadmap OpenSpec changes for the four delivered parts (platform upgrade, release pipeline, tests, documentation) and the planned follow-ups: cloud commands, brush menu hardening, non-blocking update check and dependency injection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * fix: check for updates without blocking server start The first update check ran on the main thread during onEnable. It now runs from an async timer with connect and request timeouts, logs failures at debug level, tells the console once per new version and players only on join. generic.check-for-updates turns it off. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * feat!: rebuild /gopaint on cloud with brigadier and translated messages One command tree /gopaint (aliases /gp, /bgp) through cloud's PaperCommandManager with per-subcommand permissions, a generated help, range-checked and tab-completed sizes and messages from the translation bundle. The Bukkit Command subclass and the separate reload command are gone. BREAKING CHANGE: /gopaint reload needs bettergopaint.command.admin.reload (granted by the bettergopaint.admin bundle); every subcommand needs its own bettergopaint.command.* node, which defaults to true. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * fix: identify brush menus by holder and store exported brushes in item data The menu and the brush picker are recognised by their InventoryHolder instead of the title, so foreign inventories with the same title are no longer hijacked. Menu text comes from the translation bundle, rendered for the player's locale. Exported brushes are stored as versioned data under bettergopaint:brush; renamed or edited items keep working and 1.x items are converted on first use without ever throwing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * fix: honour config.yml again and wire the plugin with guice Settings no longer extend FAWE's Config, which on Paper 26 could not set the plugin's fields and ignored every value in config.yml. They are now immutable records behind SettingsHolder, read by a small YAML loader that writes every key back with its comment, replaces invalid values with their default and swaps the snapshot atomically on reload. Listeners, commands and services receive narrow dependencies through Guice modules instead of the plugin instance. Guice, jakarta.inject and aopalliance are shaded and relocated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * docs: archive the implemented openspec changes All eight changes are implemented. Their delta specs are merged into openspec/specs/; the steps that need a game client, GitHub repository settings or GitBook access are listed as manual follow-ups in the archived task lists. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * docs: add the server admin guide A setup tutorial for admins, how-to guides for upgrading from 1.x, limiting builders, applying config changes, turning off update notices and reporting bugs, reference pages for console messages and files, and background on how settings are loaded and why 2.x needs Paper 26. ReferenceDocsTest fails the build when config keys, defaults, permissions, commands, supported versions or the navigation drift from the code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * docs: plan native worldedit brushes and folia readiness Two OpenSpec changes: brushes compute on WorldEdit extents instead of the Bukkit world, which also makes strokes thread-safe, and scheduling plus shared state become Folia-ready while the Folia flag stays off until FastAsyncWorldEdit supports it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * refactor: add stroke context, mask and in-memory extent for native brushes Add an immutable StrokeContext that is captured on the player's thread, a factory that converts the brush settings to WorldEdit types without asking the world for anything, a WorldEdit mask for the BetterGoPaint mask and a runner that executes a stroke in the player's WorldEdit session. Tests get a map-backed MemoryExtent and mock block types, because the WorldEdit block registry cannot initialise without a server. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * refactor: read and write brush strokes through worldedit extents only Brushes now compute their blocks from a StrokeContext and an Extent. The geometry helpers (Sphere, Height, Surface, ConnectedBlocks) and the Bezier curve use BlockVector3 and Vector3, so no Bukkit world, block or location call remains in objects/ and utils/. InteractListener captures the context on the player's thread and queues a WorldEdit Brush that runs in the player's edit session with its global mask and one history entry. Brushes read all positions before they write, which keeps the result the same as when the Bukkit world was read. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * docs: describe the native worldedit stroke and record design deviations Explain the stroke context, the player's WorldEdit session and //gmask in the stroke explanation, document how brushes are tested without a server and note where the implementation differs from the design decisions. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * fix: schedule update check on paper's async scheduler The legacy BukkitScheduler is not available on Folia. Run the update check with Bukkit.getAsyncScheduler().runAtFixedRate and cancel the returned ScheduledTask on shutdown. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * refactor: make per-player brush state thread-safe PlayerBrushManager keeps its per-player brushes in a ConcurrentHashMap and takes a brush factory so the concurrency behaviour can be tested without a server. The Paint Brush stroke points move from a static map into the brush instance and are dropped with the player's brush state on quit. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * build: drive foliaSupported from a gradle property paper-plugin.yml declares folia-supported only when -PfoliaSupported=true is passed. Without it the flag stays false, so release builds cannot declare Folia support by accident. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * build: add run-folia tasks with a configurable fawe url run-folia-<version> starts a local Folia test server with run-paper's Folia downloads. It installs FastAsyncWorldEdit from -PfoliaFaweUrl. Without that property the task fails when it runs, with a message that names the property, so normal builds are unaffected. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * docs: state folia status and how to test on folia Scope and non-goals now says BetterGoPaint is prepared for Folia but does not declare support until a stable FastAsyncWorldEdit release supports it. Supported versions links to that page, and the testing guide describes run-folia-<version> for local testing only. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * build: refuse run-folia without the folia flag Without -PfoliaSupported=true the test server starts but Folia skips BetterGoPaint, which looks like a broken setup. The task now fails early and names both required properties. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp * docs: archive native worldedit brushes and folia readiness Both changes are implemented; their specs move to openspec/specs/. In-game checks with a client and a Folia test with a FAWE fork remain listed as manual follow-ups. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLYZtULzHeMRpNygcFFWgp --------- Co-authored-by: Claude <noreply@anthropic.com>
Adds the 44 upstream commits to the fork history. All conflicts were resolved to the fork's version because upstream's fixes (head/skull handling, ServerLib removal, NMS check removal, dependency bumps) are already covered differently on develop. The tree is identical to develop. Claude-Session: https://claude.ai/code/session_01JavEedb4MyR9NehY3HusTn
Unit Test Results 23 files 23 suites 12s ⏱️ Results for commit adb4049. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings develop into main and adds the upstream goPaint_1.14 history (44 commits, merged from upstream/master). The tree is identical to develop (
git diff origin/develop HEADis empty); all upstream conflicts were resolved to the fork's version.This PR MUST be merged with a merge commit, NOT squashed, otherwise the history is lost.
https://claude.ai/code/session_01JavEedb4MyR9NehY3HusTn