Conversation
Swap the deprecated AbstractCommandExecutor for the current BaseCommandExecutor (import + extends only). All @CmdTarget, @cmdexecutor, @CmdMapping and @CmdParam annotations are preserved verbatim, and the existing handleHelp(CommandSender) override is kept unchanged, satisfying BaseCommandExecutor's protected abstract contract with no stub. Compiles against the existing released UltiTools-API 6.2.2 pin, no snapshot repository added (D-10 round 1).
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough
ChangesGreetCommand Update
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: 🔵 Low · up to The PR only changes the command’s framework base class while preserving its permissions, sender targets, aliases, mappings, and handlers, and it builds successfully against API 6.2.2. Merge is reasonable with explicit owner awareness that compatibility between the old and new base classes should be confirmed before relying on this example with API 6.3.0. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
Summary
Migrates this example plugin's one command class off the deprecated
AbstractCommandExecutoronto the currentBaseCommandExecutor, aheadof UltiTools-API 6.3.0 removing the deprecated class entirely
(GEN-02).
This repository exists as the canonical worked example of the
External Plugin API (
UltiToolsAPI.connect(this)from a plain BukkitJavaPlugin) — leaving it on the removed base class would ship aworked example that no longer compiles against 6.3.0.
What changed
GreetCommand.java— two-line diff only: the importcom.ultikits.ultitools.abstracts.AbstractCommandExecutorbecomescom.ultikits.ultitools.abstracts.command.BaseCommandExecutor, andextends AbstractCommandExecutorbecomesextends BaseCommandExecutor.Behaviour preservation
GreetCommandcarries an explicitclass-level
@CmdTarget(CmdTarget.CmdTargetType.BOTH), preservedverbatim. Both
AbstractCommandExecutorandBaseCommandExecutorresolve
@CmdTargetthrough the identicalCmdTargetComposition.resolve(...)call, so the base-class swap alonecannot change the resolved sender type.
@CmdExecutoralias/permission/description and every@CmdMappingformat string is byte-identical to before — confirmedby
git diff, which touches only the import line and theextendsclause.
handleHelp(CommandSender)is unchanged. The class alreadyimplemented this method before the migration;
BaseCommandExecutormakes it a
protected abstractcontract, and the existing(non-empty) body satisfies it with no stub.
This plugin registers via
UltiToolsAPI.connect(this)→CommandManager.registerAllExternal(ExternalPluginAdapter), whichresolves command beans by
CommandExecutortype from the adapter'sIoC container (no cast to
AbstractCommandExecutoranywhere on thispath) — confirmed by reading
CommandManager.javadirectly. Themigrated class continues to register on the exact path this example
exists to demonstrate.
Build
UltiTools-API
6.2.2pin — no snapshot repository added, no versionbump to the framework dependency (D-10 round 1).
mvn -B -f pom.xml test:BUILD SUCCESS(no test sources exist in this repo).pom.xml— this repository hasno
.github/workflows/directory at all, so it has no publishmechanism and merging it releases nothing.
Scope note
Unifying the UltiTools-API pin to 6.3.0 is a separate, later step
(D-10 round 2), explicitly out of scope here.
Not merging in this PR — awaiting the monorepo Ship Gate's pre-merge
gates (own code review, third-party review, real-machine UAT, green
CI).
Summary by CodeRabbit
⛔ HOLD — do not merge until UltiTools-API 6.3.0 is released
Maintainer decision, 2026-09-02. This is not a review objection; the migration itself is correct.
Why holding.
BaseCommandExecutor.suggest()in the released UltiTools-API 6.2.1 that thismodule pins only suggests first-token literals — it never resolves
@CmdParam(suggest = "...").Verified by disassembling the published artifact: inside
suggest(Player, Command, String[])thereare zero references to
CmdParam, against 7 elsewhere in the same class (a live control group),while
@CmdParamat 6.2.1 does declare asuggest()member. The deprecatedAbstractCommandExecutorthis PR migrates away from did resolve it.
So merging and publishing now would ship a module whose declared tab-completion silently stops
working on every server still running a 6.2.x framework. The fix (
CommandTabCompletionDispatch)exists only in the unreleased 6.3.0.
The ordering that avoids the regression entirely: this PR merges and publishes as part of the
6.3.0 release, so the framework and the module land together. Downstream publication is already
recorded as a hard precondition of the 6.3.0 framework release gate in the framework repo's Phase 7
artifacts, so holding here is consistent with that, not a new deferral.
Still outstanding before merge: Ship Gate gate 3 (Laojun real-machine UAT) has not been run for
this PR. Gate 1 (own code review) and gate 4 (CI) are green; gate 2 reported CodeRabbit "Review
completed".