Kawaiiverse StudioDreams · Games · Infinite Worlds

☕ JavaServerLanjut4 menit baca

Optimasi Server Minecraft Java (Paper) — Atasi Lag dan TPS Turun

Cara mengoptimalkan server Minecraft Java Paper, mulai dari memahami TPS dan MSPT, mendiagnosis lag dengan spark, flag JVM, view dan simulation distance, pre-generate dunia dengan Chunky, pengaturan Paper, Spigot, dan Bukkit, sampai kebiasaan yang membuat server berat.

Oleh KawaiiVerse Studio · Diperbarui

Server yang lag membuat pemain cepat pergi. Kabar baiknya, sebagian besar lag bisa didiagnosis dan diperbaiki tanpa langsung membeli hardware yang lebih mahal. Kuncinya: ukur dulu, baru ubah.

Memahami TPS dan MSPT

  • TPS (ticks per second): server Minecraft idealnya berjalan 20 tick per detik. Jika TPS turun di bawah 20, semua hal melambat, misalnya tanaman, mob, dan redstone.
  • MSPT (milliseconds per tick): lama waktu yang dibutuhkan untuk memproses satu tick. Batasnya 50 ms. Jika MSPT di atas 50, TPS pasti turun.

Cek dengan /tps atau /mspt di Paper. MSPT lebih jujur untuk menilai kesehatan server.

1. Diagnosis dengan spark

spark adalah profiler yang sudah termasuk di Paper modern (atau bisa dipasang sebagai plugin terpisah).

/spark tps
/spark health
/spark profiler start
# tunggu beberapa menit saat lag terjadi
/spark profiler stop

profiler stop memberikan link laporan online. Laporan ini menunjukkan bagian mana yang paling banyak memakan waktu tick, misalnya entitas tertentu, plugin tertentu, atau pemuatan chunk. Perbaiki penyebab terbesar lebih dulu.

2. Flag JVM (Aikar's flags)

Garbage collector Java yang tidak diatur bisa membuat server "tersendat" secara berkala. Paper merekomendasikan sekumpulan flag G1GC yang dikenal sebagai Aikar's flags:

bash
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true \
  -jar paper.jar --nogui
  • Samakan -Xms dan -Xmx.
  • Untuk RAM di atas 12 GB, dokumentasi Paper menyarankan beberapa angka berbeda. Gunakan generator script start di dokumentasi Paper agar nilainya tepat.
  • RAM lebih banyak tidak selalu lebih baik. Jangan memberi Java seluruh RAM mesin. Sisakan untuk sistem operasi.

3. View distance dan simulation distance

Di server.properties:

properties
view-distance=8
simulation-distance=6
  • view-distance menentukan seberapa jauh pemain melihat dunia. Paper mengirim chunk secara efisien, jadi nilai ini bisa sedikit lebih tinggi.
  • simulation-distance menentukan seberapa jauh dunia diproses (mob, tanaman, redstone). Nilai ini paling berpengaruh pada TPS. Nilai 4–6 biasanya sudah cukup untuk server survival.

4. Pre-generate dunia dengan Chunky

Membuat chunk baru adalah salah satu pekerjaan terberat. Saat pemain menjelajah ke arah berbeda, server harus membuat chunk terus-menerus. Buat chunk lebih dulu dengan plugin Chunky, lalu batasi dunia dengan world border:

/chunky world world
/chunky radius 3000
/chunky start
/worldborder center 0 0
/worldborder set 6000

Jalankan saat server sepi. Proses ini bisa memakan waktu berjam-jam tergantung radius dan CPU.

5. Pengaturan Paper, Spigot, dan Bukkit

spigot.yml: kurangi aktivitas entitas yang jauh dari pemain dan gabungkan item yang berserakan.

yaml
world-settings:
  default:
    entity-activation-range:
      animals: 16
      monsters: 24
      raiders: 48
      misc: 8
    merge-radius:
      item: 3.5
      exp: 4.0
    mob-spawn-range: 6

bukkit.yml: atur batas spawn mob.

yaml
spawn-limits:
  monsters: 50
  animals: 8
  water-animals: 3
  ambient: 1
ticks-per:
  monster-spawns: 2

config/paper-world-defaults.yml berisi banyak opsi performa, misalnya batas entitas tersimpan per chunk, jarak despawn mob, dan optimasi ledakan. Baca dokumentasi Paper untuk setiap opsi sebelum mengubahnya, karena beberapa opsi mengubah mekanik game yang dipakai farm pemain.

6. Kebiasaan yang membuat server berat

  • Terlalu banyak entitas di satu tempat. Contohnya ratusan sapi di kandang, item frame, atau armor stand. Gunakan /minecraft:kill @e[type=item] dengan hati-hati, atau plugin pembatas entitas per chunk.
  • Farm redstone besar dan hopper berlebihan. Hopper terus memeriksa item di atasnya.
  • Plugin berat atau buruk. Laporan spark akan menunjukkan plugin yang memakan waktu tick terbanyak. Ganti dengan alternatif yang lebih ringan.
  • Plugin yang menjalankan pekerjaan berat di thread utama, seperti menyimpan data besar setiap tick.
  • Banyak dunia yang selalu dimuat. Matikan atau unload dunia yang jarang dipakai.

7. Hardware

Minecraft sangat bergantung pada kecepatan satu core CPU, karena tick dunia sebagian besar berjalan di satu thread. Saat memilih VPS atau hosting, CPU dengan clock tinggi lebih penting daripada jumlah core yang banyak. Gunakan juga SSD/NVMe untuk mempercepat pemuatan chunk.

Masih lag atau server crash? Lihat Troubleshooting server Java.

Bacaan lanjut