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

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

Версия для одиночной игры

Не успели высохнуть чернила, как мне в голову пришла отличная мысль, позволившая многократно улучшить недавно опубликованную схему и избавить её от тех неприятных моментов, которыми была наделена та версия. Речь, естественно, идёт об автоматическом управлении светом, которое я реализовывал с помощью особенностей последних версий игры. Уже вспоминаете нашу условную «камеру движения», которая при перемещении в «подъезде» включала на некоторое время свет, а потом, при отсутствии движения, выключала его? Именно её мы будем в сегодняшнем уроке модернизировать, улучшая и упрощая финальную схему.

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

  1. Необходимость использования повторителя для того, чтобы избежать визуальных искажений с освещением (при непрерывном движении в выделенной зоне блок красного камня в определённый момент исчезал, а потом появлялся);
  2. Отсутствие чувствительности схемы к быстрому бегу и медленному перемещению — в итоге механизм реагировал исключительно на перемещение обычным шагом;
  3. Таймер обновлялся не после любого движения, а лишь после того движения, которое производилось после завершения предыдущего цикла;
  4. Достаточно объёмные размеры схемы — получалась цепочка из семи командных блоков;
  5. Невозможность временного отключения схемы.


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

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


Также, для определения области видимости нашей «камеры движения», мы, как и в предыдущей версии механизма, будем устанавливать на 2 блока ниже игрока лазуритовые блоки. Виртуальное освещение будет включаться с помощью установки блока из красного камня на условные координаты 1 2 3. Итак, детальное описание:

Тип (картинка)МодификаторКомандаОбъяснение
УсловностьАктивность
1Безусловная (Unconditional)Требуется сигнал (Needs Redstone)

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


Да, частями объяснения были скопированы из предыдущей части, ведь, собственно, механизм не сильно изменился. Мы лишь отказались от работы с тегами и стали убавлять очки, а не добавлять их, что сделало возможным без особых проблем добавить чувствительность механизма к быстрому бегу и медленному перемещению. Вот, собственно, и они:

Быстрый бег:

Тип (картинка)МодификаторКомандаОбъяснение
УсловностьАктивность
1Безусловная (Unconditional)Требуется сигнал (Needs Redstone)

(схема включится тогда, когда будет активирован данный командный блок)
/execute @a[score_AutoLightSprint_min=1] ~ ~ ~ detect ~ ~-2 ~ minecraft:lapis_block 0 /scoreboard players set @p AutoLightWalk 1
Устанавливаем значение статистики перемещений «AutoLightWalk» на единицу тем игрокам, у которых в статистике быстрого бега «AutoLightSprint» есть как минимум одно очко (т. е. тем, кто двигался быстро) и под которыми на два блока ниже есть лазуритовый блок (т. е. тем, кто оказался в зоне видимости нашей «камеры движения»). Таким образом, мы, по сути, имитируем при беге обычную ходьбу, из-за чего механизм не пришлось дублировать несколько раз.
2Безусловная (Unconditional)«Всегда активен» (Always Active)
/scoreboard players set @a[score_AutoLightSprint_min=1] AutoLightSprint 0
Сбрасываем статистику быстрого бега «AutoLightSprint» у всех игроков, у которых в ней есть как минимум одно очко. Так как данный командный блок в режиме цепочки имеет безусловную вариацию модификатора, это действие будет производиться каждый игровой такт.


Медленная ходьба:

Тип (картинка)МодификаторКомандаОбъяснение
УсловностьАктивность
1Безусловная (Unconditional)Требуется сигнал (Needs Redstone)

(схема включится тогда, когда будет активирован данный командный блок)
/execute @a[score_AutoLightCrouch_min=1] ~ ~ ~ detect ~ ~-2 ~ minecraft:lapis_block 0 /scoreboard players set @p AutoLightWalk 1
Устанавливаем значение статистики перемещений «AutoLightWalk» на единицу тем игрокам, у которых в статистике медленных перемещений «AutoLightCrouch» есть как минимум одно очко (т. е. тем, кто двигался медленно) и под которыми на два блока ниже есть лазуритовый блок (т. е. тем, кто оказался в зоне видимости нашей «камеры движения»). Таким образом, мы, по сути, имитируем при медленном перемещении обычную ходьбу, из-за чего механизм не пришлось дублировать несколько раз.
2Безусловная (Unconditional)«Всегда активен» (Always Active)
/scoreboard players set @a[score_AutoLightCrouch_min=1] AutoLightCrouch 0
Сбрасываем статистику медленных перемещений «AutoLightCrouch» у всех игроков, у которых в ней есть как минимум одно очко. Так как данный командный блок в режиме цепочки имеет безусловную вариацию модификатора, это действие будет производиться каждый игровой такт.


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

Google Drivehttp://adf.ly/1bQKWL.

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


Голосуй за новость:
(+6.705,9-0.80)
  • Просмотров: 4 526
  • Комментариев: 4
Рекомендуемое для Вас:

  1. Просто хорошие люди
    Зарегистрирован: 23.04.2016
    Репутация
    (+3.93,90.0)
    OnexShow | Пользователь offline | (21 июня 2016 16:52) | Комментариев: 45 | Новостей: 2 |
    • +2

    Всё очень хорошо оформлено! 5 мем default3
    -----------------------------------------------------------------------------
    Новостей на главной [2]
    Новостей всего [2]
    Группа ПХЛ [+]
    Репутация = [2.9]
    Карма = [0.45]



  2. Главные редакторы
    Зарегистрирован: 11.06.2013
    Репутация
    (+2417.22304,6-112.6)
    3JIou_Kpunep | Пользователь offline | (21 июня 2016 22:31) | Комментариев: 1 309 | Новостей: 102 |
    • +1

    Фомин обезумел. ololosha


  3. Посетители
    Зарегистрирован: 22.06.2016
    Репутация
    (0.000.0)
    Fobos777 | Пользователь offline | (22 июня 2016 16:03) | Комментариев: 7 | Новостей: 0 |
    • +2

    Святой инжинер numb


  4. Просто хорошие люди
    Зарегистрирован: 12.11.2014
    Репутация
    (+22.719,3-3.4)
    Just_Lemon | Пользователь offline | (25 июня 2016 09:45) | Комментариев: 98 | Новостей: 27 |
    • +1

    Сложновато будет для новичков, но гайд крутой.

    5 default3
    -----------------------------------------------------------------------------


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

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

Название темы Автор Статистика Последнее сообщение
Проблема с модом Tough As Nails

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

Funny_MaN

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

Ответов: 0

Автор: Funny_MaN

Сегодня, 15:37

КОФЕЙНЯ

Тема в разделе: Форумные игры

vovanhurcane

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

Ответов: 28

Автор: vovanhurcane

Сегодня, 15:23

Как добавить динамическое освещение оптифайна любому предмету?

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

Вячеслав Серенко

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

Ответов: 9

Автор: Caman86

Сегодня, 12:26

[1.20.4] NeoMoonVanilla - Ванильный Minecraft | Ивенты | Ламповое выживание

Тема в разделе: Частные, домашние, Hamachi сервера

Kristallik__

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

Ответов: 1

Автор: Kristallik__

Вчера, 22:04

Ищете ванильный сервер похожий на МайнШилд?

Тема в разделе: Частные, домашние, Hamachi сервера

awiex

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

Ответов: 0

Автор: awiex

Вчера, 21:51