Перейти к содержанию
В разделе "Гайды" запрещено задавать вопросы по Майнкрафту.

[ГАЙД] Предметы выдающие эффекты | Как задать тег предмету | JAVA | 1.20.4


PSEUDO

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

В теме 3 сообщения

Расскажу про ДВА способа, как выдавать игрокам или сущностям эффекты с помощью предмета:

  1. С помощью КБ (командный блок) можно проверять, есть ли в инвентаре определенный предмет и выдать эффект, с помощью команд /execute и  /effect:
    Спойлер
    •  Можно проверять id предмета, имя предмета, или тег предмета (в моем случае тег).
    • [КОНСОЛЬ] Выдача предмета с тегом:
    /give @s "название предмета"{Tags:["название тега предмета"]}

     

    • [ЦИКЛИЧНЫЙ КБ] Если предмет в активной руке | Если во второй руке | Если в инвентаре | Если в определенном слоте:
    execute as @e[nbt={SelectedItem:{tag:{Tags:["название тега предмета"]}}}] at @s run effect give @s "эффект"
    execute as @e[nbt={Inventory:[{Slot:-106b,tag:{Tags:["название тега предмета"]}}]}] at @s run effect give @s "эффект"
    execute as @e[nbt={Inventory:[{tag:{Tags:["название тега предмета"]}}]}] run effect give "эффект"
    execute as @e[nbt={Inventory:[{Slot:"код слота",tag:{Tags:["название тега предмета"]}}]}] at @s run effect give @s "эффект"

     

    • Вы так же можете комбинировать слоты. Если нужно указать логическую операцию И (например: в левой руке И на голове: в первом слоте И во втором и т.д...), написав nbt-тег через запятую:
    execute as @e[nbt={Inventory:[{Slot:101b, Slot:-106b, tag:{Tags:["название тега предмета"]}}]}] at @s run effect give @s <"эффект">
    Предмет надет на ноги И в левой руке
    execute as @e[nbt={Inventory:[{Slot:0b, Slot:1b, tag:{Tags:["название тега предмета"]}}]}] at @s run effect give @s <"эффект">
    В первом И во втором слоте один и тот же предмет
    execute as @e[nbt={SelectedItemSlot:0, Inventory:[{Slot:0b, tag:{Tags:["название тега предмета"]}}]}] at @s run effect give @s <"эффект">
    Предмет в первом слоте И он активен

     

    • Если нужно указать логическую операцию ИЛИ (например: в левой руке ИЛИ правой и т.д...), придётся строить цепочку из КБ, где в одном проверка на один слот, а в другом на второй. Если вы не знаете, какой Id слота вам нужен:
    Спойлер
    • С помощью этой команды, вы сможете просмотреть всю дату своего персонажа, в том числе массив данных инвентаря Inventary:[].
    • [КОНСОЛЬ]:
    /data get entity @s Inventory

    image.png.32cdb7f62fcc5b9a5a30ffd3dc310652.png image.png.cac20dde0975333509ac97997f0f2a83.png

     

    • [ПРИМЕР] Нужно задать эффект Силы 3, когда игрок берет тотем с тегом "power_3" в левую руку:
    Спойлер
    • [КОНСОЛЬ] Выдаем предмет с тегом:
    /give @s minecraft:totem_of_undying{Enchantments:[{}], Tags:["power_3"], display:{Name:'{"text":"Сила 3", "color":"red", "italic":false}', Lore:['{"text":"Даёт эффект (Сила 3) в левой руке","color":"dark_red","italic":false}']}}
    
    @s - таргет исполнителя
    minecraft:totem_of_undying - предмет
    Enchantments:[{}] - пустой зачар, для визуализации переливания
    Tags:[""] - тэг предмета
    display:{Name:'{}', Lore:'{}'} - описания предмета

     

    • [ЦИКЛИЧНЫЙ КБ] Выдаем эффект:
    execute as @a[nbt={Inventory:[{Slot:-106b,tag:{Tags:["power_3"]}}]}] at @s run effect give @s minecraft:strength 1 2 true

    image.png.ba8f650c9651ec6f59606954b4550059.png

     
  2. С помощью команды /give можно выдать себе предмет с определённым атрибутом:
    Спойлер
    • [КОНСОЛЬ]:
    /give @s "предмет"{AttributeModifiers:[{AttributeName:"имя атрибута", Name:"имя атрибута", Amount:0.5, Operation:1, Slot:"имя слота", UUID:[I; 16, 70, -18, 11]}]}
    
    Amount: - величина, на которую изменяется атрибут
    Operation: - номер операции (0 - умножение исходного значения на Amount; 1 - увеличение в процентах исходного значения на Amount)
    Slot: - слот, в котором будет действовать атрибут
    UUID:[I; 0, 0, 0, 0] - ссылка на атрибут, задаются рандомные числа, UUID не должны повторяться у разных атрибутов!

     

    • [ПРИМЕР] Создадим предмет, который будет повышать здоровье и урон на 50%, когда надет на голове:
    Спойлер
    • Введём команду (так как она не помещается в консоль, введем в КБ):
    give @p piglin_head{AttributeModifiers:[{AttributeName:"generic.max_health", Name:"generic.max_health", Amount:0.5, Operation:1, UUID:[I; 91, -39, -18, -14], Slot:"head"}, {AttributeName:"generic.attack_damage", Name:"generic.attack_damage", Amount:0.5, Operation:1, UUID:[I; -3, 14,-13, 88], Slot:"head"}]}

    image.png.ae7bb4c39d75715d6a3010e595f62d59.png

    image.png.cc9e4af8e850b9b9499ebc97a45f5e0f.png

     

    Цитата
    • [ПЛЮСЫ]  отсутствие КБ в работе эффектов
    • [МИНУСЫ] другой список атрибутов, отличающийся от эффектов
     
  • Как задать тег уже готовому предмету, допустим тому, что в руке? Это можно сделать, с помощью /item modify entity @s weapon.mainhand <"модификатор">, но для этого требуется дата-пак с модификатором. Альтернатива этому /data modify entity, но она не действует на игроков. Поэтому, можно смастерить такую схему на стойке:
    Спойлер

     image.png.903e278be3b61c28743c8e3b37081085.png

    • [КОНСОЛЬ] Спавн стойки:
    /summon armor_stand ~ ~ ~ {CustomNameVisible:1b,NoGravity:1b,Silent:1b,Invulnerable:1b,ShowArms:1b,CustomName:'{"text":"ADD TAGS","color":"gold","bold":true}'}

     

    • [ИМПУЛЬСНЫЙ КБ] Задать тег:
    data modify entity @e[type=minecraft:armor_stand, sort=nearest, limit=1] HandItems[0].tag set value {Tags:["название тега предмета"]}
    • [ИМПУЛЬСНЫЙ КБ] Добавить тег:
    data modify entity @e[type=minecraft:armor_stand, sort=nearest, limit=1] HandItems[0].tag append value {Tags:["название тега предмета"]}
    • [ИМПУЛЬСНЫЙ КБ] Удалить теги:
    data remove entity @e[type=minecraft:armor_stand, sort=nearest, limit=1] HandItems[0].tag.Tags

     

    • [КОНСОЛЬ] Чтобы проверить тег:
    /data get entity @e[type=minecraft:armor_stand, sort=nearest, limit=1] HandItems[0]

    image.png.c7e8afe5bc83921c259d89337d173a91.png  

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

  • 6 месяцев спустя...
В 10.10.2024 в 02:12, Timoh сказал:

КАК СДЕЛАТЬ ТАКОЕ НА 1.21.1????

Тоже самое, только нужно на форум зайти "Fandom" и там посмотреть на наличие изменения команд (удаление, добавление и п.р.)

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

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

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

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

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

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

Войти

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

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

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