Veri API’sı

Birleştirilmiş Veri API’sı, verilere erişmenin ve bunları değiştirmenin tutarlı bir yolunu sağlamayı amaçlamaktadır. ‘Veri’ bu bağlamda istemci ve sunucu arasında sürekli olarak senkronize edilen tüm veriler anlamına gelir. Veri sunucu tarafında değiştirilebilir ve bu değişikliklere bağlı olarak istemcilere senkronize edilir. Bu, diğerleri arasında, bir işaret, atın görünüşü veya canlı varlığın sağlığı hakkındaki metni de içerir.

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.

Tüyo

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.

Konseptler

API dokümanlarına ilk bakışta, veri API’sı sizi bir çok arabirim ve paketle karmaşık hale sokmakla tehdit ediyor. Ancak, çoğu arabirimde olduğu gibi sadece veri API’sini kullanmak için yalnızca belirli veri manipülatörleri bulunur, ki bunların çoğunu kullanmanız gerekmez.

DataHolder

Bir veri tutucu yalnızca veriyi tutan bir şeydir. Veri almak ve geri getirmek için yöntemler sağlar. Arayüzün kendisi tutulan verinin türünü tamamen bilmemektedir. Yalnızca uygulamalar bu bilgilere sahip olacağından, bir :javadoc: DataHolder’de bulunmayan verileri sağlamak ya da kullanamayacağı verileri kabul etmesi mümkündür. Bu gibi durumlarda yöntemlerin dönüş değerleri, verilerin mevcut olmadığını (”` Optional.empty () `` ile) veya kabul edilmediğini (:doc: DataTransactionResult <transactions> ile) bildirilmesini sağlayacaktır.

Özellik

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.

Anahtar

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.

Değer

Data API içinde, “Anahtar” ile belirtilen bir değer, bir kapsayıcı nesnesinde kodlanır. Bu dokümantasyon, gerçek değer ile karıştırılmamak için “anahtarlı değer” olarak adlandırılır. Anahtarlı bir değer, gerçek veri değerini (varsa), varsayılan değeri (doğrudan değer yoksa kullanılacaktır) ve değerin tanımlandığı Anahtar’ı kapsar.

İçindekiler