Como `avaliar` um comando instantaneamente?

2
Quentin 2020-01-09 11:32.

Estou procurando uma maneira de ter uma evalfuncionalidade semelhante, ou seja, executar dinamicamente um comando armazenado como uma string em algum lugar. Tenho uma solução que funciona, mas não pode ser executada de forma síncrona em uma função. Estou usando o seguinte test.mcfunction:

data modify block 0 56 0 Command set from entity @s SelectedItem.tag.command
data modify block 0 56 0 auto set value 1b
data modify block 0 56 0 auto set value 0b

say after command!

Ao colocar um bloco de comando em 0 56 0, em seguida, executar os seguintes comandos ...

/give @p minecraft:paper{command: "say command!"}
/function mufmuf:test

... esta é a saída:

[MechaRage] after command!
Executed 4 commands from function 'mufmuf:test'
[@] command!

Você pode ver que o bloco de comando não reagiu até que a função tenha terminado. Meu teste com schedulemostrou que leva 2 ticks para alcançar (ou seja, schedule <function> 1tainda será executado antes do bloco de comando, mas schedule <function> 2tserá executado corretamente depois dele).

Isso é inconveniente, pois preciso dividir minhas funções em partes atrasadas e preciso tomar cuidado para não sobrescrever nenhum bloco de comando que ainda não tenha sido executado, empilhando vários deles.

Existe uma maneira melhor e instantânea de evalum comando?

1 answers

3
Fabian Röling 2020-01-09 13:52.

Você pode executar a função a partir de um bloco de comando e, na função, pode modificar um bloco de comando posteriormente na cadeia.

Por exemplo, acabei de testar isso:

Bloco de comando regular que aponta para o bloco de comando em cadeia: function test:test
Arquivo de função: data merge block <coordinates> {Command:"say a"}com as coordenadas do bloco de comando em cadeia Bloco
de comando em cadeia:say test

Eu ativei o bloco de comando regular e a saída foi:

[@: Executed 1 commands from function 'test:test']
[@] a

E uma vez que é uma cadeia de bloco de comando, tudo aconteceu no mesmo tick.

Observe que é impossível executar uma função em um novo thread ou fazer qualquer outra coisa no meio de uma função que você não especificou na própria função, porque a função (e todas as funções que ela chama) são executadas assim que possível, pausando todo o resto no servidor enquanto isso. É verdade que algumas ações, como invocar entidades, têm efeitos que podem ser detectados imediatamente na função, mas nenhuma dessas coisas pode executar um comando arbitrário instantaneamente:

  • definir um bloco de comando para auto:1(mesmo o mesmo que executou a função)
  • colocar um bloco de comando sempre ativo
  • convocando um minecart de bloco de comando em um trilho ativador
  • configuração de um trilho ativador em um minecart do bloco de comando Todas essas ações são acionadas após o término da função (ou ainda mais tarde, no caso do minecart do bloco de comando). Também não há comando que execute um comando arbitrário baseado em uma string armazenada em algum lugar, pelo menos no Vanilla. Foi sugerido e os desenvolvedores o consideraram, mas até agora apenas um mod o adicionou.

Portanto, o melhor que você pode fazer atualmente é executar o comando que altera os dados do bloco de comando em cadeia como o último comando na função (ou cadeia de chamada de função) e então fazer tudo mais tarde em outra função, disparada por outro bloco de comando em cadeia depois disso.

MORE COOL STUFF

Cate Blanchett dormiu com o marido depois de 3 dias juntos e ainda está casada com ele 25 anos depois

Cate Blanchett dormiu com o marido depois de 3 dias juntos e ainda está casada com ele 25 anos depois

Cate Blanchett desafiou os conselhos típicos de namoro quando conheceu o marido.

Por que Michael Sheen é um ator sem fins lucrativos

Por que Michael Sheen é um ator sem fins lucrativos

Michael Sheen é um ator sem fins lucrativos, mas o que exatamente isso significa?

Hallmark Star Colin Egglesfield Pratos Emocionantes Encontros de Fãs no RomaDrama Live! [Exclusivo]

Hallmark Star Colin Egglesfield Pratos Emocionantes Encontros de Fãs no RomaDrama Live! [Exclusivo]

A estrela da Hallmark Colin Egglesfield falou sobre emocionantes encontros com fãs no RomaDrama Live! além de seu programa INSPIRE na convenção.

Por que você não pode transmitir 'Exposição do Norte' online

Por que você não pode transmitir 'Exposição do Norte' online

Você terá que tirar o pó de um Blu-ray ou DVD player para ver por que Northern Exposure se tornou um dos programas mais populares dos anos 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

Como a matéria branca ajuda a função da matéria cinzenta do cérebro

Como a matéria branca ajuda a função da matéria cinzenta do cérebro

Todos nós já ouvimos falar da massa cinzenta do cérebro, mas e a massa branca? O que isso faz?

Doe seu cabelo para ajudar a manter nossa água limpa

Doe seu cabelo para ajudar a manter nossa água limpa

Aparas de cabelo de salões e doações pessoais podem ser reaproveitadas como tapetes que absorvem derramamentos de óleo e ajudam a proteger o meio ambiente.

Um olhar sobre os casamentos mais memoráveis ​​da Casa Branca

Um olhar sobre os casamentos mais memoráveis ​​da Casa Branca

Apenas algumas pessoas se casaram na Casa Branca nos últimos 200 anos. Quem eram eles e o que é necessário para marcar um casamento lá?

Os carros autônomos estarão nas estradas em 2020, mas as cidades dos EUA não estarão prontas para eles

Os carros autônomos estarão nas estradas em 2020, mas as cidades dos EUA não estarão prontas para eles

Embora pelo menos sete programas de automóveis autônomos jurem que estarão prontos para as ruas em 2020, a verdade é que as cidades dos EUA estão lamentavelmente despreparadas para essa realidade. Apenas 6% das maiores cidades dos Estados Unidos incluem qualquer linguagem sobre veículos autônomos em seus planos de transporte de longo alcance.

Aqui está a sua fantasia de 'Este é o melhor que eu poderia fazer' Jurassic World Halloween

Aqui está a sua fantasia de 'Este é o melhor que eu poderia fazer' Jurassic World Halloween

Em vez de esperar até o último minuto possível para decidir sobre uma fantasia este ano, por que não pedir este traje T-rex inflável Jurassic World na Amazon um dia antes do Halloween e aumentar um pouco o seu jogo de fantasias - mas não muito. Uma bateria incluída - A bomba operada mantém o traje de $ 70 inflado enquanto você está escondido dentro, e a cauda longa garante que você será a ruína de qualquer festa de Halloween, porque toda vez que você se virar, estará derrubando bebidas e doces das mesas.

Por que os jogadores de Destiny se sentem perdidos

Por que os jogadores de Destiny se sentem perdidos

Esta semana, uma tempestade de raiva envolveu a comunidade de Destiny. Esta tempestade em particular foi provocada por uma coisa específica que aconteceu na semana passada.

Um escândalo muito inglês resolverá um caso chocante de divórcio em 1963

Um escândalo muito inglês resolverá um caso chocante de divórcio em 1963

O duque e a duquesa de Argyll no casamento Recém-conquistado no Globo de Ouro, Um escândalo muito inglês está sendo expandido para uma série de antologia. Em seguida, eles abordarão o divórcio de 1963 do duque e da chamada duquesa "suja" de Argyll, que deve fornecer um território extremamente rico para uma reavaliação com olhos modernos.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Carne de porco Mapo de Dawn Burrell e homus de Edamame

Carne de porco Mapo de Dawn Burrell e homus de Edamame

"Esta é uma indústria dominada por homens, e estou feliz por ser uma das pessoas que quebrou o molde para ajudar as mulheres de cor", diz Top Chef: finalista de Portland e chef-parceiro do final de agosto em Houston. "Muitas vezes somos ignorados e às vezes não ensinados, mas isso vai mudar."

Kate Middleton passa um dia à beira da água em Londres, além de Jennifer Lopez, Julianne Hough e mais

Kate Middleton passa um dia à beira da água em Londres, além de Jennifer Lopez, Julianne Hough e mais

Kate Middleton passa um dia na água em Londres, além de Jennifer Lopez, Julianne Hough e muito mais. De Hollywood a Nova York e em todos os lugares, veja o que suas estrelas favoritas estão fazendo!

Jovem de 17 anos esfaqueado até a morte enquanto outros 4 ficaram feridos em um ataque de faca no rio Wisconsin

Jovem de 17 anos esfaqueado até a morte enquanto outros 4 ficaram feridos em um ataque de faca no rio Wisconsin

Investigadores estão investigando se o grupo e o suspeito se conheciam antes do ataque

Como eu escrevo

Como eu escrevo

Para mim, tudo é sobre aquela primeira linha e onde ela te leva. Alguns escritores são movidos pelo enredo, pelo delicado arranjo das peças de xadrez, enquanto outros são atraídos por um personagem e pela capacidade de viajar com um novo amigo fictício.

Aterrissagens na pista

Aterrissagens na pista

O final do verão e o outono são estações nostálgicas. Os postes de luz lançam sua luz sobre as ruas escorregadias pela chuva, e as folhas sob os pés – vermelho-alaranjado nas sombras do crepúsculo – são um lembrete de dias passados.

Imagine criar uma estratégia de conteúdo que realmente CONVERTE. É possível.

Imagine criar uma estratégia de conteúdo que realmente CONVERTE. É possível.

Em 2021, encorajo você a repensar tudo o que sabe sobre os clientes que atende e as histórias que conta a eles. Dê um passo para trás.

Uma perda gigantesca abriu meu coração para o amor

Uma perda gigantesca abriu meu coração para o amor

No dia do aniversário de 9 anos de Felix The Cat, lembro-me de uma das maiores perdas da minha vida adulta – minha Sophie em 2013. Escrevi este ensaio e o compartilhei brevemente nesta plataforma em 2013.

Language