Fix plugin reload only reloading main command. #167
Merged
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.
To explain the issue, Spigot is maintaining a reference of the Command object in a map for the main command, for aliases, for the labeled command (
deluxemenus:command
) and for labeled aliases.The fix required the removal of all references from the map.
There is still one remaining issue and that is the SimpleCommandMap from CraftBukkit that holds a reference to the Command even after removing it. Since it is CraftBukkit, it would require extra work to remove the references from that map as there is no method for this in the Bukkit API.
Instead, I have extracted the Command from the Menu, passed a reference of the Menu to the Command and then released the reference to the Menu whenever the Command is unregistered. This results in the Command remaining in memory but not the Menu.
Closes #3 and #166
Tested on Paper 1.21.3!