Praktek Terbaik

Ada banyak cara untuk membuat plugin, dan banyak pitfalls untuk sebuah unwary pengembang. Di sini kita menggambarkan plugin pengembangan praktek yang akan membuat sebagian besar Sponge API, Pengaturan yang masuk akal batas untuk mendapatkan keuntungan dari kesesuaian. Informasi ini dapat berubah dan berkembang sebagai Sponge proyek matures.

Pedoman Pembangunan Plugin

Berikut pedoman yang telah siap untuk bantuan pengebanga Sponge plugin. Itu tidak pasti atau daftar yang meliputi banyak hal, hanya upaya untuk detail beberapa masalah yang cenderung muncul selama pengembangan plugin dan mengusulkan solusi yang terbaik.

Catatan

Kami memesan penggunaan Sponge untuk pekerja resmi SpongePowered. Mohon jangan menggunakan Sponge sebagai bagian dari nama plugin anda, kecuali (1) plugin anda terutama keprihatinan yang memblokir blok Minecraft "Sponge", atau (2) plugin anda juga mempunyai versi lain untuk APIs (dalam hal ini anda mungkin menambahkan "Sponge untuk" judulnya).

Ekonomi API

Para Ekonomi API yang digunakan untuk menghubungkan plugins dengan plugin ekonomi lainnya yang menggunakan ekonomi (i.e. shops). Anda bisa membaca para Ekobomi API :doc: disini<economy/index>, Yang rincian segala sesuatu yang perlu Anda ketahui tentang API.

Paket

Apa yang harus dilakukan den gan intercepting packets, atau memperkenalkan materi biasa/blok/entities/yang lainnya, adalah bukan berencana untuk menjadi bagian dari para Sponge API. Perhatikan bahwa menggunakan paket mungkin melihat masalah dengan cara yang salah, seperti mungkin ada solusi dicapai dengan yang ada di Sponge API. Dalam beberapa kasus dimungkinkan untuk menambahkan apa pun yang diperlukan untuk Sponge API; Sebaliknya, alternatif adalah untuk menggunakan Forge API dan membuat Mod sebaliknya.

Mengginakan Tempat atau Kelas NMS

Kami tidak merekomendasikan bekerja sama dengan bengkel atau pengrajin kelas dasar tambang sama sekali, kecuali untuk menyediakan kompatibilitas dengan mod untuk Sponge API. Sebagian besar penggunaan kode NMS (net.minecraft.server) di plugin tidak gagal dengan anggun, sehingga membuat masalah menjadi sangat sulit. Memelihara modifikasi NMS juga lebih sulit daripada menggunakan Sponge API. Modifikasi yang menambahkan API Sponge menggunakan kode internal harus secara khusus menulis API, yang tidak bergantung pada kode pengrajin tambang yang mendasarinya, agar dapat digunakan oleh plugin Sponge. Namun, plugin dapat dibuat yang memuat modul "kompatibilitas" terpisah untuk berinteraksi dengan penerapan dasarnya (SpongeForge atau SpongeVanilla).

Plugins menggunakan implementation-specific kode sangat mungkin untuk memecahkan antara versions, dan harus jelas dicap sebagai seperti di mana mereka yang diselenggarakan. Ini mungkin lebih tepat dicap sebagai “Mods”.

Mixin

Mixin khususnya untuk merubah kelas-kelas sebelum mod/plugin lain memulai. ForgeModLoader memanggil mod yang ini "Coremod". SpongeForge adalah sebuah Coremod, dan menyebarkan mixin pada saat memulainya. Mixin bisa jadi digunakan oleh plugin, tetapi waspadalah dari kerumitan tambahan yang terlibat.

** Modus Hybrid **

Sponge plugins yang mana mempengaruhi mixin mungkin juga dapat dianggap menjadi sebuah mod inti, yang berdasarkan pada konten.

  • Untuk menggunakan mixin dalam FML, itu pasti akan menjadi sebuah coremod. Botol itu mungkin juga berisi mengandung sebuah Sponge plugin, jadi yang paling pantas wadahnya adalah sebuah "mod hybrid".
  • Untuk mempergunakan mixin pada SpongeVanilla, tujuannya harus diumumkan dalam wujud yang nyata. SpongeVanilla lalu menyemprotkan mixin.
  • Mempunyai tipe keduanya pada sebuah botol tunggal sepenuhnya mungkin terjadi. (Memang, sebuah botol tunggal dapat dengan mudah mengandung sebuah tweaker, FML mod, coremod, bukkit plugin, sponge plugin, dan/atau litemod.)

Beberapa definisi mungkin bisa membantu di sini.

Tweak Mod (aka Tweaker)
sebuah tingkat-subsistem mod yang terkait langsung ke dalam permainan menggunakan LaunchWrapper, umumnya digunakan untuk ModSistem (misalnya LiteLoader, FML) dan mod yang berdiri-sendiri (misalnya Optifine). Bisa berkomunikasi dengan segala aspek apapun dari lingkungan permainan secara langsung. Pada umumnya istirahat pada semua versi.
Core Mod
mempunyai tenaga hampir sama nilainya dari sebuah Tweak Mod tetapi perlu di bootstrap oleh sebuah ModSistem. Mampu berinteraksi dengan segala aspek apapun dari lingkungan permainan secara langsung. Pada umumnya beristirahat pada semua versi Permainan terbaru.
Mod
berkomunikasi dengan permainan hanya lewat sebuah ModSistem, mod itu terbuka secara langsung pada objek permainan tetapi pada umumnya hanya keterkaitan ke dalam permainan yang disediakan oleh ModSystem. Pada umumnya istirahat setiap versi utama dari Permainan (tergantung pada fitur yang digunakan). Istilah mod juga digunakan sebagai sebuah istilah payung untuk apapun yang mengubah permainan, meski demi sebuah kejelasan kita akan menggunakan definisi ini.
Plugin
berinteraksi dengan permainan hanya melalui API, tidak berinteraksi dengan objek permainan secara langsung dengan cara apa pun, hanya memanfaatkan objek yang terpapar API. Umumnya hanya akan rusak saat API direvisi (dan terkadang tidak juga saat itu).

Penting juga membedakan wadah dari isinya. Masalah dengan terminologi cenderung muncul karena toples berisi mod cenderung disebut sebagai "mod". Setiap plugin yang tidak sepenuhnya dipisahkan melalui API menempatkan dirinya ke dalam kategori Mod. Jenis "plugin" ini mungkin lazim bila ada kekurangan dalam API.

** Keuntungan dari Modus Hybrid **

Sebuah mod hybrid memanfaatkan komponen plugin yang berinteraksi melalui API, dan mod (atau bahkan mod inti) dalam paket yang sama. Ini memiliki kelemahan mod (istirahat setiap versi) tapi juga kekuatan mod (bisa berinteraksi dengan permainan secara langsung) ditambah dengan beberapa manfaat Plugin (akses abstrak tingkat tinggi ke permainan, dan juga bisa berinteraksi dengan plugin lain sebagai teman).

Manfaat utama dari sistem ini adalah bahwa beban pemeliharaan berkurang saat memperbarui mod, karena setiap fitur yang diakses melalui API cenderung jauh lebih stabil.

Tipe dari mod ini bisa digunakan untuk menjalankan plugin yang keperluannya meningkatkan kemampuan dari API (pada kasus ini sebuah plugin yang dibutuhkan untuk memanfaatkan mixin bagi sebuah fitur tertentu); tetapi bisa juga digunakan untuk mod yang ingin mempengaruhi layanan yang dihasilkan oleh API (misalnya sebuah mod yang ingin memberi dukungan langsung untuk izin atau kanal obrolan).

Tidak seperti "plugin" NMS, mod hibrida membuat sifatnya jelas.

Interoperabilitas Plugin

Penjelasan bagaimana cara berkomunikasi dengan plugin lain, *TBA *.