Quick Question!

I have this piece of code:

@Subscribe
    public void onBreak(PlayerBreakBlockEvent event) {
        
        Player player = event.getPlayer();
        
        if(player.hasPermission("mafia.break")) {
            event.setCancelled(true);
        } else {
            event.getBlock().replaceWith(event.getBlock().getType());
        }    
    }

Will this disallow players without the mafia.break permission to break blocks?

Actually it will always place the block preventing anyone from breaking. The problem lies in the

event.setCancelled(true);

This will cause the block not to be broken (since you cancelled the event). The proper way would be something like this:

@Subscribe
public void onBreak(PlayerBreakBlockEvent event) {
  Player player = event.getPlayer();

  if(player.hasPermission("mafia.break")) {
    //TODO: Whatever you wanted.
  } else {
    event.setCancelled(true);
  }
}

@LordLambda, thanks. Preview of my code:

@Subscribe
    public void onBreak(PlayerBreakBlockEvent event) {

        Player player = event.getPlayer();

        if(!(player.hasPermission("mafia.break"))) {
            event.setCancelled(true);
        }
    }

That would definitely work.

You can take away one set of brackets there, bit easier to read

1 Like