@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
  public void onPlaceBlock(final PlaceBlockEvent event) {
    if (!isRegionSupportEnabled(event.getWorld())) return; // Region support disabled

    RegionQuery query = getPlugin().getRegionContainer().createQuery();

    Block block;
    if ((block = event.getCause().getFirstBlock()) != null) {
      // ================================================================
      // PISTONS flag
      // ================================================================

      if (Materials.isPistonBlock(block.getType())) {
        event.filter(testState(query, DefaultFlag.PISTONS), false);
      }
    }
  }
  @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
  public void onBreakBlock(final BreakBlockEvent event) {
    if (!isRegionSupportEnabled(event.getWorld())) return; // Region support disabled

    WorldConfiguration config = getWorldConfig(event.getWorld());
    RegionQuery query = getPlugin().getRegionContainer().createQuery();

    Block block;
    if ((block = event.getCause().getFirstBlock()) != null) {
      // ================================================================
      // PISTONS flag
      // ================================================================

      if (Materials.isPistonBlock(block.getType())) {
        event.filter(testState(query, DefaultFlag.PISTONS), false);
      }
    }

    Entity entity;
    if ((entity = event.getCause().getFirstEntity()) != null) {
      // ================================================================
      // CREEPER_EXPLOSION flag
      // ================================================================

      if (entity instanceof Creeper) { // Creeper
        event.filter(
            testState(query, DefaultFlag.CREEPER_EXPLOSION), config.explosionFlagCancellation);
      }

      // ================================================================
      // ENDERDRAGON_BLOCK_DAMAGE flag
      // ================================================================

      if (entity instanceof EnderDragon) { // Enderdragon
        event.filter(
            testState(query, DefaultFlag.ENDERDRAGON_BLOCK_DAMAGE),
            config.explosionFlagCancellation);
      }
    }
  }