Посібник

Як створити плагін Minecraft на Kotlin

Оновлено 18 жовтня 2026 р.

Kotlin працює на JVM, тож плагін на Kotlin використовує той самий API Paper або Spigot, той самий plugin.yml і ту саму теку plugins/, що й плагін на Java. Код коротший і безпечний щодо null. Єдине, про що не мусять турбуватися плагіни на Java, - це стандартна бібліотека Kotlin: сервер її не постачає, тож плагін має принести її із собою.

Почніть із цього прикладу.

Згенерувати це в Codexe

Крок за кроком

  1. 1.Створіть проєкт Gradle з Kotlin DSL

    build.gradle.kts з плагіном kotlin("jvm"), тулчейном Java, що відповідає вашій версії Minecraft (17, 21 або 25), і репозиторієм PaperMC.

  2. 2.Додайте серверний API

    compileOnly("io.papermc.paper:paper-api:<version>"). Як і в Java, сервер надає його під час роботи, тож він ніколи не вбудовується.

  3. 3.Напишіть головний клас

    class MyPlugin : JavaPlugin() з override fun onEnable(). Реєструйте команди й слухачі так само, як у Java.

  4. 4.Додайте стандартну бібліотеку Kotlin

    Вбудуйте її в .jar за допомогою плагіна Shadow або дайте серверу завантажити її під час запуску через список libraries у plugin.yml. Без одного з цих способів плагін падає з NoClassDefFoundError: kotlin/....

  5. 5.Напишіть plugin.yml

    Той самий файл, що й у плагіна на Java: назва, версія, main (клас Kotlin), api-version, команди й дозволи.

  6. 6.Зберіть і протестуйте

    ./gradlew shadowJar (або build), скопіюйте .jar з build/libs/ на тестовий сервер і прочитайте консоль під час запуску.

Як доставити Kotlin на сервер

  • Вбудувати (shade): плагін Shadow для Gradle копіює стандартну бібліотеку Kotlin та інші бібліотеки часу виконання у ваш .jar. Це працює в усіх версіях і є найпоширенішим вибором.
  • libraries у plugin.yml: починаючи зі Spigot 1.16.5, плагін може перелічити бібліотеки з Maven Central, які сервер завантажить і підключить для нього. .jar залишається малим, але під час першого запуску серверу потрібен доступ до інтернету.
  • Бібліотеки, які ви додаєте: kotlinx-coroutines - окрема бібліотека, а не частина стандартної, і її теж треба вбудувати. Перенесення (relocate) у ваш власний пакет запобігає конфліктам з іншими плагінами, що вбудовують іншу версію.

Корутини й головний потік

Корутини - охайний спосіб завантажувати дані з бази, не заморожуючи сервер, але API Bukkit (світи, сутності, інвентарі) все одно треба використовувати з головного потоку. Виконуйте повільну роботу на фоновому диспетчері, а потім повертайтеся в потік сервера через планувальник, перш ніж чіпати гру. Прив'яжіть область корутин до плагіна, щоб її скасовувало в onDisable().

Java чи Kotlin?

ФункціяJavaKotlin
APIPaper / SpigotТой самий API Paper / Spigot
ЗібратиMaven або GradleGradle з build.gradle.kts
Додатково під час роботиНемаєСтандартна бібліотека Kotlin, вбудована або завантажувана
Посібники й прикладиБільшість із нихМенше, але приклади на Java переносяться напряму

З Codexe

Виберіть Bukkit/Spigot/Paper (Kotlin). Codexe генерує проєкт Gradle з build.gradle.kts, API Paper, плагіном Shadow, щоб вбудувати те, чого не надає сервер, і корутинами, вбудованими й перенесеними, коли код їх використовує. Плагін компілюється, перш ніж отримає статус «Готово», а плагіни на Kotlin можна спробувати на тестовому сервері й перевірити тестовими гравцями так само, як плагіни на Java. Див. генератор плагінів на Kotlin.

«Плагін для Paper 1.21.4 на Kotlin під назвою Bounties: /bounty set <player> <amount> через Vault, вбивця отримує нагороду, /bounty top показує 10 найбільших, дані в SQLite з корутинами для доступу до бази. Використовуй data-класи й функції розширення, тримай виклики API Bukkit у головному потоці.»

Запитання

Чи повільніший плагін на Kotlin за плагін на Java?

Помітної різниці немає: обидва компілюються в байт-код JVM. Якщо вбудувати стандартну бібліотеку, .jar буде більшим.

Чи можна змішувати Java і Kotlin в одному плагіні?

Так, Gradle компілює обидві мови в одному проєкті, а код на Kotlin напряму викликає класи Java.

Чому з'являється NoClassDefFoundError для класів kotlin?

Стандартної бібліотеки Kotlin немає в .jar або вона не завантажується. Зберіть через shadowJar і встановіть саме цей .jar або додайте бібліотеку в libraries у plugin.yml.

Створіть плагін на Kotlin

Цей запит відкривається готовим до надсилання:

“Плагін для Paper 1.21.4 на Kotlin під назвою Bounties: /bounty set <player> <amount> з економікою Vault, вбивця отримує нагороду, /bounty top показує 10 найбільших, нагороди за голову зберігаються в SQLite з корутинами для доступу до бази, виклики API Bukkit у головному потоці, повідомлення в config.yml.”

Згенерувати це в Codexe
Як створити плагін Minecraft на Kotlin (Paper) | Codexe