Как сделать блок, накладывающий эффект на игрока?

Версия Minecraft
1.16.5
API
Forge
Идея заключается в том, что у блока есть радиус, в пределах которого если появляется игрок, то на него нужно налкладывать эффект до тех пор, пока он не выйдет назад за пределы этого радиуса. Что то вроде маяка из обычного майнкрафта. Я пытался в классе блока сделать это таким образом:
Java:
@Override
    public void tick(BlockState p_225534_1_, ServerWorld world, BlockPos pos, Random p_225534_4_) {
        super.tick(p_225534_1_, world, pos, p_225534_4_);
        int radius = 10;
        List<Entity> ent = world.getEntities(EntityType.PLAYER.create(world), new AxisAlignedBB(pos.getX() - radius, pos.getY() - radius, pos.getZ() - radius, pos.getX() + radius, pos.getY() + radius, pos.getZ() + radius));
        for (Entity n : ent) {
            if (n instanceof PlayerEntity) {
                PlayerEntity pl = (PlayerEntity) n;
                pl.addEffect(new EffectInstance(Effects.BLINDNESS, 150));
            }
        }
    }

Но функция tick почему-то вызывается только тогда, когда случайный тик попадает на этот блок. По сути мне надо вызывать эту функцию постоянно, но я не могу это реализовать. Заранее спасибо за помощь
 
Решение
Чтобы блок тикал постоянно нужно создать ему TileEntity и реализовать в тайле ITickable. В методе update уже писать логику.

Что то вроде маяка из обычного майнкрафта
Ты же сам ответил на свой вопрос. В чём проблема зайти в маяк и посмотреть?
Чтобы блок тикал постоянно нужно создать ему TileEntity и реализовать в тайле ITickable. В методе update уже писать логику.

Что то вроде маяка из обычного майнкрафта
Ты же сам ответил на свой вопрос. В чём проблема зайти в маяк и посмотреть?
 
Спасибо большое! Конечно промучался я с добавлением, так как почти все туторы нацелены на старые версии и пришлось самому разбираться. Но тем не менее всё заработало как надо! Спасибо, что подсказали на счёт TileEntity
 
Назад
Сверху