fix: avoid reflective listener scans for dependency metrics#128
Open
DerMistkaefer wants to merge 1 commit intokoca2000:masterfrom
Open
fix: avoid reflective listener scans for dependency metrics#128DerMistkaefer wants to merge 1 commit intokoca2000:masterfrom
DerMistkaefer wants to merge 1 commit intokoca2000:masterfrom
Conversation
|
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
Replace the reflective listener scan in
NoteBlockAPI#onEnable()with direct event handler list inspection for NoteBlockAPI events.Problem
The previous implementation iterated over all registered listeners of all plugins and called:
rl.getListener().getClass().getDeclaredMethods()This can fail in environments that restrict reflection access to protected/internal plugin classes (e.g. custom security managers / class access guards), causing plugin startup warnings or exceptions.
Changes
Instead of scanning listener classes and method parameter types via reflection, this patch now checks listeners directly from the handler lists of NoteBlockAPI events:
PlayerRangeStateChangeEventSongDestroyingEventSongEndEventSongStoppedEventEach registered listener's owning plugin is marked as dependent.
Why this is better
Compatibility
Behavior is preserved for the metrics use case (
deprecatedchart), while removing the reflection-based scan.