Program: 33829
Project: 33829
Buggy source:
@EventHandler(priority=EventPriority.LOWEST,ignoreCancelled=true) public void onFishing(PlayerFishEvent e){
  if (DEBUG) {
    plugin.getLogger().info("String_Node_Str" + e.getEventName());
    plugin.getLogger().info("String_Node_Str" + e.getCaught());
  }
  if (e.getCaught() == null)   return;
  Player p=e.getPlayer();
  if (!inWorld(p)) {
    return;
  }
  if (p.isOp() || VaultHelper.checkPerm(p,Settings.PERMPREFIX + "String_Node_Str")) {
    return;
  }
  Island island=plugin.getGrid().getProtectedIslandAt(e.getCaught().getLocation());
  if (e.getCaught() instanceof Player) {
    if (island == null && (e.getCaught().getWorld().getEnvironment().equals(Environment.NORMAL) && !Settings.defaultWorldSettings.get(SettingsFlag.PVP)) || ((e.getCaught().getWorld().getEnvironment().equals(Environment.NETHER) && !Settings.defaultWorldSettings.get(SettingsFlag.NETHER_PVP)))) {
      Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).targetInNoPVPArea);
      e.setCancelled(true);
      e.getHook().remove();
      return;
    }
    if (island != null && (e.getCaught().getWorld().getEnvironment().equals(Environment.NORMAL) && !island.getIgsFlag(SettingsFlag.PVP)) || ((e.getCaught().getWorld().getEnvironment().equals(Environment.NETHER) && !island.getIgsFlag(SettingsFlag.NETHER_PVP)))) {
      Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).targetInNoPVPArea);
      e.setCancelled(true);
      e.getHook().remove();
      return;
    }
  }
  if (!plugin.getGrid().playerIsOnIsland(e.getPlayer())) {
    if (e.getCaught() instanceof Animals) {
      if (island == null && !Settings.defaultWorldSettings.get(SettingsFlag.HURT_MOBS)) {
        Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
        e.setCancelled(true);
        e.getHook().remove();
        return;
      }
      if (island != null) {
        if ((!island.getIgsFlag(SettingsFlag.HURT_MOBS) && !island.getMembers().contains(p.getUniqueId()))) {
          Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
          e.setCancelled(true);
          e.getHook().remove();
          return;
        }
      }
    }
    if (e.getCaught() instanceof Monster || e.getCaught() instanceof Squid || e.getCaught() instanceof Slime) {
      if (island == null && !Settings.defaultWorldSettings.get(SettingsFlag.HURT_MONSTERS)) {
        Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
        e.setCancelled(true);
        e.getHook().remove();
        return;
      }
      if (island != null) {
        if ((!island.getIgsFlag(SettingsFlag.HURT_MONSTERS) && !island.getMembers().contains(p.getUniqueId()))) {
          Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
          e.setCancelled(true);
          e.getHook().remove();
          return;
        }
      }
    }
  }
}

Fixed version (ground truth):
@EventHandler(priority=EventPriority.LOWEST,ignoreCancelled=true) public void onFishing(PlayerFishEvent e){
  if (DEBUG) {
    plugin.getLogger().info("String_Node_Str" + e.getEventName());
    plugin.getLogger().info("String_Node_Str" + e.getCaught());
  }
  if (e.getCaught() == null)   return;
  Player p=e.getPlayer();
  if (!inWorld(p)) {
    return;
  }
  if (p.isOp() || VaultHelper.checkPerm(p,Settings.PERMPREFIX + "String_Node_Str")) {
    return;
  }
  Island island=plugin.getGrid().getProtectedIslandAt(e.getCaught().getLocation());
  if (e.getCaught() instanceof Player) {
    if (e.getCaught().equals(e.getPlayer())) {
      if (DEBUG)       plugin.getLogger().info("String_Node_Str");
      return;
    }
    if (island == null && (e.getCaught().getWorld().getEnvironment().equals(Environment.NORMAL) && !Settings.defaultWorldSettings.get(SettingsFlag.PVP)) || ((e.getCaught().getWorld().getEnvironment().equals(Environment.NETHER) && !Settings.defaultWorldSettings.get(SettingsFlag.NETHER_PVP)))) {
      Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).targetInNoPVPArea);
      e.setCancelled(true);
      e.getHook().remove();
      return;
    }
    if (island != null && (e.getCaught().getWorld().getEnvironment().equals(Environment.NORMAL) && !island.getIgsFlag(SettingsFlag.PVP)) || ((e.getCaught().getWorld().getEnvironment().equals(Environment.NETHER) && !island.getIgsFlag(SettingsFlag.NETHER_PVP)))) {
      Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).targetInNoPVPArea);
      e.setCancelled(true);
      e.getHook().remove();
      return;
    }
  }
  if (!plugin.getGrid().playerIsOnIsland(e.getPlayer())) {
    if (e.getCaught() instanceof Animals) {
      if (island == null && !Settings.defaultWorldSettings.get(SettingsFlag.HURT_MOBS)) {
        Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
        e.setCancelled(true);
        e.getHook().remove();
        return;
      }
      if (island != null) {
        if ((!island.getIgsFlag(SettingsFlag.HURT_MOBS) && !island.getMembers().contains(p.getUniqueId()))) {
          Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
          e.setCancelled(true);
          e.getHook().remove();
          return;
        }
      }
    }
    if (e.getCaught() instanceof Monster || e.getCaught() instanceof Squid || e.getCaught() instanceof Slime) {
      if (island == null && !Settings.defaultWorldSettings.get(SettingsFlag.HURT_MONSTERS)) {
        Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
        e.setCancelled(true);
        e.getHook().remove();
        return;
      }
      if (island != null) {
        if ((!island.getIgsFlag(SettingsFlag.HURT_MONSTERS) && !island.getMembers().contains(p.getUniqueId()))) {
          Util.sendMessage(e.getPlayer(),ChatColor.RED + plugin.myLocale(e.getPlayer().getUniqueId()).islandProtected);
          e.setCancelled(true);
          e.getHook().remove();
          return;
        }
      }
    }
  }
}