Início
» 🎮 Esportes eletrônicos
»
Erros de comando no Minecraft na versão 1.21: Corrigindo resultados de execução inesperados
Erros de comando no Minecraft na versão 1.21: Corrigindo resultados de execução inesperados
Erros de comando no Minecraft na versão 1.21: Corrigindo resultados de execução inesperados
Quando um comando no Minecraft Java Edition 1.21 falha, parece não fazer nada ou se comporta de maneira diferente no chat, em um bloco de comando ou em um datapack, depure-o em uma ordem consistente: capture o feedback exato, teste o comando mais curto, verifique seu executor e posição e, em seguida, verifique os seletores, pontuações e arquivos datapack. Esse fluxo de trabalho ajuda a isolar erros comuns de comandos do Minecraft sem precisar alterar várias coisas ao mesmo tempo.
Escopo: Os exemplos abaixo são para a Edição Java. A Edição Bedrock usa comandos e comportamentos de complementos diferentes. As versões de patch do Minecraft 1.21.x e posteriores também podem ser diferentes, portanto, verifique a versão exata do jogo antes de copiar a sintaxe para outro mundo.
Capture o comando e todo o seu feedback antes de editá-lo; o primeiro erro de análise sintática costuma ser a pista útil.
Associe o sintoma à causa provável.
O que você vê
Verifique primeiro
Comando desconhecido ou incompleto
Ortografia, ordem dos argumentos, parênteses, vírgulas e aspas.
Nenhuma entidade encontrada ou nenhuma alteração visível
Filtros do seletor, posição de execução, dimensão e blocos carregados.
Uma condição nunca passa
Se o objetivo e a pontuação do placar existem para o titular selecionado.
Não foi possível encontrar a função.
Estado ativado do pacote de dados, namespace, caminho do arquivo, validade do JSON e saída de recarregamento
Uma função longa termina cedo
Chamadas recursivas, muitos contextos de execução e limites de trabalho de comando
Passo 1: Leia o erro exato e teste um comando.
Copie o comando completo e a mensagem de erro antes de alterar qualquer coisa. Uma mensagem de sintaxe em vermelho geralmente significa que o Minecraft não conseguiu interpretar o comando. Um comando que é interpretado corretamente, mas não retorna nenhum alvo, geralmente apresenta um problema de seletor ou contexto. Um comando executado com sucesso, sem nenhuma alteração aparente no mundo, pode ter sido executado em um alvo, posição ou condição diferente da pretendida.
Na Edição Java, mostre o feedback do chat com /gamerule sendCommandFeedback true`. Se a saída do bloco de comando estiver oculta, habilite-a com ` /gamerule commandBlockOutput true. Essas regras expõem o feedback; elas não habilitam um registrador de comandos detalhado separado. Teste o comando no chat primeiro, quando possível, e depois mova-o para um bloco ou função após o teste funcionar.
Para uma /executecadeia longa, reduza-a a um estágio por vez: confirme o asexecutor, adicione atapenas se a localização for relevante, adicione a condição if`or` unlesse finalize com um runcomando. Na sintaxe Java, run`introduce` introduz o comando a ser executado; não é um comando de nível equivalente que pode ser repetido para adicionar comandos extras.
Teste um seletor de entidades com um alvo próximo antes de adicionar vários filtros ou um intervalo amplo.
Etapa 2: Verifique quem executa o comando e onde.
O contexto de execução é uma causa frequente de resultados inesperados em comandos do Minecraft. ` /execute asset` altera o executor de comandos. ` /execute atset` altera o contexto de posição, rotação e dimensão. Esses subcomandos executam funções diferentes.
Por exemplo, este comando Java verifica se há um zumbi a até oito blocos de cada jogador e, em seguida, é executado saycomo esse jogador:
/execute as @a at @s if entity @e[type=minecraft:zombie,distance=..8,limit=1] run say Zombie nearby
Se um seletor semelhante for executado a partir do console do servidor, sua posição inicial pode não ser a localização de um jogador. Um bloco de comando usa a posição do bloco, e uma função herda o contexto de quem a chamou. Use at @squando o executor atual for uma entidade e a localização dessa entidade for o ponto de referência pretendido. Verifique também a dimensão e se o alvo está em chunks carregados; um seletor de entidade não pode encontrar um alvo indisponível.
As coordenadas relativas e as verificações de entidades próximas dependem da posição e dimensão da execução ativa.
Etapa 3: Reduzir as opções de seleção e comprovar as condições do placar.
Comece com uma entidade conhecida e, em seguida, adicione argumentos de seleção um por um. Um seletor como `<entity>` @e[type=minecraft:zombie,limit=1,sort=nearest]é mais fácil de entender do que um seletor amplo @e. Adicione ` distance<entity>` quando o intervalo for importante e use um seletor específico limitquando apenas uma ou algumas correspondências forem necessárias. Um seletor amplo não é automaticamente um erro, mas cada entidade correspondente pode criar um novo contexto de execução; seleções grandes ou aninhadas podem tornar funções complexas dispendiosas ou atingir os limites de comando.
Para uma condição de pontuação, crie o objetivo uma única vez e atribua um valor conhecido a um jogador de teste antes de adicionar a condição a uma cadeia maior:
/scoreboard objectives add debug dummyCria o objetivo. Se ele já existe, continue usando-o em vez de interpretar essa mensagem como um motivo para recriá-lo.
/scoreboard players set @s debug 1Fornece ao jogador que executa o comando um valor de teste.
/execute if score @s debug matches 1 run say Score check passedConfirma que o objetivo, o titular e a comparação funcionam em conjunto.
Se a verificação ainda falhar, verifique a ortografia e o uso de maiúsculas e minúsculas no objetivo, o detentor da pontuação e se o comando está sendo executado pelo jogador esperado. Em um bloco de comando ou console, o comando @spode não se referir ao mesmo jogador que no chat.
Etapa 4: Verifique os caminhos do pacote de dados Java 1.21 e recarregue o estado.
A Java Edition 1.21 alterou vários diretórios de pacotes de dados, passando de nomes no plural para nomes no singular. Em particular, um arquivo de função deve estar localizado em `<nome_do_arquivo>` data/<namespace>/function/<path>.mcfunction, e as tags de função usam `<nome_da_tag>` data/minecraft/tags/function/. Um pacote copiado de uma versão anterior ainda pode conter `<nome_do_pacote>` functionsou tags/functions`<nome_da_tag>`, o que pode fazer com que uma função escrita corretamente pareça estar faltando.
Por exemplo, data/example/function/start.mcfunctioné chamado com /function example:start. Após editar o pacote, execute /reload, depois /datapack list enabled. Confirme se o pacote está listado, se o namespace corresponde à chamada da função e se todos os diretórios e nomes de arquivos correspondem ao caminho. Valide pack.mcmetacomo JSON e use o formato de pacote compatível com a versão 1.21.x específica, em vez de copiar um número de um pacote mais antigo.
Mantenha o caminho da função e o comando que a chama alinhados, depois recarregue e confirme se o pacote está ativado.
Duas verificações de compatibilidade que impedem correções enganosas.
Exemplos antigos de NBT podem falhar na versão 1.21.
A versão 1.20.5 do Java Edition migrou os dados de pilha de itens de muitos campos NBT legados para componentes de dados estruturados, e a versão 1.21 herda essa sintaxe. Portanto /give, /itemexemplos antigos de `item-stack`, `loot-table` ou predicados podem ser analisados de forma diferente ou falhar se copiados sem alterações. Use a sintaxe de componente para propriedades de itens compatíveis; use ` custom_dataitem-dados` para dados de itens personalizados, em vez de presumir que todas as tags de itens antigas permanecem válidas.
A execução da função pode se expandir ou parar em determinados limites.
Seletores aninhados podem multiplicar contextos: executar `if` execute as @e at @e, por exemplo, pode criar muitas combinações. Funções recursivas ou lógica de bloco de comando repetida também podem consumir os limites de trabalho do comando. Torne o seletor o mais específico possível, de acordo com a tarefa, divida a lógica complexa em funções menores e inclua uma condição que eventualmente interrompa a repetição do trabalho. Não assuma que um resultado parcial significa que o jogo ignorou o restante de um comando sintaticamente válido.
Antes de inserir o comando de volta no mundo
Testar novamente comandos destrutivos em um ambiente copiado ou descartável.
Altere uma variável de cada vez e mantenha a primeira mensagem de erro.
Utilize um comando visível e inofensivo, como este, saypara verificar o executor e a localização antes de alterar blocos ou entidades.
Verifique o nível de permissão quando um comando funcionar como operador no chat, mas falhar quando executado a partir de uma função do servidor ou bloco de comando.
Compare a edição e a versão exatas do jogo com a origem do comando que você copiou.