← Назад к ресурсам

KotlinScriptLoader

It’s a script-based project—you can write your own scripts using full-fledged Kotlin! You can even create your own API and build add-ons! It’s got absolutely everything!

Modrinth library management utility

Описание

# KotlinScriptLoader (KSL) **KotlinScriptLoader** is a Bukkit/Paper plugin that allows you to write server scripts in **Kotlin (`.kts`)** instead of Java, Skript, or Denizen. It provides a powerful, type-safe DSL with hot-reload capabilities, giving you full access to the Bukkit/Spigot/Paper API without compiling a full plugin. ## 🤔 Why use KSL? - **🚀 Rapid Prototyping:** Write and test game logic, custom commands, or events in minutes. - **🔄 Hot-Reload:** Apply changes instantly with `/ksl reload` — no server restart required. - **💎 Full Kotlin Power:** Use coroutines, collections, extension functions, and the entire JVM ecosystem. - **🎨 Modern Text:** Native **MiniMessage** support for gradients, hover events, and click actions. - **🔌 Built-in Integrations:** Out-of-the-box support for **LuckPerms**, **EssentialsX**, **PlaceholderAPI**, and **Discord Webhooks**. - **🛡️ Safe Execution:** Optional sandbox mode to restrict dangerous operations in untrusted scripts. ## ⚡ Features - **Event Listeners:** `onEvent { ... }` - **Scheduler DSL:** `delay`, `every`, `runAsync`, `runSync`. - **Dynamic Commands:** Register `/mycommand` directly from a script. - **Database Access:** Built-in SQLite database via HikariCP. - **Config & YAML:** Easy per-script configuration management. - **Addon API:** Extend KSL with custom Java/Kotlin plugins. - **IDE Support:** Auto-generates `.autocomplete.kts` for IntelliJ IDEA code completion. ## 📝 Example Script (`scripts/hello.kts`) ```kotlin // Listen for player joins onEvent { val p = player p.sendRichMessage("Welcome, ${p.name}!") // Check LuckPerms group if (p.group == "vip") { p.showRichTitle("VIP Player", "Enjoy your perks!") } } // Register a custom command registerCommand("balance", aliases = listOf("bal", "money")) { player, args -> val bal = player.balance ?: 0.0 player.sendRichMessage("Your balance: $${bal}") } // Schedule a repeating task every(20L * 60) { // Every minute broadcastMM("[KSL] Server is running smoothly!") } ``` ## 🎮 Commands | Command | Permission | Description | | :--- | :--- | :--- | | `/ksl reload` | `ksl.admin` | Reloads all scripts and config. | | `/ksl addons` | `ksl.admin` | Lists all loaded KSL addons. | | `/ksl services` | `ksl.admin` | Lists all registered services. | | `/ksl discord` | `ksl.admin` | Shows configured Discord webhooks. | | `/ksl sandbox` | `ksl.admin` | Shows sandbox status. | ## 📦 Requirements - **Paper / Purpur** (1.20+) - **Java 21** - *(Optional)* **PlaceholderAPI**, **LuckPerms**, **EssentialsX** ![Preview/Обложка](https://cdn.modrinth.com/data/eyvb3TmW/27da1d383d2813f7f5797c8a0bb7063a610418a0_96.webp)