feat!: v8 major release — MiniMessage migration, Component-first architecture#1063
Open
feat!: v8 major release — MiniMessage migration, Component-first architecture#1063
Conversation
3 tasks
09c2de1 to
1f073ea
Compare
…itecture BREAKING CHANGES: - Java 17 minimum required across all modules (was Java 8) - Adventure API upgraded from 4.9.3 to 4.21.0 with MiniMessage support - Message templates now use MiniMessage format (<tag>) instead of legacy &-codes - Message.set() creates MiniMessage TagResolvers instead of [token] bracket replacement - Legacy &-code formatting in messages.yml is hard-rejected (bundled defaults used) - Removed deprecated APIs: Message.load(), CommonServer.broadcastJSON(), WebhookConfig.getType() - CommonSender.sendMessage(Message) and CommonPlayer.sendMessage(Message) are now default interface methods routing through Component - CommonPlayer.kick(Message) routes through Component - Message.toString() callers migrated to Message.sendTo(sender) New features: - MessageRenderer: central MiniMessage rendering, legacy conversion, tag escaping - Message.component(key): static convenience for resolving to Component - Message.getRawTemplate(): access unrendered template strings - Message.resolveComponent(): full Component pipeline with PAPI escaping - PaperAdventureHelper: zero-overhead native Adventure on Paper servers - NotificationsConfig: configurable staff notification channels (chat/actionbar/title/sound) - NotificationUtils: unified staff notification delivery - PaginatedView: Component-based pagination with clickable navigation - ConfirmationManager: timed action confirmation system - BmCommand: /bm confirm, /bm cancel, /bm dashboard subcommands - Duration tab-complete presets for temp punishment commands - Static tokens support in messages.yml - Platform adapters: sendActionBar(), showTitle(), playSound() on all platforms
1f073ea to
647738c
Compare
- Fix static tokens (e.g. <appeal_url>) not resolving on ban screen by resetting tokens before loading locale files instead of after - Use double quotes instead of single quotes in MiniMessage click/hover arguments so inner tags and placeholders resolve correctly - Fix report action commands using /report instead of /reports for assign, close, and tp subcommands - Fix dashboard openReports using /reports 1 instead of /reports list 1 - Fix PaginatedView hover text not parsing color tags (single quotes) - Fix actionbar mute message missing player context - Remove messages.yml from platform plugin configs array to avoid confusion with messages/messages_en.yml
MiniMessage Placeholder.unparsed() creates inserting tags that produce Components, but click/hover event arguments need plain strings. This caused <player> and other tokens inside click:run_command to be left as literal text (e.g. /bminfo <player> instead of /bminfo Steve). Switch to raw string replacement with tag escaping before MiniMessage parsing so tokens resolve correctly everywhere, including inside click and hover arguments.
…confirmation system - Add [Info] click buttons to kick notify messages for consistency with ban/mute/warn notifications - Wire up report.actions (assign/close/tp) buttons in InfoSubCommand so they display after viewing report details - Remove dead confirmation system: ConfirmSubCommand, CancelSubCommand, ConfirmationManager, and related messages — nothing ever called ConfirmationManager.submit()
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.
Summary
Major version bump to BanManager v8 with a full architectural migration to MiniMessage and Component-first message handling.
Breaking Changes
<tag>) — legacy&-codes inmessages.ymlare hard-rejected with bundled defaults used as fallbackMessage.set()creates MiniMessage TagResolvers instead of[token]bracket replacementMessage.load(),CommonServer.broadcastJSON(),WebhookConfig.getType()CommonSender.sendMessage(Message)andCommonPlayer.sendMessage(Message)are now default interface methods routing through ComponentMessage.toString()callers migrated toMessage.sendTo(sender)New Features
MessageRenderer: central MiniMessage rendering, legacy conversion, tag escaping, plain text & JSON serializationMessage.component(key): static convenience for resolving to ComponentMessage.resolveComponent(): full Component pipeline with PAPI escaping (prevents injection from external placeholder plugins)PaperAdventureHelper: zero-overhead native Adventure delivery on Paper servers (detects Paper at runtime, falls back to JSON bridging on Spigot)NotificationsConfig: configurable staff notification channels — chat, actionbar, title, sound per event typePaginatedView: Component-based pagination with clickable prev/next navigationConfirmationManager: timed action confirmation system with/bm confirmand/bm cancelmessages.yml(custom reusable placeholders)sendActionBar(),showTitle(),playSound()implemented on all 7 platformsScope
Test plan
./gradlew buildpasses across all modules (81 tasks)./gradlew :BanManagerCommon:test— all unit tests pass&-code rejection logs appropriate warnings