How To

Minecraft encontra Stream Deck: uma construção Redstone totalmente funcional

Last updated:

  Esta página foi traduzida automaticamente por DeepL. Switch to English

A nossa comunidade nunca deixa de impressionar com construções inteligentes, criativas e divertidas — e esta pode ser a melhor de todas (ou melhor, o melhor bloco?). Recentemente, temos falado sobre como o Stream Deck está a aparecer em mais lugares do que nunca: com os Módulos Stream Deck e o Virtual Stream Deck no seu computador. Mas agora? Está no Minecraft.

Inspiração

Há cerca de um mês, um especialista da comunidade Elgato publicou no Twitter da Elgato uma construção do Minecraft de um Stream Deck de 15 teclas. Possuído pelo espírito de cordial rivalidade, comecei a tentar descobrir como transformar esse conceito em uma realidade funcional. Embora o que eu fiz não seja perfeito, nem de longe, e tenha uma tendência a quebrar se você olhar para ele da maneira errada, estou mais do que satisfeito com os resultados!

Esta versão é alimentada por um Virtual Stream Deck de seis teclas escondido secretamente no meu outro monitor, com um script Node.js muito improvisado que lida com as partes difíceis de pressionar os botões SD com base no que está ativado no jogo, bem como converter a exibição do VSD em algo que pode ser representado no Minecraft.

unnamed

No Minecraft, o redstone envolvido é extremamente simples. Por trás da tela, cada botão usa um par de sensores sculk calibrados (sensores de som do jogo) para monitorar eventos de entrada, que neste caso são bolas de neve a cair no botão (intensidade do sinal 2) ou o som de uma explosão de vento (intensidade do sinal 15). Cada par leva a um único bloco de comando que, quando acionado, coloca entre 1 e 8 espaços no chat do jogo. Os botões para voltar/avançar nas páginas, localizados nas laterais, também têm um pequeno circuito extra que controla as luzes indicadoras, mas, fora isso, funcionam de maneira idêntica.

O que está a acontecer no meu script personalizado

A maior parte da magia acontece no script Node.js personalizado que escrevi para este projeto. Na inicialização do programa, obtenho algumas informações especiais que me permitem selecionar uma janela Virtual Stream Deck (VSD) ou a janela do jogo Minecraft e, em seguida, também obtenho as coordenadas da janela VSD. Depois que toda a configuração estiver concluída, há dois loops que funcionam em conjunto: entrada e exibição.

A metade de entrada do programa é a mais simples de se entender. Sempre que o Minecraft é executado, ele mantém um ficheiro de registo com as coisas mais importantes que acontecem num ficheiro de texto apropriadamente chamado latest.log. É importante ressaltar que esse ficheiro de registo também inclui todas as mensagens recebidas no chat, o que significa que, com um pouco de código inteligente, podemos ver apenas as entradas do registo que contêm as nossas mensagens com apenas espaços. Quando uma mensagem desse tipo chega, contamos o número de espaços e usamos isso para determinar qual botão pressionar. Ordenei os botões de cima para baixo, da esquerda para a direita (há também dois botões adicionais para voltar/avançar na página). Depois de selecionar o botão, uso uma biblioteca especializada em automação de desktop para mover rapidamente o mouse para fora da janela do Minecraft, clicar no botão correspondente no Virtual Stream Deck que controla tudo e retornar ao controle do Minecraft (é necessário pressionar F3+P para que isso funcione; caso contrário, o jogo será pausado quando perder o foco). Se não estiveres a mover o mouse quando esses movimentos acontecerem, será bastante imperceptível! Se for, tende a partir-se de forma terrível lol

Isso funciona bem para pressionar botões, mas a verdadeira magia do Stream Deck é que tem um ecrã programável sob cada tecla. Como mostrar isso no Minecraft? A solução que escolhi talvez não seja a mais elegante possível, mas funciona, que é o que me importa! Quatro vezes por segundo, o script tira uma captura de ecrã da janela VSD. Assumindo que os botões têm um tamanho específico (o tamanho padrão de 52x52 px funciona muito bem), ele recorta a captura de ecrã para apenas o tamanho de um botão e, em seguida, redimensiona-a para 8x8 px. Depois de fazer isso, ele percorre cada pixel da imagem recortada e os executa através de um código inteligente para descobrir qual bloco corresponde mais à sua cor. (Muito obrigado a kult0922 no GitHub, que criou um site que converte imagens em pixel art do Minecraft e publicou o código-fonte para isso! Sem esse código, este projeto provavelmente teria demorado muito mais tempo para ser concluído). Basta repetir o processo para os outros cinco botões.

Obter a lista de blocos necessários é um bom passo, mas colocá-los no jogo ainda é um problema. Se tiver uma maneira de executar comandos de chat, pode usar o comando /setblock várias vezes para atualizar cada pixel um por um, mas isso é muito lento e ineficiente. Uma ferramenta melhor para usar seria o Structure Block, uma ferramenta do jogo básico que, entre outras coisas, permite colocar «esquemas» pré-definidos de estruturas no mundo do jogo. Descobri como fazer o meu script criar esquemas da maneira que o Minecraft espera e, depois de salvos na pasta de esquemas, posso emitir um comando de chat que diz ao Bloco de Estrutura no jogo para procurar o esquema correto para o estado atual da tela (cada quadro individual precisa ter um nome de ficheiro único, o que complica um pouco as coisas). Depois disso, basta ter um pequeno circuito redstone que cola repetidamente o esquema ativo no mundo, e você tem uma tela funcional!

Conclusão

No final das contas, você tem um Stream Deck praticamente utilizável, mas no Minecraft! Embora o meu script tenha sido projetado principalmente para ser executado apenas na minha máquina, não vejo nenhuma razão para que ele não possa ser melhorado para talvez funcionar em servidores multijogador! O protótipo original deste projeto foi executado numa instância do Stream Deck Mobile no Windows Subsystem for Android, o que tecnicamente significa que você poderia executar tudo num dispositivo completamente separado ou numa máquina virtual. Se isso é uma boa ideia ou não, é outra questão, é claro... mas não deixe que preocupações como "praticidade" o impeçam de brincar :)

Curiosidade: o logótipo do Stream Deck na parte superior foi criado usando 24 mapas. A estrutura do logótipo está localizada no vazio final, mas é tão grande que se estende quase de uma extremidade à outra do vazio.

unnamed (1)

Confira mais trabalhos de TheAppleFreak:

REGISTO DE PRODUTOS