Saltar al contenido principal

Tag Stream

Información

Rtag tiene la opción de guardar los NBTTagCompound en diferentes formas:

  • Archivos
  • Base64
  • Bytes
  • Maps (Map<String, Object>)
  • String (En formato SNBT, también compatible con Json)
  • Map legible (Solo para items)

Incluyendo compatibilidad con objetos serializables.

Formatos de serialización compatibles

Cualquier serialización que haya convertido un objeto en un array de bytes (probablemente guardado en Base64) es compatible si está hecha con los siguientes métodos:

  1. Usando un BukkitObjectInputStream para guardar los objetos como el tipo requerido o como byte[].
  2. Usando el class NBTCompressedStreamTools para guardar los objetos como NBTTagCompound, NBTTagList o NBTTagByteArray en bytes.
  3. Objetos NBT guardados con el formato GZIP.
  4. Objetos NBT guardados dentro de otro objeto NBT (como una lista de nbt o un array de bytes nbt).

TagCompound Data

El class TagCompound incluido en Rtag contiene una forma fácil para convertir y obtener cualquier NBTTagCompound desde Archivo, Base64, Bytes, Map y String.

// NBTTagCompound desde cualquer parte
Object compound = ...;

// Convertirlo en un archivo
File file TStream.COMPOUND.toFile(compound, new File("archivo.nbt"));

// Obtener el compound desde un archivo
Object tagCompound = TStream.COMPOUND.fromFile(file);

ItemTagStream

Rtag incluye compatibilidad para convertir los ItemStack en archivos, Base64, Bytes, Map, String y Map legible, esto es realmente útil si quieres guardar items en bases de datos.

info

El formato de "map legible" convierte el nombre y lore del item en Strings colorizados, envés del formato de componente de chat introducido para el NBT de los items en Minecraft 1.13, es bastante útil si quieres guardar items en archivos y hacerlos editables por el usuario sin necesidad de entender componentes de chat.

ItemStack item = ...;

// Convertirlo en un archivo
File file = ItemTagStream.INSTANCE.toFile(item, new File("archivo.nbt"));

// Obtener el item desde un archivo
ItemStack sameItem = ItemTagStream.INSTANCE.fromFile(file);

ItemTagStream incluye compatibilidad con múltiples versiones, puedes convertir cualquier item para luego obtenerlo en cualquier versión. Materiales, encantamientos, pociones... etc, todo será convertido! esto es algo que ni siquiera Bukkit tiene ya que es excluyente con las versiones viejas.

También detecta items serializados por Bukkit o Paper que agregan la versión de los datos mediante el tag DataVersion or v y de esta manera aplicar la conversión.

info

En la instancia por defecto de ItemTagStream, su conversión de ítems entre versiones es únicamente compatible con Bukkit.

Si tu servidor tiene Forge se sugiere crear tu propia instancia compatible con Forge.