Príručka

Ako vytvoriť plugin pre Minecraft v Kotline

Aktualizované 18. októbra 2026

Kotlin beží na JVM, takže plugin v Kotline používa rovnaké API Paper alebo Spigot, rovnaký plugin.yml a rovnaký priečinok plugins/ ako plugin v jazyku Java. Kód je kratší a bezpečný voči null. Jediná vec, s ktorou si pluginy v jazyku Java nemusia lámať hlavu, je štandardná knižnica Kotlinu: server ju nedodáva, takže si ju plugin musí priniesť.

Začni od tohto príkladu.

Vygeneruj to v Codexe

Krok za krokom

  1. 1.Vytvor projekt Gradle s Kotlin DSL

    build.gradle.kts s pluginom kotlin("jvm"), Java toolchain zodpovedajúci tvojej verzii Minecraftu (17, 21 alebo 25) a repozitár PaperMC.

  2. 2.Pridaj API servera

    compileOnly("io.papermc.paper:paper-api:<version>"). Rovnako ako v jazyku Java ho server poskytne za behu, takže sa nikdy nepribaľuje.

  3. 3.Napíš hlavnú triedu

    class MyPlugin : JavaPlugin() s override fun onEnable(). Príkazy a listenery registruj presne ako v jazyku Java.

  4. 4.Prines štandardnú knižnicu Kotlinu

    Pribaľ ju do .jar pluginom Shadow alebo nech si ju server stiahne pri štarte cez zoznam libraries v plugin.yml. Bez jedného z nich plugin zlyhá s NoClassDefFoundError: kotlin/....

  5. 5.Napíš plugin.yml

    Rovnaký súbor ako pri plugine v jazyku Java: názov, verzia, main (trieda v Kotline), api-version, príkazy a oprávnenia.

  6. 6.Zostav a otestuj

    ./gradlew shadowJar (alebo build), skopíruj .jar z build/libs/ na testovací server a pri štarte si prečítaj konzolu.

Ako dostať Kotlin na server

  • Pribaľ ho: Gradle plugin Shadow skopíruje štandardnú knižnicu Kotlinu a ďalšie knižnice potrebné za behu do tvojho .jar. Funguje na každej verzii a je to najčastejšia voľba.
  • libraries v plugin.yml: od Spigot 1.16.5 môže plugin uviesť knižnice z Maven Central, ktoré mu server stiahne a načíta. .jar zostane malý, ale server pri prvom štarte potrebuje prístup na internet.
  • Knižnice, ktoré pridáš: kotlinx-coroutines je samostatná knižnica, nie súčasť štandardnej knižnice, a treba ju tiež pribaliť. Relokácia do vlastného balíka zabráni konfliktom s inými pluginmi, ktoré pribaľujú inú verziu.

Korutiny a hlavné vlákno

Korutiny sú čistý spôsob, ako načítať dáta z databázy bez zamrznutia servera, ale Bukkit API (svety, entity, inventáre) sa stále musí používať z hlavného vlákna. Pomalú prácu urob na dispečeri na pozadí a potom sa plánovačom prepni späť na vlákno servera, než sa dotkneš hry. Scope korutín naviaž na plugin, aby sa v onDisable() zrušil.

Java alebo Kotlin?

FunkciaJavaKotlin
APIPaper / SpigotRovnaké API Paper / Spigot
ZostaviťMaven alebo GradleGradle s build.gradle.kts
Navyše za behuŽiadneŠtandardná knižnica Kotlinu, pribalená alebo načítaná
Návody a príkladyVäčšina z nichMenej, ale príklady v jazyku Java sa dajú priamo prepísať

S Codexe

Vyber Bukkit/Spigot/Paper (Kotlin). Codexe vygeneruje projekt Gradle s build.gradle.kts, Paper API, pluginom Shadow na pribalenie toho, čo server neposkytuje, a korutinami pribalenými a relokovanými, ak ich kód používa. Plugin skompiluje skôr, než je v stave Pripravené, a pluginy v Kotline sa dajú vyskúšať na testovacom serveri a skontrolovať testovacími hráčmi rovnako ako tie v jazyku Java. Pozri generátor pluginov v Kotline.

„Plugin pre Paper 1.21.4 v Kotline s názvom Bounties: /bounty set <player> <amount> cez Vault, zabijak dostane odmenu, /bounty top ukáže 10 najvyšších, uložené v SQLite s korutinami na prístup k databáze. Používaj data classes a extension funkcie, volania Bukkit API drž na hlavnom vlákne.“

Otázky

Je plugin v Kotline pomalší ako plugin v jazyku Java?

Žiadny podstatný rozdiel: oba sa kompilujú do bajtkódu JVM. Ak je pribalená štandardná knižnica, .jar je väčší.

Môžem v jednom plugine miešať Javu a Kotlin?

Áno, Gradle skompiluje oboje v jednom projekte a kód v Kotline volá triedy v jazyku Java priamo.

Prečo NoClassDefFoundError pre triedy kotlin?

Štandardná knižnica Kotlinu nie je v .jar alebo sa nenačítala. Zostav plugin cez shadowJar a nainštaluj tento .jar, alebo pridaj knižnicu do libraries v plugin.yml.

Vytvor plugin v Kotline

Toto zadanie sa otvorí pripravené na odoslanie:

“Plugin pre Paper 1.21.4 v Kotline s názvom Bounties: /bounty set <player> <amount> s ekonomikou Vault, zabijak dostane odmenu, /bounty top ukáže 10 najvyšších, odmeny uložené v SQLite s korutinami na prístup k databáze, volania Bukkit API na hlavnom vlákne, správy v config.yml.”

Vygeneruj to v Codexe
Ako vytvoriť plugin pre Minecraft v Kotline (Paper) | Codexe