fix: keep personalized instruments playable - #19
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review. 📝 WalkthroughWalkthroughInstrumentManager now recognizes instruments by exact item match or, when that fails, by a unique match that ignores display names and lore. Template reloads clear both caches. Tests cover recognition, rejection, ambiguity, and reload behavior. ChangesInstrument Recognition
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~12 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to No merge-blocking issue is established; the change is ready for normal merge checks. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to Personalized instruments become playable, but recognition still requires a unique match on non-cosmetic item properties. No security bypass was established. The risk remains low rather than minimal because item provenance and possible external callers are not fully known. Retained concerns Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 15.38% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 13 functions across 2 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
A rabbit taps a lute at noon Comment |
|
Reviewed the final diff; CodeRabbit approved with no actionable comments. Its docstring-coverage advisory was non-blocking. PR, merged-main and release builds passed. Released v3.0.3 from merge commit Dev was updated and restarted. A temporary, self-disabling smoke plugin verified all 9 configured instrument items against the real Paper/MMOItems runtime: unchanged items, namestone renames, combined lorestone edits, item/template preservation and plain-item rejection all passed, including the lute. The smoke plugin was removed afterwards. No new startup error lines appeared against the captured baseline. The identical JAR is installed on main without a restart or reload; the running Java process and start time are unchanged. Main will activate the fix on its next restart. Both servers respond to Minecraft status requests; rollback JARs were preserved and verified. |
Namestones and lorestones currently stop lutes and other instruments from playing because detection requires an exact item-metadata match. Keep the existing exact-match pass, then compare cached copies with only display name and lore removed. Material, model data and provider metadata must still match; ambiguous cosmetic-only variants are rejected. Detection never changes the held item or the templates returned by
/instruments give.Validation: reproduced both rename and lore failures before the fix; all 7 regression tests now pass with no skips under Java 21/Paper 1.21.10, including identity rejection, item preservation, ambiguity and reload coverage.
mvn clean verify, runtime JAR validation andgit diff --checkpass. Diff review found no remaining blockers.Summary by CodeRabbit