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); }