Как наложить эффект (обычный minecraft:effect) , когда у тебя в руке предмет из мода Forge 1.16.2

Версия Minecraft
1.16.2
API
Forge
2
0
Если такое возможно то сразу эффект, если выполнение команды, пока предмет в руке, то тоже подойдет
 
236
4
22
Я конечно пользователь 1.7.10 версии, но думаю, что в 1.16.2 это будет также работать. Раз айтем, при наличии которого тебе нужно цеплять эффект не из твоего мода - тебе нужно каждый тик просто проверять есть ли у игрока этот предмет и выдавать ему эффект.

Судя по javaDocs как-то так будет:
@SubscribleEvent
public void onTick(TickEvent.PlayerTickEvent event)
{
    PlayerEntity player = event.player;
    if(player.getMainHandItem().getItem() == айтем из мода)
        player.addEffect(Effects.Тип эффекта, время действия в тиках, Уровень эффекта. Отсчёт идёт с 0);
}
 
236
4
22
Нет ты неправильно понял, айтем как раз таки из моего мода, а эффект из майнкрафта обычного
Ну раз так - попробуй переопределить в своём классе Item`а метод inventoryTick


Код:
@Override
public void inventoryTick(ItemStack item, World world, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_)
{
    player.addEffect(Effects.Тип эффекта, время действия в тиках, Уровень эффекта. Отсчёт идёт с 0);
}
Я точно не уверен когда вызывается этот метод, ибо не знаком с API 1.16, но судя по названию каждый тик - то, что тебе нужно. Если же не прокатит - то через TickEvent (пример кода выше кидал)
 
Сверху