Jump to content

Recommended Posts

Posted

The idea is that a block has a radius, within which if a player appears, then an effect must be applied on it until he goes back outside this radius. Something like a beacon from the usual minecraft. I tried in a block class to do it this way:

    @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));
            }
        }
    }

But for some reason the "tick" function is called only when a random tick hits this block. In fact, I need to call this function all the time, but I cannot implement it. Thank you in advance

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.