Saltar al contenido principal

Objetos de Tag

Aquí algunas classes útiles para manejar objetos NBT utilizando métodos simples.

TagBase​

Es el class principal para manejar cualquier tipo de objeto NBT.

Crear​

Con el class TagBase puede crear objetos NBT con cualquier tipo de objeto (normal de java), por defecto solo tiene soporte para los objetos compatibles, Boolean guardado como Byte y UUID guardado como String.

// Este método NO es compatible con Map o List
Object nbtObject = TagBase.newTag("Hello");

// Este método SI es compatible con Map, List y cualquier objeto deserializable utilizando Gson
RtagMirror mirror = ...;
Object nbtObject = TagBase.newTag(mirror, Map.of("greeting", "Hello"));

// Copiar el objeto NBT
Object nbtCopy = TagBase.clone(nbtObject);

Obtener valores​

El class TagBase tiene diferentes métodos para obtener el equivalente en un objeto de Java desde cualquier objeto NBT, el Boolean es obtenido como Byte y el UUID es obtenido como String o int[].

// Objeto NBT
Object nbtObject = ...;

// Obtener el ID que representa el tipo de NBT
byte type = TagBase.getTypeId(nbtObject);

// Obtener el equivalente en un objeto de Java
// Este método NO es compatible con Map o List
Object value = TagBase.getValue(nbtObject);

// Obtener el equivalente en un objeto de Java
// Este método SI es compatible con Map o List, pero
// solo proveé conversión con objetos serializables si
// la instancia de RtagMirror lo permite
RtagMirror mirror = ...;
Object value = TagBase.getValue(mirror, nbtObject);

TagList​

Es un class más específico para manejar cualquier ListTag como si fuera en java un List<Tag>, tambíén tiene los métodos mencionados anteriormente del class TagBase, pero solo funcionan para las listas de NBT.

// Crear un ListTag
Object nbtList = TagList.newTag();

// Agregar un valor
TagList.add(nbtList, TagBase.newTag("Hello"));

// Obtener el tamaño de la lista
int size = TagList.size(nbtList);

// Obtener un valor desde su posición
Object nbtObject = TagList.get(nbtList, 0); // posición: 0

// Obtener el valor dentro de la instancia de ListTag, una lista de Tag
List<Object> value = TagList.getValue(nbtList);

// Limpiar la lista
TagList.clear(nbtList);

TagCompound​

Es un class más específico para manejar cualquier CompoundTag como si fuera en java un Map<String, Tag>, tambíén tiene los métodos mencionados anteriormente del class TagBase, pero solo funcionan para los CompoundTag.

// Crear un CompoundTag
Object nbtCompound = TagCompound.newTag();
// O crear un CompoundTag utilizando un SNBT (también es compatible con json)
Object nbtCompound = TagCompound.newTag("{greeting:\"Hello\",someValue:123}");

// Agregar un valor
TagCompound.set(nbtCompound, "greeting", TagBase.newTag("Hello"));

// Obtener el tamaño del compound
int size = TagCompound.getValue(nbtCompound).size();

// Obtener un valor utilizando su key
Object nbtObject = TagCompound.get(nbtCompound, "greeting");

// Obtener el valor dentro de la instancia de CompoundTag, un Map de Tag
Map<String, Object> value = TagCompound.getValue(nbtCompound);

// Obtener el CompoundTag como si fuera un String en formato Json
String json = TagCompound.getJson(nbtCompound);

// Limpiar el compound
TagCompound.clear(nbtCompound);