Идея заключается в том, что у блока есть радиус, в пределах которого если появляется игрок, то на него нужно налкладывать эффект до тех пор, пока он не выйдет назад за пределы этого радиуса. Что то вроде маяка из обычного майнкрафта. Я пытался в классе блока сделать это таким образом:
Но функция tick почему-то вызывается только тогда, когда случайный тик попадает на этот блок. По сути мне надо вызывать эту функцию постоянно, но я не могу это реализовать. Заранее спасибо за помощь
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 почему-то вызывается только тогда, когда случайный тик попадает на этот блок. По сути мне надо вызывать эту функцию постоянно, но я не могу это реализовать. Заранее спасибо за помощь