Ръководството за начинаещи за командване на блокове в Minecraft

Minecraft е един от най-добрите начини за въвеждане на млади и нови хора в кодирането. Командните блокове са лесни за научаване и използване, а програмирането на Java е точно зад ъгъла с модове на Minecraft и приставки Bukkit. Това е и просто много забавно място за опитни кодери, в които да се карат.

Какво представляват командните блокове и защо да ги използвам?

Командните блокове са компонент на Redstone, които изпълняват конзолни команди при захранване. Командните конзоли могат да се изпълняват от прозореца за чат, като се продължат с наклонена черта, '/'. Командите се използват за модифициране на света на играта по начини, които не са възможни на ръка, и, когато се използват правилно в командните блокове, дават на Minecraft собствен вид език за програмиране на psuedo. Кодът се състои от две неща: логика и изпълнение и повечето езици за програмиране изискват и двете да бъдат написани в текст. Кодирането на Minecraft преминава по различен маршрут; логиката и структурата на програмата се определят от това къде са поставени блоковете и как са свързани, което означава, че можете да летите над вашия свят и да видите различните части на вашата програма, изложени блок по блок.

Добре, така как да започна?

Това ръководство използва новите командни блокове във версия 1.9. Той ще работи в 1.8, но може да изисква малко повече опит.

Отворете нов свят на Minecraft (Superflat работи най-добре), уверете се, че сте в творчески режим и натиснете бутона „/“. Това е командният прозорец, който е същото като прозореца за чат, с изключение на това, че ви стартира с '/' и всичко, което започва с наклонената черта, е команда. Първата команда, която можете да изпълните, е

/ give @p minecraft: command_block

Нека разбием това. Командата “/ give” поставя елементи в инвентара на играчите и има два аргумента: играчът и елементът, който трябва да дадете. „@P“ е целеви селектор. Селекторът “@p” избира най-близкия играч. Като алтернатива можете също да използвате вашето потребителско име за Minecraft, но ако стартирате команда от конзолата, винаги ще бъдете най-близкият играч. Другите целеви селектори са „@a“ за всички играчи, „@r“ за случаен играч, а „@e“ ще насочи всички  субекти. Обектите включват всичко, което не е блок, като чудовища, снежни топки, животни и стрели.

Командата трябва да се изпълни успешно и да ви даде нов блок. Поставете го навсякъде на земята, за да започнете.

Можете да видите, че командният блок сочи в посоката, в която го поставяте, много като бункери или пещи. Това ще бъде важно по-късно.

Щракнете с десния бутон върху блока (или използвайте който и да е клавиш, който използвате за достъп до таблици за изработка и пещи) и ще бъдете посрещнати с GUI на командния блок.

В началото изглежда малко страшно, но не се притеснявайте, всички тези бутони правят нещо. Бутонът, който казва „Импулс“, променя типа команден блок. Има три различни типа командни блокове:

  • Импулс, който изпълнява команди по  нарастващия ръб на червения камък. Това означава, че когато са захранвани, те ще изпълнят командата си веднъж и ще спрат, дори ако продължат да бъдат захранвани. Това е настройката по подразбиране и е единствената, налична в 1.8
  • Повторете, които изпълняват команди всеки отметка, която са захранвани. Тикът е като рамка и множество команди могат да се изпълняват в един тик, до 20 пъти в секунда.
  • Верига, която се изпълнява само ако командният блок, който сочи към нея, е изпълнил командата си. Те ще се изпълняват подред, един след друг, в един отметка, откъдето идва и името „Верига“.

Бутонът, който казва „Безусловно“, спира командния блок да проверява дали предишният блок във веригата е изпълнен успешно. Другата опция, „Условно“, се изпълнява само ако предишният блок не е извадил грешки.

Бутонът, който казва „Нуждае се от Redstone“, изпълнява командата само ако командният блок е захранван. Другата опция, „Винаги активна“ спира командния блок да проверява дали е захранван и просто предполага, че е. Тази опция не трябва да се използва с командни блокове Impulse, тъй като ги прави безполезни.

Нека направим верига, първият ни „скрипт“. Поставете верижен команден блок или две, обърнати в първия импулсен команден блок, по следния начин:

Не забравяйте да зададете верижните блокове на „Винаги активни“. В противен случай ще трябва да поставим блокове от червен камък или ток, който заема ненужно място. Поставете бутон върху импулсния команден блок в началото на веригата и го натиснете.

Нищо няма да се случи. Това е така, защото все още не сме ги напълнили с команди! Щракнете с десния бутон върху импулсния блок, за да го редактирате и въведете основна команда

кажи старт

Забележете как не ни е необходима наклонена черта в командните блокове. Можете да използвате такъв, ако искате, но това е ненужно. Командата “/ say” взема един аргумент, текст и го казва от гледна точка на онзи, който го изпълнява. Ако го стартирате, той ще се покаже като „съобщение“, точно като обикновения чат. Ако се изпълни от команден блок, това ще бъде „[@] съобщение“. Като алтернатива има „/ tell“, което взема аргумент на играч, и „/ tellraw“, което е като „/ tell“, с изключение на това, че вместо суров текст взема суров JSON.

Можете да попълните верижните командни блокове, за да напишете повече неща за чат. Те ще бъдат изпълнени по ред, без забавяне, със същия отметка. Ако искате да ги стартирате със закъснение, ще трябва да ги настроите с ретранслатори. Заедно с „/ say“, има и други основни команди, които правят повече неща, като „/ give“, което дава елементи, „/ effect“, което прилага ефекти от отвари, „/ setblock“ и „/ fill“, които модифицират вашия свят , и много други. В Minecraft Wiki може да се намери голяма база данни с команди, заедно с друго полезно съдържание.

Целеви селектори

Целевите селектори „@p“ всъщност са много по-мощни, отколкото изглеждат на пръв поглед. Например, ако искахме да се насочим към всички обекти, щяхме да използваме „@e“, но ако искахме да насочим само към зомбита, щяхме да използваме

@e [type = Zombie]

Забележете скобите след „@e“. Вътре в тези скоби се намират аргументи за селектиране на цели , пълен списък с които може да се намери в Minecraft Wiki. Аргументът „type“ избира само обекти от определен тип, като този е „Zombie“. Ако искахме да насочим всички зомбита в рамките на 10 блока от командния блок, щяхме да използваме

@e [type = Zombie, r = 10]

Като „r“ е радиус аргумент. Можете също така да насочвате по местоположение, име, екип и резултат, наред с други.

Вериги на команди

Нека въведем друга команда, която не е като другите. Командата е „/ изпълнение“. Тази команда приема друга команда като вход и я изпълнява от гледна точка на друг обект. Структурата на „/ изпълни” е

/ изпълнете @target XYZ / команда

X, Y и Z са координати, от които се изпълнява командата. Това няма значение за повечето команди, но има голямо значение, ако използвате  относително позициониране. Относителната позиция започва с „~“ и е последвана от положително или отрицателно число, указващо колко блока от началото, което се обозначава с „~ ~ ~“. Така, например, ако искахме да стартираме „/ say“, сякаш селянин говори, можем да настроим командата по следния начин:

/ изпълни @e [type = Villager] ~ ~ ~ / кажи Хей

Тази команда ще предизвика съобщение до всички, от всеки селянин. Това не е оптимално, ако имаме повече от един човек или повече от един селянин, така че нека преформатираме тази команда:

/ изпълни @a ~ ~ ~ / изпълни @e [type = Villager, c = 1] ~ ~ ~ / tell @p Hey

Това е много по-сложно от първото и включва обединяване на две команди „/ изпълнение” заедно. Първото „/ изпълнение“ на командата се изпълнява на всеки играч, след това второто проверява точно един селянин наблизо и след това селянинът казва на най-близкия играч „Хей“. Това гарантира, че само един селянин говори на човек.

Изучаване на синтаксиса

Със сигурност има много команди в Minecraft, всяка от които има свой синтаксис. Помощните менюта за всяка команда обикновено ви казват бързо от какви аргументи се нуждае командата, а в Minecraft Wiki има подробен списък с това, което прави всеки от тях. Не е толкова важно да знаете точно какво прави всяка команда, а да знаете как да ги използвате заедно. В крайна сметка Minecraft е игра, така че играта с командите е част от учебния процес.