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