1) Для начала, я должен ознакомить вас с блоком piston_extension, создание механизма полагается именно на него. Он не имеет никаких физических свойств, через него можно проходить, а так же ломать и ставить блоки, но самое главное - он невидимый. Сам проход так же ещё основан на фаллинг сендах, т.е. блоки, имеющие свойства песка, когда вы их призываете, они находятся в состоянии падения и являются энтити, поэтому проходят на сквозь вас, при приземлении на землю они превращаются в твёрдый блок. Пистон не даёт фаленг сенду полностью упасть на землю, а он застревает в нём и остаётся не двигающимся энтити, этим мы маскируем проход
2) Давайте построим сам туннель и расставим в нём блоки пистона на весь его путь командой -
/setblock ~ ~ ~ minecraft:piston_extension3) Затем следует фаллинг сенд, их так же призываем командой -
/summon FallingSand x y z {TileID:1,Time:1}x y z - координаты, лучше всего использовать не относительные и на два блока выше каждого пистона
4) Для того, чтобы игрок не ходил в нашем проходе со всей скоростью, а была имитация ползка, мы просто накладываем эффект медлительности всем игрокам, которые стоят в блоке пистона -
/execute @a ~ ~ ~ detect ~ ~ ~ piston_extension -1 effect @a[r=0] 2 1 4 true5) Теперь давайте продумаем систему входа и выхода из него.
На точках входа так же устанавливаются блоки пистона, которые помогают определить где начало. Всё происходит через двойной детект, помимо него, под полом ещё расположен другой блок, который стоит только на точках входа и через двойную проверку этих двух блоков вместе под игроком мы определяем, что это вход и нас попросту телепортирует на один блок вниз, если мы зажали шифт, но об этом позже, точно так же происходит и с эффектом, при определении, что это вход, нам мгновенно удаляется эффекты медлительности, и он просто не успевает нам выдаться, а так же снимает эффект, когда вы выходите из прохода.
/execute @a ~ ~ ~ detect ~ ~ ~ piston_extension -1 /execute @a ~ ~ ~ detect ~ ~-2 ~ wooden_slab 1 /effect @a clear
/execute @a[score_Crawling_min=1] ~ ~ ~ detect ~ ~ ~ piston_extension -1 /execute @a[score_Crawling_min=1] ~ ~ ~ detect ~ ~-2 ~ wooden_slab 1 tp @a[score_Crawling_min=1,r=0] ~ ~-1 ~6) Но что же на счёт шифта, чтобы нас тпешело в проход, нам нужно именно нажать на шифт, это работает как будто мы наклоняемся и даёт сигнал механизму, что нужно опустится именно сейчас, для начала для этого нужно задать счётчик игровых событий через команду скорбоард с параметром счёта шагов, которые мы прошли крадясь, т.е. зажимая шифт, и он будет их считывать, вам нужно всего лишь указать любое имя для этого счёта и его параметр. Так что если под вами детектится те два блока и при этом у вас есть минимум один пройденный шаг на шифте, вас телепортирует
/scoreboard objectives add Crawling stat.crouchOneCm - включить счётчик считывания шагов на шифте
/scoreboard players set @a Crawling 0 - постоянное обновление, чтоб не накапливались
7) В нашей схеме осталось только концепция выхода из прохода, в ней нет ничего сложного, все 4 командных блока выполняют одинаковое действие. Они проверяют наличие всё того же блока пистона, но перед вашим лицом, а именно тот, что находится на точке выхода, когда вы в проходе, но каждый отвечает за свою сторону света, благодаря тому, что детектит сторону куда вы смотрите и исходя из засеченной стороны, в которой обнаружен этот блок, вас туда телепортирует, но на один блок выше, тем самым вы выбираетесь из прохода.
/execute @a[ry=-160,rym=160] ~ ~ ~ detect ~ ~1 ~-1 piston_extension -1 /tp @a[r=0] ~ ~1 ~-1
/execute @a[ry=20,rym=-22] ~ ~ ~ detect ~ ~1 ~1 piston_extension -1 tp @a[r=0] ~ ~1 ~1
/execute @a[ry=108,rym=74] ~ ~ ~ detect ~-1 ~1 ~ piston_extension -1 tp @a[r=0] ~-1 ~1 ~
/execute @a[ry=-70,rym=-107] ~ ~ ~ detect ~1 ~1 ~ piston_extension -1 tp @a[r=0] ~1 ~1 ~