Program: 33865
Project: 33865
Buggy source:
@EventHandler(priority=EventPriority.HIGH,ignoreCancelled=true) public void onBlockIgnite(final BlockIgniteEvent e){
  if (DEBUG) {
    plugin.getLogger().info(e.getEventName());
    plugin.getLogger().info(e.getCause().name());
  }
  if (!inWorld(e.getBlock())) {
    return;
  }
  if (e.getBlock() != null && e.getBlock().getType().equals(Material.OBSIDIAN)) {
    if (DEBUG)     plugin.getLogger().info("String_Node_Str");
    return;
  }
  if (e.getCause() != null) {
    if (DEBUG)     plugin.getLogger().info("String_Node_Str" + e.getCause());
switch (e.getCause()) {
case ENDER_CRYSTAL:
case EXPLOSION:
case FIREBALL:
case LIGHTNING:
      if (!actionAllowed(e.getBlock().getLocation(),SettingsFlag.FIRE)) {
        if (DEBUG)         plugin.getLogger().info("String_Node_Str");
        e.setCancelled(true);
      }
    break;
case FLINT_AND_STEEL:
  Set<Material> transparent=new HashSet<Material>();
transparent.add(Material.AIR);
if (DEBUG) {
plugin.getLogger().info("String_Node_Str" + e.getBlock());
plugin.getLogger().info("String_Node_Str" + e.getPlayer().getTargetBlock(transparent,10));
}
if (e.getPlayer().isOp() || VaultHelper.checkPerm(e.getPlayer(),Settings.PERMPREFIX + "String_Node_Str")) {
return;
}
if (!actionAllowed(e.getBlock().getLocation(),SettingsFlag.FIRE)) {
if (DEBUG) plugin.getLogger().info("String_Node_Str");
Block targetBlock=e.getPlayer().getTargetBlock(transparent,10);
if (targetBlock.getType().equals(Material.OBSIDIAN)) {
final MaterialData md=new MaterialData(e.getBlock().getType(),e.getBlock().getData());
new BukkitRunnable(){
@Override public void run(){
  if (e.getBlock().getType().equals(Material.FIRE)) {
    e.getBlock().setType(md.getItemType());
    e.getBlock().setData(md.getData());
  }
}
}
.runTask(plugin);
}
 else {
e.setCancelled(true);
}
}
break;
case LAVA:
case SPREAD:
if (e.getBlock() != null && e.getBlock().getType().equals(Material.OBSIDIAN)) {
if (DEBUG) plugin.getLogger().info("String_Node_Str");
return;
}
if (!actionAllowed(e.getBlock().getLocation(),SettingsFlag.FIRE_SPREAD)) {
if (DEBUG) plugin.getLogger().info("String_Node_Str");
e.setCancelled(true);
}
break;
default :
break;
}
}
}

Fixed version (ground truth):
@EventHandler(priority=EventPriority.HIGH,ignoreCancelled=true) public void onBlockIgnite(final BlockIgniteEvent e){
  if (DEBUG) {
    plugin.getLogger().info(e.getEventName());
    plugin.getLogger().info(e.getCause().name());
  }
  if (!inWorld(e.getBlock())) {
    return;
  }
  if (e.getBlock() != null && e.getBlock().getType().equals(Material.OBSIDIAN)) {
    if (DEBUG)     plugin.getLogger().info("String_Node_Str");
    return;
  }
  if (e.getCause() != null) {
    if (DEBUG)     plugin.getLogger().info("String_Node_Str" + e.getCause());
switch (e.getCause()) {
case ENDER_CRYSTAL:
case EXPLOSION:
case FIREBALL:
case LIGHTNING:
      if (!actionAllowed(e.getBlock().getLocation(),SettingsFlag.FIRE)) {
        if (DEBUG)         plugin.getLogger().info("String_Node_Str");
        e.setCancelled(true);
      }
    break;
case FLINT_AND_STEEL:
  Set<Material> transparent=new HashSet<Material>();
transparent.add(Material.AIR);
if (DEBUG) {
plugin.getLogger().info("String_Node_Str" + e.getBlock());
plugin.getLogger().info("String_Node_Str" + e.getPlayer().getTargetBlock(transparent,10));
}
if (e.getPlayer() != null && (e.getPlayer().isOp() || VaultHelper.checkPerm(e.getPlayer(),Settings.PERMPREFIX + "String_Node_Str"))) {
return;
}
if (!actionAllowed(e.getBlock().getLocation(),SettingsFlag.FIRE)) {
if (DEBUG) plugin.getLogger().info("String_Node_Str");
if (e.getPlayer() == null) {
e.setCancelled(true);
break;
}
Block targetBlock=e.getPlayer().getTargetBlock(transparent,10);
if (targetBlock.getType().equals(Material.OBSIDIAN)) {
final MaterialData md=new MaterialData(e.getBlock().getType(),e.getBlock().getData());
new BukkitRunnable(){
@Override public void run(){
  if (e.getBlock().getType().equals(Material.FIRE)) {
    e.getBlock().setType(md.getItemType());
    e.getBlock().setData(md.getData());
  }
}
}
.runTask(plugin);
}
 else {
e.setCancelled(true);
}
}
break;
case LAVA:
case SPREAD:
if (e.getBlock() != null && e.getBlock().getType().equals(Material.OBSIDIAN)) {
if (DEBUG) plugin.getLogger().info("String_Node_Str");
return;
}
if (!actionAllowed(e.getBlock().getLocation(),SettingsFlag.FIRE_SPREAD)) {
if (DEBUG) plugin.getLogger().info("String_Node_Str");
e.setCancelled(true);
}
break;
default :
break;
}
}
}