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 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.

CatalogTypes

Catalog Types are groups of values that can be used in certain context. Famous examples of these types are BlockTypes, EntityTypes and ItemTypes.

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 harvesting abilities on tools (represented as HarvestingProperty or the damage absorption of an equipable armor item (represented as DamageAbsorptionProperty).

DataManipulator

Bir data manipulator, kendini taşıyan belirli bir parçayı açıklayan bağlı verilerin parçalarını simgeler. Hem mevcut hem de azami yaşam puanını içeren HealthData, buna örnektir. Eğer veri taşıyıcısı ``HealthData``ya sahipse, bu onun bitebilecek veya yenilenebilecek bir yaşam puanına sahip olduğunu ve yaşam puanı biterse öleceğini gösterir. Bu, bu tarz parçaların API üzerinde tekrar kullanımını sağlayarak ulaşım metodlarından ötürü kod tekrarının oluşmasına engel olur. Koyunun, renkli cam block’larının ve deri zırhın renklerini belirlemek için :javadoc:`DyeableData`yı ortak kullanması buna örnektir.

Anahtar

Bir “Anahtar”, tek bir veri noktası için benzersiz bir tanımlayıcıdır ve veri manipülatörleri hakkında, doğrudan bu veri noktasını okumak veya ayarlamak için endişelenmeden kullanılabilir. Doğrudan alıcı / ayarlayıcı yöntemlerine benzer şekilde verilere erişmek için uygun bir yol sağlamak üzere tasarlanmıştır. Sponge içerisinde kullanılan tüm anahtarlar :javadoc: Keys yardımcı program sınıfında sabitler olarak listelenir.

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.