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.
Where other approaches define the available data using interfaces and inheritance (like a LivingEntity
interface providing getter and setter functions for current and maximum health), in Sponge every entity, block
etc. is completely oblivious to what data it holds. While this may appear less straightforward than direct
accessor methods, it is foremost far more extensible. And thanks to the addition of Keys, simply accessing
specific values is no less straightforward.
Tip
If the data API behaves differently from what you expect (e.g. returns an empty Optional
even if the data are
supposed to be present), or there is a feature/value missing that you need, check the Implementation Tracker, ask in the #spongedev
IRC channel,
in the #dev
Discord channel, or on the Forums.
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
A property too is data, but not synchronized between server and clients. Therefore, it can only be changed by modifications present on both client and server. Since Sponge is not intended to require a client-side counterpart, properties are not modifiable. Examples of properties are the applicable potion effects on tools (represented as Keys#APPLICABLE_POTION_EFFECTS or the damage absorption of an equipable armor item (represented as Keys#ABSORPTION).
Datamanipulator
A data manipulator represents points of cohesive data that describes a certain component of its holder. For
example HealthData, which contains both current and maximum health. If a data holder has HealthData
, it
has health that can somehow be depleted and replenished and can die if that health is depleted. This allows for the
re-use of such components over the API and prevents duplication of accessor methods. For example, sheep, stained glass
blocks and leather armor all can share the DyeableData holding the color they are dyed in.
Kunci
A Key
is a unique identifier for a single point of data and can be used to directly read or set that point of
data without worrying about data manipulators. It was designed to provide a way of accessing data
similar to direct getter/setter methods. All keys used within Sponge are listed as constants in the
Keys utility class.
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.