Praktek buruk

Ini praktek-praktek buruk harus dihindari, karena mereka dapat menyebabkan kebocoran memori (kerusakanmemoriluar), ketinggalan atau inkonsistensi.

Menyimpan referensi

Beberapa contoh seperti

harus tidak PERNAH disimpan atau di-cache dalam plugin.

Inilah alasan utama untuk ini:

  • Referensi mencegah penggumpulan sampah yang tepat

  • Contohnya mungkin tidak lagi berlaku

Hal ini dapat dengan mudah dihindari dengan menggunakan foto yang sesuai ataupun menyimpan UUID dari contoh yang diberikan dan meminta secara langsung saat anda memerlukannya.

IO di thread utama

Melaksanakan beberapa operasi IO seperti loading config/data file atau memeriksa pembaruan/menghubungkan ke website membutuhkan banyak waktu dan sangat mempengaruhi TPS di server. Seperti tugas-tugas yang harus dilakukan baik dalam benang mereka sendiri, atau menggunakan built-in scheduler ini async fitur. Namun, itu baik-baik saja untuk memuat file yang dibutuhkan/config di thread utama saat server startup/inisialisasi plugin.

this.game.getScheduler().createAsyncExecutor(this).execute(this::checkForUpdates);

Untuk rincian lebih lanjut lihat scheduler dokumen.

Jika ini dilakukan dengan tidak benar, anda mungkin melihat waktu klien habis, atau pengawas mungkin membunuh server.

Mengakses objek permainan diluar berkas utama

Mengakses permainan benda-benda di luar thread utama dapat menyebabkan crash, inkonsistensi dan berbagai masalah lainnya dan harus dihindari. Jika anda memiliki panjang operasi pada thread yang berbeda menggunakan scheduler untuk membuat perubahan pada permainan seperti benda-benda di thread utama. Jika anda ingin menggunakan permainan objek di thread yang berbeda menggunakan snapshot dari contoh atau terpisah wadah data.

Peringatan

If this is done wrong, you can get a ConcurrentModificationException with or without a server crash at best and a corrupted player/world/server at worst.