/data

De Minecraft Wiki
Ir para navegação Ir para pesquisar
Esse recurso é exclusivo para Edição Java. 

Permite que o usuário obtenha, mescle, modifique e remova dados NBT de um bloco-entidade, entidade ou armazenamento de comandos NBT.

Sintaxe[editar | editar código-fonte]

Um gráfico que descreve a sintaxe deste comando.

Há quatro instruções para /data (get, merge, modify, remove), e os destinos/fontes referenciados por cada comando de instrução podem ser block <targetPos>, entity <target> ou storage <target>.

/data ...
... get
... (block <targetPos>|entity <target>|storage <target>) [<path>] [<scale>]
Ler todos os dados NBT ou a subseção dos dados NBT da posição do bloco ou entidade de destino para o executor com destaque de sintaxe, dimensionado por <scale>, se especificado.
... merge
... (block <targetPos>|entity <target>|storage <target>) <nbt>
Mescla os dados NBT da posição do bloco de destino ou entidade com os dados <nbt> especificados.
... modify (block <targetPos>|entity <target>|storage <target>) <targetPath> ...
... append from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... append string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... append value <value>
Anexe os dados de origem ou os dados de valor direto ao fim da lista ou matriz apontada.
... insert <index> from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... insert <index> string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... insert <index> value <value>
Insire os dados de origem ou dados de valor direto na lista ou matriz apontada como elemento <index> e, em seguida, desloca os elementos mais altos uma posição acima.
... merge from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... merge string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... merge value <value>
Mescla os dados de origem ou os dados de valor direto no objeto apontado.
... prepend from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... prepend string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... prepend value <value>
Adiciona os dados de origem ou os dados de valor direto ao início da lista ou matriz apontada.
... set from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... set string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... set value <value>
Define a marcação especificada por <targetPath> para os dados de origem ou dados de valor direto.
... remove
... (block <targetPos>|entity <target>|storage <target>) <path>
Remove dados NBT em <path> da posição do bloco ou entidade destino. Dados NBT do jogador não podem ser removidos.


Sintaxe exibida de várias maneiras

Argumentos[editar | editar código-fonte]

<targetPos>: block_pos

A posição do bloco-entidade destino cujo NBT deve ser operado.
Isso deve ser um bloco de posição composto de <x>, <y> e <z>, cada um deles deve ser um número inteiro ou notação de til e circunflexo.

<target>: entity (no modo entity <target>)

Especifica uma entidade cujo NBT deve ser operado.
Deve ser um nome de jogador, seletores de destino ou o UUID.  E o seletor de destino deve ser de tipo único.

<target>: resource_location (no modo storage <target>)

Especifica um armazenamento a ser operado.
Deve ser uma localização de recurso.

<path>: nbt_path

Especifica o NBT a ser recuperado ou removido.
Deve ser um caminho NBT.

<scale>: double

Escala para o valor de saída do comando.
Deve ser um Número de ponto flutuante com dupla precisão (de -(2-2-52)×21023 (≈-1,8×10308) a (2-2-52)×21023 (≈1,8×10308) ).

<nbt>: nbt_compound_tag

Especifica uma marcação composta a ser mesclada em algum lugar.
Deve ser um composto NBT no formato SNBT.

<targetPath>: nbt_path

Especifica o NBT de destino a ser modificado.
Deve ser um caminho NBT.

<index>: integer

Especifica o index de um item dentro de uma lista.
Deve ser um Número inteiro de 32 bits (de -2147483648 (-231) a 2147483647 (231-1) ).

<sourcePos>: block_pos

A posição do bloco-entidade alvo cujo NBT deve ser usado.
Isso deve ser um bloco de posição composto de <x>, <y> e <z>, cada um deles deve ser um número inteiro ou notação de til e circunflexo.

<source>: entity (no modo entity <source>)

Especifica uma entidade cujo NBT deve ser usado por modify.
Deve ser um nome de jogador, seletores de destino ou o UUID.  E o seletor de destino deve ser de tipo único.

<source>: resource_location (no modo storage <source>)

Especifica um armazenamento a ser usado por modify.
Deve ser uma localização de recurso.

<sourcePath>: nbt_path

Especifica o NBT de origem a ser usado por modify.
Deve ser um caminho NBT.

<start>: integer

Especifica o index do primeiro caractere a ser incluído no início da string. Valores negativos são interpretados como index contado a partir do fim da string.
Deve ser um Número inteiro de 32 bits (de -2147483648 (-231) a 2147483647 (231-1) ).

<end>: integer

Especifica o index do primeiro caractere a ser excluído no final da string. Valores negativos são interpretados como index contado a partir do final da string.
Deve ser um Número inteiro de 32 bits (de -2147483648 (-231) a 2147483647 (231-1) ).

<value>: nbt_tag

Valor usado na modificação do NBT destino.
Deve ser uma marcação NBT de qualquer tipo no formato SNBT.

Resultado[editar | editar código-fonte]

ComandoCircunstânciaEdição Java
QualquerO comando está incompleto ou algum argumento não foi especificado corretamente.Não analisável
<targetPos> está descarregado ou fora do mundo. Falha
O bloco em <targetPos> não é um bloco-entidade.
<target> (no modo entity <target>) falha ao resolver para uma única entidade (o jogador nomeado deve estar online).
/data get ...Mais de uma marcação foi obtida.
/data get ... <path>Nenhuma marcação existe em <path>.
/data get ... <path> <scale>A marcação obtida não é uma marcação numérica.
/data merge ...
/data remove ...
/data modify ...
Nada foi alterado.
Tenta editar os dados de um jogador.
/data remove ...
/data modify ... set ...
<path> seleciona a marcação composta raiz.
/data modify ... (from|string) block ...<sourcePos> está descarregado ou fora do mundo.
O bloco em <sourcePos> não é um bloco-entidade.
/data modify ... (from|string) entity ...<source> falha na resolução para uma única entidade (o jogador nomeado deve estar online).
/data modify ... (from|string) ... <sourcePath>Nenhuma marcação existe em <sourcePath>.
/data modify ... string ... <sourcePath> <start> <end>Nenhuma das marcações selecionadas por <sourcePath> é uma marcação de string ou numérica (será convertida em string).
<start> ou <end> está fora do index válido de qualquer uma das strings de origem.
Para qualquer uma das strings de origem, o caractere indexado por <start> está atrás daquele indexado por <end>.
/data modify ... append ...
/data modify ... insert <index> ...
/data modify ... prepend ...
Nenhuma das marcações de destino é uma marcação de lista ou matriz.
Nem todas as marcações de origem são do tipo apropriado para todas as listas ou matrizes de destino.
/data modify ... insert <index> ...O index é inválido para todas as listas ou matrizes de destino.
/data modify ... merge ...Nenhuma das marcações de destino é uma marcação composta.
Nenhuma das marcações de origem é uma marcação composta.
QualquerDe outra formaBem-sucedido

Saída[editar | editar código-fonte]

ComandoEdiçãoSituaçãoContagem de sucesso/execute store succeess .../execute store result ...
qualquerEdição JavaEm caso de falha000
/data get ...Em caso de sucesso111
/data get ... <path>Uma marcação numérica é obtida11O valor obtido após arredondamento para baixo[1]
Uma marcação de lista ou matriz é obtida11O número de elementos nesta lista ou matriz
Uma marcação de string é obtida11O comprimento da string
Uma marcação composta é obtida11O número de marcações que são filhos diretos desse composto
/data get ... <path> <scale>Em caso de sucesso11O valor obtido multiplicado por <scale> e arredondado para baixo[2]
/data merge ...Em caso de sucesso111
/data remove ...Em caso de sucesso111
/data modify ... append ...
/data modify ... insert <index> ...
/data modify ... prepend ...
Em caso de sucesso11O número de listas ou matrizes nas quais novos elementos são adicionados
/data modify ... set ...Em caso de sucesso11O número de marcações de destino que foram modificadas com sucesso
/data modify ... merge ...Em caso de sucesso11O número de marcações de compostos de destino que foram modificadas com sucesso

Exemplos[editar | editar código-fonte]

  • Para obter o nível de saturação do jogador atual:
    /data get entity @s foodSaturationLevel
  • Para fazer com que o item mais próximo dentro de 10 blocos não possa ser pego pelos jogadores:
    /data modify entity @e[type=item,distance=..10,limit=1,sort=nearest] PickupDelay set value -1
  • Para obter a posição Y de um item aleatório:
    /data get entity @e[type=item,limit=1,sort=random] Pos[1]
  • Para obter o ID do item no primeiro espaço da barra rápida do jogador mais próximo:
    /data get entity @p Inventory[{Slot:0b}].id
  • Para definir o atributo de defesa do golfinho mais próximo das coordenadas (0, 64, 0) para 20:
    /data modify entity @e[x=0,y=64,z=0,type=dolphin,limit=1] Attributes[{Name:"minecraft:generic.armor"}].Base set value 20
  • Para transformar o primeiro item em um baú localizado nas coordenadas (1, 64, 1) em um bloco de diamante, mantendo todos os dados NBT:
    /data modify block 1 64 1 Items[0].id set value "minecraft:diamond_block"
  • Para fazer com que o zumbi mais próximo tenha 80% de chance de largar os itens em sua mão secundária quando morrer, e nunca largar os itens na mão principal:
    /data merge entity @e[type=zombie,limit=1,sort=nearest] {HandDropChances: [0f, 0.8f]}
  • Para fazer com que o zumbi mais próximo tenha 80% de chance de largar os itens em sua mão secundária quando morrer, sem afetar a chance da mão principal:
    /data modify entity @e[type=zombie,limit=1,sort=nearest] HandDropChances[1] set value 0.8f

Comprimento de lista, matriz e string[editar | editar código-fonte]

Com /data get, é possível obter o comprimento de listas ou matrizes e o número de caracteres em strings, já que seu valor de retorno é o comprimento da string, lista ou matrizes sendo referenciados. Esse valor pode então ser armazenado usando /execute store, se necessário.

Exemplo de lista

Suponha que uma lista seja armazenada usando o seguinte comando:

/data merge storage wiki:example {List:[2,5,8,9,6,10]}

Então, executar o comando a seguir retorna 6, o comprimento da lista:

/data get storage wiki:example List
Exemplo de string

Suponha que uma string seja armazenada usando o seguinte comando:

/data merge storage wiki:example {String:"Example string with a character count of 43"}

Em seguida, executar o comando a seguir retorna 43, o comprimento da string:

/data get storage wiki:example String

Histórico[editar | editar código-fonte]

[ocultar]Edição Java
1.1317w45b/data foi adicionado.
17w47aOs comandos /blockdata e /entitydata foram removidos, pois seus recursos foram mesclados em /data.
18w03aUsar /data get (block|entity|storage) com um caminho agora funciona em valores não numéricos.
1.1418w43a/data modify (block|entity|storage) foi adicionado.
1.1519w38astorage <localização de recurso> foi adicionado como fonte ou destino.
1.19.423w03aA fonte string foi adicionada.
1.20Pre-release 1Agora <start> ou <end> na fonte string aceitam limites negativos, que são interpretados como index contado a partir do final da string.
Pre-release 2Agora, <start> ou <end> inválidos na fonte string resultam em uma falha de comando em vez de um erro não processado.[3]

Referências[editar | editar código-fonte]

  1. double n = (double)value;
    int output = n < (int)n ? (int)n - 1 :(int)n;
    Veja também MC-259032
  2. double n = (double)value * scale;
    int output = n < (int)n ? (int)n - 1 :(int)n;
    Veja também MC-259032
  3. MC-260602 — /data modify from string index falhando não retorna 0 para /execute store success. — resolvido como "Corrigido".

Navegação[editar | editar código-fonte]