Skip to content

Restructure into api/core/paper/bungee/velocity, ship jars in builds/, support Folia - #4

Merged
Macaron27 merged 1 commit into
mainfrom
restructure
Oct 2, 2026
Merged

Macaron27 merged 1 commit into
mainfrom
restructure

Conversation

@Macaron27

Copy link
Copy Markdown
Owner

Summary

  • Layout: common is now core (package com.friends.core). The modules are api/, core/, paper/, bungee/ and velocity/, and any future platform gets its own top-level folder.
  • builds/: every build syncs friends-paper.jar, friends-velocity.jar, friends-bungee.jar and friends-api.jar there. The folder is gitignored, and the unused thin plugin jars are no longer built.
  • verifyBuilds (part of check) asserts:
    • descriptor versions and the Folia flag;
    • each platform ships only its own events;
    • bundled libraries are relocated;
    • the Paper and API jars are Java 8 bytecode;
    • no file-sync copies (Foo 2.class) are inside.
  • Folia: the Paper jar declares folia-supported: true. The request-expiry timer moved from the three platform schedulers into FriendsRuntime, and a failing run no longer cancels later ones.
  • Velocity: @Plugin(version) is generated from the build version.
  • Docs: api/README.md is the API usage guide, and the README is updated.
  • e2e: the runner reads the jars from builds/ and has a folia-<version> scenario.
  • CI: builds and verifies, then uploads builds/*.jar.
  • Untracked by request, kept locally: test sources (**/src/test/), .vscode/ and .claude/.

Test plan

  • ./gradlew build --rerun-tasks with the MySQL 8.0.46 and Redis 8.10.2 suites: 164 test runs, 0 failures. The two skips are by design.
  • New RuntimeTest: the core timer expires requests and keeps going after a failing run. It fails without the fix.
  • verifyBuilds fails as expected when injected faults are added (a file-sync copy, another platform's events in a jar).
  • The committed tree builds alone, without test sources, as CI will: all test tasks NO-SOURCE, verifyBuilds green.
  • Real servers, 12/12: Paper 1.8.8 and 26.3, Folia 1.21.11, BungeeCord and Velocity with 1.8.8 and 26.3 backends, the API probe on Paper and both proxies, and BungeeCord + Velocity sharing MySQL and Redis.

🤖 Generated with Claude Code

…, support Folia

- Rename the common module to core (package com.friends.core).
- builds/: every build syncs friends-paper/-velocity/-bungee/-api.jar there; the
  unused thin plugin jars are no longer built.
- verifyBuilds (part of check): descriptor versions, Folia flag, each platform's
  own events only, relocated libraries, Java 8 bytecode for the Paper and API
  jars, no file-sync copies ("Foo 2.class") inside the jars.
- Folia: the Paper jar declares folia-supported; the request-expiry timer moves
  from each platform's scheduler into FriendsRuntime (Folia has no Bukkit
  scheduler), and a failing run no longer cancels later ones.
- Velocity's @plugin version is generated from the build version.
- API usage guide in api/README.md; README, e2e runner (folia-<version>
  scenario, jars from builds/) and CI (build + verify, upload builds/*.jar) updated.
- .gitignore: builds/, IDE and Claude Code files, test sources; untrack
  .vscode/, .claude/ and src/test (kept locally).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Macaron27
Macaron27 merged commit e0044e4 into main Oct 2, 2026
1 check passed
@Macaron27
Macaron27 deleted the restructure branch October 2, 2026 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant