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 CodexePas cu pas
1.Creează un proiect Gradle cu Kotlin DSL
Un
build.gradle.ktscu pluginulkotlin("jvm"), un toolchain Java care se potrivește cu versiunea ta de Minecraft (17, 21 sau 25) și repository-ul PaperMC.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.Scrie clasa principală
class MyPlugin : JavaPlugin()cuoverride fun onEnable(). Înregistrează comenzile și listener-ele exact ca în Java.4.Adu biblioteca standard Kotlin
Include-o în .jar cu pluginul Shadow sau lasă serverul să o descarce la pornire prin lista
librariesdinplugin.yml. Fără una dintre ele, pluginul eșuează cuNoClassDefFoundError: kotlin/....5.Scrie plugin.yml
Același fișier ca la un plugin Java: nume, versiune, main (clasa Kotlin),
api-version, comenzi și permisiuni.6.Compilează și testează
./gradlew shadowJar(saubuild), copiază .jar-ul dinbuild/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ție | Java | Kotlin |
|---|---|---|
| API | Paper / Spigot | Același API Paper / Spigot |
| Build | Maven sau Gradle | Gradle cu build.gradle.kts |
| Extra la rulare | Niciuna | Biblioteca standard Kotlin, inclusă sau încărcată |
| Tutoriale și exemple | Majoritatea | Mai 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