diff --git a/guide/docs/extensions/listener.md b/guide/docs/extensions/listener.md new file mode 100644 index 00000000..c11205d9 --- /dev/null +++ b/guide/docs/extensions/listener.md @@ -0,0 +1,47 @@ +## Register an event listener + +### Using the `listen` function + +You can register an event listener by calling the following function anywhere you want. + +```kotlin +listen { + doSomething() +} +``` + +The event instance will be passed in as `it`, but you can change this: + +```kotlin +listen { moveEvent -> + moveEvent.player.kick("Do not move!") + broadcast("${moveEvent.player} moved :/") +} +``` + +The `listen` function returns the `Listener` instance, which allows you to perform operations on it later. + +For example you could listen to a specific event temporarily: + +```kotlin +val moveEventListener = listen { + it.player.kick("Do not move!") +} + +// e.g. unregister the listener after some time +taskRunLater(20 * 5) { + moveEventListener.unregister() +} +``` + +### Registering an existing `Listener` instance + +There is an extension functions which registers a `Listener` instance: + +```kotlin +listenerInstance.register() +``` + +## Unregister a `Listener` + +Just call `listenerInstance.unregister()` diff --git a/guide/mkdocs.yml b/guide/mkdocs.yml index dc6f7349..bfff117f 100644 --- a/guide/mkdocs.yml +++ b/guide/mkdocs.yml @@ -31,3 +31,5 @@ nav: - Starting a new project: setup/project.md - Setup using Gradle: setup/gradle.md - Entrypoint to your plugin: setup/entrypoint.md + - Extensions: + - Event listener: extensions/listener.md