Panduan

Cara membuat plugin Minecraft dengan Kotlin

Diperbarui 18 Oktober 2026

Kotlin berjalan di JVM, jadi plugin Kotlin memakai API Paper atau Spigot yang sama, plugin.yml yang sama, dan folder plugins/ yang sama dengan plugin Java. Kodenya lebih pendek dan null-safe. Satu hal yang tidak perlu dipikirkan plugin Java adalah Kotlin standard library: server tidak menyertakannya, jadi plugin harus membawanya sendiri.

Mulai dari contoh ini.

Buat ini dengan Codexe

Langkah demi langkah

  1. 1.Buat proyek Gradle dengan Kotlin DSL

    build.gradle.kts dengan plugin kotlin("jvm"), toolchain Java yang sesuai dengan versi Minecraft-mu (17, 21, atau 25), dan repository PaperMC.

  2. 2.Tambahkan API server

    compileOnly("io.papermc.paper:paper-api:<version>"). Sama seperti di Java, server menyediakannya saat runtime, jadi tidak pernah dibundel.

  3. 3.Tulis class utama

    class MyPlugin : JavaPlugin() dengan override fun onEnable(). Daftarkan perintah dan listener persis seperti di Java.

  4. 4.Bawa Kotlin standard library

    Bundel ke dalam .jar dengan plugin Shadow, atau biarkan server mengunduhnya saat startup lewat daftar libraries di plugin.yml. Tanpa salah satunya, plugin gagal dengan NoClassDefFoundError: kotlin/....

  5. 5.Tulis plugin.yml

    File yang sama seperti plugin Java: name, version, main (class Kotlin-nya), api-version, perintah, dan permission.

  6. 6.Build dan uji

    ./gradlew shadowJar (atau build), salin .jar dari build/libs/ ke server uji, dan baca console saat startup.

Membawa Kotlin ke server

  • Shade: plugin Gradle Shadow menyalin Kotlin standard library dan library runtime lainnya ke dalam .jar-mu. Cara ini berfungsi di semua versi dan paling umum dipilih.
  • libraries di plugin.yml: sejak Spigot 1.16.5, plugin bisa mencantumkan library Maven Central yang diunduh dan dimuat server untuknya. .jar tetap kecil, tetapi server butuh akses internet saat pertama kali menyala.
  • Library yang kamu tambahkan: kotlinx-coroutines adalah library terpisah, bukan bagian dari standard library, dan juga harus dibundel. Merelokasinya ke package-mu sendiri menghindari bentrok dengan plugin lain yang membundel versi lain.

Coroutine dan main thread

Coroutine adalah cara rapi untuk memuat data dari database tanpa membekukan server, tetapi Bukkit API (world, entity, inventory) tetap harus dipakai dari main thread. Kerjakan pekerjaan lambat di dispatcher latar belakang, lalu kembali ke thread server dengan scheduler sebelum menyentuh game. Ikat scope coroutine ke plugin, agar dibatalkan di onDisable().

Java atau Kotlin?

FiturJavaKotlin
APIPaper / SpigotAPI Paper / Spigot yang sama
BuildMaven atau GradleGradle dengan build.gradle.kts
Tambahan runtimeTidak adaKotlin standard library, dibundel atau dimuat
Tutorial dan contohSebagian besarLebih sedikit, tetapi contoh Java bisa langsung diterjemahkan

Dengan Codexe

Pilih Bukkit/Spigot/Paper (Kotlin). Codexe menghasilkan proyek Gradle dengan build.gradle.kts, Paper API, plugin Shadow untuk membundel apa yang tidak disediakan server, dan coroutine yang dibundel serta direlokasi jika kodenya memakainya. Plugin dikompilasi sebelum Ready, dan plugin Kotlin bisa dicoba di server uji coba dan diperiksa pemain uji seperti plugin Java. Lihat generator plugin Kotlin.

"Plugin Paper 1.21.4 dengan Kotlin bernama Bounties: /bounty set <player> <amount> lewat Vault, pembunuhnya mendapat hadiah, /bounty top menampilkan 10 tertinggi, disimpan di SQLite dengan coroutine untuk akses database. Gunakan data class dan extension function, jaga panggilan Bukkit API tetap di main thread."

Pertanyaan

Apakah plugin Kotlin lebih lambat dari plugin Java?

Tidak ada perbedaan berarti: keduanya dikompilasi menjadi bytecode JVM. .jar-nya lebih besar jika standard library dibundel.

Bisakah mencampur Java dan Kotlin dalam satu plugin?

Bisa, Gradle mengompilasi keduanya di proyek yang sama, dan kode Kotlin memanggil class Java secara langsung.

Kenapa muncul NoClassDefFoundError untuk class kotlin?

Kotlin standard library tidak ada di .jar atau tidak dimuat. Build dengan shadowJar dan pasang .jar tersebut, atau tambahkan library ke libraries di plugin.yml.

Buat plugin Kotlin

Prompt ini terbuka dan siap dikirim:

“Plugin Paper 1.21.4 dengan Kotlin bernama Bounties: /bounty set <player> <amount> memakai ekonomi Vault, pembunuhnya mendapat hadiah, /bounty top menampilkan 10 tertinggi, bounty disimpan di SQLite dengan coroutine untuk akses database, panggilan Bukkit API di main thread, pesan di config.yml.”

Buat ini dengan Codexe
Cara membuat plugin Minecraft dengan Kotlin (Paper) | Codexe