internal void AddModdedModules(ModCraftTreeTab craftTreeTab)
        {
            if (!this.Properties.TryGetValue(craftTreeTab.Name, out EmProperty property))
            {
                return;
            }

            var modulesList = (EmPropertyList <string>)property;

            if (modulesList == null || !modulesList.HasValue)
            {
                return;
            }

            foreach (string module in modulesList.Values)
            {
                craftTreeTab.AddModdedCraftingNode(module);
            }
        }
        private void CreateCustomTree(out CraftTree.Type craftType)
        {
            if (!ModdedItems.IsInitialized)
            {
                ModdedItems.Initialize();
            }

            ModCraftTreeRoot rootNode = CraftTreeHandler.CreateCustomCraftTreeAndType(NameID, out craftType);

            ModCraftTreeTab cyclopsTab        = rootNode.AddTabNode("CyclopsModules", "Cyclops Modules", SpriteManager.Get(SpriteManager.Group.Category, "Workbench_CyclopsMenu"));
            ModCraftTreeTab cyclopsAbilityTab = cyclopsTab.AddTabNode("CyclopsAbilityModules", "Ability Modules", SpriteManager.Get(TechType.CyclopsShieldModule));

            cyclopsAbilityTab.AddCraftingNode(TechType.CyclopsShieldModule,
                                              TechType.CyclopsSonarModule,
                                              TechType.CyclopsSeamothRepairModule,
                                              TechType.CyclopsFireSuppressionModule,
                                              TechType.CyclopsDecoyModule);
            ModdedItems.AddModdedModules(cyclopsAbilityTab);

            cyclopsAbilityTab.AddModdedCraftingNode("CyclopsSpeedModule");
            ModCraftTreeTab cyclopsDepthTab = cyclopsTab.AddTabNode("CyclopsDepthModules", "Depth Modules", SpriteManager.Get(TechType.CyclopsHullModule1));

            cyclopsDepthTab.AddCraftingNode(TechType.CyclopsHullModule1,
                                            TechType.CyclopsHullModule2,
                                            TechType.CyclopsHullModule3);

            ModCraftTreeTab cyclopsPowerTab = cyclopsTab.AddTabNode("CyclopsPowerModules", "Power Modules", SpriteManager.Get(TechType.PowerUpgradeModule));

            cyclopsPowerTab.AddCraftingNode(TechType.PowerUpgradeModule);
            ModdedItems.AddModdedModules(cyclopsPowerTab);

            ModCraftTreeTab cyclopsRechargTab = cyclopsTab.AddTabNode("CyclopsRechargeTab", "Recharge Modules", SpriteManager.Get(TechType.SeamothSolarCharge));

            cyclopsRechargTab.AddCraftingNode(TechType.CyclopsThermalReactorModule);
            ModdedItems.AddModdedModules(cyclopsRechargTab);

            ModCraftTreeTab exosuitTab      = rootNode.AddTabNode("ExosuitModules", "Prawn Suit Modules", SpriteManager.Get(SpriteManager.Group.Category, "SeamothUpgrades_ExosuitModules"));
            ModCraftTreeTab exosuitDepthTab = exosuitTab.AddTabNode("ExosuitDepthModules", "Depth Modules", SpriteManager.Get(TechType.ExoHullModule1));

            exosuitDepthTab.AddCraftingNode(TechType.ExoHullModule1,
                                            TechType.ExoHullModule2);
            exosuitTab.AddCraftingNode(TechType.ExosuitThermalReactorModule,
                                       TechType.ExosuitJetUpgradeModule,
                                       TechType.ExosuitPropulsionArmModule,
                                       TechType.ExosuitGrapplingArmModule,
                                       TechType.ExosuitDrillArmModule,
                                       TechType.ExosuitTorpedoArmModule);
            ModdedItems.AddModdedModules(exosuitTab);

            ModCraftTreeTab seamothTab      = rootNode.AddTabNode("SeamothModules", "Seamoth Modules", SpriteManager.Get(SpriteManager.Group.Category, "SeamothUpgrades_SeamothModules"));
            ModCraftTreeTab seamothDepthTab = seamothTab.AddTabNode("SeamothDepthModules", "Depth Modules", SpriteManager.Get(TechType.VehicleHullModule1));

            seamothDepthTab.AddCraftingNode(TechType.VehicleHullModule1,
                                            TechType.VehicleHullModule2,
                                            TechType.VehicleHullModule3);
            ModdedItems.AddModdedModules(seamothDepthTab);

            ModCraftTreeTab seamothAbilityTab = seamothTab.AddTabNode("SeamothAbilityModules", "Ability Modules", SpriteManager.Get(TechType.SeamothElectricalDefense));

            seamothAbilityTab.AddCraftingNode(TechType.SeamothElectricalDefense,
                                              TechType.SeamothSonarModule,
                                              TechType.SeamothTorpedoModule);
            seamothTab.AddCraftingNode(TechType.SeamothSolarCharge);
            ModdedItems.AddModdedModules(seamothAbilityTab);
            ModdedItems.AddModdedModules(seamothTab);

            ModCraftTreeTab commonTab = rootNode.AddTabNode("CommonModules", "Common Modules", SpriteManager.Get(SpriteManager.Group.Category, "SeamothUpgrades_CommonModules"));

            commonTab.AddCraftingNode(TechType.VehicleArmorPlating,
                                      TechType.VehiclePowerUpgradeModule,
                                      TechType.VehicleStorageModule);
            ModdedItems.AddModdedModules(commonTab);

            ModCraftTreeTab torpedoesTab = rootNode.AddTabNode("TorpedoesModules", "Torpedoes", SpriteManager.Get(SpriteManager.Group.Category, "SeamothUpgrades_Torpedoes"));

            torpedoesTab.AddCraftingNode(TechType.WhirlpoolTorpedo,
                                         TechType.GasTorpedo);
            ModdedItems.AddModdedModules(torpedoesTab);
        }