Ръководство

Как да направиш Minecraft плъгин на Kotlin

Обновено на 18 октомври 2026 г.

Kotlin работи на JVM, така че Kotlin плъгинът използва същото Paper или Spigot API, същия plugin.yml и същата папка plugins/ като Java плъгина. Кодът е по-кратък и безопасен откъм null. Единственото, за което Java плъгините не трябва да се тревожат, е стандартната библиотека на Kotlin: сървърът не я включва, затова плъгинът трябва да я донесе.

Започни от този пример.

Генерирай това с Codexe

Стъпка по стъпка

  1. 1.Създай Gradle проект с Kotlin DSL

    build.gradle.kts с плъгина kotlin("jvm"), Java toolchain, който отговаря на твоята версия на 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, команди и permissions.

  6. 6.Компилирай и тествай

    ./gradlew shadowJar (или build), копирай .jar файла от build/libs/ на тестов сървър и прочети конзолата при стартиране.

Как Kotlin стига до сървъра

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

Корутините и основната нишка

Корутините са чист начин да зареждаш данни от база данни, без да замразяваш сървъра, но Bukkit API (светове, същества, инвентари) пак трябва да се използва от основната нишка. Направи бавната работа на фонов dispatcher, после се върни в нишката на сървъра със scheduler-а, преди да пипаш играта. Обвържи обхвата на корутините с плъгина, за да се прекъсва в onDisable().

Java или Kotlin?

ФункцияJavaKotlin
APIPaper / SpigotСъщото Paper / Spigot API
КомпилацияMaven или GradleGradle с build.gradle.kts
Допълнения за работаНикакваСтандартната библиотека на Kotlin, пакетирана или зареждана
Уроци и примериПовечетоПо-малко, но примерите на Java се пренасят директно

С Codexe

Избери Bukkit/Spigot/Paper (Kotlin). Codexe генерира Gradle проект с build.gradle.kts, Paper API, плъгина Shadow, който пакетира това, което сървърът не осигурява, и корутини, пакетирани и преместени, когато кодът ги използва. Компилира плъгина, преди да е „Готов“, а Kotlin плъгините могат да се пробват на тестов сървър и да се проверяват от тестови играчи също като Java плъгините. Виж генератора на Kotlin плъгини.

„Плъгин за Paper 1.21.4 на Kotlin, наречен Bounties: /bounty set <player> <amount> през Vault, убиецът получава наградата, /bounty top показва 10-те най-високи, пазят се в SQLite, с корутини за достъпа до базата данни. Използвай data класове и extension функции, дръж извикванията на Bukkit API в основната нишка.“

Въпроси

По-бавен ли е 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 с корутини за достъпа до базата данни, извикванията на Bukkit API са в основната нишка, съобщенията са в config.yml.”

Генерирай това с Codexe
Как да направиш Minecraft плъгин на Kotlin (Paper) | Codexe