public static PLExtractor CreateExtractor(int Subtype, int level)
        {
            PLExtractor InExtractor;

            if (Subtype >= Instance.VanillaExtractorMaxType)
            {
                InExtractor = new PLExtractor(EExtractorType.E_MAX, level);
                int subtypeformodded = Subtype - Instance.VanillaExtractorMaxType;
                if (subtypeformodded <= Instance.ExtractorTypes.Count && subtypeformodded > -1)
                {
                    ExtractorMod ExtractorType = Instance.ExtractorTypes[Subtype - Instance.VanillaExtractorMaxType];
                    InExtractor.SubType                       = Subtype;
                    InExtractor.Name                          = ExtractorType.Name;
                    InExtractor.Desc                          = ExtractorType.Description;
                    InExtractor.m_IconTexture                 = ExtractorType.IconTexture;
                    InExtractor.m_Stability                   = ExtractorType.Stability;
                    InExtractor.m_MarketPrice                 = ExtractorType.MarketPrice;
                    InExtractor.CargoVisualPrefabID           = ExtractorType.CargoVisualID;
                    InExtractor.CanBeDroppedOnShipDeath       = ExtractorType.CanBeDroppedOnShipDeath;
                    InExtractor.Experimental                  = ExtractorType.Experimental;
                    InExtractor.Unstable                      = ExtractorType.Unstable;
                    InExtractor.Contraband                    = ExtractorType.Contraband;
                    InExtractor.Price_LevelMultiplierExponent = ExtractorType.Price_LevelMultiplierExponent;
                }
            }
            else
            {
                InExtractor = new PLExtractor((EExtractorType)Subtype, level);
            }
            return(InExtractor);
        }
 ExtractorModManager()
 {
     VanillaExtractorMaxType = Enum.GetValues(typeof(EExtractorType)).Length;
     Logger.Info($"MaxTypeint = {VanillaExtractorMaxType - 1}");
     foreach (PulsarMod mod in ModManager.Instance.GetAllMods())
     {
         Assembly asm          = mod.GetType().Assembly;
         Type     ExtractorMod = typeof(ExtractorMod);
         foreach (Type t in asm.GetTypes())
         {
             if (ExtractorMod.IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract)
             {
                 Logger.Info("Loading Extractor from assembly");
                 ExtractorMod ExtractorModHandler = (ExtractorMod)Activator.CreateInstance(t);
                 if (GetExtractorIDFromName(ExtractorModHandler.Name) == -1)
                 {
                     ExtractorTypes.Add(ExtractorModHandler);
                     Logger.Info($"Added Extractor: '{ExtractorModHandler.Name}' with ID '{GetExtractorIDFromName(ExtractorModHandler.Name)}'");
                 }
                 else
                 {
                     Logger.Info($"Could not add Extractor from {mod.Name} with the duplicate name of '{ExtractorModHandler.Name}'");
                 }
             }
         }
     }
 }