[Гайд] Улучшенное автоматическое управление светом с помощью возможностей 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)
  • Просмотров: 1 248
  • Комментариев: 4
Рекомендуемое для Вас:

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

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



  2. Главные редакторы
    Зарегистрирован: 11.06.2013
    Репутация
    (+1926.61817,2-109.4)
    3JIou_Kpunep | Пользователь offline | (21 июня 2016 22:31) | Комментариев: 1 313 | Новостей: 104 |
    • +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
    -----------------------------------------------------------------------------



 
Ваше Имя:
  • the-manvitalyapumbapekagustaololoshapokerface
    ololoshanikoloskrovjopagoritgopnikcreepy-troll
    bombanuloanatoliyjewishbadumtssbatrollface
    bayandudecomeonmemefemaleseriouslyneveralonenothingtodohere
    numbsadfsadtrollfacetrolldadwinthistimeclear
    yesmingfupizdynaxezmetall
    pacanypeka-facepikap-masterpoker-face2redface
    rzhakacat-lolDa-nu-nafigfrayna-uchi
    OhGodoh-god-whyponimaeshShto-zaso-close
    so-much-winsurprised-cattrue-storyWTF2voobscheto
    pticapleasepetrosyanpacanohfuck
    irodidisudaheystopityouGTFOefacepalm
    dosvidaniyableayouthful-fearten-guyrage-no-whyyy
    NewspaperGuyTearNewspaperGuyHighhappy-dolangonna
    geniusCerealGuySquintCerealGuyAngryAww-Yeahchallenge-failed
    Determlesqueemisc-alloh_godoh-stop-it-you
    omega-troll-faceotdubpedobearpoker-facerainbow-face
    sincere-trollSlowpokeruka-licopfffnudaeIII
    nikolosneutralmBinimposhappyf
    begomaccepted-drunkbad-poker-facecereal-guycereal-guy-spitting
    chanconcentrateddance-jumpevil-smilefap
    flipfreddie-mercurygreat-scotthappyherp-derp
    jesuslied-lightme-gusta-creepymichelle-not-badnerd
    non2no-whyyyover-heresad-cryingseriously
    staresurprised-kidsurprised-omgwatching-uyou-did-there
    3a_4tokrutoymiloMother_of_godNoris
    not_badot_kompaparkerpovarprelest
    spravedlivomil2big trollbuueeedefault
    fack yeahforever alone2krainyaa stepenkrasnie glazaLOL2
    nravitsaokeyreshitelentrollxD
    zanyatmilanonimbrezguetdefault2
    default3forever aloneHmmmegafffuuumegayeah
    ololoshaOMGshok trollwomen trollwomen
    zadumalsya
Докажи, что не робот:*

 

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

Название темы Автор Статистика Последнее сообщение
Форумный чат

Тема в разделе: Чат флудилка

3JIou_Kpunep

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

Ответов: 114581

Автор: Andrej2001

Сегодня, 06:23

Проблема с шейдерами и моделькой Стива

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

BACABI7

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

Ответов: 1

Автор: AndrewGreat

Вчера, 22:42

Приватный сервер на сборке Age of Engineering

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

VanaWasd

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

Ответов: 4

Автор: VanaWasd

Вчера, 20:19

VanillaCraft - лучший сервер без привата!

Тема в разделе: Проекты

MrMaga

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

Ответов: 155

Автор: MrMaga

Вчера, 15:49

GamePoint - Получи настоящее удовольствие от игры в MineCraft!

Тема в разделе: Проекты

Big_Energy

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

Ответов: 6

Автор: MrMaga

Вчера, 13:08