Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added ProxyDefineCommandsEvent #3642

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

brickmonster
Copy link

In migrating from waterfall from bungeecord, this was the only missing API that my network is missing. I've re-implemented it here without directly copying - only the surface API is the same.

We use it to hide commands from tab completion to improve searchability for players, whilst allowing them to have permission to use the command.

Why give them permission if it's hidden? The command is triggered via a button in chat or via Command.execute; it is never triggered manually but it isn't a problem if they somehow discover it.

@brickmonster
Copy link
Author

Fixed an incorrect reference comparison

@@ -743,13 +745,32 @@ public void handle(Respawn respawn)
@Override
public void handle(Commands commands) throws Exception
{
final Collection<Map.Entry<String, Command>> unmodifiedCommandMap = bungee.getPluginManager().getCommands();
final ProxyDefineCommandsEvent event = new ProxyDefineCommandsEvent( server, con, unmodifiedCommandMap );
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there is a design question about whether the event includes all commands or just bungee commands. Including all commands would give more flexibility (like the Spigot event https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerCommandSendEvent.html)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh you're right, I forgot that it only has the bungee commands. The other two places that you left comments are because of that.

Supporting non-bungee commands doesn't add extra features if they can edit downstream commands on the downstream, but it would be convenient to have it in one place.

As it stands the event handler gets complete information with the Command type. To support non-bungee commands we would have do one of the following:

  1. Limit the information they get to support both sources (maybe even just a key).
  2. Create a new union type of bungee (Command) and non-bungee (brigadier node or a new type).
  3. Add a second collection to the event containing only the brigadier node or a new type.

I don't like any of those options just to get plugin convenience so, unless you can think of another or you disagree, I'm in favour of committing as is but with the removal of the additional assignments of modified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants