[Гайд] Автоматическое управление светом с помощью возможностей Minecraft 1.9

[Гайд] Автоматическое управление светом с помощью возможностей Minecraft 1.9

Версия для многопользовательской игры

Недавно я публиковал небольшой гайд о новых возможностях командных блоков. Как я в нём упоминал, ничего особенно нового введено не было, но зато разработка механизмов теперь выполняется намного проще и быстрей. Пообещав рассмотреть примеры, я, в общем-то, не соврал. Сегодня мы посмотрим на разобранный мной пример системы автоматического управления светом, которая понадобилась мне при создании одного из моих проектов... Знакома ли Вам система освещения в современных подъездах? Когда свет включается только при чьём-либо движении, после некоторое время остаётся включённым, а при прекращении движения через определённое количество времени отключается. Полагаю, да. Именно этот механизм мы и попытаемся создать с помощью новых возможностей Minecraft 1.9.

Для начала стоит задуматься о том, какие статистики нам потребуются для реализации предложенной задачи. Напомню, что нам придётся отслеживать (а) движение игрока и (б) то время, через которое перестанет работать освещение. Посмотрим, как можно лаконично создать соответствующие ранее обозначенные статистики:

  • (а) Создадим статистику перемещений «AutoLight» с критерием «stat.walkOneCm», которая будет изменяться тогда, когда игрок пройдёт некоторое расстояние;
    /scoreboard objectives add AutoLight stat.walkOneCm
  • (б) Создадим статистику таймера «AutoLightTimer» с критерием «dummy», которую мы будем изменять самостоятельно.
    /scoreboard objectives add AutoLightTimer dummy


Отлично! Теперь нам нужно задуматься: всегда ли мы должны ориентироваться лишь на движение игрока? Разумеется, нет. Нам необходимо также знать, находится ли игрок на той территории, где его будет обнаруживать «камера движения». Для этого, на два блока ниже нужного нам пространства установим лазуритовые блоки. Они будут для нас ориентиром. Также стоит отметить, что виртуальное освещение будет включаться путём установки в определённое место блока из красного камня (его координаты определим условно как 1 2 3).

Приступим к детальному изучению механизма. Командные блоки следует располагать: (а) в предложенном порядке, чтобы стрелка каждого предыдущего командного блока направлялась в следующий; (б) предложенного типа; (в) с предложенными вариациями модификаторов. Если соблюдать предложенные условия, подготовить место (установив на необходимой глубине лазуритовые блоки), а также создать необходимые статистики, то всё будет прекрасно работать.

Тип (картинка)МодификаторыКомандаОбъяснение
УсловностьАктивность
1Безусловная (Unconditional)«Всегда активен» (Always Active)
/execute @a[score_AutoLight_min=1] ~ ~ ~ detect ~ ~-2 ~ minecraft:lapis_block 0 /scoreboard players tag @p add AL
Добавляем тег «AL» тем игрокам, у которых в статистике перемещений «AutoLight» есть как минимум одно очко (т. е. тем, кто двигался) и под которыми на два блока ниже есть лазуритовый блок (т. е. тем, кто оказался в зоне видимости нашей «камеры движения»).
2Условная (Conditional)«Всегда активен» (Always Active)
/setblock 1 2 3 minecraft:redstone_block
Устанавливаем блок из красного камня (т. е. включаем освещение). Так как данный командный блок в режиме цепочки имеет условную вариацию модификатора, он будет срабатывать только тогда, когда сработает предыдущий командный блок в режиме цепочки (т. е. тогда, когда мы найдём нужных нам игроков).
3Безусловная (Unconditional)«Всегда активен» (Always Active)
/scoreboard players add @a[tag=AL] AutoLightTimer 1
Добавляем одно очко в статистику таймера «AutoLightTimer» тем игрокам, у которых есть тег «AL». Так как данный командный блок в режиме цепочки имеет безусловную вариацию модификатора, каждый игровой такт игрокам с соответствующим тегом будет добавляться одно очко в наш таймер.
4 Безусловная (Unconditional) «Всегда активен» (Always Active)
/scoreboard players tag @a[score_AutoLightTimer_min=100] remove AL
Забираем тег «AL» у тех игроков, у которых в статистике таймера «AutoLightTimer» набралась как минимум сотня очков (т. е. тогда, когда прошло сто игровых тактов, мы забираем у отслеживаемых игроков тег). Так как данный командный блок в режиме цепочки имеет безусловную вариацию модификатора, проверка будет производиться каждый игровой такт.
5 Безусловная (Unconditional) «Всегда активен» (Always Active)
/scoreboard players set @a[score_AutoLightTimer_min=100] AutoLightTimer 0
Данный командный блок обнуляет таймер у тех игроков, у которых в статистике таймера «AutoLightTimer» есть как минимум сотня очков (т. е. у тех игроков, которые выждали сто игровых тактов). Так как данный командный блок в режиме цепочки имеет безусловную вариацию модификатора, проверка будет производиться каждый игровой такт.
6 Условная (Conditional) «Всегда активен» (Always Active)
/setblock 1 2 3 minecraft:air
Убираем блок из красного камня (ставим воздух; отключаем освещение). Так как данный командный блок в режиме цепочки имеет условную вариацию модификатора, он сработает только тогда, когда игроки выждут сто игровых тактов.
7 Безусловная (Unconditional) «Всегда активен» (Always Active)
/scoreboard players set @a[score_AutoLight_min=1] AutoLight 0
Сбрасываем статистику перемещений «AutoLight» у всех игроков, у которых в ней есть как минимум одно очко. Так как данный командный блок в режиме цепочки имеет безусловную вариацию модификатора, это действие будет производиться каждый игровой такт.


Модификатор активности отдельно не комментировался. С ним всё совершенно очевидно.

Если попытаться разобраться, всё окажется очень и очень просто. Потому, я публикую карту с данным механизмом, где Вы сможете опробовать его лично, а также изучить команды без моих комментариев.

Скачать:auto-light.zip [180,51 Kb] .

Теперь о некоторых дополнительных моментах. Во-первых, если игрок в зоне видимости нашей «камеры движения» продолжит двигаться по истечению таймера в сто игровых тактов, может быть заметно мерцание блока, так как в один игровой такт блок из красного камня убирают, в другой — ставят. Для того, чтобы избавиться от этой проблемы, на месте выхода сигнала из блока из красного камня я рекомендую поставить повторитель с максимальной задержкой. Такой повторитель не будет успевать гаснуть во время быстрых замен, потому мерцания нашего освещения не будет. Во-вторых, в данном механизме отслеживается только перемещение на обычной скорости (из-за использования в статистике перемещений «AutoLight» критерия «stat.walkOneCm»). Это сделано для упрощения схемы. Также, механизм работает в многопользовательской версии игры.

В принципе, это всё. Надеюсь, что эта схема будет кому-то полезна.


Голосуй за новость:
(+21.3520,9-0.45)
  • Просмотров: 10 041
  • Комментариев: 7
Рекомендуемое для Вас:

  1. Олдфаги
    Зарегистрирован: 1.02.2015
    Репутация
    (+466.9383,4-83.5)
    HerrManelling | Пользователь offline | (19 июня 2016 20:34) | Комментариев: 355 | Новостей: 5 |
    • +4

    Читать, конечно, не стану, ибо подобным не интересуюсь, но явно видно, что Фаменушка старался. women Ну шо сказать? Как всегда отлично. women
    -----------------------------------------------------------------------------
    Sag' das Zauberwort und du hast die Macht



  2. Картоделы
    Зарегистрирован: 19.12.2015
    Репутация
    (+24.212-12.2)
    Hapyl | Пользователь offline | (19 июня 2016 20:37) | Комментариев: 102 | Новостей: 7 |
    • -2

    Круто, Пять.


  3. Картоделы
    Зарегистрирован: 21.02.2016
    Репутация
    (+9.3-6,9-16.2)
    Nick_Demn | Пользователь offline | (20 июня 2016 08:47) | Комментариев: 41 | Новостей: 4 |
    • 0

    Нормег Гайдег
    Пятёрка


  4. Дедушки
    Зарегистрирован: 27.03.2016
    Репутация
    (+590.4584,1-6.3)
    5 0 0 0 | Пользователь offline | (20 июня 2016 11:47) | Комментариев: 78 | Новостей: 0 |
    • +1

    моча какая-то пятый мем
    -----------------------------------------------------------------------------
    I got dolby digital
    ластфм
    gay people


  5. ТруЪ Олдфаги-с
    Зарегистрирован: 9.11.2013
    Репутация
    (+251.6187,8-63.8)
    golovorez3000 | Пользователь offline | (20 июня 2016 16:51) | Комментариев: 849 | Новостей: 23 |
    • -1

    5 мем, как от редстоунера.
    -----------------------------------------------------------------------------
    Набор в строительную команду карт на прохождение! Лучшая карта от русских разработчиков!
    Группа проекта выше со скринами - https://vk.com/flame_rpg


  6. ТруЪ Олдфаги-с
    Зарегистрирован: 9.07.2012
    Репутация
    (+1382.21345,1-37.1)
    overstalker | Пользователь offline | (20 июня 2016 19:14) | Комментариев: 1 829 | Новостей: 53 |
    • 0

    *присвистнул*
    Пятёра.
    -----------------------------------------------------------------------------


    Покровитель/кошмар бездны. По настроению.


  7. Просто хорошие люди
    Зарегистрирован: 13.06.2014
    Репутация
    (+36.336,2-0.1)
    OtakuMaster | Пользователь offline | (20 июня 2016 22:30) | Комментариев: 73 | Новостей: 3 |
    • 0

    Цитата: HerrManelling
    Читать, конечно, не стану, ибо подобным не интересуюсь, но явно видно, что Фаменушка старался. women Ну шо сказать? Как всегда отлично. women
    -----------------------------------------------------------------------------


Для написания комментария зарегистрируйся на сайте, это займет всего пару минут, голосуй за новости, зарабатывай репутацию.

Последние сообщения с форума

Название темы Автор Статистика Последнее сообщение
Ищу АКТЕРА для съмок ВИДЕО по майнкрафту.

Тема в разделе: Новости

Junkie16

Просмотров: 57

Ответов: 0

Автор: Junkie16

Вчера, 22:10

Видео/Стримы канал Ritterydam

Тема в разделе: Флудильня

ritterydam

Просмотров: 110884

Ответов: 531

Автор: ritterydam

Вчера, 21:43

Загружается мир до 100% и все 1.16.5

Тема в разделе: Техническая поддержка сайта

Romanov_2

Просмотров: 68

Ответов: 0

Автор: Romanov_2

Вчера, 20:20

Помогите со сборкой на версии 1.7.10

Тема в разделе: Ваши вопросы по Minecraft

Zelsovich8321

Просмотров: 233

Ответов: 5

Автор: egg2003

Вчера, 15:06

Крутой сервер 1.20.4

Тема в разделе: Игры

Ytenok

Просмотров: 111

Ответов: 0

Автор: Ytenok

Вчера, 13:06