Plugin Debugging

Ketika bug di plugin ini kode yang sulit untuk menentukan, kamu bosan mengkompilasi ulang setelah setiap perubahan yang keluaran logger mengacaukan kode dari kamu, debugging ini bisa sangat membosankan. Oleh karna itu, bagian ini akan menjelaskan bagaimana cara untuk mengatur plugin anda untuk memanfaatkan Java's kemampuan debugging.

Mempersiapkan ruang kerja Anda

Karena kita akan berjalan baik Spons dan plugin kamu dari dalam IDE, kamu akan perlu untuk mengimpor baik SpongeForge atau SpongeVanilla, tergantung mana yang ingin kamu gunakan, sebagai sebuah proyek ke dalam bagian kerja kamu. Petunjuk untuk melakukannya ditemukan di halaman GitHub proyek masing-masing. Ikuti petunjuk dengan hati-hati sebelum melanjutkan di sini.

Sekarang kamu perlu memastikan proyek plugin kamu terlihat oleh SpongeForge/SpongeVanilla proyek yang baru saja kamu lakukan. Langkah-langkah yang diperlukan tergantung pada IDE kamu.

Intellij IDEA

Di IntelliJ, setiap proyek punya suatu workspace(s). Untuk membuat proyek kamu terlihat oleh Sponge(Vanilla) proyek, itu perlu Module. Dengan asumsi kamu sudah membuat proyek kamu seperti yang dijelaskan di dalam Menyiapkan IntelliJ IDEA, impor itu menggunakan langkah-langkah berikut.

  • Buka SpongeVanilla/SpongeForge proyek.

  • Klik Menyimpan, diikuti oleh Baru, kemudian Modul dari sumber-Sumber yang Ada....

  • Arahkan ke direktori proyek plugin Anda.

    • Jika kamu menggunakan Gradle, pilih build.gradle file, dalam dialog berikutnya cek Gunakan auto-impor dan confirmasi.

    • Dalam keadaan lain, hanya pilih keseluruhan direktori dan klik Selesai.

  • Klik Selesai.

Tip

Jika kamu belum membuat plugin kamu, klik Modul... sebagai pengganti Modul dari sumber-Sumber yang Ada..., kemudian buat proyek kamu dalam dialog berikut.

Gerhana

Cuma membuat proyek kamu seperti yang dijelaskan di sini: Menyediakan eclipse. Selama ini di ruang kerja kamu SpongeVanilla/SpongeForge proyek, itu akan terlihat.

Menambahkan Plugin ke Sponge classpath

Gagasan di balik ini adalah bahwa kita akan meluncurkan Sponge dari dalam IDE Anda, seperti biasa. Namun, bedanya adalah kita akan menambahkan plugin anda ke classpath. Karena Sponge akan sesuai dengan semua plugin bawaan yang ditemukan di classpath, menambahkan proyek plugin ke classpath Sponge akan menyingkirkan kebutuhan Anda untuk membangun kembali dan menyalin file artefak ke dalam direktori server Anda setelah setiap perubahan.

Terutama kamu sudah memastikan bahwasanya kamu sudah menyesuaikan konfigurasi(s) Run/debug dengan tepat, contoh yang di tunjukkan dalam Sponge README.md

Kemudian Anda perlu mengedit Konfigurasi Run / Debug sehingga akan menyertakan proyek Anda di jalur kelas. Cara melakukan ini, tergantung IDE Anda lagi:

Intellij IDEA

  • Buka Struktur Proyek Anda.

    • Klik File, diikuti oleh Proyek struktur....

    • ATAU, klik, lambang,``struktur proyek``, di sudut kanan atas sebelah kanan dari IDE, kemudian `` Cari`` lambang.

  • Klik Modul. Memperluas SpongeForge atau SpongeVanilla kelompok (tergantung apa yang anda pilih).

  • Pastikan SpongeForge_main atau SpongeVanilla_main di pilih.

  • Di kolom sebelah kanan, pilih Dependensi tab.

  • Klik + lambang (Add) di bagian bawah kolom, dan pilih Modul Ketergantungan.

  • Pilih yourplugin_main.

  • JANGAN memeriksa pilihan Export pada modul, apabila itu ditambahkan ke daftar.

Peringatan

Due to a bug in IntelliJ (IDEA-194641), any dependencies that your plugin has (e.g. the Kotlin standard library, or Gson) will not be added to the classpath using the above method. This results in a ClassNotFoundException when your plugin tries to access one of these classes, even though it successfully compiled against that class.

This issue only affects running your plugin from IntelliJ as a module. Your final built plugin jar will run normally in both IntelliJ and a production server.

If your plugin has external dependencies, you'll need to follow these steps in order to run it directly from IntelliJ:

  • Create a new Java module with File -> New -> Module.... Name it SpongeForgeContainer.

  • Open the module settings for SpongeForgeContainer as described above

  • In the dependency settings for SpongeForgeContainer, add a module dependency on SpongeForge_main

  • Edit your server run configuration. Change Use classpath of module: from SpongeForge_main to SpongeForgeContainer

You can leave all of your settings unchanged, including SpongeForge_main's dependency on your plugin module. Now, all of your plugin's dependencies should be added to the classpath when you run the server.

Gerhana

  • Temukan Konfigurasi Run / Debug Anda

    • Klik Menjalankan, diteruskan dengan Menjalankan Konfigurasi...

    • ATAU, klik tanda panah drop-down di sebelah tanda Run/Debug dan kemudian Menjalankan Konfigurasi... atau Debug Konfigurasi..., masing-masing.

  • Pilih Run / Debug Configuration untuk Sponge (Server) di sisi kiri.

  • Beralih ke Classpath tab.

  • Pilih Pengguna, diteruskan dengan Menambahkan Proyek... tombol.

  • Pilih Proyek yang cocok untuk Plugin kamu.

  • Klik tombol OK.

  • Klik tombol Pasangkan pada sudut bawah sebelah kanan.

Menjalankan Konfigurasi

After you've followed the previous steps, you should be ready to start debugging. If you start your server from your IDE, its working directory will be the run directory in your SpongeForge/SpongeVanilla project. All the files usually created by a server (worlds, configs etc.) will be stored in that run directory and persist over multiple runs of your local test server, just as if you manually copied a server .jar to the run directory and started it from there.

Intellij IDEA

Daripada menekan panah kanan kanan untuk menjalankan konfigurasi Run / Debug Anda, klik ikon Hijau di sebelah kanannya, `` Debug``.

Gerhana

Rather than pressing the green right-pointing arrow to run your Run/Debug configuration, click the drop-down arrow of the Debug icon (the one displaying a bug) and click your Test (Server) configuration. If it doesn't appear in the drop-down menu, click Debug Configurations. Select Test (Server) configuration and hit the Debug button on the bottom left.

Menggunakan Debugger

Setelah server Anda (dan Plugin Anda) berjalan di Debugger, Anda dapat menggunakan fitur yang dipegangnya. Yang paling menonjol digunakan dijelaskan di bawah ini singkatnya, meski bukan fitur Sponge, tapi Java Debugger yang digunakan IDE Anda.

Breakpoints

Breakpoints adalah alat yang berguna untuk melihat lebih dekat kode. Sebuah breakpoint dapat diatur pada awal baris kode atau fungsi. Saat mencapai breakpoint, debugger akan menghentikan eksekusi kode dan IDE Anda akan membuka pandangan yang memungkinkan Anda untuk memeriksa isi semua variabel dalam lingkup saat ini. Eksekusi kode tidak akan dilanjutkan kecuali Anda menekan tombol yang sesuai pada tampilan debugging IDE Anda.

Breakpoints juga dapat ditambahkan, dihapus atau dinonaktifkan sementara saat proses debug sedang dalam proses.

Tip

Setelah suatu server centang mengambil lebih dari jumlah waktu yang diberikan, pengawas akan mempertimbangkan server jatuh dan tegas menutupnya. Ketika bekerja dengan breakpoints ini mungkin terjadi, jadi dianjurkan bahwa anda mengubah test lingkungan``server.properties`` file dan mengubah nilai max-tick-time untuk jumlah yang sangat besar (jumlah milidetik kutu dapat mengambil) atau -1 (untuk menonaktifkan Pengawas yang benar).

Intellij IDEA

Untuk menambahkan atau menghapus breakpoint, cukup klik kiri di ruang kosong hanya di sebelah kiri editor Anda.

Selain itu, mepunyai kursor di mana anda ingin menambahkan breakpoint bisa juga dihapus terus klik Run diteruskan dengan Toggle Line Breakpoint.

Gerhana

Cara menambahkan atau menghapus breakpoint, cukup klik sebelah kanan di ruang kosong hanya ke sebelah kiri dari editor anda dan klik Toggle Breakpoint.

Selain itu, mempunyai kursor di mana kamu ingin menambahkan breakpoint atau menghapusnya lalu klik Run diteruskan dengan Toggle Breakpoint.

Kode Hotswapping

Kegunaan lainnya feat debugger adalah bahwa kamu tidak perlu harus me-restart server kamu untuk setiap perubahan kecil yang kamu buat, terima kasih untuk kode hotswapping. Ini berarti bahwa kamu hanya dapat mengkompilasi ulang bagian-bagian dari kode kamu ketika sedang berjalan di debugger. Namun, ada beberapa keterbatasan, yang paling utama adalah:

  • Kamu tidak dapat membuat atau menghapus metode.

    • Perubahan metode tertentu untuk kode dalam metode. Anda tidak dapat modify tanda tangan (yang berarti namanya, kembali jenis dan parameter jenis)

  • Kamu tidak bisa menghapus ruang-ruang.

    • Anda tidak dapat memodifikasi nama kelas, superclass atau daftar antarmuka yang diimplementasikannya.

    • Anda dapat menambahkan ruang. Namun, setelah itu telah terbentuk dan hotswapped, ruang mengikuti aturan di atas.

Kamu bisa test fungsi ini: Memperkenalkan perintah sederhana untuk anda plugin yang hanya menulis kata-kata, seperti Sponge Kemudian simpan dan memulai server seperti yang diuraikan di atas. Jalankan perintah. Itu akan output Sponge. Sekarang merubah perintah untuk menulis kata yang berbeda untuk konsol, simpan file. Setelah perubahan, lakukan hal berikut untuk hotswap perubahan untuk menjalankan program:

Intellij IDEA

  • Buka Run menu, dari sisi atas IDE.

  • Di sisi bawah kategori awal istirahat, klik Reload Berubah Classes.

Gerhana

Tidak ada tindakan yang diperlukan. Segera anda menyimpan file, itu akan dibentuk kembali dan secara otomatis hotswapped akan menjalankan debug. Kecuali jika anda mengubah nya khususnya default tertentu, anda tidak akan memiliki untuk memicu secara manual hotswap.