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.

Diğer yaklaşımlar, arabirimleri ve devralmayı (mevcut ve maksimum sağlık için alıcı ve ayarlayıcı işlevleri sağlayan bir “LivingEntity” arabirimi gibi) kullanarak mevcut verileri tanımlarken, Sponge (varlık, blok vb.) hangi verileri tuttuğunu tamamen bilmemektedir. Bu, doğrudan erişen yöntemlerden daha basit gibi görünse de, çok daha genişletilebilir. Ve aşağıdakilerin eklenmesi sayesinde Key s, basit bir şekilde belirli değerlere erişmek okadar da kolay değil.

Uyarı

Hala yazıldığından dolayı Veri API’ın bir kaç parçası daha eklenmemiştir. Eğer bir API’a ulaşmak istediğiniz taktirde beklemediğiniz halde boş bir Optional alıyorsanız, Implementation Tracker’a belirtin, #spongedev IRC kanalında ya da `Forumlar <https://forums.spongepowered.org>`da ihtiyacınız olan verinin hazır olup olmadığını sorun.

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

Bir mülk de veridir fakat sunucu ve istemciler arasında senkronize edilmez. Bu nedenle, yalnızca istemci ve sunucu üzerinde bulunan modifikasyonlarla değiştirilebilir. Sponge, istemci tarafında bir karşılığa ihtiyaç duymadığı için, özellikler değiştirilebilir değildir. Özelliklere örnek olarak aletler üzerindeki hasat teknikleri (:javadoc: ‘HarvestingProperty’ olarak gösterilir ya da donatılabilir bir zırh öğesinin hasar görmesi (:javadoc: ‘DamageAbsorptionProperty` olarak gösterilir).

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.