Эффект не исчезает после наложения

Версия Minecraft
1.18.2
27
4
1
Накладываю эффект на игрока в радиусе 3 блоков от моего блока этим кодом:

Java:
@Override
    public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) {
        int radius = 3;
        List<Entity> ent = level.getEntities(EntityType.PLAYER.create(level), new AABB(blockPos.getX() - radius, blockPos.getY() - radius, blockPos.getZ() - radius, blockPos.getX() + radius, blockPos.getY() + radius, blockPos.getZ() + radius));
        for (Entity n : ent) {
            if (n instanceof Player) {
                Player pl = (Player) n;
                pl.addEffect(new MobEffectInstance(Effects.RADIATION.get(), 60, 0));
            }
        }
        super.animateTick(state, level, blockPos, random);
    }
Но почему-то когда я отхожу эффект заканчивается и просто висит с 0 секундами.
 
Решение
На 1.18.2 это должно, если не ошибаюсь, называть getWorldPosition(). Дальше сам, я тебе даже код дал готовый. Если не знаешь как называется - гитхаб любого более-менее крупного мода смотри.
1,383
115
244
1. Ты пихаешь свой код в исключительно клиентский метод. Нинада так
2. Накладывать надо только на сервере
3. Зачем ты проверяешь наследование от игрока? В листе находятся только игроки. Точнее игроки от их EntityType, который ты создаёшь. Так тоже нинада. Используй готовый класс игроков (код на 1.16.5, думаю под 1.18 переделать будет нетрудно, код из ванилльного маяка):
BeaconTileEntity#applyEffects():
List<PlayerEntity> list = this.level.getEntitiesOfClass(PlayerEntity.class, axisalignedbb);

         for(PlayerEntity playerentity : list) {
            playerentity.addEffect(new EffectInstance(this.primaryPower, j, i, true, true));
         }

         if (this.levels >= 4 && this.primaryPower != this.secondaryPower && this.secondaryPower != null) {
            for(PlayerEntity playerentity1 : list) {
               playerentity1.addEffect(new EffectInstance(this.secondaryPower, j, 0, true, true));
            }
         }
4. (Относится конкретно к этому методу) super() в конце не нужен.
 
Сверху