Перейти к содержанию

Как сделать так чтобы когда садишься на лодку то лодка становится нивидимой и на персонажа надевался череп и обратно?


Рекомендуемые сообщения

В теме 7 сообщений

  • 3 недели спустя...

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

Насколько мне известно, задетектить игрока в лодке нельзя. Да, можно прописать /execute as @e[type=boat,nbt={Passengers:[{}]}] run say hi. Тогда лодка будет выполнять команду (в данном случае say hi) только если у неё есть пассажир (именно моб). Но тогда команда будет действовать только на сидящих в лодке мобов, а  не на сидящих в лодке игроков. Если тебе это не подходит, не знаю, что делать. Если подходит, идём далее. Хотя можно прописать @e[type=boat,nbt={Passengers:[{id:айди}]}], но это теория и на практике лично у меня ничего не получилось, хотя возможно я просто что-то не так делаю. Как задетектить сидящего в лодке игрока я не знаю, постараюсь выяснять.

Вернёмся к понятному курсу темы.

Команда  /execute as @e[type=boat,nbt={Passengers:[{}]}] run say hi делает так, что все лодки, в которых кто-то сидит, говорят hi. Теперь вместо say hi пишем всё, что нам нужно. Но тут второй тупик: на лодке эффекты не оказывают никакого влияния. если прописать /execute as @e[type=boat,nbt={Passengers:[{}]}] run effect give @s minecraft:invisibility 1 и запихнуть в цикл то эффект наложится, даже частицы будут, но невидимой лодка не станет. 

Вывод: исходя из вышеописанных проблем лодку невидимой без текстурпака не сделать. (а если использовать текстурпак то невидимой лодка будет по жизни)

НО!

Я придумал один способ. В текстурпаке сделай невидимой определённый вид лодки, который не будет использоваться (если такое подходит). Для эксперимента я сделал текстурпак, в котором текстуры лодки из акации сделал невидимыми. Нюанс: если лодка стоит на земле, от неё всё равно будет тень, хотя сама лодка будет невидимой (в воде тени нет). Далее в цикличном командном блоке пишем  /execute as @e[type=boat,nbt={Passengers:[{}]}] run data merge entity @e[type=boat,limit=1,sort=nearest] {Type:acacia}. Эта команда будет делать все лодки, в которых кто-то сидит, лодками из акации (в данном случае именно лодки из акации заменены на невидимые текстуры). 

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

Новый вывод: невидимой лодку сделать можно, но придётся пожертвовать одним из видов лодки, и лично у меня пока не удалось реализовать восстановление видимости лодки.

Идём далее.

Игрок. С ним всё намного сложнее, ибо узнать, что игрок сидит в лодке командами нельзя (НАСКОЛЬКО МНЕ ИЗВЕСТНО). Но, всё же кое-что сделать можно.

Вместе с предыдущим цикличным командным блоком запускаем ещё один, в который пихаем /execute as @e[type=boat,nbt={Passengers:[{}]}] run replaceitem entity @p armor.head minecraft:skeleton_skull. Эта команда заставит все лодки в которых кто-то сидит одевать ближайшему игроку на голову череп (если игрок сидит в лодке, то он и будет ближайшим). Минусы: если на голове игрока до этого было что-то надето, это что-то будет утрачено при таком исполнении. Ещё минусы: мне и в этом случае не удалось реализовать обратный манёвр (снятие черепа при вылазке с лодки). 

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

А вообще, лучше опиши, для чего нужна подобная штука. Может кто-то (может и я) подскажет идеи, которые будут больше подходить или смогут заменить махинации с лодкой и котелком игрока.

Всегда рад помочь, Jarvis)

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Jarvis сказал:

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

Насколько мне известно, задетектить игрока в лодке нельзя. 

Можно. У игрока когда он садиться на сущность появляется тег RootVehicle. Можно это обнаруживать с помощью команды execute (Не проверял, но по логике должно работать):

execute as @if data entity @RootVehicle run say 123

Точно также можно найти игрока не в лодке:

execute as @a unless data entity @RootVehicle run say 123

 

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, shurik204 сказал:

Можно. У игрока когда он садиться на сущность появляется тег RootVehicle. Можно это обнаруживать с помощью команды execute (Не проверял, но по логике должно работать):


execute as @if data entity @RootVehicle run say 123

Точно также можно найти игрока не в лодке:


execute as @a unless data entity @RootVehicle run say 123

 

Говорил же, профи смогут)

 

Ссылка на комментарий
Поделиться на другие сайты

10 минут назад, Jarvis сказал:

Говорил же, профи смогут)

Я не профи, просто хорошо знаю.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...