Sıralanan Veri

Uyarı

These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!

While an DataManipulator#Immutable is a good way to store data while the server is running, it will not persist over a restart. However, every DataManipulator implements the DataSerializable interface and thus can be serialized to a DataContainer and deserialized by a DataBuilder.

Ön dönüşüm veri yönlendiricisinden genel yapıya çevrildikten sonra veri deposu daha ileriye yönlendirebilir.

Veri Deposu ve Veri Görüntüsü

Bir :javadoc: Veri Görüntüsü herhangi bir veri çeşidini depolamak için genel amaçlı bir yapıdır. Veri görüntüsü bir değer olarak çoklu değerleri destekleyebilir ve hatta iç içe geçirilebilir, böylelikle sıralama yapısı için izin verilir. Her değer bir veri sorgusu tarafında :javadoc: tanımlanır. Veri deposu veri görüntüsünün bir kök dizinidir.

Veri Boyutu

DataFormat allows you to store a DataContainer in HOCON, JSON or NBT format. You can also recreate DataContainers using DataFormats. Sponge provided DataFormat implementations are available in the DataFormats class.

Örneğin, bize izin verilen bir JSON veri deposu uygulamasını oluşturmak için veri biçimi :javadoc: kullanabiliriz. JSON çıktıları veri tabanına kolaylıkla yüklenebilir. Daha sonra gerektiğinde bu JSON’dan orijinal veri deposunu tekrar oluşturmak için aynı veri deposunu kullanabiliriz.

Kod örnekleri için çıktılar

import org.spongepowered.api.Sponge;
import org.spongepowered.api.data.DataContainer;
import org.spongepowered.api.data.persistence.DataFormats;
import org.spongepowered.api.item.inventory.ItemStackSnapshot;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Optional;

Kod örneği: yığılan madde belleğini JSON biçimine sıralamak

String json = DataFormats.JSON.write(itemStack.toContainer());

Kod örneği: yığılan madde belleğini JSON biçiminden seriden paralele çevirme

DataContainer container = DataFormats.JSON.read(json);

Kod örneği: yığılan madde belleğini kullanılan NBT dosyasına yazmak

public void writeItemStackSnapshotToFile(ItemStackSnapshot itemStackSnapshot, Path path) {
    DataContainer dataContainer = itemStackSnapshot.toContainer();
    try (OutputStream outputStream = Files.newOutputStream(path)) {
        DataFormats.NBT.writeTo(outputStream, dataContainer);
    } catch (IOException e) {
        // For the purposes of this example, we just print the error to the console. However,
        // as this exception indicates the file didn't save, you should handle this in a way
        // more suitable for your plugin.
        e.printStackTrace();
    }
}

Kod örneği: yığılan madde belleğini kullanılan NBT dosyasından okumak

public Optional<ItemStackSnapshot> readItemStackSnapshotFromFile(Path path) {
    try (InputStream inputStream = Files.newInputStream(path)) {
        DataContainer dataContainer = DataFormats.NBT.readFrom(inputStream);
        return Sponge.getDataManager().deserialize(ItemStackSnapshot.class, dataContainer);
    } catch (IOException e) {
        e.printStackTrace();
    }

    return Optional.empty();
}