public void Awake()
        {
            LogCore.logger = Logger;

            Assets.PopulateAssets();
            Assets.ApplyShaders();

            cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true);

            LogCore.LogD("Adding Monsters...");
            var EnemyTypes = Assembly.GetExecutingAssembly().GetTypes().Where(type => !type.IsAbstract && type.IsSubclassOf(typeof(EnemyBuilder)));

            foreach (var enemyType in EnemyTypes)
            {
                EnemyBuilder enemy = (EnemyBuilder)Activator.CreateInstance(enemyType);

                LogCore.LogI(enemy);
                if (ValidateEnemy(enemy, enemies))
                {
                    enemy.Create(cfgFile);
                }
            }
            EnemyBuilder.AddToContentPack();
            Assets.AddEffectDefs();

            LogCore.LogD("Adding Monsters Complete.");

            ContentPackProvider.Init();
        }
        public CharacterCore Spawn()
        {
            switch (CharacterAsset)
            {
            case PlayerAsset asset:
                var id = asset.ID;
                if (PlayerIDOverride)
                {
                    asset.ID = OverrideID;
                }


                // var player = CharacterCore.Create<PlayerCore>(asset, transform);
                var player = _playerBuilder.Create(asset, transform);

                asset.ID = id;

                return(player);

            case EnemyAsset asset:
//					return CharacterCore.Create<EnemyCore>(asset, transform);
                return(_enemyBuilder.Create(asset, transform));

            default:
                return(null);
            }
        }