Data API

Data API terpadu bertujuan untuk menyediakan cara yang konsisten untuk mengakses data modifikasi data. 'Data', dalam konteks ini berarti setiap data yang disinkronisasi secara konsisten antara client danserver. hal ini dapat diubah sisi server dan kemudian perubahan tersebut akan disinkronkan ke klien yang terhubung. Ini termasuk, diantara banyak lainnya, teks pada sebuah tanda, penambilan kuda atau kesehatan dari setiap entitas yang hidup.

Dimana pendekatan lain menentukan data yang tersedia dengan menggunakan antarmuka dan pewarisan (seperti antarmuka EntitasHidup yang menyediakan fungsi pengambil dan penyetel untuk kesehatan saat ini dan maksimum), di Spon setiap entitas, blok, dll sama sekali tidak menyadari data apa yang dimilikinya. Meskipun ini mungkin tampak kurang jelas daripada metode asesor langsung, namun hal ini terutama jauh lebih dapat diperluas. Dan berkat penambahan :javadoc: Kunci s, cukup mengakses nilai tertentu tidak kalah langsung.

Peringatan

Saat penulisan, beberapa bagian dari Data API tidak diimplementasikan. Jika anda mencoba untuk mengakses sebuah API dan menerima Optional kosong saat diharapkan, lihat ke Implementation Tracker, tanyakan dalam kanal IRC #spongedev atau pada Forums untuk mencari tahu jika data yang anda butuhkan untuk bekerja dengannya belum tersedia.

Konsep

Pada sekilas dokumen API, API data mengancam untuk membanjiri Anda dengan banyak antarmuka dan paket. Tapi untuk hanya menggunakan data API, Anda tidak perlu berurusan dengan banyak dari mereka, karena kebanyakan antarmuka hanya menemukan manipulator data tertentu.

DataHolder

Pemegang data hanya itu - sesuatu yang menyimpan data. Ini menyediakan metode untuk mengambil dan menawarkan kembali data. Antarmuka itu sendiri sama sekali tidak memperhatikan tipe data yang dimiliki. Karena hanya implementasinya yang memiliki pengetahuan ini, mungkin untuk bertanya kepada: javadoc: DataHolder untuk menyediakan data yang tidak memiliki atau menerima data yang tidak dapat digunakan. Dalam kasus tersebut, nilai pengembalian metode akan memberikan informasi bahwa data tidak tersedia (melalui `` Opsional.empty () ``) atau tidak diterima (melalui: doc: DataTransactionResult <transaction>).

Properti

Sebuah properti juga adalah data, namun tidak disinkronkan antara server dan klien. Oleh karena itu, hanya bisa diubah dengan modifikasi hadir pada klient dan server. Karena Sponge tidak dimaksudkan untuk meminta mitra sisi klien, propertinya tidak dapat dimodifikasi. Contoh properti adalah ablities pemanenan pada alat (diwakili sebagai: javadoc: HarvestingProperty atau penyerapan kerusakan item armor yang dapat dilepas (ditunjukkan sebagai: javadoc:` DamageAbsorptionProperty`).

Datamanipulator

Manipulasi data mewakili titik data kohesif yang menggambarkan komponen tertentu dari dudukannya. Misalnya: javadoc: HealthData, yang berisi kesehatan terkini dan maksimal. Jika pemegang data memiliki `` HealthData``, kesehatannya dapat habis dan diisi ulang dan dapat mati jika kesehatan habis. Ini memungkinkan penggunaan kembali komponen semacam itu di atas API dan mencegah duplikasi metode accessor. Misalnya, domba, blok kaca patri dan pelindung kulit semua dapat berbagi: javadoc: DyeableData memegang warna yang diwarnai.

Kunci

A `` Key`` adalah pengenal unik untuk satu titik data dan dapat digunakan untuk langsung membaca atau menetapkan titik data tanpa khawatir tentang manipulator data. Ini dirancang untuk menyediakan cara mudah mengakses data yang mirip dengan metode pengambil / penyetel langsung. Semua kunci yang digunakan dalam Sponge terdaftar sebagai konstanta di: javadoc: Keys kelas utilitas.

Nilai

Dalam API Data, nilai yang disebut oleh Kunci dikodekan dalam objek kontainer. Untuk dokumentasi ini, disebut sebagai 'nilai kunci' untuk menghindari kebingungan dengan nilai sebenarnya. Nilai kunci mengenkapsulasi nilai data aktual (jika ada), nilai default (untuk digunakan jika tidak ada nilai langsung) dan Kunci dimana nilai diidentifikasi.