Skip to content

Conversation

@kezz
Copy link
Member

@kezz kezz commented Jun 27, 2025

Introduction

This PR exists to track the progress on Adventure 5.0. It only exists as a PR for review purposes, once Adventure 5.0 is complete, the main branch of the repo will be changed to main/5.

Discussion in this PR will be limited to reviews of the PR itself. For discussion about broader changes in Adventure 5.0, please see #1202.

To-do list:

The list below tracks remaining tasks. For reference, "refactor" means removal of all deprecations and refactoring of code to use modern Java language features.

  • Bump Java version to 21.
  • Refactor annotation-processors module.
  • Refactor api module.
  • Remove extra-kotlin module.
  • Refactor key module.
  • Refactor nbt module.
  • Refactor serializer-configurate-4 module.
  • Refactor text-logger-slf4j module.
  • Refactor text-minimessage module.
  • Refactor text-serializer-ansi module.
  • Refactor text-serializer-commons module.
  • Refactor text-serializer-gson module.
  • Refactor text-serializer-gson-legacy-impl module.
  • Refactor text-serializer-json module.
  • Refactor text-serializer-json-legacy module.
  • Refactor text-serializer-legacy module.
  • Refactor text-serializer-plain module.
  • Fix GitHub actions builds.
  • Check all Javadocs, IJ's reformatting changes JD references to impl classes and fucks up spacing for no reason.
  • Migrate to jspecify.
  • Double check jspecify everywhere, some weirdness remaining.
  • Make TextFormat sealed.
  • Modularize!
  • Find some sort of abi/api break checker just to double check we've not removed anything important.
  • Check if there's any libraries we can/should update
  • Add a note on Component, Payload, Action that new types may be added at any time
  • Synthetic-ise all old component construction methods that aren't simple data, SBA...
  • Add new sba only methods for construction

4.0 changes required

Deprecate:

  • BuildableComponent
  • The "enumness" of ClickEvent$Action
  • ClickEvent$Action#payloadType

Add ApiStatus.NonExtendible to:

  • Title.Times
  • Sound.Builder
  • ResourcePackRequest (and Builder)
  • ResourcePackInfo (and Builder)
  • PointersSupplier (and Builder)
  • Pointers (and Builder)
  • Pointer
  • Identity
  • ComponentFlattener (and Builder)
  • Basically everything in adventure-nbt

Remaining discussion points

  • Do we bump to Java 25 upon release?
    i dont think so, doesn't seem like mc is bumping any time soon?
  • Look at other features targeted for 5.0 release or tagged with "needs discussion".
  • Do we want to type click event? yes
  • Decide if we want Examinable to be public API or not yeeted completely
    atm it's literally just used for toString, but is sometimes in the API classes and sometimes impl only - we should be consistent here
  • Do we want to yeet all component constructors to be simply data, data, style, data, sba...? yes, with old methods left as synthetic

kezz and others added 21 commits November 5, 2025 15:58
Optional NBT payload for custom click events
…monorepo

chore(deps): Update dependency org.junit:junit-bom to v6
chore(deps): Update dependency com.puppycrawl.tools:checkstyle to v12
chore(deps): Update guava monorepo to v33.5.0-jre
This should allow subtypes of ProfileProperty, which is commonly used by the
implementing platform, to return a different type that may contain more information.

This is not an ABI break.
fix(api): Unbound profileProperties Collection
feature(api): Add BookLike interface
Platforms can implement this with actual signed messages (not just system ones), so it needs to be unsealed.
@kezz kezz mentioned this pull request Nov 12, 2025
3 tasks
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.

7 participants