PSEUDO Опубликовано 3 апреля, 2024 Поделиться Опубликовано 3 апреля, 2024 Расскажу, а главное покажу, как закрыть и открыть сундук либо любой блок с помощью КБ (командного блока) В данном случае, я буду использовать специальные предметы с тегами, которые будут спавнить либо деспавнить сущность интерактива. С её помощью, мы сможем покрыть пространство коллайдером, который будет препятствовать любому взаимодействию с сундуком, а взамен требовать ключ: Спойлер Выдадим себе ключ и замок: [КОНСОЛЬ]: /give @p minecraft:tripwire_hook{Enchantments:[{}], Tags:["key_lc"], display:{Name:'{"text":"Ключ", "color":"gold", "italic":false}'}} /give @p minecraft:name_tag{Enchantments:[{}], Tags:["lock_lc"], display:{Name:'{"text":"Замок", "color":"gold", "italic":false}', Lore:['{"text":"Расположите его над сундуком в рамке", "color":"white", "italic":false}']}} Теперь давайте реализуем способ закрытия сундука на замок: Спойлер Нам требуется расположить наш коллайдер таким образом, чтобы он полностью зарывал сундук. Более того, нам нужно его спавнить там, где бы не находился наш сундук, и чтобы каждый игрок имел возможность это делать. Так как единственный способ спавна чего либо ровно без смещения, осуществляется относительно другой сущности (другие способы я не знаю), я буду показывать реализацию замка с помощью рамки: [КОМАНДА №1] Устроим проверку, если где-нибудь есть рамка с замком внутри над сундуком, заспавним наш коллайдер под нею: execute as @e[type=minecraft:item_frame, nbt={Facing:1b, Item:{tag:{Tags:["lock_lc"]}}}] at @s if block ~ ~-.5 ~ minecraft:chest run summon minecraft:interaction ~ ~-1.1 ~ {Tags:["lc"]} коллайдер нужно опустить на 0.1, чтобы сундук не выпирал снизу [КОМАНДА №2] Задиспавним эту рамку: execute as @e[type=minecraft:item_frame, nbt={Facing:1b, Item:{tag:{Tags:["lock_lc"]}}}] at @s if block ~ ~-.5 ~ minecraft:chest run kill @s [КОМАНДА №3] Добавим звук закрытия: execute as @e[type=minecraft:item_frame, nbt={Facing:1b, Item:{tag:{Tags:["lock_lc"]}}}] at @s if block ~ ~-.5 ~ minecraft:chest run playsound minecraft:entity.zombie.attack_iron_door player @a ~ ~ ~ Далее добавим интерактив с коллайдером. Если игрок нажимает на него с ключом в руке, то сундук нужно открыть, а если не ключом, то запросить ключ: Спойлер [КОМАНДЫ №4-7] Открытие сундука: //если у того, кто нажал ПКМ на коллайдер, есть ключ в руке, издадим звук открытия execute as @e[tag=lc] on target run execute as @s[nbt={SelectedItem:{tag:{Tags:["key_lc"]}}}] at @s run playsound minecraft:block.wooden_door.open block @a ~ ~ ~ //удалим ключ из инвентаря execute as @e[tag=lc] on target run clear @s minecraft:tripwire_hook{Tags:["key_lc"]} 1 //Известим об открытии execute as @e[tag=lc] on target run title @s actionbar {"text":"Сундук открыт!", "italic":false} //Удалим коллайдер execute as @e[tag=lc] at @s if data entity @s interaction run kill @s [КОМАНДЫ №8-10] Требование ключа: //если у того, кто нажал ПКМ на коллайдер, нет ключа в руке, издадим звук закрытого сундука execute as @e[tag=lc] on target run execute as @s[nbt=!{SelectedItem:{tag:{Tags:["key_lc"]}}}] at @s run playsound minecraft:block.copper_door.close block @a ~ ~ ~ //Известим об закрытии execute as @e[tag=lc] on target run title @s actionbar {"text":"Нужен ключ!", "italic":false} //удалим данные интерактива, чтобы цикл не повторялся execute as @e[type=minecraft:interaction, tag=lc] run data remove entity @s interaction [СХЕМА КБ]: Спойлер [КОМАНДА №11] Создадим проверку, если коллайдер по какой-либо причине находится не в сундуке, то его надо удалить: execute as @e[tag=lc] at @s unless block ~ ~.1 ~ minecraft:chest run kill @s Существует так еще один способ закрытия сундука, но только на переименованный предмет (открыть предметом с тегом не получится): Спойлер [КОНСОЛЬ] Смотря на блок-сущность, ввести команду: /data merge block "координаты блока" {Lock:"имя предмета"} [ПРИМЕР]: Спойлер Цитата Если у вас остались вопросы, не стесняйтесь, задавайте, с радостью отвечу. Спасибо за внимание! PhoenixTechu 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
В теме 1 сообщение
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти