How To

Minecraft întâlnește Stream Deck: o construcție Redstone complet funcțională

Last updated:

  Această pagină a fost tradusă automat de DeepL. Switch to English

Comunitatea noastră nu încetează să ne impresioneze cu construcții inteligente, creative și extrem de distractive, iar aceasta ar putea fi cireașa de pe tort (bloc?). Recent, am discutat despre faptul că Stream Deck apare în mai multe locuri ca niciodată: cu modulele Stream Deck și Virtual Stream Deck pe computer. Dar acum? Este în Minecraft.

Inspirație

În urmă cu aproximativ o lună, un specialist al comunității Elgato a postat pe Twitter-ul Elgato o versiune Minecraft a unui Stream Deck cu 15 taste. Posedat de spiritul competiției amicale, am început să încerc să descopăr cum pot transforma acest concept într-o realitate funcțională. Deși ceea ce am realizat nu este perfect, nici pe departe, și are tendința să se strice dacă te uiți la el într-un anumit fel, sunt mai mult decât mulțumit de rezultate!

Această versiune este alimentată de un Virtual Stream Deck cu șase taste ascuns în mod discret pe celălalt monitor al meu, cu un script Node.js foarte complicat care se ocupă de partea dificilă a apăsării butoanelor SD în funcție de ceea ce este activat în joc, precum și de conversia afișajului VSD în ceva care poate fi reprezentat în Minecraft.

unnamed

În Minecraft, redstone-ul utilizat este extrem de simplu. În spatele ecranului, fiecare buton utilizează o pereche de senzori sculk calibrați (senzori de sunet din joc) pentru a monitoriza evenimentele de intrare, care în acest caz sunt fie bulgări de zăpadă care aterizează pe buton (intensitate semnal 2), fie sunetul unei explozii de vânt (intensitate semnal 15). Fiecare pereche duce la un singur bloc de comandă care, atunci când este declanșat, introduce între 1 și 8 spații în chat-ul din joc. Butoanele de pagină înapoi/înainte din lateral au, de asemenea, un circuit suplimentar care controlează luminile indicatoare, dar în rest funcționează identic.

Ce se întâmplă în scriptul meu personalizat

Cea mai mare parte a magiei se întâmplă în scriptul Node.js personalizat pe care l-am scris pentru acest proiect. La pornirea inițială a programului, obțin câteva informații speciale care îmi permit să selectez fie o fereastră Virtual Stream Deck (VSD), fie fereastra jocului Minecraft, apoi obțin și coordonatele ferestrei VSD. Odată ce toate setările sunt gata, există două bucle care rulează în tandem: introducere și afișare.

Jumătatea de intrare a programului este cea mai simplă dintre cele două. Ori de câte ori Minecraft rulează, păstrează un fișier jurnal cu cele mai importante lucruri care se întâmplă într-un fișier text numit în mod adecvat latest.log. Este important de menționat că acest fișier jurnal include și toate mesajele primite în chat, ceea ce înseamnă că, cu puțin cod inteligent, putem vedea doar intrările din jurnal care conțin mesajele noastre formate doar din spații. Când ajunge un astfel de mesaj, numărăm numărul de spații și îl folosim pentru a determina butonul pe care trebuie să îl apăsăm. Am ordonat butoanele de sus în jos, de la stânga la dreapta (există și două butoane suplimentare pentru pagina anterioară/următoare). Odată ce am selectat butonul, folosesc o bibliotecă specializată de automatizare a desktopului pentru a muta foarte repede mouse-ul din fereastra Minecraft, a face clic pe butonul corespunzător de pe Virtual Stream Deck care alimentează totul și a-l readuce la controlul Minecraft (trebuie să apăsați F3+P pentru ca acest lucru să funcționeze; în caz contrar, jocul se va opri când pierde focalizarea). Dacă nu mișcați mouse-ul când se întâmplă aceste mișcări, totul se desfășoară fără probleme! dacă ești, tinde să se rupă îngrozitor lol

Acest lucru funcționează bine pentru apăsarea butoanelor, dar adevărata magie a Stream Deck constă în faptul că fiecare tastă are un afișaj programabil. Cum se poate afișa acest lucru în Minecraft? Soluția pe care am ales-o nu este probabil cea mai elegantă, dar funcționează, iar asta este ceea ce contează pentru mine! De patru ori pe secundă, scriptul face o captură de ecran a ferestrei VSD. Presupunând că butoanele au o dimensiune specifică (dimensiunea implicită de 52x52 px funcționează destul de bine), acesta decupează captura de ecran la dimensiunea unui buton, apoi o redimensionează la 8x8 px. Odată ce a terminat, trece peste fiecare pixel din imaginea decupată și le rulează printr-un cod inteligent pentru a afla ce bloc se potrivește cel mai bine cu culoarea sa. (Mulțumesc mult kult0922 de pe GitHub, care a creat un site web care convertește imaginile în pixel art Minecraft și a publicat codul sursă pentru acesta! Fără acel cod, acest proiect ar fi durat probabil mult mai mult timp). Asigurați-vă că repetați procedura pentru celelalte cinci butoane.

Obținerea listei de blocuri de care ai nevoie este un pas bun, dar introducerea lor în joc rămâne o problemă. Dacă ai o modalitate de a rula comenzi de chat, ai putea folosi comanda /setblock de mai multe ori pentru a actualiza fiecare pixel în parte, dar acest lucru este foarte lent și ineficient. Un instrument mai bun ar fi Structure Block, un instrument din jocul vanilla care, printre altele, îți permite să plasezi "scheme" prefabricate ale structurilor în lumea jocului. Am descoperit cum să fac scriptul meu să creeze scheme în modul în care Minecraft le așteaptă și, odată ce sunt salvate în folderul de scheme, pot emite o comandă de chat care spune Structure Block din joc să caute schema corectă pentru starea actuală a ecranului (fiecare cadru individual trebuie să aibă un nume de fișier unic, ceea ce complică puțin lucrurile). Odată ce ai făcut asta, trebuie doar să ai un mic circuit redstone care să lipească repetat schema activă în lume și ai un ecran funcțional!

Concluzie

La finalul zilei, veți avea un Stream Deck aproape complet funcțional, dar în Minecraft! Deși scriptul meu este conceput în principal pentru a rula numai pe computerul meu, nu văd niciun motiv pentru care nu ar putea fi îmbunătățit pentru a rula pe servere multiplayer! Prototipul original al acestui proiect a rulat de fapt pe o instanță Stream Deck Mobile care rulează în Windows Subsystem pentru Android, ceea ce înseamnă, din punct de vedere tehnic, că puteți rula totul pe un dispozitiv complet separat sau într-o mașină virtuală. Dacă este o idee bună sau nu, este o cu totul altă întrebare, desigur... dar nu lăsați preocupări precum "practicitatea" să vă împiedice să vă distrați :)

Curiozitate: logo-ul Stream Deck din partea de sus a fost realizat folosind 24 de hărți. Structura logo-ului se află în End void, dar este atât de mare încât se întinde aproape de la un capăt la altul al void-ului.

unnamed (1)

Vezi mai multe lucrări ale lui TheAppleFreak:

PRODUSE ÎN ARTICOL