Cara Membuat Plugin Minecraft Java (Paper) untuk Pemula
Langkah awal membuat plugin Minecraft dengan Java dan Paper API, mulai dari menyiapkan JDK, IntelliJ IDEA, Gradle, plugin.yml, class utama, event listener, command pertama, sampai build menjadi file .jar dan mengujinya di server.
Oleh KawaiiVerse Studio · Diperbarui
Membuat plugin sendiri membuka kemungkinan tanpa batas: minigame, sistem quest, toko unik, atau fitur yang tidak ada di plugin mana pun. Panduan ini membuat plugin pertama bernama KVHalo yang menyapa pemain saat masuk dan menambahkan perintah /halo.
Persiapan
- JDK dengan versi yang sama dengan yang dibutuhkan server, misalnya JDK 21. Gunakan JDK, bukan hanya JRE.
- IntelliJ IDEA Community Edition (gratis). Editor lain bisa dipakai, tetapi IntelliJ paling nyaman untuk Java.
- Server Paper lokal untuk uji coba (lihat membuat server Paper).
- Pengetahuan dasar Java: class, method, dan if.
1. Struktur proyek
KVHalo/
├── build.gradle.kts
├── settings.gradle.kts
└── src/main/
├── java/id/kawaiiverse/halo/KVHalo.java
└── resources/plugin.yml2. Gradle
settings.gradle.kts:
rootProject.name = "KVHalo"build.gradle.kts:
plugins {
java
}
group = "id.kawaiiverse"
version = "1.0.0"
repositories {
mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/")
}
dependencies {
// Samakan dengan versi server Paper-mu
compileOnly("io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT")
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
tasks.processResources {
filesMatching("plugin.yml") {
expand("version" to project.version)
}
}compileOnly berarti Paper API hanya dipakai saat kompilasi dan tidak ikut dimasukkan ke jar, karena server sudah menyediakannya. Ganti versi paper-api sesuai versi servermu. Daftar versi yang tersedia ada di dokumentasi Paper.
3. plugin.yml
File ini memberi tahu server nama plugin, class utama, dan daftar perintah. Simpan di src/main/resources/plugin.yml:
name: KVHalo
version: '${version}'
main: id.kawaiiverse.halo.KVHalo
api-version: '1.21'
author: KawaiiVerse Studio
description: Plugin sapaan pertama
commands:
halo:
description: Menyapa pemain
usage: /halo [nama]
permission: kvhalo.halo
permissions:
kvhalo.halo:
description: Boleh memakai /halo
default: trueapi-version menandakan versi API yang dipakai plugin. Tanpa nilai ini, server menganggap plugin sebagai plugin lama dan menjalankannya dalam mode kompatibilitas.
4. Class utama
src/main/java/id/kawaiiverse/halo/KVHalo.java:
package id.kawaiiverse.halo;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public final class KVHalo extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
getLogger().info("KVHalo aktif!");
}
@Override
public void onDisable() {
getLogger().info("KVHalo dimatikan.");
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
player.sendMessage(Component.text("Halo, " + player.getName() + "! Selamat datang.", NamedTextColor.LIGHT_PURPLE));
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
String nama = args.length > 0 ? args[0] : sender.getName();
sender.sendMessage(Component.text("Halo juga, " + nama + "!", NamedTextColor.GOLD));
return true;
}
}Penjelasan singkat:
onEnable()berjalan saat plugin dinyalakan. Di sini kita mendaftarkan listener.- Method dengan
@EventHandlerdipanggil saat event terjadi.PlayerJoinEventterjadi saat pemain masuk. onCommand()menangani perintah yang terdaftar diplugin.yml. Mengembalikanfalseakan menampilkan teksusage.ComponentdanNamedTextColorberasal dari Adventure, sistem teks modern yang sudah tersedia di Paper.
5. Build
Di terminal (atau panel Gradle di IntelliJ):
./gradlew buildDi Windows, gunakan gradlew.bat build. Jika proyek belum punya Gradle wrapper, buat dengan gradle wrapper atau biarkan IntelliJ membuatnya. File plugin akan berada di build/libs/KVHalo-1.0.0.jar.
6. Uji di server
- Salin jar ke folder
plugins/server lokal. - Restart server.
- Masuk ke server. Kamu akan disapa dengan pesan berwarna ungu.
- Ketik
/halo Steve.
Jika plugin tidak muncul di /plugins, baca pesan error di konsol. Penyebab paling umum adalah main di plugin.yml tidak sama dengan nama package dan class.
Langkah berikutnya
Plugin pertama sudah jadi. Lanjutkan ke membuat plugin sendiri untuk mempelajari config, permission, cooldown, tab completion, dan penyimpanan data pemain.