private void OnGameLoopGameLaunched(object s, EventArgs e)
        {
            this.Helper.Events.GameLoop.GameLaunched -= this.OnGameLoopGameLaunched;
            try
            {
                this.Monitor.StartTimer("TypeId", "Initializing TypeId...");
                // Register typeId's, both for vanilla and any mods that we explicitly support (if loaded)
                var euApi = EntoUtilsApi.Instance;
                Data.Init();
                this.Monitor.Log("Initializing SDV TypeId support...");
                euApi.RegisterItemTypeHandler("sdv.object", TypeHandlers.StardewObject);
                euApi.RegisterItemTypeHandler("sdv.craftable", TypeHandlers.StardewCraftable);
                euApi.RegisterItemTypeHandler("sdv.boots", TypeHandlers.StardewBoots);
                euApi.RegisterItemTypeHandler("sdv.furniture", TypeHandlers.StardewFurniture);
                euApi.RegisterItemTypeHandler("sdv.hat", TypeHandlers.StardewHat);
                euApi.RegisterItemTypeHandler("sdv.ring", TypeHandlers.StardewRing);
                euApi.RegisterItemTypeHandler("sdv.floor", TypeHandlers.StardewFloor);
                euApi.RegisterItemTypeHandler("sdv.wallpaper", TypeHandlers.StardewWallpaper);
                euApi.RegisterItemTypeHandler("sdv.weapon", TypeHandlers.StardewWeapon);
                euApi.RegisterItemTypeHandler("sdv.clothing", TypeHandlers.StardewClothing);
                euApi.RegisterItemTypeHandler("sdv.tool", TypeHandlers.StardewTool);
                euApi.RegisterItemTypeHandler("sdv.artisan", TypeHandlers.StardewArtisan);
                euApi.RegisterItemTypeResolver(TypeResolvers.StardewResolver);

                /**
                 * Build-in compatibility for mods with public API's that the TypeId registry can hook into
                 * Mods which do not provide a public API will need to provide TypeId support from their end
                 */
                if (ModApi.IsLoadedAndApiAvailable <IJsonAssetsApi>("spacechase0.JsonAssets", out var jaApi))
                {
                    this.Monitor.Log("JsonAssets detected, initializing TypeId support...");
                    Data.JaApi = jaApi;
                    euApi.RegisterItemTypeHandler("ja.object", TypeHandlers.JsonAssetsObject);
                    euApi.RegisterItemTypeHandler("ja.craftable", TypeHandlers.JsonAssetsCraftable);
                    euApi.RegisterItemTypeHandler("ja.hat", TypeHandlers.JsonAssetsHat);
                    euApi.RegisterItemTypeHandler("ja.weapon", TypeHandlers.JsonAssetsWeapon);
                    euApi.RegisterItemTypeHandler("ja.clothing", TypeHandlers.JsonAssetsClothing);
                    euApi.RegisterItemTypeResolver(TypeResolvers.JsonAssetsResolver);
                }
                if (ModApi.IsLoadedAndApiAvailable <ICustomFarmingApi>("Platonymous.CustomFarming", out var cfApi))
                {
                    this.Monitor.Log("CustomFarmingRedux detected, initializing TypeId support...");
                    Data.CfApi = cfApi;
                    euApi.RegisterItemTypeHandler("cf.machine", TypeHandlers.CustomFarmingMachine);
                }
                if (ModApi.IsLoadedAndApiAvailable <IPrismaticToolsApi>("stokastic.PrismaticTools", out var ptApi))
                {
                    this.Monitor.Log("PrismaticTools detected, initializing TypeId support...");
                    Data.PtApi = ptApi;
                    euApi.RegisterItemTypeHandler("pt.item", TypeHandlers.PrismaticToolsItem);
                    euApi.RegisterItemTypeResolver(TypeResolvers.PrismaticToolsResolver);
                }
                this.Monitor.StopTimer("TypeId", "TypeId initialization took {{TIME}} milliseconds.");
            }
            catch (Exception err)
            {
                this.Monitor.Log("TypeId failed to load due to a exception being thrown: \n" + err, LogLevel.Error);
            }
            this.OnLocationListChanged(null, null);
        }