Vodič

Kako napraviti Minecraft plugin u Kotlinu

Ažurirano 18. listopada 2026.

Kotlin radi na JVM-u, pa Kotlin plugin koristi isti Paper ili Spigot API, isti plugin.yml i istu mapu plugins/ kao i Java plugin. Kod je kraći i null-safe. Jedina stvar o kojoj Java pluginovi ne moraju brinuti je Kotlin standardna biblioteka: poslužitelj je ne isporučuje, pa je plugin mora donijeti sa sobom.

Kreni od ovog primjera.

Generiraj ovo uz Codexe

Korak po korak

  1. 1.Stvori Gradle projekt s Kotlin DSL-om

    build.gradle.kts s pluginom kotlin("jvm"), Java toolchainom koji odgovara tvojoj Minecraft verziji (17, 21 ili 25) i PaperMC repozitorijem.

  2. 2.Dodaj API poslužitelja

    compileOnly("io.papermc.paper:paper-api:<version>"). Kao i u Javi, poslužitelj ga pruža pri pokretanju, pa se nikad ne pakira u .jar.

  3. 3.Napiši glavnu klasu

    class MyPlugin : JavaPlugin() s override fun onEnable(). Naredbe i listenere registriraj točno kao u Javi.

  4. 4.Donesi Kotlin standardnu biblioteku

    Zapakiraj je u .jar pomoću plugina Shadow ili pusti poslužitelj da je preuzme pri pokretanju preko popisa libraries u plugin.yml. Bez jednog od toga plugin pada s NoClassDefFoundError: kotlin/....

  5. 5.Napiši plugin.yml

    Ista datoteka kao kod Java plugina: ime, verzija, main (Kotlin klasa), api-version, naredbe i dopuštenja.

  6. 6.Build i testiranje

    ./gradlew shadowJar (ili build), kopiraj .jar iz build/libs/ na testni poslužitelj i čitaj konzolu pri pokretanju.

Kako dovesti Kotlin na poslužitelj

  • Shadeaj je: Gradle plugin Shadow kopira Kotlin standardnu biblioteku i ostale biblioteke za izvođenje u tvoj .jar. Radi na svakoj verziji i najčešći je izbor.
  • libraries u plugin.yml: od Spigota 1.16.5 plugin može navesti biblioteke s Maven Centrala koje poslužitelj preuzima i učitava za njega. .jar ostaje malen, ali poslužitelju pri prvom pokretanju treba pristup internetu.
  • Biblioteke koje dodaješ: kotlinx-coroutines je zasebna biblioteka, nije dio standardne biblioteke i također se mora zapakirati. Ako je relociraš u vlastiti paket, izbjegavaš sukobe s drugim pluginovima koji pakiraju drugu verziju.

Korutine i glavna nit

Korutine su čist način za učitavanje podataka iz baze bez zamrzavanja poslužitelja, ali Bukkit API (svjetovi, entiteti, inventari) i dalje se mora koristiti iz glavne niti. Spori posao obavi na pozadinskom dispatcheru, a zatim se schedulerom vrati na nit poslužitelja prije nego što diraš igru. Veži scope korutina uz plugin, kako bi se otkazao u onDisable().

Java ili Kotlin?

ZnačajkaJavaKotlin
APIPaper / SpigotIsti Paper / Spigot API
BuildMaven ili GradleGradle s build.gradle.kts
Dodaci za izvođenjeNikakvoKotlin standardna biblioteka, zapakirana ili učitana
Tutorijali i primjeriVećina njihManje, ali Java primjeri izravno se prevode

S Codexeom

Odaberi Bukkit/Spigot/Paper (Kotlin). Codexe generira Gradle projekt s build.gradle.kts, Paper API-jem, pluginom Shadow za pakiranje onoga što poslužitelj ne pruža te korutinama zapakiranim i relociranim kad ih kod koristi. Kompajlira plugin prije nego što je Spremno, a Kotlin pluginovi mogu se isprobati na testnom poslužitelju i provjeriti testnim igračima kao i Java pluginovi. Pogledaj generator Kotlin pluginova.

„Paper 1.21.4 plugin u Kotlinu pod nazivom Bounties: /bounty set <player> <amount> preko Vaulta, ubojica dobiva nagradu, /bounty top prikazuje 10 najvećih, spremljeno u SQLite s korutinama za pristup bazi. Koristi data klase i extension funkcije, pozive Bukkit API-ja drži na glavnoj niti.”

Pitanja

Je li Kotlin plugin sporiji od Java plugina?

Nema bitne razlike: oba se kompajliraju u JVM bytecode. .jar je veći kad je standardna biblioteka zapakirana.

Mogu li miješati Javu i Kotlin u jednom pluginu?

Da, Gradle kompajlira oba u istom projektu, a Kotlin kod izravno poziva Java klase.

Zašto NoClassDefFoundError za kotlin klase?

Kotlin standardna biblioteka nije u .jar datoteci ili nije učitana. Napravi build sa shadowJar i instaliraj taj .jar ili dodaj biblioteku u libraries u plugin.yml.

Napravi Kotlin plugin

Ovaj prompt otvara se spreman za slanje:

“Paper 1.21.4 plugin u Kotlinu pod nazivom Bounties: /bounty set <player> <amount> uz Vault ekonomiju, ubojica dobiva nagradu, /bounty top prikazuje 10 najvećih, ucjene se spremaju u SQLite s korutinama za pristup bazi, pozivi Bukkit API-ja na glavnoj niti, poruke u config.yml.”

Generiraj ovo uz Codexe
Kako napraviti Minecraft plugin u Kotlinu (Paper) | Codexe