> ## Documentation Index
> Fetch the complete documentation index at: https://kotly-doc.voxray.su/llms.txt
> Use this file to discover all available pages before exploring further.

# Эталонный пример

Код приведённый ниже является референсным плагином.\
Данный плагин приветствует игрока после входа, а также при использовании команды `/reference`

```kotlin theme={null}
package kplugin.reference

import kotly.config.KotlyConfig
import kotly.config.saveDefaultConfig
import kotly.plugin.KotlyPlugin
import kotly.util.text.minimessage
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerJoinEvent

class ReferenceConfig : KotlyConfig {
    val message: String = "<green>Hello, <aqua>%player</aqua>!</green>"
}

class ReferencePlugin : KotlyPlugin() {
    val config = saveDefaultConfig<ReferenceConfig>()

    init {
        manager.registerListener(this, BaseListener())
        manager.registerCommand(this, "reference").setExecutor(BaseCommand())
    }

    private fun renderComponent(name: String) =
		config.message.replace("%player", name).minimessage()

    inner class BaseListener : Listener {
        @EventHandler
        fun onJoin(event: PlayerJoinEvent) {
            event.player.sendMessage { renderComponent(event.player.name) }
        }
    }

    inner class BaseCommand : CommandExecutor {
        override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
            sender.sendMessage { renderComponent(sender.name) }
            return true
        }
    }
}

ReferencePlugin::class
```
