Ghid

Cum faci un plugin Minecraft în Kotlin

Actualizat 18 octombrie 2026

Kotlin rulează pe JVM, așa că un plugin Kotlin folosește același API Paper sau Spigot, același plugin.yml și același folder plugins/ ca unul Java. Codul este mai scurt și null-safe. Singurul lucru de care plugin-urile Java nu trebuie să își facă griji este biblioteca standard Kotlin: serverul nu o include, așa că pluginul trebuie să o aducă.

Pornește de la acest exemplu.

Generează asta cu Codexe

Pas cu pas

  1. 1.Creează un proiect Gradle cu Kotlin DSL

    Un build.gradle.kts cu pluginul kotlin("jvm"), un toolchain Java care se potrivește cu versiunea ta de Minecraft (17, 21 sau 25) și repository-ul PaperMC.

  2. 2.Adaugă API-ul serverului

    compileOnly("io.papermc.paper:paper-api:<version>"). Ca în Java, serverul îl furnizează la rulare, așa că nu este inclus niciodată în .jar.

  3. 3.Scrie clasa principală

    class MyPlugin : JavaPlugin() cu override fun onEnable(). Înregistrează comenzile și listener-ele exact ca în Java.

  4. 4.Adu biblioteca standard Kotlin

    Include-o în .jar cu pluginul Shadow sau lasă serverul să o descarce la pornire prin lista libraries din plugin.yml. Fără una dintre ele, pluginul eșuează cu NoClassDefFoundError: kotlin/....

  5. 5.Scrie plugin.yml

    Același fișier ca la un plugin Java: nume, versiune, main (clasa Kotlin), api-version, comenzi și permisiuni.

  6. 6.Compilează și testează

    ./gradlew shadowJar (sau build), copiază .jar-ul din build/libs/ pe un server de testare și citește consola la pornire.

Cum ajunge Kotlin pe server

  • Fă shade: pluginul Gradle Shadow copiază biblioteca standard Kotlin și alte biblioteci de rulare în .jar-ul tău. Funcționează pe orice versiune și este alegerea cea mai des întâlnită.
  • libraries în plugin.yml: de la Spigot 1.16.5, un plugin poate lista biblioteci din Maven Central pe care serverul le descarcă și le încarcă pentru el. .jar-ul rămâne mic, dar serverul are nevoie de acces la internet la prima pornire.
  • Biblioteci pe care le adaugi: kotlinx-coroutines este o bibliotecă separată, nu face parte din biblioteca standard, și trebuie inclusă și ea. Relocarea ei în propriul pachet evită conflictele cu alte plugin-uri care includ altă versiune.

Corutinele și thread-ul principal

Corutinele sunt un mod curat de a încărca date dintr-o bază de date fără să blochezi serverul, dar API-ul Bukkit (lumi, entități, inventare) trebuie folosit în continuare din thread-ul principal. Fă munca lentă pe un dispatcher de fundal, apoi revino pe thread-ul serverului cu scheduler-ul înainte să atingi jocul. Leagă scope-ul corutinelor de plugin, ca să fie anulat în onDisable().

Java sau Kotlin?

FuncțieJavaKotlin
APIPaper / SpigotAcelași API Paper / Spigot
BuildMaven sau GradleGradle cu build.gradle.kts
Extra la rulareNiciunaBiblioteca standard Kotlin, inclusă sau încărcată
Tutoriale și exempleMajoritateaMai puține, dar exemplele Java se traduc direct

Cu Codexe

Alege Bukkit/Spigot/Paper (Kotlin). Codexe generează un proiect Gradle cu build.gradle.kts, API-ul Paper, pluginul Shadow pentru a include ce nu furnizează serverul și corutinele incluse și relocate când codul le folosește. Compilează pluginul înainte să fie Gata, iar plugin-urile Kotlin pot fi încercate pe un server de testare și verificate de jucătorii de test la fel ca cele Java. Vezi generatorul de plugin-uri Kotlin.

„Un plugin Paper 1.21.4 în Kotlin numit Bounties: /bounty set <player> <amount> prin Vault, ucigașul primește recompensa, /bounty top arată cele mai mari 10, stocate în SQLite cu corutine pentru accesul la baza de date. Folosește data classes și extension functions, păstrează apelurile la API-ul Bukkit pe thread-ul principal.”

Întrebări

Este un plugin Kotlin mai lent decât un plugin Java?

Nicio diferență semnificativă: amândouă se compilează în bytecode JVM. .jar-ul este mai mare când biblioteca standard este inclusă.

Pot combina Java și Kotlin într-un singur plugin?

Da, Gradle le compilează pe amândouă în același proiect, iar codul Kotlin apelează direct clasele Java.

De ce NoClassDefFoundError pentru clasele kotlin?

Biblioteca standard Kotlin nu este în .jar sau nu este încărcată. Compilează cu shadowJar și instalează acel .jar sau adaugă biblioteca în libraries din plugin.yml.

Fă un plugin Kotlin

Acest prompt se deschide gata de trimis:

“Un plugin Paper 1.21.4 în Kotlin numit Bounties: /bounty set <player> <amount> folosind economia Vault, ucigașul primește recompensa, /bounty top arată cele mai mari 10, recompensele stocate în SQLite cu corutine pentru accesul la baza de date, apelurile la API-ul Bukkit pe thread-ul principal, mesajele în config.yml.”

Generează asta cu Codexe
Cum faci un plugin Minecraft în Kotlin (Paper) | Codexe