Formato de ruta NBT

Quien soy
Alejandra Rangel
@alejandrarangel
Autor y referencias
Esta función es exclusiva de Java Edition. 

An Ruta NBT es una etiqueta descriptiva que se utiliza para especificar una colección de elementos particulares de un árbol de datos NBT. Una ruta tiene la forma general nodo.… .Nodo, donde cada nodo declara qué tipos de subelementos se pueden elegir de una etiqueta anterior.

Contenido

  • 1 nodo
  • 2 Nombre que se escapa
  • 3 Ejemplos
    • 3.1 Camino mixto
    • 3.2 Ejemplo 1
    • 3.3 Ejemplo 2

Nodo

Estos son los siete tipos de nodos disponibles.



La colección de etiquetas comienza con un solo elemento (es decir, la etiqueta raíz) y cambia a lo largo de los nodos de la ruta. Los consumidores de la ruta NBT operan en la colección final de las etiquetas.

Nombre Formato Descripción Resultado de la selección Ejemplo Descripción de ejemplo
Etiqueta de compuesto de raíz {etiqueta}, donde etiqueta es el contenido NBT compuesto y puede estar vacío. Selecciona la etiqueta de inicio solo si coincide con la etiqueta compuesta dada (si se proporciona).
Solo aplicable como primer elemento de la ruta.
La etiqueta de inicio, o nada si falla la coincidencia. {Invisible: 1b} Selecciona la etiqueta raíz si tiene una subetiqueta Invisible con valor 1.
{} Selecciona la etiqueta raíz.
Etiqueta con nombre nombre, donde el nombre puede ser una cadena simple o de escape Selecciona las subetiquetas nombradas name en las etiquetas anteriores. Una colección de etiquetas; no más elementos que la colección de etiquetas anterior. Puede que no sea nada. VillagerData Selecciona la subetiqueta VillagerData.
"Un nombre genial" Selecciona la subetiqueta A cool name.
Etiqueta compuesta con nombre nombre {etiqueta}, donde nombre puede ser una cadena simple o con escape, y etiqueta es el contenido NBT compuesto que puede estar vacío. Selecciona las etiquetas de subcompuestos que coinciden con la etiqueta compuesta dada (si se proporciona) y el nombre nombrado en las etiquetas anteriores. Una colección de etiquetas compuestas; no más elementos que la colección de etiquetas anterior. Puede que no sea nada. VillagerData {profesión: "minecraft: idiota"} Seleccione la etiqueta VillagerData solo si tiene una profesión de subetiqueta con valor minecraft: idiota.
VillagerData {} Selecciona la etiqueta VillagerData si es una etiqueta compuesta.
Elemento de lista con nombre o etiqueta de matriz nombre [índice], donde nombre puede ser una cadena simple o con escape y el índice es un número entero. Selecciona elementos en el índice (o listLength + index si el índice es negativo) de las listas (o matriz) nombradas en las etiquetas anteriores. Una colección de etiquetas; no más elementos que la colección de etiquetas anterior. Puede que no sea nada. Publicar [0] Selecciona la primera etiqueta secundaria en la sublista (o matriz) "Pos".
Inventario [-1] Selecciona la última etiqueta secundaria en la sublista (o matriz) "Inventario".
Todos los elementos de la etiqueta de lista o matriz nombrada nombre Selecciona todos los elementos de las sublistas (o matriz) nombrados name en las etiquetas anteriores. Una colección de etiquetas; puede tener más elementos que la colección de etiquetas anterior. Puede que no sea nada. Efectos activos Seleccione todos los elementos de la subetiqueta "ActiveEffects" de la última etiqueta.
Elementos compuestos de la etiqueta de lista nombrada nombre [{etiqueta}], donde el nombre puede ser una cadena simple o con escape y la etiqueta es el contenido NBT compuesto que puede estar vacío. Selecciona los elementos compuestos que coinciden con la etiqueta compuesta dada (si se proporciona) y en las listas nombradas name en las etiquetas anteriores. Una colección de etiquetas compuestas; puede tener más elementos que la colección de etiquetas anterior. Puede que no sea nada. Inventario [{Count: 25b}] Seleccione los elementos de la etiqueta de inventario que tiene una subetiqueta Count con valor 25.
Foo [{}] Selecciona los elementos de la etiqueta Foo.
Elementos de la sublista (o matriz) de la etiqueta de lista con nombre nombre [índice o en blanco] [índice o en blanco] [índice o en blanco] ...... [índice o etiqueta], donde el nombre puede ser una cadena simple o de escape, el índice es un número entero y la etiqueta es el compuesto NBT contenido que puede estar vacío. Selecciona los elementos secundarios de los elementos secundarios en las listas nombradas name en las etiquetas anteriores. Una colección de etiquetas; puede tener más elementos que la colección de etiquetas anterior. Puede que no sea nada. foo [{}] Seleccione los elementos de las sublistas en la etiqueta foo.
foo.bar [0] [0] .baz Seleccione la etiqueta baz en el primer elemento del primer elemento de la lista de barras en la etiqueta foo.

En el camino, . Los caracteres (punto / punto) separan los nodos. Los nodos se pueden mezclar y combinar, excepto que el nodo raíz con el objeto debe ser el primero en la ruta cuando está presente.



Nombre que se escapa

Al juego de caracteres válido (sin comillas) para una ruta parecen ser todos los caracteres que no son espacios en blanco, siempre que los corchetes y llaves de apertura ([y {) estén cerrados y al final de cada término (es decir, seguidos por nada más que un punto o el final del camino—. o). Dicho esto, el "conjunto de caracteres razonable" para definir una etiqueta de datos incluye todas las letras mayúsculas y minúsculas, números, guiones bajos, puntos y corchetes y corchetes (expresión regular: [a-zA-Z0-9. {}] * )

Se pueden usar cadenas entre comillas, como "Lorem ipsum", si es necesario escapar el nombre de una clave.

Ejemplos

Camino mixto

  • {}: Especifica la etiqueta raíz
  • {foo: 4.0f}: especifica la etiqueta raíz si la subetiqueta "foo" se establece en 4.0f
  • foo: especifica la etiqueta denominada "foo" debajo de la etiqueta raíz
  • foo.bar o foo {}. bar: especifica la subetiqueta de foo denominada "bar".
  • foo.bar [0]: especifica el primer elemento de la lista (o matriz) "bar"
  • foo.bar [-1]: especifica el último elemento de la lista (o matriz) "bar"
  • foo.bar [0]. "A [crazy name]!" - Especifica la subetiqueta llamada "A [crazy name]!" bajo ese primer elemento
  • foo.bar [0]. "¡Un [nombre loco]!". baz: especifica la subetiqueta llamada "baz" debajo de esa etiqueta con el nombre loco
  • foo.bar: especifica todos los elementos de la lista (o matriz) "bar"
  • foo.bar.baz: especifica las subetiquetas llamadas "baz" debajo de todos los elementos de la lista "barra"
  • foo.bar [{baz: 5b}]: especifica todos los elementos de la lista "bar", en la que la etiqueta "baz" se establece en 5b
  • foo {bar: "baz"}: especifica la etiqueta "foo" si su subetiqueta "bar" tiene el valor "baz"
  • foo {bar: "baz"}. bar: especifica la etiqueta "bar" si coincide con el valor "baz"

ejemplo 1

/ data obtiene la entidad @p foo.bar [0]. "¡Un [nombre loco]!". baz


Estos nombres se han elegido arbitrariamente, con fines demostrativos.


  • foo: especifica la subetiqueta denominada "foo" debajo de la etiqueta raíz.
  • foo.bar: especifica el hijo de foo llamado "bar".
  • foo.bar [0]: especifica el primer elemento de la lista "barra"
  • foo.bar [0]. "¡A [nombre loco]!" - Especifica el niño llamado "¡A [nombre loco]!" bajo ese primer elemento
  • foo.bar [0]. "¡Un [nombre loco]!". baz: especifica el hijo llamado "baz" debajo de ese elemento con nombre loco

La estructura del árbol

  • Los datos de la entidad raíz
    •  foo: el elemento "foo"
      •  bar: el elemento "bar"
        • El primer elemento de la lista "barra"
          •  Â¡Un [nombre loco] !: El "¡Un [nombre loco]!" elemento
            •  baz: El elemento "baz"; el elemento de destino de este ejemplo.
        • Otro elemento no relacionado en la "barra" de la lista

ejemplo 2

/ data get block ~ ~ ~ Elementos [1] .tag.pages [3]

Un jugador ha escrito un libro y lo ha colocado dentro de un cofre a sus pies, y trabajará hasta el comando anterior en etapas. Observe el siguiente registro de chat imaginario:

Registro de chat

* Alex salta encima de un cofre. * Alex ejecuta el comando: / data get block ~ ~ ~ 0 55 0 tiene los siguientes datos de bloque: {x: 0, y: 55, z: 0, Items: [{Slot: 0b, id: "minecraft: clock" , Count: 1b}, {Slot: 9b, id: "minecraft: escrito_book", Count: 1b, tag: {pages: ['{"text": "' twas brillig and the slithy toves"} ',' {" text ":" Giraba y gimoteaba en el wabe. "} ',' {" text ":" Todos los mimsy eran los borogoves, "} ',' {" text ":" Y los mome raths superaron. "} '] , autor: "LewisCarroll", título: "Jabberwocky"}}], id: "minecraft: cofre"} * Alex solo quiere ver el inventario del cofre. Podrían buscar en la oficial de Minecraft cuál es el nombre de esa etiqueta, pero debido a que entienden cómo leer el formato NBT, deciden averiguarlo a partir de la salida del último comando. * Alex ejecuta el comando: / data get block ~ ~ ~ Los elementos 0 55 0 tienen los siguientes datos de bloque: {x: 0, y: 55, z: 0, Elementos: [{Slot: 0b, id: "minecraft: clock ", Count: 1b}, {Slot: 9b, id:" minecraft: escrito_book ", Count: 1b, tag: {pages: ['{" text ":"' twas brillig and the slithy toves "} ',' { "text": "Giró y gimoteó en el wabe."} ',' {"text": "Todos los mimsy fueron los borogoves,"} ',' {"text": "Y los momentos superaron."} ' ], autor: "LewisCarroll", título: "Jabberwocky"}}], id: "minecraft: cofre"} * Alex quiere reducir esto al segundo elemento en el cofre. Contando desde 0, el segundo elemento sería el elemento 1. * Alex ejecuta el comando: / data get block ~ ~ ~ Items [1] 0 55 0 tiene los siguientes datos de bloque: {x: 0, y: 55, z: 0, Items: [{Slot: 0b, id: " minecraft: clock ", Count: 1b}, {Slot: 9b, id:" minecraft: escrito_book ", Count: 1b, tag: {pages: ['{" text ":"' twas brillig and the slithy toves "} ' , '{"text": "Giró y gimoteó en el wabe."}', '{"text": "Todos los mimsy fueron los borogoves,"}', '{"text": "Y los momentos superaron. "} '], autor:" LewisCarroll ", título:" Jabberwocky "}}], id:" minecraft: chest "} * Alex solo quiere la etiqueta" etiqueta ". * Alex ejecuta el comando: / data get block ~ ~ ~ Items [1] .tag 0 55 0 tiene los siguientes datos de bloque: {x: 0, y: 55, z: 0, Items: [{Slot: 0b, id : "minecraft: clock", Count: 1b}, {Slot: 9b, id: "minecraft: escrito_book", Count: 1b, tag: {pages: ['{"text": "' twas brillig and the slithy toves" } ',' {"text": "Giró y gimoteó en el wabe."} ',' {"text": "Todos los mimsy fueron los borogoves,"} ',' {"text": "Y los momentos outgrabe. "} '], autor:" LewisCarroll ", título:" Jabberwocky "}}], id:" minecraft: chest "} * Alex solo quiere la etiqueta" páginas ". * Alex ejecuta el comando: / data get block ~ ~ ~ Items [1] .tag.pages 0 55 0 tiene los siguientes datos de bloque: {x: 0, y: 55, z: 0, Items: [{Slot: 0b , id: "minecraft: clock", Count: 1b}, {Slot: 9b, id: "minecraft: escrito_book", Count: 1b, tag: {pages: ['{"text": "' twas brillig and the slithy toves "} ',' {" text ":" Giraba y giraba en el wabe. "} ',' {" text ":" Todos los mimsy eran los borogoves, "} ',' {" text ":" Y el mome raths outgrabe. "} '], autor:" LewisCarroll ", título:" Jabberwocky "}}], id:" minecraft: cofre "} * Alex solo quiere el cuarto elemento de esta lista. * Alex ejecuta el comando: / data get block ~ ~ ~ Items [1] .tag.pages [3] 0 55 0 tiene los siguientes datos de bloque: {x: 0, y: 55, z: 0, Items: [{ Slot: 0b, id: "minecraft: clock", Count: 1b}, {Slot: 9b, id: "minecraft: escrito_book", Count: 1b, tag: {pages: ['{"text": "' twas brillig and the slithy toves "} ',' {" text ":" Giró y gimoteó en el wabe. "} ',' {" text ":" Todos los mimsy fueron los borogoves, "} ',' {" text ": "Y los momentos superan."} '], Autor: "LewisCarroll", título: "Jabberwocky"}}], id: "minecraft: cofre"} * Alex tiene lo que necesitan ahora y usa los caminos que han reunido. para editar el libro desde fuera del cofre.




Añade un comentario de Formato de ruta NBT
¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.