ID de espaço de nome

De Minecraft Wiki
(Redirecionado de ID)
Ir para: navegação, pesquisa

Identificadores com espaço de nomes[1] (também conhecidos como sequência de caracteres com espaço de nomes,[1] localizações de recursos,[2] ou identificadores de recursos[3]) é uma maneira de declarar e identificar objetos de jogo internos e definidos pelo usuário no Minecraft sem potencial ambiguidade ou conflitos.

Usos[editar | editar código-fonte]

Os identificadores com espaço de nomes são usados como sequências de caracteres (ou strings) para referenciar blocos, items, tipos de entidades, receitas, funções, progressos, tags, e vários outros objetos no Minecraft vanilla. Curiosamente, os estados dos blocos não aparecem no espaço de nomes.

Um identificador com espaço de nomes tem o formato de namespace:name, onde apenas certos caracteres podem ser utilizados.

Esta é uma lista de todos os lugares que possuem IDs com espaço de nomes:

Registros incorporados
Conteúdo do pacote de dados‌[Edição Java apenas]
  • Arquivos de estrutura
  • Funções
  • Progressos
  • Receitas
  • Tabelas de itens
  • Tags de tipo/Função de Bloco/Fluido/Item/Entidade
Conteúdos adicionais‌[Edição Bedrock apenas]
  • Funções
  • Tabelas de itens
Conteúdo do pacote de recursos‌[Edição Java apenas]
  • Arquivos de estado de bloco
  • Modelos
  • Texturas
  • Sons
Outros conteúdos customizáveis‌[Edição Java apenas]
  • Armazenamento de comandos
  • Barras de chefes (criaturas)
Outros conteúdos não personalizáveis (sem mods)
  • Condições de itens
  • Funções de itens
  • Tipos de argumento de comando
  • Tipos de itens

Caracteres válidos[editar | editar código-fonte]

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

O espaço de nomes e o nome de um ID devem conter apenas os seguintes símbolos:

  • 0123456789 Números
  • abcdefghijklmnopqrstuvwxyz Letras minúsculas
  • _ Sublinhado
  • - Hífen / menos

Os seguintes caracteres são inválidos para o namespace, mas aceitáveis no nome:

  • / Barra para a frente
    • Separador de diretório
  • . Ponto
    • Separador de sufixo de arquivo

A convenção de nomenclatura preferida para o namespace ou nome é letra_minuscula_com_sublinhado.

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

O espaço de nomes e o nome de um ID podem conter todos os símbolos, com exceção de barras e dois pontos..

Os seguintes caracteres são inválidos no espaço de nomes, mas aceitáveis no nome de tabelas de itens e funções.

  • / Barra para trás
    • Separador de diretório

A convenção de nomenclatura preferida para o espaço de nomes ou nome é letras_minusculas_com_sublinhado.

Conversão para sequência de caracteres[editar | editar código-fonte]

Um ID de espaço de nomes pode ser convertido em uma sequência de caracteres (ou string) anexando seu espaço de nomes com : (dois pontos) e seu nome.

Exemplos:

Espaço de nomes Nome Reprodução em string
minecraft diamond minecraft:diamond
foo bar.baz foo:bar.baz
minecraftwiki commands/minecraft_wiki minecraftwiki:commands/minecraft_wiki

Conversão a partir de uma sequências de caracteres[editar | editar código-fonte]

Diferentemente dos IDs com espaços de nomes que podem sempre ser convertidos para sequências de caracteres (strings), algumas sequências (strings) não podem ser convertidos em IDs com espaços de nomes.

Algumas restrições:

  • A sequência pode ter no máximo um caractere : (dois pontos)
  • O restante da sequência deve atender ao requisito de caracteres válidos
  • Se : estiver presente, a parta da sequência antes de : (o espaço de nomes) não deve conter / ou .

Quando : está presente, a parte da sequência anterior a : se torna o espaço de nomes e o posterior a : torna-se o nome.

Quando : está ausente, o minecraft torna-se o espaço de nomes e a sequência de caracteres inteira torna-se o nome.‌[Edição Java apenas]

É recomendável sempre incluir um : no formato de sequência dos identificadores de espaço de nomes.

Exemplos
Sequência Espaço de nomes resolvido Nome resolvido Que o jogo converte novamente em
bar:code bar code bar:code
minecraft:zombie minecraft zombie minecraft:zombie
diamond minecraft[Edição Java apenas]
Nenhum‌[Edição Bedrock apenas]
diamond minecraft:diamond[Edição Java apenas]
diamond[Edição Bedrock apenas]
foo/bar:coal Caractere inválido /
minecraft/villager minecraft[Edição Java apenas]
Nenhum‌[Edição Bedrock apenas]
minecraft/villager minecraft:minecraft/villager[Edição Java apenas]
minecraft/villager[Edição Bedrock apenas]
mypack_recipe minecraft[Edição Java apenas]
Nenhum‌[Edição Bedrock apenas]
mypack_recipe minecraft:mypack_recipe[Edição Java apenas]
mypack_recipe[Edição Bedrock apenas]
mymap:schrödingers_var mymap Caractere inválido ö[Edição Java apenas]
schrödingers_var[Edição Bedrock apenas]
mymap:schrödingers_var[Edição Bedrock apenas]
custom_pack:Capital custom_pack Caractere inválido C[Edição Java apenas]
Capital[Edição Bedrock apenas]
custom_pack:Capital[Edição Bedrock apenas]

Localizando conteúdo em pacotes‌[Edição Java apenas][editar | editar código-fonte]

Como os objetos dos pacote de recursos e pacote de dados são arquivos, o ID de espaço de nomes também pode ser usado para encontrar arquivos correspondentes que declararam objetos do ID.

Embora os locais variem por tipo de objeto e o tipo de pacote ao qual o tipo de objeto pertence, existe um padrão a seguir. Em geral, a localização está na forma pack_type/namespace/object_type/name.suffix, onde todos os símbolos / (barra para frente) (pode fazer parte de object_type ou name) é substituído pelo separador de diretório dependente do sistema operacional.

Nota: Certos elementos no pacote de recursos não é necessariamente suportado por um objeto com ID de espaço de nomes, como as texturas da interface do usuário (GUI).

Dado o tipo de conteúdo que desejamos localizar, podemos encontrar os correspondentes pack_type, object_type, e suffix. Em seguida, podemos substituir e descobrir o local final do arquivo do conteúdo.

Espaço de Nomes[editar | editar código-fonte]

Dinnerbone-twitter.png

Este não é um conceito novo, mas pensei em reiterar o que é um "espaço de nomes". A maioria das coisas no jogo tem um espaço de nomes, de modo que, se adicionarmos something e um mod (ou mapa, o que for) something, eles serão dois somethings diferentes. Sempre que você é solicitado a nomear algo, por exemplo, uma tabela de itens, é esperado que você também forneça de qual espaço de nomes este item é fornecido. Se você não especificar o espaço de nomes, usaremos o padrão minecraft. Isto significa que something e minecraft:something são a mesma coisa.

Dinnerbone sobre Twitter sobre espaços de nomes[4]

Um espaço de nomes é um domínio para conteúdos. é para evitar possíveis conflitos de conteúdo ou substituições não intencionais de objetos com um mesmo nome.

Por exemplo, dois pacotes de dados adicionam dois mecanismos de minijogo ao Minecraft; ambos têm uma função chamada start. Sem espaços de nomes, estas duas funções iriam conflitar e os minijogos seriam quebrados. Quando eles têm espaços de nomes diferentes de minijogo_um e minijogo_dois, as funções se tornam minijogo_um:start E minijogo_dois:start, que não conflitam mais.

Espaço de Nomes personalizado[editar | editar código-fonte]

O espaço de nomes deve ser distinto para diferentes projetos ou criações de conteúdo (por exemplo, um pacote de dados, um pacote de recursos, um mod, pacotes de dados / recursos de suporte para um mapa personalizado, etc.)

Para evitar possíveis conflitos, o espaço de nomes deve ser o mais particular possível.

  • Evite sopas de alfabeto. Por exemplo, um projeto chamado "nave nuclear" não deve usar o espaço de nomes nc, pois é muito ambíguo.
  • Evite palavras muito vagas. battle_royale também não seria muito informativo, mas player_name_battle_royale seria muito melhor.

Em ambos os casos, esses espaços de nomes mal escolhidos reduzem a exposição de um projeto e traz dificuldade para depuração quando há várias criações de conteúdo aplicadas ao jogo.

Espaço de nomes minecraft[editar | editar código-fonte]

O Minecraft reserva o espaço de nomes minecraft; quando um espaço de nomes não for especificado, um identificador de espaço de nomes irá retornar a minecraft[Edição Java apenas]. Como resultado, o espaço de nomes deve ser usado apenas pelos criadores de conteúdo quando este último necessitar sobrescrever ou modificar os dados existentes do Minecraft, como adiciona uma função à tag de função minecraft:load.

Outros espaços de nomes internos[editar | editar código-fonte]

O pacote de recursos padrão do Minecraft declara arquivos de idioma direcionado aos Realms no espaço de nomes realms (localizado em assets/realms/lang/<language-code>.json) e arquivos de linguagem relacionados ao jogo no espaço de nomes minecraft, mesmo que as chaves de tradução não sejam IDs com espaços de nomes. O jar realms por si só também declara seu arquivo de linguagem en_us.json e suas várias texturas no espaço de nomes realms.

Nas IDs dos tipos de argumento de comando, um espaço de nomes brigadier também aparece para os tipos de argumento de comando que são nativos ao Brigadier.[5]

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

Edição Java
??Adicionado IDs com espaço de nomes ao lado do prefixo minecraft.
1.7.2?Os comandos agora aceitam IDs de nome além de IDs numéricos.
1.1116w32aIDs com espaço de nomes agora têm um restrição de caracteres.
Caracteres maiúsculos desabilitados nos IDs com espaços de nomes.
1.1317w47aDepois da planificação, IDs com espaço de nomes são a única forma aceita de ID.
pre4IDs com espaço de nomes agora são usadas para identificar os canais de mensagem do plug-in.[6]
1.14.4pre1O espaço de nomes do realms é adicionado ao pacote de recursos interno do cliente jar.
Edição Pocket Alpha
0.16.0build 1Adicionado comandos, que suportam IDs de sequências de caracteres. No entanto, estas IDs não têm espaços de nomes ainda.
Edição Bedrock
1.12.0beta 1.12.0.2As IDs agora têm espaços de nomes usando o prefixo minecraft para suportar itens adicionados por meio de add-ons.

Ver também[editar | editar código-fonte]

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

Links externos[editar | editar código-fonte]