internal static void Ready() { Singleton.RegisterIdResolver("sdv.object", id => new SObject(Convert.ToInt32(id), 1)); Singleton.RegisterIdResolver("sdv.craftable", id => new SObject(Vector2.Zero, Convert.ToInt32(id), 1)); Singleton.RegisterIdResolver("sdv.hat", id => new Hat(Convert.ToInt32(id))); Singleton.RegisterIdResolver("sdv.furniture", id => new Furniture(Convert.ToInt32(id), Vector2.Zero)); Singleton.RegisterIdResolver("sdv.ring", id => new Ring(Convert.ToInt32(id))); Singleton.RegisterIdResolver("sdv.flooring", id => new Wallpaper(Convert.ToInt32(id), true)); Singleton.RegisterIdResolver("sdv.wallpaper", id => new Wallpaper(Convert.ToInt32(id))); Singleton.RegisterIdResolver("sdv.sign", id => new Sign(Vector2.Zero, Convert.ToInt32(id))); Singleton.RegisterIdResolver("sdv.weapon", id => new MeleeWeapon(Convert.ToInt32(id))); Singleton.RegisterIdResolver("sdv.wine", id => { SObject item = new SObject(Convert.ToInt32(id), 1); SObject wine = new SObject(348, 1) { Name = $"{item.Name} Wine", Price = item.Price * 3 }; wine.preserve.Value = SObject.PreserveType.Wine; wine.preservedParentSheetIndex.Value = item.ParentSheetIndex; return(wine); }); Singleton.RegisterIdResolver("sdv.jelly", id => { SObject item = new SObject(Convert.ToInt32(id), 1); SObject jelly = new SObject(344, 1) { Name = $"{item.Name} Jelly", Price = 50 + item.Price * 2 }; jelly.preserve.Value = SObject.PreserveType.Jelly; jelly.preservedParentSheetIndex.Value = item.ParentSheetIndex; return(jelly); }); Singleton.RegisterIdResolver("sdv.juice", id => { SObject item = new SObject(Convert.ToInt32(id), 1); SObject juice = new SObject(350, 1) { Name = $"{item.Name} Juice", Price = (int)(item.Price * 2.25d) }; juice.preserve.Value = SObject.PreserveType.Juice; juice.preservedParentSheetIndex.Value = item.ParentSheetIndex; return(juice); }); Singleton.RegisterIdResolver("sdv.pickled", id => { SObject item = new SObject(Convert.ToInt32(id), 1); SObject pickled = new SObject(342, 1) { Name = $"Pickled {item.Name}", Price = 50 + item.Price * 2 }; pickled.preserve.Value = SObject.PreserveType.Pickle; pickled.preservedParentSheetIndex.Value = item.ParentSheetIndex; return(pickled); }); Singleton.RegisterIdResolver("sdv.honey", id => { SObject item = new SObject(Convert.ToInt32(id), 1); SObject honey = new SObject(Vector2.Zero, 340, "Honey", false, true, false, false) { Name = "Wild Honey", }; var type = SObject.HoneyType.Wild; switch (item.ParentSheetIndex) { case 376: type = SObject.HoneyType.Poppy; break; case 591: type = SObject.HoneyType.Tulip; break; case 593: type = SObject.HoneyType.SummerSpangle; break; case 595: type = SObject.HoneyType.FairyRose; break; case 597: type = SObject.HoneyType.BlueJazz; break; } honey.honeyType.Value = type; if (type != SObject.HoneyType.Wild) { honey.Name = $"{item.Name} Honey"; honey.Price += item.Price * 2; } return(honey); }); Singleton.RegisterIdResolver("sdv.other", id => { switch (id) { case "chest": return(new Chest(Vector2.Zero)); case "crabpot": return(new CrabPot(Vector2.Zero)); case "indoorpot": return(new IndoorPot(Vector2.Zero)); case "milkpail": return(new MilkPail()); } return(null); }); var registry = EntoaroxFrameworkMod.SHelper.ModRegistry; // Compatibility: Support for items added by JsonAssets if (registry.IsLoaded("spacechase0.JsonAssets")) { IJsonAssetsAPI jaApi = registry.GetApi <IJsonAssetsAPI>("spacechase0.JsonAssets"); Singleton.RegisterIdResolver("ja.object", id => new SObject(jaApi.GetObjectId(id), 1)); Singleton.RegisterIdResolver("ja.craftable", id => new SObject(Vector2.Zero, jaApi.GetBigCraftableId(id), 1)); Singleton.RegisterIdResolver("ja.hat", id => new Hat(jaApi.GetHatId(id))); Singleton.RegisterIdResolver("ja.weapon", id => new MeleeWeapon(jaApi.GetWeaponId(id))); Singleton.RegisterIdResolver("ja.ring", id => new Ring(jaApi.GetObjectId(id))); } }