Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of JGFOOD v0.1.0
BepInEx/plugins/JGFOOD.dll
Decompiled a week agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using Jotunn; using Jotunn.Entities; using Jotunn.Extensions; using Jotunn.Managers; using Jotunn.Utils; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("JGFOOD")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("JGFOOD")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("0.1.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.1.0.0")] namespace JGFOOD; internal static class FoodManager { private class FoodConfig { public SharedData Shared; public ConfigEntry<float> Health; public ConfigEntry<float> Stamina; public ConfigEntry<float> Eitr; } private static readonly Dictionary<string, float> DefaultEitrBonuses = new Dictionary<string, float> { { "Honey", 25f }, { "Raspberry", 20f }, { "Blueberries", 35f }, { "DeerStew", 40f }, { "ShocklateSmoothie", 50f }, { "TurnipStew", 55f }, { "Eyescream", 65f }, { "OnionSoup", 60f }, { "Cloudberry", 70f }, { "Bread", 75f } }; private static readonly Dictionary<string, FoodConfig> FoodConfigs = new Dictionary<string, FoodConfig>(); public static void SetupFoods() { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Invalid comparison between Unknown and I4 Logger.LogInfo((object)"JGFOOD: Beginning vanilla food scan."); int num = 0; foreach (KeyValuePair<string, Object> prefab in Cache.GetPrefabs(typeof(ItemDrop))) { Object value = prefab.Value; ItemDrop val = (ItemDrop)(object)((value is ItemDrop) ? value : null); if ((Object)(object)val == (Object)null || val.m_itemData == null) { continue; } SharedData shared = val.m_itemData.m_shared; if (shared == null || (int)shared.m_itemType != 2 || (shared.m_food <= 0f && shared.m_foodStamina <= 0f && shared.m_foodEitr <= 0f)) { continue; } string name = ((Object)((Component)val).gameObject).name; if (ModQuery.GetPrefab(name) != null) { Logger.LogDebug((object)("JGFOOD: Skipping modded food prefab " + name + ".")); continue; } float num2 = shared.m_foodEitr; if (DefaultEitrBonuses.TryGetValue(name, out var value2)) { num2 += value2; } if (!FoodConfigs.TryGetValue(name, out var value3)) { string text = "Food - " + name; value3 = new FoodConfig { Shared = shared, Health = ConfigFileExtensions.BindConfig<float>(((BaseUnityPlugin)JGFOODPlugin.Instance).Config, text, "Health", shared.m_food, "Health provided by " + name + ".", true, (int?)null, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null), Stamina = ConfigFileExtensions.BindConfig<float>(((BaseUnityPlugin)JGFOODPlugin.Instance).Config, text, "Stamina", shared.m_foodStamina, "Stamina provided by " + name + ".", true, (int?)null, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null), Eitr = ConfigFileExtensions.BindConfig<float>(((BaseUnityPlugin)JGFOODPlugin.Instance).Config, text, "Eitr", num2, "Eitr provided by " + name + ".", true, (int?)null, (AcceptableValueBase)null, (Action<ConfigEntryBase>)null, (ConfigurationManagerAttributes)null) }; FoodConfigs.Add(name, value3); } else { value3.Shared = shared; } num++; } ApplyConfiguredValues(); ((BaseUnityPlugin)JGFOODPlugin.Instance).Config.Save(); Logger.LogInfo((object)$"JGFOOD: Applied food configuration to {num} vanilla food items."); } public static void ApplyConfiguredValues() { foreach (FoodConfig value in FoodConfigs.Values) { if (value.Shared != null) { value.Shared.m_food = value.Health.Value; value.Shared.m_foodStamina = value.Stamina.Value; value.Shared.m_foodEitr = value.Eitr.Value; } } Logger.LogInfo((object)$"JGFOOD: Applied synchronized food configuration to {FoodConfigs.Count} food items."); } } [BepInPlugin("com.jgmods.jgfood", "JGFOOD", "0.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] internal class JGFOODPlugin : BaseUnityPlugin { public const string PluginGUID = "com.jgmods.jgfood"; public const string PluginName = "JGFOOD"; public const string PluginVersion = "0.1.0"; public static CustomLocalization Localization = LocalizationManager.Instance.GetLocalization(); public static JGFOODPlugin Instance { get; private set; } private void Awake() { Instance = this; ModQuery.Enable(); PrefabManager.OnVanillaPrefabsAvailable += FoodManager.SetupFoods; SynchronizationManager.OnConfigurationSynchronized += delegate { FoodManager.ApplyConfiguredValues(); }; Logger.LogInfo((object)"JGFOOD has landed"); } }