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

[ГАЙД] Как открывать ключом и запирать замком сундук? | JAVA | 1.20.4 | КБ


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

В теме 1 сообщение

Расскажу, а главное покажу, как закрыть и открыть сундук либо любой блок с помощью КБ (командного блока)

  1. В данном случае, я буду использовать специальные предметы с тегами, которые будут спавнить либо деспавнить сущность интерактива. С её помощью, мы сможем покрыть пространство коллайдером, который будет препятствовать любому взаимодействию с сундуком, а взамен требовать ключ:
    Спойлер
    • Выдадим себе ключ и замок:
    • [КОНСОЛЬ]:
    /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, чтобы сундук не выпирал снизу

       image.png.d62cfef6c40dd3ee31da4076ee0f9f93.png

      • [КОМАНДА №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 ~ ~ ~

      image.png.a04b39eaeb8c1f6331ba477c62367d43.png

       

       
    • Далее добавим интерактив с коллайдером. Если игрок нажимает на него с ключом в руке, то сундук нужно открыть, а если не ключом, то запросить ключ:
      Спойлер
      •   [КОМАНДЫ №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

      image.png.eff776faf6bc685efe7ec582b23a6e2c.png

      • [СХЕМА КБ]:
        Спойлер

        image.png.cf854cbd0574ab098182c54a824020a9.png

       
    • [КОМАНДА №11] Создадим проверку, если коллайдер по какой-либо причине находится не в сундуке, то его надо удалить:
    execute as @e[tag=lc] at @s unless block ~ ~.1 ~ minecraft:chest run kill @s
     
  2. Существует так еще один способ закрытия сундука, но только на переименованный предмет (открыть предметом с тегом не получится):
    Спойлер
    • [КОНСОЛЬ] Смотря на блок-сущность, ввести команду:
    /data merge block "координаты блока" {Lock:"имя предмета"}
     
  3. [ПРИМЕР]:
    Спойлер

    image.gif.f840f736a22952a9d040367afb9a6168.gif

     

 

Цитата

Если у вас остались вопросы, не стесняйтесь, задавайте, с радостью отвечу.

Спасибо за внимание!

 

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

  • PSEUDO изменил название на [ГАЙД] Как открывать ключом и запирать замком сундук? | JAVA | 1.20.4 | КБ

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

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

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

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

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

Войти

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

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

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