Руководство по командным блокам в Minecraft для новичков

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

Что такое командные блоки и почему я должен их использовать?

Командные блоки - это компонент красного камня, который выполняет консольные команды при включении. Команды консоли можно запускать из окна чата, добавляя в них косую черту '/'. Команды используются для изменения игрового мира способами, которые невозможно выполнить вручную, и при правильном использовании в командных блоках дают Minecraft собственный вид псевдопрограммирования. Код состоит из двух частей: логики и выполнения, и большинство языков программирования требуют, чтобы и то и другое было написано в виде текста. Кодирование Minecraft идет другим путем; логика и структура программы определяются тем, где размещены блоки и как они связаны, что означает, что вы можете летать над своим миром и видеть различные части вашей программы, выложенные блок за блоком.

Хорошо, так как мне начать?

В этом руководстве используются новые командные блоки версии 1.9. Это будет работать в 1.8, но может потребоваться немного больше опыта.

Откройте новый мир Minecraft (лучше всего работает Superflat), убедитесь, что вы находитесь в творческом режиме, и нажмите кнопку «/». Это командное окно, то же самое, что и окно чата, за исключением того, что оно начинается с символа '/', а все, что начинается с косой черты, является командой. Первая команда, которую вы можете запустить, это

/ give @p minecraft: command_block

Давайте разберемся с этим. Команда «/ give» помещает предметы в инвентарь игрока и имеет два аргумента: игрок и предмет, который нужно отдать. «@P» - это селектор цели. Селектор «@p» выбирает ближайшего игрока. В качестве альтернативы вы также можете использовать свое имя пользователя Minecraft, но если вы запустите команду с консоли, вы всегда будете ближайшим игроком. Другими целевыми селекторами являются «@a» для всех игроков, «@r» для случайного игрока и «@e» для всех  объектов. Сущности включают в себя все, что не является блоком, например монстров, снежки, животных и стрелы.

Команда должна выполняться успешно и дать вам новый блок. Поместите его в любом месте на земле, чтобы начать.

Вы можете видеть, что командный блок указывает в том направлении, в котором вы его размещаете, очень похоже на бункеры или печи. Это будет важно позже.

Щелкните блок правой кнопкой мыши (или используйте любую клавишу, которую вы используете для доступа к крафтовым таблицам и печам), и вас встретит графический интерфейс командного блока.

Сначала это кажется немного пугающим, но не волнуйтесь, все эти кнопки что-то делают. Кнопка с надписью «Импульс» изменяет тип командного блока. Есть три разных типа командных блоков:

  • Импульс, который запускает команды на  нарастающем фронте тока красного камня. Это означает, что при включении они однократно выполнят свою команду и остановятся, даже если они продолжают получать питание. Это настройка по умолчанию, единственная доступная в версии 1.8.
  • Повторите, какие команды запуска каждый клещ они питание. Тик подобен фрейму, и за один тик можно запускать несколько команд до 20 раз в секунду.
  • Цепочка, которая выполняется только в том случае, если указывающий на нее командный блок выполнил свою команду. Они будут выполняться по порядку, один за другим, за один тик, отсюда и название «Цепочка».

Кнопка с надписью «Безусловный» не позволяет командному блоку проверять успешное выполнение предыдущего блока в цепочке. Другой вариант, «Условный», запускается только в том случае, если предыдущий блок не выдал ошибок.

Кнопка с надписью «Требуется красный камень» запускает команду только в том случае, если на командный блок подается питание. Другой вариант, «Всегда активен», не позволяет командному блоку проверять, включен ли он, и просто предполагает, что это так. Этот параметр не следует использовать с командными блоками Impulse, так как он делает их бесполезными.

Сделаем цепочку, наш первый скрипт. Поместите один или два цепных командных блока лицом к первому импульсному командному блоку, например:

Убедитесь, что для цепных блоков установлено значение «Всегда активен». В противном случае нам нужно будет разместить блоки красного камня или ток, который займет ненужное место. Поместите кнопку на блок импульсных команд в начале цепочки и нажмите ее.

Ничего не случится. Это потому, что мы еще не заполнили их командами! Щелкните правой кнопкой мыши импульсный блок, чтобы отредактировать его, и введите базовую команду

скажи начало

Обратите внимание, что нам не нужна косая черта в командных блоках. Вы можете использовать его, если хотите, но в нем нет необходимости. Команда «/ say» принимает один аргумент, текст, и говорит его с точки зрения того, кто ее выполняет. Если вы запустите его, оно будет отображаться как «сообщение», как в обычном чате. Если он запущен из командного блока, это будет «[@] сообщение». В качестве альтернативы есть «/ tell», который принимает аргумент игрока, и «/ tellraw», который похож на «/ tell», за исключением того, что вместо текста он принимает необработанный JSON.

Вы можете заполнить цепочки командных блоков, чтобы писать больше вещей в чат. Они будут исполняться по порядку, без задержек, в том же тике. Если вы хотите запускать их с задержкой, вам нужно будет настроить их с репитерами из красного камня. Наряду с «/ say» есть другие базовые команды, которые делают больше вещей, например «/ give», который дает предметы, «/ effect», который применяет эффекты зелья, «/ setblock» и «/ fill», которые изменяют ваш мир. , и многие другие. В Minecraft Wiki можно найти большую базу данных команд вместе с другим полезным контентом.

Селекторы целей

Селекторы целей «@p» на самом деле намного мощнее, чем кажется на первый взгляд. Например, если мы хотим настроить таргетинг на все сущности, мы использовали бы «@e», но если бы мы хотели настроить таргетинг только на зомби, мы бы использовали

@e [type = Zombie]

Обратите внимание на скобки после «@e». Внутри этих скобок находятся аргументы селектора цели , полный список которых можно найти в Minecraft Wiki. Аргумент «тип» выбирает только объекты определенного типа, а именно «Зомби». Если бы мы хотели нацелиться на всех зомби в пределах 10 блоков командного блока, мы бы использовали

@e [type = Zombie, r = 10]

Когда «r» является аргументом радиуса. Вы также можете настроить таргетинг по местоположению, имени, команде и количеству очков.

Объединение команд

Давайте представим еще одну команду, не похожую на другие. Команда - «/ выполнить». Эта команда принимает другую команду в качестве входных данных и выполняет ее с точки зрения другого объекта. Структура «/ execute»

/ выполнить @target XYZ / команду

X, Y и Z - координаты для запуска команды. Это не имеет значения для большинства команд, но имеет большое значение, если вы используете  относительное позиционирование. Относительное положение начинается с «~», за ним следует положительное или отрицательное число, указывающее, сколько блоков от начала координат, которое обозначается «~ ~ ~». Так, например, если мы хотим запустить «/ say», как если бы сельский житель говорил, мы можем настроить команду следующим образом:

/ execute @e [type = Villager] ~ ~ ~ / say Hey

Эта команда вызовет отправку сообщения всем от каждого жителя деревни. Это не оптимально, если у нас более одного человека или более одного сельского жителя, поэтому давайте переформатируем эту команду:

/ выполнить @a ~ ~ ~ / выполнить @e [type = Villager, c = 1] ~ ~ ~ / tell @p Эй

Это намного сложнее, чем первое, и включает в себя объединение двух команд «/ execute». Первый «/ выполнить» команды выполняется для каждого игрока, затем второй проверяет ровно одного жителя поблизости, а затем заставляет этого жителя сказать ближайшему игроку «Привет». Это гарантирует, что на человека разговаривает только один сельский житель.

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

В Minecraft, безусловно, есть много команд, каждая из которых имеет собственный синтаксис. Меню справки для каждой команды обычно быстро расскажут, какие аргументы нужны команде, а в Minecraft Wiki есть подробный список того, что делает каждая из них. Дело не столько в том, чтобы точно знать, что делает каждая команда, сколько в умении использовать их вместе. В конце концов, Minecraft - это игра, поэтому игра с командами - это часть процесса обучения.