Program: 20055
Project: 20055
Buggy source:
private void setupLockables(){
  lockable.clear();
  leftLocked.clear();
  canSuck.clear();
  reloadConfig();
  List<String> lockables=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String lockableBlockName : lockables) {
    Material mat=Material.valueOf(lockableBlockName);
    if (mat != null) {
      lockable.add(mat);
      verbose("String_Node_Str" + lockableBlockName);
    }
 else {
      SCL.crap("String_Node_Str" + lockableBlockName + "String_Node_Str");
    }
  }
  List<String> doubles=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String lockableBlockName : doubles) {
    Material mat=Material.valueOf(lockableBlockName);
    if (mat != null && lockable.contains(mat)) {
      doubleLock.add(mat);
      verbose("String_Node_Str" + lockableBlockName);
    }
 else {
      SCL.crap("String_Node_Str" + lockableBlockName + "String_Node_Str");
    }
  }
  List<String> leftLockable=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String blockName : leftLockable) {
    Material mat=Material.valueOf(blockName);
    if (mat != null && lockable.contains(mat)) {
      leftLocked.add(mat);
      verbose("String_Node_Str" + blockName);
    }
 else {
      SCL.crap("String_Node_Str" + blockName + "String_Node_Str");
    }
  }
  List<String> verticalLockable=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String blockName : verticalLockable) {
    Material mat=Material.valueOf(blockName);
    if (mat != null && lockable.contains(mat)) {
      lockIncludeVertical.add(mat);
      verbose("String_Node_Str" + blockName);
    }
 else {
      crap("String_Node_Str" + blockName + "String_Node_Str");
    }
  }
  List<String> omgThisSucks=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String sucks : omgThisSucks) {
    Material mat=Material.valueOf(sucks);
    if (mat != null && lockable.contains(mat)) {
      canSuck.add(mat);
      verbose("String_Node_Str" + sucks);
    }
 else {
      crap("String_Node_Str" + sucks + "String_Node_Str");
    }
  }
  verbose("String_Node_Str");
  Permission allBlocksPermission=new Permission("String_Node_Str");
  for (  Material mat : lockable) {
    if (mat.isBlock()) {
      String permissionName="String_Node_Str" + mat.toString().toLowerCase();
      verbose("String_Node_Str" + permissionName);
      Permission thisBlockPermission=new Permission(permissionName,PermissionDefault.OP);
      thisBlockPermission.addParent(allBlocksPermission,true);
    }
  }
  getServer().getPluginManager().addPermission(allBlocksPermission);
}

Fixed version (ground truth):
private void setupLockables(){
  lockable.clear();
  leftLocked.clear();
  canSuck.clear();
  reloadConfig();
  List<String> lockables=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String lockableBlockName : lockables) {
    Material mat=null;
    try {
      mat=Material.valueOf(lockableBlockName);
    }
 catch (    IllegalArgumentException e) {
      try {
        int i=Integer.parseInt(lockableBlockName.trim());
        mat=Material.getMaterial(i);
      }
 catch (      NumberFormatException nfe) {
      }
    }
    if (mat != null) {
      lockable.add(mat);
      verbose("String_Node_Str" + lockableBlockName);
    }
 else {
      SCL.crap("String_Node_Str" + lockableBlockName + "String_Node_Str");
    }
  }
  List<String> doubles=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String lockableBlockName : doubles) {
    Material mat=Material.valueOf(lockableBlockName);
    if (mat != null && lockable.contains(mat)) {
      doubleLock.add(mat);
      verbose("String_Node_Str" + lockableBlockName);
    }
 else {
      SCL.crap("String_Node_Str" + lockableBlockName + "String_Node_Str");
    }
  }
  List<String> leftLockable=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String blockName : leftLockable) {
    Material mat=Material.valueOf(blockName);
    if (mat != null && lockable.contains(mat)) {
      leftLocked.add(mat);
      verbose("String_Node_Str" + blockName);
    }
 else {
      SCL.crap("String_Node_Str" + blockName + "String_Node_Str");
    }
  }
  List<String> verticalLockable=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String blockName : verticalLockable) {
    Material mat=Material.valueOf(blockName);
    if (mat != null && lockable.contains(mat)) {
      lockIncludeVertical.add(mat);
      verbose("String_Node_Str" + blockName);
    }
 else {
      crap("String_Node_Str" + blockName + "String_Node_Str");
    }
  }
  List<String> omgThisSucks=getConfig().getStringList("String_Node_Str");
  verbose("String_Node_Str");
  for (  String sucks : omgThisSucks) {
    Material mat=Material.valueOf(sucks);
    if (mat != null && lockable.contains(mat)) {
      canSuck.add(mat);
      verbose("String_Node_Str" + sucks);
    }
 else {
      crap("String_Node_Str" + sucks + "String_Node_Str");
    }
  }
  verbose("String_Node_Str");
  Permission allBlocksPermission=new Permission("String_Node_Str");
  for (  Material mat : lockable) {
    if (mat.isBlock()) {
      String permissionName="String_Node_Str" + mat.toString().toLowerCase();
      verbose("String_Node_Str" + permissionName);
      Permission thisBlockPermission=new Permission(permissionName,PermissionDefault.OP);
      thisBlockPermission.addParent(allBlocksPermission,true);
    }
  }
  getServer().getPluginManager().addPermission(allBlocksPermission);
}