Commit Graph

1 Commits

Author SHA1 Message Date
MD 648f6078d7
Route sign run_command click events through normal chat logic (#6109)
This patch changes sign command logic so that `run_command` click events are routed through the standard chat/command
logic used for inbound chat messages.

This fixes numerous issues related to sign click commands:
  - Signs with a `run_command` value of "/<plugin command>" would fail and show the "Unknown command" warning. This
    prevents usage of commands like `//wand` from WorldEdit in sign click events entirely and requires users to drop
    the leading slash from other plugins' commands. This patch now executes the plugin commands as would be expected,
    adding a leading slash if necessary.
  - Signs with a `run_command` value that doesn't match an existing command could fail silently. This patch causes
    these to *always* show "Unknown command" instead.
  - Plugins listening to `PlayerCommandPreprocessEvent` would not be able to intercept any command executions from
    sign click events. This patch allows plugins to intercept player commands when fired by a click event, in the same
    manner as commands executed by the player typing or clicking on a chat message.
  - Commands executed from signs would not be logged to the console. This patch fixes this.

This patch also prepends a leading slash if the `run_command` value lacks one, which matches vanilla behaviour (old
code would strip this slash away) while also ensuring `PlayerCommandPreprocessEvent#getMessage` remains consistent
with other command executions from chat (which always include the leading slash).
2021-07-07 15:12:58 +00:00